[jboss-svn-commits] JBL Code SVN: r8832 - in labs/jbosslabs/trunk/portal-extensions-2.6: binaries/maven-repo-addons/jboss/jars and 185 other directories.

jboss-svn-commits at lists.jboss.org jboss-svn-commits at lists.jboss.org
Thu Jan 11 17:16:10 EST 2007


Author: adamw
Date: 2007-01-11 17:10:56 -0500 (Thu, 11 Jan 2007)
New Revision: 8832

Added:
   labs/jbosslabs/trunk/portal-extensions-2.6/forge-sar-skeleton/
   labs/jbosslabs/trunk/portal-extensions-2.6/forge-sar-skeleton/META-INF/
   labs/jbosslabs/trunk/portal-extensions-2.6/forge-sar-skeleton/META-INF/jboss-service.xml
   labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/conf/identity/
   labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/conf/identity/identity-config.xml
   labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/conf/identity/ldap_identity-config.xml
   labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/conf/identity/profile-config.xml
   labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/conf/identity/standardidentity-config.xml
   labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/lib/portal-registration-lib.jar
   labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-cms.sar/conf/hibernate/cms/ehcache.xml
   labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-cms.sar/portal/cms/conf/default-content/default/private/
   labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-cms.sar/portal/cms/conf/default-content/default/private/code.html
   labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-cms.sar/portal/cms/conf/default-content/default/private/confidential/
   labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-cms.sar/portal/cms/conf/default-content/default/private/confidential/license.html
   labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-cms.sar/portal/cms/conf/default-content/default/private/license.html
   labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/WEB-INF/classes/Resource_pt_BR.properties
   labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/WEB-INF/jsp/cms/admin/exportarchive_pickup_error.jsp
   labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/WEB-INF/jsp/cms/admin/securenode.jsp
   labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/WEB-INF/jsp/dashboard/
   labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/WEB-INF/jsp/dashboard/editpage.jsp
   labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/downarrow.gif
   labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/style.css
   labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/langs/en.js
   labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/langs/readme.txt
   labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/plugins/advhr/css/
   labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/plugins/advhr/css/advhr.css
   labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/plugins/advhr/editor_plugin_src.js
   labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/plugins/advhr/jscripts/
   labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/plugins/advhr/jscripts/rule.js
   labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/plugins/advhr/langs/en.js
   labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/plugins/advimage/css/
   labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/plugins/advimage/css/advimage.css
   labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/plugins/advimage/editor_plugin_src.js
   labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/plugins/advimage/images/
   labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/plugins/advimage/images/sample.gif
   labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/plugins/advimage/jscripts/
   labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/plugins/advimage/jscripts/functions.js
   labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/plugins/advimage/langs/en.js
   labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/plugins/advlink/css/
   labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/plugins/advlink/css/advlink.css
   labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/plugins/advlink/editor_plugin_src.js
   labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/plugins/advlink/jscripts/
   labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/plugins/advlink/jscripts/functions.js
   labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/plugins/advlink/langs/en.js
   labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/plugins/autosave/
   labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/plugins/autosave/editor_plugin.js
   labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/plugins/autosave/editor_plugin_src.js
   labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/plugins/autosave/langs/
   labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/plugins/autosave/langs/en.js
   labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/plugins/autosave/readme.txt
   labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/plugins/cleanup/
   labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/plugins/cleanup/editor_plugin.js
   labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/plugins/cleanup/editor_plugin_src.js
   labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/plugins/cleanup/readme.txt
   labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/plugins/contextmenu/
   labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/plugins/contextmenu/css/
   labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/plugins/contextmenu/css/contextmenu.css
   labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/plugins/contextmenu/editor_plugin.js
   labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/plugins/contextmenu/editor_plugin_src.js
   labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/plugins/contextmenu/images/
   labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/plugins/contextmenu/images/spacer.gif
   labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/plugins/contextmenu/readme.txt
   labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/plugins/devkit/
   labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/plugins/devkit/css/
   labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/plugins/devkit/css/devkit.css
   labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/plugins/devkit/css/devkit_ui.css
   labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/plugins/devkit/devkit.htm
   labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/plugins/devkit/editor_plugin.js
   labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/plugins/devkit/editor_plugin_src.js
   labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/plugins/devkit/images/
   labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/plugins/devkit/images/flip_down.gif
   labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/plugins/devkit/images/flip_up.gif
   labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/plugins/devkit/jscripts/
   labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/plugins/devkit/jscripts/devkit.js
   labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/plugins/devkit/jscripts/diff.js
   labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/plugins/devkit/langs/
   labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/plugins/devkit/langs/en.js
   labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/plugins/directionality/
   labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/plugins/directionality/editor_plugin.js
   labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/plugins/directionality/editor_plugin_src.js
   labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/plugins/directionality/images/
   labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/plugins/directionality/images/ltr.gif
   labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/plugins/directionality/images/rtl.gif
   labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/plugins/directionality/langs/
   labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/plugins/directionality/langs/en.js
   labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/plugins/directionality/readme.txt
   labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/plugins/emotions/editor_plugin_src.js
   labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/plugins/emotions/jscripts/
   labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/plugins/emotions/jscripts/functions.js
   labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/plugins/emotions/langs/en.js
   labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/plugins/flash/css/
   labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/plugins/flash/css/content.css
   labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/plugins/flash/css/flash.css
   labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/plugins/flash/editor_plugin_src.js
   labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/plugins/flash/jscripts/
   labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/plugins/flash/jscripts/flash.js
   labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/plugins/flash/langs/en.js
   labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/plugins/fullpage/
   labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/plugins/fullpage/blank.htm
   labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/plugins/fullpage/css/
   labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/plugins/fullpage/css/fullpage.css
   labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/plugins/fullpage/editor_plugin.js
   labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/plugins/fullpage/editor_plugin_src.js
   labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/plugins/fullpage/fullpage.htm
   labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/plugins/fullpage/images/
   labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/plugins/fullpage/images/add.gif
   labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/plugins/fullpage/images/fullpage.gif
   labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/plugins/fullpage/images/move_down.gif
   labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/plugins/fullpage/images/move_up.gif
   labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/plugins/fullpage/images/remove.gif
   labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/plugins/fullpage/jscripts/
   labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/plugins/fullpage/jscripts/fullpage.js
   labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/plugins/fullpage/langs/
   labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/plugins/fullpage/langs/en.js
   labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/plugins/fullscreen/
   labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/plugins/fullscreen/css/
   labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/plugins/fullscreen/css/content.css
   labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/plugins/fullscreen/editor_plugin.js
   labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/plugins/fullscreen/editor_plugin_src.js
   labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/plugins/fullscreen/images/
   labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/plugins/fullscreen/images/fullscreen.gif
   labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/plugins/fullscreen/langs/
   labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/plugins/fullscreen/langs/en.js
   labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/plugins/fullscreen/readme.txt
   labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/plugins/iespell/editor_plugin_src.js
   labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/plugins/iespell/langs/en.js
   labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/plugins/inlinepopups/
   labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/plugins/inlinepopups/css/
   labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/plugins/inlinepopups/css/inlinepopup.css
   labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/plugins/inlinepopups/editor_plugin.js
   labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/plugins/inlinepopups/editor_plugin_src.js
   labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/plugins/inlinepopups/images/
   labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/plugins/inlinepopups/images/spacer.gif
   labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/plugins/inlinepopups/images/window_close.gif
   labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/plugins/inlinepopups/images/window_maximize.gif
   labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/plugins/inlinepopups/images/window_minimize.gif
   labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/plugins/inlinepopups/images/window_resize.gif
   labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/plugins/inlinepopups/jscripts/
   labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/plugins/inlinepopups/jscripts/mcwindows.js
   labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/plugins/inlinepopups/readme.txt
   labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/plugins/insertdatetime/editor_plugin_src.js
   labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/plugins/insertdatetime/langs/en.js
   labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/plugins/layer/
   labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/plugins/layer/editor_plugin.js
   labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/plugins/layer/editor_plugin_src.js
   labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/plugins/layer/images/
   labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/plugins/layer/images/absolute.gif
   labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/plugins/layer/images/backward.gif
   labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/plugins/layer/images/forward.gif
   labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/plugins/layer/images/insert_layer.gif
   labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/plugins/layer/images/insertlayer.gif
   labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/plugins/layer/images/movebackward.gif
   labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/plugins/layer/images/moveforward.gif
   labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/plugins/layer/langs/
   labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/plugins/layer/langs/en.js
   labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/plugins/layer/readme.txt
   labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/plugins/media/
   labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/plugins/media/css/
   labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/plugins/media/css/content.css
   labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/plugins/media/css/media.css
   labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/plugins/media/editor_plugin.js
   labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/plugins/media/editor_plugin_src.js
   labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/plugins/media/images/
   labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/plugins/media/images/flash.gif
   labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/plugins/media/images/media.gif
   labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/plugins/media/images/quicktime.gif
   labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/plugins/media/images/realmedia.gif
   labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/plugins/media/images/shockwave.gif
   labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/plugins/media/images/windowsmedia.gif
   labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/plugins/media/jscripts/
   labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/plugins/media/jscripts/embed.js
   labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/plugins/media/jscripts/media.js
   labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/plugins/media/langs/
   labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/plugins/media/langs/en.js
   labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/plugins/media/media.htm
   labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/plugins/nonbreaking/
   labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/plugins/nonbreaking/editor_plugin.js
   labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/plugins/nonbreaking/editor_plugin_src.js
   labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/plugins/nonbreaking/images/
   labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/plugins/nonbreaking/images/nonbreaking.gif
   labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/plugins/nonbreaking/langs/
   labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/plugins/nonbreaking/langs/en.js
   labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/plugins/noneditable/
   labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/plugins/noneditable/css/
   labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/plugins/noneditable/css/noneditable.css
   labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/plugins/noneditable/editor_plugin.js
   labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/plugins/noneditable/editor_plugin_src.js
   labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/plugins/noneditable/readme.txt
   labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/plugins/paste/
   labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/plugins/paste/blank.htm
   labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/plugins/paste/css/
   labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/plugins/paste/css/blank.css
   labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/plugins/paste/css/pasteword.css
   labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/plugins/paste/editor_plugin.js
   labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/plugins/paste/editor_plugin_src.js
   labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/plugins/paste/images/
   labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/plugins/paste/images/pastetext.gif
   labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/plugins/paste/images/pasteword.gif
   labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/plugins/paste/images/selectall.gif
   labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/plugins/paste/jscripts/
   labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/plugins/paste/jscripts/pastetext.js
   labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/plugins/paste/jscripts/pasteword.js
   labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/plugins/paste/langs/
   labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/plugins/paste/langs/en.js
   labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/plugins/paste/pastetext.htm
   labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/plugins/paste/pasteword.htm
   labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/plugins/paste/readme.txt
   labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/plugins/preview/editor_plugin_src.js
   labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/plugins/preview/jscripts/
   labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/plugins/preview/jscripts/embed.js
   labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/plugins/preview/langs/en.js
   labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/plugins/print/
   labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/plugins/print/editor_plugin.js
   labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/plugins/print/editor_plugin_src.js
   labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/plugins/print/images/
   labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/plugins/print/images/print.gif
   labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/plugins/print/langs/
   labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/plugins/print/langs/en.js
   labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/plugins/print/readme.txt
   labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/plugins/save/
   labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/plugins/save/editor_plugin.js
   labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/plugins/save/editor_plugin_src.js
   labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/plugins/save/images/
   labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/plugins/save/images/save.gif
   labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/plugins/save/langs/
   labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/plugins/save/langs/en.js
   labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/plugins/save/readme.txt
   labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/plugins/searchreplace/
   labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/plugins/searchreplace/css/
   labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/plugins/searchreplace/css/searchreplace.css
   labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/plugins/searchreplace/editor_plugin.js
   labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/plugins/searchreplace/editor_plugin_src.js
   labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/plugins/searchreplace/images/
   labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/plugins/searchreplace/images/replace.gif
   labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/plugins/searchreplace/images/replace_all_button_bg.gif
   labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/plugins/searchreplace/images/replace_button_bg.gif
   labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/plugins/searchreplace/images/search.gif
   labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/plugins/searchreplace/jscripts/
   labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/plugins/searchreplace/jscripts/searchreplace.js
   labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/plugins/searchreplace/langs/
   labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/plugins/searchreplace/langs/en.js
   labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/plugins/searchreplace/readme.txt
   labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/plugins/searchreplace/searchreplace.htm
   labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/plugins/style/
   labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/plugins/style/css/
   labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/plugins/style/css/props.css
   labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/plugins/style/editor_plugin.js
   labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/plugins/style/editor_plugin_src.js
   labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/plugins/style/images/
   labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/plugins/style/images/apply_button_bg.gif
   labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/plugins/style/images/style_info.gif
   labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/plugins/style/images/styleprops.gif
   labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/plugins/style/jscripts/
   labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/plugins/style/jscripts/props.js
   labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/plugins/style/langs/
   labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/plugins/style/langs/en.js
   labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/plugins/style/props.htm
   labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/plugins/style/readme.txt
   labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/plugins/table/
   labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/plugins/table/cell.htm
   labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/plugins/table/css/
   labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/plugins/table/css/cell.css
   labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/plugins/table/css/row.css
   labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/plugins/table/css/table.css
   labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/plugins/table/editor_plugin.js
   labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/plugins/table/editor_plugin_src.js
   labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/plugins/table/images/
   labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/plugins/table/images/buttons.gif
   labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/plugins/table/images/table.gif
   labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/plugins/table/images/table_cell_props.gif
   labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/plugins/table/images/table_delete.gif
   labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/plugins/table/images/table_delete_col.gif
   labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/plugins/table/images/table_delete_row.gif
   labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/plugins/table/images/table_insert_col_after.gif
   labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/plugins/table/images/table_insert_col_before.gif
   labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/plugins/table/images/table_insert_row_after.gif
   labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/plugins/table/images/table_insert_row_before.gif
   labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/plugins/table/images/table_merge_cells.gif
   labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/plugins/table/images/table_row_props.gif
   labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/plugins/table/images/table_split_cells.gif
   labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/plugins/table/jscripts/
   labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/plugins/table/jscripts/cell.js
   labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/plugins/table/jscripts/merge_cells.js
   labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/plugins/table/jscripts/row.js
   labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/plugins/table/jscripts/table.js
   labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/plugins/table/langs/
   labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/plugins/table/langs/en.js
   labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/plugins/table/merge_cells.htm
   labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/plugins/table/readme.txt
   labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/plugins/table/row.htm
   labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/plugins/table/table.htm
   labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/plugins/visualchars/
   labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/plugins/visualchars/editor_plugin.js
   labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/plugins/visualchars/editor_plugin_src.js
   labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/plugins/visualchars/images/
   labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/plugins/visualchars/images/visualchars.gif
   labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/plugins/visualchars/langs/
   labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/plugins/visualchars/langs/en.js
   labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/plugins/xhtmlxtras/
   labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/plugins/xhtmlxtras/abbr.htm
   labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/plugins/xhtmlxtras/acronym.htm
   labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/plugins/xhtmlxtras/cite.htm
   labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/plugins/xhtmlxtras/css/
   labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/plugins/xhtmlxtras/css/popup.css
   labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/plugins/xhtmlxtras/css/xhtmlxtras.css
   labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/plugins/xhtmlxtras/del.htm
   labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/plugins/xhtmlxtras/editor_plugin.js
   labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/plugins/xhtmlxtras/editor_plugin_src.js
   labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/plugins/xhtmlxtras/images/
   labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/plugins/xhtmlxtras/images/abbr.gif
   labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/plugins/xhtmlxtras/images/acronym.gif
   labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/plugins/xhtmlxtras/images/cite.gif
   labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/plugins/xhtmlxtras/images/date_time.gif
   labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/plugins/xhtmlxtras/images/del.gif
   labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/plugins/xhtmlxtras/images/ins.gif
   labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/plugins/xhtmlxtras/images/remove_button_bg.gif
   labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/plugins/xhtmlxtras/ins.htm
   labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/plugins/xhtmlxtras/jscripts/
   labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/plugins/xhtmlxtras/jscripts/abbr.js
   labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/plugins/xhtmlxtras/jscripts/acronym.js
   labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/plugins/xhtmlxtras/jscripts/cite.js
   labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/plugins/xhtmlxtras/jscripts/del.js
   labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/plugins/xhtmlxtras/jscripts/element_common.js
   labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/plugins/xhtmlxtras/jscripts/ins.js
   labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/plugins/xhtmlxtras/langs/
   labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/plugins/xhtmlxtras/langs/en.js
   labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/plugins/zoom/editor_plugin_src.js
   labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/themes/advanced/about.htm
   labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/themes/advanced/css/
   labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/themes/advanced/css/editor_content.css
   labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/themes/advanced/css/editor_popup.css
   labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/themes/advanced/css/editor_ui.css
   labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/themes/advanced/docs/en/
   labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/themes/advanced/docs/en/about.htm
   labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/themes/advanced/docs/en/common_buttons.htm
   labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/themes/advanced/docs/en/create_accessible_content.htm
   labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/themes/advanced/docs/en/images/
   labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/themes/advanced/docs/en/images/insert_anchor_window.gif
   labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/themes/advanced/docs/en/images/insert_image_window.gif
   labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/themes/advanced/docs/en/images/insert_link_window.gif
   labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/themes/advanced/docs/en/images/insert_table_window.gif
   labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/themes/advanced/docs/en/index.htm
   labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/themes/advanced/docs/en/insert_anchor_button.htm
   labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/themes/advanced/docs/en/insert_image_button.htm
   labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/themes/advanced/docs/en/insert_link_button.htm
   labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/themes/advanced/docs/en/insert_table_button.htm
   labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/themes/advanced/docs/en/style.css
   labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/themes/advanced/images/anchor_symbol.gif
   labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/themes/advanced/images/backcolor.gif
   labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/themes/advanced/images/bold_es.gif
   labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/themes/advanced/images/bold_tw.gif
   labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/themes/advanced/images/browse.gif
   labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/themes/advanced/images/button_menu.gif
   labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/themes/advanced/images/buttons.gif
   labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/themes/advanced/images/cancel_button_bg.gif
   labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/themes/advanced/images/close.gif
   labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/themes/advanced/images/color.gif
   labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/themes/advanced/images/insert_button_bg.gif
   labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/themes/advanced/images/italic_es.gif
   labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/themes/advanced/images/italic_tw.gif
   labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/themes/advanced/images/justifycenter.gif
   labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/themes/advanced/images/justifyfull.gif
   labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/themes/advanced/images/justifyleft.gif
   labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/themes/advanced/images/justifyright.gif
   labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/themes/advanced/images/menu_check.gif
   labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/themes/advanced/images/newdocument.gif
   labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/themes/advanced/images/opacity.png
   labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/themes/advanced/images/separator.gif
   labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/themes/advanced/images/statusbar_resize.gif
   labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/themes/advanced/images/underline_es.gif
   labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/themes/advanced/images/underline_fr.gif
   labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/themes/advanced/images/underline_tw.gif
   labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/themes/advanced/images/xp/
   labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/themes/advanced/images/xp/tab_bg.gif
   labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/themes/advanced/images/xp/tab_end.gif
   labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/themes/advanced/images/xp/tab_sel_bg.gif
   labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/themes/advanced/images/xp/tab_sel_end.gif
   labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/themes/advanced/images/xp/tabs_bg.gif
   labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/themes/advanced/jscripts/
   labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/themes/advanced/jscripts/about.js
   labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/themes/advanced/jscripts/anchor.js
   labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/themes/advanced/jscripts/charmap.js
   labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/themes/advanced/jscripts/color_picker.js
   labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/themes/advanced/jscripts/image.js
   labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/themes/advanced/jscripts/link.js
   labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/themes/advanced/jscripts/source_editor.js
   labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/themes/advanced/langs/en.js
   labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/themes/simple/css/
   labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/themes/simple/css/editor_content.css
   labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/themes/simple/css/editor_popup.css
   labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/themes/simple/css/editor_ui.css
   labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/themes/simple/editor_template_src.js
   labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/themes/simple/images/bold_fr.gif
   labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/themes/simple/images/bold_tw.gif
   labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/themes/simple/images/buttons.gif
   labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/themes/simple/images/italic_tw.gif
   labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/themes/simple/images/separator.gif
   labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/themes/simple/images/underline_fr.gif
   labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/themes/simple/images/underline_tw.gif
   labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/utils/
   labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/utils/editable_selects.js
   labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/utils/form_utils.js
   labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/utils/mclayer.js
   labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/utils/mctabs.js
   labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/utils/validate.js
   labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-server.war/images/
   labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-server.war/images/login_bottom.png
   labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-server.war/images/login_bottom_left.png
   labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-server.war/images/login_bottom_right.png
   labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-server.war/images/login_left.png
   labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-server.war/images/login_right.png
   labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-server.war/images/login_top.png
   labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-server.war/images/login_top_left.png
   labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-server.war/images/login_top_right.png
   labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-workflow.sar/
   labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-workflow.sar/META-INF/
   labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-workflow.sar/META-INF/jboss-service.xml
   labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-workflow.sar/conf/
   labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-workflow.sar/conf/hibernate/
   labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-workflow.sar/conf/hibernate/workflow/
   labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-workflow.sar/conf/hibernate/workflow/ehcache.xml
   labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-workflow.sar/conf/hibernate/workflow/hibernate.cfg.xml
   labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-workflow.sar/jbpm-3.1.2.jar
   labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-workflow.sar/jbpm-identity-3.1.2.jar
   labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-workflow.sar/portal-workflow-lib.jar
   labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-workflow.sar/portal-workflow.war
Removed:
   labs/jbosslabs/trunk/portal-extensions-2.6/binaries/maven-repo-addons/jboss/jars/jboss-aop.jar
   labs/jbosslabs/trunk/portal-extensions-2.6/configuration/to-copy/server/all/deploy/jboss-aop-jdk50.deployer/
   labs/jbosslabs/trunk/portal-extensions-2.6/configuration/to-copy/server/all/deploy/jboss-portal.sar/META-INF/
   labs/jbosslabs/trunk/portal-extensions-2.6/configuration/to-copy/server/all/deploy/jboss-portal.sar/portal-cms.sar/
   labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/migration/
   labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-cms.sar/portal-cms.war/WEB-INF/jboss-web.xml
   labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-cms.sar/portal-cms.war/WEB-INF/portlet-instances.xml
   labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-cms.sar/portal-cms.war/WEB-INF/web.xml
   labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-cms.war/
   labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/WEB-INF/classes/Resource_en.properties
   labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/WEB-INF/jsp/cms/admin/menu.jsp
   labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-server.war/WEB-INF/server-layouts.xml
   labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-wsrp.sar/
   labs/jbosslabs/trunk/portal-extensions-2.6/portal-dnd/
Modified:
   labs/jbosslabs/trunk/portal-extensions-2.6/configuration/maven.xml
   labs/jbosslabs/trunk/portal-extensions-2.6/forge-ads/project.properties
   labs/jbosslabs/trunk/portal-extensions-2.6/forge-blog/project.properties
   labs/jbosslabs/trunk/portal-extensions-2.6/forge-contributor/project.properties
   labs/jbosslabs/trunk/portal-extensions-2.6/forge-feeds/maven.xml
   labs/jbosslabs/trunk/portal-extensions-2.6/forge-feeds/project.properties
   labs/jbosslabs/trunk/portal-extensions-2.6/forge-file-access/maven.xml
   labs/jbosslabs/trunk/portal-extensions-2.6/forge-file-access/project.properties
   labs/jbosslabs/trunk/portal-extensions-2.6/forge-freezone/project.properties
   labs/jbosslabs/trunk/portal-extensions-2.6/forge-kosmos/maven.xml
   labs/jbosslabs/trunk/portal-extensions-2.6/forge-mapper/maven.xml
   labs/jbosslabs/trunk/portal-extensions-2.6/forge-mapper/project.properties
   labs/jbosslabs/trunk/portal-extensions-2.6/forge-navigation/project.properties
   labs/jbosslabs/trunk/portal-extensions-2.6/maven.xml
   labs/jbosslabs/trunk/portal-extensions-2.6/polls/maven.xml
   labs/jbosslabs/trunk/portal-extensions-2.6/polls/project.properties
   labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/META-INF/jboss-service.xml
   labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/conf/bundles/Resource_es.properties
   labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/conf/bundles/Resource_fr.properties
   labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/conf/data/default-object.xml
   labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/conf/hibernate/instance/domain.hbm.xml
   labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/conf/hibernate/portal/domain.hbm.xml
   labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/conf/hibernate/portlet/domain.hbm.xml
   labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/conf/hibernate/user/domain.hbm.xml
   labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/conf/hibernate/user/setup.txt
   labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/conf/login-config.xml
   labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/lib/jboss-portlet-api-lib.jar
   labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/lib/portal-api-lib.jar
   labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/lib/portal-bridge-lib.jar
   labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/lib/portal-common-lib.jar
   labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/lib/portal-core-lib.jar
   labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/lib/portal-faces-lib.jar
   labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/lib/portal-federation-lib.jar
   labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/lib/portal-format-lib.jar
   labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/lib/portal-identity-lib.jar
   labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/lib/portal-jems-lib.jar
   labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/lib/portal-portlet-lib.jar
   labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/lib/portal-samples-lib.jar
   labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/lib/portal-security-lib.jar
   labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/lib/portal-server-lib.jar
   labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/lib/portal-theme-lib.jar
   labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/lib/portlet-api-lib.jar
   labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-aop.xml
   labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-cms.sar/META-INF/jboss-service.xml
   labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-cms.sar/conf/hibernate/cms/domain.hbm.xml
   labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-cms.sar/conf/hibernate/cms/hibernate.cfg.xml
   labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-cms.sar/portal-cms-lib.jar
   labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-cms.sar/portal/cms/conf/default-content/default/index.html
   labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-cms.sar/portal/cms/conf/default-content/default/project.html
   labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-cms.sar/portal/cms/conf/default-content/default/support.html
   labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/WEB-INF/classes/Resource.properties
   labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/WEB-INF/classes/Resource_es.properties
   labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/WEB-INF/classes/Resource_fr.properties
   labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/WEB-INF/jboss-portlet.xml
   labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/WEB-INF/jsp/admin/index.jsp
   labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/WEB-INF/jsp/cms/admin/confirmcreatecollection.jsp
   labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/WEB-INF/jsp/cms/admin/confirmdelete.jsp
   labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/WEB-INF/jsp/cms/admin/confirmmove.jsp
   labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/WEB-INF/jsp/cms/admin/create.jsp
   labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/WEB-INF/jsp/cms/admin/edit.jsp
   labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/WEB-INF/jsp/cms/admin/editbinary.jsp
   labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/WEB-INF/jsp/cms/admin/exportarchive.jsp
   labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/WEB-INF/jsp/cms/admin/folderlist.jsp
   labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/WEB-INF/jsp/cms/admin/main.jsp
   labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/WEB-INF/jsp/cms/admin/upload.jsp
   labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/WEB-INF/jsp/cms/admin/uploadarchive.jsp
   labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/WEB-INF/jsp/cms/admin/viewfile.jsp
   labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/WEB-INF/jsp/user/menu.jsp
   labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/WEB-INF/portlet-instances.xml
   labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/WEB-INF/portlet.xml
   labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/edit.gif
   labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/plus.gif
   labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/blank.htm
   labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/plugins/advhr/editor_plugin.js
   labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/plugins/advhr/images/advhr.gif
   labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/plugins/advhr/readme.txt
   labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/plugins/advhr/rule.htm
   labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/plugins/advimage/editor_plugin.js
   labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/plugins/advimage/image.htm
   labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/plugins/advimage/readme.txt
   labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/plugins/advlink/editor_plugin.js
   labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/plugins/advlink/link.htm
   labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/plugins/advlink/readme.txt
   labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/plugins/emotions/editor_plugin.js
   labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/plugins/emotions/emotions.htm
   labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/plugins/emotions/images/emotions.gif
   labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/plugins/emotions/images/smiley-cool.gif
   labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/plugins/emotions/images/smiley-cry.gif
   labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/plugins/emotions/images/smiley-embarassed.gif
   labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/plugins/emotions/images/smiley-foot-in-mouth.gif
   labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/plugins/emotions/images/smiley-frown.gif
   labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/plugins/emotions/images/smiley-innocent.gif
   labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/plugins/emotions/images/smiley-kiss.gif
   labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/plugins/emotions/images/smiley-laughing.gif
   labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/plugins/emotions/images/smiley-money-mouth.gif
   labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/plugins/emotions/images/smiley-sealed.gif
   labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/plugins/emotions/images/smiley-smile.gif
   labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/plugins/emotions/images/smiley-surprised.gif
   labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/plugins/emotions/images/smiley-tongue-out.gif
   labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/plugins/emotions/images/smiley-undecided.gif
   labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/plugins/emotions/images/smiley-wink.gif
   labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/plugins/emotions/images/smiley-yell.gif
   labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/plugins/emotions/readme.txt
   labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/plugins/flash/editor_plugin.js
   labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/plugins/flash/flash.htm
   labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/plugins/flash/images/flash.gif
   labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/plugins/flash/readme.txt
   labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/plugins/iespell/editor_plugin.js
   labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/plugins/iespell/images/iespell.gif
   labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/plugins/iespell/readme.txt
   labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/plugins/insertdatetime/editor_plugin.js
   labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/plugins/insertdatetime/images/insertdate.gif
   labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/plugins/insertdatetime/images/inserttime.gif
   labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/plugins/insertdatetime/readme.txt
   labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/plugins/preview/editor_plugin.js
   labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/plugins/preview/example.html
   labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/plugins/preview/images/preview.gif
   labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/plugins/preview/readme.txt
   labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/plugins/zoom/editor_plugin.js
   labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/plugins/zoom/readme.txt
   labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/themes/advanced/anchor.htm
   labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/themes/advanced/charmap.htm
   labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/themes/advanced/color_picker.htm
   labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/themes/advanced/editor_template.js
   labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/themes/advanced/editor_template_src.js
   labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/themes/advanced/image.htm
   labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/themes/advanced/images/anchor.gif
   labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/themes/advanced/images/bold.gif
   labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/themes/advanced/images/bold_de_se.gif
   labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/themes/advanced/images/bold_fr.gif
   labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/themes/advanced/images/bold_ru.gif
   labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/themes/advanced/images/bullist.gif
   labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/themes/advanced/images/charmap.gif
   labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/themes/advanced/images/cleanup.gif
   labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/themes/advanced/images/code.gif
   labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/themes/advanced/images/copy.gif
   labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/themes/advanced/images/custom_1.gif
   labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/themes/advanced/images/cut.gif
   labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/themes/advanced/images/forecolor.gif
   labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/themes/advanced/images/help.gif
   labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/themes/advanced/images/hr.gif
   labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/themes/advanced/images/image.gif
   labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/themes/advanced/images/indent.gif
   labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/themes/advanced/images/italic.gif
   labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/themes/advanced/images/italic_de_se.gif
   labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/themes/advanced/images/italic_ru.gif
   labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/themes/advanced/images/link.gif
   labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/themes/advanced/images/numlist.gif
   labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/themes/advanced/images/outdent.gif
   labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/themes/advanced/images/paste.gif
   labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/themes/advanced/images/redo.gif
   labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/themes/advanced/images/removeformat.gif
   labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/themes/advanced/images/spacer.gif
   labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/themes/advanced/images/strikethrough.gif
   labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/themes/advanced/images/sub.gif
   labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/themes/advanced/images/sup.gif
   labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/themes/advanced/images/underline.gif
   labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/themes/advanced/images/underline_ru.gif
   labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/themes/advanced/images/undo.gif
   labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/themes/advanced/images/unlink.gif
   labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/themes/advanced/images/visualaid.gif
   labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/themes/advanced/link.htm
   labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/themes/advanced/source_editor.htm
   labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/themes/simple/editor_template.js
   labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/themes/simple/images/bold.gif
   labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/themes/simple/images/bold_de_se.gif
   labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/themes/simple/images/bold_ru.gif
   labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/themes/simple/images/bullist.gif
   labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/themes/simple/images/cleanup.gif
   labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/themes/simple/images/italic.gif
   labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/themes/simple/images/italic_de_se.gif
   labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/themes/simple/images/italic_ru.gif
   labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/themes/simple/images/numlist.gif
   labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/themes/simple/images/redo.gif
   labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/themes/simple/images/spacer.gif
   labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/themes/simple/images/strikethrough.gif
   labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/themes/simple/images/underline.gif
   labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/themes/simple/images/underline_ru.gif
   labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/themes/simple/images/undo.gif
   labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/tiny_mce.js
   labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/tiny_mce_popup.js
   labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/tiny_mce_src.js
   labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/nodesk/index.jsp
   labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/phalanx/index.jsp
   labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/themes/industrial/portal_style.css
   labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/themes/maple/portal_style.css
   labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/themes/mission-critical/portal_style.css
   labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/themes/phalanx/portal_style.css
   labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/themes/renaissance/images/ico_16_normal.gif
   labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/themes/renaissance/portal_style.css
   labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-samples.war/WEB-INF/default-object.xml
   labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-samples.war/WEB-INF/jboss-portlet.xml
   labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-samples.war/WEB-INF/jsp/info/view.jsp
   labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-samples.war/WEB-INF/portlet-instances.xml
   labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-server.war/WEB-INF/jboss-web.xml
   labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-server.war/WEB-INF/web.xml
   labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-server.war/error.jsp
   labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-server.war/login.jsp
   labs/jbosslabs/trunk/portal-extensions-2.6/portal-default/maven.xml
   labs/jbosslabs/trunk/portal-extensions-2.6/portal-default/project.properties
   labs/jbosslabs/trunk/portal-extensions-2.6/project.properties
Log:
http://jira.jboss.com/jira/browse/JBLAB-817

Deleted: labs/jbosslabs/trunk/portal-extensions-2.6/binaries/maven-repo-addons/jboss/jars/jboss-aop.jar
===================================================================
(Binary files differ)

Modified: labs/jbosslabs/trunk/portal-extensions-2.6/configuration/maven.xml
===================================================================
--- labs/jbosslabs/trunk/portal-extensions-2.6/configuration/maven.xml	2007-01-11 22:09:16 UTC (rev 8831)
+++ labs/jbosslabs/trunk/portal-extensions-2.6/configuration/maven.xml	2007-01-11 22:10:56 UTC (rev 8832)
@@ -29,7 +29,6 @@
 		</ant:copy>
 		<ant:delete file="${local.deploy.dir}/jboss-portal.sar/conf/data/default-object.xml" />
 		<ant:delete dir="${local.deploy.dir}/jboss-portal.sar/portal-samples.war" />	
-		<ant:delete dir="${local.deploy.dir}/jboss-portal.sar/portal-wsrp.sar" />			
 		<ant:delete dir="${local.deploy.dir}/jbossweb-tomcat55.sar/ROOT.war" />
 	</goal>
 </project>

Modified: labs/jbosslabs/trunk/portal-extensions-2.6/forge-ads/project.properties
===================================================================
--- labs/jbosslabs/trunk/portal-extensions-2.6/forge-ads/project.properties	2007-01-11 22:09:16 UTC (rev 8831)
+++ labs/jbosslabs/trunk/portal-extensions-2.6/forge-ads/project.properties	2007-01-11 22:10:56 UTC (rev 8832)
@@ -1,3 +1,5 @@
 maven.repo.remote=http://repo1.maven.org/maven
 maven.junit.fork=yes
 maven.war.src=${basedir}/src/web
+
+maven.final.name=${pom.artifactId}

Modified: labs/jbosslabs/trunk/portal-extensions-2.6/forge-blog/project.properties
===================================================================
--- labs/jbosslabs/trunk/portal-extensions-2.6/forge-blog/project.properties	2007-01-11 22:09:16 UTC (rev 8831)
+++ labs/jbosslabs/trunk/portal-extensions-2.6/forge-blog/project.properties	2007-01-11 22:10:56 UTC (rev 8832)
@@ -1,3 +1,5 @@
 maven.repo.remote=http://repo1.maven.org/maven
 maven.junit.fork=yes
 maven.war.src=${basedir}/src/web
+
+maven.final.name=${pom.artifactId}

Modified: labs/jbosslabs/trunk/portal-extensions-2.6/forge-contributor/project.properties
===================================================================
--- labs/jbosslabs/trunk/portal-extensions-2.6/forge-contributor/project.properties	2007-01-11 22:09:16 UTC (rev 8831)
+++ labs/jbosslabs/trunk/portal-extensions-2.6/forge-contributor/project.properties	2007-01-11 22:10:56 UTC (rev 8832)
@@ -1,3 +1,5 @@
 maven.repo.remote=http://repo1.maven.org/maven
 maven.junit.fork=yes
 maven.war.src=${basedir}/src/web
+
+maven.final.name=${pom.artifactId}
\ No newline at end of file

Modified: labs/jbosslabs/trunk/portal-extensions-2.6/forge-feeds/maven.xml
===================================================================
--- labs/jbosslabs/trunk/portal-extensions-2.6/forge-feeds/maven.xml	2007-01-11 22:09:16 UTC (rev 8831)
+++ labs/jbosslabs/trunk/portal-extensions-2.6/forge-feeds/maven.xml	2007-01-11 22:10:56 UTC (rev 8832)
@@ -17,7 +17,7 @@
 	<goal name="deploy">
         <ant:copy
                 tofile="../${forge.sar.dir}/target/${forge.sar.name}/forge-feeds.jar"
-                file="target/forge-feeds-1.0.jar" />
+                file="target/forge-feeds.jar" />
     </goal>
 	
 	<goal name="clean">

Modified: labs/jbosslabs/trunk/portal-extensions-2.6/forge-feeds/project.properties
===================================================================
--- labs/jbosslabs/trunk/portal-extensions-2.6/forge-feeds/project.properties	2007-01-11 22:09:16 UTC (rev 8831)
+++ labs/jbosslabs/trunk/portal-extensions-2.6/forge-feeds/project.properties	2007-01-11 22:10:56 UTC (rev 8832)
@@ -1,3 +1,5 @@
 maven.repo.remote=http://repo1.maven.org/maven
 maven.junit.fork=yes
 maven.war.src=${basedir}/src/web
+
+maven.final.name=${pom.artifactId}
\ No newline at end of file

Modified: labs/jbosslabs/trunk/portal-extensions-2.6/forge-file-access/maven.xml
===================================================================
--- labs/jbosslabs/trunk/portal-extensions-2.6/forge-file-access/maven.xml	2007-01-11 22:09:16 UTC (rev 8831)
+++ labs/jbosslabs/trunk/portal-extensions-2.6/forge-file-access/maven.xml	2007-01-11 22:10:56 UTC (rev 8832)
@@ -11,7 +11,6 @@
 	</goal>
 
 	<goal name="build">
-        <attainGoal name="jar" />
         <attainGoal name="prj-war-build" />
     </goal>
     
@@ -21,7 +20,7 @@
         <attainGoal name="jar-to-dir" />
         <ant:copy todir="${local.deploy.dir}/shotoku-file-access.war/WEB-INF/lib"
                   overwrite="true"
-                  file="target/file-access-1.0.jar" />
+                  file="target/file-access.jar" />
         <attainGoal name="dir-to-jar" />
     </goal>
 	

Modified: labs/jbosslabs/trunk/portal-extensions-2.6/forge-file-access/project.properties
===================================================================
--- labs/jbosslabs/trunk/portal-extensions-2.6/forge-file-access/project.properties	2007-01-11 22:09:16 UTC (rev 8831)
+++ labs/jbosslabs/trunk/portal-extensions-2.6/forge-file-access/project.properties	2007-01-11 22:10:56 UTC (rev 8832)
@@ -1,3 +1,5 @@
 maven.repo.remote=http://repo1.maven.org/maven
 maven.junit.fork=yes
 maven.war.src=${basedir}/src/web
+
+maven.final.name=${pom.artifactId}
\ No newline at end of file

Modified: labs/jbosslabs/trunk/portal-extensions-2.6/forge-freezone/project.properties
===================================================================
--- labs/jbosslabs/trunk/portal-extensions-2.6/forge-freezone/project.properties	2007-01-11 22:09:16 UTC (rev 8831)
+++ labs/jbosslabs/trunk/portal-extensions-2.6/forge-freezone/project.properties	2007-01-11 22:10:56 UTC (rev 8832)
@@ -1,3 +1,5 @@
 maven.repo.remote=http://repo1.maven.org/maven
 maven.junit.fork=yes
 maven.war.src=${basedir}/src/web
+
+maven.final.name=${pom.artifactId}
\ No newline at end of file

Modified: labs/jbosslabs/trunk/portal-extensions-2.6/forge-kosmos/maven.xml
===================================================================
--- labs/jbosslabs/trunk/portal-extensions-2.6/forge-kosmos/maven.xml	2007-01-11 22:09:16 UTC (rev 8831)
+++ labs/jbosslabs/trunk/portal-extensions-2.6/forge-kosmos/maven.xml	2007-01-11 22:10:56 UTC (rev 8832)
@@ -9,14 +9,18 @@
     </goal>
     
     <goal name="clean">
-    	<attainGoal name="prj-clean" />
+    	<!--<attainGoal name="prj-clean" />-->
     </goal>
 
     <goal name="build">
-	<attainGoal name="java:compile" />
+	<!--<attainGoal name="java:compile" />-->
     </goal>
     
     <goal name="deploy">
+
+    </goal>
+
+    <goal name="deploy-old">
 	<!-- Unzipping the jar-s -->
 	<ant:unzip src="to-copy/kosmos-server.war" dest="target/kosmos-server.war" overwrite="true" />
 	<ant:unzip src="to-copy/kosmos-portlet.war" dest="target/kosmos-portlet.war" overwrite="true" />

Modified: labs/jbosslabs/trunk/portal-extensions-2.6/forge-mapper/maven.xml
===================================================================
--- labs/jbosslabs/trunk/portal-extensions-2.6/forge-mapper/maven.xml	2007-01-11 22:09:16 UTC (rev 8831)
+++ labs/jbosslabs/trunk/portal-extensions-2.6/forge-mapper/maven.xml	2007-01-11 22:10:56 UTC (rev 8832)
@@ -9,7 +9,7 @@
     </goal>
 
     <goal name="build">
-	<attainGoal name="jar" />
+	    <attainGoal name="jar" />
     </goal>
     
     <goal name="clean">
@@ -19,7 +19,7 @@
     <goal name="deploy">
 	<ant:copy
 	    tofile="${local.deploy.dir}/jboss-portal.sar/lib/forge-mapper.jar" 
-	    file="target/forge-mapper-1.0.jar"
+	    file="target/forge-mapper.jar"
 	    overwrite="true" />
     </goal>
     

Modified: labs/jbosslabs/trunk/portal-extensions-2.6/forge-mapper/project.properties
===================================================================
--- labs/jbosslabs/trunk/portal-extensions-2.6/forge-mapper/project.properties	2007-01-11 22:09:16 UTC (rev 8831)
+++ labs/jbosslabs/trunk/portal-extensions-2.6/forge-mapper/project.properties	2007-01-11 22:10:56 UTC (rev 8832)
@@ -1,3 +1,5 @@
 maven.repo.remote=http://repo1.maven.org/maven
 maven.junit.fork=yes
-maven.war.src=${basedir}/src/web
\ No newline at end of file
+maven.war.src=${basedir}/src/web
+
+maven.final.name=${pom.artifactId}
\ No newline at end of file

Modified: labs/jbosslabs/trunk/portal-extensions-2.6/forge-navigation/project.properties
===================================================================
--- labs/jbosslabs/trunk/portal-extensions-2.6/forge-navigation/project.properties	2007-01-11 22:09:16 UTC (rev 8831)
+++ labs/jbosslabs/trunk/portal-extensions-2.6/forge-navigation/project.properties	2007-01-11 22:10:56 UTC (rev 8832)
@@ -1,3 +1,5 @@
-maven.repo.remote=http://repo1.maven.org/maven
+maven.repo.remote=http://repo1.maven.org/maven
 maven.junit.fork=yes
 maven.war.src=${basedir}/src/web
+
+maven.final.name=${pom.artifactId}
\ No newline at end of file

Added: labs/jbosslabs/trunk/portal-extensions-2.6/forge-sar-skeleton/META-INF/jboss-service.xml
===================================================================
--- labs/jbosslabs/trunk/portal-extensions-2.6/forge-sar-skeleton/META-INF/jboss-service.xml	2007-01-11 22:09:16 UTC (rev 8831)
+++ labs/jbosslabs/trunk/portal-extensions-2.6/forge-sar-skeleton/META-INF/jboss-service.xml	2007-01-11 22:10:56 UTC (rev 8832)
@@ -0,0 +1,2 @@
+<server>
+</server>

Modified: labs/jbosslabs/trunk/portal-extensions-2.6/maven.xml
===================================================================
--- labs/jbosslabs/trunk/portal-extensions-2.6/maven.xml	2007-01-11 22:09:16 UTC (rev 8831)
+++ labs/jbosslabs/trunk/portal-extensions-2.6/maven.xml	2007-01-11 22:10:56 UTC (rev 8832)
@@ -38,17 +38,26 @@
 
     <!-- Common goals that can be called from a project's build	-->
 	<goal name="prj-war-build">
-		<attainGoal name="copy-tld" />
+        <attainGoal name="jar" />
+        <attainGoal name="copy-tld" />
 		<attainGoal name="war" />
     </goal>
 
 	<goal name="prj-war-deploy">
-		<ant:copy todir="../${forge.sar.dir}/target" flatten="true" overwrite="true">
+        <ant:mkdir dir="../${forge.sar.dir}/target/${maven.final.name}.sar" />
+        <ant:copy todir="../${forge.sar.dir}/target/${maven.final.name}.sar" overwrite="true">
+            <ant:fileset dir="../forge-sar-skeleton">
+                <ant:include name="**/*" />
+            </ant:fileset>
+        </ant:copy>
+        <ant:copy todir="../${forge.sar.dir}/target/${maven.final.name}.sar" flatten="true" overwrite="true">
 			<ant:fileset dir=".">
-				<ant:filename name="target/*.war" />
+                <ant:filename name="target/*ar" />
 			</ant:fileset>
 		</ant:copy>
-    	</goal>
+        <j:set var="jar.to.dir" value="../${forge.sar.dir}/target/${maven.final.name}.sar" />
+        <attainGoal name="dir-to-jar" />
+    </goal>
 
 	<goal name="prj-jar-deploy">
 		<ant:copy todir="../${forge.sar.dir}/target" flatten="true" overwrite="true">
@@ -56,7 +65,7 @@
 				<ant:filename name="target/*.jar" />
 			</ant:fileset>
 		</ant:copy>
-    	</goal>
+    </goal>
 
 	<goal name="prj-clean">
 		<ant:delete dir="${maven.build.dir}"/>

Modified: labs/jbosslabs/trunk/portal-extensions-2.6/polls/maven.xml
===================================================================
--- labs/jbosslabs/trunk/portal-extensions-2.6/polls/maven.xml	2007-01-11 22:09:16 UTC (rev 8831)
+++ labs/jbosslabs/trunk/portal-extensions-2.6/polls/maven.xml	2007-01-11 22:10:56 UTC (rev 8832)
@@ -30,7 +30,7 @@
     
 	<goal name="deploy">	
 		<!--attainGoal name="prj-war-deploy" /-->
-		<ant:copy tofile="${local.deploy.dir}/polls-commons.jar" file="target/polls-portlet-1.0.jar" />
+		<ant:copy tofile="${local.deploy.dir}/polls-commons.jar" file="target/polls-portlet.jar" />
 		<ant:copy tofile="${local.deploy.dir}/polls-portlet.war" file="target/polls-portlet.war" />
 		<!--ant:copy tofile="${local.deploy.dir}/polls.ejb3" file="target/polls-portlet-1.0.ejb3" /-->
 	</goal>

Modified: labs/jbosslabs/trunk/portal-extensions-2.6/polls/project.properties
===================================================================
--- labs/jbosslabs/trunk/portal-extensions-2.6/polls/project.properties	2007-01-11 22:09:16 UTC (rev 8831)
+++ labs/jbosslabs/trunk/portal-extensions-2.6/polls/project.properties	2007-01-11 22:10:56 UTC (rev 8832)
@@ -1,7 +1,9 @@
-maven.repo.remote=http://repo1.maven.org/maven
+maven.repo.remote=http://repo1.maven.org/maven
 maven.junit.fork=yes
 maven.war.src=${basedir}/src/web
 #maven.ejb.includes=**/service/*.class, **/META-INF/persistence.xml
 #maven.jar.excludes=**/PollsPortlet.class, **/service/*.class, **/META-INF/persistence.xml
 maven.jar.excludes=**/PollsPortlet.class
-maven.war.classes.includes=**/PollsPortlet.class
\ No newline at end of file
+maven.war.classes.includes=**/PollsPortlet.class
+
+maven.final.name=${pom.artifactId}
\ No newline at end of file

Modified: labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/META-INF/jboss-service.xml
===================================================================
--- labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/META-INF/jboss-service.xml	2007-01-11 22:09:16 UTC (rev 8831)
+++ labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/META-INF/jboss-service.xml	2007-01-11 22:10:56 UTC (rev 8832)
@@ -23,7 +23,52 @@
   ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~-->
 
 <server>
+   <!--  Management -->
+   
+   <!-- Portlet discovery executed every 30 seconds -->
+   <mbean code="org.jboss.varia.scheduler.Scheduler"
+          name="portal:service=Management,type=Scheduler">
+     <attribute name="SchedulableMBean">portal:service=Management,type=PortletDiscoveryManagement,name=Default</attribute>
+     <attribute name="SchedulableMBeanMethod">processPortletDiscovery()</attribute>
+     <attribute name="InitialStartDate">NOW</attribute>
+     <attribute name="SchedulePeriod">30000</attribute>
+     <attribute name="InitialRepetitions">-1</attribute>
+   </mbean>
 
+   <mbean
+      code="org.jboss.portal.core.management.PortalImpl"
+      name="portal.management:service=Management,type=Portal,name=Default"
+      xmbean-dd=""
+      xmbean-code="org.jboss.portal.jems.as.system.JBossServiceModelMBean">
+      <depends
+         optional-attribute-name="InstanceContainer"
+         proxy-type="attribute">portal:container=Instance</depends>
+      <xmbean/>
+   </mbean>  
+      
+   <mbean
+      code="org.jboss.portal.identity.management.Identity"
+      name="portal.management:service=Management,type=Identity,name=Default"
+      >
+      <depends>portal:service=Module,type=IdentityServiceController</depends>
+      <xmbean/>
+   </mbean>  
+   
+   <mbean
+      code="org.jboss.portal.core.management.PortletDiscoveryService"
+      name="portal:service=Management,type=PortletDiscoveryManagement,name=Default"
+      xmbean-dd=""
+      xmbean-code="org.jboss.portal.jems.as.system.JBossServiceModelMBean">
+      <depends
+         optional-attribute-name="FederatingPortletInvoker"
+         proxy-type="attribute">portal:service=PortletInvoker,type=Federating</depends>
+      <depends
+         optional-attribute-name="Interceptor"
+         proxy-type="attribute">portal:service=Interceptor,type=Portlet,name=PortletContainerManagement</depends>
+      <xmbean/>
+   </mbean>  
+
+
    <!-- Server configuration service -->
    <mbean
       code="org.jboss.portal.server.config.ServerConfigService"
@@ -87,9 +132,7 @@
       xmbean-dd=""
       xmbean-code="org.jboss.portal.jems.as.system.JBossServiceModelMBean">
       <xmbean/>
-      <depends
-         optional-attribute-name="UserModule"
-         proxy-type="attribute">portal:service=Module,type=User</depends>
+      <depends>portal:service=Module,type=IdentityServiceController</depends>
    </mbean>
    <mbean
       code="org.jboss.portal.core.aspects.server.LocaleInterceptor"
@@ -170,13 +213,6 @@
          proxy-type="attribute">portal:service=ListenerRegistry</depends>
    </mbean>
    <mbean
-      code="org.jboss.portal.core.aspects.controller.WindowCacheInterceptor"
-      name="portal:service=Interceptor,type=Command,name=WindowCache"
-      xmbean-dd=""
-      xmbean-code="org.jboss.portal.jems.as.system.JBossServiceModelMBean">
-      <xmbean/>
-   </mbean>
-   <mbean
       code="org.jboss.portal.server.impl.invocation.JBossInterceptorStackFactory"
       name="portal:service=InterceptorStackFactory,type=Command"
       xmbean-dd=""
@@ -189,12 +225,19 @@
          <depends-list-element>portal:service=Interceptor,type=Command,name=PageCustomizer</depends-list-element>
          <depends-list-element>portal:service=Interceptor,type=Command,name=Ajax</depends-list-element>
          <depends-list-element>portal:service=Interceptor,type=Command,name=EventBroadcaster</depends-list-element>
-         <depends-list-element>portal:service=Interceptor,type=Command,name=WindowCache</depends-list-element>
       </depends-list>
    </mbean>
 
    <!-- Instance stack -->
+   <!-- Management MBean, can be removed if management is not used -->
    <mbean
+      code="org.jboss.portal.portlet.management.PortletContainerManagementInterceptorImpl"
+      name="portal:service=Interceptor,type=Portlet,name=PortletContainerManagement"
+      xmbean-dd=""
+      xmbean-code="org.jboss.portal.jems.as.system.JBossServiceModelMBean">
+      <xmbean/>
+   </mbean>
+   <mbean
       code="org.jboss.portal.core.model.instance.InstanceSecurityInterceptor"
       name="portal:service=Interceptor,type=Portlet,name=InstanceSecurity"
       xmbean-dd=""
@@ -203,6 +246,13 @@
       <depends optional-attribute-name="PortalAuthorizationManagerFactory" proxy-type="attribute">portal:service=PortalAuthorizationManagerFactory</depends>
    </mbean>
    <mbean
+      code="org.jboss.portal.portlet.aspects.portlet.ConsumerCacheInterceptor"
+      name="portal:service=Interceptor,type=Portlet,name=ConsumerCache"
+      xmbean-dd=""
+      xmbean-code="org.jboss.portal.jems.as.system.JBossServiceModelMBean">
+      <xmbean/>
+   </mbean>
+   <mbean
       code="org.jboss.portal.portlet.aspects.portlet.PortalSessionSynchronizationInterceptor"
       name="portal:service=Interceptor,type=Portlet,name=PortalSessionSynchronization"
       xmbean-dd=""
@@ -216,6 +266,8 @@
       xmbean-code="org.jboss.portal.jems.as.system.JBossServiceModelMBean">
       <xmbean/>
       <depends-list optional-attribute-name="InterceptorNames">
+         <depends-list-element>portal:service=Interceptor,type=Portlet,name=PortletContainerManagement</depends-list-element>
+         <depends-list-element>portal:service=Interceptor,type=Portlet,name=ConsumerCache</depends-list-element>
          <depends-list-element>portal:service=Interceptor,type=Portlet,name=InstanceSecurity</depends-list-element>
          <depends-list-element>portal:service=Interceptor,type=Portlet,name=PortalSessionSynchronization</depends-list-element>
       </depends-list>
@@ -311,8 +363,8 @@
          <depends-list-element>portal:service=Interceptor,type=Portlet,name=ContextDispatcher</depends-list-element>
          <depends-list-element>portal:service=Interceptor,type=Portlet,name=ContextTracker</depends-list-element>
          <depends-list-element>portal:service=Interceptor,type=Portlet,name=PortletSessionSynchronization</depends-list-element>
-		   <depends-list-element>portal:service=Interceptor,type=Portlet,name=WindowStates</depends-list-element>
-		   <depends-list-element>portal:service=Interceptor,type=Portlet,name=Bridge</depends-list-element>
+		 <depends-list-element>portal:service=Interceptor,type=Portlet,name=WindowStates</depends-list-element>
+		 <depends-list-element>portal:service=Interceptor,type=Portlet,name=Bridge</depends-list-element>
          <depends-list-element>portal:service=Interceptor,type=Portlet,name=Modes</depends-list-element>
          <depends-list-element>portal:service=Interceptor,type=Portlet,name=ProducerCache</depends-list-element>
          <depends-list-element>portal:service=Interceptor,type=Portlet,name=Header</depends-list-element>
@@ -385,7 +437,7 @@
       <attribute name="DoChecking">true</attribute>
       <attribute name="ConfigLocation">conf/hibernate/user/hibernate.cfg.xml</attribute>
       <attribute name="SetupLocation">conf/hibernate/user/setup.txt</attribute>
-      <attribute name="JNDIName">java:/portal/UserSessionFactory</attribute>
+      <attribute name="JNDIName">java:/portal/IdentitySessionFactory</attribute>
    </mbean>
    <mbean
       code="org.jboss.portal.jems.hibernate.SessionFactoryBinder"
@@ -431,37 +483,29 @@
       <attribute name="JNDIName">java:/portal/PortletSessionFactory</attribute>
    </mbean>
 
-   <!-- Modules -->
+   <!--Identity-->
    <mbean
-      code="org.jboss.portal.identity.db.DBUserModuleImpl"
-      name="portal:service=Module,type=User"
+      code="org.jboss.portal.identity.IdentityServiceControllerImpl"
+      name="portal:service=Module,type=IdentityServiceController"
       xmbean-dd=""
       xmbean-code="org.jboss.portal.jems.as.system.JBossServiceModelMBean">
       <xmbean/>
       <depends>portal:service=Hibernate</depends>
-      <attribute name="JNDIName">java:/portal/UserModule</attribute>
-      <attribute name="SessionFactoryJNDIName">java:/portal/UserSessionFactory</attribute>
+      <!--<depends>jboss.jca:service=DataSourceBinding,name=PortalDS</depends>-->
+      <attribute name="JndiName">java:/portal/IdentityServiceController</attribute>
+      <attribute name="RegisterMBeans">true</attribute>
+      <attribute name="ConfigFile">conf/identity/identity-config.xml</attribute>
+      <attribute name="DefaultConfigFile">conf/identity/standardidentity-config.xml</attribute>
    </mbean>
+
    <mbean
-      code="org.jboss.portal.identity.db.DBRoleModuleImpl"
-      name="portal:service=Module,type=Role"
-      xmbean-dd=""
-      xmbean-code="org.jboss.portal.jems.as.system.JBossServiceModelMBean">
-      <xmbean/>
-      <depends>portal:service=Hibernate</depends>
-      <attribute name="JNDIName">java:/portal/RoleModule</attribute>
-      <attribute name="SessionFactoryJNDIName">java:/portal/UserSessionFactory</attribute>
-   </mbean>
-
-   <!-- not needed -->
-   <!--mbean
       code="org.jboss.portal.core.impl.mail.MailModuleImpl"
       name="portal:service=Module,type=Mail"
       xmbean-dd=""
       xmbean-code="org.jboss.portal.jems.as.system.JBossServiceModelMBean">
       <xmbean/>
       <depends>jboss:service=Mail</depends>
-      <depends>portal:service=Module,type=User</depends>
+      <depends>portal:service=Module,type=IdentityServiceController</depends>
       <attribute name="QueueCapacity">-1</attribute>
       <attribute name="Gateway">localhost</attribute>
       <attribute name="SmtpUser"></attribute>
@@ -470,7 +514,7 @@
       <attribute name="SMTPConnectionTimeout">100000</attribute>
       <attribute name="SMTPTimeout">10000</attribute>
       <attribute name="JNDIName">java:portal/MailModule</attribute>
-   </mbean-->
+   </mbean>
 
    <mbean
       code="org.jboss.security.auth.login.DynamicLoginConfig"
@@ -533,6 +577,7 @@
          optional-attribute-name="AuthorizationDomainRegistry"
          proxy-type="attribute">portal:service=AuthorizationDomainRegistry</depends>
       <attribute name="SessionFactoryJNDIName">java:/portal/InstanceSessionFactory</attribute>
+      <attribute name="CacheNaturalId">true</attribute>
    </mbean>
    <mbean
       code="org.jboss.portal.core.impl.model.portal.PersistentPortalObjectContainer"
@@ -547,9 +592,33 @@
       <depends
          optional-attribute-name="AuthorizationDomainRegistry"
          proxy-type="attribute">portal:service=AuthorizationDomainRegistry</depends>
+      <depends
+         optional-attribute-name="InstanceContainer"
+         proxy-type="attribute">portal:container=Instance</depends>
       <attribute name="SessionFactoryJNDIName">java:/portal/PortalObjectSessionFactory</attribute>
+      <attribute name="CacheNaturalId">true</attribute>
    </mbean>
 
+   <!-- Customization manager -->
+   <mbean
+      code="org.jboss.portal.core.impl.model.CustomizationManagerService"
+      name="portal:service=CustomizationManager"
+      xmbean-dd=""
+      xmbean-code="org.jboss.portal.jems.as.system.JBossServiceModelMBean">
+      <xmbean/>
+	   <depends
+         optional-attribute-name="PortalAuthorizationManagerFactory"
+         proxy-type="attribute">portal:service=PortalAuthorizationManagerFactory</depends>
+      <depends
+         optional-attribute-name="InstanceContainer"
+         proxy-type="attribute">portal:container=Instance</depends>
+      <depends
+         optional-attribute-name="PortalObjectContainer"
+         proxy-type="attribute">portal:container=PortalObject</depends>
+      <depends>portal:service=Module,type=IdentityServiceController</depends>
+      <attribute name="DashboardContextId">dashboard</attribute>
+   </mbean>
+
    <!-- Command factories -->
    <mbean
       code="org.jboss.portal.core.controller.command.mapper.DelegatingCommandFactoryService"
@@ -623,7 +692,6 @@
       xmbean-dd=""
       xmbean-code="org.jboss.portal.jems.as.system.JBossServiceModelMBean">
       <xmbean/>
-      <attribute name="DashboardId">dashboard</attribute>
    </mbean>
    <mbean
       code="org.jboss.portal.core.controller.command.mapper.CommandFactoryDelegate"
@@ -639,6 +707,50 @@
          optional-attribute-name="DelegateFactory"
          proxy-type="attribute">portal:commandFactory=Dashboard</depends>
    </mbean>
+   <mbean
+      code="org.jboss.portal.core.model.instance.InstanceCommandFactory"
+      name="portal:commandFactory=Configurator"
+      xmbean-dd=""
+      xmbean-code="org.jboss.portal.jems.as.system.JBossServiceModelMBean">
+      <xmbean/>
+      <attribute name="InstanceId">ConfiguratorPortletInstance</attribute>
+   </mbean>
+   <mbean
+      code="org.jboss.portal.core.controller.command.mapper.CommandFactoryDelegate"
+      name="portal:commandFactory=Delegate,path=configure"
+      xmbean-dd=""
+      xmbean-code="org.jboss.portal.jems.as.system.JBossServiceModelMBean">
+      <xmbean/>
+      <attribute name="Path">/configure</attribute>
+      <depends
+         optional-attribute-name="DelegatingFactory"
+         proxy-type="attribute">portal:commandFactory=Delegating</depends>
+      <depends
+         optional-attribute-name="DelegateFactory"
+         proxy-type="attribute">portal:commandFactory=Configurator</depends>
+   </mbean>
+   <mbean
+      code="org.jboss.portal.core.controller.command.mapper.CommandFactoryDelegate"
+      name="portal:commandFactory=Delegate,path=test"
+      xmbean-dd=""
+      xmbean-code="org.jboss.portal.jems.as.system.JBossServiceModelMBean">
+      <xmbean/>
+      <attribute name="Path">/test</attribute>
+      <depends
+         optional-attribute-name="DelegatingFactory"
+         proxy-type="attribute">portal:commandFactory=Delegating</depends>
+      <depends
+         optional-attribute-name="DelegateFactory"
+         proxy-type="attribute">portal:commandFactory=Test</depends>
+   </mbean>
+   <mbean
+      code="org.jboss.portal.core.model.instance.InstanceCommandFactory"
+      name="portal:commandFactory=Test"
+      xmbean-dd=""
+      xmbean-code="org.jboss.portal.jems.as.system.JBossServiceModelMBean">
+      <xmbean/>
+      <attribute name="InstanceId">TestPortletInstance</attribute>
+   </mbean>
 
    <!-- URL factories -->
    <mbean
@@ -678,11 +790,35 @@
       xmbean-code="org.jboss.portal.jems.as.system.JBossServiceModelMBean">
       <xmbean/>
       <attribute name="Path">/dashboard</attribute>
-      <attribute name="ClassNames">org.jboss.portal.core.controller.command.ViewDashboardCommand</attribute>
+      <attribute name="ClassNames">org.jboss.portal.core.model.portal.command.ViewDashboardCommand</attribute>
       <depends
          optional-attribute-name="Factory"
          proxy-type="attribute">portal:urlFactory=Delegating</depends>
    </mbean>
+   <mbean
+      code="org.jboss.portal.core.model.instance.InstanceURLFactory"
+      name="portal:urlFactory=Configurator"
+      xmbean-dd=""
+      xmbean-code="org.jboss.portal.jems.as.system.JBossServiceModelMBean">
+      <xmbean/>
+      <attribute name="InstanceId">ConfiguratorPortletInstance</attribute>
+      <attribute name="Path">/configure</attribute>
+      <depends
+         optional-attribute-name="Factory"
+         proxy-type="attribute">portal:urlFactory=Delegating</depends>
+   </mbean>
+   <mbean
+      code="org.jboss.portal.core.model.instance.InstanceURLFactory"
+      name="portal:urlFactory=Test"
+      xmbean-dd=""
+      xmbean-code="org.jboss.portal.jems.as.system.JBossServiceModelMBean">
+      <xmbean/>
+      <attribute name="InstanceId">TestPortletInstance</attribute>
+      <attribute name="Path">/test</attribute>
+      <depends
+         optional-attribute-name="Factory"
+         proxy-type="attribute">portal:urlFactory=Delegating</depends>
+   </mbean>
 
    <!-- The federating portlet invoker -->
    <mbean
@@ -710,7 +846,7 @@
 
    <!-- The producer portlet invoker -->
    <mbean
-      code="org.jboss.portal.core.impl.portlet.state.PersistentStateStore"
+      code="org.jboss.portal.core.impl.portlet.state.PersistentPortletStatePersistenceManager"
       name="portal:service=PersistenceManager,type=Producer"
       xmbean-dd=""
       xmbean-code="org.jboss.portal.jems.as.system.JBossServiceModelMBean">
@@ -771,7 +907,7 @@
 
    <!-- The core controller -->
    <mbean
-      code="org.jboss.portal.core.controller.CoreController"
+      code="org.jboss.portal.core.controller.classic.ClassicController"
       name="portal:controller=Core"
       xmbean-dd=""
       xmbean-code="org.jboss.portal.jems.as.system.JBossServiceModelMBean">
@@ -797,6 +933,9 @@
       <depends
          optional-attribute-name="PortalAuthorizationManagerFactory"
          proxy-type="attribute">portal:service=PortalAuthorizationManagerFactory</depends>
+      <depends
+         optional-attribute-name="CustomizationManager"
+         proxy-type="attribute">portal:service=CustomizationManager</depends>
    </mbean>
 
    <!-- The ajax controller -->
@@ -827,6 +966,9 @@
       <depends
          optional-attribute-name="PortalAuthorizationManagerFactory"
          proxy-type="attribute">portal:service=PortalAuthorizationManagerFactory</depends>
+      <depends
+         optional-attribute-name="CustomizationManager"
+         proxy-type="attribute">portal:service=CustomizationManager</depends>
    </mbean>
 
    <!-- -->
@@ -904,7 +1046,7 @@
       <depends>portal:container=PortalObject</depends>
       <attribute name="Target">portal:deploymentFactory=PortletApp</attribute>
       <attribute name="OnStart">enableCreateInstances</attribute>
-      <attribute name="OnStop">disableCreateInstance</attribute>
+      <attribute name="OnStop">disableCreateInstances</attribute>
       </mbean>
    
    -->

Modified: labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/conf/bundles/Resource_es.properties
===================================================================
--- labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/conf/bundles/Resource_es.properties	2007-01-11 22:09:16 UTC (rev 8831)
+++ labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/conf/bundles/Resource_es.properties	2007-01-11 22:10:56 UTC (rev 8832)
@@ -23,6 +23,6 @@
 
 # Navigation Portlet
 PAGENAME_default=Home
-PAGENAME_Admin=Administraci�n
+PAGENAME_Admin=Administraci?n
 PAGENAME_Test=Ejemplos
 PAGENAME_News=Noticias
\ No newline at end of file

Modified: labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/conf/bundles/Resource_fr.properties
===================================================================
--- labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/conf/bundles/Resource_fr.properties	2007-01-11 22:09:16 UTC (rev 8831)
+++ labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/conf/bundles/Resource_fr.properties	2007-01-11 22:10:56 UTC (rev 8832)
@@ -25,4 +25,4 @@
 PAGENAME_default=Accueil
 PAGENAME_Admin=Admin
 PAGENAME_Test=Test
-PAGENAME_News=Actualit�
\ No newline at end of file
+PAGENAME_News=Actualit\u00E9s
\ No newline at end of file

Modified: labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/conf/data/default-object.xml
===================================================================
--- labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/conf/data/default-object.xml	2007-01-11 22:09:16 UTC (rev 8831)
+++ labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/conf/data/default-object.xml	2007-01-11 22:10:56 UTC (rev 8832)
@@ -77,6 +77,12 @@
          </supported-window-states>
          <page>
             <page-name>default</page-name>
+            <properties>
+               <property>
+                  <name>order</name>
+                  <value>1</value>
+               </property>
+            </properties>
             <window>
                <window-name>JSPPortletWindow</window-name>
                <instance-ref>JSPPortletInstance</instance-ref>
@@ -127,6 +133,12 @@
       <parent-ref>default</parent-ref>
       <page>
          <page-name>News</page-name>
+         <properties>
+            <property>
+               <name>order</name>
+               <value>3</value>
+            </property>
+         </properties>
          <window>
             <window-name>WeatherPortletWindow</window-name>
             <instance-ref>WeatherPortletInstance</instance-ref>
@@ -150,8 +162,60 @@
    <deployment>
       <parent-ref/>
       <if-exists>keep</if-exists>
+      <context>
+         <context-name>dashboard</context-name>
+         <properties>
+            <!--
+            | Set the layout for the default portal, see also portal-layouts.xml.
+            -->
+            <property>
+               <name>layout.id</name>
+               <value>generic</value>
+            </property>
+            <!--
+            | Set the theme for the default portal, see also portal-themes.xml.
+            -->
+            <property>
+               <name>theme.id</name>
+               <value>renaissance</value>
+            </property>
+            <!--
+            | Set the default render set name (used by the render tag in layouts), see also portal-renderSet.xml
+            -->
+            <property>
+               <name>theme.renderSetId</name>
+               <value>divRenderer</value>
+            </property>
+            <!--
+            | Set the default strategy name (used by the strategy interceptor), see also portal-strategies.xml
+            -->
+            <property>
+               <name>layout.strategyId</name>
+               <value>maximizedRegion</value>
+            </property>
+            <!--
+            | Set the dashboard property
+            -->
+            <property>
+               <name>dashboard</name>
+               <value>true</value>
+            </property>
+         </properties>
+<!--
+         <security-constraint>
+            <policy-permission>
+               <role-name>Authenticated</role-name>
+               <action-name>view</action-name>
+            </policy-permission>
+         </security-constraint>
+-->
+      </context>
+   </deployment>
+   <deployment>
+      <parent-ref/>
+      <if-exists>keep</if-exists>
       <portal>
-         <portal-name>dashboard</portal-name>
+         <portal-name>template</portal-name>
          <properties>
             <!--
             | Set the layout for the default portal, see also portal-layouts.xml.
@@ -181,6 +245,13 @@
                <name>layout.strategyId</name>
                <value>maximizedRegion</value>
             </property>
+            <!--
+            | The default page name, if the property is not explicited then the default page name is "default"
+            -->
+            <property>
+               <name>portal.defaultObjectName</name>
+               <value>default</value>
+            </property>
          </properties>
          <supported-modes>
             <mode>view</mode>
@@ -192,15 +263,52 @@
             <window-state>minimized</window-state>
             <window-state>maximized</window-state>
          </supported-window-states>
-         <security-constraint>
-            <policy-permission>
-               <role-name>Authenticated</role-name>
-               <action-name>dashboard</action-name>
-            </policy-permission>
-         </security-constraint>
+         <page>
+            <page-name>default</page-name>
+            <properties>
+               <property>
+                  <name>order</name>
+                  <value>1</value>
+               </property>
+            </properties>
+            <window>
+               <window-name>JSPPortletWindow</window-name>
+               <instance-ref>JSPPortletInstance</instance-ref>
+               <region>left</region>
+               <height>0</height>
+            </window>
+            <window>
+               <window-name>DefaultCMSPortletWindow</window-name>
+               <instance-ref>CMSPortletInstance</instance-ref>
+               <region>center</region>
+               <height>0</height>
+               <properties>
+                  <!-- use the window renderer from the emptyRenderer renderSet -->
+                  <property>
+                     <name>theme.windowRendererId</name>
+                     <value>emptyRenderer</value>
+                  </property>
+                  <!-- use the decoration renderer from the emptyRenderer renderSet -->
+                  <property>
+                     <name>theme.decorationRendererId</name>
+                     <value>emptyRenderer</value>
+                  </property>
+                  <!-- use the portlet renderer from the emptyRenderer renderSet -->
+                  <property>
+                     <name>theme.portletRendererId</name>
+                     <value>emptyRenderer</value>
+                  </property>
+               </properties>
+            </window>
+            <window>
+               <window-name>UserPortletWindow</window-name>
+               <instance-ref>UserPortletInstance</instance-ref>
+               <region>left</region>
+               <height>1</height>
+            </window>
+         </page>
       </portal>
    </deployment>
-
    <deployment>
       <parent-ref/>
       <if-exists>keep</if-exists>
@@ -297,7 +405,7 @@
                <role-name>Admin</role-name>
                <action-name>viewrecursive</action-name>
             </policy-permission>
-         </security-constraint>
+         </security-constraint>         
       </portal>
-   </deployment>
+   </deployment>   
 </deployments>

Modified: labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/conf/hibernate/instance/domain.hbm.xml
===================================================================
--- labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/conf/hibernate/instance/domain.hbm.xml	2007-01-11 22:09:16 UTC (rev 8831)
+++ labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/conf/hibernate/instance/domain.hbm.xml	2007-01-11 22:10:56 UTC (rev 8832)
@@ -38,12 +38,14 @@
             <param name="sequence">instance_seq</param>
          </generator>
       </id>
+      <natural-id>
+         <property
+            name="instanceId"
+            column="ID"
+            not-null="true"
+            unique="true"/>
+      </natural-id>
       <property
-         name="instanceId"
-         column="ID"
-         not-null="true"
-         unique="true"/>
-      <property
          name="portletRef"
          column="PORTLET_REF"
          not-null="false"

Modified: labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/conf/hibernate/portal/domain.hbm.xml
===================================================================
--- labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/conf/hibernate/portal/domain.hbm.xml	2007-01-11 22:09:16 UTC (rev 8831)
+++ labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/conf/hibernate/portal/domain.hbm.xml	2007-01-11 22:10:56 UTC (rev 8832)
@@ -38,13 +38,15 @@
             <param name="sequence">portal_seq</param>
          </generator>
       </id>
+      <natural-id>
+         <property
+            name="path"
+            column="PATH"
+            type="org.jboss.portal.jems.hibernate.MagicString"
+            not-null="false"
+            unique="true"/>
+      </natural-id>
       <property
-         name="path"
-         column="PATH"
-         type="org.jboss.portal.jems.hibernate.MagicString"
-         not-null="false"
-         unique="true"/>
-      <property
          name="name"
          column="NAME"
          not-null="false"/>

Modified: labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/conf/hibernate/portlet/domain.hbm.xml
===================================================================
--- labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/conf/hibernate/portlet/domain.hbm.xml	2007-01-11 22:09:16 UTC (rev 8831)
+++ labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/conf/hibernate/portlet/domain.hbm.xml	2007-01-11 22:10:56 UTC (rev 8832)
@@ -27,7 +27,7 @@
    "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
  <hibernate-mapping>
    <class
-      name="org.jboss.portal.core.impl.portlet.state.PersistentState"
+      name="org.jboss.portal.core.impl.portlet.state.PersistentPortletState"
       table="JBP_PORTLET_STATE">
       <cache usage="read-write"/>
       <id
@@ -69,7 +69,7 @@
          <index
             column="NAME"
             type="java.lang.String"/>
-         <one-to-many class="org.jboss.portal.core.impl.portlet.state.PersistentStateEntry"/>
+         <one-to-many class="org.jboss.portal.core.impl.portlet.state.PersistentPortletStateEntry"/>
       </map>
       <set
          name="children"
@@ -79,18 +79,18 @@
          lazy="extra">
          <cache usage="read-write"/>
          <key column="PARENT_PK"/>
-         <one-to-many class="org.jboss.portal.core.impl.portlet.state.PersistentState"/>
+         <one-to-many class="org.jboss.portal.core.impl.portlet.state.PersistentPortletState"/>
       </set>
       <many-to-one
          name="parent"
          column="PARENT_PK"
-         class="org.jboss.portal.core.impl.portlet.state.PersistentState"
+         class="org.jboss.portal.core.impl.portlet.state.PersistentPortletState"
          cascade="none"
          fetch="select"/>
    </class>
 
    <class
-      name="org.jboss.portal.core.impl.portlet.state.PersistentStateEntry"
+      name="org.jboss.portal.core.impl.portlet.state.PersistentPortletStateEntry"
       table="JBP_PORTLET_STATE_ENTRY">
       <cache usage="read-write"/>
       <id
@@ -135,4 +135,122 @@
          not-null="true"
          unique="false"/>
    </class>
+
+   <class
+      name="org.jboss.portal.core.impl.portlet.state.PersistentConsumerGroup"
+      table="JBP_PORTLET_GROUP">
+      <cache usage="read-write"/>
+      <id
+         name="key"
+         column="PK"
+         type="java.lang.Long">
+         <generator class="native">
+            <param name="sequence">portlet_seq</param>
+         </generator>
+      </id>
+      <property
+         name="persistentName"
+         column="ID"
+         type="java.lang.String"
+         not-null="true"
+         unique="true"/>
+      <property
+         name="persistentStatus"
+         column="STATUS"
+         type="org.jboss.portal.core.impl.portlet.state.RegistrationStatusUserType"/>
+      <map
+         name="relatedConsumers"
+         inverse="true">
+         <cache usage="read-write"/>
+         <key column="GROUP_PK"/>
+         <map-key
+            type="string"
+            column="ID"/>
+         <one-to-many class="org.jboss.portal.core.impl.portlet.state.PersistentConsumer"/>
+      </map>
+   </class>
+   <class
+      name="org.jboss.portal.core.impl.portlet.state.PersistentConsumer"
+      table="JBP_PORTLET_CONSUMER">
+      <cache usage="read-write"/>
+      <id
+         name="key"
+         column="PK"
+         type="java.lang.Long">
+         <generator class="native">
+            <param name="sequence">portlet_seq</param>
+         </generator>
+      </id>
+      <property
+         name="persistentId"
+         column="ID"
+         type="java.lang.String"
+         not-null="true"
+         unique="true"/>
+      <property
+         name="persistentName"
+         column="NAME"
+         type="java.lang.String"/>
+      <property
+         name="persistentAgent"
+         column="AGENT"
+         type="java.lang.String"/>
+      <property
+         name="persistentStatus"
+         column="STATUS"
+         type="org.jboss.portal.core.impl.portlet.state.RegistrationStatusUserType"/>
+      <many-to-one
+         name="relatedGroup"
+         column="GROUP_PK"
+         class="org.jboss.portal.core.impl.portlet.state.PersistentConsumerGroup"/>
+      <set
+         name="relatedRegistrations"
+         inverse="true">
+         <cache usage="read-write"/>
+         <key column="CONSUMER_PK"/>
+         <one-to-many class="org.jboss.portal.core.impl.portlet.state.PersistentRegistration"/>
+      </set>
+   </class>
+   <class
+      name="org.jboss.portal.core.impl.portlet.state.PersistentRegistration"
+      table="JBP_PORTLET_REGISTRATION">
+      <cache usage="read-write"/>
+      <id
+         name="key"
+         column="PK"
+         type="java.lang.Long">
+         <generator class="native">
+            <param name="sequence">portlet_seq</param>
+         </generator>
+      </id>
+      <map
+         name="persistentProperties"
+         sort="unsorted"
+         inverse="false"
+         cascade="all-delete-orphan"
+         fetch="join">
+         <cache usage="read-write"/>
+         <key column="REGISTRATION_PK"/>
+         <map-key
+            type="org.jboss.portal.jems.hibernate.QNameUserType"
+            column="QNAME"/>
+         <element
+            type="string"
+            column="VALUE"/>
+      </map>
+      <property
+         name="persistentHandle"
+         column="HANDLE"
+         type="java.lang.String"/>
+      <property
+         name="persistentStatus"
+         column="STATUS"
+         type="org.jboss.portal.core.impl.portlet.state.RegistrationStatusUserType"/>
+      <many-to-one
+         name="relatedConsumer"
+         column="CONSUMER_PK"
+         class="org.jboss.portal.core.impl.portlet.state.PersistentConsumer"
+         not-null="true"
+         update="false"/>
+   </class>
 </hibernate-mapping>

Modified: labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/conf/hibernate/user/domain.hbm.xml
===================================================================
--- labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/conf/hibernate/user/domain.hbm.xml	2007-01-11 22:09:16 UTC (rev 8831)
+++ labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/conf/hibernate/user/domain.hbm.xml	2007-01-11 22:10:56 UTC (rev 8832)
@@ -27,7 +27,7 @@
    "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
 <hibernate-mapping>
    <class
-      name="org.jboss.portal.identity.db.UserImpl"
+      name="org.jboss.portal.identity.db.HibernateUserImpl"
       table="jbp_users">
       <cache usage="read-write"/>
        <id
@@ -128,13 +128,13 @@
           <cache usage="read-write"/>
           <key column="jbp_uid"/>
           <many-to-many
-             class="org.jboss.portal.identity.db.RoleImpl"
+             class="org.jboss.portal.identity.db.HibernateRoleImpl"
              column="jbp_rid"
              outer-join="true"/>
        </set>
    </class>
    <class
-      name="org.jboss.portal.identity.db.RoleImpl"
+      name="org.jboss.portal.identity.db.HibernateRoleImpl"
       table="jbp_roles">
       <cache usage="read-write"/>
       <id
@@ -169,7 +169,7 @@
          <cache usage="read-write"/>
          <key column="jbp_rid"/>
          <many-to-many
-            class="org.jboss.portal.identity.db.UserImpl"
+            class="org.jboss.portal.identity.db.HibernateUserImpl"
             column="jbp_uid"
             outer-join="false"/>
       </set>

Modified: labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/conf/hibernate/user/setup.txt
===================================================================
--- labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/conf/hibernate/user/setup.txt	2007-01-11 22:09:16 UTC (rev 8831)
+++ labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/conf/hibernate/user/setup.txt	2007-01-11 22:10:56 UTC (rev 8832)
@@ -1,8 +1,8 @@
 // This bsh script setup the default content of the portal.
 // It is called when the SessionFactoryBinder service has created a schema and needs to populate it
 import org.jboss.portal.common.util.Tools;
-import org.jboss.portal.identity.db.UserImpl;
-import org.jboss.portal.identity.db.RoleImpl;
+import org.jboss.portal.identity.db.HibernateUserImpl;
+import org.jboss.portal.identity.db.HibernateRoleImpl;
 
 try
 {
@@ -10,11 +10,11 @@
    tx = session.beginTransaction();
 
    //
-   RoleImpl adminRole = new RoleImpl("Admin", "Administrators");
-   RoleImpl userRole = new RoleImpl("User", "Users");
+   HibernateRoleImpl adminRole = new HibernateRoleImpl("Admin", "Administrators");
+   HibernateRoleImpl userRole = new HibernateRoleImpl("User", "Users");
 
    //
-   UserImpl admin = new UserImpl("admin");
+   HibernateUserImpl admin = new HibernateUserImpl("admin");
    admin.setPassword(Tools.md5AsHexString("admin"));
    admin.setRealEmail("admin at portal.com");
    admin.setViewRealEmail(true);
@@ -25,7 +25,7 @@
    adminRole.getUsers().add(admin);
 
    //
-   UserImpl user = new UserImpl("user");
+   HibernateUserImpl user = new HibernateUserImpl("user");
    user.setPassword(Tools.md5AsHexString("user"));
    user.setRealEmail("user at portal.com");
    user.setViewRealEmail(true);

Added: labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/conf/identity/identity-config.xml
===================================================================
--- labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/conf/identity/identity-config.xml	2007-01-11 22:09:16 UTC (rev 8831)
+++ labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/conf/identity/identity-config.xml	2007-01-11 22:10:56 UTC (rev 8832)
@@ -0,0 +1,63 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+  ~ JBoss, a division of Red Hat                                              ~
+  ~ Copyright 2006, Red Hat Middleware, LLC, and individual                   ~
+  ~ contributors as indicated by the @authors tag. See the                    ~
+  ~ copyright.txt in the distribution for a full listing of                   ~
+  ~ individual contributors.                                                  ~
+  ~                                                                           ~
+  ~ This 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 software 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 software; if not, write to the Free               ~
+  ~ Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA        ~
+  ~ 02110-1301 USA, or see the FSF site: http://www.fsf.org.                  ~
+  ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~-->
+
+   <!--<!DOCTYPE identity-configuration PUBLIC
+   "-//JBoss Portal//DTD JBoss Identity Configuration 1.0//EN"
+   "http://www.jboss.org/portal/dtd/identity-config_1_0.dtd">-->
+
+<identity-configuration>
+   <datasources/>
+   <modules>
+      <module>
+         <!--type used to correctly map in IdentityContext registry-->
+         <type>User</type>
+         <implementation>DB</implementation>
+         <config/>
+      </module>
+      <module>
+         <!--type used to correctly map in IdentityContext registry-->
+         <type>Role</type>
+         <implementation>DB</implementation>
+         <config/>
+      </module>
+      <module>
+         <!--type used to correctly map in IdentityContext registry-->
+         <type>Membership</type>
+         <implementation>DB</implementation>
+         <config/>
+      </module>
+      <module>
+         <!--type used to correctly map in IdentityContext registry-->
+         <type>UserProfile</type>
+         <implementation>DELEGATING</implementation>
+         <config/>
+      </module>
+      <module>
+         <type>DBDelegateUserProfile</type>
+         <implementation>DB</implementation>
+         <config/>
+      </module>
+   </modules>
+   <options/>
+</identity-configuration>
\ No newline at end of file

Added: labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/conf/identity/ldap_identity-config.xml
===================================================================
--- labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/conf/identity/ldap_identity-config.xml	2007-01-11 22:09:16 UTC (rev 8831)
+++ labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/conf/identity/ldap_identity-config.xml	2007-01-11 22:10:56 UTC (rev 8832)
@@ -0,0 +1,129 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+  ~ JBoss, a division of Red Hat                                              ~
+  ~ Copyright 2006, Red Hat Middleware, LLC, and individual                   ~
+  ~ contributors as indicated by the @authors tag. See the                    ~
+  ~ copyright.txt in the distribution for a full listing of                   ~
+  ~ individual contributors.                                                  ~
+  ~                                                                           ~
+  ~ This 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 software 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 software; if not, write to the Free               ~
+  ~ Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA        ~
+  ~ 02110-1301 USA, or see the FSF site: http://www.fsf.org.                  ~
+  ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~-->
+
+   <!--<!DOCTYPE identity-configuration PUBLIC
+   "-//JBoss Portal//DTD JBoss Identity Configuration 1.0//EN"
+   "http://www.jboss.org/portal/dtd/identity-config_1_0.dtd">-->
+
+<identity-configuration>
+   <datasources>
+      <datasource>
+         <name>LDAP</name>
+         <config>
+            <option>
+               <name>host</name>
+               <value>jboss.com</value>
+            </option>
+            <option>
+               <name>port</name>
+               <value>10389</value>
+            </option>
+            <option>
+               <name>adminDN</name>
+               <value>cn=Directory Manager</value>
+            </option>
+            <option>
+               <name>adminPassword</name>
+               <value>qpq123qpq</value>
+            </option>
+         </config>
+      </datasource>
+   </datasources>
+   <modules>
+      <module>
+         <!--type used to correctly map in IdentityContext registry-->
+         <type>User</type>
+         <implementation>LDAP</implementation>
+         <config/>
+      </module>
+      <module>
+         <type>Role</type>
+         <implementation>LDAP</implementation>
+         <config/>
+      </module>
+      <module>
+         <type>Membership</type>
+         <implementation>LDAP</implementation>
+         <config/>
+      </module>
+      <module>
+         <type>UserProfile</type>
+         <implementation>DELEGATING</implementation>
+         <config>
+            <option>
+               <name>ldapModuleJNDIName</name>
+               <value>java:/portal/LDAPUserProfileModule</value>
+            </option>
+         </config>
+      </module>
+      <module>
+         <type>DBDelegateUserProfile</type>
+         <implementation>DB</implementation>
+         <config>
+            <option>
+               <name>randomSynchronizePassword</name>
+               <value>true</value>
+            </option>
+         </config>
+      </module>
+      <module>
+         <type>LDAPDelegateUserProfile</type>
+         <implementation>LDAP</implementation>
+         <config/>
+      </module>
+   </modules>
+
+   <options>
+      <option-group>
+         <group-name>common</group-name>
+         <option>
+            <name>userContainerDN</name>
+            <value>ou=People,dc=portal26,dc=jboss,dc=com</value>
+         </option>
+         <option>
+            <name>roleContainerDN</name>
+            <value>ou=Roles,dc=portal26,dc=jboss,dc=com</value>
+         </option>
+      </option-group>
+      <option-group>
+         <group-name>userCreateAttibutes</group-name>
+         <option>
+            <name>objectClass</name>
+            <!--This objectclasses should work with Red Hat Directory-->
+            <value>top</value>
+            <value>person</value>
+            <value>inetOrgPerson</value>
+         </option>
+         <!--Schema requires those to have initial value-->
+         <option>
+            <name>cn</name>
+            <value>none</value>
+         </option>
+         <option>
+            <name>sn</name>
+            <value>none</value>
+         </option>
+      </option-group>
+   </options>
+</identity-configuration>
\ No newline at end of file

Added: labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/conf/identity/profile-config.xml
===================================================================
--- labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/conf/identity/profile-config.xml	2007-01-11 22:09:16 UTC (rev 8831)
+++ labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/conf/identity/profile-config.xml	2007-01-11 22:10:56 UTC (rev 8832)
@@ -0,0 +1,398 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+  ~ JBoss, a division of Red Hat                                              ~
+  ~ Copyright 2006, Red Hat Middleware, LLC, and individual                   ~
+  ~ contributors as indicated by the @authors tag. See the                    ~
+  ~ copyright.txt in the distribution for a full listing of                   ~
+  ~ individual contributors.                                                  ~
+  ~                                                                           ~
+  ~ This 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 software 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 software; if not, write to the Free               ~
+  ~ Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA        ~
+  ~ 02110-1301 USA, or see the FSF site: http://www.fsf.org.                  ~
+  ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~-->
+
+   <!--<!DOCTYPE profile PUBLIC
+   "-//JBoss Portal//DTD JBoss User Profile Configuration 1.0//EN"
+   "http://www.jboss.org/portal/dtd/profile-config_1_0.dtd">-->
+
+<profile>
+   <!--Database mapping - jbp_user table column mapping-->
+   <property>
+      <name>user.name.nickName</name>
+      <type>java.lang.String</type>
+      <access-mode>read-only</access-mode>
+      <usage>mandatory</usage>
+      <display-name xml:lang="en">Name</display-name>
+      <description xml:lang="en">The user name</description>
+      <mapping>
+         <database>
+            <type>column</type>
+            <value>jbp_uname</value>
+         </database>
+      </mapping>
+   </property>
+   <property>
+      <name>user.name.given</name>
+      <type>java.lang.String</type>
+      <access-mode>read-write</access-mode>
+      <usage>mandatory</usage>
+      <display-name xml:lang="en">Given Name</display-name>
+      <description xml:lang="en">The user given name</description>
+      <mapping>
+         <database>
+            <type>column</type>
+            <value>jbp_givenname</value>
+         </database>
+      </mapping>
+   </property>
+   <property>
+      <name>user.name.family</name>
+      <type>java.lang.String</type>
+      <access-mode>read-write</access-mode>
+      <usage>mandatory</usage>
+      <display-name xml:lang="en">Family name</display-name>
+      <description xml:lang="en">The user family name</description>
+      <mapping>
+         <database>
+            <type>column</type>
+            <value>jbp_familyname</value>
+         </database>
+      </mapping>
+   </property>
+   <property>
+      <name>user.business-info.online.email</name>
+      <type>java.lang.String</type>
+      <access-mode>read-write</access-mode>
+      <usage>mandatory</usage>
+      <display-name xml:lang="en">Email</display-name>
+      <description xml:lang="en">The user real email</description>
+      <mapping>
+         <database>
+            <type>column</type>
+            <value>jbp_realemail</value>
+         </database>
+         <ldap>
+            <value>mail</value>
+         </ldap>
+      </mapping>
+   </property>
+   <property>
+      <name>portal.user.email.fake</name>
+      <type>java.lang.String</type>
+      <access-mode>read-write</access-mode>
+      <usage>mandatory</usage>
+      <display-name xml:lang="en">Fake email</display-name>
+      <description xml:lang="en">The user fake email</description>
+      <mapping>
+         <database>
+            <type>column</type>
+            <value>jbp_fakeemail</value>
+         </database>
+      </mapping>
+   </property>
+   <property>
+      <name>portal.user.registration-date</name>
+      <type>java.lang.String</type>
+      <access-mode>read-write</access-mode>
+      <usage>mandatory</usage>
+      <display-name xml:lang="en">Registration date</display-name>
+      <description xml:lang="en">Registration date of user</description>
+      <mapping>
+         <database>
+            <type>column</type>
+            <value>jbp_regdate</value>
+         </database>
+      </mapping>
+   </property>
+   <property>
+      <name>portal.user.email.view-real</name>
+      <type>java.lang.String</type>
+      <access-mode>read-write</access-mode>
+      <usage>mandatory</usage>
+      <display-name xml:lang="en">View real email</display-name>
+      <description xml:lang="en">Is user real email displayed in public</description>
+      <mapping>
+         <database>
+            <type>column</type>
+            <value>jbp_viewrealemail</value>
+         </database>
+      </mapping>
+   </property>
+   <property>
+      <name>portal.user.enabled</name>
+      <type>java.lang.String</type>
+      <access-mode>read-write</access-mode>
+      <usage>mandatory</usage>
+      <display-name xml:lang="en">Enabled</display-name>
+      <description xml:lang="en">User enabled state</description>
+      <mapping>
+         <database>
+            <type>column</type>
+            <value>jbp_enabled</value>
+         </database>
+      </mapping>
+   </property>
+
+   <!--Dynamic database store-->
+   <property>
+      <name>portal.user.location</name>
+      <type>java.lang.String</type>
+      <access-mode>read-write</access-mode>
+      <usage>optional</usage>
+      <display-name xml:lang="en">Location</display-name>
+      <description xml:lang="en">The user location</description>
+      <mapping>
+         <database>
+            <type>dynamic</type>
+            <value>portal.user.location</value>
+         </database>
+      </mapping>
+   </property>
+   <property>
+      <name>portal.user.occupation</name>
+      <type>java.lang.String</type>
+      <access-mode>read-write</access-mode>
+      <usage>optional</usage>
+      <display-name xml:lang="en">Occupation</display-name>
+      <description xml:lang="en">The user occupation</description>
+      <mapping>
+         <database>
+            <type>dynamic</type>
+            <value>portal.user.occupation</value>
+         </database>
+         <ldap>
+            <value>title</value>
+         </ldap>
+      </mapping>
+   </property>
+   <property>
+      <name>portal.user.extra</name>
+      <type>java.lang.String</type>
+      <access-mode>read-write</access-mode>
+      <usage>optional</usage>
+      <display-name xml:lang="en">Extra info</display-name>
+      <description xml:lang="en">Extra informtion about user</description>
+      <mapping>
+         <database>
+            <type>dynamic</type>
+            <value>portal.user.extra</value>
+         </database>
+      </mapping>
+   </property>
+   <property>
+      <name>portal.user.signature</name>
+      <type>java.lang.String</type>
+      <access-mode>read-write</access-mode>
+      <usage>optional</usage>
+      <display-name xml:lang="en">Signature</display-name>
+      <description xml:lang="en">The user signature</description>
+      <mapping>
+         <database>
+            <type>dynamic</type>
+            <value>portal.user.signature</value>
+         </database>
+         <!--<ldap>
+            <value>personalSignature</value>
+         </ldap>-->
+      </mapping>
+   </property>
+   <property>
+      <name>portal.user.interests</name>
+      <type>java.lang.String</type>
+      <access-mode>read-write</access-mode>
+      <usage>optional</usage>
+      <display-name xml:lang="en">Interests</display-name>
+      <description xml:lang="en">The user interests</description>
+      <mapping>
+         <database>
+            <type>dynamic</type>
+            <value>portal.user.interests</value>
+         </database>
+      </mapping>
+   </property>
+   <property>
+      <name>portal.user.locale</name>
+      <type>java.lang.String</type>
+      <access-mode>read-write</access-mode>
+      <usage>optional</usage>
+      <display-name xml:lang="en">Locale</display-name>
+      <description xml:lang="en">The user locale</description>
+      <mapping>
+         <database>
+            <type>dynamic</type>
+            <value>portal.user.locale</value>
+         </database>
+         <!--<ldap>-->
+            <!--<value>localityName</value>-->
+         <!--</ldap>-->
+      </mapping>
+   </property>
+   <property>
+      <name>portal.user.im.icq</name>
+      <type>java.lang.String</type>
+      <access-mode>read-write</access-mode>
+      <usage>optional</usage>
+      <display-name xml:lang="en">ICQ</display-name>
+      <description xml:lang="en">The user ICQ id</description>
+      <mapping>
+         <database>
+            <type>dynamic</type>
+            <value>portal.user.im.icq</value>
+         </database>
+      </mapping>
+   </property>
+   <property>
+      <name>portal.user.im.aim</name>
+      <type>java.lang.String</type>
+      <access-mode>read-write</access-mode>
+      <usage>optional</usage>
+      <display-name xml:lang="en">AIM</display-name>
+      <description xml:lang="en">The user AIM id</description>
+      <mapping>
+         <database>
+            <type>dynamic</type>
+            <value>portal.user.im.aim</value>
+         </database>
+      </mapping>
+   </property>
+   <property>
+      <name>portal.user.im.msnm</name>
+      <type>java.lang.String</type>
+      <access-mode>read-write</access-mode>
+      <usage>optional</usage>
+      <display-name xml:lang="en">MSN</display-name>
+      <description xml:lang="en">The user MSN id</description>
+      <mapping>
+         <database>
+            <type>dynamic</type>
+            <value>portal.user.im.msnm</value>
+         </database>
+      </mapping>
+   </property>
+   <property>
+      <name>portal.user.im.yim</name>
+      <type>java.lang.String</type>
+      <access-mode>read-write</access-mode>
+      <usage>optional</usage>
+      <display-name xml:lang="en">YIM</display-name>
+      <description xml:lang="en">The user YIM id</description>
+      <mapping>
+         <database>
+            <type>dynamic</type>
+            <value>portal.user.im.yim</value>
+         </database>
+      </mapping>
+   </property>
+   <property>
+      <name>portal.user.im.skype</name>
+      <type>java.lang.String</type>
+      <access-mode>read-write</access-mode>
+      <usage>optional</usage>
+      <display-name xml:lang="en">Skype</display-name>
+      <description xml:lang="en">The user skype id</description>
+      <mapping>
+         <database>
+            <type>dynamic</type>
+            <value>portal.user.im.skype</value>
+         </database>
+      </mapping>
+   </property>
+   <property>
+      <name>portal.user.homepage</name>
+      <type>java.lang.String</type>
+      <access-mode>read-write</access-mode>
+      <usage>optional</usage>
+      <display-name xml:lang="en">Homepage</display-name>
+      <description xml:lang="en">The user homepage</description>
+      <mapping>
+         <database>
+            <type>dynamic</type>
+            <value>portal.user.homepage</value>
+         </database>
+         <ldap>
+            <value>seeAlso</value>
+         </ldap>
+      </mapping>
+   </property>
+   <property>
+      <name>portal.user.time-zone-offset</name>
+      <type>java.lang.String</type>
+      <access-mode>read-write</access-mode>
+      <usage>optional</usage>
+      <display-name xml:lang="en">Timezone</display-name>
+      <description xml:lang="en">Timezone in users location</description>
+      <mapping>
+         <database>
+            <type>dynamic</type>
+            <value>portal.user.time-zone-offset</value>
+         </database>
+      </mapping>
+   </property>
+   <property>
+      <name>portal.user.theme</name>
+      <type>java.lang.String</type>
+      <access-mode>read-write</access-mode>
+      <usage>optional</usage>
+      <display-name xml:lang="en">Theme</display-name>
+      <description xml:lang="en">Portlat theme that user is using</description>
+      <mapping>
+         <database>
+            <type>dynamic</type>
+            <value>portal.user.theme</value>
+         </database>
+      </mapping>
+   </property>
+   <property>
+      <name>portal.user.security.question</name>
+      <type>java.lang.String</type>
+      <access-mode>read-write</access-mode>
+      <usage>optional</usage>
+      <display-name xml:lang="en">Password Question</display-name>
+      <description xml:lang="en">Portal password recovery question</description>
+      <mapping>
+         <database>
+            <type>dynamic</type>
+            <value>portal.user.security.question</value>
+         </database>
+      </mapping>
+   </property>
+   <property>
+      <name>portal.user.security.answer</name>
+      <type>java.lang.String</type>
+      <access-mode>read-write</access-mode>
+      <usage>optional</usage>
+      <display-name xml:lang="en">Password Answer</display-name>
+      <description xml:lang="en">Portal password recovery answer</description>
+      <mapping>
+         <database>
+            <type>dynamic</type>
+            <value>portal.user.security.answer</value>
+         </database>
+      </mapping>
+   </property>
+   <property>
+      <name>portal.user.last-login-date</name>
+      <type>java.lang.String</type>
+      <access-mode>read-write</access-mode>
+      <usage>optional</usage>
+      <display-name xml:lang="en">Last login</display-name>
+      <description xml:lang="en">The date of users last login</description>
+      <mapping>
+         <database>
+            <type>dynamic</type>
+            <value>portal.user.last-login-date</value>
+         </database>
+      </mapping>
+   </property>
+</profile>
\ No newline at end of file

Added: labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/conf/identity/standardidentity-config.xml
===================================================================
--- labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/conf/identity/standardidentity-config.xml	2007-01-11 22:09:16 UTC (rev 8831)
+++ labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/conf/identity/standardidentity-config.xml	2007-01-11 22:10:56 UTC (rev 8832)
@@ -0,0 +1,403 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+  ~ JBoss, a division of Red Hat                                              ~
+  ~ Copyright 2006, Red Hat Middleware, LLC, and individual                   ~
+  ~ contributors as indicated by the @authors tag. See the                    ~
+  ~ copyright.txt in the distribution for a full listing of                   ~
+  ~ individual contributors.                                                  ~
+  ~                                                                           ~
+  ~ This 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 software 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 software; if not, write to the Free               ~
+  ~ Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA        ~
+  ~ 02110-1301 USA, or see the FSF site: http://www.fsf.org.                  ~
+  ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~-->
+
+
+<!--
+<!DOCTYPE identity-configuration PUBLIC
+   "-//JBoss Portal//DTD JBoss Identity Configuration 1.0//EN" 
+   "http://www.jboss.org/portal/dtd/identity-config_1_0.dtd">
+-->
+
+<identity-configuration>
+   <datasources>
+      <datasource>
+         <name>LDAP</name>
+         <!--name of service and class for creating mbean-->
+         <service-name>portal:service=Module,type=LDAPConnectionContext</service-name>
+         <class>org.jboss.portal.identity.ldap.LDAPConnectionContext</class>
+         <config>
+            <option>
+               <name>host</name>
+               <value>jboss.com</value>
+            </option>
+            <option>
+               <name>port</name>
+               <value>389</value>
+            </option>
+            <option>
+               <name>contextFactory</name>
+               <value>com.sun.jndi.ldap.LdapCtxFactory</value>
+            </option>
+            <option>
+               <name>adminDN</name>
+               <value>cn=Directory Manager</value>
+            </option>
+            <option>
+               <name>adminPassword</name>
+               <value>password</value>
+            </option>
+            <option>
+               <name>jndiName</name>
+               <value>java:/portal/LDAPConnectionContext</value>
+            </option>
+         </config>
+      </datasource>
+      <!--<datasource>
+         <name>DB</name>
+         <service-name>portal:service=Hibernate</service-name>
+         <class>org.jboss.portal.identity2.experimental.db.IdentitySessionFactoryBinder</class>
+         <config>
+            <option>
+               <name>doChecking</name>
+               <value>true</value>
+            </option>
+            <option>
+               <name>configLocation</name>
+               <value>hibernate-single.cfg.xml</value>
+            </option>
+            --><!--<option>
+               <name>setupLocation</name>
+               <value>conf/hibernate/user/setup.txt</value>
+            </option>--><!--
+            <option>
+               <name>jNDIName</name>
+               <value>java:/portal/UserSessionFactory</value>
+            </option>
+            <option>
+               <name>profileConfigFile</name>
+               <value>profile-config.xml</value>
+            </option>
+            <option>
+               <name>mappingTemplateFile</name>
+               <value>domain-template.hbm.xml</value>
+            </option>
+            <option>
+               <name>mappingOutputFile</name>
+               <value>domain-identity.hbm.xml</value>
+            </option>
+            <option>
+               <name>mappingPattern</name>
+               <value><![CDATA[<property name="@name@" column="@column@" type="java.lang.String" update="true" insert="true" unique="false"/>]]></value>
+            </option>
+         </config>
+      </datasource>-->
+   </datasources>
+   <modules>
+
+      <module>
+         <!--type used to correctly map in IdentityContext registry-->
+         <type>UserProfile</type>
+         <implementation>DELEGATING</implementation>
+
+         <!--name of service and class for creating mbean-->
+         <service-name>portal:service=Module,type=UserProfile</service-name>
+         <class>org.jboss.portal.identity.DelegatingUserProfileModuleImpl</class>
+         <!--set of options that are passed to a class constructor-->
+         <config>
+            <option>
+               <name>jndiName</name>
+               <value>java:/portal/UserProfileModule</value>
+            </option>
+            <option>
+               <name>dbModuleJNDIName</name>
+               <value>java:/portal/DBUserProfileModule</value>
+            </option>
+            <option>
+               <name>profileConfigFile</name>
+               <value>conf/identity/profile-config.xml</value>
+            </option>
+         </config>
+      </module>
+
+
+
+      <module>
+         <!--type used to correctly map in IdentityContext registry-->
+         <type>User</type>
+         <implementation>DB</implementation>
+
+         <!--name of service and class for creating mbean-->
+         <service-name>portal:service=Module,type=User</service-name>
+         <class>org.jboss.portal.identity.db.HibernateUserModuleImpl</class>
+
+         <!--set of options that are passed to a class constructor-->
+         <config>
+            <option>
+               <name>sessionFactoryJNDIName</name>
+               <value>java:/portal/IdentitySessionFactory</value>
+            </option>
+            <option>
+               <name>jndiName</name>
+               <value>java:/portal/UserModule</value>
+            </option>
+         </config>
+      </module>
+
+      <module>
+         <!--type used to correctly map in IdentityContext registry-->
+         <type>Role</type>
+         <implementation>DB</implementation>
+
+         <!--name of service and class for creating mbean-->
+         <service-name>portal:service=Module,type=Role</service-name>
+         <class>org.jboss.portal.identity.db.HibernateRoleModuleImpl</class>
+
+         <!--set of options that are passed to a class constructor-->
+         <config>
+            <option>
+               <name>sessionFactoryJNDIName</name>
+               <value>java:/portal/IdentitySessionFactory</value>
+            </option>
+            <option>
+               <name>jndiName</name>
+               <value>java:/portal/RoleModule</value>
+            </option>
+         </config>
+      </module>
+
+      <module>
+         <!--type used to correctly map in IdentityContext registry-->
+         <type>Membership</type>
+         <implementation>DB</implementation>
+
+         <!--name of service and class for creating mbean-->
+         <service-name>portal:service=Module,type=Membership</service-name>
+         <class>org.jboss.portal.identity.db.HibernateMembershipModuleImpl</class>
+
+         <!--set of options that are passed to a class constructor-->
+         <config>
+            <option>
+               <name>sessionFactoryJNDIName</name>
+               <value>java:/portal/IdentitySessionFactory</value>
+            </option>
+            <option>
+               <name>jndiName</name>
+               <value>java:/portal/MembershipModule</value>
+            </option>
+         </config>
+      </module>
+
+      <module>
+         <!--type used to correctly map in IdentityContext registry-->
+         <type>DBDelegateUserProfile</type>
+         <implementation>DB</implementation>
+
+         <!--name of service and class for creating mbean-->
+         <service-name>portal:service=Module,type=DBUserProfile</service-name>
+         <class>org.jboss.portal.identity.db.HibernateUserProfileModuleImpl</class>
+
+         <!--set of options that are passed to a class constructor-->
+         <config>
+            <option>
+               <name>sessionFactoryJNDIName</name>
+               <value>java:/portal/IdentitySessionFactory</value>
+            </option>
+            <option>
+               <name>jndiName</name>
+               <value>java:/portal/DBUserProfileModule</value>
+            </option>
+         </config>
+      </module>
+
+      <!--for ldap modules...-->
+      <module>
+         <!--type used to correctly map in IdentityContext registry-->
+         <type>User</type>
+         <implementation>LDAP</implementation>
+
+         <!--name of service and class for creating mbean-->
+         <service-name>portal:service=Module,type=User</service-name>
+         <class>org.jboss.portal.identity.ldap.LDAPUserModuleImpl</class>
+
+         <!--set of options that are passed to a class constructor-->
+         <config>
+            <option>
+               <name>jndiName</name>
+               <value>java:/portal/UserModule</value>
+            </option>
+            <option>
+               <name>connectionJNDIName</name>
+               <value>java:/portal/LDAPConnectionContext</value>
+            </option>
+         </config>    
+      </module>
+
+      <module>
+         <!--type used to correctly map in IdentityContext registry-->
+         <type>Role</type>
+         <implementation>LDAP</implementation>
+
+         <!--name of service and class for creating mbean-->
+         <service-name>portal:service=Module,type=Role</service-name>
+         <class>org.jboss.portal.identity.ldap.LDAPRoleModuleImpl</class>
+
+         <!--set of options that are passed to a class constructor-->
+         <config>
+            <option>
+               <name>jndiName</name>
+               <value>java:/portal/RoleModule</value>
+            </option>
+            <option>
+               <name>connectionJNDIName</name>
+               <value>java:/portal/LDAPConnectionContext</value>
+            </option>
+         </config>
+      </module>
+
+      <module>
+         <!--type used to correctly map in IdentityContext registry-->
+         <type>Membership</type>
+         <implementation>LDAP</implementation>
+
+         <!--name of service and class for creating mbean-->
+         <service-name>portal:service=Module,type=Membership</service-name>
+         <class>org.jboss.portal.identity.ldap.LDAPStaticGroupMembershipModuleImpl</class>
+
+         <!--set of options that are passed to a class constructor-->
+         <config>
+            <option>
+               <name>jndiName</name>
+               <value>java:/portal/MembershipModule</value>
+            </option>
+            <option>
+               <name>connectionJNDIName</name>
+               <value>java:/portal/LDAPConnectionContext</value>
+            </option>
+         </config>
+      </module>
+
+      <module>
+         <!--type used to correctly map in IdentityContext registry-->
+         <type>LDAPDelegateUserProfile</type>
+         <implementation>LDAP</implementation>
+
+         <!--name of service and class for creating mbean-->
+         <service-name>portal:service=Module,type=LDAPUserProfile</service-name>
+         <class>org.jboss.portal.identity.ldap.LDAPUserProfileModuleImpl</class>
+
+         <!--set of options that are passed to a class constructor-->
+         <config>
+            <!--<option>
+               <name>LDAPConnectionJNDIName</name>
+               <value>java:/portal/UserSessionFactory</value>
+            </option>-->
+            <!--Hibernate mappings for db level store (dynamic properties not mapped as ldap attributes)-->
+            <!--<option>
+               <name>SessionFactoryJNDIName</name>
+               <value>java:/portal/PropertyStoreSessionFactory</value>
+            </option>
+            <option>
+               <name>profileMappings</name>
+               <value>ldap-profile.xml</value>
+            </option>-->
+            <option>
+               <name>jndiName</name>
+               <value>java:/portal/LDAPUserProfileModule</value>
+            </option>
+            <option>
+               <name>connectionJNDIName</name>
+               <value>java:/portal/LDAPConnectionContext</value>
+            </option>
+         </config>
+      </module>
+
+   </modules>
+
+   <options>
+      <!--Common options section-->
+      <option-group>
+         <group-name>common</group-name>
+         <option>
+            <name>userContainerDN</name>
+            <value>ou=People,dc=example,dc=com</value>
+         </option>
+         <option>
+            <name>uidAttributeId</name>
+            <value>uid</value>
+         </option>
+         <option>
+            <name>passwordAttributeID</name>
+            <value>userPassword</value>
+         </option>
+         <option>
+            <name>roleContainerDN</name>
+            <value>ou=Roles,dc=example,dc=com</value>
+         </option>
+         <option>
+            <name>ridAttributeId</name>
+            <value>cn</value>
+         </option>
+         <option>
+            <name>roleDisplayNameAttributeID</name>
+            <value>cn</value>
+         </option>
+         <option>
+            <name>membershipAttributeID</name>
+            <value>member</value>
+         </option>
+         <option>
+            <name>membershipAttributeIsDN</name>
+            <value>true</value>
+         </option>
+      </option-group>
+      <option-group>
+         <group-name>userCreateAttibutes</group-name>
+         <option>
+            <name>objectClass</name>
+            <value>top</value>
+            <value>uidObject</value>
+            <value>person</value>
+            <value>inetUser</value>
+         </option>
+         <!--Schema requires those to have initial value-->
+         <option>
+            <name>cn</name>
+            <value>none</value>
+         </option>
+         <option>
+            <name>sn</name>
+            <value>none</value>
+         </option>
+      </option-group>
+      <option-group>
+         <group-name>roleCreateAttibutes</group-name>
+         <option>
+            <name>objectClass</name>
+            <value>top</value>
+            <value>groupOfNames</value>
+         </option>
+         <!--Schema requires those to have initial value-->
+         <option>
+            <name>cn</name>
+            <value>none</value>
+         </option>
+         <!--Some directory servers require this attribute to be valid DN-->
+         <!--For safety reasons point to the admin user here-->
+         <option>
+            <name>member</name>
+            <value>uid=dummynonexistinguser,ou=People,dc=jboss,dc=org</value>
+         </option>
+      </option-group>
+   </options>
+</identity-configuration>
\ No newline at end of file

Modified: labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/conf/login-config.xml
===================================================================
--- labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/conf/login-config.xml	2007-01-11 22:09:16 UTC (rev 8831)
+++ labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/conf/login-config.xml	2007-01-11 22:10:56 UTC (rev 8832)
@@ -35,10 +35,26 @@
    
    <application-policy name="portal">
       <authentication>
+         <!--Uncomment this if you want to fall down to users kept in DB after LDAP authentication fails
+             This may be usefull if you want to use Admin user provided with portal database schema-->
+         <!--Note that this may lead to the security risk - with LDAP  when storing user profile information
+             that are not mapped as attribute you may have LDAP user synchronized into DB with no password set.
+             Please see HibernateUserProfileImpl module options "synchronizeNonExistingUsers", "acceptOtherImplementations"
+             "defaultSynchronizePassword" or "randomSynchronizePassword" to manage this behaviour-->
+         <!--<login-module code = "org.jboss.portal.identity.auth.DBIdentityLoginModule" flag="sufficient">
+            <module-option name="dsJndiName">java:/PortalDS</module-option>
+            <module-option name="principalsQuery">SELECT jbp_password FROM jbp_users WHERE jbp_uname=?</module-option>
+            <module-option name="rolesQuery">SELECT jbp_roles.jbp_name, 'Roles' FROM  jbp_role_membership INNER JOIN jbp_roles ON jbp_role_membership.jbp_rid = jbp_roles.jbp_rid INNER JOIN jbp_users ON jbp_role_membership.jbp_uid = jbp_users.jbp_uid WHERE jbp_users.jbp_uname=?</module-option>
+            <module-option name="hashAlgorithm">MD5</module-option>
+            <module-option name="hashEncoding">HEX</module-option>
+            <module-option name="additionalRole">Authenticated</module-option>
+         </login-module>-->
+
          <login-module code="org.jboss.portal.identity.auth.IdentityLoginModule" flag="required">
             <module-option name="unauthenticatedIdentity">guest</module-option>
             <module-option name="userModuleJNDIName">java:/portal/UserModule</module-option>
             <module-option name="roleModuleJNDIName">java:/portal/RoleModule</module-option>
+            <module-option name="membershipModuleJNDIName">java:/portal/MembershipModule</module-option>
             <module-option name="additionalRole">Authenticated</module-option>
             <module-option name="password-stacking">useFirstPass</module-option>
          </login-module>

Modified: labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/lib/jboss-portlet-api-lib.jar
===================================================================
(Binary files differ)

Modified: labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/lib/portal-api-lib.jar
===================================================================
(Binary files differ)

Modified: labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/lib/portal-bridge-lib.jar
===================================================================
(Binary files differ)

Modified: labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/lib/portal-common-lib.jar
===================================================================
(Binary files differ)

Modified: labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/lib/portal-core-lib.jar
===================================================================
(Binary files differ)

Modified: labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/lib/portal-faces-lib.jar
===================================================================
(Binary files differ)

Modified: labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/lib/portal-federation-lib.jar
===================================================================
(Binary files differ)

Modified: labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/lib/portal-format-lib.jar
===================================================================
(Binary files differ)

Modified: labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/lib/portal-identity-lib.jar
===================================================================
(Binary files differ)

Modified: labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/lib/portal-jems-lib.jar
===================================================================
(Binary files differ)

Modified: labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/lib/portal-portlet-lib.jar
===================================================================
(Binary files differ)

Added: labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/lib/portal-registration-lib.jar
===================================================================
(Binary files differ)


Property changes on: labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/lib/portal-registration-lib.jar
___________________________________________________________________
Name: svn:mime-type
   + application/octet-stream

Modified: labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/lib/portal-samples-lib.jar
===================================================================
(Binary files differ)

Modified: labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/lib/portal-security-lib.jar
===================================================================
(Binary files differ)

Modified: labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/lib/portal-server-lib.jar
===================================================================
(Binary files differ)

Modified: labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/lib/portal-theme-lib.jar
===================================================================
(Binary files differ)

Modified: labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/lib/portlet-api-lib.jar
===================================================================
(Binary files differ)

Modified: labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-aop.xml
===================================================================
--- labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-aop.xml	2007-01-11 22:09:16 UTC (rev 8831)
+++ labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-aop.xml	2007-01-11 22:10:56 UTC (rev 8832)
@@ -43,7 +43,6 @@
       </method>
       <method name="invokeSupports">
          <trans-attribute>supports</trans-attribute>
-         <!--<application-exceptions>,</application-exceptions>-->
       </method>
       <method name="invokeRequired">
          <trans-attribute>Required</trans-attribute>
@@ -81,35 +80,36 @@
    </metadata>
    <metadata
       tag="transaction"
-      class="org.jboss.portal.core.deployment.jboss.ObjectDeploymentFactory">
-      <method name="createContextIfNotExist">
+      class="org.jboss.portal.core.impl.model.portal.PersistentPortalObjectContainer">
+      <method name="createRootIfNotExist">
          <trans-attribute>Required</trans-attribute>
       </method>
    </metadata>
    <metadata
       tag="transaction"
       class="org.jboss.portal.core.deployment.jboss.PortletAppDeployment">
-      <method name="createInstance">
-         <trans-attribute>Required</trans-attribute>
+      <method name="handleInstance">
+         <trans-attribute>RequiresNew</trans-attribute>
       </method>
    </metadata>
    <metadata
       tag="transaction"
       class="org.jboss.portal.core.impl.model.instance.PersistentInstanceContainer">
-      <method name="getInstance">
+      <method name="getDefinition">
          <trans-attribute>Required</trans-attribute>
       </method>
-      <method name="createInstance">
+      <method name="createDefinition">
          <trans-attribute>Required</trans-attribute>
       </method>
-      <method name="destroyInstance">
+      <method name="destroyDefinition">
          <trans-attribute>Required</trans-attribute>
       </method>
-      <method name="getInstances">
+      <method name="getDefinitions">
          <trans-attribute>Required</trans-attribute>
       </method>
       <method name="invoke">
          <trans-attribute>Required</trans-attribute>
+         <application-exceptions>org.jboss.portal.portlet.InvalidPortletIdException</application-exceptions>
       </method>
    </metadata>
    <metadata
@@ -123,6 +123,7 @@
       </method>
       <method name="invoke">
          <trans-attribute>Required</trans-attribute>
+         <application-exceptions>org.jboss.portal.portlet.InvalidPortletIdException</application-exceptions>
       </method>
    </metadata>
 </aop>
\ No newline at end of file

Modified: labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-cms.sar/META-INF/jboss-service.xml
===================================================================
--- labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-cms.sar/META-INF/jboss-service.xml	2007-01-11 22:09:16 UTC (rev 8831)
+++ labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-cms.sar/META-INF/jboss-service.xml	2007-01-11 22:10:56 UTC (rev 8832)
@@ -22,6 +22,19 @@
   ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~-->
 
 <server>
+
+   <!--  Management MBean -->
+   <mbean
+      code="org.jboss.portal.cms.management.CMSImpl"
+      name="portal:service=Management,type=CMS,name=Default"
+      xmbean-dd=""
+      xmbean-code="org.jboss.portal.jems.as.system.JBossServiceModelMBean">
+      <depends
+         optional-attribute-name="CMS"
+         proxy-type="attribute">portal:service=CMS</depends>
+      <xmbean/>
+   </mbean>
+   
 	<mbean
       code="org.jboss.portal.jems.hibernate.SessionFactoryBinder"
       name="portal:service=Hibernate,type=CMS"
@@ -44,15 +57,17 @@
       <depends>jboss.jca:service=DataSourceBinding,name=PortalDS</depends>
       <depends>portal:service=JAASLoginModule</depends>
       <depends>portal:service=Hibernate,type=CMS</depends>
+      <depends optional-attribute-name="IdentityServiceController" proxy-type="attribute">portal:service=Module,type=IdentityServiceController</depends>
+      <!-- Add this to activate publish/approval workflow integration -->
       <!--
-         //this is not needed anymore. this cache is redundant because of JBossCache PM      
-         <depends optional-attribute-name="StackFactory" proxy-type="attribute">portal:service=InterceptorStackFactory,type=Cms</depends>
+      <depends optional-attribute-name="ApprovePublishWorkflow" proxy-type="attribute">portal:service=ApprovePublish,type=Workflow</depends>
       -->
+      <depends optional-attribute-name="StackFactory" proxy-type="attribute">portal:service=InterceptorStackFactory,type=Cms</depends>            
       <attribute name="DoChecking">true</attribute>
       <attribute name="DefaultContentLocation">portal/cms/conf/default-content/default/</attribute>
       <attribute name="DefaultLocale">en</attribute>
       <attribute name="RepositoryName">PortalRepository</attribute>
-      <attribute name="HomeDir">${jboss.server.data.dir}${/}portal${/}cms${/}conf</attribute>
+      <attribute name="HomeDir">${jboss.server.data.dir}${/}portal${/}cms${/}conf</attribute>      
       <attribute name="Config">
          <Repository>
             <!--
@@ -95,7 +110,7 @@
 
                <!--
                    persistence manager of the workspace.
-                   Use XMLPersistenceManager for LocalFileSystem Store and HibernatePersistentManager .
+                   Use XMLPersistenceManager for LocalFileSystem Store and JBossCachePersistenceManager .
                -->
 
                <!-- HibernatePersistentManager: uses RDBMS + Hibernate for storage -->
@@ -142,7 +157,7 @@
 
                <!--
                    Configures the persistence manager to be used for persisting version state.
-                   Use XMLPersistenceManager for LocalFileSystem Store and HibernatePersistentManager for HibernateStore.
+                   Use XMLPersistenceManager for LocalFileSystem Store and JBossCachePersistenceManager for HibernateStore.
                -->
 
                <!-- HibernatePersistentManager: uses RDBMS + Hibernate for storage -->
@@ -157,6 +172,7 @@
             </Versioning>
          </Repository>
       </attribute>
+      <attribute name="JNDIName">java:portal/CMS</attribute>
    </mbean>
 
    <!--
@@ -180,7 +196,7 @@
    <mbean
       code="org.jboss.portal.jems.ha.HASingletonInvoker"
       name="portal:service=HASingletonInvoker,type=CMS">
-      <depends>jboss:service=DefaultPartition</depends>
+      <depends>jboss:service=${jboss.partition.name:DefaultPartition}</depends>
       <attribute name="RetryWaitingTimeMS">2000</attribute>
       <attribute name="MaxRetries">5</attribute>
       <attribute name="JNDIName">MyServiceInvokeTarget</attribute>
@@ -409,6 +425,109 @@
      <attribute name="CacheLoaderAsynchronous">false</attribute-->
     </mbean>
 
+  
+   <!--  interceptor factory where all cms interceptors are registered -->
+   <mbean
+      code="org.jboss.portal.server.impl.invocation.JBossInterceptorStackFactory"
+      name="portal:service=InterceptorStackFactory,type=Cms"
+      xmbean-dd=""
+      xmbean-code="org.jboss.portal.jems.as.system.JBossServiceModelMBean">
+      <xmbean/>
+      <depends-list optional-attribute-name="InterceptorNames">
+         <depends-list-element>portal:service=Interceptor,type=Cms,name=ACL</depends-list-element>
+      </depends-list>
+   </mbean>
+   
+   <!-- ACL Security Interceptor -->
+   <mbean
+      code="org.jboss.portal.cms.impl.interceptors.ACLInterceptor"
+      name="portal:service=Interceptor,type=Cms,name=ACL"
+      xmbean-dd=""
+      xmbean-code="org.jboss.portal.jems.as.system.JBossServiceModelMBean">
+      <xmbean/>
+      <attribute name="JNDIName">java:portal/cms/CMSSessionFactory</attribute>
+      <attribute name="AuthorizationProviderClass">org.jboss.portal.cms.impl.jcr.command.ACLEnforcer</attribute>
+      <attribute name="DefaultPolicy">
+      	<![CDATA[
+      	<policy>
+      			<!-- permissions on the root cms node -->      			
+      			<criteria name="path" value="/">
+      				<permission name="cms" action="read">
+      					<role name="Anonymous"/>
+      				</permission>
+      				<permission name="cms" action="write">
+      					<role name="User"/>
+      				</permission>
+      				<permission name="cms" action="manage">
+      					<role name="Admin"/>
+      				</permission>
+      			</criteria>
+      			<!-- permissions on the default cms node -->      			
+      			<criteria name="path" value="/default">
+      				<permission name="cms" action="read">
+      					<role name="Anonymous"/>
+      				</permission>
+      				<permission name="cms" action="write">
+      					<role name="User"/>
+      				</permission>
+      				<permission name="cms" action="manage">
+      					<role name="Admin"/>
+      				</permission>
+      			</criteria>      			
+      			<!-- permissions on the private/protected node -->
+      			<criteria name="path" value="/default/private">
+      				<permission name="cms" action="manage">
+      					<role name="Admin"/>
+      				</permission>
+      			</criteria>
+      	</policy>
+      	]]>
+      </attribute>
+      <depends>portal:service=Module,type=IdentityServiceController</depends>
+      <!--<depends optional-attribute-name="RoleModule" proxy-type="attribute">
+      	portal:service=Module,type=Role
+      </depends>-->
+   </mbean>
+
+   <!--  logging interceptor -->
+   <!--mbean
+      code="org.jboss.portal.cms.impl.interceptors.LogInterceptor"
+      name="portal:service=Interceptor,type=Cms,name=Log"
+      xmbean-dd=""
+      xmbean-code="org.jboss.portal.jems.as.system.JBossServiceModelMBean">
+      <xmbean/>
+   </mbean-->
+   
+   <!--        
+   <mbean
+      code="org.jboss.portal.cms.impl.interceptors.CacheInterceptor"
+      name="portal:service=Interceptor,type=Cms,name=Cache"
+      xmbean-dd=""
+      xmbean-code="org.jboss.portal.common.system.JBossServiceModelMBean">
+      <xmbean/>
+      <depends>portal:service=CMSTreeCacheService</depends>
+   </mbean>      
+   //this is not needed anymore. this cache is redundant since there is a JBossCache PM      
+   <mbean
+      code="org.jboss.portal.cms.impl.cache.CMSTreeCacheServiceImpl"
+      name="portal:service=CMSTreeCacheService"
+      xmbean-dd=""
+      xmbean-code="org.jboss.portal.common.system.JBossServiceModelMBean">
+      <xmbean/>
+      <depends optional-attribute-name="Cache" proxy-type="attribute">
+         <mbean
+            code="org.jboss.cache.TreeCache"
+            name="portal:service=CMSTreeCache">
+            <depends>jboss:service=Naming</depends>
+            <depends>jboss:service=TransactionManager</depends>
+            <attribute name="TransactionManagerLookupClass">org.jboss.cache.JBossTransactionManagerLookup</attribute>
+            <attribute name="CacheMode">REPL_ASYNC</attribute>
+            <attribute name="IsolationLevel">NONE</attribute>
+         </mbean>
+      </depends> 
+      <attribute name="JNDIName">java:/portal/cms/CMSTreeCache</attribute>
+   </mbean>
+   -->
    <!--
       | Uncomment in clustered mode : TreeCache configuration for the clustered JackRabbit in-memory cache...
       | This helps with node synching, but there are other aspects of JackRabbit like versioning subsystem
@@ -485,55 +604,4 @@
 
                <attribute name="UseRegionBasedMarshalling">false</attribute>
    </mbean-->
-
-
-   <!--mbean
-      code="org.jboss.portal.cms.impl.interceptors.LogInterceptor"
-      name="portal:service=Interceptor,type=Cms,name=Log"
-      xmbean-dd=""
-      xmbean-code="org.jboss.portal.common.system.JBossServiceModelMBean">
-      <xmbean/>
-   </mbean-->
-
-   <!--
-      //this is not needed anymore. this cache is redundant since there is a JBossCache PM      
-   <mbean
-      code="org.jboss.portal.cms.impl.cache.CMSTreeCacheServiceImpl"
-      name="portal:service=CMSTreeCacheService"
-      xmbean-dd=""
-      xmbean-code="org.jboss.portal.common.system.JBossServiceModelMBean">
-      <xmbean/>
-      <depends optional-attribute-name="Cache" proxy-type="attribute">
-         <mbean
-            code="org.jboss.cache.TreeCache"
-            name="portal:service=CMSTreeCache">
-            <depends>jboss:service=Naming</depends>
-            <depends>jboss:service=TransactionManager</depends>
-            <attribute name="TransactionManagerLookupClass">org.jboss.cache.JBossTransactionManagerLookup</attribute>
-            <attribute name="CacheMode">REPL_ASYNC</attribute>
-            <attribute name="IsolationLevel">NONE</attribute>
-         </mbean>
-      </depends> 
-      <attribute name="JNDIName">java:/portal/cms/CMSTreeCache</attribute>
-   </mbean>
-         
-   <mbean
-      code="org.jboss.portal.cms.impl.interceptors.CacheInterceptor"
-      name="portal:service=Interceptor,type=Cms,name=Cache"
-      xmbean-dd=""
-      xmbean-code="org.jboss.portal.common.system.JBossServiceModelMBean">
-      <xmbean/>
-      <depends>portal:service=CMSTreeCacheService</depends>
-   </mbean>
-   <mbean
-      code="org.jboss.portal.server.impl.invocation.JBossInterceptorStackFactory"
-      name="portal:service=InterceptorStackFactory,type=Cms"
-      xmbean-dd=""
-      xmbean-code="org.jboss.portal.common.system.JBossServiceModelMBean">
-      <xmbean/>
-      <depends-list optional-attribute-name="InterceptorNames">
-         <depends-list-element>portal:service=Interceptor,type=Cms,name=Cache</depends-list-element>
-      </depends-list>
-   </mbean>
-   -->
 </server>

Modified: labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-cms.sar/conf/hibernate/cms/domain.hbm.xml
===================================================================
--- labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-cms.sar/conf/hibernate/cms/domain.hbm.xml	2007-01-11 22:09:16 UTC (rev 8831)
+++ labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-cms.sar/conf/hibernate/cms/domain.hbm.xml	2007-01-11 22:10:56 UTC (rev 8832)
@@ -274,5 +274,103 @@
                 type="long"
                 not-null="true"/>
    </class>
+   
+   <!--  mapping to persist CMS Fine Grained Security related objects -->
+   <class name="org.jboss.portal.cms.security.PermRoleAssoc" table="jbp_cms_perm_role">
+   		<cache usage="read-write"/> 
+   		<id
+         name="id"
+         column="ID"
+         type="java.lang.Long">
+         <generator class="native"/>
+        </id>
+        <property
+         name="roleId"
+         column="ROLE_ID"
+         type="long"
+         not-null="true"
+        />                               
+   </class>
+   <class name="org.jboss.portal.cms.security.PermUserAssoc" table="jbp_cms_perm_user">
+        <cache usage="read-write"/> 
+   		<id
+         name="id"
+         column="ID"
+         type="java.lang.Long">
+         <generator class="native"/>
+        </id>
+        <property
+         name="userId"
+         column="USER_ID"
+         type="long"
+         not-null="true"
+        />                               
+   </class>
+   <class name="org.jboss.portal.cms.security.Criteria" table="jbp_cms_perm_criteria">
+        <cache usage="read-write"/> 
+   		<id
+         name="id"
+         column="ID"
+         type="java.lang.Long">
+         <generator class="native"/>
+        </id>
+        <property
+         name="name"
+         column="NAME"
+         type="string"
+         not-null="true"
+        />
+        <property
+         name="value"
+         column="VALUE"
+         type="string"
+         not-null="true"
+        />               
+   </class>
+   <class name="org.jboss.portal.cms.security.Permission" table="jbp_cms_perm">
+        <cache usage="read-write"/> 
+   		<id
+         name="id"
+         column="ID"
+         type="java.lang.Long">
+         <generator class="native"/>
+        </id>
+        <!-- one-to-many association with the criteria object -->
+        <set name="criteria" lazy="false" table="jbp_cms_perm_criteria" cascade="all-delete-orphan">
+            <cache usage="read-write"/> 
+        	<key column="CMS_PERM_ID"/>
+        	<one-to-many class="org.jboss.portal.cms.security.Criteria"/>
+        </set>
+        <!-- many-to-many association with the role object -->
+        <set name="roleAssoc" lazy="false" cascade="all-delete-orphan">
+            <cache usage="read-write"/> 
+        	<key column="CMS_PERM_ID"/>
+        	<one-to-many class="org.jboss.portal.cms.security.PermRoleAssoc"/>
+        </set>
+        <!-- many-to-many association with the user object -->
+        <set name="userAssoc" lazy="false" cascade="all-delete-orphan">
+            <cache usage="read-write"/> 
+        	<key column="CMS_PERM_ID"/>
+        	<one-to-many class="org.jboss.portal.cms.security.PermUserAssoc"/>
+        </set>
+        <property
+         name="service"
+         column="NAME"
+         type="string"
+         not-null="true"
+        />
+        <property
+         name="action"
+         column="ACTION"
+         type="string"
+         not-null="true"
+        />
+        <property
+         name="negated"
+         column="NEGATED"
+         type="boolean"
+         not-null="true"         
+        />        
+   </class>
 </hibernate-mapping>
 

Added: labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-cms.sar/conf/hibernate/cms/ehcache.xml
===================================================================
--- labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-cms.sar/conf/hibernate/cms/ehcache.xml	2007-01-11 22:09:16 UTC (rev 8831)
+++ labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-cms.sar/conf/hibernate/cms/ehcache.xml	2007-01-11 22:10:56 UTC (rev 8832)
@@ -0,0 +1,61 @@
+<!--~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+  ~ JBoss, a division of Red Hat                                              ~
+  ~ Copyright 2006, Red Hat Middleware, LLC, and individual                   ~
+  ~ contributors as indicated by the @authors tag. See the                    ~
+  ~ copyright.txt in the distribution for a full listing of                   ~
+  ~ individual contributors.                                                  ~
+  ~                                                                           ~
+  ~ This 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 software 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 software; if not, write to the Free               ~
+  ~ Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA        ~
+  ~ 02110-1301 USA, or see the FSF site: http://www.fsf.org.                  ~
+  ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~-->
+
+<ehcache>
+
+    <!-- Sets the path to the directory where cache .data files are created.
+
+         If the path is a Java System Property it is replaced by
+         its value in the running VM.
+
+         The following properties are translated:
+         user.home - User's home directory
+         user.dir - User's current working directory
+         java.io.tmpdir - Default temp file path -->
+   <diskStore path="java.io.tmpdir/cms"/>
+
+
+   <!--Default Cache configuration. These will applied to caches programmatically created through
+   the CacheManager.
+
+   The following attributes are required for defaultCache:
+
+   maxInMemory       - Sets the maximum number of objects that will be created in memory
+   eternal           - Sets whether elements are eternal. If eternal,  timeouts are ignored and the element
+                       is never expired.
+   timeToIdleSeconds - Sets the time to idle for an element before it expires. Is only used
+                       if the element is not eternal. Idle time is now - last accessed time
+   timeToLiveSeconds - Sets the time to live for an element before it expires. Is only used
+                       if the element is not eternal. TTL is now - creation time
+   overflowToDisk    - Sets whether elements can overflow to disk when the in-memory cache
+                       has reached the maxInMemory limit.
+
+   -->
+   <defaultCache
+      maxElementsInMemory="10000"
+      eternal="false"
+      timeToIdleSeconds="120"
+      timeToLiveSeconds="120"
+      overflowToDisk="false"
+      />
+</ehcache>

Modified: labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-cms.sar/conf/hibernate/cms/hibernate.cfg.xml
===================================================================
--- labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-cms.sar/conf/hibernate/cms/hibernate.cfg.xml	2007-01-11 22:09:16 UTC (rev 8831)
+++ labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-cms.sar/conf/hibernate/cms/hibernate.cfg.xml	2007-01-11 22:10:56 UTC (rev 8832)
@@ -28,18 +28,21 @@
 <hibernate-configuration>
    <session-factory>
       <property name="connection.datasource">java:PortalDS</property>
-      <property name="show_sql">false</property>
-      <property name="cache.use_second_level_cache">false</property>
-      <property name="cache.use_query_cache">false</property>
+      <property name="show_sql">false</property>      
+      
+      <!--  caching properties -->
+      <property name="cache.use_second_level_cache">true</property>
+      <property name="cache.use_query_cache">true</property>
+      <property name="cache.provider_configuration_file_resource_path">conf/hibernate/cms/ehcache.xml</property>
+      <property name="cache.provider_class">org.hibernate.cache.EhCacheProvider</property>
 
       <!-- managed environment transaction configuration -->
       <property name="hibernate.transaction.manager_lookup_class">org.hibernate.transaction.JBossTransactionManagerLookup</property>
       <property name="hibernate.transaction.factory_class">org.hibernate.transaction.JTATransactionFactory</property>
 
       <!-- Force the dialect instead of using autodetection -->
-      <!--
-      <property name="dialect">org.hibernate.dialect.PostgreSQLDialect</property>
-      -->
+      <!--property name="dialect">org.hibernate.dialect.PostgreSQLDialect</property-->
+      <!--property name="dialect">org.hibernate.dialect.MySQLInnoDBDialect</property-->
 
       <!-- Mapping files -->
       <mapping resource="conf/hibernate/cms/domain.hbm.xml"/>

Modified: labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-cms.sar/portal/cms/conf/default-content/default/index.html
===================================================================
--- labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-cms.sar/portal/cms/conf/default-content/default/index.html	2007-01-11 22:09:16 UTC (rev 8831)
+++ labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-cms.sar/portal/cms/conf/default-content/default/index.html	2007-01-11 22:10:56 UTC (rev 8832)
@@ -62,41 +62,3 @@
    developing it!</p>
 <p>Baci e abbracci,<br/>
    The JBoss Portal Team.</p>
-
-<!--
-<table width="100%" border="0" cellpadding="2">
-<tr>
-<td valign="top" align="left" class="portlet-section-body"><font class="portlet-font">JBoss Portal provides an open source platform for hosting and serving a portal's Web interface, publishing and managing its content, and customizing its experience. While most packaged Portal frameworks help enterprises launch Portals more quickly, only JBoss Portal delivers the benefits of a zero-cost open source license combined with a flexible and scalable underlying platform.</font></td>
-<td valign="top" align="right"><img src="default/images/jboss_logo.gif"></td>
-<tr>
-<td colspan="2"><table width="100%" border="0">
-<tr>
-<td align="left" valign="top" width="64" class="portlet-section-alternate"><a href="default/support.html"><img src="default/images/support.gif" border="0"></a></td>
-<td align="left" valign="top" class="portlet-section-alternate"><font class="portlet-font"><b>Support Services</b><br/>
-JBoss Inc. offers various support services tailored to fit your needs. <a href="default/support.html">Click here</a> to explore support and service options related to JBoss Portal.
-</font></td>
-</tr>
-<tr>
-<td align="left" valign="top" width="64" class="portlet-section-alternate"><a href="http://www.portletswap.com" target="_blank"><img src="default/images/plugin.gif" border="0"></a></td>
-<td align="left" valign="top" class="portlet-section-alternate"><font class="portlet-font"><b>PortletSwap</b><br/>
-<a href="http://www.portletswap.com" target="_blank">PortletSwap.com</a> is a open community sponsored by JBoss, Inc. to facilitate the exchange of portlets and layouts for use in JBoss Portal. <a href="http://www.portletswap.com" target="_blank">Click here</a> to visit PortletSwap.com.
-</font></td>
-</tr>
-<tr>
-<td align="left" valign="top" width="64" class="portlet-section-alternate"><a href="default/project.html"><img src="default/images/project.gif" border="0"></a></td>
-<td align="left" valign="top" class="portlet-section-alternate"><font class="portlet-font"><b>Project Information</b><br/>
-<a href="default/project.html">Click here</a> to learn more about the JBoss Portal project, on-going development, open issues, and our vibrant user and developer communities.
-</font></td>
-</tr>
-</table>
-</tr>
-<tr>
-<td colspan="2" align="left" class="portlet-section-body"><font class="portlet-font">
-Thank you for downloading and deploying JBoss Portal. We hope you enjoy working with it as much as we enjoy developing it! 
-<br/><br/>
-Bacci e Abracci,<br/>
-The JBoss Portal Team.
-</font></td>
-</tr>
-</table>
--->

Added: labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-cms.sar/portal/cms/conf/default-content/default/private/code.html
===================================================================
--- labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-cms.sar/portal/cms/conf/default-content/default/private/code.html	2007-01-11 22:09:16 UTC (rev 8831)
+++ labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-cms.sar/portal/cms/conf/default-content/default/private/code.html	2007-01-11 22:10:56 UTC (rev 8832)
@@ -0,0 +1,36 @@
+<table width="100%" border="0" cellpadding="2">
+<tr>
+<td valign="top" align="left" class="portlet-section-body"><font class="portlet-font"><b>Document2: This is a protected document. This is used to test the fine grained access control</b></font></td>
+<td valign="top" align="right"><img src="default/images/jboss_logo.gif"></td>
+</tr>
+<tr>
+<td colspan="2">
+<table width="100%" border="0" cellpadding="2">
+<tr>
+<td class="portlet-section-alternate" width="16" valign="top" align="left"><img src="default/images/check.gif"></td>
+<td align="left" valign="top" class="portlet-section-alternate"><font class="portlet-font">
+<a href="http://www.jboss.com/services/profsupport" target="_blank">Professional Support</a>
+<br/>
+The JBoss Subscription is a set of services and tools that assist you during every stage of the application lifecycle - from design and development, thru testing and deployment, to on-going management and monitoring of your enterprise application deployments. JBoss Subscriptions allow you to reduce business, legal, and technical risks while enabling you to more effectively utilize your team's resources. A JBoss Subscription will ensure that you achieve a much greater success rate for all of your JEMS-based projects.
+</font></td>
+</tr>
+<tr>
+<td class="portlet-section-alternate" width="16" valign="top" align="left"><img src="default/images/check.gif"></td>
+<td align="left" valign="top" class="portlet-section-alternate"><font class="portlet-font">
+<a href="http://www.jboss.com/services/consulting" target="_blank">Consulting Services</a>
+<br/>
+JBoss offers short-term on-site JEMS consulting engagements that provide you expert assistance at various stages of the application lifecycle. All engagements are delivered by certified JEMS consultants.
+</font></td>
+</tr>
+<tr>
+<td class="portlet-section-alternate" width="16" valign="top" align="left"><img src="default/images/check.gif"></td>
+<td align="left" valign="top" class="portlet-section-alternate"><font class="portlet-font">
+<a href="http://www.jboss.com/services/training" target="_blank">Training and Certification</a>
+<br/>
+A Certified JBoss Web Developer is capable of implementing presentation tier components for J2EE applications. They have the base knowledge on Servlet and JSP technology, Portlet specification, Tomcat Servlet container and JBoss Portal. A Certified JBoss Developer for web tier is able to implement and deploy presentation components (Web Archives) on Tomcat server and Portlet components on JBoss Portal implementation.
+</font></td>
+</tr>
+</table>
+</table>
+<br/>
+<a href="default/index.html"><img src="default/images/back.gif" border="0" alt="back"></a>

Added: labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-cms.sar/portal/cms/conf/default-content/default/private/confidential/license.html
===================================================================
--- labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-cms.sar/portal/cms/conf/default-content/default/private/confidential/license.html	2007-01-11 22:09:16 UTC (rev 8831)
+++ labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-cms.sar/portal/cms/conf/default-content/default/private/confidential/license.html	2007-01-11 22:10:56 UTC (rev 8832)
@@ -0,0 +1,36 @@
+<table width="100%" border="0" cellpadding="2">
+<tr>
+<td valign="top" align="left" class="portlet-section-body"><font class="portlet-font"><b>Document3: This is a protected document. This is used to test the fine grained access control</b></font></td>
+<td valign="top" align="right"><img src="default/images/jboss_logo.gif"></td>
+</tr>
+<tr>
+<td colspan="2">
+<table width="100%" border="0" cellpadding="2">
+<tr>
+<td class="portlet-section-alternate" width="16" valign="top" align="left"><img src="default/images/check.gif"></td>
+<td align="left" valign="top" class="portlet-section-alternate"><font class="portlet-font">
+<a href="http://www.jboss.com/services/profsupport" target="_blank">Professional Support</a>
+<br/>
+The JBoss Subscription is a set of services and tools that assist you during every stage of the application lifecycle - from design and development, thru testing and deployment, to on-going management and monitoring of your enterprise application deployments. JBoss Subscriptions allow you to reduce business, legal, and technical risks while enabling you to more effectively utilize your team's resources. A JBoss Subscription will ensure that you achieve a much greater success rate for all of your JEMS-based projects.
+</font></td>
+</tr>
+<tr>
+<td class="portlet-section-alternate" width="16" valign="top" align="left"><img src="default/images/check.gif"></td>
+<td align="left" valign="top" class="portlet-section-alternate"><font class="portlet-font">
+<a href="http://www.jboss.com/services/consulting" target="_blank">Consulting Services</a>
+<br/>
+JBoss offers short-term on-site JEMS consulting engagements that provide you expert assistance at various stages of the application lifecycle. All engagements are delivered by certified JEMS consultants.
+</font></td>
+</tr>
+<tr>
+<td class="portlet-section-alternate" width="16" valign="top" align="left"><img src="default/images/check.gif"></td>
+<td align="left" valign="top" class="portlet-section-alternate"><font class="portlet-font">
+<a href="http://www.jboss.com/services/training" target="_blank">Training and Certification</a>
+<br/>
+A Certified JBoss Web Developer is capable of implementing presentation tier components for J2EE applications. They have the base knowledge on Servlet and JSP technology, Portlet specification, Tomcat Servlet container and JBoss Portal. A Certified JBoss Developer for web tier is able to implement and deploy presentation components (Web Archives) on Tomcat server and Portlet components on JBoss Portal implementation.
+</font></td>
+</tr>
+</table>
+</table>
+<br/>
+<a href="default/index.html"><img src="default/images/back.gif" border="0" alt="back"></a>

Added: labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-cms.sar/portal/cms/conf/default-content/default/private/license.html
===================================================================
--- labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-cms.sar/portal/cms/conf/default-content/default/private/license.html	2007-01-11 22:09:16 UTC (rev 8831)
+++ labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-cms.sar/portal/cms/conf/default-content/default/private/license.html	2007-01-11 22:10:56 UTC (rev 8832)
@@ -0,0 +1,36 @@
+<table width="100%" border="0" cellpadding="2">
+<tr>
+<td valign="top" align="left" class="portlet-section-body"><font class="portlet-font"><b>Document1: This is a protected document. This is used to test the fine grained access control</b></font></td>
+<td valign="top" align="right"><img src="default/images/jboss_logo.gif"></td>
+</tr>
+<tr>
+<td colspan="2">
+<table width="100%" border="0" cellpadding="2">
+<tr>
+<td class="portlet-section-alternate" width="16" valign="top" align="left"><img src="default/images/check.gif"></td>
+<td align="left" valign="top" class="portlet-section-alternate"><font class="portlet-font">
+<a href="http://www.jboss.com/services/profsupport" target="_blank">Professional Support</a>
+<br/>
+The JBoss Subscription is a set of services and tools that assist you during every stage of the application lifecycle - from design and development, thru testing and deployment, to on-going management and monitoring of your enterprise application deployments. JBoss Subscriptions allow you to reduce business, legal, and technical risks while enabling you to more effectively utilize your team's resources. A JBoss Subscription will ensure that you achieve a much greater success rate for all of your JEMS-based projects.
+</font></td>
+</tr>
+<tr>
+<td class="portlet-section-alternate" width="16" valign="top" align="left"><img src="default/images/check.gif"></td>
+<td align="left" valign="top" class="portlet-section-alternate"><font class="portlet-font">
+<a href="http://www.jboss.com/services/consulting" target="_blank">Consulting Services</a>
+<br/>
+JBoss offers short-term on-site JEMS consulting engagements that provide you expert assistance at various stages of the application lifecycle. All engagements are delivered by certified JEMS consultants.
+</font></td>
+</tr>
+<tr>
+<td class="portlet-section-alternate" width="16" valign="top" align="left"><img src="default/images/check.gif"></td>
+<td align="left" valign="top" class="portlet-section-alternate"><font class="portlet-font">
+<a href="http://www.jboss.com/services/training" target="_blank">Training and Certification</a>
+<br/>
+A Certified JBoss Web Developer is capable of implementing presentation tier components for J2EE applications. They have the base knowledge on Servlet and JSP technology, Portlet specification, Tomcat Servlet container and JBoss Portal. A Certified JBoss Developer for web tier is able to implement and deploy presentation components (Web Archives) on Tomcat server and Portlet components on JBoss Portal implementation.
+</font></td>
+</tr>
+</table>
+</table>
+<br/>
+<a href="default/index.html"><img src="default/images/back.gif" border="0" alt="back"></a>

Modified: labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-cms.sar/portal/cms/conf/default-content/default/project.html
===================================================================
--- labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-cms.sar/portal/cms/conf/default-content/default/project.html	2007-01-11 22:09:16 UTC (rev 8831)
+++ labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-cms.sar/portal/cms/conf/default-content/default/project.html	2007-01-11 22:10:56 UTC (rev 8832)
@@ -1,4 +1,3 @@
-<!-- begin: portlet content -->
 <table width="100%" border="0" cellpadding="2">
    <tr>
       <td valign="top" align="left" class="portlet-section-body"><font class="portlet-font">JBoss Inc. delivers the
@@ -66,4 +65,4 @@
 </table>
 <br/>
 <a href="default/index.html"><img src="default/images/back.gif" border="0" alt="back"></a>
-<!-- end: portlet content -->
+

Modified: labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-cms.sar/portal/cms/conf/default-content/default/support.html
===================================================================
--- labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-cms.sar/portal/cms/conf/default-content/default/support.html	2007-01-11 22:09:16 UTC (rev 8831)
+++ labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-cms.sar/portal/cms/conf/default-content/default/support.html	2007-01-11 22:10:56 UTC (rev 8832)
@@ -1,4 +1,3 @@
-<!-- begin: portlet content -->
 <table width="100%" border="0" cellpadding="2">
 <tr>
 <td valign="top" align="left" class="portlet-section-body"><font class="portlet-font">JBoss Inc. delivers the Professional Support, Consulting, and Training that you need whether you are testing a proof of concept, deploying a mission-critical application, or rolling out JEMS across your enterprise. </font></td>
@@ -35,4 +34,3 @@
 </table>
 <br/>
 <a href="default/index.html"><img src="default/images/back.gif" border="0" alt="back"></a>
-<!-- end: portlet content -->
\ No newline at end of file

Modified: labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-cms.sar/portal-cms-lib.jar
===================================================================
(Binary files differ)

Deleted: labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-cms.sar/portal-cms.war/WEB-INF/jboss-web.xml
===================================================================
--- labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-cms.sar/portal-cms.war/WEB-INF/jboss-web.xml	2007-01-11 22:09:16 UTC (rev 8831)
+++ labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-cms.sar/portal-cms.war/WEB-INF/jboss-web.xml	2007-01-11 22:10:56 UTC (rev 8832)
@@ -1,26 +0,0 @@
-<?xml version="1.0"?>
-<!--~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-  ~ JBoss, a division of Red Hat                                              ~
-  ~ Copyright 2006, Red Hat Middleware, LLC, and individual                   ~
-  ~ contributors as indicated by the @authors tag. See the                    ~
-  ~ copyright.txt in the distribution for a full listing of                   ~
-  ~ individual contributors.                                                  ~
-  ~                                                                           ~
-  ~ This 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 software 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 software; if not, write to the Free               ~
-  ~ Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA        ~
-  ~ 02110-1301 USA, or see the FSF site: http://www.fsf.org.                  ~
-  ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~-->
-
-<jboss-web>
-</jboss-web>

Deleted: labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-cms.sar/portal-cms.war/WEB-INF/portlet-instances.xml
===================================================================
--- labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-cms.sar/portal-cms.war/WEB-INF/portlet-instances.xml	2007-01-11 22:09:16 UTC (rev 8831)
+++ labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-cms.sar/portal-cms.war/WEB-INF/portlet-instances.xml	2007-01-11 22:10:56 UTC (rev 8832)
@@ -1,82 +0,0 @@
-<?xml version="1.0" standalone="yes"?>
-<!--~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-  ~ JBoss, a division of Red Hat                                              ~
-  ~ Copyright 2006, Red Hat Middleware, LLC, and individual                   ~
-  ~ contributors as indicated by the @authors tag. See the                    ~
-  ~ copyright.txt in the distribution for a full listing of                   ~
-  ~ individual contributors.                                                  ~
-  ~                                                                           ~
-  ~ This 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 software 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 software; if not, write to the Free               ~
-  ~ Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA        ~
-  ~ 02110-1301 USA, or see the FSF site: http://www.fsf.org.                  ~
-  ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~-->
-
-<instances>
-<!--
--->
-   <!--
-   <instance>
-      <instance-id>WeatherPortletInstance</instance-id>
-      <portlet-ref>samples.WeatherPortlet</portlet-ref>
-   </instance>
-   <instance>
-      <instance-id>NewsPortletInstance</instance-id>
-      <portlet-ref>samples.NewsPortlet</portlet-ref>
-   </instance>
-   <instance>
-      <instance-id>NewsPortletInstance2</instance-id>
-      <portlet-ref>samples.NewsPortlet</portlet-ref>
-      <preferences>
-         <preference>
-            <name>expires</name>
-            <value>180</value>
-         </preference>
-         <preference>
-            <name>RssXml</name>
-            <value>http://finance.yahoo.com/rss/headline?s=rhat</value>
-         </preference>
-      </preferences>
-   </instance>
-   <instance>
-      <instance-id>JSPPortletInstance</instance-id>
-      <portlet-ref>samples.JSPPortlet</portlet-ref>
-   </instance>
--->
-   <!--
-      <instance>
-         <instance-id>TestPortletInstance</instance-id>
-         <portlet-ref>TestPortlet</portlet-ref>
-      </instance>
-      <instance>
-         <instance-id>PreferencesPortletInstance</instance-id>
-         <portlet-ref>PreferencesPortlet</portlet-ref>
-         <preferences>
-            <preference>
-               <name>one</name>
-               <value>1.5</value>
-            </preference>
-            <preference>
-               <name>two</name>
-               <value>2.5</value>
-               <read-only>true</read-only>
-            </preference>
-            <preference>
-               <name>three</name>
-               <value>3.5</value>
-               <read-only>true</read-only>
-            </preference>
-         </preferences>
-      </instance>
-   -->
-</instances>
\ No newline at end of file

Deleted: labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-cms.sar/portal-cms.war/WEB-INF/web.xml
===================================================================
--- labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-cms.sar/portal-cms.war/WEB-INF/web.xml	2007-01-11 22:09:16 UTC (rev 8831)
+++ labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-cms.sar/portal-cms.war/WEB-INF/web.xml	2007-01-11 22:10:56 UTC (rev 8832)
@@ -1,27 +0,0 @@
-<?xml version="1.0" encoding="ISO-8859-1"?>
-<!--~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-  ~ JBoss, a division of Red Hat                                              ~
-  ~ Copyright 2006, Red Hat Middleware, LLC, and individual                   ~
-  ~ contributors as indicated by the @authors tag. See the                    ~
-  ~ copyright.txt in the distribution for a full listing of                   ~
-  ~ individual contributors.                                                  ~
-  ~                                                                           ~
-  ~ This 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 software 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 software; if not, write to the Free               ~
-  ~ Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA        ~
-  ~ 02110-1301 USA, or see the FSF site: http://www.fsf.org.                  ~
-  ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~-->
-
-<!DOCTYPE web-app PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN" "http://java.sun.com/dtd/web-app_2_3.dtd">
-<web-app>
-</web-app>

Modified: labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/WEB-INF/classes/Resource.properties
===================================================================
--- labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/WEB-INF/classes/Resource.properties	2007-01-11 22:09:16 UTC (rev 8831)
+++ labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/WEB-INF/classes/Resource.properties	2007-01-11 22:10:56 UTC (rev 8832)
@@ -21,7 +21,7 @@
 # 02110-1301 USA, or see the FSF site: http://www.fsf.org.                     #
 ################################################################################
 
-_ASREGISTERED=Don't have an account yet?  You can <a href\="index.html?module=user&op=getlogin">create one</a>.
+_ASREGISTERED=Don't have an account yet?  You can create <a href\="">one</a>.
 _BLOCKNICKNAME=Username
 _BLOCKPASSWORD=Password
 
@@ -120,7 +120,7 @@
 FakeEmail=Fake e-mail
 NewUser=New user
 SaveChanges=Save Changes
-SaveChange=Save Changes
+SaveChange=Save Change
 TypeNewPassword=(type a new password twice to change it)
 Search=Search
 All=All
@@ -303,7 +303,7 @@
 ROLE_TEXT_1=Use this portlet to create, edit, delete and add users to roles.
 ROLE_TEXT_2=These roles are used in the Management Portlet to set access rights.
 
-// CMS ADMIN PORTLET
+# CMS ADMIN PORTLET
 TITLE_HEAD=CMS Admin
 TITLE_BROWSE=Directory Browser
 TITLE_FILEBROWSE=File Browser
@@ -315,6 +315,7 @@
 TITLE_EDIT=Edit File
 TITLE_CREATE=Create File
 TITLE_UPLOAD=Upload File
+TITLE_SECURECONFIRM=Secure Node
 
 CMS_MENU=Action Menu
 CMS_ACTION=Action
@@ -334,11 +335,12 @@
 CMS_UPLOAD=Upload
 CMS_MODIFY=Modify
 CMS_CREATEFOLDER= Create Folder
-CMS_CREATEFILE=Create Directory
+CMS_CREATEFILE=Create File
 CMS_UPLOADARCHIVE=Upload Archive
 CMS_BACKTOBROWSER=Back to Directory Browser
 CMS_TRANSFER=Import/Export
 CMS_EXPORTARCHIVE=Export Folder
+CMS_SECURE=Secure
 
 CMS_CREATEFILEINDIR=Creating File in Directory
 CMS_FILENAME=FileName
@@ -359,6 +361,10 @@
 CMS_LIVEVERSION=Live Version
 CMS_SIZE=Size
 
+CMS_CONTENT_DIR=Content Directory
+CMS_CONTENT_DIR_USE=Use the directory tree to navigate the portal folder structure.
+CMS_MAIN_USE=Use the CMS Administration portlet to manage the content of your portal.
+
 VALIDATIONEMAIL_1=A user with this email address has registered on our site.
 VALIDATIONEMAIL_2=Please keep this email for your records. Your account information is as follows
 VALIDATIONEMAIL_3=Your account is currently inactive. You cannot use it until you visit the following link

Deleted: labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/WEB-INF/classes/Resource_en.properties
===================================================================
--- labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/WEB-INF/classes/Resource_en.properties	2007-01-11 22:09:16 UTC (rev 8831)
+++ labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/WEB-INF/classes/Resource_en.properties	2007-01-11 22:10:56 UTC (rev 8832)
@@ -1,374 +0,0 @@
-################################################################################
-# JBoss, a division of Red Hat                                                 #
-# Copyright 2006, Red Hat Middleware, LLC, and individual                      #
-# contributors as indicated by the @authors tag. See the                       #
-# copyright.txt in the distribution for a full listing of                      #
-# individual contributors.                                                     #
-#                                                                              #
-# This 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 software 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 software; if not, write to the Free                  #
-# Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA           #
-# 02110-1301 USA, or see the FSF site: http://www.fsf.org.                     #
-################################################################################
-
-_ASREGISTERED=Don't have an account yet?  You can <a href\="index.html?module=user&op=getlogin">create one</a>.
-_BLOCKNICKNAME=Username
-_BLOCKPASSWORD=Password
-
-
-
-MessageOrder=Message order
-Ascending=Ascending
-Descending=Descending
-
-AIM=AIM Address
-ICQ=ICQ Number
-YIM=YIM Number
-MSNM=MSN Messenger
-
-YourAIM=Your AIM Address
-YourICQ=Your ICQ Number
-YourYIM=Your YIM Number
-YourMSNM=Your MSN Messenger
-
-MyEmail=My e-mail
-MyHomePage=My homepage
-
-Question=Secret question
-Answer=Secret answer
-Location=Location
-Occupation=Occupation
-Interests=Interests
-ExtraInfo=Extra Information
-YourLocation=Your location
-YourOccupation=Your occupation
-YourInterests=Your interests
-Signature=Signature
-
-LoginSite=Login.
-Register=Register.
-
-UserExist=Username already exists
-ToChangeInfo=to change your info
-EmailVerify=Activation link Emailed! Check your email and click the activation link to activate your account.
-AccountActivated=Account successfully activated!
-UnableActivate=Unable to validate new user.
-LoggingYou=Logging you in, hang tight\!
-YouAreLoggedOut=You are now logged out\!
-PassDifferent=The passwords are different. They need to be identical.
-YourPassMustBe=Sorry, your password must be at least
-CharLong=characters long
-UserNotExist=User doesn't exist\!
-UserRegLogin=User registration/login
-SelectOption=Please select an option from the menu below\:
-RetrievePass=Retrieve lost password.
-RegNewUser=New user registration
-PasswordAgain=Confirm your password
-Email=E-mail
-Options=Options
-AllowEmailView=Allow other users to view my e-mail address
-AsRegUser=As a registered user you can\:
-AsReg6=Select different themes
-AsReg5=Customize the comments
-AsReg4=Select how many news items to show on the homepage
-AsReg3=Have a personal box on the homepage
-AsReg2=Send news with your username
-AsReg1=Post comments with your username
-RegisterNow=Register now\! It's free\!
-WeDontGive=We won't sell/give others your personal info.
-WelcomeTo=Welcome to
-Registration=registration area.
-
-Over13_1=I am
-Over13_2=or over or I have parental consent
-MustBe_1=You must be
-MustBe_2=or over, or have parental permission to register here.
-Consent_1=(By clicking on the above link you certify that you are either<br>
-Consent_2=or over, or that you have parental consent to register here.)
-Under13_1=I am under
-Under13_2=and do not have parental consent.
-
-Sorry=Sorry.
-Click=Please click
-Here=here
-Return=to return to the main page.
-UserName=Username
-GoBack=Back
-Finish=Finish
-PersonalInfo=Personal information
-RealName=Real name
-Optional=(optional)
-CanKnowAbout=(255 characters max. Type what you'd like others to know about you)
-Language=Language
-255CharMax=(255 characters max. Type your signature with HTML coding)
-YourAvatar=Your avatar
-YourHomePage=Your website
-TimeZoneOffset=Time zone offset
-EmailNotPublic=(This e-mail will not be public but is required.  It will be used to send your password if you lose it)
-EmailPublic=(This e-mail will be public. Type what you'd like. Spam proof)
-RealEmail=Real e-mail
-FakeEmail=Fake e-mail
-NewUser=New user
-SaveChanges=Save Changes
-SaveChange=Save Changes
-TypeNewPassword=(type a new password twice to change it)
-Search=Search
-All=All
-UsersFoundFor=users found for
-Pages=pages
-UsersShown=users shown
-Delete=Delete
-Edit=Edit
-Ok=Ok
-Cancel=Cancel
-AreYouSureToDeleteUser=Are you sure to delete user?
-UserDeleted=User deleted succesfully
-ReturnToMemberList=Return to member list
-Avatar=Avatar
-AdminFunctions=Admin functions
-URL=URL
-UpdateUser=Update user
-UserID=User ID
-ForChanges=(For changes only)
-MemberList=Member List
-SearchTip=Tip: choose a letter, display all or search for a user if you know its username  
-
-ThemeText1=This option will change the look for the whole site.
-ThemeText2=The changes will be valid only to you.
-ThemeText3=Each user can view the site with a different theme.
-SelectTheme=Select a theme
-ThemeSelection=Theme selection
-
-CannotLogin=Cannot proceed to login
-
-LoginInvalidName=the user name is not valid
-LoginNoSuchUser=the user name does not exist
-LoginBadPassword=your password does not match
-LoginUnexpectedError=unexpected error
-LoginUserDisabled=your account has been blocked. Please contact an administrator.
-
-Enable=Enable
-Disable=Disable
-StatusChanged=The user status has been succesfully changed
-
-NotAuth=You\'re not authorized to perform this operation
-
-REMEMBERME=Remember me
-LOGIN=Login
-USERNAME=Username
-PASSWORD=Password
-USERLOGIN=User login
-
-OPTIONAL=Optional
-REQUIRED=Required
-
-255MAX=(Signature of 255 characters max)
-
-NAMENOTAVAILABLE=N/A
-
-# Registration
-REGISER_NOT_LOGGED_IN=You are currently not logged in.
-REGISTER_REGISTER=You can create an account.
-REGISTER_REGISTER_LINK=create one
-REGISTER_REGISTER_ADMIN_LINK=Create User account
-REGISTER_TY=Thank you for registering.
-REGISTER_BASICINFO=Basic User Information
-REGISTER_IM=Instant Message Identities
-REGISTER_ADDITIONAL=Additional Optional User Information
-REGISTER_NEWUSER=New user registration
-REGISTER_PASSWORDAGAIN=Confirm your password
-REGISTER_REALEMAIL=Real e-mail
-REGISTER_EMAILNOTPUBLIC=(This e-mail will not be public but is required.  It will be used to send your password if you lose it)
-REGISTER_FAKEEMAIL=Fake e-mail
-REGISTER_EMAILPUBLIC=(This e-mail will be public. Type what you'd like. Spam proof)
-REGISTER_FAKEEMAIL_EXPLAIN=If this field is not empty, the real email will be used only to send notifications
-REGISTER_QUESTION=Secret question
-REGISTER_ANSWER=Secret answer
-REGISTER_ASREGUSER=As a registered user you can:
-REGISTER_ASREG6=Select different themes
-REGISTER_ASREG5=Customize the comments
-REGISTER_ASREG4=Select how many news items to show on the homepage
-REGISTER_ASREG3=Have a personal box on the homepage
-REGISTER_ASREG2=Send news with your username
-REGISTER_ASREG1=Post comments with your username
-REGISTER_REGISTERNOW=Register now! It's free!
-REGISTER_WEDONTGIVE=We won't sell/give others your personal info.
-REGISTER_ALREADYHAVEACCOUNT=You already have an account:
-REGISTER_SIGNIN=Sign in
-REGISTER_GIVENNAME=Firstname
-REGISTER_FAMILYNAME=Lastname
-REGISTER_PERSONALINFO=Personal information
-REGISTER_VIEWREALEMAIL=Allow other users to view my real e-mail address
-REGISTER_HOMEPAGE=Address of your personal website
-REGISTER_TIMEZONEOFFSET=Time zone offset
-REGISTER_THEME=Theme
-REGISTER_DEFAULT_THEME=Site Default
-REGISTER_ICQ=ICQ id
-REGISTER_AIM=AIM id
-REGISTER_YIM=Yahoo id
-REGISTER_MSNM=MSN messenger id
-REGISTER_SKYPE=Skype id
-REGISTER_LOCATION=Location
-REGISTER_LANGUAGE=Preferred language
-REGISTER_OCCUPATION=Occupation
-REGISTER_INTERESTS=Interests
-REGISTER_SIGNATURE=Signature
-REGISTER_EXTRAINFO=Extra information
-REGISTER_CANKNOWABOUT=(255 characters max. Type what you'd like others to know about you)
-REGISTER_SAVECHANGES=Save changes
-REGISTER_CONFIRMATIONEMAIL=Confirmation email
-
-REGISTER_SHOWMENU=Go back to the user menu
-
-REGISTER_ERROR_INVALIDUSERNAME=Username is not valid
-REGISTER_ERROR_EXISTINGUSERNAME=This username is already taken
-REGISTER_ERROR_INVALIDPASSWORD1=Password was not valid
-REGISTER_ERROR_INVALIDPASSWORD2=Password was not valid
-REGISTER_ERROR_PASSWORDMISMATCH=Passwords do not match
-REGISTER_ERROR_INVALIDREALEMAIL=Email address is not valid
-
-REGISTER_CONFIRM=User created successfully.
-REGISTER_ADMIN_SEARCH=View/Edit users
-
-MENU_LOGOUT=Logout
-MENU_EDITPROFILE=Edit your profile
-MENU_LISTUSERS=List of all the users
-
-LIST_FILTERS=Apply filters to the list
-LIST_USERSPERPAGE=Users per page
-LIST_USERNAMECONTAINS=Username contains
-LIST_FULLNAME=Fullname
-LIST_USERNAME=Username
-LIST_FIRSTNAME=Firstname
-LIST_LASTNAME=Lastname
-LIST_ROLES=Roles
-LIST_ACTIONS=Actions
-LIST_ACTIONSSHOWPROFILE=Profile
-LIST_ACTIONADDROLESTOUSER=Roles
-LIST_ACTIONEDITROLES=Edit Roles
-LIST_ACTIONDELETEUSER=Delete user
-LIST_SEARCHRESULTS=Search results for
-LIST_MATCHING=Matching Users
-FILTER=Filter
-
-NEXTPAGE=Next page
-PREVIOUSPAGE=Previous page
-
-ASSIGNROLES=Assign roles
-ROLESAVAILABLE=Available roles
-EDITROLESFORUSER=Edit roles for the user
-
-
-ROLE_THEREARE=There are
-ROLE_THEREIS=There is
-ROLE_ROLESDEFINED=roles defined
-ROLE_ROLEDEFINED=role defined
-
-ROLE_NAME=Name of the new role
-ROLE_DISPLAYNAME=Display name of the role
-ROLE_NEWDISPLAYNAME=New display name for the role
-ROLE_SELECTONETOMODIFY= Select the role to modify
-ROLE_SELECTONETODELETE= Select the role to delete
-ROLE_CREATE=Create user role
-ROLE_UPDATE=Update user role
-ROLE_EDIT=Edit user role
-ROLE_DELETE=Delete selected role
-ROLE_DELETED=The role has been deleted
-ROLE_EDIT_MEMBERS=Edit role members
-ROLE_MAINLIST=Back to Role Edit
-
-ROLE_ERROR_DISPLAYNAMEALREADYEXISTS=There is already a role with that display name
-ROLE_ERROR_NAMEALREADYEXISTS=There is already a role with that name
-ROLE_ERROR_NAMEEMPTY=The role name cannot be empty
-ROLE_ERROR_DISPLAYNAMEEMPTY=The role display name cannot be empty
-ROLE_ERROR_DELETE_FAILED=Could not delete the role
-ROLE_EDIT_USER=Editing users in Role
-
-MENU_CREATEROLE=Create new role
-MENU_EDITROLE=Edit existing role
-MENU_EDITROLEMEMBERS=Edit role members
-
-ROLE_TEXT_1=Use this portlet to create, edit, delete and add users to roles.
-ROLE_TEXT_2=These roles are used in the Management Portlet to set access rights.
-
-// CMS ADMIN PORTLET
-TITLE_HEAD=CMS Admin
-TITLE_BROWSE=Directory Browser
-TITLE_FILEBROWSE=File Browser
-TITLE_DELETECONFIRM=Confirm Delete
-TITLE_CREATECOLLCONFIRM=Confirm Directory Creation
-TITLE_COPYCONFIRM=Confirm Resource Copy
-TITLE_MOVECONFIRM=Confirm Resource Move
-TITLE_VIEWFILE=Viewing File Properties
-TITLE_EDIT=Edit File
-TITLE_CREATE=Create File
-TITLE_UPLOAD=Upload File
-
-CMS_MENU=Action Menu
-CMS_ACTION=Action
-CMS_NAME=Name
-CMS_TYPE=Type
-CMS_CREATED=Created
-CMS_MODIFIED=Modified
-CMS_DESCRIPTION=Description
-CMS_VIEW=View
-CMS_COPY=Copy
-CMS_MOVE=Move
-CMS_DELETE=Delete
-CMS_FOLDER=Folder
-CMS_FILE=File
-CMS_CREATE=Create
-CMS_EDIT=Edit
-CMS_UPLOAD=Upload
-CMS_MODIFY=Modify
-CMS_CREATEFOLDER= Create Folder
-CMS_CREATEFILE=Create Directory
-CMS_UPLOADARCHIVE=Upload Archive
-CMS_BACKTOBROWSER=Back to Directory Browser
-CMS_TRANSFER=Import/Export
-CMS_EXPORTARCHIVE=Export Folder
-
-CMS_CREATEFILEINDIR=Creating File in Directory
-CMS_FILENAME=FileName
-CMS_TITLE=Title
-CMS_LANGUAGE=Language
-
-CMS_DELETEPATH=Confirm Deletion of
-CMS_DELETEWARN1=WARNING! You will not be able to undo these change\!
-CMS_DELETEWARN2=Are you sure you want to delete this resource\?
-
-CMS_DESTINATION=Destination
-CMS_SOURCE=Source
-
-CMS_EDITING=Editing File
-CMS_LIVE=Make \"Live\"
-CMS_VERSION=Version
-
-CMS_LIVEVERSION=Live Version
-CMS_SIZE=Size
-
-VALIDATIONEMAIL_1=A user with this email address has registered on our site.
-VALIDATIONEMAIL_2=Please keep this email for your records. Your account information is as follows
-VALIDATIONEMAIL_3=Your account is currently inactive. You cannot use it until you visit the following link
-VALIDATIONEMAIL_4=If you did not register for membership on our site, no further action is required.
-VALIDATIONEMAIL_5=Regards,\nThe staff.
-
-PERMISSION_PICKPORTLET=Portlet Permissions Administration
-PERMISSION_PERMISSIONS=Permissions to modify
-PERMISSION_TOP=Select a Component to Modify
-PERMISSION_FINERGRAIN=Select a sub-component to define its permissions
-PERMISSION_MODIFYROLES=Add/Remove roles
-PERMISSION_MODIFYINGROLES=Modifying roles for
-PERMISSION_DOMAIN=Domain
-PERMISSION_DOMAIN_MOD=Modify Domain
- 
\ No newline at end of file

Modified: labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/WEB-INF/classes/Resource_es.properties
===================================================================
--- labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/WEB-INF/classes/Resource_es.properties	2007-01-11 22:09:16 UTC (rev 8831)
+++ labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/WEB-INF/classes/Resource_es.properties	2007-01-11 22:10:56 UTC (rev 8832)
@@ -21,35 +21,35 @@
 # 02110-1301 USA, or see the FSF site: http://www.fsf.org.                     #
 ################################################################################
 
-_ASREGISTERED=�No tiene una cuenta todav�a? Puede <a href\="index.html?module=user&op=getlogin">crear una</a>.
+_ASREGISTERED=?No tiene una cuenta todav?a? Puede crear <a href\="">una</a>.
 _BLOCKNICKNAME=Usuario
 _BLOCKPASSWORD=Clave
 
 
 
-MessageOrder=�rden de Mensajes
+MessageOrder=?rden de Mensajes
 Ascending=Ascendente
 Descending=Descendente
 
-AIM=AIM Direcci�n
-ICQ=ICQ N�mero
-YIM=YIM N�mero
+AIM=AIM Direcci?n
+ICQ=ICQ N?mero
+YIM=YIM N?mero
 MSNM=MSN Messenger
 
-YourAIM=Su direcci�n AIM
-YourICQ=Su n�mero ICQ
-YourYIM=Su n�mero YIM
+YourAIM=Su direcci?n AIM
+YourICQ=Su n?mero ICQ
+YourYIM=Su n?mero YIM
 YourMSNM=Su Messenger MSN
 
 MyEmail=Mi e-mail
-MyHomePage=Mi p�gina de inicio
+MyHomePage=Mi p?gina de inicio
 
 Question=Pregunta secreta
 Answer=Respuesta secreta
 Location=Residencia
 Occupation=Puesto
 Interests=Intereses
-ExtraInfo=Informaci�n extra
+ExtraInfo=Informaci?n extra
 YourLocation=Su residencia
 YourOccupation=Su puesto
 YourInterests=Sus intereses
@@ -59,101 +59,101 @@
 Register=Registro.
 
 UserExist=Ese usuario ya existe
-ToChangeInfo=para cambiar tu informaci�n
-EmailVerify=�Enlace de activaci�n enviado! Comprueba tu correo y pincha en en enlace de activaci�n para activar tu cuenta.
-AccountActivated=�Cuenta activada!
+ToChangeInfo=para cambiar tu informaci?n
+EmailVerify=?Enlace de activaci?n enviado! Comprueba tu correo y pincha en en enlace de activaci?n para activar tu cuenta.
+AccountActivated=?Cuenta activada!
 UnableActivate=Imposible validar el nuevo usuario.
-LoggingYou=Autenticando, \�espere\!
-YouAreLoggedOut=\�Ahora ya est�s autenticado\!
-PassDifferent=Las claves son diferentes. Tienen que ser id�nticas.
+LoggingYou=Autenticando, \?espere\!
+YouAreLoggedOut=\?Ahora ya est?s autenticado\!
+PassDifferent=Las claves son diferentes. Tienen que ser id?nticas.
 YourPassMustBe=Lo sentimos, su clave debe ser por lo menos de
 CharLong=caracteres
-UserNotExist=\�El usuario no existe\!
-UserRegLogin=Registro de usuario/autenticaci�n
-SelectOption=por favor, elija una opci�n del men� siguiente\:
+UserNotExist=\?El usuario no existe\!
+UserRegLogin=Registro de usuario/autenticaci?n
+SelectOption=por favor, elija una opci?n del men? siguiente\:
 RetrievePass=Recuperar la clave perdida.
 RegNewUser=Registro de un nuevo usuario
 PasswordAgain=Confirme su clave
 Email=E-mail
 Options=Opciones
-AllowEmailView=Permitir a otros usuarios ver mi direcci�n de e-mail
-AsRegUser=Como usuario registrado, usted podr�\:
+AllowEmailView=Permitir a otros usuarios ver mi direcci?n de e-mail
+AsRegUser=Como usuario registrado, usted podr?\:
 AsReg6=Elegir diferentes estilos
 AsReg5=Personalizar los comentarios
-AsReg4=Elegir cu�ntos objetos nuevos mostrar en la p�gina de inicio
-AsReg3=Tener un buz�n personal en la p�gina de inicio
+AsReg4=Elegir cu?ntos objetos nuevos mostrar en la p?gina de inicio
+AsReg3=Tener un buz?n personal en la p?gina de inicio
 AsReg2=Enviar noticias con su usuario
 AsReg1=Responder con su usuario.
-RegisterNow=\�Reg�strese ahora\! \�Es gratis\!
-WeDontGive=No venderemos o daremos a otros su informaci�n personal.
+RegisterNow=\?Reg?strese ahora\! \?Es gratis\!
+WeDontGive=No venderemos o daremos a otros su informaci?n personal.
 WelcomeTo=Bienvenido a
 Registration=la zona de registro.
 
 Over13_1=Tengo
-Over13_2=o m�s a�os o tengo consentimiento paterno
+Over13_2=o m?s a?os o tengo consentimiento paterno
 MustBe_1=Debe tener
-MustBe_2=o m�s a�os, o tener permiso paterno para registrarse.
+MustBe_2=o m?s a?os, o tener permiso paterno para registrarse.
 Consent_1=(Pinchando en el enlace superior usted certifica que tiene<br>
-Consent_2=o m�s a�os, o que tiene permiso paterno para registrarse.)
+Consent_2=o m?s a?os, o que tiene permiso paterno para registrarse.)
 Under13_1=Tengo menos de
-Under13_2=a�os y no tengo consentimiento paterno.
+Under13_2=a?os y no tengo consentimiento paterno.
 
 Sorry=Lo sentimos.
 Click=Por favor, pinche
-Here=aqu�
-Return=para volver a la p�gina principal.
+Here=aqu?
+Return=para volver a la p?gina principal.
 UserName=Usuario
-GoBack=Atr�s
+GoBack=Atr?s
 Finish=Finalizar
-PersonalInfo=Informaci�n personal
+PersonalInfo=Informaci?n personal
 RealName=Nombre real
 Optional=(opcional)
 CanKnowAbout=(255 caracteres max. Introduzca lo que quiera que otros conozcan de usted)
 Language=Lenguaje
-255CharMax=(255 caracteres max. Introduzca su firma en c�digo HTML)
+255CharMax=(255 caracteres max. Introduzca su firma en c?digo HTML)
 YourAvatar=Su avatar
-YourHomePage=Su p�gina de inicio
+YourHomePage=Su p?gina de inicio
 TimeZoneOffset=Zona horaria
-EmailNotPublic=(Este correo no ser� p�blico pero es necesario.  Se usar� para enviarle su clave en caso de p�rdida)
-EmailPublic=(Este correo ser� p�blico. Escriba lo que quiera. Prueba de Spam)
+EmailNotPublic=(Este correo no ser? p?blico pero es necesario.  Se usar? para enviarle su clave en caso de p?rdida)
+EmailPublic=(Este correo ser? p?blico. Escriba lo que quiera. Prueba de Spam)
 RealEmail=E-mail real
 FakeEmail=E-mail de pega
 NewUser=Nuevo usuario
 SaveChanges=Guardar cambios
-SaveChange=Guardar cambios
+SaveChange=Guardar cambio
 TypeNewPassword=(escriba una clave dos veces para cambiarla)
 Search=Buscar
 All=Todos
 UsersFoundFor=usuarios encontrados para
-Pages=p�ginas
+Pages=p?ginas
 UsersShown=usuarios mostrados
 Delete=Borrar
 Edit=Editar
 Ok=Aceptar
 Cancel=Cancelar
-AreYouSureToDeleteUser=�De verdad quiere borrar el usuario?
+AreYouSureToDeleteUser=?De verdad quiere borrar el usuario?
 UserDeleted=Usuario borrado
 ReturnToMemberList=Volver a la lista de miembros
 Avatar=Avatar
 AdminFunctions=Tareas administrativas
 URL=URL
-UpdateUser=Actualizaci�n de usuario
+UpdateUser=Actualizaci?n de usuario
 UserID=ID de usuario
-ForChanges=(S�lo para cambios)
+ForChanges=(S?lo para cambios)
 MemberList=Lista de miembros
 SearchTip=Sugerencia: escoja una letra, muestre todos o busque un usuario si conoce su nombre
 
-ThemeText1=Esta opci�n cambia la apariencia de todo el sitio.
-ThemeText2=Estos cambios s�lo le afectar�n a usted.
+ThemeText1=Esta opci?n cambia la apariencia de todo el sitio.
+ThemeText2=Estos cambios s?lo le afectar?n a usted.
 ThemeText3=Cada usuario puede ver el sitio con una apariencia diferente.
 SelectTheme=Elegir un estilo
-ThemeSelection=Elecci�n de estilo
+ThemeSelection=Elecci?n de estilo
 
 CannotLogin=No se puede autenticar
 
-LoginInvalidName=El nombre de usuario no es v�lido
+LoginInvalidName=El nombre de usuario no es v?lido
 LoginNoSuchUser=el nombre de usuario no existe
-LoginBadPassword=su contrase�a no coincide
+LoginBadPassword=su contrase?a no coincide
 LoginUnexpectedError=error inesperado
 LoginUserDisabled=su cuenta ha sido bloqueada. Por favor, contacte con un administrador.
 
@@ -161,7 +161,7 @@
 Disable=Desactivar
 StatusChanged=El estado del usuario ha sido cambiado
 
-NotAuth=Usted no est� autorizado para realizar esta operaci�n
+NotAuth=Usted no est? autorizado para realizar esta operaci?n
 
 REMEMBERME=Recordarme
 LOGIN=Login
@@ -172,44 +172,44 @@
 OPTIONAL=Opcional
 REQUIRED=Obligatorio
 
-255MAX=(Firma de 255 caract�res max)
+255MAX=(Firma de 255 caract?res max)
 
 NAMENOTAVAILABLE=N/A
 
 # Registration
-REGISER_NOT_LOGGED_IN=You are currently not logged in.
+REGISER_NOT_LOGGED_IN=
 REGISTER_REGISTER=Puedes crear una cuenta.
 REGISTER_REGISTER_LINK=crear una
 REGISTER_REGISTER_ADMIN_LINK=Crear una cuenta
-REGISTER_TY=Thank you for registering.
-REGISTER_BASICINFO=Basic User Information
-REGISTER_IM=Instant Message Identities
-REGISTER_ADDITIONAL=Additional Optional User Information
+REGISTER_TY=
+REGISTER_BASICINFO=
+REGISTER_IM=
+REGISTER_ADDITIONAL=
 REGISTER_NEWUSER=Registro de nuevo usuario
 REGISTER_PASSWORDAGAIN=Confirme su clave
 REGISTER_REALEMAIL=E-mail real
-REGISTER_EMAILNOTPUBLIC=(Este correo no ser� p�blico pero es necesario.  Se usar� para enviarle su clave en caso de p�rdida)
+REGISTER_EMAILNOTPUBLIC=(Este correo no ser? p?blico pero es necesario.  Se usar? para enviarle su clave en caso de p?rdida)
 REGISTER_FAKEEMAIL=E-mail de pega
-REGISTER_EMAILPUBLIC=(Este correo ser� p�blico. Escriba lo que quiera. Prueba de Spam)
-REGISTER_FAKEEMAIL_EXPLAIN= Si este campo no est� vac�o, el e-mail real s�lo se usar� para enviarle notificaciones
+REGISTER_EMAILPUBLIC=(Este correo ser? p?blico. Escriba lo que quiera. Prueba de Spam)
+REGISTER_FAKEEMAIL_EXPLAIN= Si este campo no est? vac?o, el e-mail real s?lo se usar? para enviarle notificaciones
 REGISTER_QUESTION=Pregunta secreta
 REGISTER_ANSWER=Respuesta secreta
-REGISTER_ASREGUSER=Como usuario registrado, usted podr�:
+REGISTER_ASREGUSER=Como usuario registrado, usted podr?:
 REGISTER_ASREG6=Elegir diferentes estilos
 REGISTER_ASREG5=Personalizar los comentarios
-REGISTER_ASREG4=Elegir cu�ntos objetos nuevos mostrar en la p�gina de inicio
-REGISTER_ASREG3=Tener un buz�n personal en la p�gina de inicio
+REGISTER_ASREG4=Elegir cu?ntos objetos nuevos mostrar en la p?gina de inicio
+REGISTER_ASREG3=Tener un buz?n personal en la p?gina de inicio
 REGISTER_ASREG2=Enviar noticias con su usuario
 REGISTER_ASREG1=Responder con su usuario.
-REGISTER_REGISTERNOW=�Reg�strese ahora! �Es gratis!
-REGISTER_WEDONTGIVE=No venderemos o daremos a otros su informaci�n personal.
+REGISTER_REGISTERNOW=?Reg?strese ahora! ?Es gratis!
+REGISTER_WEDONTGIVE=No venderemos o daremos a otros su informaci?n personal.
 REGISTER_ALREADYHAVEACCOUNT=Usted ya tiene una cuenta:
 REGISTER_SIGNIN=Entrar
 REGISTER_GIVENNAME=Nombre
 REGISTER_FAMILYNAME=Apellido
-REGISTER_PERSONALINFO=Informaci�n personal
-REGISTER_VIEWREALEMAIL=Permitir a otros usuarios ver mi direcci�n de e-mail real
-REGISTER_HOMEPAGE=Direcci�n de su pagina personal
+REGISTER_PERSONALINFO=Informaci?n personal
+REGISTER_VIEWREALEMAIL=Permitir a otros usuarios ver mi direcci?n de e-mail real
+REGISTER_HOMEPAGE=Direcci?n de su pagina personal
 REGISTER_TIMEZONEOFFSET=Zona horaria
 REGISTER_THEME=Estilo
 REGISTER_DEFAULT_THEME=Site Default
@@ -223,46 +223,43 @@
 REGISTER_OCCUPATION=Puesto
 REGISTER_INTERESTS=Intereses
 REGISTER_SIGNATURE=Firma
-REGISTER_EXTRAINFO=Informaci�n adicional
+REGISTER_EXTRAINFO=Informaci?n adicional
 REGISTER_CANKNOWABOUT=(255 caracteres max. Introduzca lo que quiera que otros conozcan de usted)
 REGISTER_SAVECHANGES=Guardar cambios
-REGISTER_CONFIRMATIONEMAIL=email de confirmaci�n
+REGISTER_CONFIRMATIONEMAIL=email de confirmaci?n
 
-REGISTER_SHOWMENU=Volver al men� de usuario
+REGISTER_SHOWMENU=Volver al men? de usuario
 
-REGISTER_ERROR_INVALIDUSERNAME=El usuario no es v�lido
+REGISTER_ERROR_INVALIDUSERNAME=El usuario no es v?lido
 REGISTER_ERROR_EXISTINGUSERNAME=Este usuario ya existe
-REGISTER_ERROR_INVALIDPASSWORD1=La clave no es v�lida
-REGISTER_ERROR_INVALIDPASSWORD2=La clave no es v�lida
+REGISTER_ERROR_INVALIDPASSWORD1=La clave no es v?lida
+REGISTER_ERROR_INVALIDPASSWORD2=La clave no es v?lida
 REGISTER_ERROR_PASSWORDMISMATCH=Las Claves no coincide
-REGISTER_ERROR_INVALIDREALEMAIL=La direcci�n de E-mail no es v�lida
+REGISTER_ERROR_INVALIDREALEMAIL=La direcci?n de E-mail no es v?lida
 
-REGISTER_CONFIRM=User created successfully.
-REGISTER_ADMIN_SEARCH=View/Edit users
-
 MENU_LOGOUT=Desconectarse
 MENU_EDITPROFILE=Editar su perfil
 MENU_LISTUSERS=Listar todos los usuarios
 
 LIST_FILTERS=Aplicar filtros a la lista
-LIST_USERSPERPAGE=N�mero de usuarios por p�gina
+LIST_USERSPERPAGE=N?mero de usuarios por p?gina
 LIST_USERNAMECONTAINS=Usuario contiene
 LIST_FULLNAME=Nombre completo
 LIST_USERNAME=Nombre de usuario
-LIST_FIRSTNAME=Firstname
-LIST_LASTNAME=Lastname
+LIST_FIRSTNAME=
+LIST_LASTNAME=
 LIST_ROLES=Roles
 LIST_ACTIONS=Acciones
 LIST_ACTIONSSHOWPROFILE=Perfil
 LIST_ACTIONADDROLESTOUSER=Roles
 LIST_ACTIONEDITROLES=Editar Roles
 LIST_ACTIONDELETEUSER=Borrar el usario
-LIST_SEARCHRESULTS=Search results for
-LIST_MATCHING=Matching Users
+LIST_SEARCHRESULTS=
+LIST_MATCHING=
 FILTER=Filtro
 
-NEXTPAGE=P�gina siguiente
-PREVIOUSPAGE=P�gina anterior
+NEXTPAGE=P?gina siguiente
+PREVIOUSPAGE=P?gina anterior
 
 ASSIGNROLES=Asignar roles
 ROLESAVAILABLE=Roles disponibles
@@ -285,7 +282,7 @@
 ROLE_DELETE=Borrar el rol elegido
 ROLE_DELETED=El rol ha sido borrado
 ROLE_EDIT_MEMBERS=Editar miembros del rol
-ROLE_MAINLIST=Volver a edici�n de roles
+ROLE_MAINLIST=Volver a edici?n de roles
 
 ROLE_ERROR_DISPLAYNAMEALREADYEXISTS=Ya existe un rol con ese nombre para mostrar
 ROLE_ERROR_NAMEALREADYEXISTS=Ya existe un rol con ese nombre
@@ -298,14 +295,11 @@
 MENU_EDITROLE=Editar un rol existente
 MENU_EDITROLEMEMBERS=Editar los miembros de un rol
 
-ROLE_TEXT_1=Use this portlet to create, edit, delete and add users to roles.
-ROLE_TEXT_2=These roles are used in the Management Portlet to set access rights.
-
-// CMS ADMIN PORTLET
-TITLE_HEAD=Administraci�n de CMS
+# CMS ADMIN PORTLET
+TITLE_HEAD=Administraci?n de CMS
 TITLE_BROWSE=Explorador de directorios
 TITLE_DELETECONFIRM=Confirmar el borrado
-TITLE_CREATECOLLCONFIRM=Confirmar la creaci�n de directorio
+TITLE_CREATECOLLCONFIRM=Confirmar la creaci?n de directorio
 TITLE_COPYCONFIRM=Confirmar la copia del recurso
 TITLE_MOVECONFIRM=Confirmar el movimiento del recurso
 TITLE_VIEWFILE=Viendo las propiedades del fichero
@@ -313,17 +307,17 @@
 TITLE_CREATE=Crear fichero
 TITLE_UPLOAD=Subir fichero
 
-VALIDATIONEMAIL_1=Un usuario con esta direcci�n de email se ha registado en nuestro sitio.
-VALIDATIONEMAIL_2=Por favor, mantenga este correo para su registro. La informaci�n de su cuenta es la siguiente
-VALIDATIONEMAIL_3=Su cuenta est� actualmente inactiva. No puede usarla hasta que visite el siguiente enlace
-VALIDATIONEMAIL_4=Si no se ha registrado como miembro en nuestro sitio, no es necesario que haga nada m�s.
+VALIDATIONEMAIL_1=Un usuario con esta direcci?n de email se ha registado en nuestro sitio.
+VALIDATIONEMAIL_2=Por favor, mantenga este correo para su registro. La informaci?n de su cuenta es la siguiente
+VALIDATIONEMAIL_3=Su cuenta est? actualmente inactiva. No puede usarla hasta que visite el siguiente enlace
+VALIDATIONEMAIL_4=Si no se ha registrado como miembro en nuestro sitio, no es necesario que haga nada m?s.
 VALIDATIONEMAIL_5=Saludos,\nEl personal.
 
-PERMISSION_PICKPORTLET=Permisos de administraci�n de portlets
-PERMISSION_PERMISSIONS=Permisos para modificaci�n
+PERMISSION_PICKPORTLET=Permisos de administraci?n de portlets
+PERMISSION_PERMISSIONS=Permisos para modificaci?n
 PERMISSION_TOP=Elegir un componente para modificar
 PERMISSION_FINERGRAIN=Elegir un sub-componente para definir sus permisos
-PERMISSION_MODIFYROLES=A�adir/Borrar roles
+PERMISSION_MODIFYROLES=A?adir/Borrar roles
 PERMISSION_MODIFYINGROLES=Modificar roles para
 PERMISSION_DOMAIN=Dominio
 PERMISSION_DOMAIN_MOD=Modificar el dominio

Modified: labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/WEB-INF/classes/Resource_fr.properties
===================================================================
--- labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/WEB-INF/classes/Resource_fr.properties	2007-01-11 22:09:16 UTC (rev 8831)
+++ labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/WEB-INF/classes/Resource_fr.properties	2007-01-11 22:10:56 UTC (rev 8832)
@@ -29,37 +29,36 @@
 Descending=Descendant
 
 AIM=Addresse AIM
-ICQ=ICQ Number
-YIM=YIM Number
-MSNM=MSN Messenger
+ICQ=num\u00E9ro ICQ
+YIM=num\u00E9ro YIM
+MSNM=identifiant MSN
 
 YourAIM=Votre Addresse AIM
-YourICQ=Votre ICQ Number
-YourYIM=Votre YIM Number
-YourMSNM=Votre MSN Messenger
+YourICQ=Votre num\u00E9ro ICQ
+YourYIM=Votre identifiant YIM
+YourMSNM=Votre identifiant MSN
 
 MyEmail=Mon e-mail
 MyHomePage=Ma homepage
 
-Location=Position
+Location=R\u00E9sidence
 Occupation=Occupation
-Interests=Centres d'int�r�ts
-ExtraInfo=Informations compl�mentaires
-YourLocation=Votre lieu de r�sidence
-YourOccupation=Votre m�tier
-YourInterests=Vos centres d'int�r�ts
-UserLogin=Pseudo utilisateur
+Interests=Centres d'int\u00E9r\u00EAts
+ExtraInfo=Informations compl\u00E9mentaires
+YourLocation=Votre lieu de r\u00E9sidence
+YourOccupation=Votre m\u00E9tier
+YourInterests=Vos centres d'int\u00E9r\u00EAts
 Signature=Signature
 
 LoginSite=Login.
-Register=Enregistrement
+Register=Enregistrement.
 
-UserExist=Cet identifiant existe d�j�
+UserExist=Cet identifiant existe d\u00E9j\u00E0
 ToChangeInfo=Pour changer vos informations personnelles
 LoggingYou=Bienvenue, connexion en cours ...
-YouAreLoggedOut=Deconnexion en cours ... � bient�t \!
-PassDifferent=Les passwords sont diff�rents, ils doivent �tre identiques
-YourPassMustBe=D�sol� votre password doit comporter au moins
+YouAreLoggedOut=Deconnexion en cours ... \u00E9 bient\u00F4t \!
+PassDifferent=Les mots de passe sont diff\u00E9rents, ils doivent etre identiques
+YourPassMustBe=D\u00E9sol\u00E9 votre mot de passe doit comporter au moins
 CharLong=caracteres
 UserNotExist=Cet identifiant n\'existe pas \!
 UserRegLogin=Enregistrement/login
@@ -67,67 +66,66 @@
 RetrievePass=Mot de passe perdu
 Email=E-mail
 Options=Options
-AllowEmailView=Autoriser les autres utilisateurs � voir mon adresse e-mail
+AllowEmailView=Autoriser les autres utilisateurs \u00E9 voir mon adresse e-mail
 WelcomeTo=Bienvenue sur
-Registration=Enregistrement
+Registration=enregistrement
 
 Over13_1=J'ai
 Over13_2=ou plus ou j'ai l'autorisation de mes parents
 MustBe_1=Vous devez avoir
 MustBe_2=ou plus ou avoir l'autorisation de vos parents
-Consent_1=(En cliquant sur le lien ci-dessus vous d�clarez �tre majeur<br>
+Consent_1=(En cliquant sur le lien ci-dessus vous d\u00E9clarez \u00EAtre majeur<br>
 Consent_2=ou avoir l'autorisation de vos parents)
 Under13_1=Je ne suis pas majeur
 Under13_2=et je n'ai pas l'autorisation de mes parents
 
-Sorry=D�sol�.
+Sorry=D\u00E9sol\u00E9.
 Click=Cliquez
 Here=ici
-Return=pour revenir � la page d'accueil
+Return=pour revenir \u00EA la page d'accueil
 UserName=Identifiant
 GoBack=Back
 Finish=Terminer
 PersonalInfo=Informations personnelles
-RealName=Nom r�el
+RealName=Nom r\u00E9el
 Optional=(optionel)
-CanKnowAbout=(255 caracteres max. Pr�cisez ce que les autres peuvent savoir de vous)
+CanKnowAbout=(255 caracteres max. Pr\u00E9cisez ce que les autres peuvent savoir de vous)
 Language=Langage
-255CharMax=(255 caracteres max. Signature with HTML coding)
+255CharMax=
 YourAvatar=Votre avatar
 YourHomePage=Votre site web
-TimeZoneOffset=D�calage GMT
-EmailNotPublic=(e-mail obligatoire mais non publi�. Utilis� pour vous envoyer votre mot de passe)
-EmailPublic=(e-mail public.)
-#Required=Obligatoire
+TimeZoneOffset=D\u00E9calage GMT
+EmailNotPublic=(Email obligatoire mais non publique. Utilis\u00E9 pour vous envoyer votre mot de passe)
+EmailPublic=(Eail public.)
 SaveChanges=Enregistrer les modifications
-SaveChange=Enregistrer les modifications
+SaveChange=Enregistrer la modification
 TypeNewPassword=(saisissez un nouveau mot de passe 2 fois pour valider)
 Search=Chercher
 All=Tous
-UsersFoundFor=utilisateurs trouv�s
+UsersFoundFor=utilisateurs trouv\u00E9s
 Pages=pages
-UsersShown=utilisateurs visualis�s
+UsersShown=utilisateurs montr\u00E9s
 Delete=Supprimer
 Edit=Editer
 Ok=Ok
-Cancel=Cancel
+Cancel=Annuler
 AreYouSureToDeleteUser=Voulez-vous vraiment supprimer l\'utilisateur \?
-UserDeleted=Utilisateur supprim�
-ReturnToMemberList=Revenir � la liste des membres
+UserDeleted=Utilisateur supprim\u00E9
+ReturnToMemberList=Revenir \u00EA la liste des membres
 Avatar=Avatar
 AdminFunctions=Fonctions d\'administration
 URL=URL
-UpdateUser=Mise � jour
-UserID=ID Utilisateur
+UpdateUser=Mise \u00EA jour
+UserID=Identifiant Utilisateur
 ForChanges=(modifications seulement)
 MemberList=Liste des membres
 SearchTip=Choisir une lettre, cliquer sur Tous ou entrez un nom de membre
 
 ThemeText1=Cette option change le style pour tout le site
 ThemeText2=Les changement ne concernent que vous
-ThemeText3=Chaque utilisateur peut consulter le site avec le th�me de son choix
-SelectTheme=Selectionner un th�me
-ThemeSelection=Selection d\'un th�me
+ThemeText3=Chaque utilisateur peut consulter le site avec le theme de son choix
+SelectTheme=Selectionner un theme
+ThemeSelection=Selection d\'un theme
 
 CannotLogin=Connexion impossible
 
@@ -135,18 +133,18 @@
 LoginNoSuchUser=L\'utilisateur n\'existe pas
 LoginBadPassword=Le mot de passe n\'est pas valide
 LoginUnexpectedError=Erreur inconnue
-LoginUserDisabled=Votre compte est bloqu�. Consultez un aministrateur
+LoginUserDisabled=Votre compte est bloqu\u00E9. Consultez un aministrateur
 
 Enable=Permettre
 Disable=Interdire
-StatusChanged=Le status de l\'utilisateur a �t� chang�
+StatusChanged=Le status de l\'utilisateur a \u00E9t\u00E9 chang\u00E9
 
-NotAuth=Op�ration non autoris�e
+NotAuth=Op\u00E9ration non autoris\u00E9e
 
 REMEMBERME=Enregistrer
-LOGIN=Login 
+LOGIN=Login
 USERNAME=Identifiant
-PASSWORD=Password
+PASSWORD=Mot de passe
 USERLOGIN=Pseudo utilisateur
 
 OPTIONAL=Facultatif
@@ -157,40 +155,35 @@
 NAMENOTAVAILABLE=N/D
 
 # Registration
-REGISER_NOT_LOGGED_IN=You are currently not logged in.
-REGISTER_REGISTER=Cr�er un compte
-REGISTER_REGISTER_LINK=Cr�er un compte
-REGISTER_REGISTER_ADMIN_LINK=Cr�er un compte
-REGISTER_TY=Thank you for registering.
-REGISTER_BASICINFO=Basic User Information
-REGISTER_IM=Instant Message Identities
-REGISTER_ADDITIONAL=Additional Optional User Information
+REGISER_NOT_LOGGED_IN=
+REGISTER_REGISTER=Cr\u00E9er un compte
+REGISTER_REGISTER_ADMIN_LINK=Cr\u00E9er un compte
 REGISTER_NEWUSER=Enregistrement d'un nouvel utilisateur
 REGISTER_PASSWORDAGAIN=Comfirmer votre mot de passe
-REGISTER_REALEMAIL=e-mail r�el
-REGISTER_FAKEEMAIL=e-mail public
-REGISTER_FAKEEMAIL_EXPLAIN=Si ce champ n'est pas vide, l'email r�el ne sera utilis� que pour envoyer des notifications
-REGISTER_QUESTION=Question secr�te
-REGISTER_ANSWER=R�ponse secr�te
-REGISTER_ASREGUSER=En �tant enregistr� vous pouvez:
-REGISTER_ASREG6=Choisir parmi plusieurs th�mes 
+REGISTER_REALEMAIL=e-mail r\u00E9el
+REGISTER_FAKEEMAIL=E-mail public
+REGISTER_FAKEEMAIL_EXPLAIN=Si ce champ n'est pas vide, l'email r\u00E9el ne sera utilis\u00E9 que pour envoyer des notifications
+REGISTER_QUESTION=Question secr\u00E8te
+REGISTER_ANSWER=R\u00E9ponse secr\u00E8te
+REGISTER_ASREGUSER=En \u00E9tant enregistr\u00E9 vous pouvez:
+REGISTER_ASREG6=Choisir parmi plusieurs th\u00E8mes
 REGISTER_ASREG5=Personnaliser les commentaires
 REGISTER_ASREG4=Personnaliser la page d'accueil
 REGISTER_ASREG3=Avoir une boite de saisie de mot de passe sur la page d'accueil
 REGISTER_ASREG2=Poster des news
 REGISTER_ASREG1=Poster des commentaires
 REGISTER_REGISTERNOW=Enregistrez-vous! C'est gratuit!
-REGISTER_WEDONTGIVE=Nous ne communiquons pas les donn�es personnelles
+REGISTER_WEDONTGIVE=Nous ne communiquons pas les donn\u00E9es personnelles
 
 REGISTER_ALREADYHAVEACCOUNT=Vous avex deja un compte:
 REGISTER_SIGNIN=Se connecter
-REGISTER_GIVENNAME=Prenom
+REGISTER_GIVENNAME=Pr\u00E9nom
 REGISTER_FAMILYNAME=Nom
-REGISTER_PERSONALINFO=INformation personelles
+REGISTER_PERSONALINFO=Information personelles
 REGISTER_VIEWREALEMAIL=Permet aux autres utilisateurs de voir ma vraie adresse e-mail.
 REGISTER_HOMEPAGE=Addresse de votre site web
 REGISTER_TIMEZONEOFFSET=Time zone
-REGISTER_THEME=Th�me
+REGISTER_THEME=Th\u00E8me
 REGISTER_DEFAULT_THEME=Site Default
 REGISTER_ICQ=Numero ICQ
 REGISTER_AIM=Identifiant AIM
@@ -210,15 +203,12 @@
 REGISTER_SHOWMENU=Retour au menu utilisateur
 
 REGISTER_ERROR_INVALIDUSERNAME=L'identifiant n'est pas valide
-REGISTER_ERROR_EXISTINGUSERNAME=Cet identifiant est deja pris
+REGISTER_ERROR_EXISTINGUSERNAME=Cet identifiant est d\u00E9j\u00E0 pris
 REGISTER_ERROR_INVALIDPASSWORD1=Le mot de passe n'est pas valide
 REGISTER_ERROR_INVALIDPASSWORD2=Le mot de passe n'est pas valide
-REGISTER_ERROR_PASSWORDMISMATCH=les mots de passe sont differents
+REGISTER_ERROR_PASSWORDMISMATCH=les mots de passe sont diff\u00E9rents
 REGISTER_ERROR_INVALIDREALEMAIL=Adresse email invalide
 
-REGISTER_CONFIRM=User created successfully.
-REGISTER_ADMIN_SEARCH=View/Edit users
-
 MENU_LOGOUT=Deconnection
 MENU_EDITPROFILE=Editer votre profile
 MENU_LISTUSERS=Liste des utilisateurs
@@ -228,15 +218,11 @@
 LIST_USERNAMECONTAINS=Identifiant contient
 LIST_FULLNAME=Nom complet
 LIST_USERNAME=Identifiant
-LIST_FIRSTNAME=Firstname
-LIST_LASTNAME=Lastname
 LIST_ROLES=Roles
 LIST_ACTIONS=Actions
 LIST_ACTIONSSHOWPROFILE=Profil
 LIST_ACTIONADDROLESTOUSER=Roles
-LIST_ACTIONDELETEUSER=Delete user
-LIST_SEARCHRESULTS=Search results for
-LIST_MATCHING=Matching Users
+LIST_ACTIONDELETEUSER=Supprimer un utilisateur
 FILTER=Filtre
 
 NEXTPAGE=Page suivante
@@ -268,10 +254,7 @@
 MENU_CREATEROLE=Creer nouveau role
 MENU_EDITROLE=Editer un role existant
 
-ROLE_TEXT_1=Use this portlet to create, edit, delete and add users to roles.
-ROLE_TEXT_2=These roles are used in the Management Portlet to set access rights.
-
-// CMS ADMIN PORTLET
+# CMS ADMIN PORTLET
 TITLE_HEAD=Administration CMS
 TITLE_BROWSE=Navigation repertoires
 TITLE_DELETECONFIRM=Confirmer la suppression
@@ -282,9 +265,38 @@
 TITLE_EDIT=Editer le fichier
 TITLE_CREATE=Creer le fichier
 TITLE_UPLOAD=Charger le fichier
+TITLE_SECURECONFIRM=S\u00E9curiser le noeud
 
 VALIDATIONEMAIL_1=Un utilisateur s'est enregistre avec cette adresse email.
 VALIDATIONEMAIL_2=Merci de garder cet email. Vos informations sont les suivantes
 VALIDATIONEMAIL_3=Votre compte est desactive pour le moment. Vous en pouvez pas l'utiliser tant que vous n'aurez pas clique sur le lien suivant
 VALIDATIONEMAIL_4=Si vous n'avez pas demande a etre membre, ne faite rien.
 VALIDATIONEMAIL_5=Cordialement.
+TITLE_FILEBROWSE=Explorateur de fichier
+_ASREGISTERED=Vous n'avez pas de compte? vous pouvez en cr\u00E9er <a href\="">un</a>.
+Question=Question secr\u00E8te
+Answer=R\u00E9ponse secr\u00E8te
+EmailVerify=Liens d'activation envoy\u00E9 par email! Consultez vos emails et clickez sur le client d'activation pour activer votre compte.
+AccountActivated=Compte activ\u00E9
+UnableActivate=Impossible de v\u00E9rifier l'utilisateur
+RegNewUser=Enregistrement d'un nouvel utilisateur
+PasswordAgain=Confirmez votre mot de passe
+AsRegUser=En tant qu'utilisateur enregistr\u00E9 vous pouvez\:
+AsReg6=Selectionnez parmis les diff\u00E9rents th\u00E8mes
+AsReg5=Pesonnalizez les commentaires
+AsReg4=Choisissez combien d'items vous voulez afficher sur votre page
+AsReg2=Envoyez une news avec votre nom d'utilisateur
+AsReg1=Soumettre un commentaire avec votre nom
+RegisterNow=Enregistrez vous\! c'est gratuit\!
+WeDontGive=Nous ne donnons ni ne vendons vos informations personelles.
+REGISTER_EMAILNOTPUBLIC=(Cet e-mail ne sera pas public mais est obligatoire. Il sera utilis\u00E9 pour vous envoyer votre mot de passe)
+REGISTER_EMAILPUBLIC=(Cet e-mail sera public. Mettez ce que vous d\u00E9sirez)
+LIST_ACTIONEDITROLES=Editer les roles
+ROLE_SELECTONETODELETE=Selectionnez un role \u00EA supprimer
+ROLE_DELETE=Supprimer le role selectionn\u00E9
+ROLE_DELETED=Le role a \u00E9t\u00E9 supprim\u00E9
+ROLE_EDIT_MEMBERS=Edit les roles
+ROLE_MAINLIST=Retour \u00E0 l'\u00E9dition de roles
+ROLE_EDIT_USER=Editez les utilisateurs pour un role donn\u00E9
+ROLE_ERROR_DELETE_FAILED=Le role n'a pu etre supprim\u00E9
+MENU_EDITROLEMEMBERS=Editer les roles

Added: labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/WEB-INF/classes/Resource_pt_BR.properties
===================================================================
--- labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/WEB-INF/classes/Resource_pt_BR.properties	2007-01-11 22:09:16 UTC (rev 8831)
+++ labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/WEB-INF/classes/Resource_pt_BR.properties	2007-01-11 22:10:56 UTC (rev 8832)
@@ -0,0 +1,355 @@
+################################################################################
+# JBoss, a division of Red Hat                                                 #
+# Copyright 2006, Red Hat Middleware, LLC, and individual                      #
+# contributors as indicated by the @authors tag. See the                       #
+# copyright.txt in the distribution for a full listing of                      #
+# individual contributors.                                                     #
+#                                                                              #
+# This 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 software 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 software; if not, write to the Free                  #
+# Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA           #
+# 02110-1301 USA, or see the FSF site: http://www.fsf.org.                     #
+################################################################################
+
+_ASREGISTERED=Ainda n?o possu? uma conta? Voc? pode <a href\="">criar uma</a>.
+_BLOCKNICKNAME=Usu?rio
+_BLOCKPASSWORD=Senha
+
+MessageOrder=Ordem
+Ascending=Crescente
+Descending=Decrescente
+
+AIM=AIM
+ICQ=ICQ
+YIM=YIM
+MSNM=MSN
+
+YourAIM=AIM
+YourICQ=ICQ
+YourYIM=YIM
+YourMSNM=MSN
+
+MyEmail=Meu e-mail
+MyHomePage=Minha homepage
+
+Question=Pergunta secreta
+Answer=Resposta secreta
+Location=Localidade
+Occupation=Profiss?o
+Interests=Interesses
+ExtraInfo=Informa??o Extra
+YourLocation=Sua localidade
+YourOccupation=Sua profiss?o
+YourInterests=Seus interesses
+Signature=Assinatura
+
+LoginSite=Entrar.
+Register=Registrar.
+
+UserExist=Usu?rio j? existe
+ToChangeInfo=para mudar seus dados
+EmailVerify=Endere?o de ativa??o enviado! Verifique seu email e clique no link de ativa??o para ativar sua conta.
+AccountActivated=Conta ativada com sucesso!
+UnableActivate=N?o foi possivel v?lidar usu?rio.
+LoggingYou=Entrando, aguarde\!
+YouAreLoggedOut=Voc? n?o est? deslogado\!
+PassDifferent=As senhas s?o diferentes. Devem ser id?nticas.
+YourPassMustBe=Desculpe, sua senha deve ter pelo menos
+CharLong=d?gitos
+UserNotExist=Usu?rio n?o encontrado\!
+UserRegLogin=User registration/login
+SelectOption=Selecione uma op??o do menu abaixo\:
+RetrievePass=Recuperar senha.
+RegNewUser=New user registration
+PasswordAgain=Confirme sua senha
+Email=E-mail
+Options=Op??es
+AllowEmailView=Permitir outros usu?rios visualizarem meu endere?o e-mail
+AsRegUser=Como usu?rio registrado voc? pode\:
+AsReg6=Selecionar temas diferentes
+AsReg5=Personalizar os coment?rios
+AsReg4=Seleciona quantos items devem ser mostrados na p?gina principal
+AsReg3=
+AsReg2=Enviar not?cias com seu nome de usu?rio
+AsReg1=Postar coment?rios com seu nome de usu?rio
+RegisterNow=Registre agora\! ? de gra?a\!
+WeDontGive=N?s n?o vendemos/distribu?mos suas informa??es pessoais.
+WelcomeTo=Bem-vido ?
+Registration=?rea de registro.
+
+Over13_1=Eu sou
+Over13_2=de maior ou tenho consentimento de respons?veis
+MustBe_1=Voc? deve ser
+MustBe_2=de maior, ou permiss?o de respons?veis para me registrar aqui.
+Consent_1=(Ao clicar no link acima voc? garante que voc? ?<br>
+Consent_2=de maior, ou possu? permiss?o de respons?veis para se registrar.)
+Under13_1=Eu sou de menor
+Under13_2=e n?o tenho permiss?o de respons?veis.
+
+Sorry=Desculpe.
+Click=Por favor, clique
+Here=aqui
+Return=para retornar ? p?gina principal.
+UserName=Usu?rio
+GoBack=Voltar
+Finish=Terminar
+PersonalInfo=Informa??o Pessoal
+RealName=Nome Real
+Optional=(opcional)
+CanKnowAbout=(255 letras no m?x. Digite o que voc? gostaria que os outros soubessem sobre voc?)
+Language=L?ngua
+255CharMax=(255 letras no m?x. Digite sua assinatura com c?digos HMTL)
+YourAvatar=Seu avatar
+YourHomePage=Seu website
+TimeZoneOffset=Fuso hor?rio
+EmailNotPublic=(Esse email n?o ser? mostrado, mas ? necess?rio. Ser? usado para enviar sua senha em caso de perda.)
+EmailPublic=(Esse email ser? mostrado. Entre o que desejar.)
+RealEmail=E-mail real
+FakeEmail=E-mail falso
+Required=(necess?rio)
+NewUser=Novo usu?rio
+SaveChanges=Salvar Mudan?as
+SaveChange=Salvar Mudan?a
+TypeNewPassword=(digite uma senha nova duas vezes para alter?-la)
+Search=Procurar
+All=Todos
+UsersFoundFor=usu?rios encontrados para
+Pages=p?ginas
+UsersShown=usu?rios mostrados
+Delete=Remover
+Edit=Editar
+Ok=Ok
+Cancel=Cancelar
+AreYouSureToDeleteUser=Voc? tem certeza que deseja remover o usu?rio?
+UserDeleted=Usu?rio removido
+ReturnToMemberList=Voltar ? lista de usu?rios
+Avatar=Avatar
+AdminFunctions=Opera??es Admin
+URL=URL
+UpdateUser=Atualizar usu?rio
+UserID=ID do Usu?rio
+ForChanges=(Para altera??es apenas)
+MemberList=Lista de membros
+SearchTip=Dica: escolha uma letra, mostre todos ou procure por um usu?rio se voc? sabe seu nome.
+
+ThemeText1=Essa op??o vai alterar o visual de todo o site.
+ThemeText2=Essas mudan?as ser?o v?lidas apenas para voc?.
+ThemeText3=Cada usu?rio pode ver o site com um tema diferente.
+SelectTheme=Selecione um tema
+ThemeSelection=Sele??o de Tema
+
+CannotLogin=N?o foi poss?vel efetuar o login
+
+LoginInvalidName=o nome do usu?rio n?o ? v?lido
+LoginNoSuchUser=o nome do usu?rio n?o existe
+LoginBadPassword=sua senha n?o est? correta
+LoginUnexpectedError=unexpected error
+LoginUserDisabled=sua conta foi bloqueada. Favor entrar em contato com o administrador.
+
+Enable=Habilitar
+Disable=Desabilitar
+StatusChanged=O estatus do usu?rio foi alterado com sucesso
+
+NotAuth=Voc? n?o tem permiss?o para realizar essa opera??o
+
+# Used by JBoss Portal
+
+REMEMBERME=Lembre-me
+LOGIN=Login
+USERNAME=Usu?rio
+PASSWORD=Senha
+USERLOGIN=Login de Usu?rio
+
+OPTIONAL=Opcional
+REQUIRED=Requerido
+
+255MAX=(M?ximo de 255 caracteres)
+
+NAMENOTAVAILABLE=N/A
+
+#Registration
+REGISTER_REGISTER=N?o possu? conta ainda? Voc? pode
+REGISTER_REGISTER_LINK=criar uma\!
+REGISTER_NEWUSER=Registro de novo usu?rio
+REGISTER_PASSWORDAGAIN=Confirme sua senha
+REGISTER_REALEMAIL=E-mail real
+REGISTER_EMAILNOTPUBLIC=(Esse email n?o ser? mostrado, mas ? necess?rio. Ser? usado para enviar sua senha em caso de perda.)
+REGISTER_FAKEEMAIL=E-mail falso
+REGISTER_EMAILPUBLIC=(Esse email ser? mostrado. Entre o que desejar.)
+REGISTER_FAKEEMAIL_EXPLAIN=Se este campo n?o estiver vazio, o email real ser? utilizado apenas para enviar notifica??es
+REGISTER_QUESTION=Pergunta secreta
+REGISTER_ANSWER=Resposta secreta
+REGISTER_ASREGUSER=Como usu?rio registrado voc? pode:
+REGISTER_ASREG6=Selecione temas diferentes
+REGISTER_ASREG5=Personalizar os coment?rios
+REGISTER_ASREG4=Selecionar quantos items ser?o mostrados na p?gina inicial
+REGISTER_ASREG3=Possuir uma janela pessoal na p?gina inicial
+REGISTER_ASREG2=Enviar not?cias com o seu nome
+REGISTER_ASREG1=Postar coment?rios com o seu nome
+REGISTER_REGISTERNOW=Registre agora, ? gr?tis!
+REGISTER_WEDONTGIVE=N?s n?o vendemos/distribuimos suas informa??es pessoais.
+REGISTER_ALREADYHAVEACCOUNT=Se voce j? possu? uma conta:
+REGISTER_SIGNIN=Entrar
+REGISTER_GIVENNAME=Primeiro nome
+REGISTER_FAMILYNAME=?ltimo nome
+REGISTER_PERSONALINFO=Informa??es Pessoais
+REGISTER_VIEWREALEMAIL=Permitir que outros usu?rios vejam meu email verdadeiro
+REGISTER_HOMEPAGE=Endere?o de seu site pessoal
+REGISTER_TIMEZONEOFFSET=Fuso hor?rio
+REGISTER_ICQ=ICQ
+REGISTER_AIM=AIM
+REGISTER_YIM=Yahoo
+REGISTER_MSNM=MSN
+REGISTER_SKYPE=Skype
+REGISTER_LOCATION=Localidade
+REGISTER_LANGUAGE=L?ngua preferida
+REGISTER_OCCUPATION=Trabalho
+REGISTER_INTERESTS=Interesses
+REGISTER_SIGNATURE=Assinatura
+REGISTER_EXTRAINFO=Informa??es extras
+REGISTER_CANKNOWABOUT=(255 letras no m?x. Digite o que voc? gostaria que os outros soubessem sobre voc?)
+REGISTER_SAVECHANGES=Salvar atualiza??es
+REGISTER_CONFIRMATIONEMAIL=Email de confirma??o
+
+REGISTER_SHOWMENU=Voltar ao menu de usu?rio
+
+REGISTER_ERROR_INVALIDUSERNAME=Usu?rio inv?lido
+REGISTER_ERROR_EXISTINGUSERNAME=Esse usu?rio j? est? em uso
+REGISTER_ERROR_INVALIDPASSWORD1=Senha inv?lida
+REGISTER_ERROR_INVALIDPASSWORD2=Senha inv?lida
+REGISTER_ERROR_PASSWORDMISMATCH=Senhas n?o conferem
+REGISTER_ERROR_INVALIDREALEMAIL=Email inv?lido
+
+
+MENU_LOGOUT=Sair
+MENU_EDITPROFILE=Editar seu perfil
+MENU_LISTUSERS=Listar todos os usu?rios
+
+LIST_FILTERS=Aplicar filtro
+LIST_USERSPERPAGE=Usu?rios por p?gina
+LIST_USERNAMECONTAINS=Nome cont?m
+LIST_FULLNAME=Nome completo
+LIST_USERNAME=Usu?rio
+LIST_ROLES=Grupos
+LIST_ACTIONS=A??es
+LIST_ACTIONSSHOWPROFILE=Perfil
+LIST_ACTIONADDROLESTOUSER=Grupos
+LIST_ACTIONEDITROLES=Editar Grupos
+FILTER=Filtro
+
+NEXTPAGE=Pr?xima p?gina
+PREVIOUSPAGE=P?gina anterior
+
+ASSIGNROLES=Atribuir grupo
+ROLESAVAILABLE=Grupos dispon?veis
+EDITROLESFORUSER=Editar grupos do usu?rio
+
+
+ROLE_THEREARE=Existem
+ROLE_THEREIS=Existe
+ROLE_ROLESDEFINED=grupos definidos
+ROLE_ROLEDEFINED=grupo definido
+
+ROLE_NAME=Nome do novo grupo
+ROLE_DISPLAYNAME=Nome vis?vel do grupo
+ROLE_NEWDISPLAYNAME=Novo nome vis?vel do grupo
+ROLE_SELECTONETOMODIFY= Selecione o grupo para alterar
+ROLE_SELECTONETODELETE= Selecione o grupo para remover
+ROLE_CREATE=Criar grupo
+ROLE_UPDATE=Atualizar grupo
+ROLE_EDIT=Editar grupo
+ROLE_DELETE=Remover grupo selecionado
+ROLE_DELETED=O grupo foi removido
+ROLE_EDIT_MEMBERS=Editar membros do grupo
+ROLE_MAINLIST=Voltar
+
+ROLE_ERROR_DISPLAYNAMEALREADYEXISTS=J? existe um grupo com esse nome (vis?vel)
+ROLE_ERROR_NAMEALREADYEXISTS=J? existe um grupo com esse nome
+ROLE_ERROR_NAMEEMPTY=O nome n?o pode ser vazio
+ROLE_ERROR_DISPLAYNAMEEMPTY=O nome vis?vel nao pode ser vazio
+ROLE_ERROR_DELETE_FAILED=N?o ? poss?vel remover o grupo
+ROLE_EDIT_USER=Editando usu?rios do grupo
+
+MENU_CREATEROLE=Criar novo grupo
+MENU_EDITROLE=Editar grupo
+MENU_EDITROLEMEMBERS=Editar membros do grupo
+
+# CMS ADMIN PORTLET
+TITLE_HEAD=CMS Admin
+TITLE_BROWSE=Navegador de Diret?rios
+TITLE_FILEBROWSE=Navegador de Arquivos
+TITLE_DELETECONFIRM=Confirmar remo??o
+TITLE_CREATECOLLCONFIRM=Confirmar cria??o de diret?rio
+TITLE_COPYCONFIRM=Confirm Resource Copy
+TITLE_MOVECONFIRM=Confirm Resource Move
+TITLE_VIEWFILE=Visualizando Propriedades de Arquivo
+TITLE_EDIT=Editar Arquivo
+TITLE_CREATE=Criar Arquivo
+TITLE_UPLOAD=Enviar Arquivo
+
+CMS_MENU=Menu de A??es
+CMS_ACTION=A??o
+CMS_NAME=Nome
+CMS_TYPE=Tipo
+CMS_CREATED=Criado
+CMS_MODIFIED=Modificado
+CMS_DESCRIPTION=Descri??o
+CMS_VIEW=Visualizar
+CMS_COPY=Copiar
+CMS_MOVE=Mover
+CMS_DELETE=Remover
+CMS_FOLDER=Pasta
+CMS_FILE=Arquivo
+CMS_CREATE=Criar
+CMS_RESET=Resetar
+CMS_EDIT=Editar
+CMS_UPLOAD=Enviar
+CMS_MODIFY=Modificar
+CMS_CREATEFOLDER=Criar Pasta
+CMS_CREATEFILE=Criar Diret?rio
+CMS_UPLOADARCHIVE=Enviar Arquivo
+CMS_BACKTOBROWSER=Voltar ao Navegador de Diret?rios
+
+CMS_CREATEFILEINDIR=Criando Arquivo em Diret?rio
+CMS_FILENAME=Nome do Arquivo
+CMS_TITLE=T?tulo
+CMS_LANGUAGE=L?ngua
+
+CMS_DELETEPATH=Confirmar remo??o de
+CMS_DELETEWARN1=ATEN??O\! Voc? n?o poderar desfazer estas altera??es\!
+CMS_DELETEWARN2=Voc? tem certeza que deseja remover\?
+
+CMS_DESTINATION=Destino
+CMS_SOURCE=Fonte
+
+CMS_EDITING=Editando Arquivo
+CMS_LIVE=Tornar \"Ativo\"
+CMS_VERSION=Vers?o
+
+CMS_LIVEVERSION=Vers?o \"Ativa\"
+CMS_SIZE=Tamanho
+
+VALIDATIONEMAIL_1=Um usu?rio com este endere?o de email j? existe em nosso sistema.
+VALIDATIONEMAIL_2=Mantenha esse email salvo. As informa??es de sua conta est?o a seguir
+VALIDATIONEMAIL_3=Sua conta esta atualmente inativa. Voc? n?o pode utiliz?-la at? visitar o link
+VALIDATIONEMAIL_4=Se voc? n?o se cadastrar em nosso site, nenhuma outra a??o ? necess?ria.
+VALIDATIONEMAIL_5=Atenciosamente,\nA Ger?ncia.
+
+PERMISSION_PICKPORTLET=Administra??o de Permiss?es de Portlet
+PERMISSION_PERMISSIONS=Permiss?es para modificar
+PERMISSION_TOP=Selecione um Componente para Modificar
+PERMISSION_FINERGRAIN=Selecione um sub-componente para definir suar permiss?es
+PERMISSION_MODIFYROLES=Adicionar/Remover roles
+PERMISSION_MODIFYINGROLES=Modificando roles para
+PERMISSION_DOMAIN=Dominio
+PERMISSION_DOMAIN_MOD=Modificar Dominio
\ No newline at end of file

Modified: labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/WEB-INF/jboss-portlet.xml
===================================================================
--- labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/WEB-INF/jboss-portlet.xml	2007-01-11 22:09:16 UTC (rev 8831)
+++ labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/WEB-INF/jboss-portlet.xml	2007-01-11 22:10:56 UTC (rev 8832)
@@ -34,13 +34,13 @@
          <script type="text/javascript" language="javascript">
             function hideShow(id)
             {
-               var navpoint = document.getElementById(id);
-               if (navpoint.className == 'hidden') {
-                  navpoint.className = 'shown';
-               } else {
-                  navpoint.className = 'hidden';
-               }
+            var navpoint = document.getElementById(id);
+            if (navpoint.className == 'hidden') {
+            navpoint.className = 'shown';
+            } else {
+            navpoint.className = 'hidden';
             }
+            }
          </script>
       </header-content>
       <transaction>
@@ -48,7 +48,10 @@
       </transaction>
    </portlet>
    <portlet>
-      <portlet-name>AdminCMSPortlet</portlet-name>
+      <portlet-name>CMSAdminPortlet</portlet-name>
+      <header-content>
+         <link rel="stylesheet" type="text/css" href="/images/cms/admin/style.css" title="" media="screen"/>
+      </header-content>
       <transaction>
          <trans-attribute>Required</trans-attribute>
       </transaction>
@@ -89,6 +92,12 @@
          <trans-attribute>Required</trans-attribute>
       </transaction>
    </portlet>
+   <portlet>
+      <portlet-name>ConfiguratorPortlet</portlet-name>
+      <transaction>
+         <trans-attribute>Required</trans-attribute>
+      </transaction>
+   </portlet>
    <!-- Service injected in the portlet context. -->
    <service>
       <service-name>PortalObjectContainer</service-name>
@@ -126,6 +135,16 @@
       <service-ref>:service=Module,type=Role</service-ref>
    </service>
    <service>
+      <service-name>UserProfileModule</service-name>
+      <service-class>org.jboss.portal.identity.UserProfileModule</service-class>
+      <service-ref>:service=Module,type=UserProfile</service-ref>
+   </service>
+   <service>
+      <service-name>MembershipModule</service-name>
+      <service-class>org.jboss.portal.identity.MembershipModule</service-class>
+      <service-ref>:service=Module,type=Membership</service-ref>
+   </service>
+   <service>
       <service-name>MailModule</service-name>
       <service-class>org.jboss.portal.core.modules.MailModule</service-class>
       <service-ref>:service=Module,type=Mail</service-ref>

Modified: labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/WEB-INF/jsp/admin/index.jsp
===================================================================
--- labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/WEB-INF/jsp/admin/index.jsp	2007-01-11 22:09:16 UTC (rev 8831)
+++ labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/WEB-INF/jsp/admin/index.jsp	2007-01-11 22:10:56 UTC (rev 8832)
@@ -25,7 +25,8 @@
 <form method="post" action="<portlet:renderURL/>"/>
    <select name="application" class="inputbox" size="1">
       <option value=""></option>
-<%    for (Iterator i = container.getApplications().iterator();i.hasNext();)
+<%
+      for (Iterator i = container.getApplications().iterator();i.hasNext();)
       {
          Application app = (Application)i.next();
          String appName = app.getName();
@@ -35,9 +36,9 @@
             targetApp = app;
          }
 %>
-      <option value="<%= appName %>" <%= selected ? " selected=\"selected\"" : "" %>><%= appName %></option>
+      <option value="<%= appName %>" <%= selected ? " selected=\"selected\"" : "" %>><%=appName%></option>
 <%
-      }
+}
 %>
    </select>
    <input type="submit" value="infos"/>
@@ -71,18 +72,18 @@
          <a href="<portlet:renderURL>
                      <portlet:param name="application" value="<%= targetApp.getName() %>"/>
                      <portlet:param name="component" value="<%= comp.getName() %>"/>
-                  </portlet:renderURL>"><%= comp.getName() %>
+                  </portlet:renderURL>"><%=comp.getName()%>
          </a>
       </td>
       <td>
-         <%= expirationCache != null ? expirationCache.toString() : "-"  %>
+         <%=expirationCache != null ? expirationCache.toString() : "-"%>
       </td>
       <td>
          <input type="submit" name="<%= comp.getName() %>" value="create"/>
       </td>
    </tr>
 <%
-      }
+}
 %>
    <tr>
       <td colspan="3">
@@ -99,9 +100,9 @@
       {
          Portal portal = (Portal)j.next();
 %>
-            <option name="<%= portal.getName() %>"><%= portal.getName() %></option>
+            <option name="<%= portal.getName() %>"><%=portal.getName()%></option>
 <%
-      }
+}
 %>
          </select>
       </td>
@@ -109,7 +110,7 @@
 </table>
 </form>
 <%
-   }
+}
 %>
 
 <hr height="1"/>
@@ -122,7 +123,8 @@
       <th>portal</th>
       <th>action</th>
    </tr>
-<%    for (Iterator i = container.getPortals().iterator();i.hasNext();)
+<%
+      for (Iterator i = container.getPortals().iterator();i.hasNext();)
       {
          Portal portal = (Portal)i.next();
          String portalName = portal.getName();

Modified: labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/WEB-INF/jsp/cms/admin/confirmcreatecollection.jsp
===================================================================
--- labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/WEB-INF/jsp/cms/admin/confirmcreatecollection.jsp	2007-01-11 22:09:16 UTC (rev 8831)
+++ labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/WEB-INF/jsp/cms/admin/confirmcreatecollection.jsp	2007-01-11 22:10:56 UTC (rev 8832)
@@ -4,7 +4,7 @@
 <%@ page isELIgnored="false" %>
 
 <%
-   String sCurrPath = (String) request.getAttribute("createpath");
+   String sCurrPath = (String)request.getAttribute("createpath");
    String OP = CMSAdminConstants.OP_CONFIRM_CREATE_COLLECTION;
 %>
 <portlet:defineObjects/>
@@ -12,6 +12,9 @@
 <table width="100%">
    <th colspan="2" class="portlet-section-header" align="center">${n:i18n("TITLE_CREATECOLLCONFIRM")}</th>
    <tr>
+      <td valign="top" width="250" class="portlet-section-alternate">
+         <%@ include file="folderlist.jsp" %>
+      </td>
       <td class="portlet-section-body" align="left">
          <form name="pickform" action="<portlet:actionURL>
     <portlet:param name="op" value="<%= CMSAdminConstants.OP_CREATE_COLLECTION %>"/>
@@ -28,25 +31,27 @@
                             class="portlet-form-input-field"/></td>
                </tr>
                <tr>
-                  <td valign="bottom">${n:i18n("CMS_NAME")}:</td><td align="left"><input class="portlet-form-input-field" type="text"
-                                                                  name="newcollectionname" size="40" maxlength="50">
-               </td>
-               </tr><tr>
-               <td valign="bottom">${n:i18n("CMS_DESCRIPTION")}:</td><td align="left"><input class="portlet-form-input-field" type="text"
-                                                                      name="newcollectiondescription"
-                                                                      size="40" maxlength="80">
-            </td>
-            </tr>
-               <tr><td></td><td>
-                  <input class="portlet-form-input-field" type="submit" value="${n:i18n("CMS_CREATE")}" name="submit">
-               </td>
+                  <td valign="bottom">${n:i18n("CMS_NAME")}:</td>
+                  <td align="left"><input class="portlet-form-input-field" type="text"
+                                          name="newcollectionname" size="40" maxlength="50">
+                  </td>
                </tr>
+               <tr>
+                  <td valign="bottom">${n:i18n("CMS_DESCRIPTION")}:</td>
+                  <td align="left"><input class="portlet-form-input-field" type="text"
+                                          name="newcollectiondescription"
+                                          size="40" maxlength="80">
+                  </td>
+               </tr>
+               <tr>
+                  <td></td>
+                  <td>
+                     <input class="portlet-form-button" type="submit" value="${n:i18n("CMS_CREATE")}" name="submit">
+                  </td>
+               </tr>
             </table>
          </form>
       </td>
-      <td valign="top" class="portlet-section-alternate">
-         <%@ include file="folderlist.jsp" %>
-      </td>
    </tr>
 </table>
 <br/><br/>

Modified: labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/WEB-INF/jsp/cms/admin/confirmdelete.jsp
===================================================================
--- labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/WEB-INF/jsp/cms/admin/confirmdelete.jsp	2007-01-11 22:09:16 UTC (rev 8831)
+++ labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/WEB-INF/jsp/cms/admin/confirmdelete.jsp	2007-01-11 22:10:56 UTC (rev 8832)
@@ -8,7 +8,7 @@
 <portlet:defineObjects/>
 
 <%
-   String sCurrPath = (String) request.getAttribute("currpath");
+   String sCurrPath = (String)request.getAttribute("currpath");
 %>
 
 <form action="<portlet:actionURL>
@@ -18,17 +18,18 @@
    <table width="100%">
       <th align="center" class="portlet-section-header">${n:i18n("TITLE_DELETECONFIRM")}</th>
       <tr>
-         <td>
-            <font class="portlet-font">${n:i18n("CMS_DELETEPATH")} <%= sCurrPath %></font>
+         <td align="center">
+            <font class="portlet-font">${n:i18n("CMS_DELETEPATH")} <%= sCurrPath %>
+            </font>
             <br><br>
-            <font class="portlet-font"><b>${n:i18n("CMS_DELETEWARN1")}</b></font>
+            <font class="portlet-font" style="color:red"><b>${n:i18n("CMS_DELETEWARN1")}</b></font>
             <br><br>
             <font class="portlet-font">${n:i18n("CMS_DELETEWARN2")}</font><br>
          </td>
       </tr>
       <tr>
          <td align="center"><input type="submit" value="${n:i18n("CMS_DELETE")}" name="submit"
-                                   class="portlet-form-input-field"></td>
+                                   class="portlet-form-button"></td>
       </tr>
    </table>
 </form>

Modified: labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/WEB-INF/jsp/cms/admin/confirmmove.jsp
===================================================================
--- labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/WEB-INF/jsp/cms/admin/confirmmove.jsp	2007-01-11 22:09:16 UTC (rev 8831)
+++ labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/WEB-INF/jsp/cms/admin/confirmmove.jsp	2007-01-11 22:10:56 UTC (rev 8832)
@@ -4,15 +4,18 @@
 <%@ page isELIgnored="false" %>
 
 <%
-   String sCurrPath = (String) request.getAttribute("currpath");
+   String sCurrPath = (String)request.getAttribute("currpath");
    String OP = CMSAdminConstants.OP_CONFIRMMOVE;
-   String sType = (String) request.getAttribute("type");
+   String sType = (String)request.getAttribute("type");
 %>
 <portlet:defineObjects/>
 
 <table width="100%">
    <th colspan="2" class="portlet-section-header" align="center">${n:i18n("TITLE_MOVECONFIRM")}</th>
    <tr>
+      <td valign="top" width="250" class="portlet-section-alternate">
+         <%@ include file="folderlist.jsp" %>
+      </td>
       <td class="portlet-section-body" align="left">
          <form name="pickform" action="<portlet:actionURL>
     <portlet:param name="op" value="<%= CMSAdminConstants.OP_MOVE %>"/>
@@ -23,7 +26,8 @@
             <table>
                <tr>
                   <td>${n:i18n("CMS_SOURCE")}:</td>
-                  <td><%= sCurrPath %></td>
+                  <td><%= sCurrPath %>
+                  </td>
                </tr>
                <tr>
                   <td valign="bottom">
@@ -34,22 +38,21 @@
                             class="portlet-form-input-field"/>
                   </td>
                </tr>
-               <tr><td></td><td>
-                  <input class="portlet-form-input-field" type="submit" value="${n:i18n("CMS_MOVE")}" name="submit">
-               </td>
+               <tr>
+                  <td></td>
+                  <td>
+                     <input class="portlet-form-button" type="submit" value="${n:i18n("CMS_MOVE")}" name="submit">
+                  </td>
                </tr>
             </table>
          </form>
       </td>
-      <td valign="top" class="portlet-section-alternate">
-         <%@ include file="folderlist.jsp" %>
-      </td>
    </tr>
 </table>
 <br/><br/>
 
 <%
-      String sBackPath = NodeUtil.getParentPath(sCurrPath);
+   String sBackPath = NodeUtil.getParentPath(sCurrPath);
 %>
 <a href="<portlet:renderURL>
                 <portlet:param name="op" value="<%= CMSAdminConstants.OP_MAIN %>"/>

Modified: labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/WEB-INF/jsp/cms/admin/create.jsp
===================================================================
--- labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/WEB-INF/jsp/cms/admin/create.jsp	2007-01-11 22:09:16 UTC (rev 8831)
+++ labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/WEB-INF/jsp/cms/admin/create.jsp	2007-01-11 22:10:56 UTC (rev 8832)
@@ -9,10 +9,10 @@
 <portlet:defineObjects/>
 
 <%
-   String sCurrPath = (String) request.getAttribute("currpath");
+   String sCurrPath = (String)request.getAttribute("currpath");
    String[] langs = Locale.getISOLanguages();
-   String sDocBase = (String) request.getAttribute("document_base_url");
-   String sCSSURL = (String) request.getAttribute("css_url");
+   String sDocBase = (String)request.getAttribute("document_base_url");
+   String sCSSURL = (String)request.getAttribute("css_url");
 %>
 
 <!-- tinyMCE -->
@@ -45,73 +45,91 @@
 
    <table width="100%">
       <th align="center"><b>${n:i18n("TITLE_CREATE")}</b></th>
-      <tr><td height="10"></td></tr>
-      <tr><td>
-         <table>
-            <tr>
-               <td class="portlet-section-header" height="20">
-                  <font class="portlet-font">${n:i18n("CMS_CREATEFILEINDIR")}: </font>
-               </td>
-               <td class="portlet-section-alternate"><%= sCurrPath %></td>
-            </tr>
-            <tr>
-               <td class="portlet-section-header" valign="bottom">
-                  <font class="portlet-font">${n:i18n("CMS_FILENAME")}:</font></td><td class="portlet-section-alternate"><input
-                  type="text" name="filename"
-                  class="portlet-form-input-field">
-            </td>
-            </tr>
-            <tr>
-               <td class="portlet-section-header" valign="bottom">
-                  ${n:i18n("CMS_DESCRIPTION")}:</td><td class="portlet-section-alternate"><input type="text" size="40" maxlength="80"
-                                                                                name="description" value=""
-                                                                                class="portlet-form-input-field"/></td>
-            </tr>
-            <tr>
-               <td class="portlet-section-header" valign="bottom">
-                  ${n:i18n("CMS_TITLE")}:</td><td class="portlet-section-alternate"><input type="text" size="40" maxlength="80"
-                                                                          name="title" value=""
-                                                                          class="portlet-form-input-field"/></td>
-            </tr>
-            <tr>
-               <td class="portlet-section-header" valign="bottom">
-                  ${n:i18n("CMS_LANGUAGE")}:</td><td class="portlet-section-alternate"><select name="language"
-                                                                              class="portlet-form-input-field">
-               <option selected
-                       value="<%= Locale.getDefault().getLanguage() %>"><%= Locale.getDefault().getDisplayLanguage() %></option>
-               <%
-                  for(int i = 0; i < langs.length; i++)
-                  {
-               %>
-               <option value="<%= langs[i] %>"><%= new Locale(langs[i]).getDisplayLanguage() %></option>
-               <%
-                  }
-               %>
-            </select>
-            </td>
-            </tr>
-         </table>
-      </td>
+      <tr>
+         <td height="10"></td>
       </tr>
-      <tr><td height="10"></td></tr>
       <tr>
-         <td class="portlet-section-alternate">
-            <img src="<%= renderRequest.getContextPath() + CMSAdminConstants.DEFAULT_IMAGES_PATH%>/info.gif" border="0"
-                 alt="Info"> Links to resources within this portal should be absolute. For example: A link to an image
-            located in default/images/back.gif
-            should be typed in exactly as shown here.
-            Do not prefix a slash (/) to the path of the resource. You can verify the link is correct by clicking on the
-            preview button in the editor.
+         <td>
+            <table>
+               <tr>
+                  <td>${n:i18n("CMS_CREATEFILEINDIR")}:
+                  </td>
+                  <td><%= sCurrPath %>
+                  </td>
+               </tr>
+               <tr>
+                  <td>${n:i18n("CMS_FILENAME")}:</td>
+                  <td><input
+                     type="text" name="filename"
+                     class="portlet-form-input-field">
+                  </td>
+               </tr>
+               <tr>
+                  <td
+                  ">
+                  ${n:i18n("CMS_DESCRIPTION")}:
          </td>
+         <td><input type="text" size="40" maxlength="80"
+                    name="description" value=""
+                    class="portlet-form-input-field"/></td>
       </tr>
-      <tr><td height="10"></td></tr>
-      <tr><td align="center">
-         <textarea id="elm1" name="elm1" rows="20" cols="80" style="width: 100%"></textarea>
-         <br>
-         <input type="submit" name="save" value="${n:i18n("CMS_CREATE")}" class="portlet-form-input-field"/>
-         <input type="reset" name="reset" value="Reset" class="portlet-form-input-field"/>
-      </td></tr>
+      <tr>
+         <td>
+            ${n:i18n("CMS_TITLE")}:
+         </td>
+         <td><input type="text" size="40" maxlength="80"
+                    name="title" value=""
+                    class="portlet-form-input-field"/></td>
+      </tr>
+      <tr>
+         <td>
+            ${n:i18n("CMS_LANGUAGE")}:
+         </td>
+         <td><select name="language"
+                     class="portlet-form-input-field">
+            <option selected
+                    value="<%= Locale.getDefault().getLanguage() %>"><%= Locale.getDefault().getDisplayLanguage() %>
+            </option>
+            <%
+               for (int i = 0; i < langs.length; i++)
+               {
+            %>
+            <option value="<%= langs[i] %>"><%= new Locale(langs[i]).getDisplayLanguage() %>
+            </option>
+            <%
+               }
+            %>
+         </select>
+         </td>
+      </tr>
    </table>
+</td>
+</tr>
+<tr>
+   <td height="10"></td>
+</tr>
+<tr>
+   <td class="portlet-section-alternate">
+      <img src="<%= renderRequest.getContextPath() + CMSAdminConstants.DEFAULT_IMAGES_PATH%>/info.gif" border="0"
+           alt="Info"> Links to resources within this portal should be absolute. For example: A link to an image
+      located in default/images/back.gif
+      should be typed in exactly as shown here.
+      Do not prefix a slash (/) to the path of the resource. You can verify the link is correct by clicking on the
+      preview button in the editor.
+   </td>
+</tr>
+<tr>
+   <td height="10"></td>
+</tr>
+<tr>
+   <td align="center">
+      <textarea id="elm1" name="elm1" rows="20" cols="80" style="width: 100%"></textarea>
+      <br>
+      <input type="submit" name="save" value="${n:i18n("CMS_CREATE")}" class="portlet-form-button"/>
+      <input type="reset" name="reset" value="Reset" class="portlet-form-button"/>
+   </td>
+</tr>
+</table>
 </form>
 
 <a href="<portlet:renderURL>

Modified: labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/WEB-INF/jsp/cms/admin/edit.jsp
===================================================================
--- labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/WEB-INF/jsp/cms/admin/edit.jsp	2007-01-11 22:09:16 UTC (rev 8831)
+++ labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/WEB-INF/jsp/cms/admin/edit.jsp	2007-01-11 22:10:56 UTC (rev 8832)
@@ -8,14 +8,14 @@
 <portlet:defineObjects/>
 
 <%
-   String sCurrPath = (String) request.getAttribute("currpath");
-   String sContent = (String) request.getAttribute("content");
-   String sDocBase = (String) request.getAttribute("document_base_url");
-   String sCSSURL = (String) request.getAttribute("css_url");
-   String sLanguage = (String) request.getAttribute("language");
-   String sVersion = (String) request.getAttribute("version");
-   String sTitle = (String) request.getAttribute("title");
-   String sDescription = (String) request.getAttribute("description");
+   String sCurrPath = (String)request.getAttribute("currpath");
+   String sContent = (String)request.getAttribute("content");
+   String sDocBase = (String)request.getAttribute("document_base_url");
+   String sCSSURL = (String)request.getAttribute("css_url");
+   String sLanguage = (String)request.getAttribute("language");
+   String sVersion = (String)request.getAttribute("version");
+   String sTitle = (String)request.getAttribute("title");
+   String sDescription = (String)request.getAttribute("description");
 %>
 
 <!-- tinyMCE -->
@@ -46,82 +46,101 @@
     <portlet:param name="language" value="<%= sLanguage %>"/>
     </portlet:actionURL>">
 
-   <table width="100%">
-      <th align="center"><b>${n:i18n("TITLE_EDIT")}</b></th>
-      <tr><td height="10"></td></tr>
-      <tr>
-         <td>
-            <tr><td>
+<table width="100%">
+   <th align="center"><b>${n:i18n("TITLE_EDIT")}</b></th>
+   <tr>
+      <td height="10"></td>
+   </tr>
+   <tr>
+      <td>
+         <tr>
+            <td>
                <table>
                   <tr>
-                     <td class="portlet-section-header" height="20">
-                        <font class="portlet-font">${n:i18n("CMS_EDITING")}: </font>
+                     <td>${n:i18n("CMS_EDITING")}:
                      </td>
-                     <td class="portlet-section-alternate"><%= sCurrPath %></td>
+                     <td><%= sCurrPath %>
+                     </td>
                   </tr>
                   <tr>
-                     <td class="portlet-section-header" valign="bottom">
-                        ${n:i18n("CMS_DESCRIPTION")}:</td><td class="portlet-section-alternate"><input type="text"
-                                                                                                       size="40"
-                                                                                                       maxlength="80"
-                                                                                                       name="description"
-                                                                                                       value="<%= sDescription %>"
-                                                                                                       class="portlet-form-input-field"/>
-                  </td>
+                     <td>
+                        ${n:i18n("CMS_DESCRIPTION")}:
+                     </td>
+                     <td><input type="text"
+                                size="40"
+                                maxlength="80"
+                                name="description"
+                                value="<%= sDescription %>"
+                                class="portlet-form-input-field"/>
+                     </td>
                   </tr>
                   <tr>
-                     <td class="portlet-section-header" valign="bottom">
-                        ${n:i18n("CMS_TITLE")}:</td><td class="portlet-section-alternate"><input type="text" size="40"
-                                                                                                 maxlength="80"
-                                                                                                 name="title"
-                                                                                                 value="<%= sTitle %>"
-                                                                                                 class="portlet-form-input-field"/>
-                  </td>
+                     <td>
+                        ${n:i18n("CMS_TITLE")}:
+                     </td>
+                     <td><input type="text" size="40"
+                                maxlength="80"
+                                name="title"
+                                value="<%= sTitle %>"
+                                class="portlet-form-input-field"/>
+                     </td>
                   </tr>
                   <tr>
-                     <td class="portlet-section-header" valign="bottom">
-                        ${n:i18n("CMS_LANGUAGE")}:</td><td
-                        class="portlet-section-alternate"><%= new Locale(sLanguage).getDisplayLanguage() %>
-                  </td>
+                     <td>
+                        ${n:i18n("CMS_LANGUAGE")}:
+                     </td>
+                     <td><%= new Locale(sLanguage).getDisplayLanguage() %>
+                     </td>
                   </tr>
                   <tr>
-                     <td class="portlet-section-header" valign="bottom">
-                        ${n:i18n("CMS_LIVE")}:</td><td><input type="checkbox" name="makelive" checked
-                                                              class="portlet-form-input-field"/>
-                  </td>
+                     <td>
+                        ${n:i18n("CMS_LIVE")}:
+                     </td>
+                     <td><input type="checkbox" name="makelive" checked
+                                class="portlet-form-input-field"/>
+                     </td>
                   </tr>
                   <tr>
-                     <td class="portlet-section-header">
-                        ${n:i18n("CMS_VERSION")}:</td><td class="portlet-section-alternate"><%= sVersion %>
-                  </td>
+                     <td>
+                        ${n:i18n("CMS_VERSION")}:
+                     </td>
+                     <td><%= sVersion %>
+                     </td>
                   </tr>
                </table>
             </td>
-            </tr>
-            <tr><td height="10"></td></tr>
-            <tr>
-               <td class="portlet-section-alternate">
-                  <img src="<%= renderRequest.getContextPath() + CMSAdminConstants.DEFAULT_IMAGES_PATH%>/info.gif"
-                       border="0"
-                       alt="Info"> Links to resources within this portal should be absolute. For example: A link to an
-                  image
-                  located in default/images/back.gif
-                  should be typed in exactly as shown here.
-                  Do not prefix a slash (/) to the path of the resource. You can verify the link is correct by clicking
-                  on
-                  the
-                  preview button in the editor.
-               </td>
-            </tr>
-            <tr><td height="10"></td></tr>
-            <tr><td align="center">
+         </tr>
+         <tr>
+            <td height="10"></td>
+         </tr>
+         <tr>
+            <td class="portlet-section-alternate">
+               <img src="<%= renderRequest.getContextPath() + CMSAdminConstants.DEFAULT_IMAGES_PATH%>/info.gif"
+                    border="0"
+                    alt="Info"> Links to resources within this portal should be absolute. For example: A link to an
+               image
+               located in default/images/back.gif
+               should be typed in exactly as shown here.
+               Do not prefix a slash (/) to the path of the resource. You can verify the link is correct by clicking
+               on
+               the
+               preview button in the editor.
+            </td>
+         </tr>
+         <tr>
+            <td height="10"></td>
+         </tr>
+         <tr>
+            <td align="center">
                <textarea id="elm1" name="elm1" rows="20" cols="80" style="width: 100%"
-                         class="textarea"><%= sContent %></textarea><br>
-               <input type="submit" name="save" value="${n:i18n("CMS_CREATE")}" class="portlet-form-input-field"/>
-               <input type="reset" name="reset" value="Reset" class="portlet-form-input-field"/>
+                         class="textarea"><%= sContent %>
+               </textarea><br>
+               <input type="submit" name="save" value="${n:i18n("CMS_CREATE")}" class="portlet-form-button"/>
+               <input type="reset" name="reset" value="Reset" class="portlet-form-button"/>
 
-            </td></tr>
-   </table>
+            </td>
+         </tr>
+</table>
 </form>
 
 <a href="<portlet:renderURL>

Modified: labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/WEB-INF/jsp/cms/admin/editbinary.jsp
===================================================================
--- labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/WEB-INF/jsp/cms/admin/editbinary.jsp	2007-01-11 22:09:16 UTC (rev 8831)
+++ labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/WEB-INF/jsp/cms/admin/editbinary.jsp	2007-01-11 22:10:56 UTC (rev 8832)
@@ -1,6 +1,4 @@
-<%@ page import="org.jboss.portal.cms.util.NodeUtil" %>
 <%@ page import="org.jboss.portal.core.portlet.cms.admin.CMSAdminConstants" %>
-<%@ page import="java.util.Locale"%>
 <%@ page language="java" extends="org.jboss.portal.core.servlet.jsp.PortalJsp" %>
 <%@ taglib uri="http://java.sun.com/portlet" prefix="portlet" %>
 <%@ taglib uri="/WEB-INF/portal-lib.tld" prefix="n" %>
@@ -9,8 +7,8 @@
 <portlet:defineObjects/>
 
 <%
-   String sCurrPath = (String) request.getAttribute("currpath");
-   String sLanguage = (String) request.getAttribute("language");
+   String sCurrPath = (String)request.getAttribute("currpath");
+   String sLanguage = (String)request.getAttribute("language");
 %>
 
 <form name="pickform" method="post" enctype="multipart/form-data" action="<portlet:actionURL>
@@ -24,36 +22,40 @@
          <td align="left">
             <table>
                <tr>
-                  <td valign="top">
+                  <td valign="top" width="150">
                      ${n:i18n("CMS_EDITING")}:
                   </td>
-                  <td><%= sCurrPath %></td>
+                  <td valign="top"><%= sCurrPath %>
+                  </td>
                </tr>
                <tr>
                   <td valign="top">
-                     ${n:i18n("CMS_DESCRIPTION")}:</td><td><input type="text" size="40" maxlength="80" name="description" value=""
-                                                 class="portlet-form-input-field"/></td>
+                     ${n:i18n("CMS_DESCRIPTION")}:
+                  </td>
+                  <td valign="top"><input type="text" size="40" maxlength="80" name="description" value=""
+                             class="portlet-form-input-field"/></td>
                </tr>
                <tr>
                   <td valign="top">
-                     ${n:i18n("CMS_TITLE")}:</td><td><input type="text" size="40" maxlength="80" name="title" value=""
-                                           class="portlet-form-input-field"/></td>
+                     ${n:i18n("CMS_TITLE")}:
+                  </td>
+                  <td valign="top"><input type="text" size="40" maxlength="80" name="title" value=""
+                             class="portlet-form-input-field"/></td>
                </tr>
                <tr>
-                  <td valign="top">
-                     ${n:i18n("CMS_LIVE")}:</td><td><input type="checkbox" name="makelive" checked
-                                                 class="portlet-form-input-field"/></td>
+                  <td valign="top">${n:i18n("CMS_LIVE")}:</td>
+                  <td valign="top"><input type="checkbox" name="makelive" checked
+                                          class="portlet-form-input-field"/></td>
                </tr>
-               <tr><td colspan="2">
-                  <input type="file" size="32" name="content" value="" class="portlet-form-input-field"/>
-                  <br>
-                  <input type="submit" name="submit" value="${n:i18n("CMS_UPLOAD")}" class="portlet-form-input-field"/>
-               </td>
+               <tr>
+                  <td colspan="2">
+                     <input type="file" size="32" name="response" value="" class="portlet-form-input-field"/>
+                     <br>
+                     <input type="submit" name="submit" value="${n:i18n("CMS_UPLOAD")}" class="portlet-form-button"/>
+                  </td>
                </tr>
             </table>
          </td>
-         <td valign="top" class="portlet-section-alternate">
-         </td>
       </tr>
    </table>
 </form>

Modified: labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/WEB-INF/jsp/cms/admin/exportarchive.jsp
===================================================================
--- labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/WEB-INF/jsp/cms/admin/exportarchive.jsp	2007-01-11 22:09:16 UTC (rev 8831)
+++ labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/WEB-INF/jsp/cms/admin/exportarchive.jsp	2007-01-11 22:10:56 UTC (rev 8832)
@@ -7,7 +7,7 @@
 <portlet:defineObjects/>
 
 <%
-   String sCurrPath = (String) request.getAttribute("currpath");
+   String sCurrPath = (String)request.getAttribute("currpath");
    String OP = CMSAdminConstants.OP_EXPORTARCHIVE;
    String[] langs = Locale.getISOLanguages();
 %>
@@ -19,6 +19,9 @@
    <table width="100%">
       <th colspan="2" class="portlet-section-header" align="center">${n:i18n("CMS_EXPORTARCHIVE")}</th>
       <tr>
+         <td valign="top" width="250" class="portlet-section-alternate">
+            <%@ include file="folderlist.jsp" %>
+         </td>
          <td align="left">
             <table>
                <tr>
@@ -31,31 +34,33 @@
                </tr>
                <tr>
                   <td valign="bottom">
-                     ${n:i18n("CMS_LANGUAGE")}:</td><td><select name="language" class="portlet-form-input-field">
-                  <option selected
-                          value="<%= Locale.getDefault().getLanguage() %>"><%= Locale.getDefault().getDisplayLanguage() %></option>
-                  <%
-                     for(int i = 0; i < langs.length; i++)
-                     {
-                  %>
-                  <option value="<%= langs[i] %>"><%= new Locale(langs[i]).getDisplayLanguage() %></option>
-                  <%
-                     }
-                  %>
-               </select>
-               </td>
+                     ${n:i18n("CMS_LANGUAGE")}:
+                  </td>
+                  <td><select name="language" class="portlet-form-input-field">
+                     <option selected
+                             value="<%= Locale.getDefault().getLanguage() %>"><%= Locale.getDefault().getDisplayLanguage() %>
+                     </option>
+                     <%
+                        for (int i = 0; i < langs.length; i++)
+                        {
+                     %>
+                     <option value="<%= langs[i] %>"><%= new Locale(langs[i]).getDisplayLanguage() %>
+                     </option>
+                     <%
+                        }
+                     %>
+                  </select>
+                  </td>
                </tr>
-               <tr><td colspan="2">
-                  <br><br>
-                  <input type="submit" name="submit" value="${n:i18n("CMS_EXPORTARCHIVE")}"
-                         class="portlet-form-input-field"/>
-               </td>
+               <tr>
+                  <td colspan="2">
+                     <br><br>
+                     <input type="submit" name="submit" value="${n:i18n("CMS_EXPORTARCHIVE")}"
+                            class="portlet-form-button"/>
+                  </td>
                </tr>
             </table>
          </td>
-         <td valign="top" class="portlet-section-alternate">
-            <%@ include file="folderlist.jsp" %>
-         </td>
       </tr>
    </table>
 </form>

Added: labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/WEB-INF/jsp/cms/admin/exportarchive_pickup_error.jsp
===================================================================
--- labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/WEB-INF/jsp/cms/admin/exportarchive_pickup_error.jsp	2007-01-11 22:09:16 UTC (rev 8831)
+++ labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/WEB-INF/jsp/cms/admin/exportarchive_pickup_error.jsp	2007-01-11 22:10:56 UTC (rev 8832)
@@ -0,0 +1,32 @@
+<%@ page import="org.jboss.portal.core.portlet.cms.admin.CMSAdminConstants" %>
+<%@ page language="java" extends="org.jboss.portal.core.servlet.jsp.PortalJsp" %>
+<%@ taglib uri="http://java.sun.com/portlet" prefix="portlet" %>
+<%@ taglib uri="/WEB-INF/portal-lib.tld" prefix="n" %>
+<%@ page isELIgnored="false" %>
+
+<portlet:defineObjects/>
+
+<%
+   String sCurrPath = (String)request.getAttribute("currpath");
+%>
+
+<table width="100%">
+   <th class="portlet-section-header" align="center">${n:i18n("CMS_EXPORTARCHIVE")}</th>
+   <tr>
+      <td align="left">
+         <table width="100%">
+            <tr>
+               <td align="center"><font color="red">ERROR processing export request!</font></td>
+            </tr>
+         </table>
+      </td>
+   </tr>
+</table>
+
+<a href="<portlet:renderURL>
+                <portlet:param name="op" value="<%= CMSAdminConstants.OP_MAIN %>"/>
+                <portlet:param name="path"
+                  value="<%= sCurrPath %>"/>
+              </portlet:renderURL>">
+   <img src="<%= renderRequest.getContextPath() + CMSAdminConstants.DEFAULT_IMAGES_PATH%>/browse.gif" border="0"
+        alt="${n:i18n("CMS_BACKTOBROWSER")}"></a>

Modified: labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/WEB-INF/jsp/cms/admin/folderlist.jsp
===================================================================
--- labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/WEB-INF/jsp/cms/admin/folderlist.jsp	2007-01-11 22:09:16 UTC (rev 8831)
+++ labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/WEB-INF/jsp/cms/admin/folderlist.jsp	2007-01-11 22:10:56 UTC (rev 8832)
@@ -5,10 +5,11 @@
 <%@ page import="java.util.StringTokenizer" %>
 <%@ page isELIgnored="false" %>
 <%@ taglib uri="http://java.sun.com/portlet" prefix="portlet" %>
+<%@ taglib uri="/WEB-INF/portal-lib.tld" prefix="n" %>
 
 <%
    // needed for copy/move type: fi(file) or fo(folder).
-   String sCMType = (String) request.getAttribute("type");
+   String sCMType = (String)request.getAttribute("type");
 %>
 
 <script language="JavaScript" type="text/javascript">
@@ -19,6 +20,10 @@
    }
 </script>
 
+<h6>${n:i18n("CMS_CONTENT_DIR")}</h6>
+${n:i18n("CMS_CONTENT_DIR_USE")}
+<hr/>
+
 <a href="<portlet:renderURL>
    <portlet:param name="op" value="<%= OP %>"/>
    <portlet:param name="path" value="/"/>
@@ -38,18 +43,18 @@
 <a href="javascript:fillform('/')">Root Folder</a><br>
 
 <%
-   String sNavPath = (String) request.getAttribute("navpath");
-   List NAVfolders = (List) request.getAttribute("folders");
-   if(NAVfolders != null && NAVfolders.size() > 0)
+   String sNavPath = (String)request.getAttribute("navpath");
+   List NAVfolders = (List)request.getAttribute("folders");
+   if (NAVfolders != null && NAVfolders.size() > 0)
    {
-      Folder trailFolder = (Folder) NAVfolders.get(0);
+      Folder trailFolder = (Folder)NAVfolders.get(0);
       String sSomePath = trailFolder.getBasePath();
       int firstSlash = sSomePath.indexOf("/");
       int lastSlash = sSomePath.lastIndexOf("/");
       sSomePath = sSomePath.substring(firstSlash, lastSlash);
       StringTokenizer parser = new StringTokenizer(sSomePath, "/");
       String sPathBuilder = "";
-      while(parser.hasMoreTokens())
+      while (parser.hasMoreTokens())
       {
          String sPathChunk = parser.nextToken();
          sPathBuilder += "/" + sPathChunk;
@@ -69,34 +74,33 @@
    %>
    </portlet:renderURL>">
    <img src="<%= request.getContextPath() + CMSAdminConstants.DEFAULT_IMAGES_PATH %>/plus.gif" border="0"
-        alt="Expand"/></a>
-&nbsp;
-<a href="javascript:fillform('<%= sPathBuilder %>')"><%= sPathBuilder %></a><br>
+        alt="Expand"/></a>&nbsp;<a href="javascript:fillform('<%= sPathBuilder %>')"><%= sPathBuilder %></a><br>
 
 <%
    }
 
-   for(int i = 0; i < NAVfolders.size(); i++)
+   for (int i = 0; i < NAVfolders.size(); i++)
    {
-      Folder folder = (Folder) NAVfolders.get(i);
+      Folder folder = (Folder)NAVfolders.get(i);
 %>
 
-&nbsp;&nbsp;&nbsp;<a href="<portlet:renderURL>
+&nbsp;&nbsp;&nbsp;<a href="
+<portlet:renderURL>
    <portlet:param name="op" value="<%= OP %>"/>
    <portlet:param name="path" value="<%= sCurrPath %>"/>
    <portlet:param name="navpath" value="<%= folder.getBasePath() %>"/>
    <%
-      if(sCMType != null)
+      if (sCMType != null)
       {
    %>
    <portlet:param name="type" value="<%= sCMType %>"/>
    <%
       }
    %>
-</portlet:renderURL>">
-<img src="<%= request.getContextPath() + CMSAdminConstants.DEFAULT_IMAGES_PATH %>/plus.gif" border="0"
-     alt="Expand"/></a>&nbsp;
-<a href="javascript:fillform('<%= folder.getBasePath() %>')"><%= folder.getBasePath().substring(folder.getBasePath().lastIndexOf("/") + 1, folder.getBasePath().length()) %></a>
+</portlet:renderURL>
+"><img src="<%= request.getContextPath() + CMSAdminConstants.DEFAULT_IMAGES_PATH %>/plus.gif" border="0"
+alt="Expand"/></a>&nbsp;<a href="javascript:fillform('<%= folder.getBasePath() %>')"><%=
+   folder.getBasePath().substring(folder.getBasePath().lastIndexOf("/") + 1, folder.getBasePath().length()) %></a>
 <br>
 
 <%
@@ -105,7 +109,7 @@
 else
 {
 %>
-&nbsp;<a href="<portlet:renderURL>
+<a href="<portlet:renderURL>
    <portlet:param name="op" value="<%= OP %>"/>
    <portlet:param name="path" value="<%= sCurrPath %>"/>
    <portlet:param name="navpath" value="<%= NodeUtil.getParentPath(sNavPath) %>"/>
@@ -117,9 +121,7 @@
    <%
       }
    %>
-</portlet:renderURL>"><img src="<%= request.getContextPath() + CMSAdminConstants.DEFAULT_IMAGES_PATH %>/up.gif"
-border="0"
-alt="Up"/></a>
+</portlet:renderURL>">Up</a>
 <%
    }
 %>

Modified: labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/WEB-INF/jsp/cms/admin/main.jsp
===================================================================
--- labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/WEB-INF/jsp/cms/admin/main.jsp	2007-01-11 22:09:16 UTC (rev 8831)
+++ labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/WEB-INF/jsp/cms/admin/main.jsp	2007-01-11 22:10:56 UTC (rev 8832)
@@ -1,6 +1,10 @@
 <%@ page import="org.jboss.portal.cms.model.File" %>
 <%@ page import="org.jboss.portal.cms.model.Folder" %>
+<%@ page import="org.jboss.portal.core.portlet.cms.admin.CMSAdminConstants" %>
+<%@ page import="java.text.Format" %>
+<%@ page import="java.text.SimpleDateFormat" %>
 <%@ page import="java.util.List" %>
+<%@ page import="java.util.StringTokenizer" %>
 <%@ page language="java" extends="org.jboss.portal.core.servlet.jsp.PortalJsp" %>
 <%@ taglib uri="/WEB-INF/portal-lib.tld" prefix="n" %>
 <%@ taglib uri="http://java.sun.com/portlet" prefix="portlet" %>
@@ -10,80 +14,182 @@
 
 
 <%
-   String sCurrPath = (String) request.getAttribute("currpath");
-   List folders = (List) request.getAttribute("folders");
-   List files = (List) request.getAttribute("files");
+   String sCurrPath = (String)request.getAttribute("currpath");
+   List folders = (List)request.getAttribute("folders");
+   List files = (List)request.getAttribute("files");
+   String createDate = "";
+   String modifiedDate = "";
 %>
 
 <br>
 
-<div align="center"><b>${n:i18n("TITLE_BROWSE")}</b></div>
+${n:i18n("CMS_MAIN_USE")}
 
-<%@ include file="menu.jsp" %>
+<hr/>
 
+<!-- Currently browsing -->
+Browsing: <a href="<portlet:renderURL>
+<portlet:param name="op" value="<%= CMSAdminConstants.OP_MAIN %>"/>
+<portlet:param name="path" value="/"/>
+        </portlet:renderURL>">Home</a>
 <%
-   if(folders.size() > 0 || files.size() > 0)
+   StringTokenizer parser = new StringTokenizer(sCurrPath, "/");
+   String sPathBuilder = "";
+   while (parser.hasMoreTokens())
    {
+      String sPathChunk = parser.nextToken();
+      sPathBuilder += "/" + sPathChunk;
+      if (parser.hasMoreTokens())
+      {
 %>
+>&nbsp;<a href="
+<portlet:renderURL>
+   <portlet:param name="op" value="<%= CMSAdminConstants.OP_MAIN %>"/>
+   <portlet:param name="path" value="<%= sPathBuilder %>"/>
+</portlet:renderURL>
+"><%= sPathChunk %>
+</a>
+<%
+}
+else
+{
+%>
+>&nbsp;<%= sPathChunk %>
+<%
+      }
+   }
+%>
 
+<br/><br/>
+
+<!-- folder-level action dropdown -->
+<div class="menu">
+   <ul>
+      <li><a href="#">Select Action <img
+         src="<%= renderRequest.getContextPath() + CMSAdminConstants.DEFAULT_IMAGES_PATH%>/downarrow.gif"
+         border="0"></a>
+         <ul>
+            <li><a href="<portlet:renderURL>
+   <portlet:param name="op" value="<%= CMSAdminConstants.OP_CONFIRM_CREATE_COLLECTION %>"/>
+   <portlet:param name="path" value="<%= sCurrPath %>"/>
+   </portlet:renderURL>">${n:i18n("CMS_CREATEFOLDER")}</a></li>
+            <li><a href="<portlet:renderURL>
+   <portlet:param name="op" value="<%= CMSAdminConstants.OP_CREATENEWTEXT %>"/>
+   <portlet:param name="path" value="<%= sCurrPath %>"/>
+   </portlet:renderURL>">${n:i18n("CMS_CREATEFILE")}</a></li>
+            <li><a href="<portlet:renderURL>
+   <portlet:param name="op" value="<%= CMSAdminConstants.OP_UPLOADCONFIRM %>"/>
+   <portlet:param name="path" value="<%= sCurrPath %>"/>
+   </portlet:renderURL>">${n:i18n("TITLE_UPLOAD")}</a></li>
+            <li><a href="<portlet:renderURL>
+   <portlet:param name="op" value="<%= CMSAdminConstants.OP_UPLOADARCHIVECONFIRM %>"/>
+   <portlet:param name="path" value="<%= sCurrPath %>"/>
+   </portlet:renderURL>">${n:i18n("CMS_UPLOADARCHIVE")}</a></li>
+            <li><a href="<portlet:renderURL>
+   <portlet:param name="op" value="<%= CMSAdminConstants.OP_EXPORTARCHIVE %>"/>
+   <portlet:param name="path" value="<%= sCurrPath %>"/>
+   </portlet:renderURL>">${n:i18n("CMS_EXPORTARCHIVE")}</a></li>
+            <li><a href="<portlet:renderURL>
+   <portlet:param name="op" value="<%= CMSAdminConstants.OP_CONFIRMSECURE %>"/>
+   <portlet:param name="path" value="<%= sCurrPath %>"/>
+   <portlet:param name="returnOp" value="<%= CMSAdminConstants.OP_MAIN %>"/>
+   </portlet:renderURL>">${n:i18n("CMS_SECURE")}</a></li>
+            <%
+               if (!"/".equals(sCurrPath))
+               {
+            %>
+            <li><a href="<portlet:renderURL>
+   <portlet:param name="op" value="<%= CMSAdminConstants.OP_CONFIRMCOPY %>"/>
+   <portlet:param name="path" value="<%= sCurrPath %>"/>
+   <portlet:param name="type" value="fo"/>
+   </portlet:renderURL>">${n:i18n("CMS_COPY")}</a></li>
+            <li><a href="<portlet:renderURL>
+   <portlet:param name="op" value="<%= CMSAdminConstants.OP_CONFIRMMOVE %>"/>
+   <portlet:param name="path" value="<%= sCurrPath %>"/>
+   <portlet:param name="type" value="fo"/>
+   </portlet:renderURL>">${n:i18n("CMS_MOVE")}</a></li>
+            <li><a href="<portlet:renderURL>
+   <portlet:param name="op" value="<%= CMSAdminConstants.OP_CONFIRMDELETE %>"/>
+   <portlet:param name="path" value="<%= sCurrPath %>"/>
+   </portlet:renderURL>">${n:i18n("CMS_DELETE")}</a></li>
+            <% } %>
+         </ul>
+      </li>
+   </ul>
+</div>
+
+<br/><br/>
+
+<%
+
+   if (folders.size() > 0 || files.size() > 0)
+   {
+
+%>
+
 <table width="100%" border="0" cellspacing="2" cellpadding="2">
 <tr>
+   <td class="portlet-section-header">${n:i18n("CMS_NAME")}</td>
    <td class="portlet-section-header">${n:i18n("CMS_ACTION")}</td>
-   <td class="portlet-section-header">${n:i18n("CMS_NAME")}</td>
-   <td class="portlet-section-header">${n:i18n("CMS_TYPE")}</td>
    <td class="portlet-section-header">${n:i18n("CMS_CREATED")}</td>
    <td class="portlet-section-header">${n:i18n("CMS_MODIFIED")}</td>
-   <td class="portlet-section-header">${n:i18n("CMS_DESCRIPTION")}</td>
 </tr>
 
 <%
-   if(folders.size() > 0)
+   if (folders.size() > 0)
    {
-      for(int i = 0; i < folders.size(); i++)
+      for (int i = 0; i < folders.size(); i++)
       {
-         Folder folder = (Folder) folders.get(i);
+         Folder folder = (Folder)folders.get(i);
 %>
 <tr onmouseover="this.className='portlet-section-alternate';" onmouseout="this.className='portlet-section-body';">
+   <td><img
+      src="<%= renderRequest.getContextPath() + CMSAdminConstants.DEFAULT_IMAGES_PATH%>/folder.gif"
+      alt="${n:i18n("CMS_FOLDER")}"
+      border="0">&nbsp;<a href="<portlet:renderURL>
+          <portlet:param name="op" value="<%= CMSAdminConstants.OP_MAIN %>"/>
+          <portlet:param name="path" value="<%= folder.getBasePath() %>"/>
+        </portlet:renderURL>"><%=
+      folder.getBasePath().substring(folder.getBasePath().lastIndexOf("/") + 1, folder.getBasePath().length()) %>
+   </a>
+   </td>
    <td>
-      <a href="<portlet:renderURL>
-   <portlet:param name="op" value="<%= CMSAdminConstants.OP_MAIN %>"/>
-   <portlet:param name="path" value="<%= folder.getBasePath() %>"/>
-        </portlet:renderURL>">
-         <img src="<%= renderRequest.getContextPath() + CMSAdminConstants.DEFAULT_IMAGES_PATH%>/view.gif"
-              alt="${n:i18n("CMS_VIEW")}" border="0"></a>
-      <a href="<portlet:renderURL>
-    <portlet:param name="op" value="<%= CMSAdminConstants.OP_CONFIRMCOPY %>"/>
+      <form method="POST" style="padding:0;margin:0;" action="<portlet:actionURL>
     <portlet:param name="path" value="<%= folder.getBasePath() %>"/>
     <portlet:param name="type" value="fo"/>
-   </portlet:renderURL>">
-         <img src="<%= renderRequest.getContextPath() + CMSAdminConstants.DEFAULT_IMAGES_PATH%>/copy.gif"
-              alt="${n:i18n("CMS_COPY")}" border="0"></a>
-      <a href="<portlet:renderURL>
-    <portlet:param name="op" value="<%= CMSAdminConstants.OP_CONFIRMMOVE %>"/>
-    <portlet:param name="path" value="<%= folder.getBasePath() %>"/>
-    <portlet:param name="type" value="fo"/>
-   </portlet:renderURL>">
-         <img src="<%= renderRequest.getContextPath() + CMSAdminConstants.DEFAULT_IMAGES_PATH%>/move.gif"
-              alt="${n:i18n("CMS_MOVE")}" border="0"></a>
-      <a href="<portlet:renderURL>
-    <portlet:param name="op" value="<%= CMSAdminConstants.OP_CONFIRMDELETE %>"/>
-    <portlet:param name="path" value="<%= folder.getBasePath() %>"/>
-   </portlet:renderURL>">
-         <img src="<%= renderRequest.getContextPath() + CMSAdminConstants.DEFAULT_IMAGES_PATH%>/delete.gif"
-              alt="${n:i18n("CMS_DELETE")}" border="0"></a>
+    <portlet:param name="dispatch" value="1"/>
+   </portlet:actionURL>">
+         <select name="op">
+            <option value="<%= CMSAdminConstants.OP_MAIN %>">${n:i18n("CMS_VIEW")}</option>
+            <option value="<%= CMSAdminConstants.OP_CONFIRMCOPY %>">${n:i18n("CMS_COPY")}</option>
+            <option value="<%= CMSAdminConstants.OP_CONFIRMMOVE %>">${n:i18n("CMS_MOVE")}</option>
+            <option value="<%= CMSAdminConstants.OP_CONFIRMDELETE %>">${n:i18n("CMS_DELETE")}</option>
+         </select>
+         <input type="submit" value="Go" name="Go" class="portlet-form-button"/>
+      </form>
    </td>
    <td>
-      <a href="<portlet:renderURL>
-          <portlet:param name="op" value="<%= CMSAdminConstants.OP_MAIN %>"/>
-          <portlet:param name="path" value="<%= folder.getBasePath() %>"/>
-        </portlet:renderURL>">
-         <%= folder.getBasePath().substring(folder.getBasePath().lastIndexOf("/") + 1, folder.getBasePath().length()) %></a>
+      <%
+         if (folder.getCreationDate() != null)
+         {
+            Format formatter;
+            formatter = new SimpleDateFormat("MM/dd/yy HH:mm");
+            createDate = formatter.format(folder.getCreationDate());
+         }
+      %>
+      <%= createDate %>
    </td>
-   <td align="center"><img src="<%= renderRequest.getContextPath() + CMSAdminConstants.DEFAULT_IMAGES_PATH%>/folder.gif" alt="${n:i18n("CMS_FOLDER")}"
-            border="0"></td>
-   <td><%= folder.getLastModified() %></td>
-   <td><%= folder.getCreationDate() %></td>
-   <td><%= folder.getDescription() %></td>
+   <td>
+      <%
+         if (folder.getLastModified() != null)
+         {
+            Format formatter;
+            formatter = new SimpleDateFormat("MM/dd/yy HH:mm");
+            modifiedDate = formatter.format(folder.getLastModified());
+         }
+      %>
+      <%= modifiedDate %>
+   </td>
 </tr>
 <%
       }
@@ -91,53 +197,60 @@
 %>
 
 <%
-   if(files.size() > 0)
+   if (files.size() > 0)
    {
-      for(int j = 0; j < files.size(); j++)
+      for (int j = 0; j < files.size(); j++)
       {
-         File file = (File) files.get(j);
+         File file = (File)files.get(j);
 %>
 <tr onmouseover="this.className='portlet-section-alternate';" onmouseout="this.className='portlet-section-body';">
+   <td><img src="<%= renderRequest.getContextPath() + CMSAdminConstants.DEFAULT_IMAGES_PATH%>/file.gif"
+            alt="${n:i18n("CMS_FILE")}"
+            border="0">&nbsp;<a href="<portlet:renderURL>
+          <portlet:param name="op" value="<%= CMSAdminConstants.OP_VIEWFILE %>"/>
+          <portlet:param name="path"
+            value="<%= file.getBasePath() %>"/>
+        </portlet:renderURL>"><%=
+      file.getBasePath().substring(file.getBasePath().lastIndexOf("/") + 1, file.getBasePath().length()) %>
+   </a>
+   </td>
    <td>
-      <a href="<portlet:renderURL>
-          <portlet:param name="op" value="<%= CMSAdminConstants.OP_VIEWFILE %>"/>
-          <portlet:param name="path" value="<%= file.getBasePath() %>"/>
-        </portlet:renderURL>">
-         <img src="<%= renderRequest.getContextPath() + CMSAdminConstants.DEFAULT_IMAGES_PATH%>/view.gif"
-              alt="${n:i18n("CMS_VIEW")}" border="0"></a>
-      <a href="<portlet:renderURL>
-    <portlet:param name="op" value="<%= CMSAdminConstants.OP_CONFIRMCOPY %>"/>
+      <form method="POST" style="padding:0;margin:0;" action="<portlet:actionURL>
     <portlet:param name="path" value="<%= file.getBasePath() %>"/>
     <portlet:param name="type" value="fi"/>
-   </portlet:renderURL>">
-         <img src="<%= renderRequest.getContextPath() + CMSAdminConstants.DEFAULT_IMAGES_PATH%>/copy.gif"
-              alt="${n:i18n("CMS_COPY")}" border="0"></a>
-      <a href="<portlet:renderURL>
-    <portlet:param name="op" value="<%= CMSAdminConstants.OP_CONFIRMMOVE %>"/>
-    <portlet:param name="path" value="<%= file.getBasePath() %>"/>
-    <portlet:param name="type" value="fi"/>
-   </portlet:renderURL>">
-         <img src="<%= renderRequest.getContextPath() + CMSAdminConstants.DEFAULT_IMAGES_PATH%>/move.gif"
-              alt="${n:i18n("CMS_MOVE")}" border="0"></a>
-      <a href="<portlet:renderURL>
-    <portlet:param name="op" value="<%= CMSAdminConstants.OP_CONFIRMDELETE %>"/>
-    <portlet:param name="path" value="<%= file.getBasePath() %>"/>
-   </portlet:renderURL>">
-         <img src="<%= renderRequest.getContextPath() + CMSAdminConstants.DEFAULT_IMAGES_PATH%>/delete.gif"
-              alt="${n:i18n("CMS_DELETE")}" border="0"></a>
+    <portlet:param name="dispatch" value="1"/>
+   </portlet:actionURL>">
+         <select name="op">
+            <option value="<%= CMSAdminConstants.OP_VIEWFILE %>">${n:i18n("CMS_VIEW")}</option>
+            <option value="<%= CMSAdminConstants.OP_CONFIRMCOPY %>">${n:i18n("CMS_COPY")}</option>
+            <option value="<%= CMSAdminConstants.OP_CONFIRMMOVE %>">${n:i18n("CMS_MOVE")}</option>
+            <option value="<%= CMSAdminConstants.OP_CONFIRMDELETE %>">${n:i18n("CMS_DELETE")}</option>
+         </select>
+         <input type="submit" value="Go" name="Go" class="portlet-form-button"/>
+      </form>
    </td>
    <td>
-      <a href="<portlet:renderURL>
-          <portlet:param name="op" value="<%= CMSAdminConstants.OP_VIEWFILE %>"/>
-          <portlet:param name="path"
-            value="<%= file.getBasePath() %>"/>
-        </portlet:renderURL>">
-         <%= file.getBasePath().substring(file.getBasePath().lastIndexOf("/") + 1, file.getBasePath().length()) %></a>
+      <%
+         if (file.getCreationDate() != null)
+         {
+            Format formatter;
+            formatter = new SimpleDateFormat("MM/dd/yy HH:mm");
+            createDate = formatter.format(file.getCreationDate());
+         }
+      %>
+      <%= createDate %>
    </td>
-   <td align="center"><img src="<%= renderRequest.getContextPath() + CMSAdminConstants.DEFAULT_IMAGES_PATH%>/file.gif" alt="${n:i18n("CMS_FILE")}"
-            border="0"></td>
-   <td><%= file.getLastModified() %></td>
-   <td><%= file.getCreationDate() %></td>
+   <td>
+      <%
+         if (file.getLastModified() != null)
+         {
+            Format formatter;
+            formatter = new SimpleDateFormat("MM/dd/yy HH:mm");
+            modifiedDate = formatter.format(file.getLastModified());
+         }
+      %>
+      <%= modifiedDate %>
+   </td>
 </tr>
 <%
       }
@@ -145,5 +258,7 @@
 %>
 </table>
 <%
+
    }
+
 %>

Deleted: labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/WEB-INF/jsp/cms/admin/menu.jsp
===================================================================
--- labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/WEB-INF/jsp/cms/admin/menu.jsp	2007-01-11 22:09:16 UTC (rev 8831)
+++ labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/WEB-INF/jsp/cms/admin/menu.jsp	2007-01-11 22:10:56 UTC (rev 8832)
@@ -1,120 +0,0 @@
-<%@ page import="org.jboss.portal.core.portlet.cms.admin.CMSAdminConstants" %>
-<%@ page import="java.util.StringTokenizer" %>
-<%@ page language="java" extends="org.jboss.portal.core.servlet.jsp.PortalJsp" %>
-<%@ taglib uri="/WEB-INF/portal-lib.tld" prefix="n" %>
-<%@ taglib uri="http://java.sun.com/portlet" prefix="portlet" %>
-<%@ page isELIgnored="false" %>
-<portlet:defineObjects/>
-
-<table width="100%" border="0">
-   <tr>
-      <td colspan="3" class="portlet-section-header">${n:i18n("CMS_MENU")}</td>
-   </tr>
-   <tr>
-      <td align="left" class="portlet-section-alternate">${n:i18n("CMS_CREATE")}</td>
-      <td align="left" class="portlet-section-alternate">${n:i18n("CMS_TRANSFER")}</td>
-      <td align="left" class="portlet-section-alternate">${n:i18n("CMS_MODIFY")}</td>
-   </tr>
-   <tr>
-      <td align="left" class="portlet-section-alternate">
-         <a href="<portlet:renderURL>
-   <portlet:param name="op" value="<%= CMSAdminConstants.OP_CONFIRM_CREATE_COLLECTION %>"/>
-   <portlet:param name="path" value="<%= sCurrPath %>"/>
-   </portlet:renderURL>">
-            <img src="<%= renderRequest.getContextPath() + CMSAdminConstants.DEFAULT_IMAGES_PATH%>/createfolder.gif"
-                 alt="${n:i18n("CMS_CREATEFOLDER")}" border="0"/>
-         </a>&nbsp;
-         <a href="<portlet:renderURL>
-   <portlet:param name="op" value="<%= CMSAdminConstants.OP_CREATENEWTEXT %>"/>
-   <portlet:param name="path" value="<%= sCurrPath %>"/>
-   </portlet:renderURL>">
-            <img src="<%= renderRequest.getContextPath() + CMSAdminConstants.DEFAULT_IMAGES_PATH%>/createfile.gif"
-                 alt="${n:i18n("CMS_CREATEFILE")}" border="0"/></a>
-      </td>
-      <td align="left" class="portlet-section-alternate">
-         <a href="<portlet:renderURL>
-   <portlet:param name="op" value="<%= CMSAdminConstants.OP_UPLOADCONFIRM %>"/>
-   <portlet:param name="path" value="<%= sCurrPath %>"/>
-   </portlet:renderURL>">
-            <img src="<%= renderRequest.getContextPath() + CMSAdminConstants.DEFAULT_IMAGES_PATH%>/upload.gif"
-                 alt="${n:i18n("TITLE_UPLOAD")}" border="0"/></a>&nbsp;
-         <a href="<portlet:renderURL>
-   <portlet:param name="op" value="<%= CMSAdminConstants.OP_UPLOADARCHIVECONFIRM %>"/>
-   <portlet:param name="path" value="<%= sCurrPath %>"/>
-   </portlet:renderURL>">
-            <img src="<%= renderRequest.getContextPath() + CMSAdminConstants.DEFAULT_IMAGES_PATH%>/upload_archive.gif"
-                 alt="${n:i18n("CMS_UPLOADARCHIVE")}" border="0"></a>&nbsp;
-         <a href="<portlet:renderURL>
-   <portlet:param name="op" value="<%= CMSAdminConstants.OP_EXPORTARCHIVE %>"/>
-   <portlet:param name="path" value="<%= sCurrPath %>"/>
-   </portlet:renderURL>">
-            <img src="<%= renderRequest.getContextPath() + CMSAdminConstants.DEFAULT_IMAGES_PATH%>/export_archive.gif"
-                 alt="${n:i18n("CMS_EXPORTARCHIVE")}" border="0"></a>
-      </td>
-      <td align="left" class="portlet-section-alternate">
-         <%
-            if(!"/".equals(sCurrPath))
-            {
-         %>
-         <a href="<portlet:renderURL>
-   <portlet:param name="op" value="<%= CMSAdminConstants.OP_CONFIRMCOPY %>"/>
-   <portlet:param name="path" value="<%= sCurrPath %>"/>
-   <portlet:param name="type" value="fo"/>
-   </portlet:renderURL>">
-            <img src="<%= renderRequest.getContextPath() + CMSAdminConstants.DEFAULT_IMAGES_PATH%>/copy.gif"
-                 alt="${n:i18n("CMS_COPY")}" border="0"></a>&nbsp;
-         <a href="<portlet:renderURL>
-   <portlet:param name="op" value="<%= CMSAdminConstants.OP_CONFIRMMOVE %>"/>
-   <portlet:param name="path" value="<%= sCurrPath %>"/>
-   <portlet:param name="type" value="fo"/>
-   </portlet:renderURL>">
-            <img src="<%= renderRequest.getContextPath() + CMSAdminConstants.DEFAULT_IMAGES_PATH%>/move.gif"
-                 alt="${n:i18n("CMS_MOVE")}" border="0"></a>&nbsp;
-         <a href="<portlet:renderURL>
-   <portlet:param name="op" value="<%= CMSAdminConstants.OP_CONFIRMDELETE %>"/>
-   <portlet:param name="path" value="<%= sCurrPath %>"/>
-   </portlet:renderURL>">
-            <img src="<%= renderRequest.getContextPath() + CMSAdminConstants.DEFAULT_IMAGES_PATH%>/delete.gif"
-                 alt="${n:i18n("CMS_DELETE")}" border="0">
-         </a>
-         <%
-            }
-         %>
-      </td>
-   </tr>
-</table>
-
-<br><br>
-
-<a href="<portlet:renderURL>
-<portlet:param name="op" value="<%= CMSAdminConstants.OP_MAIN %>"/>
-<portlet:param name="path" value="/"/>
-        </portlet:renderURL>">
-   <img align="absmiddle"
-        src="<%= renderRequest.getContextPath() + CMSAdminConstants.DEFAULT_IMAGES_PATH%>/folder_home.gif"
-        border="0"></a>
-
-<%
-   StringTokenizer parser = new StringTokenizer(sCurrPath, "/");
-   String sPathBuilder = "";
-   while(parser.hasMoreTokens())
-   {
-      String sPathChunk = parser.nextToken();
-      sPathBuilder += "/" + sPathChunk;
-      if (parser.hasMoreTokens())
-      {
-%>
-:&nbsp;<a href="<portlet:renderURL>
-   <portlet:param name="op" value="<%= CMSAdminConstants.OP_MAIN %>"/>
-   <portlet:param name="path" value="<%= sPathBuilder %>"/>
-</portlet:renderURL>"><%= sPathChunk %></a>
-<%
-      }
-      else
-      {
-%>
-:&nbsp;<%= sPathChunk %>   
-<%
-      }
-   }
-%>

Added: labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/WEB-INF/jsp/cms/admin/securenode.jsp
===================================================================
--- labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/WEB-INF/jsp/cms/admin/securenode.jsp	2007-01-11 22:09:16 UTC (rev 8831)
+++ labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/WEB-INF/jsp/cms/admin/securenode.jsp	2007-01-11 22:10:56 UTC (rev 8832)
@@ -0,0 +1,250 @@
+<%@ page import="org.jboss.portal.core.portlet.cms.admin.CMSAdminConstants" %>
+<%@ page import="org.jboss.portal.identity.Role" %>
+<%@ page import="org.jboss.portal.identity.User" %>
+<%@ page import="java.util.Iterator" %>
+<%@ page import="java.util.Set" %>
+<%@ page language="java" extends="org.jboss.portal.core.servlet.jsp.PortalJsp" %>
+<%@ taglib uri="http://java.sun.com/portlet" prefix="portlet" %>
+<%@ taglib uri="/WEB-INF/portal-lib.tld" prefix="n" %>
+<%@ page isELIgnored="false" %>
+
+<portlet:defineObjects/>
+
+<%
+   String sCurrPath = (String)request.getAttribute("currpath");
+   Set roleSet = (Set)request.getAttribute("roles");
+   Set userSet = (Set)request.getAttribute("users");
+   String sConfirm = (String)request.getAttribute("confirm");
+   String returnOp = (String)request.getAttribute("returnOp");
+   
+   Set readRoleSet = (Set)request.getAttribute("readRoleSet");
+   Set readUserSet = (Set)request.getAttribute("readUserSet");
+   Set writeRoleSet = (Set)request.getAttribute("writeRoleSet");
+   Set writeUserSet = (Set)request.getAttribute("writeUserSet");
+   Set manageRoleSet = (Set)request.getAttribute("manageRoleSet");
+   Set manageUserSet = (Set)request.getAttribute("manageUserSet");
+%>
+
+<form action="<portlet:actionURL>
+ <portlet:param name="op" value="<%= CMSAdminConstants.OP_SECURE %>"/>
+ <portlet:param name="path" value="<%= sCurrPath %>"/>
+ <portlet:param name="returnOp" value="<%= returnOp %>"/>
+ </portlet:actionURL>" method="post">
+<table width="100%">
+<th colspan="2" align="center" class="portlet-section-header">${n:i18n("TITLE_SECURECONFIRM")}</th>
+<%
+   if (sConfirm != null && !"".equals(sConfirm))
+   {
+%>
+<tr>
+   <td colspan="2">
+      <font color="red"><%= sConfirm %>
+      </font>
+   </td>
+</tr>
+<%
+   }
+%>
+<tr>
+   <td colspan="2">
+      <font class="portlet-font">Configure security restrictions on node: <%= sCurrPath %>
+      </font>
+   </td>
+</tr>
+<tr>
+   <td colspan="2" height="10"></td>
+</tr>
+<tr>
+   <td class="portlet-section-alternate" colspan="2">
+      <table>
+         <tr>
+            <td colspan="2" class="portlet-section-header" align="center">Set Read Permissions</td>
+         </tr>
+         <tr>
+            <td>
+               <select name="secureroles:read" multiple="multiple">
+                  <option value="0" <%if(readRoleSet.contains(new Long(0))){%>selected<%}%>>
+                  	Anonymous
+                  </option>
+                  <%
+                     Iterator iterator = roleSet.iterator();
+                     while (iterator.hasNext())
+                     {
+                        Role role = (Role)iterator.next();
+                  %>
+                  <option value="<%= role.getId() %>" <%if(readRoleSet.contains(role.getId())){%>selected<%}%>>
+                  	<%= role.getDisplayName() %>
+                  </option>
+                  <%
+                     }
+                  %>
+               </select>
+            </td>
+            <td>Select Roles that have access to this node.<br/>
+               (You may select multiple roles by using CTRL+click on the role names.)
+            </td>
+         </tr>
+         <tr>
+            <td colspan="2" height="10"></td>
+         </tr>
+         <tr>
+            <td>
+               <select name="secureusers:read" multiple="multiple">
+                  <%
+                     Iterator iteratorUser = userSet.iterator();
+                     while (iteratorUser.hasNext())
+                     {
+                        User user = (User)iteratorUser.next();
+                  %>
+                  <option value="<%= user.getId() %>" <%if(readUserSet.contains(user.getId())){%>selected<%}%>>
+                  	<%= user.getUserName() %>
+                  </option>
+                  <%
+                     }
+                  %>
+               </select>
+            </td>
+            <td>Select Users that have access to this node.<br/>
+               (You may select multiple users by using CTRL+click on the user names.)
+            </td>
+         </tr>
+      </table>
+   </td>
+</tr>
+<tr>
+   <td colspan="2" height="10"></td>
+</tr>
+<tr>
+   <td class="portlet-section-alternate" colspan="2">
+      <table>
+         <tr>
+            <td colspan="2" class="portlet-section-header" align="center">Set Write Permissions</td>
+         </tr>
+         <tr>
+            <td>
+               <select name="secureroles:write" multiple="multiple">
+                  <option value="0" <%if(writeRoleSet.contains(new Long(0))){%>selected<%}%>>
+                  	Anonymous
+                  </option>
+                  <%
+                     iterator = roleSet.iterator();
+                     while (iterator.hasNext())
+                     {
+                        Role role = (Role)iterator.next();
+                  %>
+                  <option value="<%= role.getId() %>" <%if(writeRoleSet.contains(role.getId())){%>selected<%}%>>
+                  	<%= role.getDisplayName() %>
+                  </option>
+                  <%
+                     }
+                  %>
+               </select>
+            </td>
+            <td>Select Roles that have access to this node.<br/>
+               (You may select multiple roles by using CTRL+click on the role names.)
+            </td>
+         </tr>
+         <tr>
+            <td colspan="2" height="10"></td>
+         </tr>
+         <tr>
+            <td>
+               <select name="secureusers:write" multiple="multiple">
+                  <%
+                     iteratorUser = userSet.iterator();
+                     while (iteratorUser.hasNext())
+                     {
+                        User user = (User)iteratorUser.next();
+                  %>
+                  <option value="<%= user.getId() %>" <%if(writeUserSet.contains(user.getId())){%>selected<%}%>>
+                  	<%= user.getUserName() %>
+                  </option>
+                  <%
+                     }
+                  %>
+               </select>
+            </td>
+            <td>Select Users that have access to this node.<br/>
+               (You may select multiple users by using CTRL+click on the user names.)
+            </td>
+         </tr>
+      </table>
+   </td>
+</tr>
+<tr>
+   <td colspan="2" height="10"></td>
+</tr>
+<tr>
+   <td class="portlet-section-alternate" colspan="2">
+      <table>
+         <tr>
+            <td colspan="2" class="portlet-section-header" align="center">Set Manage Permissions</td>
+         </tr>
+         <tr>
+            <td>
+               <select name="secureroles:manage" multiple="multiple">
+                  <option value="0" <%if(manageRoleSet.contains(new Long(0))){%>selected<%}%>>
+                  	Anonymous
+                  </option>
+                  <%
+                     iterator = roleSet.iterator();
+                     while (iterator.hasNext())
+                     {
+                        Role role = (Role)iterator.next();
+                  %>
+                  <option value="<%= role.getId() %>" <%if(manageRoleSet.contains(role.getId())){%>selected<%}%>>
+                  	<%= role.getDisplayName() %>
+                  </option>
+                  <%
+                     }
+                  %>
+               </select>
+            </td>
+            <td>Select Roles that have access to this node.<br/>
+               (You may select multiple roles by using CTRL+click on the role names.)
+            </td>
+         </tr>
+         <tr>
+            <td colspan="2" height="10"></td>
+         </tr>
+         <tr>
+            <td>
+               <select name="secureusers:manage" multiple="multiple">
+                  <%
+                     iteratorUser = userSet.iterator();
+                     while (iteratorUser.hasNext())
+                     {
+                        User user = (User)iteratorUser.next();
+                  %>
+                  <option value="<%= user.getId() %>" <%if(manageUserSet.contains(user.getId())){%>selected<%}%>>
+                  	<%= user.getUserName() %>
+                  </option>
+                  <%
+                     }
+                  %>
+               </select>
+            </td>
+            <td>Select Users that have access to this node.<br/>
+               (You may select multiple users by using CTRL+click on the user names.)
+            </td>
+         </tr>
+      </table>
+   </td>
+</tr>
+<tr>
+   <td colspan="2" height="10"></td>
+</tr>
+<tr>
+   <td align="center" colspan="2"><input type="submit" value="${n:i18n("CMS_SECURE")}" name="submit"
+                                         class="portlet-form-button"></td>
+</tr>
+</table>
+</form>
+
+<a href="<portlet:renderURL>
+                <portlet:param name="op" value="<%= returnOp %>"/>
+                <portlet:param name="path"
+                  value="<%= sCurrPath %>"/>
+              </portlet:renderURL>">
+   <img src="<%= renderRequest.getContextPath() + CMSAdminConstants.DEFAULT_IMAGES_PATH%>/browse.gif" border="0"
+        alt="${n:i18n("CMS_BACKTOBROWSER")}"></a>
\ No newline at end of file

Modified: labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/WEB-INF/jsp/cms/admin/upload.jsp
===================================================================
--- labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/WEB-INF/jsp/cms/admin/upload.jsp	2007-01-11 22:09:16 UTC (rev 8831)
+++ labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/WEB-INF/jsp/cms/admin/upload.jsp	2007-01-11 22:10:56 UTC (rev 8832)
@@ -7,7 +7,7 @@
 <portlet:defineObjects/>
 
 <%
-   String sCurrPath = (String) request.getAttribute("currpath");
+   String sCurrPath = (String)request.getAttribute("currpath");
    String OP = CMSAdminConstants.OP_UPLOADCONFIRM;
    String[] langs = Locale.getISOLanguages();
 %>
@@ -19,6 +19,9 @@
    <table width="100%">
       <th colspan="2" class="portlet-section-header" align="center">${n:i18n("TITLE_UPLOAD")}</th>
       <tr>
+         <td valign="top" width="250" class="portlet-section-alternate">
+            <%@ include file="folderlist.jsp" %>
+         </td>
          <td align="left">
             <table>
                <tr>
@@ -31,41 +34,47 @@
                </tr>
                <tr>
                   <td valign="bottom">
-                     ${n:i18n("CMS_DESCRIPTION")}:</td><td><input type="text" size="40" maxlength="80" name="description" value=""
-                                                 class="portlet-form-input-field"/></td>
+                     ${n:i18n("CMS_DESCRIPTION")}:
+                  </td>
+                  <td><input type="text" size="40" maxlength="80" name="description" value=""
+                             class="portlet-form-input-field"/></td>
                </tr>
                <tr>
                   <td valign="bottom">
-                     ${n:i18n("CMS_TITLE")}:</td><td><input type="text" size="40" maxlength="80" name="title" value=""
-                                           class="portlet-form-input-field"/></td>
+                     ${n:i18n("CMS_TITLE")}:
+                  </td>
+                  <td><input type="text" size="40" maxlength="80" name="title" value=""
+                             class="portlet-form-input-field"/></td>
                </tr>
                <tr>
                   <td valign="bottom">
-                     ${n:i18n("CMS_LANGUAGE")}:</td><td><select name="language" class="portlet-form-input-field">
-                  <option selected
-                          value="<%= Locale.getDefault().getLanguage() %>"><%= Locale.getDefault().getDisplayLanguage() %></option>
-                  <%
-                     for(int i = 0; i < langs.length; i++)
-                     {
-                  %>
-                  <option value="<%= langs[i] %>"><%= new Locale(langs[i]).getDisplayLanguage() %></option>
-                  <%
-                     }
-                  %>
-               </select>
-               </td>
+                     ${n:i18n("CMS_LANGUAGE")}:
+                  </td>
+                  <td><select name="language" class="portlet-form-input-field">
+                     <option selected
+                             value="<%= Locale.getDefault().getLanguage() %>"><%= Locale.getDefault().getDisplayLanguage() %>
+                     </option>
+                     <%
+                        for (int i = 0; i < langs.length; i++)
+                        {
+                     %>
+                     <option value="<%= langs[i] %>"><%= new Locale(langs[i]).getDisplayLanguage() %>
+                     </option>
+                     <%
+                        }
+                     %>
+                  </select>
+                  </td>
                </tr>
-               <tr><td colspan="2" align="left">
-                  <input type="file" size="32" name="content" value="" class="portlet-form-input-field"/>
-                  <br><br>
-                  <input type="submit" name="submit" value="${n:i18n("CMS_UPLOAD")}" class="portlet-form-input-field"/>
-               </td>
+               <tr>
+                  <td colspan="2" align="left">
+                     <input type="file" size="32" name="response" value="" class="portlet-form-input-field"/>
+                     <br><br>
+                     <input type="submit" name="submit" value="${n:i18n("CMS_UPLOAD")}" class="portlet-form-button"/>
+                  </td>
                </tr>
             </table>
          </td>
-         <td valign="top" class="portlet-section-alternate">
-            <%@ include file="folderlist.jsp" %>
-         </td>
       </tr>
    </table>
 </form>

Modified: labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/WEB-INF/jsp/cms/admin/uploadarchive.jsp
===================================================================
--- labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/WEB-INF/jsp/cms/admin/uploadarchive.jsp	2007-01-11 22:09:16 UTC (rev 8831)
+++ labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/WEB-INF/jsp/cms/admin/uploadarchive.jsp	2007-01-11 22:10:56 UTC (rev 8832)
@@ -7,7 +7,7 @@
 <portlet:defineObjects/>
 
 <%
-   String sCurrPath = (String) request.getAttribute("currpath");
+   String sCurrPath = (String)request.getAttribute("currpath");
    String OP = CMSAdminConstants.OP_UPLOADARCHIVECONFIRM;
    String[] langs = Locale.getISOLanguages();
 %>
@@ -19,6 +19,9 @@
    <table width="100%">
       <th colspan="2" class="portlet-section-header" align="center">${n:i18n("CMS_UPLOADARCHIVE")}</th>
       <tr>
+         <td valign="top" width="250" class="portlet-section-alternate">
+            <%@ include file="folderlist.jsp" %>
+         </td>
          <td align="left">
             <table>
                <tr>
@@ -31,31 +34,33 @@
                </tr>
                <tr>
                   <td valign="bottom">
-                     ${n:i18n("CMS_LANGUAGE")}:</td><td><select name="language" class="portlet-form-input-field">
-                  <option selected
-                          value="<%= Locale.getDefault().getLanguage() %>"><%= Locale.getDefault().getDisplayLanguage() %></option>
-                  <%
-                     for(int i = 0; i < langs.length; i++)
-                     {
-                  %>
-                  <option value="<%= langs[i] %>"><%= new Locale(langs[i]).getDisplayLanguage() %></option>
-                  <%
-                     }
-                  %>
-               </select>
-               </td>
+                     ${n:i18n("CMS_LANGUAGE")}:
+                  </td>
+                  <td><select name="language" class="portlet-form-input-field">
+                     <option selected
+                             value="<%= Locale.getDefault().getLanguage() %>"><%= Locale.getDefault().getDisplayLanguage() %>
+                     </option>
+                     <%
+                        for (int i = 0; i < langs.length; i++)
+                        {
+                     %>
+                     <option value="<%= langs[i] %>"><%= new Locale(langs[i]).getDisplayLanguage() %>
+                     </option>
+                     <%
+                        }
+                     %>
+                  </select>
+                  </td>
                </tr>
-               <tr><td colspan="2">
-                  <input type="file" size="32" name="content" value="" class="portlet-form-input-field"/>
-                  <br><br>
-                  <input type="submit" name="submit" value="${n:i18n("CMS_UPLOAD")}" class="portlet-form-input-field"/>
-               </td>
+               <tr>
+                  <td colspan="2">
+                     <input type="file" size="32" name="response" value="" class="portlet-form-input-field"/>
+                     <br><br>
+                     <input type="submit" name="submit" value="${n:i18n("CMS_UPLOAD")}" class="portlet-form-button"/>
+                  </td>
                </tr>
             </table>
          </td>
-         <td valign="top" class="portlet-section-alternate">
-            <%@ include file="folderlist.jsp" %>
-         </td>
       </tr>
    </table>
 </form>

Modified: labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/WEB-INF/jsp/cms/admin/viewfile.jsp
===================================================================
--- labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/WEB-INF/jsp/cms/admin/viewfile.jsp	2007-01-11 22:09:16 UTC (rev 8831)
+++ labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/WEB-INF/jsp/cms/admin/viewfile.jsp	2007-01-11 22:10:56 UTC (rev 8832)
@@ -6,213 +6,231 @@
 <%@ page import="org.jboss.portal.cms.model.Content,
                  org.jboss.portal.cms.util.NodeUtil" %>
 <%@ page import="org.jboss.portal.core.portlet.cms.admin.CMSAdminConstants" %>
+<%@ page import="java.text.Format" %>
+<%@ page import="java.text.SimpleDateFormat" %>
 <%@ page import="java.util.List" %>
 <%@ page import="java.util.StringTokenizer" %>
 <%@ page import="java.util.Vector" %>
+<%@ page import="java.util.Collection" %>
+<%@ page import="java.util.Iterator" %>
 
 <portlet:defineObjects/>
 
 <%
-   String sCurrPath = (String) request.getAttribute("currpath");
-   Vector vContents = (Vector) request.getAttribute("contents");
+   String sCurrPath = (String)request.getAttribute("currpath");
+   Vector vContents = (Vector)request.getAttribute("contents");
+   Collection pendingQueue = (Collection)request.getAttribute("pendingQueue");
+        
    String sType = "";
-   if(vContents.size() > 0)
+   if (vContents.size() > 0)
    {
-      List contentList = (List) vContents.elementAt(0);
-      if(contentList.size() > 0)
+      List contentList = (List)vContents.elementAt(0);
+      if (contentList.size() > 0)
       {
-         Content content = (Content) contentList.get(0);
+         Content content = (Content)contentList.get(0);
          sType = content.getMimeType();
       }
    }
-   String sPreviewPath = (String) request.getAttribute("previewpath");
+   String sPreviewPath = (String)request.getAttribute("previewpath");
+
+   String createDate = "";
+   String modifiedDate = "";
+
+   String rowClass = "portlet-section-body";     
 %>
 <br>
 
-<div align="center"><b>${n:i18n("TITLE_FILEBROWSE")}</b></div>
+${n:i18n("CMS_MAIN_USE")}
 
-<a href="<portlet:renderURL>
+<hr/>
+
+Browsing: <a href="<portlet:renderURL>
 <portlet:param name="op" value="<%= CMSAdminConstants.OP_MAIN %>"/>
 <portlet:param name="path" value="/"/>
-        </portlet:renderURL>">
-   <img align="absmiddle"
-        src="<%= renderRequest.getContextPath() + CMSAdminConstants.DEFAULT_IMAGES_PATH%>/folder_home.gif"
-        border="0"></a>
+        </portlet:renderURL>">Home</a>
 
 <%
    StringTokenizer parser = new StringTokenizer(sCurrPath, "/");
    String sPathBuilder = "";
-   while(parser.hasMoreTokens())
+   while (parser.hasMoreTokens())
    {
       String sPathChunk = parser.nextToken();
       sPathBuilder += "/" + sPathChunk;
-      if(parser.hasMoreTokens())
+      if (parser.hasMoreTokens())
       {
 %>
-:&nbsp;<a href="<portlet:renderURL>
+>&nbsp;<a href="
+<portlet:renderURL>
    <portlet:param name="op" value="<%= CMSAdminConstants.OP_MAIN %>"/>
    <portlet:param name="path" value="<%= sPathBuilder %>"/>
-</portlet:renderURL>"><%= sPathChunk %></a>
+</portlet:renderURL>
+"><%= sPathChunk %></a>
 <%
 }
 else
 {
 %>
-:&nbsp;<%= sPathChunk %>
+>&nbsp;<%= sPathChunk %>
 <%
       }
    }
 %>
 
+<br/><br/>
 
-<table width="100%" border="0">
-   <tr>
-      <td colspan="3" class="portlet-section-header">${n:i18n("CMS_MENU")}</td>
-   </tr>
-   <tr>
-      <td align="left" class="portlet-section-alternate">
-         <%
-            if(sType.equals("text/html") || sType.equals("text/plain"))
-            {
-         %>
-         <a href="<portlet:renderURL>
+<!-- file-level action dropdown -->
+<div class="menu">
+   <ul>
+      <li><a href="#">Select Action <img
+         src="<%= renderRequest.getContextPath() + CMSAdminConstants.DEFAULT_IMAGES_PATH%>/downarrow.gif"
+         border="0"></a>
+         <ul>
+            <%
+               if (sType.equals("text/html") || sType.equals("text/plain"))
+               {
+            %>
+            <li><a href="<portlet:renderURL>
    <portlet:param name="op" value="<%= CMSAdminConstants.OP_CREATENEWTEXT %>"/>
    <portlet:param name="path" value="<%= NodeUtil.getParentPath(sCurrPath) %>"/>
-   </portlet:renderURL>">
-            <img src="<%= renderRequest.getContextPath() + CMSAdminConstants.DEFAULT_IMAGES_PATH%>/edit.gif"
-                 alt="${n:i18n("CMS_EDIT")}" border="0">
-         </a>
-         <%
-         }
-         else
-         {
-         %>
-         <a href="<portlet:renderURL>
+   </portlet:renderURL>">${n:i18n("CMS_CREATE")}</a></li>
+            <%
+            }
+            else
+            {
+            %>
+            <li><a href="<portlet:renderURL>
    <portlet:param name="op" value="<%= CMSAdminConstants.OP_UPLOADCONFIRM %>"/>
    <portlet:param name="path" value="<%= NodeUtil.getParentPath(sCurrPath) %>"/>
-   </portlet:renderURL>">
-            <img src="<%= renderRequest.getContextPath() + CMSAdminConstants.DEFAULT_IMAGES_PATH%>/edit.gif"
-                 alt="${n:i18n("CMS_EDIT")}" border="0">
-         </a>
-         <%
-            }
-         %>
-         <a href="<portlet:renderURL>
+   </portlet:renderURL>">${n:i18n("CMS_EDIT")}</a></li>
+            <%
+               }
+            %>
+            <li><a href="<portlet:renderURL>
    <portlet:param name="op" value="<%= CMSAdminConstants.OP_CONFIRMCOPY %>"/>
    <portlet:param name="path" value="<%= sCurrPath %>"/>
    <portlet:param name="type" value="fi"/>
-   </portlet:renderURL>">
-            <img src="<%= renderRequest.getContextPath() + CMSAdminConstants.DEFAULT_IMAGES_PATH%>/copy.gif"
-                 alt="${n:i18n("CMS_COPY")}" border="0"></a>&nbsp;
-         <a href="<portlet:renderURL>
+   </portlet:renderURL>">${n:i18n("CMS_COPY")}</a></li>
+            <li><a href="<portlet:renderURL>
    <portlet:param name="op" value="<%= CMSAdminConstants.OP_CONFIRMMOVE %>"/>
    <portlet:param name="path" value="<%= sCurrPath %>"/>
    <portlet:param name="type" value="fi"/>
-   </portlet:renderURL>">
-            <img src="<%= renderRequest.getContextPath() + CMSAdminConstants.DEFAULT_IMAGES_PATH%>/move.gif"
-                 alt="${n:i18n("CMS_MOVE")}" border="0"></a>&nbsp;
-         <a href="<portlet:renderURL>
+   </portlet:renderURL>">${n:i18n("CMS_MOVE")}</a></li>
+            <li><a href="<portlet:renderURL>
    <portlet:param name="op" value="<%= CMSAdminConstants.OP_CONFIRMDELETE %>"/>
    <portlet:param name="path" value="<%= sCurrPath %>"/>
-   </portlet:renderURL>">
-            <img src="<%= renderRequest.getContextPath() + CMSAdminConstants.DEFAULT_IMAGES_PATH%>/delete.gif"
-                 alt="${n:i18n("CMS_DELETE")}" border="0">
-         </a>
-      </td>
-   </tr>
-</table>
-<br>
+   </portlet:renderURL>">${n:i18n("CMS_DELETE")}</a></li>
+            <li><a href="<portlet:renderURL>
+   <portlet:param name="op" value="<%= CMSAdminConstants.OP_CONFIRMSECURE %>"/>
+   <portlet:param name="path" value="<%= sCurrPath %>"/>
+   <portlet:param name="returnOp" value="<%= CMSAdminConstants.OP_VIEWFILE %>"/>
+   </portlet:renderURL>">${n:i18n("CMS_SECURE")}</a></li>
+         </ul>
+      </li>
+   </ul>
+</div>
 
-<table width="100%" border="0" cellspacing="2" cellpadding="2">
+<br/><br/>
+
+<table width="100%" border="0" cellspacing="0" cellpadding="0">
 <%
-   if(vContents.size() > 0)
+   if (vContents.size() > 0)
    {
-      for(int j = 0; j < vContents.size(); j++) // cycle thru list of content nodes
+      for (int j = 0; j < vContents.size(); j++) // cycle thru list of content nodes
       {
-         List contentList = (List) vContents.elementAt(j);
-         if(contentList.size() > 0)
+         List contentList = (List)vContents.elementAt(j);
+         if (contentList.size() > 0)
          {
-            Content content = (Content) contentList.get(0);
+            Content content = (Content)contentList.get(0);
 %>
-<tr><td height="10"></td></tr>
 <tr>
-   <td colspan="8">
+   <td height="15"></td>
+</tr>
+<tr>
+   <td colspan="6">
       <%
-         if(sType.equals("text/html") || sType.equals("text/plain"))
+         if (sType.equals("text/html") || sType.equals("text/plain"))
          {
       %>
-      <a href="<portlet:renderURL>
+      <img src="<%= renderRequest.getContextPath() + CMSAdminConstants.DEFAULT_IMAGES_PATH%>/edit.gif"
+           alt="${n:i18n("CMS_EDIT")}" border="0">&nbsp;<a href="<portlet:renderURL>
    <portlet:param name="op" value="<%= CMSAdminConstants.OP_EDIT %>"/>
    <portlet:param name="path" value="<%= sCurrPath %>"/>
    <portlet:param name="language" value="<%= content.getLocale().getLanguage() %>" />
-   </portlet:renderURL>">
-         <img src="<%= renderRequest.getContextPath() + CMSAdminConstants.DEFAULT_IMAGES_PATH%>/edit.gif"
-              alt="${n:i18n("CMS_EDIT")}" border="0">
-      </a>
+   </portlet:renderURL>"><%= content.getLocale().getDisplayLanguage() %>
+   </a>
       <%
       }
       else
       {
       %>
-      <a href="<portlet:renderURL>
+      <img src="<%= renderRequest.getContextPath() + CMSAdminConstants.DEFAULT_IMAGES_PATH%>/edit.gif"
+           alt="${n:i18n("CMS_EDIT")}" border="0">&nbsp;<a href="<portlet:renderURL>
    <portlet:param name="op" value="<%= CMSAdminConstants.OP_EDIT_BINARY %>"/>
    <portlet:param name="path" value="<%= sCurrPath %>"/>
    <portlet:param name="language" value="<%= content.getLocale().getLanguage() %>"/>
-   </portlet:renderURL>">
-         <img src="<%= renderRequest.getContextPath() + CMSAdminConstants.DEFAULT_IMAGES_PATH%>/edit.gif"
-              alt="${n:i18n("CMS_EDIT")}" border="0">
-      </a>
+   </portlet:renderURL>"><%= content.getLocale().getDisplayLanguage() %>
+   </a>
       <%
          }
       %>
-
-      <%= content.getLocale().getDisplayLanguage() %></td>
+   </td>
 </tr>
 <tr>
-   <%
-      if(sType.equals("text/html") || sType.equals("text/plain"))
-      {
-   %>
-   <td class="portlet-section-header">${n:i18n("CMS_EDIT")}</td>
-   <%
-      }
-   %>
-   <td class="portlet-section-header">${n:i18n("CMS_TYPE")}</td>
-   <td class="portlet-section-header">${n:i18n("CMS_SIZE")}</td>
-   <td class="portlet-section-header">${n:i18n("CMS_VERSION")}</td>
-   <td class="portlet-section-header">${n:i18n("CMS_CREATED")}</td>
-   <td class="portlet-section-header">${n:i18n("CMS_MODIFIED")}</td>
-   <td class="portlet-section-header">${n:i18n("CMS_TITLE")}</td>
+   <td class="portlet-table-text"><b>${n:i18n("CMS_TYPE")}</b></td>
+   <td class="portlet-table-text"><b>${n:i18n("CMS_SIZE")}</b></td>
+   <td class="portlet-table-text"><b>${n:i18n("CMS_VERSION")}</b></td>
+   <td class="portlet-table-text"><b>${n:i18n("CMS_CREATED")}</b></td>
+   <td class="portlet-table-text"><b>${n:i18n("CMS_MODIFIED")}</b></td>
+   <td class="portlet-table-text"><b>${n:i18n("CMS_TITLE")}</b></td>
 </tr>
 <%
-   for(int i = 0; i < contentList.size(); i++) // cycle thru list of version nodes
+   for (int i = 0; i < contentList.size(); i++) // cycle thru list of version nodes
    {
-      Content version = (Content) contentList.get(i);
+      Content version = (Content)contentList.get(i); 
+      
+      if(version.isWaitingForPublishApproval())
+      {
+      		continue;
+      }     
+      
+      if (i % 2 == 0)
+      {
+         rowClass = "portlet-section-body";
+      }
+      else
+      {
+         rowClass = "portlet-section-alternate";
+      }
 %>
-<tr onmouseover="this.className='portlet-section-alternate';" onmouseout="this.className='portlet-section-body';">
-   <%
-      if(sType.equals("text/html") || sType.equals("text/plain"))
+<tr onmouseover="this.className='portlet-section-selected';" onmouseout="this.className='<%= rowClass %>';"
+    class="<%= rowClass %>">
+   <td><%
+      if (sType.equals("text/html") || sType.equals("text/plain"))
       {
    %>
-   <td>
-      <a href="<portlet:renderURL>
+
+      <img src="<%= renderRequest.getContextPath() + CMSAdminConstants.DEFAULT_IMAGES_PATH%>/edit.gif"
+           alt="${n:i18n("CMS_EDIT")}" border="0">&nbsp;<a href="<portlet:renderURL>
    <portlet:param name="op" value="<%= CMSAdminConstants.OP_EDIT %>"/>
    <portlet:param name="path" value="<%= sCurrPath %>"/>
    <portlet:param name="language" value="<%= content.getLocale().getLanguage() %>" />
    <portlet:param name="version" value="<%= version.getVersionNumber() %>"/>
-   </portlet:renderURL>">
-         <img src="<%= renderRequest.getContextPath() + CMSAdminConstants.DEFAULT_IMAGES_PATH%>/edit.gif"
-              alt="${n:i18n("CMS_EDIT")}" border="0">
-      </a>
+   </portlet:renderURL>"><%= version.getMimeType() %>
+   </a>
+      <%
+      }
+      else
+      {
+      %>
+      <%= version.getMimeType() %>
+      <%
+         }
+      %>
    </td>
-   <%
-      }
-   %>
-   <td><%= version.getMimeType() %></td>
-   <td><%= version.getBytes().length / 1024 %>kb</td>
+   <td><%= version.getSize() / 1024 %>kb</td>
    <td>
       <%
-         if(sType.equals("text/html") || sType.equals("text/plain"))
+         if (sType.equals("text/html") || sType.equals("text/plain"))
          {
       %>
       <%= version.getVersionNumber() %>
@@ -221,10 +239,12 @@
       {
       %>
       <a target="_blank"
-         href="<%= request.getContextPath() %>/cmspreview?v=<%= version.getVersionNumber() %>&l=<%= content.getLocale().getLanguage() %>&p=<%= sCurrPath %>"><%= version.getVersionNumber() %></a>
+         href="<%= request.getContextPath() %>/cmspreview?v=<%= version.getVersionNumber() %>&l=<%= content.getLocale().getLanguage() %>&p=<%= sCurrPath %>"><%=
+         version.getVersionNumber() %>
+      </a>
       <%
          }
-         if(version.isLive())
+         if (version.isLive())
          {
       %>
       <img src="<%= renderRequest.getContextPath() + CMSAdminConstants.DEFAULT_IMAGES_PATH%>/live.gif"
@@ -233,9 +253,30 @@
          }
       %>
    </td>
-   <td><%= version.getCreationDate() %></td>
-   <td><%= version.getLastModified() %>
-   <td><%= version.getTitle() %></td>
+   <td>
+      <%
+         if (version.getCreationDate() != null)
+         {
+            Format formatter;
+            formatter = new SimpleDateFormat("MM/dd/yy HH:mm");
+            createDate = formatter.format(version.getCreationDate());
+         }
+      %>
+      <%= createDate %>
+   </td>
+   <td>
+      <%
+         if (version.getLastModified() != null)
+         {
+            Format formatter;
+            formatter = new SimpleDateFormat("MM/dd/yy HH:mm");
+            modifiedDate = formatter.format(version.getLastModified());
+         }
+      %>
+      <%= modifiedDate %>
+   </td>
+   <td><%= version.getTitle() %>
+   </td>
 </tr>
 <%
             }
@@ -244,3 +285,47 @@
    }
 %>
 </table>
+
+<!-- the approval queue, content waiting for managers to signoff on -->
+<%if(pendingQueue!=null && !pendingQueue.isEmpty()){%>
+<br/><br/>
+
+<span class="portlet-table-text">Pending Approval Queue:</span>
+<br/>
+<table width="100%" border="0" cellspacing="0" cellpadding="0">
+<tr>
+   <td class="portlet-table-text"><b>${n:i18n("CMS_TYPE")}</b></td>
+   <td class="portlet-table-text"><b>${n:i18n("CMS_SIZE")}</b></td>
+   <td class="portlet-table-text"><b>${n:i18n("CMS_CREATED")}</b></td>
+   <td class="portlet-table-text"><b>User</b></td>   
+</tr>
+<%int i=0;%>
+<%for(Iterator itr=pendingQueue.iterator();itr.hasNext();){%>
+    <%
+    org.jboss.portal.workflow.cms.Content cour = (org.jboss.portal.workflow.cms.Content)itr.next();
+    if (i % 2 == 0)
+    {
+    	rowClass = "portlet-section-body";
+    }
+    else
+    {
+    	rowClass = "portlet-section-alternate";
+    }
+    i++;
+   %>
+<tr onmouseover="this.className='portlet-section-selected';" onmouseout="this.className='<%= rowClass %>';" 
+class="<%= rowClass %>">
+   <!-- Mime Type -->
+   <td><%= cour.getMimeType() %></td>
+   <!-- Size -->   
+   <td><%= cour.getSizeStr() %></td>
+   <!-- Creation Date -->
+   <td>   	 
+      <%= cour.getCreationDateStr() %>
+   </td>
+   <!-- User who requested approval -->      
+   <td><%= cour.getUserName() %></td>
+</tr>
+<%}%>
+</table>
+<%}%>

Added: labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/WEB-INF/jsp/dashboard/editpage.jsp
===================================================================
--- labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/WEB-INF/jsp/dashboard/editpage.jsp	2007-01-11 22:09:16 UTC (rev 8831)
+++ labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/WEB-INF/jsp/dashboard/editpage.jsp	2007-01-11 22:10:56 UTC (rev 8832)
@@ -0,0 +1,301 @@
+<%@ page import="org.jboss.portal.core.model.instance.Instance" %>
+<%@ page import="org.jboss.portal.core.model.portal.Page" %>
+<%@ page import="org.jboss.portal.core.model.portal.Window" %>
+<%@ page import="org.jboss.portal.theme.PortalLayout" %>
+<%@ page import="org.jboss.portal.theme.PortalTheme" %>
+<%@ page import="java.util.Collection" %>
+<%@ page import="java.util.Iterator" %>
+<%@ page import="java.util.List" %>
+<%@ page import="java.util.Map" %>
+<%@ page import="java.util.TreeSet" %>
+<%@ page language="java" extends="org.jboss.portal.core.servlet.jsp.PortalJsp" %>
+<%@ taglib uri="http://java.sun.com/portlet" prefix="portlet" %>
+<%@ taglib uri="/WEB-INF/portal-lib.tld" prefix="n" %>
+<%@ page isELIgnored="false" %>
+
+<portlet:defineObjects/>
+
+<%
+   List available_instances = (List)request.getAttribute("available_instances");
+   List pages = (List)request.getAttribute("pages");
+
+   Map windowMap = (Map)request.getAttribute("windowMap");
+   List regions = (List)request.getAttribute("regions");
+
+   String currentPage = (String)request.getAttribute("currentPage");
+   String currentLayout = (String)request.getAttribute("currentLayout");
+   String currentTheme = (String)request.getAttribute("currentTheme");
+
+   String errorMessage = (String)request.getAttribute("errorMsg");
+
+   Collection layouts = (Collection)request.getAttribute("layouts");
+   Collection themes = (Collection)request.getAttribute("themes");
+%>
+
+<script type="text/javascript" language="JavaScript">
+   function assignPortlet(op, to)
+   {
+      this.document.instancesform.op.value = op;
+      this.document.instancesform.toRegion.value = to;
+   }
+
+   function unassignPortlet(op, from)
+   {
+      this.document.instancesform.op.value = op;
+      this.document.instancesform.fromRegion.value = from;
+   }
+
+   function sortPortlet(op, region)
+   {
+      this.document.instancesform.op.value = op;
+      this.document.instancesform.sortRegion.value = region;
+   }
+
+   function switchLayout(op)
+   {
+      this.document.instancesform.op.value = op;
+   }
+
+   function switchTheme(op)
+   {
+      this.document.instancesform.op.value = op;
+   }
+
+   function debug()
+   {
+      //alert("OP: '" + this.instancesForm.op.value + "' toRegion: '" + this.instancesForm.toRegion.value + "' fromRegion: '" + this.instancesForm.fromRegion.value + "' sortRegion: '" + this.instancesForm.sortRegion.value + "'");
+   }
+</script>
+
+<%
+   if (errorMessage != null)
+   {
+%>
+<div align="center">
+   <font color="red"><b><%= errorMessage %>
+   </b></font>
+</div>
+<%
+   }
+%>
+
+<table width="100%">
+<th colspan="2" class="portlet-section-header" align="center">Personal Dashboard Editor</th>
+<tr>
+   <td class="portlet-section-body" align="center">
+      <table width="100%">
+         <tr>
+            <td width="250">
+               <table class="bottombuttonbar">
+                  <tr>
+                     <td align="left" valign="top"><b>Create a New Page:</b><br/>Page name:&nbsp;
+                        <form name="createpageform" action="<portlet:actionURL><portlet:param name="op" value="newpage"></portlet:param>
+             </portlet:actionURL>" method="POST" style="padding:0;margin:0">
+                           <input type="text" class="portlet-form-input-field" name="pagename"><input type="submit"
+                                                                                                      name="save"
+                                                                                                      value="Save"
+                                                                                                      class="portlet-form-button"/>
+                        </form>
+                     </td>
+                  </tr>
+               </table>
+            </td>
+            <td align="left" valign="top">
+               Use this tool to manage the content and appearance of your dashboard pages. <br/>
+               You can control the page titles, column layouts, page themes,
+               and add,
+               order, or remove portlets.
+            </td>
+         </tr>
+      </table>
+   </td>
+</tr>
+<th colspan="2" class="portlet-section-header" align="center">Currently editing page '<%= currentPage %>'</th>
+<tr>
+   <td class="portlet-section-body" align="center">
+      <form action="<portlet:actionURL><portlet:param name="op" value="editPage"></portlet:param>
+    </portlet:actionURL>" method="POST" style="padding:0;margin:0">
+         Select: <select name="editPageSelect">
+         <%
+            for (int i = 0; i < pages.size(); i++)
+            {
+               Page onePage = (Page)pages.get(i);
+               String selected = "";
+               if (onePage.getName().equals(currentPage))
+               {
+                  selected = " selected=\"true\" ";
+               }
+         %>
+         <option <%= selected %> value="<%= onePage.getName() %>"><%= onePage.getName() %>
+         </option>
+         <%
+            }
+         %>
+      </select>
+         <input type="submit" name="submit" value="Go" class="portlet-form-button"/>
+      </form>
+
+      <br/>
+   </td>
+</tr>
+<!--<tr>
+   <td>
+      <hr/>
+   </td>
+</tr>-->
+<tr>
+<td>
+<form action="<portlet:actionURL>
+    </portlet:actionURL>" name="instancesform" method="POST" onsubmit="debug();">
+<input type="hidden" name="op" value=""/>
+<input type="hidden" name="toRegion" value=""/>
+<input type="hidden" name="fromRegion" value=""/>
+<input type="hidden" name="sortRegion" value=""/>
+<input type="hidden" name="editPageSelect" value="<%= currentPage %>"/>
+<table width="100%">
+<tr>
+<td valign="top" width="250">
+   <table class="bottombuttonbar">
+      <tr>
+         <td valign="top">
+            <b>Theme and Layout</b>
+            <br/>
+            Apply a theme to your page, or select the number of columns for the layout.
+            <hr/>
+         </td>
+      </tr>
+      <tr>
+         <td>Choose a layout:<br/>
+            <select name="layout">
+               <%
+                  for (Iterator iterator = layouts.iterator(); iterator.hasNext();)
+                  {
+                     PortalLayout layout = (PortalLayout)iterator.next();
+                     String selected = "";
+                     if (layout.getLayoutInfo().getName().equals(currentLayout))
+                     {
+                        selected = " selected=\"true\" ";
+                     }
+               %>
+               <option <%=selected %>
+                  value="<%= layout.getLayoutInfo().getName() %>"><%= layout.getLayoutInfo().getName() %>
+               </option>
+               <%
+                  }
+               %>
+            </select>&nbsp;<input type="submit" class="portlet-form-button" name="Select" value="Select"
+                                  onclick="switchLayout('assignLayout');"/>
+         </td>
+      </tr>
+      <tr>
+         <td height="20"></td>
+      </tr>
+      <tr>
+         <td>Choose a theme:<br/>
+            <select name="theme">
+               <%
+                  for (Iterator iterator = themes.iterator(); iterator.hasNext();)
+                  {
+                     PortalTheme theme = (PortalTheme)iterator.next();
+                     String selected = "";
+                     if (theme.getThemeInfo().getName().equals(currentTheme))
+                     {
+                        selected = " selected=\"true\" ";
+                     }
+               %>
+               <option <%=selected %>
+                  value="<%= theme.getThemeInfo().getName() %>"><%= theme.getThemeInfo().getName() %>
+               </option>
+               <%
+                  }
+               %>
+            </select>&nbsp;<input type="submit" class="portlet-form-button" name="Select" value="Select"
+                                  onclick="switchTheme('assignTheme');"/>
+         </td>
+      </tr>
+      <tr>
+         <td height="20"></td>
+      </tr>
+   </table>
+</td>
+<td class="portlet-section-body" valign="top" align="right"><b>Available Content</b><br/>
+   <select name="available_instances" multiple="true" size="20">
+      <%
+         for (int i = 0; i < available_instances.size(); i++)
+         {
+            Instance instance = (Instance)available_instances.get(i);
+      %>
+      <option value="<%= instance.getId() %>"><%= instance.getId()%>
+      </option>
+      <%
+         }
+      %>
+   </select>
+</td>
+<td>
+<table>
+   <%
+      for (Iterator i = regions.iterator(); i.hasNext();)
+      {
+         String region = (String)i.next();
+         TreeSet windows = (TreeSet)windowMap.get(region);
+   %>
+   <tr>
+      <td>
+         <input type="submit" class="portlet-form-button" name="&gt;" value="&gt;"
+                onclick="assignPortlet('copy','<%= region %>');"/><br/><input
+         type="submit" class="portlet-form-button" name="&lt;" value="&lt;"
+         onclick="unassignPortlet('remove','<%= region %>');"/></td>
+      <td class="portlet-section-body" valign="top">
+         <b><%= region %> Column</b><br/>
+         <select name="<%= region %>_instances" multiple="true" size="6">
+            <%
+               for (Iterator j = windows.iterator(); j.hasNext();)
+               {
+                  Window window = (Window)j.next();
+            %>
+            <option value="<%= window.getName() %>"><%= window.getInstanceRef() %>
+            </option>
+            <%
+               }
+            %>
+         </select>
+      </td>
+      <td>
+         <input type="submit" class="portlet-form-button" name="Up" value="Up"
+                onclick="sortPortlet('up','<%= region %>');"/><br/><input
+         type="submit" class="portlet-form-button" name="Down" value="Down"
+         onclick="sortPortlet('down','<%= region %>');"/>
+      </td>
+   </tr>
+   <%
+      }
+   %>
+</table>
+</tr>
+</table>
+</form>
+</td>
+</tr>
+</table>
+<hr/>
+<%
+   if (!"default".equals(currentPage))
+   {
+%>
+<table width="100%">
+   <tr>
+      <td align="left">
+         <form action="<portlet:actionURL><portlet:param name="op" value="delete"></portlet:param>
+    </portlet:actionURL>" method="POST" style="padding:0;margin:0">
+            <input type="hidden" name="pagename" value="<%= currentPage %>"/>
+            <input type="submit" name="submit" value="Delete this Page" class="portlet-form-button"/>
+            <br/>
+            <font color="red">You cannot undo this action!</font>
+         </form>
+      </td>
+   </tr>
+</table>
+<%
+   }
+%>
\ No newline at end of file

Modified: labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/WEB-INF/jsp/user/menu.jsp
===================================================================
--- labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/WEB-INF/jsp/user/menu.jsp	2007-01-11 22:09:16 UTC (rev 8831)
+++ labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/WEB-INF/jsp/user/menu.jsp	2007-01-11 22:10:56 UTC (rev 8832)
@@ -45,7 +45,8 @@
       </td>
    </tr>
 
-
+<%--
+   // Removed for 2.6. Its throwing and no point in having logout in two places.
    <tr>
       <td class="portlet-section-body">
          <a id="logout"
@@ -55,5 +56,6 @@
                                             href="<portlet:actionURL windowState="normal"><portlet:param name="op" value="userLogout"/></portlet:actionURL>">${n:i18n("MENU_LOGOUT")}</a>
       </td>
    </tr>
+--%>
 
 </table>

Modified: labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/WEB-INF/portlet-instances.xml
===================================================================
--- labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/WEB-INF/portlet-instances.xml	2007-01-11 22:09:16 UTC (rev 8831)
+++ labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/WEB-INF/portlet-instances.xml	2007-01-11 22:10:56 UTC (rev 8832)
@@ -51,12 +51,14 @@
       <instance>
          <instance-id>CMSAdminPortletInstance</instance-id>
          <portlet-ref>CMSAdminPortlet</portlet-ref>
-         <security-constraint>
+         
+         <!--security-constraint>
             <policy-permission>
                <role-name>Admin</role-name>
                <action-name>view</action-name>
             </policy-permission>
-         </security-constraint>
+         </security-constraint-->
+         
       </instance>
    </deployment>
    <deployment>
@@ -71,4 +73,18 @@
          </security-constraint>
       </instance>
    </deployment>
+   <deployment>
+      <instance>
+         <instance-id>ConfiguratorPortletInstance</instance-id>
+         <portlet-ref>ConfiguratorPortlet</portlet-ref>
+<!--
+         <security-constraint>
+            <policy-permission>
+               <role-name>User</role-name>
+               <action-name>personalize</action-name>
+            </policy-permission>
+         </security-constraint>
+-->
+      </instance>
+   </deployment>
 </deployments>
\ No newline at end of file

Modified: labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/WEB-INF/portlet.xml
===================================================================
--- labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/WEB-INF/portlet.xml	2007-01-11 22:09:16 UTC (rev 8831)
+++ labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/WEB-INF/portlet.xml	2007-01-11 22:10:56 UTC (rev 8832)
@@ -133,7 +133,7 @@
       <supported-locale>es</supported-locale>
       <resource-bundle>Resource</resource-bundle>
       <portlet-info>
-         <title>CMS Admin</title>
+         <title>CMS Administration</title>
       </portlet-info>
    </portlet>
    <portlet>
@@ -167,6 +167,19 @@
          <title>Management Portlet</title>
       </portlet-info>
    </portlet>
+   <portlet>
+      <description>Configurator portlet for personal dashboard</description>
+      <portlet-name>ConfiguratorPortlet</portlet-name>
+      <display-name>Dashboard Configurator Portlet</display-name>
+      <portlet-class>org.jboss.portal.core.portlet.dashboard.Configurator</portlet-class>
+      <supports>
+         <mime-type>text/html</mime-type>
+         <portlet-mode>VIEW</portlet-mode>
+      </supports>
+      <portlet-info>
+         <title>Dashboard Portlet</title>
+      </portlet-info>
+   </portlet>
 
    <user-attribute>
       <name>user.name.nickName</name>

Added: labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/downarrow.gif
===================================================================
(Binary files differ)


Property changes on: labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/downarrow.gif
___________________________________________________________________
Name: svn:mime-type
   + application/octet-stream

Modified: labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/edit.gif
===================================================================
(Binary files differ)

Modified: labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/plus.gif
===================================================================
(Binary files differ)

Added: labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/style.css
===================================================================
--- labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/style.css	2007-01-11 22:09:16 UTC (rev 8831)
+++ labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/style.css	2007-01-11 22:10:56 UTC (rev 8832)
@@ -0,0 +1,109 @@
+.menu {
+   width: 150px;
+   font-size: 0.85em;
+   position: relative;
+   z-index: 100;
+}
+
+/* remove all the bullets, borders and padding from the default list styling */
+.menu ul {
+   padding: 0;
+   margin: 0;
+   list-style-type: none;
+}
+
+.menu ul ul {
+   width: 150px;
+}
+
+/* float the list to make it horizontal and a relative positon so that you can control the dropdown menu positon */
+.menu li {
+   float: left;
+   width: 150px;
+   position: relative;
+}
+
+/* style the links for the top level */
+.menu a, .menu a:visited {
+   display: block;
+   font-size: 11px;
+   text-decoration: none;
+   width: 139px;
+   height: 20px;
+   border: 1px solid #98b7c6;
+   border-width: 1px 1px 1px 1px;
+   padding-left: 5px;
+   line-height: 20px;
+}
+
+/* a hack so that IE5.5 faulty box model is corrected */
+* html .menu a, * html .menu a:visited {
+   width: 150px;
+   w\idth: 139px;
+}
+
+/* style the second level background */
+.menu ul ul a.drop, .menu ul ul a.drop:visited {
+   background: #DFE8ED;
+}
+
+/* style the second level hover */
+.menu ul ul a.drop:hover {
+   background: #C0D3DC;
+}
+
+.menu ul ul :hover > a.drop {
+   background: #C0D3DC;
+}
+
+/* hide the sub levels and give them a positon absolute so that they take up no room */
+.menu ul ul {
+   visibility: hidden;
+   position: absolute;
+   height: 0;
+   top: 20px;
+   left: 0;
+   width: 150px;
+}
+
+/* another hack for IE5.5 */
+* html .menu ul ul {
+   top: 20px;
+   t\op: 20px;
+}
+
+/* style the table so that it takes no ppart in the layout - required for IE to work */
+.menu table {
+   position: absolute;
+   top: 0;
+   left: 0;
+}
+
+/* style the second level links */
+.menu ul ul a, .menu ul ul a:visited {
+   background: #DFE8ED;
+   height: auto;
+   line-height: 20px;
+   padding: 5px 10px;
+   width: 129px /* yet another hack for IE5.5 */
+}
+
+* html .menu ul ul a {
+   width: 150px;
+   w\idth: 129px;
+}
+
+/* style the top level hover */
+.menu a:hover, .menu ul ul a:hover {
+}
+
+.menu :hover > a, .menu ul ul :hover > a {
+   background: #C0D3DC;
+}
+
+/* make the second level visible when hover on first level list OR link */
+.menu ul li:hover ul,
+   .menu ul a:hover ul {
+   visibility: visible;
+   background: #C0D3DC;
+}
\ No newline at end of file

Modified: labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/blank.htm
===================================================================
--- labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/blank.htm	2007-01-11 22:09:16 UTC (rev 8831)
+++ labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/blank.htm	2007-01-11 22:10:56 UTC (rev 8832)
@@ -1,10 +1,9 @@
-<!doctype html public "-//w3c//dtd html 4.0 transitional//en">
-<html>
+<html xmlns="http://www.w3.org/1999/xhtml">
 <head>
-<title>blank_page</title>
-<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
+	<title>blank_page</title>
+	<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
 </head>
-<body>
+<body class="mceContentBody">
 
 </body>
 </html>

Added: labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/langs/en.js
===================================================================
--- labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/langs/en.js	2007-01-11 22:09:16 UTC (rev 8831)
+++ labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/langs/en.js	2007-01-11 22:10:56 UTC (rev 8832)
@@ -0,0 +1,41 @@
+// UK lang variables
+
+tinyMCE.addToLang('',{
+bold_desc : 'Bold (Ctrl+B)',
+italic_desc : 'Italic (Ctrl+I)',
+underline_desc : 'Underline (Ctrl+U)',
+striketrough_desc : 'Strikethrough',
+justifyleft_desc : 'Align left',
+justifycenter_desc : 'Align center',
+justifyright_desc : 'Align right',
+justifyfull_desc : 'Align full',
+bullist_desc : 'Unordered list',
+numlist_desc : 'Ordered list',
+outdent_desc : 'Outdent',
+indent_desc : 'Indent',
+undo_desc : 'Undo (Ctrl+Z)',
+redo_desc : 'Redo (Ctrl+Y)',
+link_desc : 'Insert/edit link',
+unlink_desc : 'Unlink',
+image_desc : 'Insert/edit image',
+cleanup_desc : 'Cleanup messy code',
+focus_alert : 'A editor instance must be focused before using this command.',
+edit_confirm : 'Do you want to use the WYSIWYG mode for this textarea?',
+insert_link_title : 'Insert/edit link',
+insert : 'Insert',
+update : 'Update',
+cancel : 'Cancel',
+insert_link_url : 'Link URL',
+insert_link_target : 'Target',
+insert_link_target_same : 'Open link in the same window',
+insert_link_target_blank : 'Open link in a new window',
+insert_image_title : 'Insert/edit image',
+insert_image_src : 'Image URL',
+insert_image_alt : 'Image description',
+help_desc : 'Help',
+bold_img : "bold.gif",
+italic_img : "italic.gif",
+underline_img : "underline.gif",
+clipboard_msg : 'Copy/Cut/Paste is not available in Mozilla and Firefox.\nDo you want more information about this issue?',
+popup_blocked : 'Sorry, but we have noticed that your popup-blocker has disabled a window that provides application functionality. You will need to disable popup blocking on this site in order to fully utilize this tool.'
+});

Added: labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/langs/readme.txt
===================================================================
--- labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/langs/readme.txt	2007-01-11 22:09:16 UTC (rev 8831)
+++ labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/langs/readme.txt	2007-01-11 22:10:56 UTC (rev 8832)
@@ -0,0 +1,9 @@
+Beginning with version 2.0.5 the language packs are no
+longer included with the core distribution.
+Language packs can be downloaded from the TinyMCE website:
+http://tinymce.moxiecode.com/download.php
+
+The language pack codes are based on ISO-639-1:
+http://www.loc.gov/standards/iso639-2/englangn.html
+
+Plrease try using entities if possible. Like &aring; etc for non a-z characters.

Added: labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/plugins/advhr/css/advhr.css
===================================================================
--- labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/plugins/advhr/css/advhr.css	2007-01-11 22:09:16 UTC (rev 8831)
+++ labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/plugins/advhr/css/advhr.css	2007-01-11 22:10:56 UTC (rev 8832)
@@ -0,0 +1,23 @@
+input.radio {
+	border: 1px none #000000;
+	background-color: transparent;
+	vertical-align: middle;
+}
+
+.panel_wrapper div.current {
+	height: 80px;
+}
+
+#width {
+	width: 50px;
+	vertical-align: middle;
+}
+
+#width2 {
+	width: 50px;
+	vertical-align: middle;
+}
+
+#size {
+	width: 100px;
+}

Modified: labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/plugins/advhr/editor_plugin.js
===================================================================
--- labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/plugins/advhr/editor_plugin.js	2007-01-11 22:09:16 UTC (rev 8831)
+++ labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/plugins/advhr/editor_plugin.js	2007-01-11 22:10:56 UTC (rev 8832)
@@ -1,55 +1 @@
-/* Import theme specific language pack */
-tinyMCE.importPluginLanguagePack('advhr', 'uk,de,se');
-
-function TinyMCE_advhr_getControlHTML(control_name) {
-    switch (control_name) {
-        case "advhr":
-            return '<img id="{$editor_id}_advhr" src="{$pluginurl}/images/advhr.gif" title="{$lang_insert_advhr_desc}" width="20" height="20" class="mceButtonNormal" onmouseover="tinyMCE.switchClass(this,\'mceButtonOver\');" onmouseout="tinyMCE.restoreClass(this);" onmousedown="tinyMCE.restoreAndSwitchClass(this,\'mceButtonDown\');" onclick="tinyMCE.execInstanceCommand(\'{$editor_id}\',\'mceAdvancedHr\');" />';
-    }
-    return "";
-}
-
-/**
- * Executes the mceAdvanceHr command.
- */
-function TinyMCE_advhr_execCommand(editor_id, element, command, user_interface, value) {
-    // Handle commands
-    switch (command) {
-        case "mceAdvancedHr":
-            var template = new Array();
-            template['file']   = '../../plugins/advhr/rule.htm'; // Relative to theme
-            template['width']  = 270;
-            template['height'] = 180;
-            var size = "", width = "", noshade = "";
-            if (tinyMCE.selectedElement != null && tinyMCE.selectedElement.nodeName.toLowerCase() == "hr"){
-                tinyMCE.hrElement = tinyMCE.selectedElement;
-                if (tinyMCE.hrElement) {
-                    size    = tinyMCE.hrElement.getAttribute('size') ? tinyMCE.hrElement.getAttribute('size') : "";
-                    width   = tinyMCE.hrElement.getAttribute('width') ? tinyMCE.hrElement.getAttribute('width') : "";
-                    noshade = tinyMCE.hrElement.getAttribute('noshade') ? tinyMCE.hrElement.getAttribute('noshade') : "";
-                }
-                tinyMCE.openWindow(template, {editor_id : editor_id, size : size, width : width, noshade : noshade, mceDo : 'update'});
-            } else {
-                if (tinyMCE.isMSIE) {
-                    tinyMCE.execInstanceCommand(editor_id, 'mceInsertContent', false,'<hr />');
-                } else {
-                    tinyMCE.openWindow(template, {editor_id : editor_id, size : size, width : width, noshade : noshade, mceDo : 'insert'});
-                }
-            }
-                    
-       return true;
-   }
-   // Pass to next handler in chain
-   return false;
-}
-
-function TinyMCE_advhr_handleNodeChange(editor_id, node, undo_index, undo_levels, visual_aid, any_selection) {
-	tinyMCE.switchClassSticky(editor_id + '_advhr', 'mceButtonNormal');
-
-	do {
-		if (node.nodeName.toLowerCase() == "hr")
-			tinyMCE.switchClassSticky(editor_id + '_advhr', 'mceButtonSelected');
-	} while ((node = node.parentNode));
-
-	return true;
-}
\ No newline at end of file
+tinyMCE.importPluginLanguagePack('advhr');var TinyMCE_AdvancedHRPlugin={getInfo:function(){return{longname:'Advanced HR',author:'Moxiecode Systems AB',authorurl:'http://tinymce.moxiecode.com',infourl:'http://tinymce.moxiecode.com/tinymce/docs/plugin_advhr.html',version:tinyMCE.majorVersion+"."+tinyMCE.minorVersion}},getControlHTML:function(cn){switch(cn){case"advhr":return tinyMCE.getButtonHTML(cn,'lang_insert_advhr_desc','{$pluginurl}/images/advhr.gif','mceAdvancedHr')}return""},execCommand:function(editor_id,element,command,user_interface,value){switch(command){case"mceAdvancedHr":var template=new Array();template['file']='../../plugins/advhr/rule.htm';template['width']=250;template['height']=160;template['width']+=tinyMCE.getLang('lang_advhr_delta_width',0);template['height']+=tinyMCE.getLang('lang_advhr_delta_height',0);var size="",width="",noshade="";if(tinyMCE.selectedElement!=null&&tinyMCE.selectedElement.nodeName.toLowerCase()=="hr"){tinyMCE.hrElement=tinyMCE.select!
 edElement;if(tinyMCE.hrElement){size=tinyMCE.hrElement.getAttribute('size')?tinyMCE.hrElement.getAttribute('size'):"";width=tinyMCE.hrElement.getAttribute('width')?tinyMCE.hrElement.getAttribute('width'):"";noshade=tinyMCE.hrElement.getAttribute('noshade')?tinyMCE.hrElement.getAttribute('noshade'):""}tinyMCE.openWindow(template,{editor_id:editor_id,size:size,width:width,noshade:noshade,mceDo:'update'})}else{if(tinyMCE.isMSIE){tinyMCE.execInstanceCommand(editor_id,'mceInsertContent',false,'<hr />')}else{tinyMCE.openWindow(template,{editor_id:editor_id,inline:"yes",size:size,width:width,noshade:noshade,mceDo:'insert'})}}return true}return false},handleNodeChange:function(editor_id,node,undo_index,undo_levels,visual_aid,any_selection){if(node==null)return;do{if(node.nodeName=="HR"){tinyMCE.switchClass(editor_id+'_advhr','mceButtonSelected');return true}}while((node=node.parentNode));tinyMCE.switchClass(editor_id+'_advhr','mceButtonNormal');return true}};tinyMCE.addPlugin("advh!
 r",TinyMCE_AdvancedHRPlugin);
\ No newline at end of file

Added: labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/plugins/advhr/editor_plugin_src.js
===================================================================
--- labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/plugins/advhr/editor_plugin_src.js	2007-01-11 22:09:16 UTC (rev 8831)
+++ labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/plugins/advhr/editor_plugin_src.js	2007-01-11 22:10:56 UTC (rev 8832)
@@ -0,0 +1,90 @@
+/**
+ * $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('advhr');
+
+var TinyMCE_AdvancedHRPlugin = {
+	getInfo : function() {
+		return {
+			longname : 'Advanced HR',
+			author : 'Moxiecode Systems AB',
+			authorurl : 'http://tinymce.moxiecode.com',
+			infourl : 'http://tinymce.moxiecode.com/tinymce/docs/plugin_advhr.html',
+			version : tinyMCE.majorVersion + "." + tinyMCE.minorVersion
+		}
+	},
+
+	getControlHTML : function(cn) {
+		switch (cn) {
+			case "advhr":
+				return tinyMCE.getButtonHTML(cn, 'lang_insert_advhr_desc', '{$pluginurl}/images/advhr.gif', 'mceAdvancedHr');
+		}
+
+		return "";
+	},
+
+	/**
+	 * Executes the mceAdvanceHr command.
+	 */
+	execCommand : function(editor_id, element, command, user_interface, value) {
+		// Handle commands
+		switch (command) {
+			case "mceAdvancedHr":
+				var template = new Array();
+
+				template['file']   = '../../plugins/advhr/rule.htm'; // Relative to theme
+				template['width']  = 250;
+				template['height'] = 160;
+
+				template['width']  += tinyMCE.getLang('lang_advhr_delta_width', 0);
+				template['height'] += tinyMCE.getLang('lang_advhr_delta_height', 0);
+
+				var size = "", width = "", noshade = "";
+				if (tinyMCE.selectedElement != null && tinyMCE.selectedElement.nodeName.toLowerCase() == "hr") {
+					tinyMCE.hrElement = tinyMCE.selectedElement;
+
+					if (tinyMCE.hrElement) {
+						size    = tinyMCE.hrElement.getAttribute('size') ? tinyMCE.hrElement.getAttribute('size') : "";
+						width   = tinyMCE.hrElement.getAttribute('width') ? tinyMCE.hrElement.getAttribute('width') : "";
+						noshade = tinyMCE.hrElement.getAttribute('noshade') ? tinyMCE.hrElement.getAttribute('noshade') : "";
+					}
+
+					tinyMCE.openWindow(template, {editor_id : editor_id, size : size, width : width, noshade : noshade, mceDo : 'update'});
+				} else {
+					if (tinyMCE.isMSIE) {
+						tinyMCE.execInstanceCommand(editor_id, 'mceInsertContent', false,'<hr />');
+					} else {
+						tinyMCE.openWindow(template, {editor_id : editor_id, inline : "yes", size : size, width : width, noshade : noshade, mceDo : 'insert'});
+					}
+				}
+
+				return true;
+		}
+
+		// Pass to next handler in chain
+		return false;
+	},
+
+	handleNodeChange : function(editor_id, node, undo_index, undo_levels, visual_aid, any_selection) {
+		if (node == null)
+			return;
+
+		do {
+			if (node.nodeName == "HR") {
+				tinyMCE.switchClass(editor_id + '_advhr', 'mceButtonSelected');
+				return true;
+			}
+		} while ((node = node.parentNode));
+
+		tinyMCE.switchClass(editor_id + '_advhr', 'mceButtonNormal');
+
+		return true;
+	}
+};
+
+tinyMCE.addPlugin("advhr", TinyMCE_AdvancedHRPlugin);

Modified: labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/plugins/advhr/images/advhr.gif
===================================================================
(Binary files differ)

Added: labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/plugins/advhr/jscripts/rule.js
===================================================================
--- labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/plugins/advhr/jscripts/rule.js	2007-01-11 22:09:16 UTC (rev 8831)
+++ labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/plugins/advhr/jscripts/rule.js	2007-01-11 22:10:56 UTC (rev 8832)
@@ -0,0 +1,43 @@
+function init() {
+	tinyMCEPopup.resizeToInnerSize();
+
+	var formObj = document.forms[0];
+	formObj.width.value  = tinyMCE.getWindowArg('width');
+	formObj.size.value   = tinyMCE.getWindowArg('size');
+	formObj.insert.value = tinyMCE.getLang('lang_' + tinyMCE.getWindowArg('mceDo'),'Insert',true);
+	if (tinyMCE.getWindowArg('noshade')) {
+		formObj.noshade.checked = true;
+	}
+	if (tinyMCE.getWindowArg('width').lastIndexOf('%')!=-1) {
+		formObj.width2.value = "%";
+		formObj.width.value  = formObj.width.value.substring(0,formObj.width.value.length-1);
+	}
+}
+
+function insertHR() {
+	var formObj = document.forms[0];
+	var width   = formObj.width.value;
+	var size    = formObj.size.value;
+	var html = '<hr';
+	if (size!='' && size!=0) {
+		html += ' size="' + size + '"';
+	}
+	if (width!='' && width!=0) {
+		html += ' width="' + width;
+		if (formObj.width2.value=='%') {
+			html += '%';
+		}
+		html += '"';
+	}
+	if (formObj.noshade.checked==true) {
+		html += ' noshade="noshade"';
+	}
+	html += ' />';
+
+	tinyMCEPopup.execCommand("mceInsertContent", true, html);
+	tinyMCEPopup.close();
+}
+
+function cancelAction() {
+	tinyMCEPopup.close();
+}

Added: labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/plugins/advhr/langs/en.js
===================================================================
--- labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/plugins/advhr/langs/en.js	2007-01-11 22:09:16 UTC (rev 8831)
+++ labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/plugins/advhr/langs/en.js	2007-01-11 22:10:56 UTC (rev 8832)
@@ -0,0 +1,8 @@
+// UK lang variables
+
+tinyMCE.addToLang('',{
+insert_advhr_desc : 'Horizontale rule',
+insert_advhr_width : 'Width',
+insert_advhr_size : 'Height',
+insert_advhr_noshade : 'No shadow'
+});

Modified: labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/plugins/advhr/readme.txt
===================================================================
--- labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/plugins/advhr/readme.txt	2007-01-11 22:09:16 UTC (rev 8831)
+++ labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/plugins/advhr/readme.txt	2007-01-11 22:10:56 UTC (rev 8832)
@@ -1,20 +1 @@
- Advlink plugin for TinyMCE
------------------------------
-
-About:
-  This is a more advanced hr dialog contributed by Michael Keck.
-  This one supports noshade, width and size.
-
-Installation instructions:
-  * Copy the advlink directory to the plugins directory of TinyMCE (/jscripts/tiny_mce/plugins).
-  * Add plugin to TinyMCE plugin option list example: plugins : "advlink".
-  * Add this "hr[class|width|size|noshade]" to extended_valid_elements option.
-
-Initialization example:
-  tinyMCE.init({
-    theme : "advanced",
-    mode : "textareas",
-    plugins : "advhr",
-    theme_advanced_buttons1_add : "advhr",
-    extended_valid_elements : "hr[class|width|size|noshade]"
-  });
+Check the TinyMCE documentation for details on this plugin.

Modified: labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/plugins/advhr/rule.htm
===================================================================
--- labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/plugins/advhr/rule.htm	2007-01-11 22:09:16 UTC (rev 8831)
+++ labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/plugins/advhr/rule.htm	2007-01-11 22:10:56 UTC (rev 8832)
@@ -1,90 +1,36 @@
-<?xml version="1.0" encoding="iso-8859-1"?>
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
 <html xmlns="http://www.w3.org/1999/xhtml">
 <head>
-<title>{$lang_insert_link_title}</title>
-<script language="javascript" type="text/javascript" src="../../tiny_mce_popup.js"></script>
-<script language="javascript" type="text/javascript">
-<!--
-    function init() {
-    // modified 2004-11-10 by Michael Keck (me at michaelkeck.de)
-    // supporting onclick event to open pop windows
-        var formObj = document.forms[0];
-        formObj.width.value  = tinyMCE.getWindowArg('width');
-        formObj.size.value   = tinyMCE.getWindowArg('size');
-        formObj.insert.value = tinyMCE.getLang('lang_' + tinyMCE.getWindowArg('mceDo'));
-        if (tinyMCE.getWindowArg('noshade')) {
-            formObj.noshade.checked = true;
-        }
-        if (tinyMCE.getWindowArg('width').lastIndexOf('%')!=-1) {
-            formObj.width2.value = "%";
-            formObj.width.value  = formObj.width.value.substring(0,formObj.width.value.length-1);
-        }
-        window.focus();
-    }
-
-    function insertHR() {
-        var formObj = document.forms[0];
-        if (window.opener) {
-            var width   = formObj.width.value;
-            var size    = formObj.size.value;
-            var html = '<hr';
-            if (size!='' && size!=0) {
-                html += ' size="' + size + '"';
-            }
-            if (width!='' && width!=0) {
-                html += ' width="' + width;
-                if (formObj.width2.value=='%') {
-                    html += '%';
-                }
-                html += '"';
-            }
-            if (formObj.noshade.checked==true) {
-                html += ' noshade';
-            }
-            html += ' />';
-            tinyMCE.execCommand("mceInsertContent",true,html);
-            top.close();
-        }
-    }
-
-    function cancelAction() {
-        top.close();
-    }
-
-//-->
-</script>
-<style type="text/css">
-<!--
-   input.radio {
-        border: 1px none #000000;
-        background-color: transparent;
-        vertical-align: middle;
-   }
--->
-</style>
+	<title>{$lang_insert_advhr_desc}</title>
+	<script language="javascript" type="text/javascript" src="../../tiny_mce_popup.js"></script>
+	<script language="javascript" type="text/javascript" src="jscripts/rule.js"></script>
+	<script language="javascript" type="text/javascript" src="../../utils/mctabs.js"></script>
+	<link href="css/advhr.css" rel="stylesheet" type="text/css" />
+	<base target="_self" />
 </head>
-<body onload="init();">
-    <form onsubmit="insertHR();return false;">
-        <table border="0" cellpadding="0" cellspacing="0" width="100%">
-            <tr>
-                <td align="center" valign="middle"><table border="0" cellpadding="4" cellspacing="0">
+<body onload="tinyMCEPopup.executeOnLoad('init();');">
+<form onsubmit="insertHR();return false;" action="#">
+	<div class="tabs">
+		<ul>
+			<li id="general_tab" class="current"><span><a href="javascript:mcTabs.displayTab('general_tab','general_panel');" onmousedown="return false;">{$lang_insert_advhr_desc}</a></span></li>
+		</ul>
+	</div>
+
+	<div class="panel_wrapper">
+		<div id="general_panel" class="panel current">
+			<table border="0" cellpadding="4" cellspacing="0">
                     <tr>
-                        <td colspan="2" class="title">{$lang_insert_advhr_desc}</td>
-                    </tr>
-                    <tr>
-                        <td align="right">{$lang_insert_advhr_width}:</td>
+                        <td><label for="width">{$lang_insert_advhr_width}</label></td>
                         <td nowrap="nowrap">
-                            <input name="width" type="text" id="width" value="" style="width: 50px; vertical-align: middle;" />
-                            <select name="width2" id="width2" style="width: 50px; vertical-align: middle;">
+                            <input id="width" name="width" type="text" value="" />
+                            <select name="width2" id="width2">
                                 <option value="">px</option>
                                 <option value="%">%</option>
                             </select>
                         </td>
                     </tr>
                     <tr>
-                        <td align="right" valign="top">{$lang_insert_advhr_size}:</td>
-                        <td><select name="size" type="text" id="size" value="" style="width: 100px;">
+                        <td><label for="size">{$lang_insert_advhr_size}</label></td>
+                        <td><select id="size" name="size">
                             <option value="">Normal</option>
                             <option value="1">1</option>
                             <option value="2">2</option>
@@ -92,17 +38,24 @@
                             <option value="4">4</option>
                             <option value="5">5</option>
                         </select></td>
+                    </tr>
                     <tr>
-                        <td align="right" valign="top"><input type="checkbox" name="noshade" id="noshade" class="radio" /></td>
                         <td><label for="noshade">{$lang_insert_advhr_noshade}</label></td>
+                        <td><input type="checkbox" name="noshade" id="noshade" class="radio" /></td>
                     </tr>
-                    <tr>
-                        <td><input type="button" name="insert" value="{$lang_insert}" onclick="insertHR();" id="insert" /></td>
-                        <td align="right"><input type="button" name="cancel" value="{$lang_cancel}" onclick="cancelAction();" id="cancel" /></td>
-                    </tr>
-                </table></td>
-            </tr>
-        </table>
-    </form>
+            </table>
+		</div>
+	</div>
+
+	<div class="mceActionPanel">
+		<div style="float: left">
+			<input type="button" id="insert" name="insert" value="{$lang_insert}" onclick="insertHR();" />
+		</div>
+
+		<div style="float: right">
+			<input type="button" id="cancel" name="cancel" value="{$lang_cancel}" onclick="tinyMCEPopup.close();" />
+		</div>
+	</div>
+</form>
 </body>
 </html>

Added: labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/plugins/advimage/css/advimage.css
===================================================================
--- labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/plugins/advimage/css/advimage.css	2007-01-11 22:09:16 UTC (rev 8831)
+++ labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/plugins/advimage/css/advimage.css	2007-01-11 22:10:56 UTC (rev 8832)
@@ -0,0 +1,66 @@
+/* CSS file for advimage plugin popup */
+
+.mceImageList {
+	width: 280px;
+}
+
+.mceActionPanel {
+	margin-top: 7px;
+}
+
+.alignPreview {
+	border: 1px solid black;
+	width: 140px;
+	height: 140px;
+	overflow: hidden;
+	padding: 5px;
+}
+
+.checkbox {
+	border: 0;
+}
+
+.panel_wrapper div.current {
+	height: 305px;
+}
+
+#prev {
+	margin: 0;
+	border: 1px
+	solid black;
+	width: 99%;
+	height: 150px;
+	overflow: auto;
+}
+
+#align, #classlist {
+	width: 150px;
+}
+
+#width, #height {
+	vertical-align: middle;
+	width: 50px;
+	text-align: center;
+}
+
+#vspace, #hspace, #border {
+	vertical-align: middle;
+	width: 30px;
+	text-align: center;
+}
+
+#classlist {
+	width: 180px;
+}
+
+input {
+	width: 280px;
+}
+
+#constrain, #onmousemovecheck {
+	width: auto;
+}
+
+#id, #dir, #lang, #usemap, #longdesc {
+	width: 200px;
+}

Modified: labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/plugins/advimage/editor_plugin.js
===================================================================
--- labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/plugins/advimage/editor_plugin.js	2007-01-11 22:09:16 UTC (rev 8831)
+++ labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/plugins/advimage/editor_plugin.js	2007-01-11 22:10:56 UTC (rev 8832)
@@ -1,19 +1 @@
-/* Import theme specific language pack */
-tinyMCE.importPluginLanguagePack('advimage', 'uk,se,de');
-
-/**
- * Insert image template function.
- */
-function TinyMCE_advimage_getInsertImageTemplate() {
-    var template = new Array();
-
-    template['file']   = '../../plugins/advimage/image.htm';
-    template['width']  = 380;
-    template['height'] = 380; 
-
-    // Language specific width and height addons
-    template['width']  += tinyMCE.getLang('lang_insert_image_delta_width', 0);
-    template['height'] += tinyMCE.getLang('lang_insert_image_delta_height', 0);
-
-    return template;
-} 
+tinyMCE.importPluginLanguagePack('advimage');var TinyMCE_AdvancedImagePlugin={getInfo:function(){return{longname:'Advanced image',author:'Moxiecode Systems AB',authorurl:'http://tinymce.moxiecode.com',infourl:'http://tinymce.moxiecode.com/tinymce/docs/plugin_advimage.html',version:tinyMCE.majorVersion+"."+tinyMCE.minorVersion}},getControlHTML:function(cn){switch(cn){case"image":return tinyMCE.getButtonHTML(cn,'lang_image_desc','{$themeurl}/images/image.gif','mceAdvImage')}return""},execCommand:function(editor_id,element,command,user_interface,value){switch(command){case"mceAdvImage":var template=new Array();template['file']='../../plugins/advimage/image.htm';template['width']=480;template['height']=380;template['width']+=tinyMCE.getLang('lang_advimage_delta_width',0);template['height']+=tinyMCE.getLang('lang_advimage_delta_height',0);var inst=tinyMCE.getInstanceById(editor_id);var elm=inst.getFocusElement();if(elm!=null&&tinyMCE.getAttrib(elm,'class').indexOf('mceItem')!=-1!
 )return true;tinyMCE.openWindow(template,{editor_id:editor_id,inline:"yes"});return true}return false},cleanup:function(type,content){switch(type){case"insert_to_editor_dom":var imgs=content.getElementsByTagName("img"),src,i;for(i=0;i<imgs.length;i++){var onmouseover=tinyMCE.cleanupEventStr(tinyMCE.getAttrib(imgs[i],'onmouseover'));var onmouseout=tinyMCE.cleanupEventStr(tinyMCE.getAttrib(imgs[i],'onmouseout'));if((src=this._getImageSrc(onmouseover))!=""){if(tinyMCE.getParam('convert_urls'))src=tinyMCE.convertRelativeToAbsoluteURL(tinyMCE.settings['base_href'],src);imgs[i].setAttribute('onmouseover',"this.src='"+src+"';")}if((src=this._getImageSrc(onmouseout))!=""){if(tinyMCE.getParam('convert_urls'))src=tinyMCE.convertRelativeToAbsoluteURL(tinyMCE.settings['base_href'],src);imgs[i].setAttribute('onmouseout',"this.src='"+src+"';")}}break;case"get_from_editor_dom":var imgs=content.getElementsByTagName("img");for(var i=0;i<imgs.length;i++){var onmouseover=tinyMCE.cleanupEventS!
 tr(tinyMCE.getAttrib(imgs[i],'onmouseover'));var onmouseout=tinyMCE.cl
eanupEventStr(tinyMCE.getAttrib(imgs[i],'onmouseout'));if((src=this._getImageSrc(onmouseover))!=""){if(tinyMCE.getParam('convert_urls'))src=eval(tinyMCE.settings['urlconverter_callback']+"(src, null, true);");imgs[i].setAttribute('onmouseover',"this.src='"+src+"';")}if((src=this._getImageSrc(onmouseout))!=""){if(tinyMCE.getParam('convert_urls'))src=eval(tinyMCE.settings['urlconverter_callback']+"(src, null, true);");imgs[i].setAttribute('onmouseout',"this.src='"+src+"';")}}break}return content},handleNodeChange:function(editor_id,node,undo_index,undo_levels,visual_aid,any_selection){if(node==null)return;do{if(node.nodeName=="IMG"&&tinyMCE.getAttrib(node,'class').indexOf('mceItem')==-1){tinyMCE.switchClass(editor_id+'_advimage','mceButtonSelected');return true}}while((node=node.parentNode));tinyMCE.switchClass(editor_id+'_advimage','mceButtonNormal');return true},_getImageSrc:function(s){var sr,p=-1;if(!s)return"";if((p=s.indexOf('this.src='))!=-1){sr=s.substring(p+10);sr=sr.!
 substring(0,sr.indexOf('\''));return sr}return""}};tinyMCE.addPlugin("advimage",TinyMCE_AdvancedImagePlugin);
\ No newline at end of file

Added: labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/plugins/advimage/editor_plugin_src.js
===================================================================
--- labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/plugins/advimage/editor_plugin_src.js	2007-01-11 22:09:16 UTC (rev 8831)
+++ labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/plugins/advimage/editor_plugin_src.js	2007-01-11 22:10:56 UTC (rev 8832)
@@ -0,0 +1,148 @@
+/**
+ * $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('advimage');
+
+var TinyMCE_AdvancedImagePlugin = {
+	getInfo : function() {
+		return {
+			longname : 'Advanced image',
+			author : 'Moxiecode Systems AB',
+			authorurl : 'http://tinymce.moxiecode.com',
+			infourl : 'http://tinymce.moxiecode.com/tinymce/docs/plugin_advimage.html',
+			version : tinyMCE.majorVersion + "." + tinyMCE.minorVersion
+		};
+	},
+
+	getControlHTML : function(cn) {
+		switch (cn) {
+			case "image":
+				return tinyMCE.getButtonHTML(cn, 'lang_image_desc', '{$themeurl}/images/image.gif', 'mceAdvImage');
+		}
+
+		return "";
+	},
+
+	execCommand : function(editor_id, element, command, user_interface, value) {
+		switch (command) {
+			case "mceAdvImage":
+				var template = new Array();
+
+				template['file']   = '../../plugins/advimage/image.htm';
+				template['width']  = 480;
+				template['height'] = 380;
+
+				// Language specific width and height addons
+				template['width']  += tinyMCE.getLang('lang_advimage_delta_width', 0);
+				template['height'] += tinyMCE.getLang('lang_advimage_delta_height', 0);
+
+				var inst = tinyMCE.getInstanceById(editor_id);
+				var elm = inst.getFocusElement();
+
+				if (elm != null && tinyMCE.getAttrib(elm, 'class').indexOf('mceItem') != -1)
+					return true;
+
+				tinyMCE.openWindow(template, {editor_id : editor_id, inline : "yes"});
+
+				return true;
+		}
+
+		return false;
+	},
+
+	cleanup : function(type, content) {
+		switch (type) {
+			case "insert_to_editor_dom":
+				var imgs = content.getElementsByTagName("img"), src, i;
+				for (i=0; i<imgs.length; i++) {
+					var onmouseover = tinyMCE.cleanupEventStr(tinyMCE.getAttrib(imgs[i], 'onmouseover'));
+					var onmouseout = tinyMCE.cleanupEventStr(tinyMCE.getAttrib(imgs[i], 'onmouseout'));
+
+					if ((src = this._getImageSrc(onmouseover)) != "") {
+						if (tinyMCE.getParam('convert_urls'))
+							src = tinyMCE.convertRelativeToAbsoluteURL(tinyMCE.settings['base_href'], src);
+
+						imgs[i].setAttribute('onmouseover', "this.src='" + src + "';");
+					}
+
+					if ((src = this._getImageSrc(onmouseout)) != "") {
+						if (tinyMCE.getParam('convert_urls'))
+							src = tinyMCE.convertRelativeToAbsoluteURL(tinyMCE.settings['base_href'], src);
+
+						imgs[i].setAttribute('onmouseout', "this.src='" + src + "';");
+					}
+				}
+				break;
+
+			case "get_from_editor_dom":
+				var imgs = content.getElementsByTagName("img");
+				for (var i=0; i<imgs.length; i++) {
+					var onmouseover = tinyMCE.cleanupEventStr(tinyMCE.getAttrib(imgs[i], 'onmouseover'));
+					var onmouseout = tinyMCE.cleanupEventStr(tinyMCE.getAttrib(imgs[i], 'onmouseout'));
+
+					if ((src = this._getImageSrc(onmouseover)) != "") {
+						if (tinyMCE.getParam('convert_urls'))
+							src = eval(tinyMCE.settings['urlconverter_callback'] + "(src, null, true);");
+
+						imgs[i].setAttribute('onmouseover', "this.src='" + src + "';");
+					}
+
+					if ((src = this._getImageSrc(onmouseout)) != "") {
+						if (tinyMCE.getParam('convert_urls'))
+							src = eval(tinyMCE.settings['urlconverter_callback'] + "(src, null, true);");
+
+						imgs[i].setAttribute('onmouseout', "this.src='" + src + "';");
+					}
+				}
+				break;
+		}
+
+		return content;
+	},
+
+	handleNodeChange : function(editor_id, node, undo_index, undo_levels, visual_aid, any_selection) {
+		if (node == null)
+			return;
+
+		do {
+			if (node.nodeName == "IMG" && tinyMCE.getAttrib(node, 'class').indexOf('mceItem') == -1) {
+				tinyMCE.switchClass(editor_id + '_advimage', 'mceButtonSelected');
+				return true;
+			}
+		} while ((node = node.parentNode));
+
+		tinyMCE.switchClass(editor_id + '_advimage', 'mceButtonNormal');
+
+		return true;
+	},
+
+	/**
+	 * Returns the image src from a scripted mouse over image str.
+	 *
+	 * @param {string} s String to get real src from.
+	 * @return Image src from a scripted mouse over image str.
+	 * @type string
+	 */
+	_getImageSrc : function(s) {
+		var sr, p = -1;
+
+		if (!s)
+			return "";
+
+		if ((p = s.indexOf('this.src=')) != -1) {
+			sr = s.substring(p + 10);
+			sr = sr.substring(0, sr.indexOf('\''));
+
+			return sr;
+		}
+
+		return "";
+	}
+};
+
+tinyMCE.addPlugin("advimage", TinyMCE_AdvancedImagePlugin);

Modified: labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/plugins/advimage/image.htm
===================================================================
--- labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/plugins/advimage/image.htm	2007-01-11 22:09:16 UTC (rev 8831)
+++ labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/plugins/advimage/image.htm	2007-01-11 22:10:56 UTC (rev 8832)
@@ -1,213 +1,241 @@
-<?xml version="1.0" encoding="iso-8859-1"?>
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
 <html xmlns="http://www.w3.org/1999/xhtml">
 <head>
-<title>{$lang_insert_image_title}</title>
-<script language="javascript" type="text/javascript" src="../../tiny_mce_popup.js"></script>
-<script language="javascript" type="text/javascript">
-<!--
+	<title>{$lang_insert_image_title}</title>
+	<script language="javascript" type="text/javascript" src="../../tiny_mce_popup.js"></script>
+	<script language="javascript" type="text/javascript" src="../../utils/mctabs.js"></script>
+	<script language="javascript" type="text/javascript" src="../../utils/form_utils.js"></script>
+	<script language="javascript" type="text/javascript" src="../../utils/validate.js"></script>
+	<script language="javascript" type="text/javascript" src="jscripts/functions.js"></script>
+	<link href="css/advimage.css" rel="stylesheet" type="text/css" />
+	<base target="_self" />
+</head>
+<body id="advimage" onload="tinyMCEPopup.executeOnLoad('init();');" style="display: none">
+    <form onsubmit="insertAction();return false;" action="#"> 
+		<div class="tabs">
+			<ul>
+				<li id="general_tab" class="current"><span><a href="javascript:mcTabs.displayTab('general_tab','general_panel');" onmousedown="return false;">{$lang_advimage_tab_general}</a></span></li>
+				<li id="appearance_tab"><span><a href="javascript:mcTabs.displayTab('appearance_tab','appearance_panel');" onmousedown="return false;">{$lang_advimage_tab_appearance}</a></span></li>
+				<li id="advanced_tab"><span><a href="javascript:mcTabs.displayTab('advanced_tab','advanced_panel');" onmousedown="return false;">{$lang_advimage_tab_advanced}</a></span></li>
+			</ul>
+		</div>
 
-    function myRegexpReplace(in_str, reg_exp, replace_str, opts) {
-        return in_str;
-        if (typeof opts == "undefined")
-            opts = 'g';
-        var re = new RegExp(reg_exp, opts);
-        return in_str.replace(re, replace_str);
-    }
+		<div class="panel_wrapper">
+			<div id="general_panel" class="panel current">
+				<fieldset>
+						<legend>{$lang_advimage_general}</legend>
 
-    function insertImage() {
-        if (window.opener) {
-            var src         = document.forms[0].src.value;
-            var alt         = document.forms[0].alt.value;
-            var title       = document.forms[0].title.value;
-            var border      = document.forms[0].border.value;
-            var vspace      = document.forms[0].vspace.value;
-            var hspace      = document.forms[0].hspace.value;
-            var width       = document.forms[0].width.value;
-            var height      = document.forms[0].height.value;
-            var align       = document.forms[0].align.options[document.forms[0].align.selectedIndex].value;
-            var onmouseover = document.forms[0].onmouseover.value;
-            var onmouseout  = document.forms[0].onmouseout.value;
+						<table class="properties">
+							<tr>
+								<td class="column1"><label id="srclabel" for="src">{$lang_insert_image_src}</label></td>
+								<td colspan="2"><table border="0" cellspacing="0" cellpadding="0">
+									<tr> 
+									  <td><input name="src" type="text" id="src" value="" onchange="showPreviewImage(this.value);" /></td> 
+									  <td id="srcbrowsercontainer">&nbsp;</td>
+									</tr>
+								  </table></td>
+							</tr>
+							<tr id="imagelistsrcrow">
+								<td class="column1"><label for="imagelistsrc">{$lang_image_list}</label></td>
+								<td colspan="2" id="imagelistsrccontainer">&nbsp;</td>
+							</tr>
+							<tr> 
+								<td class="column1"><label id="altlabel" for="alt">{$lang_insert_image_alt}</label></td> 
+								<td colspan="2"><input id="alt" name="alt" type="text" value="" /></td> 
+							</tr> 
+							<tr> 
+								<td class="column1"><label id="titlelabel" for="title">{$lang_advimage_title}</label></td> 
+								<td colspan="2"><input id="title" name="title" type="text" value="" /></td> 
+							</tr>
+						</table>
+				</fieldset>
 
-        // added 2004-11-10 by Michael Keck (me at michaelkeck.de)
-        // supporting onmouse over / out for image swap ...
-            // only support the onmouse over/out if both values are given
-            if (onmouseover!='' && onmouseout!='' && document.forms[0].onmousemove.checked==true) {
-                onmouseover="this.src='" + onmouseover + "';";
-                onmouseout ="this.src='" + onmouseout + "';";
-            } else {
-                onmouseover="";
-                onmouseout ="";
-            }
+				<fieldset>
+					<legend>{$lang_advimage_preview}</legend>
+					<div id="prev"></div>
+				</fieldset>
+			</div>
 
-            window.opener.tinyMCE.insertImage(src, alt, border, hspace, vspace, width, height, align, title, onmouseover, onmouseout);
-            top.close();
+			<div id="appearance_panel" class="panel">
+				<fieldset>
+					<legend>{$lang_advimage_tab_appearance}</legend>
 
-        }
-    }
+					<table border="0" cellpadding="4" cellspacing="0">
+						<tr> 
+							<td class="column1"><label id="alignlabel" for="align">{$lang_insert_image_align}</label></td> 
+							<td><select id="align" name="align" onchange="changeAppearance();"> 
+									<option value="">{$lang_insert_image_align_default}</option> 
+									<option value="baseline">{$lang_insert_image_align_baseline}</option> 
+									<option value="top">{$lang_insert_image_align_top}</option> 
+									<option value="middle">{$lang_insert_image_align_middle}</option> 
+									<option value="bottom">{$lang_insert_image_align_bottom}</option> 
+									<option value="texttop">{$lang_insert_image_align_texttop}</option> 
+									<option value="absmiddle">{$lang_insert_image_align_absmiddle}</option> 
+									<option value="absbottom">{$lang_insert_image_align_absbottom}</option> 
+									<option value="left">{$lang_insert_image_align_left}</option> 
+									<option value="right">{$lang_insert_image_align_right}</option> 
+								</select> 
+							</td>
+							<td rowspan="6" valign="top">
+								<div class="alignPreview">
+									<img id="alignSampleImg" src="images/sample.gif" alt="{$lang_advimage_example_img}" />
+									Lorem ipsum, Dolor sit amet, consectetuer adipiscing loreum ipsum edipiscing elit, sed diam
+									nonummy nibh euismod tincidunt ut laoreet dolore magna aliquam erat volutpat.Loreum ipsum
+									edipiscing elit, sed diam nonummy nibh euismod tincidunt ut laoreet dolore magna aliquam
+									erat volutpat.
+								</div>
+							</td>
+						</tr>
 
-    function init() {
-        var formObj = document.forms[0];
-        var arrOnOver = new Array(), arrOnOut  = new Array();
-        var strOnOver = "", strOnOut  = "";
-        for (var i=0; i<document.forms[0].align.options.length; i++) {
-            if (document.forms[0].align.options[i].value == tinyMCE.getWindowArg('align'))
-                document.forms[0].align.options.selectedIndex = i;
-        }
-        formObj.src.value    = tinyMCE.getWindowArg('src');
-        formObj.alt.value    = tinyMCE.getWindowArg('alt');
-        formObj.title.value  = tinyMCE.getWindowArg('title');
-        formObj.border.value = tinyMCE.getWindowArg('border');
-        formObj.vspace.value = tinyMCE.getWindowArg('vspace');
-        formObj.hspace.value = tinyMCE.getWindowArg('hspace');
-        formObj.width.value  = tinyMCE.getWindowArg('width');
-        formObj.height.value = tinyMCE.getWindowArg('height');
-        formObj.height.value = tinyMCE.getWindowArg('height');
+						<tr>
+							<td class="column1"><label id="widthlabel" for="width">{$lang_insert_image_dimensions}</label></td>
+							<td nowrap="nowrap">
+								<input name="width" type="text" id="width" value="" size="5" maxlength="5" class="size" onchange="changeHeight();" /> x 
+								<input name="height" type="text" id="height" value="" size="5" maxlength="5" class="size" onchange="changeWidth();" /> px
+							</td>
+						</tr>
 
-    // added 2004-11-10 by Michael Keck (me at michaelkeck.de)
-    // supporting onmouse over / out for image swap ...
-        arrOnOver            = tinyMCE.getWindowArg('onmouseover').split(';');
-        arrOnOut             = tinyMCE.getWindowArg('onmouseout').split(';');
-        for (var i=0; i<arrOnOver.length; i++) {
-            if (arrOnOver[i].indexOf('this.src=\'')!=-1) {
-                strOnOver = arrOnOver[i];
-                break;
-             }
-        }
-        for (var i=0; i<arrOnOut.length; i++) {
-            if (arrOnOut[i].indexOf('this.src=\'')!=-1) {
-                strOnOut = arrOnOut[i];
-                break;
-             }
-        }
-        if (strOnOver!='') {
-                strOnOver = myRegexpReplace(strOnOver,"this.src='","","gi");
-                strOnOver = myRegexpReplace(strOnOver,"'","","gi");
-                strOnOver = myRegexpReplace(strOnOver,";","","gi");
-        }
-        if (strOnOut!='') {
-                strOnOut = myRegexpReplace(strOnOut,"this.src='","","gi");
-                strOnOut = myRegexpReplace(strOnOut,"'","","gi");
-                strOnOut = myRegexpReplace(strOnOut,";","","gi");
-        }
-        if (strOnOver!='' && strOnOut!='') {
-            setOnMouseInput('enabled');
-            formObj.onmousemove.checked = true;
-            formObj.onmouseover.value   = strOnOver;
-            formObj.onmouseout.value    = strOnOut;
-        } else {
-            setOnMouseInput('disabled');
-            formObj.onmousemove.checked = false;
-            formObj.onmouseover.value   = '';
-            formObj.onmouseout.value    = '';
-        }
+						<tr>
+							<td>&nbsp;</td>
+							<td><table border="0" cellpadding="0" cellspacing="0">
+									<tr>
+										<td><input id="constrain" type="checkbox" name="constrain" class="checkbox" /></td>
+										<td><label id="constrainlabel" for="constrain">{$lang_advimage_constrain_proportions}</label></td>
+									</tr>
+								</table></td>
+						</tr>
 
-        window.focus();
+						<tr>
+							<td class="column1"><label id="vspacelabel" for="vspace">{$lang_insert_image_vspace}</label></td> 
+							<td><input name="vspace" type="text" id="vspace" value="" size="3" maxlength="3" class="number" onchange="changeAppearance();updateStyle();" />
+							</td>
+						</tr>
 
-    }
+						<tr> 
+							<td class="column1"><label id="hspacelabel" for="hspace">{$lang_insert_image_hspace}</label></td> 
+							<td><input name="hspace" type="text" id="hspace" value="" size="3" maxlength="3" class="number" onchange="changeAppearance();updateStyle();" /></td> 
+						</tr>
 
-// added 2004-11-10 by Michael Keck (me at michaelkeck.de)
-// supporting onmouse over / out for image swap ...
-// this function is needed for visual show, if onmouse over/out available
-    function setOnMouseInput(stat){
-        var formObj = document.forms[0];
-        if (stat=='enabled') {
-            formObj.onmouseover.disabled = false;
-            formObj.onmouseout.disabled  = false;
-            if (document.getElementById) {
-                document.getElementById('showInput1').style.color="#000000";
-                document.getElementById('showInput2').style.color="#000000";
-            }
-            formObj.onmouseout.value     = formObj.src.value;
-        } else {
-            formObj.onmouseover.disabled = true;
-            formObj.onmouseout.disabled  =true;
-            if (document.getElementById) {
-                document.getElementById('showInput1').style.color="#666666";
-                document.getElementById('showInput2').style.color="#666666";
-            }
-        }
-    }
+						<tr>
+							<td class="column1"><label id="borderlabel" for="border">{$lang_insert_image_border}</label></td> 
+							<td><input id="border" name="border" type="text" value="" size="3" maxlength="3" class="number" onchange="changeAppearance();updateStyle();" /></td> 
+						</tr>
 
-    function cancelAction() {
-        top.close();
-    }
-//-->
-</script>
-</head>
-<body onload="window.focus();init();">
-    <form onsubmit="insertImage();return false;">
-        <table border="0" cellpadding="0" cellspacing="0" width="100%">
-            <tr>
-                <td align="center" valign="middle"><table border="0" cellpadding="4" cellspacing="0">
-                    <tr>
-                        <td colspan="2" class="title">{$lang_insert_image_title}</td>
-                    </tr>
-                    <tr>
-                        <td align="right" nowrap="nowrap">{$lang_insert_image_src}:</td>
-                        <td><input name="src" type="text" id="src" value="" style="width: 200px" /></td>
-                    </tr>
-                    <tr>
-                        <td align="right" nowrap="nowrap">{$lang_insert_image_alt}:</td>
-                        <td><input name="alt" type="text" id="alt" value="" style="width: 200px" onblur="if(document.forms[0].title.value==''){ document.forms[0].title.value=this.value; }" onfocus="if(document.forms[0].title.value==''){ document.forms[0].title.value=this.value; }" /></td>
-                    </tr>
-                    <tr>
-                        <td align="right" nowrap="nowrap">{$lang_insert_image_alt2}:</td>
-                        <td><input name="title" type="text" id="title" value="" style="width: 200px" /></td>
-                    </tr>
-                    <tr>
-                        <td align="right" nowrap="nowrap">{$lang_insert_image_dimensions}:</td>
-                        <td nowrap="nowrap">
-                            <input name="width" type="text" id="width" value="" size="5" maxlength="5" style="vertical-align: middle; width: 50px; text-align: center;" /> x
-                            <input name="height" type="text" id="height" value="" size="5" maxlength="5" style="vertical-align: middle; width: 50px; text-align: center;" /> px
-                        </td>
-                    </tr>
-                    <tr>
-                        <td align="right" nowrap="nowrap">{$lang_insert_image_border}:</td>
-                        <td><input name="border" type="text" id="border" value="" size="3" maxlength="3" style="vertical-align: middle; width: 30px; text-align: center;" /></td>
-                    </tr>
-                    <tr>
-                        <td align="right" nowrap="nowrap">{$lang_insert_image_align}:</td>
-                        <td><select name="align">
-                                <option value="">{$lang_insert_image_align_default}</option>
-                                <option value="baseline">{$lang_insert_image_align_baseline}</option>
-                                <option value="top">{$lang_insert_image_align_top}</option>
-                                <option value="middle">{$lang_insert_image_align_middle}</option>
-                                <option value="bottom">{$lang_insert_image_align_bottom}</option>
-                                <option value="texttop">{$lang_insert_image_align_texttop}</option>
-                                <option value="absmiddle">{$lang_insert_image_align_absmiddle}</option>
-                                <option value="absbottom">{$lang_insert_image_align_absbottom}</option>
-                                <option value="left">{$lang_insert_image_align_left}</option>
-                                <option value="right">{$lang_insert_image_align_right}</option>
-                            </select>
-                        </td>
-                    </tr>
-                    <tr>
-                        <td align="right" nowrap="nowrap">{$lang_insert_image_vspace}:</td>
-                        <td><input name="vspace" type="text" id="vspace" value="" size="3" maxlength="3" style="vertical-align: middle; width: 30px; text-align: center;" /></td>
-                    </tr>
-                    <tr>
-                        <td align="right" nowrap="nowrap">{$lang_insert_image_hspace}:</td>
-                        <td><input name="hspace" type="text" id="hspace" value="" size="3" maxlength="3" style="vertical-align: middle; width: 30px; text-align: center;" /></td>
-                    </tr>
-                    <tr>
-                        <td colspan="2" nowrap="nowrap"><input type="checkbox" name="onmousemove" id="onmousemove" style="border: 1px none #000000; background-color: transparent; vertical-align: middle;" onclick="if(this.checked==true){ setOnMouseInput('enabled'); }else{ setOnMouseInput('enable'); }" /><label for="onmousemove"><b>{$lang_insert_image_onmousemove}</b>:</label></td>
-                    </tr>
-                    <tr>
-                        <td align="right" nowrap="nowrap" id="showInput1">{$lang_insert_image_mouseover}:</td>
-                        <td><input name="onmouseover" type="text" id="onmouseover" value=""  style="width: 200px" /></td>
-                    </tr>
-                    <tr>
-                        <td align="right" nowrap="nowrap" id="showInput2">{$lang_insert_image_mouseout}:</td>
-                        <td><input name="onmouseout" type="text" id="onmouseout" value=""  style="width: 200px" /></td>
-                    </tr>
-                    <tr>
-                        <td><input type="button" name="insert" value="{$lang_insert}" onclick="insertImage();" id="insert" /></td>
-                        <td align="right"><input type="button" name="cancel" value="{$lang_cancel}" onclick="cancelAction();" id="cancel" /></td>
-                    </tr>
-                </table></td>
-            </tr>
-        </table>
+						<tr>
+							<td><label id="classlabel" for="classlist">{$lang_class_name}</label></td>
+							<td colspan="2">
+								 <select id="classlist" name="classlist">
+									<option value="" selected>{$lang_not_set}</option>
+								 </select>
+							</td>
+						</tr>
+
+						<tr>
+							<td class="column1"><label id="stylelabel" for="style">{$lang_advimage_style}</label></td> 
+							<td colspan="2"><input id="style" name="style" type="text" value="" onchange="styleUpdated();" /></td> 
+						</tr>
+
+						<!-- <tr>
+							<td class="column1"><label id="classeslabel" for="classes">{$lang_advimage_classes}</label></td> 
+							<td colspan="2"><input id="classes" name="classes" type="text" value="" onchange="selectByValue(this.form,'classlist',this.value,true);" /></td> 
+						</tr> -->
+					</table>
+				</fieldset>
+			</div>
+
+			<div id="advanced_panel" class="panel">
+				<fieldset>
+					<legend>{$lang_advimage_swap_image}</legend>
+
+					<input type="checkbox" id="onmousemovecheck" name="onmousemovecheck" class="checkbox" onclick="changeMouseMove();" />
+					<label id="onmousemovechecklabel" for="onmousemovecheck">{$lang_advimage_alt_image}</label>
+
+					<table border="0" cellpadding="4" cellspacing="0" width="100%">
+							<tr>
+								<td class="column1"><label id="onmouseoversrclabel" for="onmouseoversrc">{$lang_advimage_mouseover}</label></td> 
+								<td><table border="0" cellspacing="0" cellpadding="0"> 
+									<tr> 
+									  <td><input id="onmouseoversrc" name="onmouseoversrc" type="text" value="" /></td> 
+									  <td id="onmouseoversrccontainer">&nbsp;</td>
+									</tr>
+								  </table></td>
+							</tr>
+							<tr id="imagelistoverrow">
+								<td class="column1"><label for="imagelistover">{$lang_image_list}</label></td>
+								<td id="imagelistovercontainer">&nbsp;</td>
+							</tr>
+							<tr> 
+								<td class="column1"><label id="onmouseoutsrclabel" for="onmouseoutsrc">{$lang_advimage_mouseout}</label></td> 
+								<td class="column2"><table border="0" cellspacing="0" cellpadding="0"> 
+									<tr> 
+									  <td><input id="onmouseoutsrc" name="onmouseoutsrc" type="text" value="" /></td> 
+									  <td id="onmouseoutsrccontainer">&nbsp;</td>
+									</tr> 
+								  </table></td> 
+							</tr>
+							<tr id="imagelistoutrow">
+								<td class="column1"><label for="imagelistout">{$lang_image_list}</label></td>
+								<td id="imagelistoutcontainer">&nbsp;</td>
+							</tr>
+					</table>
+				</fieldset>
+
+				<fieldset>
+					<legend>{$lang_advimage_misc}</legend>
+
+					<table border="0" cellpadding="4" cellspacing="0">
+						<tr>
+							<td class="column1"><label id="idlabel" for="id">{$lang_advimage_id}</label></td> 
+							<td><input id="id" name="id" type="text" value="" /></td> 
+						</tr>
+
+						<tr>
+							<td class="column1"><label id="dirlabel" for="dir">{$lang_advimage_langdir}</label></td> 
+							<td>
+								<select id="dir" name="dir" onchange="changeAppearance();"> 
+										<option value="">{$lang_not_set}</option> 
+										<option value="ltr">{$lang_advimage_ltr}</option> 
+										<option value="rtl">{$lang_advimage_rtl}</option> 
+								</select>
+							</td> 
+						</tr>
+
+						<tr>
+							<td class="column1"><label id="langlabel" for="lang">{$lang_advimage_langcode}</label></td> 
+							<td>
+								<input id="lang" name="lang" type="text" value="" />
+							</td> 
+						</tr>
+
+						<tr>
+							<td class="column1"><label id="usemaplabel" for="usemap">{$lang_advimage_image_map}</label></td> 
+							<td>
+								<input id="usemap" name="usemap" type="text" value="" />
+							</td> 
+						</tr>
+
+						<tr>
+							<td class="column1"><label id="longdesclabel" for="longdesc">{$lang_advimage_long_desc}</label></td>
+							<td><table border="0" cellspacing="0" cellpadding="0">
+									<tr>
+									  <td><input id="longdesc" name="longdesc" type="text" value="" /></td>
+									  <td id="longdesccontainer">&nbsp;</td>
+									</tr>
+								</table></td> 
+						</tr>
+					</table>
+				</fieldset>
+			</div>
+		</div>
+
+		<div class="mceActionPanel">
+			<div style="float: left">
+				<input type="button" id="insert" name="insert" value="{$lang_insert}" onclick="insertAction();" />
+			</div>
+
+			<div style="float: right">
+				<input type="button" id="cancel" name="cancel" value="{$lang_cancel}" onclick="cancelAction();" />
+			</div>
+		</div>
     </form>
-</body>
-</html>
+</body> 
+</html> 

Added: labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/plugins/advimage/images/sample.gif
===================================================================
(Binary files differ)


Property changes on: labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/plugins/advimage/images/sample.gif
___________________________________________________________________
Name: svn:mime-type
   + application/octet-stream

Added: labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/plugins/advimage/jscripts/functions.js
===================================================================
--- labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/plugins/advimage/jscripts/functions.js	2007-01-11 22:09:16 UTC (rev 8831)
+++ labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/plugins/advimage/jscripts/functions.js	2007-01-11 22:10:56 UTC (rev 8832)
@@ -0,0 +1,550 @@
+/* Functions for the advimage plugin popup */
+
+var preloadImg = null;
+var orgImageWidth, orgImageHeight;
+
+function preinit() {
+	// Initialize
+	tinyMCE.setWindowArg('mce_windowresize', false);
+
+	// Import external list url javascript
+	var url = tinyMCE.getParam("external_image_list_url");
+	if (url != null) {
+		// Fix relative
+		if (url.charAt(0) != '/' && url.indexOf('://') == -1)
+			url = tinyMCE.documentBasePath + "/" + url;
+
+		document.write('<sc'+'ript language="javascript" type="text/javascript" src="' + url + '"></sc'+'ript>');
+	}
+}
+
+function convertURL(url, node, on_save) {
+	return eval("tinyMCEPopup.windowOpener." + tinyMCE.settings['urlconverter_callback'] + "(url, node, on_save);");
+}
+
+function getImageSrc(str) {
+	var pos = -1;
+
+	if (!str)
+		return "";
+
+	if ((pos = str.indexOf('this.src=')) != -1) {
+		var src = str.substring(pos + 10);
+
+		src = src.substring(0, src.indexOf('\''));
+
+		if (tinyMCE.getParam('convert_urls'))
+			src = convertURL(src, null, true);
+
+		return src;
+	}
+
+	return "";
+}
+
+function init() {
+	tinyMCEPopup.resizeToInnerSize();
+
+	var formObj = document.forms[0];
+	var inst = tinyMCE.getInstanceById(tinyMCE.getWindowArg('editor_id'));
+	var elm = inst.getFocusElement();
+	var action = "insert";
+	var html = "";
+
+	// Image list src
+	html = getImageListHTML('imagelistsrc','src','onSelectMainImage');
+	if (html == "")
+		document.getElementById("imagelistsrcrow").style.display = 'none';
+	else
+		document.getElementById("imagelistsrccontainer").innerHTML = html;
+
+	// Image list oversrc
+	html = getImageListHTML('imagelistover','onmouseoversrc');
+	if (html == "")
+		document.getElementById("imagelistoverrow").style.display = 'none';
+	else
+		document.getElementById("imagelistovercontainer").innerHTML = html;
+
+	// Image list outsrc
+	html = getImageListHTML('imagelistout','onmouseoutsrc');
+	if (html == "")
+		document.getElementById("imagelistoutrow").style.display = 'none';
+	else
+		document.getElementById("imagelistoutcontainer").innerHTML = html;
+
+	// Src browser
+	html = getBrowserHTML('srcbrowser','src','image','advimage');
+	document.getElementById("srcbrowsercontainer").innerHTML = html;
+
+	// Over browser
+	html = getBrowserHTML('oversrcbrowser','onmouseoversrc','image','advimage');
+	document.getElementById("onmouseoversrccontainer").innerHTML = html;
+
+	// Out browser
+	html = getBrowserHTML('outsrcbrowser','onmouseoutsrc','image','advimage');
+	document.getElementById("onmouseoutsrccontainer").innerHTML = html;
+
+	// Longdesc browser
+	html = getBrowserHTML('longdescbrowser','longdesc','file','advimage');
+	document.getElementById("longdesccontainer").innerHTML = html;
+
+	// Resize some elements
+	if (isVisible('srcbrowser'))
+		document.getElementById('src').style.width = '260px';
+
+	if (isVisible('oversrcbrowser'))
+		document.getElementById('onmouseoversrc').style.width = '260px';
+
+	if (isVisible('outsrcbrowser'))
+		document.getElementById('onmouseoutsrc').style.width = '260px';
+
+	if (isVisible('longdescbrowser'))
+		document.getElementById('longdesc').style.width = '180px';
+
+	// Check action
+	if (elm != null && elm.nodeName == "IMG")
+		action = "update";
+
+	formObj.insert.value = tinyMCE.getLang('lang_' + action, 'Insert', true); 
+
+	if (action == "update") {
+		var src = tinyMCE.getAttrib(elm, 'src');
+		var onmouseoversrc = getImageSrc(tinyMCE.cleanupEventStr(tinyMCE.getAttrib(elm, 'onmouseover')));
+		var onmouseoutsrc = getImageSrc(tinyMCE.cleanupEventStr(tinyMCE.getAttrib(elm, 'onmouseout')));
+
+		src = convertURL(src, elm, true);
+
+		// Use mce_src if found
+		var mceRealSrc = tinyMCE.getAttrib(elm, 'mce_src');
+		if (mceRealSrc != "") {
+			src = mceRealSrc;
+
+			if (tinyMCE.getParam('convert_urls'))
+				src = convertURL(src, elm, true);
+		}
+
+		if (onmouseoversrc != "" && tinyMCE.getParam('convert_urls'))
+			onmouseoversrc = convertURL(onmouseoversrc, elm, true);
+
+		if (onmouseoutsrc != "" && tinyMCE.getParam('convert_urls'))
+			onmouseoutsrc = convertURL(onmouseoutsrc, elm, true);
+
+		// Setup form data
+		var style = tinyMCE.parseStyle(tinyMCE.getAttrib(elm, "style"));
+
+		// Store away old size
+		orgImageWidth = trimSize(getStyle(elm, 'width'))
+		orgImageHeight = trimSize(getStyle(elm, 'height'));
+
+		formObj.src.value    = src;
+		formObj.alt.value    = tinyMCE.getAttrib(elm, 'alt');
+		formObj.title.value  = tinyMCE.getAttrib(elm, 'title');
+		formObj.border.value = trimSize(getStyle(elm, 'border', 'borderWidth'));
+		formObj.vspace.value = tinyMCE.getAttrib(elm, 'vspace');
+		formObj.hspace.value = tinyMCE.getAttrib(elm, 'hspace');
+		formObj.width.value  = orgImageWidth;
+		formObj.height.value = orgImageHeight;
+		formObj.onmouseoversrc.value = onmouseoversrc;
+		formObj.onmouseoutsrc.value  = onmouseoutsrc;
+		formObj.id.value  = tinyMCE.getAttrib(elm, 'id');
+		formObj.dir.value  = tinyMCE.getAttrib(elm, 'dir');
+		formObj.lang.value  = tinyMCE.getAttrib(elm, 'lang');
+		formObj.longdesc.value  = tinyMCE.getAttrib(elm, 'longdesc');
+		formObj.usemap.value  = tinyMCE.getAttrib(elm, 'usemap');
+		formObj.style.value  = tinyMCE.serializeStyle(style);
+
+		// Select by the values
+		if (tinyMCE.isMSIE)
+			selectByValue(formObj, 'align', getStyle(elm, 'align', 'styleFloat'));
+		else
+			selectByValue(formObj, 'align', getStyle(elm, 'align', 'cssFloat'));
+
+		addClassesToList('classlist', 'advimage_styles');
+
+		selectByValue(formObj, 'classlist', tinyMCE.getAttrib(elm, 'class'));
+		selectByValue(formObj, 'imagelistsrc', src);
+		selectByValue(formObj, 'imagelistover', onmouseoversrc);
+		selectByValue(formObj, 'imagelistout', onmouseoutsrc);
+
+		updateStyle();
+		showPreviewImage(src, true);
+		changeAppearance();
+
+		window.focus();
+	} else
+		addClassesToList('classlist', 'advimage_styles');
+
+	// If option enabled default contrain proportions to checked
+	if (tinyMCE.getParam("advimage_constrain_proportions", true))
+		formObj.constrain.checked = true;
+
+	// Check swap image if valid data
+	if (formObj.onmouseoversrc.value != "" || formObj.onmouseoutsrc.value != "")
+		setSwapImageDisabled(false);
+	else
+		setSwapImageDisabled(true);
+}
+
+function setSwapImageDisabled(state) {
+	var formObj = document.forms[0];
+
+	formObj.onmousemovecheck.checked = !state;
+
+	setBrowserDisabled('overbrowser', state);
+	setBrowserDisabled('outbrowser', state);
+
+	if (formObj.imagelistover)
+		formObj.imagelistover.disabled = state;
+
+	if (formObj.imagelistout)
+		formObj.imagelistout.disabled = state;
+
+	formObj.onmouseoversrc.disabled = state;
+	formObj.onmouseoutsrc.disabled  = state;
+}
+
+function setAttrib(elm, attrib, value) {
+	var formObj = document.forms[0];
+	var valueElm = formObj.elements[attrib];
+
+	if (typeof(value) == "undefined" || value == null) {
+		value = "";
+
+		if (valueElm)
+			value = valueElm.value;
+	}
+
+	if (value != "") {
+		elm.setAttribute(attrib, value);
+
+		if (attrib == "style")
+			attrib = "style.cssText";
+
+		if (attrib == "longdesc")
+			attrib = "longDesc";
+
+		if (attrib == "width") {
+			attrib = "style.width";
+			value = value + "px";
+		}
+
+		if (attrib == "height") {
+			attrib = "style.height";
+			value = value + "px";
+		}
+
+		if (attrib == "class")
+			attrib = "className";
+
+		eval('elm.' + attrib + "=value;");
+	} else
+		elm.removeAttribute(attrib);
+}
+
+function makeAttrib(attrib, value) {
+	var formObj = document.forms[0];
+	var valueElm = formObj.elements[attrib];
+
+	if (typeof(value) == "undefined" || value == null) {
+		value = "";
+
+		if (valueElm)
+			value = valueElm.value;
+	}
+
+	if (value == "")
+		return "";
+
+	// XML encode it
+	value = value.replace(/&/g, '&amp;');
+	value = value.replace(/\"/g, '&quot;');
+	value = value.replace(/</g, '&lt;');
+	value = value.replace(/>/g, '&gt;');
+
+	return ' ' + attrib + '="' + value + '"';
+}
+
+function insertAction() {
+	var inst = tinyMCE.getInstanceById(tinyMCE.getWindowArg('editor_id'));
+	var elm = inst.getFocusElement();
+	var formObj = document.forms[0];
+	var src = formObj.src.value;
+	var onmouseoversrc = formObj.onmouseoversrc.value;
+	var onmouseoutsrc = formObj.onmouseoutsrc.value;
+
+	if (!AutoValidator.validate(formObj)) {
+		alert(tinyMCE.getLang('lang_invalid_data'));
+		return false;
+	}
+
+	if (tinyMCE.getParam("accessibility_warnings")) {
+		if (formObj.alt.value == "") {
+			var answer = confirm(tinyMCE.getLang('lang_advimage_missing_alt', '', true));
+			if (answer == true) {
+				formObj.alt.value = " ";
+			}
+		} else {
+			var answer = true;
+		}
+
+		if (!answer)
+			return;
+	}
+
+	if (onmouseoversrc && onmouseoversrc != "")
+		onmouseoversrc = "this.src='" + convertURL(onmouseoversrc, tinyMCE.imgElement) + "';";
+
+	if (onmouseoutsrc && onmouseoutsrc != "")
+		onmouseoutsrc = "this.src='" + convertURL(onmouseoutsrc, tinyMCE.imgElement) + "';";
+
+	if (elm != null && elm.nodeName == "IMG") {
+		setAttrib(elm, 'src', convertURL(src, tinyMCE.imgElement));
+		setAttrib(elm, 'mce_src', src);
+		setAttrib(elm, 'alt');
+		setAttrib(elm, 'title');
+		setAttrib(elm, 'border');
+		setAttrib(elm, 'vspace');
+		setAttrib(elm, 'hspace');
+		setAttrib(elm, 'width');
+		setAttrib(elm, 'height');
+		setAttrib(elm, 'onmouseover', onmouseoversrc);
+		setAttrib(elm, 'onmouseout', onmouseoutsrc);
+		setAttrib(elm, 'id');
+		setAttrib(elm, 'dir');
+		setAttrib(elm, 'lang');
+		setAttrib(elm, 'longdesc');
+		setAttrib(elm, 'usemap');
+		setAttrib(elm, 'style');
+		setAttrib(elm, 'class', getSelectValue(formObj, 'classlist'));
+		setAttrib(elm, 'align', getSelectValue(formObj, 'align'));
+
+		//tinyMCEPopup.execCommand("mceRepaint");
+
+		// Repaint if dimensions changed
+		if (formObj.width.value != orgImageWidth || formObj.height.value != orgImageHeight)
+			inst.repaint();
+
+		// Refresh in old MSIE
+		if (tinyMCE.isMSIE5)
+			elm.outerHTML = elm.outerHTML;
+	} else {
+		var html = "<img";
+
+		html += makeAttrib('src', convertURL(src, tinyMCE.imgElement));
+		html += makeAttrib('mce_src', src);
+		html += makeAttrib('alt');
+		html += makeAttrib('title');
+		html += makeAttrib('border');
+		html += makeAttrib('vspace');
+		html += makeAttrib('hspace');
+		html += makeAttrib('width');
+		html += makeAttrib('height');
+		html += makeAttrib('onmouseover', onmouseoversrc);
+		html += makeAttrib('onmouseout', onmouseoutsrc);
+		html += makeAttrib('id');
+		html += makeAttrib('dir');
+		html += makeAttrib('lang');
+		html += makeAttrib('longdesc');
+		html += makeAttrib('usemap');
+		html += makeAttrib('style');
+		html += makeAttrib('class', getSelectValue(formObj, 'classlist'));
+		html += makeAttrib('align', getSelectValue(formObj, 'align'));
+		html += " />";
+
+		tinyMCEPopup.execCommand("mceInsertContent", false, html);
+	}
+
+	tinyMCE._setEventsEnabled(inst.getBody(), false);
+	tinyMCEPopup.close();
+}
+
+function cancelAction() {
+	tinyMCEPopup.close();
+}
+
+function changeAppearance() {
+	var formObj = document.forms[0];
+	var img = document.getElementById('alignSampleImg');
+
+	if (img) {
+		img.align = formObj.align.value;
+		img.border = formObj.border.value;
+		img.hspace = formObj.hspace.value;
+		img.vspace = formObj.vspace.value;
+	}
+}
+
+function changeMouseMove() {
+	var formObj = document.forms[0];
+
+	setSwapImageDisabled(!formObj.onmousemovecheck.checked);
+}
+
+function updateStyle() {
+	var formObj = document.forms[0];
+	var st = tinyMCE.parseStyle(formObj.style.value);
+
+	if (tinyMCE.getParam('inline_styles', false)) {
+		st['width'] = formObj.width.value == '' ? '' : formObj.width.value + "px";
+		st['height'] = formObj.height.value == '' ? '' : formObj.height.value + "px";
+		st['border-width'] = formObj.border.value == '' ? '' : formObj.border.value + "px";
+		st['margin-top'] = formObj.vspace.value == '' ? '' : formObj.vspace.value + "px";
+		st['margin-bottom'] = formObj.vspace.value == '' ? '' : formObj.vspace.value + "px";
+		st['margin-left'] = formObj.hspace.value == '' ? '' : formObj.hspace.value + "px";
+		st['margin-right'] = formObj.hspace.value == '' ? '' : formObj.hspace.value + "px";
+	} else {
+		st['width'] = st['height'] = st['border-width'] = null;
+
+		if (st['margin-top'] == st['margin-bottom'])
+			st['margin-top'] = st['margin-bottom'] = null;
+
+		if (st['margin-left'] == st['margin-right'])
+			st['margin-left'] = st['margin-right'] = null;
+	}
+
+	formObj.style.value = tinyMCE.serializeStyle(st);
+}
+
+function styleUpdated() {
+	var formObj = document.forms[0];
+	var st = tinyMCE.parseStyle(formObj.style.value);
+
+	if (st['width'])
+		formObj.width.value = st['width'].replace('px', '');
+
+	if (st['height'])
+		formObj.height.value = st['height'].replace('px', '');
+
+	if (st['margin-top'] && st['margin-top'] == st['margin-bottom'])
+		formObj.vspace.value = st['margin-top'].replace('px', '');
+
+	if (st['margin-left'] && st['margin-left'] == st['margin-right'])
+		formObj.hspace.value = st['margin-left'].replace('px', '');
+
+	if (st['border-width'])
+		formObj.border.value = st['border-width'].replace('px', '');
+}
+
+function changeHeight() {
+	var formObj = document.forms[0];
+
+	if (!formObj.constrain.checked || !preloadImg) {
+		updateStyle();
+		return;
+	}
+
+	if (formObj.width.value == "" || formObj.height.value == "")
+		return;
+
+	var temp = (formObj.width.value / preloadImg.width) * preloadImg.height;
+	formObj.height.value = temp.toFixed(0);
+	updateStyle();
+}
+
+function changeWidth() {
+	var formObj = document.forms[0];
+
+	if (!formObj.constrain.checked || !preloadImg) {
+		updateStyle();
+		return;
+	}
+
+	if (formObj.width.value == "" || formObj.height.value == "")
+		return;
+
+	var temp = (formObj.height.value / preloadImg.height) * preloadImg.width;
+	formObj.width.value = temp.toFixed(0);
+	updateStyle();
+}
+
+function onSelectMainImage(target_form_element, name, value) {
+	var formObj = document.forms[0];
+
+	formObj.alt.value = name;
+	formObj.title.value = name;
+
+	resetImageData();
+	showPreviewImage(formObj.elements[target_form_element].value, false);
+}
+
+function showPreviewImage(src, start) {
+	var formObj = document.forms[0];
+
+	selectByValue(document.forms[0], 'imagelistsrc', src);
+
+	var elm = document.getElementById('prev');
+	var src = src == "" ? src : tinyMCE.convertRelativeToAbsoluteURL(tinyMCE.settings['base_href'], src);
+
+	if (!start && tinyMCE.getParam("advimage_update_dimensions_onchange", true))
+		resetImageData();
+
+	if (src == "")
+		elm.innerHTML = "";
+	else
+		elm.innerHTML = '<img src="' + src + '" border="0" />'
+
+	getImageData(src);
+}
+
+function getImageData(src) {
+	preloadImg = new Image();
+
+	tinyMCE.addEvent(preloadImg, "load", updateImageData);
+	tinyMCE.addEvent(preloadImg, "error", resetImageData);
+
+	preloadImg.src = src;
+}
+
+function updateImageData() {
+	var formObj = document.forms[0];
+
+	if (formObj.width.value == "")
+		formObj.width.value = preloadImg.width;
+
+	if (formObj.height.value == "")
+		formObj.height.value = preloadImg.height;
+
+	updateStyle();
+}
+
+function resetImageData() {
+	var formObj = document.forms[0];
+	formObj.width.value = formObj.height.value = "";	
+}
+
+function getSelectValue(form_obj, field_name) {
+	var elm = form_obj.elements[field_name];
+
+	if (elm == null || elm.options == null)
+		return "";
+
+	return elm.options[elm.selectedIndex].value;
+}
+
+function getImageListHTML(elm_id, target_form_element, onchange_func) {
+	if (typeof(tinyMCEImageList) == "undefined" || tinyMCEImageList.length == 0)
+		return "";
+
+	var html = "";
+
+	html += '<select id="' + elm_id + '" name="' + elm_id + '"';
+	html += ' class="mceImageList" onfocus="tinyMCE.addSelectAccessibility(event, this, window);" onchange="this.form.' + target_form_element + '.value=';
+	html += 'this.options[this.selectedIndex].value;';
+
+	if (typeof(onchange_func) != "undefined")
+		html += onchange_func + '(\'' + target_form_element + '\',this.options[this.selectedIndex].text,this.options[this.selectedIndex].value);';
+
+	html += '"><option value="">---</option>';
+
+	for (var i=0; i<tinyMCEImageList.length; i++)
+		html += '<option value="' + tinyMCEImageList[i][1] + '">' + tinyMCEImageList[i][0] + '</option>';
+
+	html += '</select>';
+
+	return html;
+
+	// tinyMCE.debug('-- image list start --', html, '-- image list end --');
+}
+
+// While loading
+preinit();

Added: labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/plugins/advimage/langs/en.js
===================================================================
--- labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/plugins/advimage/langs/en.js	2007-01-11 22:09:16 UTC (rev 8831)
+++ labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/plugins/advimage/langs/en.js	2007-01-11 22:10:56 UTC (rev 8832)
@@ -0,0 +1,27 @@
+// UK lang variables
+
+tinyMCE.addToLang('advimage',{
+tab_general : 'General',
+tab_appearance : 'Appearance',
+tab_advanced : 'Advanced',
+general : 'General',
+title : 'Title',
+preview : 'Preview',
+constrain_proportions : 'Constrain proportions',
+langdir : 'Language direction',
+langcode : 'Language code',
+long_desc : 'Long description link',
+style : 'Style',
+classes : 'Classes',
+ltr : 'Left to right',
+rtl : 'Right to left',
+id : 'Id',
+image_map : 'Image map',
+swap_image : 'Swap image',
+alt_image : 'Alternative image',
+mouseover : 'for mouse over',
+mouseout : 'for mouse out',
+misc : 'Miscellaneous',
+example_img : 'Appearance&nbsp;preview&nbsp;image',
+missing_alt : 'Are you sure you want to continue without including an Image Description? Without  it the image may not be accessible to some users with disabilities, or to those using a text browser, or browsing the Web with images turned off.'
+});

Modified: labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/plugins/advimage/readme.txt
===================================================================
--- labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/plugins/advimage/readme.txt	2007-01-11 22:09:16 UTC (rev 8831)
+++ labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/plugins/advimage/readme.txt	2007-01-11 22:10:56 UTC (rev 8832)
@@ -1,19 +1 @@
- Advimage plugin for TinyMCE
------------------------------
-
-About:
-  This is a more advanced image dialog mostly based on code contributed by Michael Keck.
-  This one supports mouseover/out image swapping.
-
-Installation instructions:
-  * Copy the advimage directory to the plugins directory of TinyMCE (/jscripts/tiny_mce/plugins).
-  * Add plugin to TinyMCE plugin option list example: plugins : "advimage".
-  * Add this "a[name|href|target|title|onclick]" to extended_valid_elements option.
-
-Initialization example:
-  tinyMCE.init({
-    theme : "advanced",
-    mode : "textareas",
-    plugins : "preview",
-    extended_valid_elements : "a[name|href|target|title|onclick]"
-  });
+Check the TinyMCE documentation for details on this plugin.

Added: labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/plugins/advlink/css/advlink.css
===================================================================
--- labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/plugins/advlink/css/advlink.css	2007-01-11 22:09:16 UTC (rev 8831)
+++ labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/plugins/advlink/css/advlink.css	2007-01-11 22:10:56 UTC (rev 8832)
@@ -0,0 +1,35 @@
+/* CSS file for advimage plugin popup */
+
+.mceLinkList, .mceAnchorList, #targetlist {
+	width: 280px;
+}
+
+.mceActionPanel {
+	margin-top: 7px;
+}
+
+.panel_wrapper div.current {
+	height: 320px;
+}
+
+#classlist, #title, #href {
+	width: 280px;
+}
+
+#popupurl, #popupname {
+	width: 200px;
+}
+
+#popupwidth, #popupheight, #popupleft, #popuptop {
+	width: 30px;
+	vertical-align: middle;
+	text-align: center;
+}
+
+#id, #style, #classes, #target, #dir, #hreflang, #lang, #charset, #type, #rel, #rev, #tabindex, #accesskey {
+	width: 200px;
+}
+
+#events_panel input {
+	width: 200px;
+}

Modified: labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/plugins/advlink/editor_plugin.js
===================================================================
--- labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/plugins/advlink/editor_plugin.js	2007-01-11 22:09:16 UTC (rev 8831)
+++ labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/plugins/advlink/editor_plugin.js	2007-01-11 22:10:56 UTC (rev 8832)
@@ -1,18 +1 @@
-/* Import theme specific language pack */
-tinyMCE.importPluginLanguagePack('advlink', 'uk,se,de');
-
-/**
- * Insert link template function.
- */
-function TinyMCE_advlink_getInsertLinkTemplate() {
-    var template = new Array();
-    template['file']   = '../../plugins/advlink/link.htm';
-    template['width']  = 440;
-    template['height'] = 420;
-
-    // Language specific width and height addons
-    template['width']  += tinyMCE.getLang('lang_insert_link_delta_width', 0);
-    template['height'] += tinyMCE.getLang('lang_insert_link_delta_height', 0);
-
-    return template;
-} 
\ No newline at end of file
+tinyMCE.importPluginLanguagePack('advlink');var TinyMCE_AdvancedLinkPlugin={getInfo:function(){return{longname:'Advanced link',author:'Moxiecode Systems AB',authorurl:'http://tinymce.moxiecode.com',infourl:'http://tinymce.moxiecode.com/tinymce/docs/plugin_advlink.html',version:tinyMCE.majorVersion+"."+tinyMCE.minorVersion}},initInstance:function(inst){inst.addShortcut('ctrl','k','lang_advlink_desc','mceAdvLink')},getControlHTML:function(cn){switch(cn){case"link":return tinyMCE.getButtonHTML(cn,'lang_link_desc','{$themeurl}/images/link.gif','mceAdvLink')}return""},execCommand:function(editor_id,element,command,user_interface,value){switch(command){case"mceAdvLink":var anySelection=false;var inst=tinyMCE.getInstanceById(editor_id);var focusElm=inst.getFocusElement();var selectedText=inst.selection.getSelectedText();if(tinyMCE.selectedElement)anySelection=(tinyMCE.selectedElement.nodeName.toLowerCase()=="img")||(selectedText&&selectedText.length>0);if(anySelection||(focusElm!=!
 null&&focusElm.nodeName=="A")){var template=new Array();template['file']='../../plugins/advlink/link.htm';template['width']=480;template['height']=400;template['width']+=tinyMCE.getLang('lang_advlink_delta_width',0);template['height']+=tinyMCE.getLang('lang_advlink_delta_height',0);tinyMCE.openWindow(template,{editor_id:editor_id,inline:"yes"})}return true}return false},handleNodeChange:function(editor_id,node,undo_index,undo_levels,visual_aid,any_selection){if(node==null)return;do{if(node.nodeName=="A"&&tinyMCE.getAttrib(node,'href')!=""){tinyMCE.switchClass(editor_id+'_advlink','mceButtonSelected');return true}}while((node=node.parentNode));if(any_selection){tinyMCE.switchClass(editor_id+'_advlink','mceButtonNormal');return true}tinyMCE.switchClass(editor_id+'_advlink','mceButtonDisabled');return true}};tinyMCE.addPlugin("advlink",TinyMCE_AdvancedLinkPlugin);
\ No newline at end of file

Added: labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/plugins/advlink/editor_plugin_src.js
===================================================================
--- labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/plugins/advlink/editor_plugin_src.js	2007-01-11 22:09:16 UTC (rev 8831)
+++ labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/plugins/advlink/editor_plugin_src.js	2007-01-11 22:10:56 UTC (rev 8832)
@@ -0,0 +1,88 @@
+/**
+ * $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('advlink');
+
+var TinyMCE_AdvancedLinkPlugin = {
+	getInfo : function() {
+		return {
+			longname : 'Advanced link',
+			author : 'Moxiecode Systems AB',
+			authorurl : 'http://tinymce.moxiecode.com',
+			infourl : 'http://tinymce.moxiecode.com/tinymce/docs/plugin_advlink.html',
+			version : tinyMCE.majorVersion + "." + tinyMCE.minorVersion
+		};
+	},
+
+	initInstance : function(inst) {
+		inst.addShortcut('ctrl', 'k', 'lang_advlink_desc', 'mceAdvLink');
+	},
+
+	getControlHTML : function(cn) {
+		switch (cn) {
+			case "link":
+				return tinyMCE.getButtonHTML(cn, 'lang_link_desc', '{$themeurl}/images/link.gif', 'mceAdvLink');
+		}
+
+		return "";
+	},
+
+	execCommand : function(editor_id, element, command, user_interface, value) {
+		switch (command) {
+			case "mceAdvLink":
+				var anySelection = false;
+				var inst = tinyMCE.getInstanceById(editor_id);
+				var focusElm = inst.getFocusElement();
+				var selectedText = inst.selection.getSelectedText();
+
+				if (tinyMCE.selectedElement)
+					anySelection = (tinyMCE.selectedElement.nodeName.toLowerCase() == "img") || (selectedText && selectedText.length > 0);
+
+				if (anySelection || (focusElm != null && focusElm.nodeName == "A")) {
+					var template = new Array();
+
+					template['file']   = '../../plugins/advlink/link.htm';
+					template['width']  = 480;
+					template['height'] = 400;
+
+					// Language specific width and height addons
+					template['width']  += tinyMCE.getLang('lang_advlink_delta_width', 0);
+					template['height'] += tinyMCE.getLang('lang_advlink_delta_height', 0);
+
+					tinyMCE.openWindow(template, {editor_id : editor_id, inline : "yes"});
+				}
+
+				return true;
+		}
+
+		return false;
+	},
+
+	handleNodeChange : function(editor_id, node, undo_index, undo_levels, visual_aid, any_selection) {
+		if (node == null)
+			return;
+
+		do {
+			if (node.nodeName == "A" && tinyMCE.getAttrib(node, 'href') != "") {
+				tinyMCE.switchClass(editor_id + '_advlink', 'mceButtonSelected');
+				return true;
+			}
+		} while ((node = node.parentNode));
+
+		if (any_selection) {
+			tinyMCE.switchClass(editor_id + '_advlink', 'mceButtonNormal');
+			return true;
+		}
+
+		tinyMCE.switchClass(editor_id + '_advlink', 'mceButtonDisabled');
+
+		return true;
+	}
+};
+
+tinyMCE.addPlugin("advlink", TinyMCE_AdvancedLinkPlugin);

Added: labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/plugins/advlink/jscripts/functions.js
===================================================================
--- labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/plugins/advlink/jscripts/functions.js	2007-01-11 22:09:16 UTC (rev 8831)
+++ labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/plugins/advlink/jscripts/functions.js	2007-01-11 22:10:56 UTC (rev 8832)
@@ -0,0 +1,568 @@
+/* Functions for the advlink plugin popup */
+
+var templates = {
+	"window.open" : "window.open('${url}','${target}','${options}')"
+};
+
+function preinit() {
+	// Initialize
+	tinyMCE.setWindowArg('mce_windowresize', false);
+
+	// Import external list url javascript
+	var url = tinyMCE.getParam("external_link_list_url");
+	if (url != null) {
+		// Fix relative
+		if (url.charAt(0) != '/' && url.indexOf('://') == -1)
+			url = tinyMCE.documentBasePath + "/" + url;
+
+		document.write('<sc'+'ript language="javascript" type="text/javascript" src="' + url + '"></sc'+'ript>');
+	}
+}
+
+function changeClass() {
+	var formObj = document.forms[0];
+	formObj.classes.value = getSelectValue(formObj, 'classlist');
+}
+
+function init() {
+	tinyMCEPopup.resizeToInnerSize();
+
+	var formObj = document.forms[0];
+	var inst = tinyMCE.getInstanceById(tinyMCE.getWindowArg('editor_id'));
+	var elm = inst.getFocusElement();
+	var action = "insert";
+	var html;
+
+	document.getElementById('hrefbrowsercontainer').innerHTML = getBrowserHTML('hrefbrowser','href','file','advlink');
+	document.getElementById('popupurlbrowsercontainer').innerHTML = getBrowserHTML('popupurlbrowser','popupurl','file','advlink');
+	document.getElementById('linklisthrefcontainer').innerHTML = getLinkListHTML('linklisthref','href');
+	document.getElementById('anchorlistcontainer').innerHTML = getAnchorListHTML('anchorlist','href');
+	document.getElementById('targetlistcontainer').innerHTML = getTargetListHTML('targetlist','target');
+
+	// Link list
+	html = getLinkListHTML('linklisthref','href');
+	if (html == "")
+		document.getElementById("linklisthrefrow").style.display = 'none';
+	else
+		document.getElementById("linklisthrefcontainer").innerHTML = html;
+
+	// Resize some elements
+	if (isVisible('hrefbrowser'))
+		document.getElementById('href').style.width = '260px';
+
+	if (isVisible('popupurlbrowser'))
+		document.getElementById('popupurl').style.width = '180px';
+
+	elm = tinyMCE.getParentElement(elm, "a");
+	if (elm != null && elm.nodeName == "A")
+		action = "update";
+
+	formObj.insert.value = tinyMCE.getLang('lang_' + action, 'Insert', true); 
+
+	setPopupControlsDisabled(true);
+
+	if (action == "update") {
+		var href = tinyMCE.getAttrib(elm, 'href');
+
+		href = convertURL(href, elm, true);
+
+		// Use mce_href if found
+		var mceRealHref = tinyMCE.getAttrib(elm, 'mce_href');
+		if (mceRealHref != "") {
+			href = mceRealHref;
+
+			if (tinyMCE.getParam('convert_urls'))
+				href = convertURL(href, elm, true);
+		}
+
+		var onclick = tinyMCE.cleanupEventStr(tinyMCE.getAttrib(elm, 'onclick'));
+
+		// Setup form data
+		setFormValue('href', href);
+		setFormValue('title', tinyMCE.getAttrib(elm, 'title'));
+		setFormValue('id', tinyMCE.getAttrib(elm, 'id'));
+		setFormValue('style', tinyMCE.serializeStyle(tinyMCE.parseStyle(tinyMCE.getAttrib(elm, "style"))));
+		setFormValue('rel', tinyMCE.getAttrib(elm, 'rel'));
+		setFormValue('rev', tinyMCE.getAttrib(elm, 'rev'));
+		setFormValue('charset', tinyMCE.getAttrib(elm, 'charset'));
+		setFormValue('hreflang', tinyMCE.getAttrib(elm, 'hreflang'));
+		setFormValue('dir', tinyMCE.getAttrib(elm, 'dir'));
+		setFormValue('lang', tinyMCE.getAttrib(elm, 'lang'));
+		setFormValue('tabindex', tinyMCE.getAttrib(elm, 'tabindex', typeof(elm.tabindex) != "undefined" ? elm.tabindex : ""));
+		setFormValue('accesskey', tinyMCE.getAttrib(elm, 'accesskey', typeof(elm.accesskey) != "undefined" ? elm.accesskey : ""));
+		setFormValue('type', tinyMCE.getAttrib(elm, 'type'));
+		setFormValue('onfocus', tinyMCE.cleanupEventStr(tinyMCE.getAttrib(elm, 'onfocus')));
+		setFormValue('onblur', tinyMCE.cleanupEventStr(tinyMCE.getAttrib(elm, 'onblur')));
+		setFormValue('onclick', onclick);
+		setFormValue('ondblclick', tinyMCE.cleanupEventStr(tinyMCE.getAttrib(elm, 'ondblclick')));
+		setFormValue('onmousedown', tinyMCE.cleanupEventStr(tinyMCE.getAttrib(elm, 'onmousedown')));
+		setFormValue('onmouseup', tinyMCE.cleanupEventStr(tinyMCE.getAttrib(elm, 'onmouseup')));
+		setFormValue('onmouseover', tinyMCE.cleanupEventStr(tinyMCE.getAttrib(elm, 'onmouseover')));
+		setFormValue('onmousemove', tinyMCE.cleanupEventStr(tinyMCE.getAttrib(elm, 'onmousemove')));
+		setFormValue('onmouseout', tinyMCE.cleanupEventStr(tinyMCE.getAttrib(elm, 'onmouseout')));
+		setFormValue('onkeypress', tinyMCE.cleanupEventStr(tinyMCE.getAttrib(elm, 'onkeypress')));
+		setFormValue('onkeydown', tinyMCE.cleanupEventStr(tinyMCE.getAttrib(elm, 'onkeydown')));
+		setFormValue('onkeyup', tinyMCE.cleanupEventStr(tinyMCE.getAttrib(elm, 'onkeyup')));
+		setFormValue('target', tinyMCE.getAttrib(elm, 'target'));
+		setFormValue('classes', tinyMCE.getAttrib(elm, 'class'));
+
+		// Parse onclick data
+		if (onclick != null && onclick.indexOf('window.open') != -1)
+			parseWindowOpen(onclick);
+		else
+			parseFunction(onclick);
+
+		// Select by the values
+		selectByValue(formObj, 'dir', tinyMCE.getAttrib(elm, 'dir'));
+		selectByValue(formObj, 'rel', tinyMCE.getAttrib(elm, 'rel'));
+		selectByValue(formObj, 'rev', tinyMCE.getAttrib(elm, 'rev'));
+		selectByValue(formObj, 'linklisthref', href);
+
+		if (href.charAt(0) == '#')
+			selectByValue(formObj, 'anchorlist', href);
+
+		addClassesToList('classlist', 'advlink_styles');
+
+		selectByValue(formObj, 'classlist', tinyMCE.getAttrib(elm, 'class'), true);
+		selectByValue(formObj, 'targetlist', tinyMCE.getAttrib(elm, 'target'), true);
+	} else
+		addClassesToList('classlist', 'advlink_styles');
+
+	window.focus();
+}
+
+function setFormValue(name, value) {
+	document.forms[0].elements[name].value = value;
+}
+
+function convertURL(url, node, on_save) {
+	return eval("tinyMCEPopup.windowOpener." + tinyMCE.settings['urlconverter_callback'] + "(url, node, on_save);");
+}
+
+function parseWindowOpen(onclick) {
+	var formObj = document.forms[0];
+
+	// Preprocess center code
+	if (onclick.indexOf('return false;') != -1) {
+		formObj.popupreturn.checked = true;
+		onclick = onclick.replace('return false;', '');
+	} else
+		formObj.popupreturn.checked = false;
+
+	var onClickData = parseLink(onclick);
+
+	if (onClickData != null) {
+		formObj.ispopup.checked = true;
+		setPopupControlsDisabled(false);
+
+		var onClickWindowOptions = parseOptions(onClickData['options']);
+		var url = onClickData['url'];
+
+		if (tinyMCE.getParam('convert_urls'))
+			url = convertURL(url, null, true);
+
+		formObj.popupname.value = onClickData['target'];
+		formObj.popupurl.value = url;
+		formObj.popupwidth.value = getOption(onClickWindowOptions, 'width');
+		formObj.popupheight.value = getOption(onClickWindowOptions, 'height');
+
+		formObj.popupleft.value = getOption(onClickWindowOptions, 'left');
+		formObj.popuptop.value = getOption(onClickWindowOptions, 'top');
+
+		if (formObj.popupleft.value.indexOf('screen') != -1)
+			formObj.popupleft.value = "c";
+
+		if (formObj.popuptop.value.indexOf('screen') != -1)
+			formObj.popuptop.value = "c";
+
+		formObj.popuplocation.checked = getOption(onClickWindowOptions, 'location') == "yes";
+		formObj.popupscrollbars.checked = getOption(onClickWindowOptions, 'scrollbars') == "yes";
+		formObj.popupmenubar.checked = getOption(onClickWindowOptions, 'menubar') == "yes";
+		formObj.popupresizable.checked = getOption(onClickWindowOptions, 'resizable') == "yes";
+		formObj.popuptoolbar.checked = getOption(onClickWindowOptions, 'toolbar') == "yes";
+		formObj.popupstatus.checked = getOption(onClickWindowOptions, 'status') == "yes";
+		formObj.popupdependent.checked = getOption(onClickWindowOptions, 'dependent') == "yes";
+
+		buildOnClick();
+	}
+}
+
+function parseFunction(onclick) {
+	var formObj = document.forms[0];
+	var onClickData = parseLink(onclick);
+
+	// TODO: Add stuff here
+}
+
+function getOption(opts, name) {
+	return typeof(opts[name]) == "undefined" ? "" : opts[name];
+}
+
+function setPopupControlsDisabled(state) {
+	var formObj = document.forms[0];
+
+	formObj.popupname.disabled = state;
+	formObj.popupurl.disabled = state;
+	formObj.popupwidth.disabled = state;
+	formObj.popupheight.disabled = state;
+	formObj.popupleft.disabled = state;
+	formObj.popuptop.disabled = state;
+	formObj.popuplocation.disabled = state;
+	formObj.popupscrollbars.disabled = state;
+	formObj.popupmenubar.disabled = state;
+	formObj.popupresizable.disabled = state;
+	formObj.popuptoolbar.disabled = state;
+	formObj.popupstatus.disabled = state;
+	formObj.popupreturn.disabled = state;
+	formObj.popupdependent.disabled = state;
+
+	setBrowserDisabled('popupurlbrowser', state);
+}
+
+function parseLink(link) {
+	link = link.replace(new RegExp('&#39;', 'g'), "'");
+
+	var fnName = link.replace(new RegExp("\\s*([A-Za-z0-9\.]*)\\s*\\(.*", "gi"), "$1");
+
+	// Is function name a template function
+	var template = templates[fnName];
+	if (template) {
+		// Build regexp
+		var variableNames = template.match(new RegExp("'?\\$\\{[A-Za-z0-9\.]*\\}'?", "gi"));
+		var regExp = "\\s*[A-Za-z0-9\.]*\\s*\\(";
+		var replaceStr = "";
+		for (var i=0; i<variableNames.length; i++) {
+			// Is string value
+			if (variableNames[i].indexOf("'${") != -1)
+				regExp += "'(.*)'";
+			else // Number value
+				regExp += "([0-9]*)";
+
+			replaceStr += "$" + (i+1);
+
+			// Cleanup variable name
+			variableNames[i] = variableNames[i].replace(new RegExp("[^A-Za-z0-9]", "gi"), "");
+
+			if (i != variableNames.length-1) {
+				regExp += "\\s*,\\s*";
+				replaceStr += "<delim>";
+			} else
+				regExp += ".*";
+		}
+
+		regExp += "\\);?";
+
+		// Build variable array
+		var variables = new Array();
+		variables["_function"] = fnName;
+		var variableValues = link.replace(new RegExp(regExp, "gi"), replaceStr).split('<delim>');
+		for (var i=0; i<variableNames.length; i++)
+			variables[variableNames[i]] = variableValues[i];
+
+		return variables;
+	}
+
+	return null;
+}
+
+function parseOptions(opts) {
+	if (opts == null || opts == "")
+		return new Array();
+
+	// Cleanup the options
+	opts = opts.toLowerCase();
+	opts = opts.replace(/;/g, ",");
+	opts = opts.replace(/[^0-9a-z=,]/g, "");
+
+	var optionChunks = opts.split(',');
+	var options = new Array();
+
+	for (var i=0; i<optionChunks.length; i++) {
+		var parts = optionChunks[i].split('=');
+
+		if (parts.length == 2)
+			options[parts[0]] = parts[1];
+	}
+
+	return options;
+}
+
+function buildOnClick() {
+	var formObj = document.forms[0];
+
+	if (!formObj.ispopup.checked) {
+		formObj.onclick.value = "";
+		return;
+	}
+
+	var onclick = "window.open('";
+	var url = formObj.popupurl.value;
+
+	if (tinyMCE.getParam('convert_urls'))
+		url = convertURL(url, null, true);
+
+	onclick += url + "','";
+	onclick += formObj.popupname.value + "','";
+
+	if (formObj.popuplocation.checked)
+		onclick += "location=yes,";
+
+	if (formObj.popupscrollbars.checked)
+		onclick += "scrollbars=yes,";
+
+	if (formObj.popupmenubar.checked)
+		onclick += "menubar=yes,";
+
+	if (formObj.popupresizable.checked)
+		onclick += "resizable=yes,";
+
+	if (formObj.popuptoolbar.checked)
+		onclick += "toolbar=yes,";
+
+	if (formObj.popupstatus.checked)
+		onclick += "status=yes,";
+
+	if (formObj.popupdependent.checked)
+		onclick += "dependent=yes,";
+
+	if (formObj.popupwidth.value != "")
+		onclick += "width=" + formObj.popupwidth.value + ",";
+
+	if (formObj.popupheight.value != "")
+		onclick += "height=" + formObj.popupheight.value + ",";
+
+	if (formObj.popupleft.value != "") {
+		if (formObj.popupleft.value != "c")
+			onclick += "left=" + formObj.popupleft.value + ",";
+		else
+			onclick += "left='+(screen.availWidth/2-" + (formObj.popupwidth.value/2) + ")+',";
+	}
+
+	if (formObj.popuptop.value != "") {
+		if (formObj.popuptop.value != "c")
+			onclick += "top=" + formObj.popuptop.value + ",";
+		else
+			onclick += "top='+(screen.availHeight/2-" + (formObj.popupheight.value/2) + ")+',";
+	}
+
+	if (onclick.charAt(onclick.length-1) == ',')
+		onclick = onclick.substring(0, onclick.length-1);
+
+	onclick += "');";
+
+	if (formObj.popupreturn.checked)
+		onclick += "return false;";
+
+	// tinyMCE.debug(onclick);
+
+	formObj.onclick.value = onclick;
+
+	if (formObj.href.value == "")
+		formObj.href.value = url;
+}
+
+function setAttrib(elm, attrib, value) {
+	var formObj = document.forms[0];
+	var valueElm = formObj.elements[attrib.toLowerCase()];
+
+	if (typeof(value) == "undefined" || value == null) {
+		value = "";
+
+		if (valueElm)
+			value = valueElm.value;
+	}
+
+	if (value != "") {
+		elm.setAttribute(attrib.toLowerCase(), value);
+
+		if (attrib == "style")
+			attrib = "style.cssText";
+
+		if (attrib.substring(0, 2) == 'on')
+			value = 'return true;' + value;
+
+		if (attrib == "class")
+			attrib = "className";
+
+		eval('elm.' + attrib + "=value;");
+	} else
+		elm.removeAttribute(attrib);
+}
+
+function getAnchorListHTML(id, target) {
+	var inst = tinyMCE.getInstanceById(tinyMCE.getWindowArg('editor_id'));
+	var nodes = inst.getBody().getElementsByTagName("a");
+
+	var html = "";
+
+	html += '<select id="' + id + '" name="' + id + '" class="mceAnchorList" onfocus="tinyMCE.addSelectAccessibility(event, this, window);" onchange="this.form.' + target + '.value=';
+	html += 'this.options[this.selectedIndex].value;">';
+	html += '<option value="">---</option>';
+
+	for (var i=0; i<nodes.length; i++) {
+		if ((name = tinyMCE.getAttrib(nodes[i], "name")) != "")
+			html += '<option value="#' + name + '">' + name + '</option>';
+	}
+
+	html += '</select>';
+
+	return html;
+}
+
+function insertAction() {
+	var inst = tinyMCE.getInstanceById(tinyMCE.getWindowArg('editor_id'));
+	var elm = inst.getFocusElement();
+
+	elm = tinyMCE.getParentElement(elm, "a");
+
+	tinyMCEPopup.execCommand("mceBeginUndoLevel");
+
+	// Create new anchor elements
+	if (elm == null) {
+		if (tinyMCE.isSafari)
+			tinyMCEPopup.execCommand("mceInsertContent", false, '<a href="#mce_temp_url#">' + inst.selection.getSelectedHTML() + '</a>');
+		else
+			tinyMCEPopup.execCommand("createlink", false, "#mce_temp_url#");
+
+		var elementArray = tinyMCE.getElementsByAttributeValue(inst.getBody(), "a", "href", "#mce_temp_url#");
+		for (var i=0; i<elementArray.length; i++) {
+			var elm = elementArray[i];
+
+			// Move cursor behind the new anchor
+			if (tinyMCE.isGecko) {
+				var sp = inst.getDoc().createTextNode(" ");
+
+				if (elm.nextSibling)
+					elm.parentNode.insertBefore(sp, elm.nextSibling);
+				else
+					elm.parentNode.appendChild(sp);
+
+				// Set range after link
+				var rng = inst.getDoc().createRange();
+				rng.setStartAfter(elm);
+				rng.setEndAfter(elm);
+
+				// Update selection
+				var sel = inst.getSel();
+				sel.removeAllRanges();
+				sel.addRange(rng);
+			}
+
+			setAllAttribs(elm);
+		}
+	} else
+		setAllAttribs(elm);
+
+	tinyMCE._setEventsEnabled(inst.getBody(), false);
+	tinyMCEPopup.execCommand("mceEndUndoLevel");
+	tinyMCEPopup.close();
+}
+
+function setAllAttribs(elm) {
+	var formObj = document.forms[0];
+	var href = formObj.href.value;
+	var target = getSelectValue(formObj, 'targetlist');
+
+	// Make anchors absolute
+	if (href.charAt(0) == '#' && tinyMCE.getParam('convert_urls'))
+		href = tinyMCE.settings['document_base_url'] + href;
+
+	setAttrib(elm, 'href', convertURL(href, elm));
+	setAttrib(elm, 'mce_href', href);
+	setAttrib(elm, 'title');
+	setAttrib(elm, 'target', target == '_self' ? '' : target);
+	setAttrib(elm, 'id');
+	setAttrib(elm, 'style');
+	setAttrib(elm, 'class', getSelectValue(formObj, 'classlist'));
+	setAttrib(elm, 'rel');
+	setAttrib(elm, 'rev');
+	setAttrib(elm, 'charset');
+	setAttrib(elm, 'hreflang');
+	setAttrib(elm, 'dir');
+	setAttrib(elm, 'lang');
+	setAttrib(elm, 'tabindex');
+	setAttrib(elm, 'accesskey');
+	setAttrib(elm, 'type');
+	setAttrib(elm, 'onfocus');
+	setAttrib(elm, 'onblur');
+	setAttrib(elm, 'onclick');
+	setAttrib(elm, 'ondblclick');
+	setAttrib(elm, 'onmousedown');
+	setAttrib(elm, 'onmouseup');
+	setAttrib(elm, 'onmouseover');
+	setAttrib(elm, 'onmousemove');
+	setAttrib(elm, 'onmouseout');
+	setAttrib(elm, 'onkeypress');
+	setAttrib(elm, 'onkeydown');
+	setAttrib(elm, 'onkeyup');
+
+	// Refresh in old MSIE
+	if (tinyMCE.isMSIE5)
+		elm.outerHTML = elm.outerHTML;
+}
+
+function getSelectValue(form_obj, field_name) {
+	var elm = form_obj.elements[field_name];
+
+	if (elm == null || elm.options == null)
+		return "";
+
+	return elm.options[elm.selectedIndex].value;
+}
+
+function getLinkListHTML(elm_id, target_form_element, onchange_func) {
+	if (typeof(tinyMCELinkList) == "undefined" || tinyMCELinkList.length == 0)
+		return "";
+
+	var html = "";
+
+	html += '<select id="' + elm_id + '" name="' + elm_id + '"';
+	html += ' class="mceLinkList" onfocus="tinyMCE.addSelectAccessibility(event, this, window);" onchange="this.form.' + target_form_element + '.value=';
+	html += 'this.options[this.selectedIndex].value;';
+
+	if (typeof(onchange_func) != "undefined")
+		html += onchange_func + '(\'' + target_form_element + '\',this.options[this.selectedIndex].text,this.options[this.selectedIndex].value);';
+
+	html += '"><option value="">---</option>';
+
+	for (var i=0; i<tinyMCELinkList.length; i++)
+		html += '<option value="' + tinyMCELinkList[i][1] + '">' + tinyMCELinkList[i][0] + '</option>';
+
+	html += '</select>';
+
+	return html;
+
+	// tinyMCE.debug('-- image list start --', html, '-- image list end --');
+}
+
+function getTargetListHTML(elm_id, target_form_element) {
+	var targets = tinyMCE.getParam('theme_advanced_link_targets', '').split(';');
+	var html = '';
+
+	html += '<select id="' + elm_id + '" name="' + elm_id + '" onfocus="tinyMCE.addSelectAccessibility(event, this, window);" onchange="this.form.' + target_form_element + '.value=';
+	html += 'this.options[this.selectedIndex].value;">';
+
+	html += '<option value="_self">' + tinyMCE.getLang('lang_advlink_target_same') + '</option>';
+	html += '<option value="_blank">' + tinyMCE.getLang('lang_advlink_target_blank') + ' (_blank)</option>';
+	html += '<option value="_parent">' + tinyMCE.getLang('lang_advlink_target_parent') + ' (_parent)</option>';
+	html += '<option value="_top">' + tinyMCE.getLang('lang_advlink_target_top') + ' (_top)</option>';
+
+	for (var i=0; i<targets.length; i++) {
+		var key, value;
+
+		if (targets[i] == "")
+			continue;
+
+		key = targets[i].split('=')[0];
+		value = targets[i].split('=')[1];
+
+		html += '<option value="' + key + '">' + value + ' (' + key + ')</option>';
+	}
+
+	html += '</select>';
+
+	return html;
+}
+
+// While loading
+preinit();

Added: labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/plugins/advlink/langs/en.js
===================================================================
--- labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/plugins/advlink/langs/en.js	2007-01-11 22:09:16 UTC (rev 8831)
+++ labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/plugins/advlink/langs/en.js	2007-01-11 22:10:56 UTC (rev 8832)
@@ -0,0 +1,46 @@
+// UK lang variables
+
+tinyMCE.addToLang('advlink',{
+general_tab : 'General',
+popup_tab : 'Popup',
+events_tab : 'Events',
+advanced_tab : 'Advanced',
+general_props : 'General properties',
+popup_props : 'Popup properties',
+event_props : 'Events',
+advanced_props : 'Advanced properties',
+popup_opts : 'Options',
+anchor_names : 'Anchors',
+target_same : 'Open in this window / frame',
+target_parent : 'Open in parent window / frame',
+target_top : 'Open in top frame (replaces all frames)',
+target_blank : 'Open in new window',
+popup : 'Javascript popup',
+popup_url : 'Popup URL',
+popup_name : 'Window name',
+popup_return : 'Insert \'return false\'',
+popup_scrollbars : 'Show scrollbars',
+popup_statusbar : 'Show status bar',
+popup_toolbar : 'Show toolbars',
+popup_menubar : 'Show menu bar',
+popup_location : 'Show location bar',
+popup_resizable : 'Make window resizable',
+popup_dependent : 'Dependent (Mozilla/Firefox only)',
+popup_size : 'Size',
+popup_position : 'Position (X/Y)',
+id : 'Id',
+style: 'Style',
+classes : 'Classes',
+target_name : 'Target name',
+langdir : 'Language direction',
+target_langcode : 'Target language',
+langcode : 'Language code',
+encoding : 'Target character encoding',
+mime : 'Target MIME type',
+rel : 'Relationship page to target',
+rev : 'Relationship target to page',
+tabindex : 'Tabindex',
+accesskey : 'Accesskey',
+ltr : 'Left to right',
+rtl : 'Right to left'
+});

Modified: labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/plugins/advlink/link.htm
===================================================================
--- labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/plugins/advlink/link.htm	2007-01-11 22:09:16 UTC (rev 8831)
+++ labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/plugins/advlink/link.htm	2007-01-11 22:10:56 UTC (rev 8832)
@@ -1,376 +1,337 @@
-<?xml version="1.0" encoding="iso-8859-1"?>
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
 <html xmlns="http://www.w3.org/1999/xhtml">
 <head>
-<title>{$lang_insert_link_title}</title>
-<script language="javascript" type="text/javascript" src="../../tiny_mce_popup.js"></script>
-<script language="javascript" type="text/javascript">
-<!--
-    function myRegexpReplace(in_str, reg_exp, replace_str, opts) {
-        if (typeof opts == "undefined")
-            opts = 'g';
-        var re = new RegExp(reg_exp, opts);
-        return in_str.replace(re, replace_str);
-    }
+	<title>{$lang_insert_link_title}</title>
+	<script language="javascript" type="text/javascript" src="../../tiny_mce_popup.js"></script>
+	<script language="javascript" type="text/javascript" src="../../utils/mctabs.js"></script>
+	<script language="javascript" type="text/javascript" src="../../utils/form_utils.js"></script>
+	<script language="javascript" type="text/javascript" src="jscripts/functions.js"></script>
+	<link href="css/advlink.css" rel="stylesheet" type="text/css" />
+	<base target="_self" />
+</head>
+<body id="advlink" onload="tinyMCEPopup.executeOnLoad('init();');" style="display: none">
+    <form onsubmit="insertAction();return false;" action="#">
+		<div class="tabs">
+			<ul>
+				<li id="general_tab" class="current"><span><a href="javascript:mcTabs.displayTab('general_tab','general_panel');" onmousedown="return false;">{$lang_advlink_general_tab}</a></span></li>
+				<li id="popup_tab"><span><a href="javascript:mcTabs.displayTab('popup_tab','popup_panel');" onmousedown="return false;">{$lang_advlink_popup_tab}</a></span></li>
+				<li id="events_tab"><span><a href="javascript:mcTabs.displayTab('events_tab','events_panel');" onmousedown="return false;">{$lang_advlink_events_tab}</a></span></li>
+				<li id="advanced_tab"><span><a href="javascript:mcTabs.displayTab('advanced_tab','advanced_panel');" onmousedown="return false;">{$lang_advlink_advanced_tab}</a></span></li>
+			</ul>
+		</div>
 
-    function init() {
-    // modified 2004-11-10 by Michael Keck (me at michaelkeck.de)
-    // supporting onclick event to open pop windows
-        var formObj = document.forms[0];
-        var arrOnClick = new Array(), arrWinFeatures = new Array();
-        var strOnClick = '', strDocReturn = '';
-        arrOnClick = tinyMCE.getWindowArg('onclick').split(';');
-        for (var i=0; i<arrOnClick.length; i++) {
-            if (arrOnClick[i].indexOf('window.open')!=-1) {
-                strOnClick = arrOnClick[i];
-                strOnClick = strOnClick.substring(12,strOnClick.length-1);
-                formObj.ispopup.checked=true;
-                break;
-            }
-        }
-        if (strOnClick!='') {
-            for (var i=0; i<arrOnClick.length; i++) {
-                if (arrOnClick[i].indexOf('return false')!=-1) {
-                    formObj.winreturn.checked=true;
-                    break;
-                }
-            }
-            // get the win features
-            arrWinFeatures = strOnClick.split(',');
-            if (arrWinFeatures[0]!='') // link , url
-                formObj.winurl.value = myRegexpReplace(arrWinFeatures[0],"'","","gi");
-            if (arrWinFeatures[1]!='') // link , url
-                formObj.winname.value = myRegexpReplace(arrWinFeatures[1],"'","","gi");
+		<div class="panel_wrapper">
+			<div id="general_panel" class="panel current">
+				<fieldset>
+					<legend>{$lang_advlink_general_props}</legend>
 
-            for (var i=2; i<arrWinFeatures.length; i++) { // special features
-                tmpFeature = myRegexpReplace(arrWinFeatures[i],"'","","gi");
-                valFeature = tmpFeature.split('=');
-                if (valFeature[0]!='left' && valFeature[0]!='top' && valFeature[0]!='width' && valFeature[0]!='height') {
-                    if (valFeature[1]=='yes')
-                        formObj.elements['win'+valFeature[0].toLowerCase()].checked=true;
-                    else
-                        formObj.elements['win'+valFeature[0].toLowerCase()].checked=false;
-                } else {
-                    switch (valFeature[0]) {
-                        case 'left':
-                        case 'top':
-                            if (valFeature[1].indexOf('screen.avail')!=-1)
-                                formObj.elements['win'+valFeature[0].toLowerCase()].value='c';
-                            else
-                                formObj.elements['win'+valFeature[0].toLowerCase()].value=valFeature[1];
-                        break;
-                        case 'width':
-                        case 'height':
-                            formObj.elements['win'+valFeature[0].toLowerCase()].value=valFeature[1];
-                        break;
-                    }
-                }
-            }
-        }
-        var myTarget = tinyMCE.getWindowArg('target');
-		myTarget = myTarget != "" ? myTarget : "_self";
-        formObj.target.value    = myTarget;
-        formObj.href.value      = tinyMCE.getWindowArg('href');
-        formObj.linktitle.value = tinyMCE.getWindowArg('title');
-        setMyTarget(myTarget);
-        window.focus();
-    }
+					<table border="0" cellpadding="4" cellspacing="0">
+						<tr>
+						  <td nowrap="nowrap"><label id="hreflabel" for="href">{$lang_insert_link_url}</label></td>
+						  <td><table border="0" cellspacing="0" cellpadding="0">
+								<tr>
+								  <td><input id="href" name="href" type="text" value="" onchange="selectByValue(this.form,'linklisthref',this.value);" /></td>
+								  <td id="hrefbrowsercontainer">&nbsp;</td>
+								</tr>
+							  </table></td>
+						</tr>
+						<tr id="linklisthrefrow">
+							<td class="column1"><label for="linklisthref">{$lang_link_list}</label></td>
+							<td colspan="2" id="linklisthrefcontainer">&nbsp;</td>
+						</tr>
+						<tr>
+							<td class="column1"><label for="anchorlist">{$lang_advlink_anchor_names}</label></td>
+							<td colspan="2" id="anchorlistcontainer">&nbsp;</td>
+						</tr>
+						<tr>
+							<td><label id="targetlistlabel" for="targetlist">{$lang_insert_link_target}</label></td>
+							<td id="targetlistcontainer">&nbsp;</td>
+						</tr>
+						<tr>
+							<td nowrap="nowrap"><label id="titlelabel" for="title">{$lang_theme_insert_link_titlefield}</label></td>
+							<td><input id="title" name="title" type="text" value="" /></td>
+						</tr>
+						<tr>
+							<td><label id="classlabel" for="classlist">{$lang_class_name}</label></td>
+							<td>
+								 <select id="classlist" name="classlist" onchange="changeClass();">
+									<option value="" selected>{$lang_not_set}</option>
+								 </select>
+							</td>
+						</tr>
+					</table>
+				</fieldset>
+			</div>
 
-    function insertLink() {
-        var formObj = document.forms[0];
-        if (window.opener) {
-            var href    = formObj.href.value;
-            var target  = formObj.target.value;
-            var title   = formObj.linktitle.value;
-            var onclick = '', features = '';
-            var winwith = '', winheight = '', winleft = '', wintop = '', winlocation = '', winmenubar = '', wintoolbar = '', winscrollbars = '', winresizable = '';
-            if (formObj.ispopup.checked==true) {
-            // building the onclick event
-                onclick = "window.open(";
-                // check if url given
-                if (formObj.winurl.value=='')
-                    onclick += "this.href,";
-                else
-                    onclick += "'" + formObj.winurl.value + "',";
+			<div id="popup_panel" class="panel">
+				<fieldset>
+					<legend>{$lang_advlink_popup_props}</legend>
 
-                onclick += "'" + formObj.winname.value + "'";
-                // get/set with and height
-                if (formObj.winwidth.value=='')
-                    formObj.winwidth.value = 640;
-                if (formObj.winheight.value=='')
-                    formObj.winheight.value = 480;
-                // win position
-                if (formObj.winleft.value=='c') {
-                    if (features!='') 
-                        features += ",";
-                    features += "left='+(screen.availWidth/2-" + (formObj.winwidth.value/2) + ")+'";
-                } else {
-                    if (formObj.winleft.value!='') {
-                        if (features!='') 
-                            features += ",";
-                        features += "left=" + formObj.winleft.value;
-                    }
-                }
-                if (formObj.wintop.value=='c') {
-                    if (features!='') 
-                        features += ",";
-                    features += "top='+(screen.availHeight/2-" + (formObj.winheight.value/2) + ")+'";
-                } else {
-                    if (formObj.wintop.value!='') {
-                        if (features!='') 
-                            features += ",";
-                        features += "top=" + formObj.wintop.value;
-                    }
-                }
-                if (features!='')
-                    features += ',';
-                features += "width=" + formObj.winwidth.value + ",height=" + formObj.winheight.value;
-                // some window features
-                if (formObj.winlocation.checked==true) {
-                    if (features!='')
-                        features += ',';
-                    features += "location=yes";
-                }
-                if (formObj.winmenubar.checked==true) {
-                    if (features!='')
-                        features += ',';
-                    features += "menubar=yes";
-                }
-                if (formObj.wintoolbar.checked==true) {
-                    if (features!='')
-                        features += ',';
-                    features += "toolbar=yes";
-                }
-                if (formObj.winstatus.checked==true) {
-                    if (features!='')
-                        features += ',';
-                    features += "status=yes";
-                }
-                if (formObj.winscrollbars.checked==true) {
-                    if (features!='')
-                        features += ',';
-                    features += "scrollbars=yes";
-                }
-                if (formObj.winresizable.checked==true) {
-                    if (features!='')
-                        features += ',';
-                    features += "resizable=yes";
-                }
-                if (features!='')
-                    onclick += ",'" + features + "'";
-                if (onclick!='')
-                    onclick += ");";
-                // return false means: open only the popup
-                if (formObj.winreturn.checked==true)
-                    onclick += "return false;";
-            }
-            if (target!='' && target!='please_insert_on_target_in_textfield') {
-                //alert (onclick);
-                window.opener.tinyMCE.insertLink(href, target, title, onclick);
-                top.close();
-            } else {
-                alert(tinyMCE.getLang('lang_insert_link_popup_missingtarget'));
-                formObj.framename.select();
-            }
-        }
-    }
+					<input type="checkbox" id="ispopup" name="ispopup" class="radio" onclick="setPopupControlsDisabled(!this.checked);buildOnClick();" />
+					<label id="ispopuplabel" for="ispopup">{$lang_advlink_popup}</label>
 
-    function setMyTarget(what) {
-        var formObj = document.forms[0];
-        formObj.target.value=what;
-        switch (what) {
-            case '':
-            case '_self':
-                document.getElementById('same').checked=true;
-                formObj.framename.value='_self';
-            break;
-            case '_blank':
-                document.getElementById('blank').checked=true; 
-                formObj.framename.value='';
-            break;
-            case '_parent':
-                document.getElementById('parent').checked=true;
-                formObj.framename.value='';
-            break;
-            case '_top':
-                document.getElementById('top').checked=true; 
-                formObj.framename.value='';
-            break;
-            default:
-                document.getElementById('named').checked=true;
-                if (what!='please_insert_on_target_in_textfield') { 
-                    formObj.framename.value=what;
-                }
-            break;
-        }
-    }
+					<table border="0" cellpadding="0" cellspacing="4">
+						<tr>
+							<td nowrap="nowrap"><label for="popupurl">{$lang_advlink_popup_url}</label>&nbsp;</td>
+							<td>
+								<table border="0" cellspacing="0" cellpadding="0">
+									<tr>
+										<td><input type="text" name="popupurl" id="popupurl" value="" onchange="buildOnClick();" /></td>
+										<td id="popupurlbrowsercontainer">&nbsp;</td>
+									</tr>
+								</table>
+							</td>
+						</tr>
+						<tr>
+							<td nowrap="nowrap"><label for="popupname">{$lang_advlink_popup_name}</label>&nbsp;</td>
+							<td><input type="text" name="popupname" id="popupname" value="" onchange="buildOnClick();" /></td>
+						</tr>
+						<tr>
+							<td nowrap="nowrap"><label>{$lang_advlink_popup_size}</label>&nbsp;</td>
+							<td nowrap="nowrap">
+								<input type="text" id="popupwidth" name="popupwidth" value="" onchange="buildOnClick();" /> x
+								<input type="text" id="popupheight" name="popupheight" value="" onchange="buildOnClick();" /> px
+							</td>
+						</tr>
+						<tr>
+							<td nowrap="nowrap" id="labelleft"><label>{$lang_advlink_popup_position}</label>&nbsp;</td>
+							<td nowrap="nowrap">
+								<input type="text" id="popupleft" name="popupleft" value="" onchange="buildOnClick();" /> /                                
+								<input type="text" id="popuptop" name="popuptop" value="" onchange="buildOnClick();" /> (c /c = center)
+							</td>
+						</tr>
+					</table>
 
-    function setPopupInputs() {
-        var formObj = document.forms[0];
-        var ids     = new Array('url','name','left','top','width','height','location','menubar','toolbar','status','scrollbars','resizable','return');
-        if (formObj.ispopup.checked==false) {
-            formObj.winurl.value    = "";
-            formObj.winname.value   = "";
-            formObj.winwidth.value  = "";
-            formObj.winheight.value = "";
-            formObj.winleft.value   = "";
-            formObj.wintop.value    = "";
-            formObj.winlocation.checked   = false;
-            formObj.winmenubar.checked    = false;
-            formObj.wintoolbar.checked    = false;
-            formObj.winscrollbars.checked = false;
-            formObj.winresizable.checked  = false;
-            formObj.winstatus.checked     = false;
-            formObj.winreturn.checked     = false;
-            for (var i=0; i<ids.length; i++) {
-                if (typeof(formObj.elements['win'+ids[i]])!='undefined')
-                    formObj.elements['win'+ids[i]].disabled = true;
-                if (document.getElementById('label'+ids[i]))
-                    document.getElementById('label'+ids[i]).style.color = "#666666";
-            }
-       } else {
-            formObj.winreturn.checked = true;
-            for (var i=0; i<ids.length; i++) {
-                if (typeof(formObj.elements['win'+ids[i]])!='undefined')
-                    formObj.elements['win'+ids[i]].disabled = false;
-                if (document.getElementById('label'+ids[i]))
-                    document.getElementById('label'+ids[i]).style.color = "#000000";
-            }
-       }
-    }
+					<fieldset>
+						<legend>{$lang_advlink_popup_opts}</legend>
 
-    function cancelAction() {
-        top.close();
-    }
+						<table border="0" cellpadding="0" cellspacing="4">
+							<tr>
+								<td><input type="checkbox" id="popuplocation" name="popuplocation" class="checkbox" onchange="buildOnClick();" /></td>
+								<td nowrap="nowrap"><label id="popuplocationlabel" for="popuplocation">{$lang_advlink_popup_location}</label></td>
+								<td><input type="checkbox" id="popupscrollbars" name="popupscrollbars" class="checkbox" onchange="buildOnClick();" /></td>
+								<td nowrap="nowrap"><label id="popupscrollbarslabel" for="popupscrollbars">{$lang_advlink_popup_scrollbars}</label></td>
+							</tr>
+							<tr>
+								<td><input type="checkbox" id="popupmenubar" name="popupmenubar" class="checkbox" onchange="buildOnClick();" /></td>
+								<td nowrap="nowrap"><label id="popupmenubarlabel" for="popupmenubar">{$lang_advlink_popup_menubar}</label></td>
+								<td><input type="checkbox" id="popupresizable" name="popupresizable" class="checkbox" onchange="buildOnClick();" /></td>
+								<td nowrap="nowrap"><label id="popupresizablelabel" for="popupresizable">{$lang_advlink_popup_resizable}</label></td>
+							</tr>
+							<tr>
+								<td><input type="checkbox" id="popuptoolbar" name="popuptoolbar" class="checkbox" onchange="buildOnClick();" /></td>
+								<td nowrap="nowrap"><label id="popuptoolbarlabel" for="popuptoolbar">{$lang_advlink_popup_toolbar}</label></td>
+								<td><input type="checkbox" id="popupdependent" name="popupdependent" class="checkbox" onchange="buildOnClick();" /></td>
+								<td nowrap="nowrap"><label id="popupdependentlabel" for="popupdependent">{$lang_advlink_popup_dependent}</label></td>
+							</tr>
+							<tr>
+								<td><input type="checkbox" id="popupstatus" name="popupstatus" class="checkbox" onchange="buildOnClick();" /></td>
+								<td nowrap="nowrap"><label id="popupstatuslabel" for="popupstatus">{$lang_advlink_popup_statusbar}</label></td>
+								<td><input type="checkbox" id="popupreturn" name="popupreturn" class="checkbox" onchange="buildOnClick();" checked="checked" /></td>
+								<td nowrap="nowrap"><label id="popupreturnlabel" for="popupreturn">{$lang_advlink_popup_return}</label></td>
+							</tr>
+						</table>
+					</fieldset>
+				</fieldset>
+			</div>
 
-//-->
-</script>
-<style type="text/css">
-<!--
-   input.radio {
-        border: 1px none #000000;
-        background-color: transparent;
-        vertical-align: middle;
-   }
--->
-</style>
-</head>
-<body onload="init();">
-    <form onsubmit="insertLink();return false;">
-        <table border="0" cellpadding="0" cellspacing="0" width="100%">
-            <tr>
-                <td align="center" valign="middle"><table border="0" cellpadding="4" cellspacing="0">
-                    <tr>
-                        <td colspan="2" class="title">{$lang_insert_link_title}</td>
-                    </tr>
-                    <tr>
-                        <td align="right">{$lang_insert_link_url}:</td>
-                        <td><input name="href" type="text" id="href" value="" style="width: 300px;" /></td>
-                    </tr>
-                    <tr>
-                        <td align="right">{$lang_theme_insert_link_titlefield}:</td>
-                        <td><input name="linktitle" type="text" id="linktitle" value="" style="width: 300px;" /></td>
-                    </tr>
-                    <tr>
-                        <td align="right" valign="top">{$lang_insert_link_target}:<input type="hidden" name="target" id="target" value="" /></td>
-                        <td>
-                            <table border="0" cellpadding="0" cellspacing="0">
-                                <tr>
-                                    <td><input type="radio" id="same" name="linktarget" class="radio" onclick="setMyTarget('_self');" checked="checked" /></td>
-                                    <td nowrap="nowrap"><label for="same">_self</label></td>
-                                    <td nowrap="nowrap">&nbsp;({$lang_insert_link_target_same})</td>
-                                </tr>
-                                <tr>
-                                    <td><input type="radio" id="parent" name="linktarget" class="radio" onclick="setMyTarget('_parent');" checked="checked" /></td>
-                                    <td nowrap="nowrap"><label for="parent">_parent</label></td>
-                                    <td nowrap="nowrap">&nbsp;({$lang_insert_link_target_parent})</td>
-                                </tr>
-                                <tr>
-                                    <td><input type="radio" id="top" name="linktarget" class="radio" onclick="setMyTarget('_top');" checked="checked" /></td>
-                                    <td nowrap="nowrap"><label for="top">_top</label></td>
-                                    <td nowrap="nowrap">&nbsp;({$lang_insert_link_target_top})</td>
-                                </tr>
-                                <tr>
-                                    <td><input type="radio" id="blank" name="linktarget" class="radio" onclick="setMyTarget('_blank');" checked="checked" /></td>
-                                    <td nowrap="nowrap"><label for="blank">_blank</label></td>
-                                    <td nowrap="nowrap">&nbsp;({$lang_insert_link_target_blank})</td>
-                                </tr>
-                            </table>
-                            <table border="0" cellpadding="0" cellspacing="0">
-                                <tr>
-                                    <td><input type="radio" id="named" name="linktarget" class="radio" onclick="setMyTarget('please_insert_on_target_in_textfield');" /></td>
-                                    <td nowrap="nowrap"><label for="named">{$lang_insert_link_target_named}:</label>&nbsp;</td>
-                                    <td nowrap="nowrap"><input type="text" name="framename" value="" id="framename" style="width: 120px; vertical-align: middle;" onblur="if(this.value!=''){ setMyTarget(this.value); }" onfocus="if(this.value!=''){ setMyTarget(this.value); }" maxlength="50" /></td>
-                                </tr>
-                            </table>                            
-                        </td>
-                    </tr>
-                    <tr>
-                        <td align="right" valign="top"><input type="checkbox" id="ispopup" name="ispopup" class="radio" onclick="setPopupInputs();" /><label for="ispopup"><b>{$lang_insert_link_popup}:</b></label></td>
-                        <td>
-                            <table border="0" cellpadding="0" cellspacing="0">
-                                <tr>
-                                    <td align="right" nowrap="nowrap">{$lang_insert_link_popup_url}:&nbsp;</td>
-                                    <td id="labelurl"><input type="text" name="winurl" id="winurl" value="" style="width: 200px;" /></td>
-                                </tr>
-                                <tr>
-                                    <td align="right" nowrap="nowrap" id="labelname">{$lang_insert_link_popup_name}:&nbsp;</td>
-                                    <td><input type="text" name="winname" id="winname" value="" style="width: 200px;" /></td>
-                                </tr>
-                                <tr>
-                                    <td align="right" nowrap="nowrap" id="labelwidth">{$lang_insert_link_popup_size}:&nbsp;</td>
-                                    <td nowrap="nowrap" id="labelheight">
-                                        <input type="text" name="winwidth" id="winwidth" value="" style="width: 30px; vertical-align: middle; text-align: center;" /> x
-                                        <input type="text" name="winheight" id="winheight" value="" style="width: 30px; vertical-align: middle; text-align: center;" /> px
-                                    </td>
-                                </tr>
-                                <tr>
-                                    <td align="right" nowrap="nowrap" id="labelleft">{$lang_insert_link_popup_position}:&nbsp;</td>
-                                    <td nowrap="nowrap" id="labeltop">
-                                        <input type="text" name="winleft" id="winleft" value="" style="width: 30px; vertical-align: middle; text-align: center;" /> /                                
-                                        <input type="text" name="wintop" id="wintop" value="" style="width: 30px; vertical-align: middle; text-align: center;" /> (c /c = center)
-                                    </td>
-                                </tr>
-                            </table>
-                            <table border="0" cellpadding="0" cellspacing="0">
-                                <tr>
-                                    <td align="right"><input type="checkbox" id="winlocation" name="winloaction" class="radio" /></td>
-                                    <td nowrap="nowrap" id="labellocation"><label for="winloaction">{$lang_insert_link_popup_location}</label></td>
-                                    <td nowrap="nowrap">&nbsp;&nbsp;</td>
-                                    <td align="right"><input type="checkbox" id="winscrollbars" name="winscrollbars" class="radio" /></td>
-                                    <td nowrap="nowrap" id="labelscrollbars"><label for="winscrollbars">{$lang_insert_link_popup_scrollbars}</label></td>
-                                </tr>
-                                <tr>
-                                    <td align="right"><input type="checkbox" id="winmenubar" name="winmenubar" class="radio" /></td>
-                                    <td nowrap="nowrap" id="labelmenubar"><label for="winmenubar">{$lang_insert_link_popup_menubar}</label></td>
-                                    <td nowrap="nowrap">&nbsp;</td>
-                                    <td align="right"><input type="checkbox" id="winresizable" name="winresizable" class="radio" /></td>
-                                    <td nowrap="nowrap" id="labelresizable"><label for="winresizable">{$lang_insert_link_popup_resizable}</label></td>
-                                </tr>
-                                <tr>
-                                    <td align="right"><input type="checkbox" id="wintoolbar" name="wintoolbar" class="radio" /></td>
-                                    <td nowrap="nowrap" id="labeltoolbar"><label for="wintoolbar">{$lang_insert_link_popup_toolbar}</label></td>
-                                    <td nowrap="nowrap">&nbsp;</td>
-                                    <td nowrap="nowrap">&nbsp;</td>
-                                    <td nowrap="nowrap">&nbsp;</td>
-                                </tr>
-                                <tr>
-                                    <td align="right"><input type="checkbox" id="winstatus" name="winstatus" class="radio" /></td>
-                                    <td nowrap="nowrap" id="labelstatus"><label for="winstatus">{$lang_insert_link_popup_statusbar}</label></td>
-                                    <td nowrap="nowrap">&nbsp;</td>
-                                    <td align="right"><input type="checkbox" id="winreturn" name="winreturn" class="radio" checked="checked" /></td>
-                                    <td nowrap="nowrap" id="labelreturn"><label for="winreturn">{$lang_insert_link_popup_return}</label></td>
-                                </tr>
-                            </table>                           
-                        </td>
-                    </tr>
-                    <tr>
-                        <td><input type="button" name="insert" value="{$lang_insert}" onclick="insertLink();" id="insert" /></td>
-                        <td align="right"><input type="button" name="cancel" value="{$lang_cancel}" onclick="cancelAction();" id="cancel" /></td>
-                    </tr>
-                </table></td>
-            </tr>
-        </table>
+			<div id="advanced_panel" class="panel">
+			<fieldset>
+					<legend>{$lang_advlink_advanced_props}</legend>
+
+					<table border="0" cellpadding="0" cellspacing="4">
+						<tr>
+							<td class="column1"><label id="idlabel" for="id">{$lang_advlink_id}</label></td> 
+							<td><input id="id" name="id" type="text" value="" /></td> 
+						</tr>
+
+						<tr>
+							<td><label id="stylelabel" for="style">{$lang_advlink_style}</label></td>
+							<td><input type="text" id="style" name="style" value="" /></td>
+						</tr>
+
+						<tr>
+							<td><label id="classeslabel" for="classes">{$lang_advlink_classes}</label></td>
+							<td><input type="text" id="classes" name="classes" value="" onchange="selectByValue(this.form,'classlist',this.value,true);" /></td>
+						</tr>
+
+						<tr>
+							<td><label id="targetlabel" for="target">{$lang_advlink_target_name}</label></td>
+							<td><input type="text" id="target" name="target" value="" onchange="selectByValue(this.form,'targetlist',this.value,true);" /></td>
+						</tr>
+
+						<tr>
+							<td class="column1"><label id="dirlabel" for="dir">{$lang_advlink_langdir}</label></td> 
+							<td>
+								<select id="dir" name="dir"> 
+										<option value="">{$lang_not_set}</option> 
+										<option value="ltr">{$lang_advlink_ltr}</option> 
+										<option value="rtl">{$lang_advlink_rtl}</option> 
+								</select>
+							</td> 
+						</tr>
+
+						<tr>
+							<td><label id="hreflanglabel" for="hreflang">{$lang_advlink_target_langcode}</label></td>
+							<td><input type="text" id="hreflang" name="hreflang" value="" /></td>
+						</tr>
+
+						<tr>
+							<td class="column1"><label id="langlabel" for="lang">{$lang_advlink_langcode}</label></td> 
+							<td>
+								<input id="lang" name="lang" type="text" value="" />
+							</td> 
+						</tr>
+
+						<tr>
+							<td><label id="charsetlabel" for="charset">{$lang_advlink_encoding}</label></td>
+							<td><input type="text" id="charset" name="charset" value="" /></td>
+						</tr>
+
+						<tr>
+							<td><label id="typelabel" for="type">{$lang_advlink_mime}</label></td>
+							<td><input type="text" id="type" name="type" value="" /></td>
+						</tr>
+
+						<tr>
+							<td><label id="rellabel" for="rel">{$lang_advlink_rel}</label></td>
+							<td><select id="rel" name="rel"> 
+									<option value="">{$lang_not_set}</option> 
+									<option value="lightbox">Lightbox</option> 
+									<option value="alternate">Alternate</option> 
+									<option value="designates">Designates</option> 
+									<option value="stylesheet">Stylesheet</option> 
+									<option value="start">Start</option> 
+									<option value="next">Next</option> 
+									<option value="prev">Prev</option> 
+									<option value="contents">Contents</option> 
+									<option value="index">Index</option> 
+									<option value="glossary">Glossary</option> 
+									<option value="copyright">Copyright</option> 
+									<option value="chapter">Chapter</option> 
+									<option value="subsection">Subsection</option> 
+									<option value="appendix">Appendix</option> 
+									<option value="help">Help</option> 
+									<option value="bookmark">Bookmark</option>
+									<option value="nofollow">No Follow</option>
+									<option value="tag">Tag</option>
+								</select> 
+							</td>
+						</tr>
+
+						<tr>
+							<td><label id="revlabel" for="rev">{$lang_advlink_rev}</label></td>
+							<td><select id="rev" name="rev"> 
+									<option value="">{$lang_not_set}</option> 
+									<option value="alternate">Alternate</option> 
+									<option value="designates">Designates</option> 
+									<option value="stylesheet">Stylesheet</option> 
+									<option value="start">Start</option> 
+									<option value="next">Next</option> 
+									<option value="prev">Prev</option> 
+									<option value="contents">Contents</option> 
+									<option value="index">Index</option> 
+									<option value="glossary">Glossary</option> 
+									<option value="copyright">Copyright</option> 
+									<option value="chapter">Chapter</option> 
+									<option value="subsection">Subsection</option> 
+									<option value="appendix">Appendix</option> 
+									<option value="help">Help</option> 
+									<option value="bookmark">Bookmark</option> 
+								</select> 
+							</td>
+						</tr>
+
+						<tr>
+							<td><label id="tabindexlabel" for="tabindex">{$lang_advlink_tabindex}</label></td>
+							<td><input type="text" id="tabindex" name="tabindex" value="" /></td>
+						</tr>
+
+						<tr>
+							<td><label id="accesskeylabel" for="accesskey">{$lang_advlink_accesskey}</label></td>
+							<td><input type="text" id="accesskey" name="accesskey" value="" /></td>
+						</tr>
+					</table>
+				</fieldset>
+			</div>
+
+			<div id="events_panel" class="panel">
+			<fieldset>
+					<legend>{$lang_advlink_event_props}</legend>
+
+					<table border="0" cellpadding="0" cellspacing="4">
+						<tr>
+							<td class="column1"><label for="onfocus">onfocus</label></td> 
+							<td><input id="onfocus" name="onfocus" type="text" value="" /></td> 
+						</tr>
+
+						<tr>
+							<td class="column1"><label for="onblur">onblur</label></td> 
+							<td><input id="onblur" name="onblur" type="text" value="" /></td> 
+						</tr>
+
+						<tr>
+							<td class="column1"><label for="onclick">onclick</label></td> 
+							<td><input id="onclick" name="onclick" type="text" value="" /></td> 
+						</tr>
+
+						<tr>
+							<td class="column1"><label for="ondblclick">ondblclick</label></td> 
+							<td><input id="ondblclick" name="ondblclick" type="text" value="" /></td> 
+						</tr>
+
+						<tr>
+							<td class="column1"><label for="onmousedown">onmousedown</label></td> 
+							<td><input id="onmousedown" name="onmousedown" type="text" value="" /></td> 
+						</tr>
+
+						<tr>
+							<td class="column1"><label for="onmouseup">onmouseup</label></td> 
+							<td><input id="onmouseup" name="onmouseup" type="text" value="" /></td> 
+						</tr>
+
+						<tr>
+							<td class="column1"><label for="onmouseover">onmouseover</label></td> 
+							<td><input id="onmouseover" name="onmouseover" type="text" value="" /></td> 
+						</tr>
+
+						<tr>
+							<td class="column1"><label for="onmousemove">onmousemove</label></td> 
+							<td><input id="onmousemove" name="onmousemove" type="text" value="" /></td> 
+						</tr>
+
+						<tr>
+							<td class="column1"><label for="onmouseout">onmouseout</label></td> 
+							<td><input id="onmouseout" name="onmouseout" type="text" value="" /></td> 
+						</tr>
+
+						<tr>
+							<td class="column1"><label for="onkeypress">onkeypress</label></td> 
+							<td><input id="onkeypress" name="onkeypress" type="text" value="" /></td> 
+						</tr>
+
+						<tr>
+							<td class="column1"><label for="onkeydown">onkeydown</label></td> 
+							<td><input id="onkeydown" name="onkeydown" type="text" value="" /></td> 
+						</tr>
+
+						<tr>
+							<td class="column1"><label for="onkeyup">onkeyup</label></td> 
+							<td><input id="onkeyup" name="onkeyup" type="text" value="" /></td> 
+						</tr>
+					</table>
+				</fieldset>
+			</div>
+		</div>
+
+		<div class="mceActionPanel">
+			<div style="float: left">
+				<input type="button" id="insert" name="insert" value="{$lang_insert}" onclick="insertAction();" />
+			</div>
+
+			<div style="float: right">
+				<input type="button" id="cancel" name="cancel" value="{$lang_cancel}" onclick="tinyMCEPopup.close();" />
+			</div>
+		</div>
     </form>
 </body>
 </html>

Modified: labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/plugins/advlink/readme.txt
===================================================================
--- labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/plugins/advlink/readme.txt	2007-01-11 22:09:16 UTC (rev 8831)
+++ labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/plugins/advlink/readme.txt	2007-01-11 22:10:56 UTC (rev 8832)
@@ -1,19 +1 @@
- Advlink plugin for TinyMCE
------------------------------
-
-About:
-  This is a more advanced link dialog mostly based on code contributed by Michael Keck.
-  This one supports popup windows and targets.
-
-Installation instructions:
-  * Copy the advlink directory to the plugins directory of TinyMCE (/jscripts/tiny_mce/plugins).
-  * Add plugin to TinyMCE plugin option list example: plugins : "advlink".
-  * Add this "img[class|src|border=0|alt|title|hspace|vspace|width|height|align|onmouseover|onmouseout]" to extended_valid_elements option.
-
-Initialization example:
-  tinyMCE.init({
-    theme : "advanced",
-    mode : "textareas",
-    plugins : "advlink",
-    extended_valid_elements : "img[class|src|border=0|alt|title|hspace|vspace|width|height|align|onmouseover|onmouseout]"
-  });
+Check the TinyMCE documentation for details on this plugin.

Added: labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/plugins/autosave/editor_plugin.js
===================================================================
--- labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/plugins/autosave/editor_plugin.js	2007-01-11 22:09:16 UTC (rev 8831)
+++ labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/plugins/autosave/editor_plugin.js	2007-01-11 22:10:56 UTC (rev 8832)
@@ -0,0 +1 @@
+tinyMCE.importPluginLanguagePack('autosave');var TinyMCE_AutoSavePlugin={getInfo:function(){return{longname:'Auto save',author:'Moxiecode Systems AB',authorurl:'http://tinymce.moxiecode.com',infourl:'http://tinymce.moxiecode.com/tinymce/docs/plugin_autosave.html',version:tinyMCE.majorVersion+"."+tinyMCE.minorVersion}},_beforeUnloadHandler:function(){var n,inst,anyDirty=false,msg=tinyMCE.getLang("lang_autosave_unload_msg");if(tinyMCE.getParam("fullscreen_is_enabled"))return;for(n in tinyMCE.instances){inst=tinyMCE.instances[n];if(!tinyMCE.isInstance(inst))continue;if(inst.isDirty())return msg}return}};window.onbeforeunload=TinyMCE_AutoSavePlugin._beforeUnloadHandler;tinyMCE.addPlugin("autosave",TinyMCE_AutoSavePlugin);
\ No newline at end of file

Added: labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/plugins/autosave/editor_plugin_src.js
===================================================================
--- labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/plugins/autosave/editor_plugin_src.js	2007-01-11 22:09:16 UTC (rev 8831)
+++ labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/plugins/autosave/editor_plugin_src.js	2007-01-11 22:10:56 UTC (rev 8832)
@@ -0,0 +1,46 @@
+/**
+ * $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('autosave');
+
+var TinyMCE_AutoSavePlugin = {
+	getInfo : function() {
+		return {
+			longname : 'Auto save',
+			author : 'Moxiecode Systems AB',
+			authorurl : 'http://tinymce.moxiecode.com',
+			infourl : 'http://tinymce.moxiecode.com/tinymce/docs/plugin_autosave.html',
+			version : tinyMCE.majorVersion + "." + tinyMCE.minorVersion
+		};
+	},
+
+	// Private plugin internal methods
+
+	_beforeUnloadHandler : function() {
+		var n, inst, anyDirty = false, msg = tinyMCE.getLang("lang_autosave_unload_msg");
+
+		if (tinyMCE.getParam("fullscreen_is_enabled"))
+			return;
+
+		for (n in tinyMCE.instances) {
+			inst = tinyMCE.instances[n];
+
+			if (!tinyMCE.isInstance(inst))
+				continue;
+
+			if (inst.isDirty())
+				return msg;
+		}
+
+		return;
+	}
+};
+
+window.onbeforeunload = TinyMCE_AutoSavePlugin._beforeUnloadHandler;
+
+tinyMCE.addPlugin("autosave", TinyMCE_AutoSavePlugin);

Added: labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/plugins/autosave/langs/en.js
===================================================================
--- labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/plugins/autosave/langs/en.js	2007-01-11 22:09:16 UTC (rev 8831)
+++ labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/plugins/autosave/langs/en.js	2007-01-11 22:10:56 UTC (rev 8832)
@@ -0,0 +1,5 @@
+// EN lang variables
+
+tinyMCE.addToLang('',{
+autosave_unload_msg : 'The changes you made will be lost if you navigate away from this page.'
+});

Added: labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/plugins/autosave/readme.txt
===================================================================
--- labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/plugins/autosave/readme.txt	2007-01-11 22:09:16 UTC (rev 8831)
+++ labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/plugins/autosave/readme.txt	2007-01-11 22:10:56 UTC (rev 8832)
@@ -0,0 +1 @@
+Check the TinyMCE documentation for details on this plugin.

Added: labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/plugins/cleanup/editor_plugin.js
===================================================================

Added: labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/plugins/cleanup/editor_plugin_src.js
===================================================================
--- labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/plugins/cleanup/editor_plugin_src.js	2007-01-11 22:09:16 UTC (rev 8831)
+++ labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/plugins/cleanup/editor_plugin_src.js	2007-01-11 22:10:56 UTC (rev 8832)
@@ -0,0 +1,10 @@
+/**
+ * $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.
+ *
+ * @author Moxiecode
+ * @copyright Copyright © 2004-2006, Moxiecode Systems AB, All rights reserved.
+ */
+
+/* Dummy file since cleanup is now moved to core */

Added: labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/plugins/cleanup/readme.txt
===================================================================
--- labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/plugins/cleanup/readme.txt	2007-01-11 22:09:16 UTC (rev 8831)
+++ labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/plugins/cleanup/readme.txt	2007-01-11 22:10:56 UTC (rev 8832)
@@ -0,0 +1 @@
+Dummy plugin since cleanup is now moved into core.

Added: labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/plugins/contextmenu/css/contextmenu.css
===================================================================
--- labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/plugins/contextmenu/css/contextmenu.css	2007-01-11 22:09:16 UTC (rev 8831)
+++ labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/plugins/contextmenu/css/contextmenu.css	2007-01-11 22:10:56 UTC (rev 8832)
@@ -0,0 +1,74 @@
+.contextMenuIEPopup {
+	padding: 0;
+	margin: 0;
+	border: 0;
+	overflow: hidden;
+}
+
+.contextMenu {
+	position: absolute;
+	cursor: default;
+	z-index: 1000;
+	border: 1px solid #D4D0C8;
+	background-color: #FFFFFF;
+}
+
+.contextMenuItem, .contextMenuItemOver {
+}
+
+.contextMenuSeparator {
+	width: 100%;
+	background-color: #D4D0C8;
+	border: 0;
+}
+
+.contextMenuImage, .contextMenuItemDisabled {
+	border: 0;
+}
+
+.contextMenuIcon {
+	background-color: #F0F0EE;
+}
+
+.contextMenuItemOver .contextMenuIcon {
+	background-color: #B6BDD2;
+}
+
+.contextMenuIcon {
+	background-color: #F0F0EE;
+}
+
+.contextMenuItemDisabled img {
+	filter:progid:DXImageTransform.Microsoft.Alpha(opacity=30);
+	-moz-opacity:0.3;
+	opacity: 0.3;
+}
+
+.contextMenuText {
+	font-family: Tahoma, Verdana, Arial, Helvetica;
+	font-size: 11px;
+	line-height: 20px;
+}
+
+.contextMenuItemDisabled {
+	color: #AAAAAA;
+}
+
+.contextMenuText a {
+	display: block;
+	line-height: 20px;
+	width: 100%;
+	text-decoration: none;
+	color: black;
+	font-weight: normal;
+	margin: 0;
+	padding: 0;
+}
+
+.contextMenuText a:hover {
+	background-color: #B6BDD2;
+	text-decoration: none !important;
+	font-weight: normal;
+	margin: 0;
+	padding: 0;
+}

Added: labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/plugins/contextmenu/editor_plugin.js
===================================================================
--- labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/plugins/contextmenu/editor_plugin.js	2007-01-11 22:09:16 UTC (rev 8831)
+++ labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/plugins/contextmenu/editor_plugin.js	2007-01-11 22:10:56 UTC (rev 8832)
@@ -0,0 +1 @@
+if(!tinyMCE.settings['contextmenu_skip_plugin_css']){tinyMCE.loadCSS(tinyMCE.baseURL+"/plugins/contextmenu/css/contextmenu.css")}var TinyMCE_ContextMenuPlugin={_contextMenu:null,getInfo:function(){return{longname:'Context menus',author:'Moxiecode Systems AB',authorurl:'http://tinymce.moxiecode.com',infourl:'http://tinymce.moxiecode.com/tinymce/docs/plugin_contextmenu.html',version:tinyMCE.majorVersion+"."+tinyMCE.minorVersion}},initInstance:function(inst){if(tinyMCE.isMSIE5_0&&tinyMCE.isOpera)return;TinyMCE_ContextMenuPlugin._contextMenu=new TinyMCE_ContextMenu({commandhandler:"TinyMCE_ContextMenuPlugin._commandHandler",spacer_image:tinyMCE.baseURL+"/plugins/contextmenu/images/spacer.gif"});tinyMCE.addEvent(inst.getDoc(),"click",TinyMCE_ContextMenuPlugin._hideContextMenu);tinyMCE.addEvent(inst.getDoc(),"keypress",TinyMCE_ContextMenuPlugin._hideContextMenu);tinyMCE.addEvent(inst.getDoc(),"keydown",TinyMCE_ContextMenuPlugin._hideContextMenu);tinyMCE.addEvent(document,"click",!
 TinyMCE_ContextMenuPlugin._hideContextMenu);tinyMCE.addEvent(document,"keypress",TinyMCE_ContextMenuPlugin._hideContextMenu);tinyMCE.addEvent(document,"keydown",TinyMCE_ContextMenuPlugin._hideContextMenu);if(tinyMCE.isGecko){tinyMCE.addEvent(inst.getDoc(),"contextmenu",function(e){TinyMCE_ContextMenuPlugin._showContextMenu(tinyMCE.isMSIE?inst.contentWindow.event:e,inst)})}else tinyMCE.addEvent(inst.getDoc(),"contextmenu",TinyMCE_ContextMenuPlugin._onContextMenu)},_onContextMenu:function(e){var elm=tinyMCE.isMSIE?e.srcElement:e.target;var targetInst,body;if((body=tinyMCE.getParentElement(elm,"body"))!=null){for(var n in tinyMCE.instances){var inst=tinyMCE.instances[n];if(!tinyMCE.isInstance(inst))continue;if(body==inst.getBody()){targetInst=inst;break}}return TinyMCE_ContextMenuPlugin._showContextMenu(tinyMCE.isMSIE?targetInst.contentWindow.event:e,targetInst)}},_showContextMenu:function(e,inst){function getAttrib(elm,name){return elm.getAttribute(name)?elm.getAttribute(name!
 ):""}var x,y,elm,contextMenu;var pos=tinyMCE.getAbsPosition(inst.ifram
eElement);x=tinyMCE.isMSIE?e.screenX:pos.absLeft+(e.pageX-inst.getBody().scrollLeft);y=tinyMCE.isMSIE?e.screenY:pos.absTop+(e.pageY-inst.getBody().scrollTop);elm=tinyMCE.isMSIE?e.srcElement:e.target;contextMenu=this._contextMenu;contextMenu.inst=inst;window.setTimeout(function(){var theme=tinyMCE.getParam("theme");contextMenu.clearAll();var sel=inst.selection.getSelectedText().length!=0||elm.nodeName=="IMG";contextMenu.addItem(tinyMCE.baseURL+"/themes/"+theme+"/images/cut.gif","$lang_cut_desc","Cut","",!sel);contextMenu.addItem(tinyMCE.baseURL+"/themes/"+theme+"/images/copy.gif","$lang_copy_desc","Copy","",!sel);contextMenu.addItem(tinyMCE.baseURL+"/themes/"+theme+"/images/paste.gif","$lang_paste_desc","Paste","",false);if(sel||(elm?(elm.nodeName=='A')||(elm.nodeName=='IMG'):false)){contextMenu.addSeparator();contextMenu.addItem(tinyMCE.baseURL+"/themes/advanced/images/link.gif","$lang_link_desc",inst.hasPlugin("advlink")?"mceAdvLink":"mceLink");contextMenu.addItem(tinyMCE.b!
 aseURL+"/themes/advanced/images/unlink.gif","$lang_unlink_desc","unlink","",(elm?(elm.nodeName!='A')&&(elm.nodeName!='IMG'):true))}elm=tinyMCE.getParentElement(elm,"img,table,td"+(inst.hasPlugin("advhr")?',hr':''));if(elm){switch(elm.nodeName){case"IMG":contextMenu.addSeparator();if(tinyMCE.hasPlugin('flash')&&tinyMCE.getAttrib(elm,'class').indexOf('mceItemFlash')!=-1)contextMenu.addItem(tinyMCE.baseURL+"/plugins/flash/images/flash.gif","$lang_flash_props","mceFlash");else if(tinyMCE.hasPlugin('media')&&/mceItem(Flash|ShockWave|WindowsMedia|QuickTime|RealMedia)/.test(tinyMCE.getAttrib(elm,'class')))contextMenu.addItem(tinyMCE.baseURL+"/plugins/flash/images/flash.gif","$lang_media_title","mceMedia");else contextMenu.addItem(tinyMCE.baseURL+"/themes/"+theme+"/images/image.gif","$lang_image_props_desc",inst.hasPlugin("advimage")?"mceAdvImage":"mceImage");break;case"HR":contextMenu.addSeparator();contextMenu.addItem(tinyMCE.baseURL+"/plugins/advhr/images/advhr.gif","$lang_inser!
 t_advhr_desc","mceAdvancedHr");break;case"TABLE":case"TD":if(inst.hasP
lugin("table")){var colspan=(elm.nodeName=="TABLE")?"":getAttrib(elm,"colspan");var rowspan=(elm.nodeName=="TABLE")?"":getAttrib(elm,"rowspan");colspan=colspan==""?"1":colspan;rowspan=rowspan==""?"1":rowspan;contextMenu.addSeparator();contextMenu.addItem(tinyMCE.baseURL+"/themes/"+theme+"/images/cut.gif","$lang_table_cut_row_desc","mceTableCutRow");contextMenu.addItem(tinyMCE.baseURL+"/themes/"+theme+"/images/copy.gif","$lang_table_copy_row_desc","mceTableCopyRow");contextMenu.addItem(tinyMCE.baseURL+"/themes/"+theme+"/images/paste.gif","$lang_table_paste_row_before_desc","mceTablePasteRowBefore","",inst.tableRowClipboard==null);contextMenu.addItem(tinyMCE.baseURL+"/themes/"+theme+"/images/paste.gif","$lang_table_paste_row_after_desc","mceTablePasteRowAfter","",inst.tableRowClipboard==null);contextMenu.addSeparator();contextMenu.addItem(tinyMCE.baseURL+"/plugins/table/images/table.gif","$lang_table_desc","mceInsertTable","insert");contextMenu.addItem(tinyMCE.baseURL+"/plugin!
 s/table/images/table.gif","$lang_table_props_desc","mceInsertTable");contextMenu.addItem(tinyMCE.baseURL+"/plugins/table/images/table_cell_props.gif","$lang_table_cell_desc","mceTableCellProps");contextMenu.addItem(tinyMCE.baseURL+"/plugins/table/images/table_delete.gif","$lang_table_del","mceTableDelete");contextMenu.addSeparator();contextMenu.addItem(tinyMCE.baseURL+"/plugins/table/images/table_row_props.gif","$lang_table_row_desc","mceTableRowProps");contextMenu.addItem(tinyMCE.baseURL+"/plugins/table/images/table_insert_row_before.gif","$lang_table_row_before_desc","mceTableInsertRowBefore");contextMenu.addItem(tinyMCE.baseURL+"/plugins/table/images/table_insert_row_after.gif","$lang_table_row_after_desc","mceTableInsertRowAfter");contextMenu.addItem(tinyMCE.baseURL+"/plugins/table/images/table_delete_row.gif","$lang_table_delete_row_desc","mceTableDeleteRow");contextMenu.addSeparator();contextMenu.addItem(tinyMCE.baseURL+"/plugins/table/images/table_insert_col_before.g!
 if","$lang_table_col_before_desc","mceTableInsertColBefore");contextMe
nu.addItem(tinyMCE.baseURL+"/plugins/table/images/table_insert_col_after.gif","$lang_table_col_after_desc","mceTableInsertColAfter");contextMenu.addItem(tinyMCE.baseURL+"/plugins/table/images/table_delete_col.gif","$lang_table_delete_col_desc","mceTableDeleteCol");contextMenu.addSeparator();contextMenu.addItem(tinyMCE.baseURL+"/plugins/table/images/table_split_cells.gif","$lang_table_split_cells_desc","mceTableSplitCells","",(colspan=="1"&&rowspan=="1"));contextMenu.addItem(tinyMCE.baseURL+"/plugins/table/images/table_merge_cells.gif","$lang_table_merge_cells_desc","mceTableMergeCells","",false)}break}}else{if(inst.hasPlugin("table")){contextMenu.addSeparator();contextMenu.addItem(tinyMCE.baseURL+"/plugins/table/images/table.gif","$lang_table_desc","mceInsertTable","insert")}}contextMenu.show(x,y)},10);tinyMCE.cancelEvent(e);return false},_hideContextMenu:function(){if(TinyMCE_ContextMenuPlugin._contextMenu)TinyMCE_ContextMenuPlugin._contextMenu.hide()},_commandHandler:funct!
 ion(command,value){var cm=TinyMCE_ContextMenuPlugin._contextMenu;cm.hide();var ui=false;if(command=="mceInsertTable"||command=="mceTableCellProps"||command=="mceTableRowProps"||command=="mceTableMergeCells")ui=true;if(command=="Paste")value=null;if(tinyMCE.getParam("dialog_type")=="modal"&&tinyMCE.isMSIE){window.setTimeout(function(){cm.inst.execCommand(command,ui,value)},100)}else cm.inst.execCommand(command,ui,value)}};tinyMCE.addPlugin("contextmenu",TinyMCE_ContextMenuPlugin);function TinyMCE_ContextMenu(settings){var doc,self=this;function defParam(key,def_val){settings[key]=typeof(settings[key])!="undefined"?settings[key]:def_val}this.isMSIE=(navigator.appName=="Microsoft Internet Explorer");this.contextMenuDiv=document.createElement("div");this.contextMenuDiv.className="contextMenu";this.contextMenuDiv.setAttribute("class","contextMenu");this.contextMenuDiv.style.display="none";this.contextMenuDiv.style.position='absolute';this.contextMenuDiv.style.zindex=1000;this.co!
 ntextMenuDiv.style.left='0';this.contextMenuDiv.style.top='0';this.con
textMenuDiv.unselectable="on";document.body.appendChild(this.contextMenuDiv);defParam("commandhandler","");defParam("spacer_image","images/spacer.gif");this.items=new Array();this.settings=settings;this.html="";if(tinyMCE.isMSIE&&!tinyMCE.isMSIE5_0&&!tinyMCE.isOpera){this.pop=window.createPopup();doc=this.pop.document;doc.open();doc.write('<html><head><link href="'+tinyMCE.baseURL+'/plugins/contextmenu/css/contextmenu.css" rel="stylesheet" type="text/css" /></head><body unselectable="yes" class="contextMenuIEPopup"></body></html>');doc.close()}};TinyMCE_ContextMenu.prototype={clearAll:function(){this.html="";this.contextMenuDiv.innerHTML=""},addSeparator:function(){this.html+='<tr class="contextMenuItem"><td class="contextMenuIcon"><img src="'+this.settings['spacer_image']+'" width="20" height="1" class="contextMenuImage" /></td><td><img class="contextMenuSeparator" width="1" height="1" src="'+this.settings['spacer_image']+'" /></td></tr>'},addItem:function(icon,title,comman!
 d,value,disabled){if(title.charAt(0)=='$')title=tinyMCE.getLang(title.substring(1));var onMouseDown='';var html='';if(tinyMCE.isMSIE&&!tinyMCE.isMSIE5_0)onMouseDown='contextMenu.execCommand(\''+command+'\', \''+value+'\');return false;';else onMouseDown=this.settings['commandhandler']+'(\''+command+'\', \''+value+'\');return false;';if(icon=="")icon=this.settings['spacer_image'];if(!disabled)html+='<tr class="contextMenuItem">';else html+='<tr class="contextMenuItemDisabled">';html+='<td class="contextMenuIcon"><img src="'+icon+'" width="20" height="20" class="contextMenuImage" /></td>';html+='<td><div class="contextMenuText">';html+='<a href="javascript:void(0);" onclick="'+onMouseDown+'" onmousedown="return false;">&#160;';html+=title;html+='&#160;</a>';html+='</div></td>';html+='</tr>';this.html+=html},show:function(x,y){var vp,width,height,yo;if(this.html=="")return;var html='';html+='<a href="#"></a><table border="0" cellpadding="0" cellspacing="0">';html+=this.html;ht!
 ml+='</table>';this.contextMenuDiv.innerHTML=html;this.contextMenuDiv.
style.display="block";width=this.contextMenuDiv.offsetWidth;height=this.contextMenuDiv.offsetHeight;this.contextMenuDiv.style.display="none";if(tinyMCE.isMSIE&&!tinyMCE.isMSIE5_0&&!tinyMCE.isOpera){this.pop.document.body.innerHTML='<div class="contextMenu">'+html+"</div>";this.pop.document.tinyMCE=tinyMCE;this.pop.document.contextMenu=this;this.pop.show(x,y,width,height)}else{vp=this.getViewPort();yo=tinyMCE.isMSIE5_0?document.body.scrollTop:self.pageYOffset;this.contextMenuDiv.style.left=(x>vp.left+vp.width-width?vp.left+vp.width-width:x)+'px';this.contextMenuDiv.style.top=(y>vp.top+vp.height-height?vp.top+vp.height-height:y)+'px';this.contextMenuDiv.style.display="block"}},getViewPort:function(){return{left:self.pageXOffset||self.document.documentElement.scrollLeft||self.document.body.scrollLeft,top:self.pageYOffset||self.document.documentElement.scrollTop||self.document.body.scrollTop,width:document.documentElement.offsetWidth||document.body.offsetWidth,height:self.innerH!
 eight||document.documentElement.clientHeight||document.body.clientHeight}},hide:function(){if(tinyMCE.isMSIE&&!tinyMCE.isMSIE5_0&&!tinyMCE.isOpera)this.pop.hide();else this.contextMenuDiv.style.display="none"},execCommand:function(command,value){eval(this.settings['commandhandler']+"(command, value);")}};
\ No newline at end of file

Added: labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/plugins/contextmenu/editor_plugin_src.js
===================================================================
--- labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/plugins/contextmenu/editor_plugin_src.js	2007-01-11 22:09:16 UTC (rev 8831)
+++ labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/plugins/contextmenu/editor_plugin_src.js	2007-01-11 22:10:56 UTC (rev 8832)
@@ -0,0 +1,357 @@
+/**
+ * $Id: editor_plugin_src.js 129 2006-10-23 09:45:17Z spocke $
+ *
+ * @author Moxiecode
+ * @copyright Copyright © 2004-2006, Moxiecode Systems AB, All rights reserved.
+ */
+
+/* Import plugin specific language pack */
+if (!tinyMCE.settings['contextmenu_skip_plugin_css']) {
+	tinyMCE.loadCSS(tinyMCE.baseURL + "/plugins/contextmenu/css/contextmenu.css");
+}
+
+var TinyMCE_ContextMenuPlugin = {
+	// Private fields
+	_contextMenu : null,
+
+	getInfo : function() {
+		return {
+			longname : 'Context menus',
+			author : 'Moxiecode Systems AB',
+			authorurl : 'http://tinymce.moxiecode.com',
+			infourl : 'http://tinymce.moxiecode.com/tinymce/docs/plugin_contextmenu.html',
+			version : tinyMCE.majorVersion + "." + tinyMCE.minorVersion
+		};
+	},
+
+	initInstance : function(inst) {
+		// Is not working on MSIE 5.0 or Opera no contextmenu event
+		if (tinyMCE.isMSIE5_0 && tinyMCE.isOpera)
+			return;
+
+		TinyMCE_ContextMenuPlugin._contextMenu = new TinyMCE_ContextMenu({
+			commandhandler : "TinyMCE_ContextMenuPlugin._commandHandler",
+			spacer_image : tinyMCE.baseURL + "/plugins/contextmenu/images/spacer.gif"
+		});
+
+		// Add hide event handles
+		tinyMCE.addEvent(inst.getDoc(), "click", TinyMCE_ContextMenuPlugin._hideContextMenu);
+		tinyMCE.addEvent(inst.getDoc(), "keypress", TinyMCE_ContextMenuPlugin._hideContextMenu);
+		tinyMCE.addEvent(inst.getDoc(), "keydown", TinyMCE_ContextMenuPlugin._hideContextMenu);
+		tinyMCE.addEvent(document, "click", TinyMCE_ContextMenuPlugin._hideContextMenu);
+		tinyMCE.addEvent(document, "keypress", TinyMCE_ContextMenuPlugin._hideContextMenu);
+		tinyMCE.addEvent(document, "keydown", TinyMCE_ContextMenuPlugin._hideContextMenu);
+
+		// Attach contextmenu event
+		if (tinyMCE.isGecko) {
+			tinyMCE.addEvent(inst.getDoc(), "contextmenu", function(e) {TinyMCE_ContextMenuPlugin._showContextMenu(tinyMCE.isMSIE ? inst.contentWindow.event : e, inst);});
+		} else
+			tinyMCE.addEvent(inst.getDoc(), "contextmenu", TinyMCE_ContextMenuPlugin._onContextMenu);
+	},
+
+	// Private plugin internal methods
+
+	_onContextMenu : function(e) {
+		var elm = tinyMCE.isMSIE ? e.srcElement : e.target;
+		var targetInst, body;
+
+		// Find instance
+		if ((body = tinyMCE.getParentElement(elm, "body")) != null) {
+			for (var n in tinyMCE.instances) {
+				var inst = tinyMCE.instances[n];
+				if (!tinyMCE.isInstance(inst))
+					continue;
+
+				if (body == inst.getBody()) {
+					targetInst = inst;
+					break;
+				}
+			}
+
+			return TinyMCE_ContextMenuPlugin._showContextMenu(tinyMCE.isMSIE ? targetInst.contentWindow.event : e, targetInst);
+		}
+	},
+
+	_showContextMenu : function(e, inst) {
+		function getAttrib(elm, name) {
+			return elm.getAttribute(name) ? elm.getAttribute(name) : "";
+		}
+
+		var x, y, elm, contextMenu;
+		var pos = tinyMCE.getAbsPosition(inst.iframeElement);
+
+		x = tinyMCE.isMSIE ? e.screenX : pos.absLeft + (e.pageX - inst.getBody().scrollLeft);
+		y = tinyMCE.isMSIE ? e.screenY : pos.absTop + (e.pageY - inst.getBody().scrollTop);
+		elm = tinyMCE.isMSIE ? e.srcElement : e.target;
+
+		contextMenu = this._contextMenu;
+		contextMenu.inst = inst;
+
+		// Mozilla needs some time
+		window.setTimeout(function () {
+			var theme = tinyMCE.getParam("theme");
+
+			contextMenu.clearAll();
+			var sel = inst.selection.getSelectedText().length != 0 || elm.nodeName == "IMG";
+
+			// Default items
+			contextMenu.addItem(tinyMCE.baseURL + "/themes/" + theme + "/images/cut.gif", "$lang_cut_desc", "Cut", "", !sel);
+			contextMenu.addItem(tinyMCE.baseURL + "/themes/" + theme + "/images/copy.gif", "$lang_copy_desc", "Copy", "", !sel);
+			contextMenu.addItem(tinyMCE.baseURL + "/themes/" + theme + "/images/paste.gif", "$lang_paste_desc", "Paste", "", false);
+
+			if (sel || (elm ? (elm.nodeName == 'A') || (elm.nodeName == 'IMG') : false)) {
+				contextMenu.addSeparator();
+				contextMenu.addItem(tinyMCE.baseURL + "/themes/advanced/images/link.gif", "$lang_link_desc", inst.hasPlugin("advlink") ? "mceAdvLink" : "mceLink");
+				contextMenu.addItem(tinyMCE.baseURL + "/themes/advanced/images/unlink.gif", "$lang_unlink_desc", "unlink", "", (elm ? (elm.nodeName != 'A') && (elm.nodeName != 'IMG') : true));
+			}
+
+			// Get element
+			elm = tinyMCE.getParentElement(elm, "img,table,td" + (inst.hasPlugin("advhr") ? ',hr' : ''));
+			if (elm) {
+				switch (elm.nodeName) {
+					case "IMG":
+						contextMenu.addSeparator();
+
+						// If flash
+						if (tinyMCE.hasPlugin('flash') && tinyMCE.getAttrib(elm, 'class').indexOf('mceItemFlash') != -1)
+							contextMenu.addItem(tinyMCE.baseURL + "/plugins/flash/images/flash.gif", "$lang_flash_props", "mceFlash");
+						else if (tinyMCE.hasPlugin('media') && /mceItem(Flash|ShockWave|WindowsMedia|QuickTime|RealMedia)/.test(tinyMCE.getAttrib(elm, 'class')))
+							contextMenu.addItem(tinyMCE.baseURL + "/plugins/flash/images/flash.gif", "$lang_media_title", "mceMedia");
+						else
+							contextMenu.addItem(tinyMCE.baseURL + "/themes/" + theme + "/images/image.gif", "$lang_image_props_desc", inst.hasPlugin("advimage") ? "mceAdvImage" : "mceImage");
+						break;
+
+					case "HR":
+						contextMenu.addSeparator();
+						contextMenu.addItem(tinyMCE.baseURL + "/plugins/advhr/images/advhr.gif", "$lang_insert_advhr_desc", "mceAdvancedHr");
+						break;
+
+					case "TABLE":
+					case "TD":
+						// Is table plugin loaded
+						if (inst.hasPlugin("table")) {
+							var colspan = (elm.nodeName == "TABLE") ? "" : getAttrib(elm, "colspan");
+							var rowspan = (elm.nodeName == "TABLE") ? "" : getAttrib(elm, "rowspan");
+
+							colspan = colspan == "" ? "1" : colspan;
+							rowspan = rowspan == "" ? "1" : rowspan;
+
+							contextMenu.addSeparator();
+							contextMenu.addItem(tinyMCE.baseURL + "/themes/" + theme + "/images/cut.gif", "$lang_table_cut_row_desc", "mceTableCutRow");
+							contextMenu.addItem(tinyMCE.baseURL + "/themes/" + theme + "/images/copy.gif", "$lang_table_copy_row_desc", "mceTableCopyRow");
+							contextMenu.addItem(tinyMCE.baseURL + "/themes/" + theme + "/images/paste.gif", "$lang_table_paste_row_before_desc", "mceTablePasteRowBefore", "", inst.tableRowClipboard == null);
+							contextMenu.addItem(tinyMCE.baseURL + "/themes/" + theme + "/images/paste.gif", "$lang_table_paste_row_after_desc", "mceTablePasteRowAfter", "", inst.tableRowClipboard == null);
+
+	/*						contextMenu.addItem(tinyMCE.baseURL + "/themes/" + theme + "/images/justifyleft.gif", "$lang_justifyleft_desc", "JustifyLeft", "", false);
+							contextMenu.addItem(tinyMCE.baseURL + "/themes/" + theme + "/images/justifycenter.gif", "$lang_justifycenter_desc", "JustifyCenter", "", false);
+							contextMenu.addItem(tinyMCE.baseURL + "/themes/" + theme + "/images/justifyright.gif", "$lang_justifyright_desc", "JustifyRight", "", false);
+							contextMenu.addItem(tinyMCE.baseURL + "/themes/" + theme + "/images/justifyfull.gif", "$lang_justifyfull_desc", "JustifyFull", "", false);*/
+							contextMenu.addSeparator();
+							contextMenu.addItem(tinyMCE.baseURL + "/plugins/table/images/table.gif", "$lang_table_desc", "mceInsertTable", "insert");
+							contextMenu.addItem(tinyMCE.baseURL + "/plugins/table/images/table.gif", "$lang_table_props_desc", "mceInsertTable");
+							contextMenu.addItem(tinyMCE.baseURL + "/plugins/table/images/table_cell_props.gif", "$lang_table_cell_desc", "mceTableCellProps");
+							contextMenu.addItem(tinyMCE.baseURL + "/plugins/table/images/table_delete.gif", "$lang_table_del", "mceTableDelete");
+							contextMenu.addSeparator();
+							contextMenu.addItem(tinyMCE.baseURL + "/plugins/table/images/table_row_props.gif", "$lang_table_row_desc", "mceTableRowProps");
+							contextMenu.addItem(tinyMCE.baseURL + "/plugins/table/images/table_insert_row_before.gif", "$lang_table_row_before_desc", "mceTableInsertRowBefore");
+							contextMenu.addItem(tinyMCE.baseURL + "/plugins/table/images/table_insert_row_after.gif", "$lang_table_row_after_desc", "mceTableInsertRowAfter");
+							contextMenu.addItem(tinyMCE.baseURL + "/plugins/table/images/table_delete_row.gif", "$lang_table_delete_row_desc", "mceTableDeleteRow");
+							contextMenu.addSeparator();
+							contextMenu.addItem(tinyMCE.baseURL + "/plugins/table/images/table_insert_col_before.gif", "$lang_table_col_before_desc", "mceTableInsertColBefore");
+							contextMenu.addItem(tinyMCE.baseURL + "/plugins/table/images/table_insert_col_after.gif", "$lang_table_col_after_desc", "mceTableInsertColAfter");
+							contextMenu.addItem(tinyMCE.baseURL + "/plugins/table/images/table_delete_col.gif", "$lang_table_delete_col_desc", "mceTableDeleteCol");
+							contextMenu.addSeparator();
+							contextMenu.addItem(tinyMCE.baseURL + "/plugins/table/images/table_split_cells.gif", "$lang_table_split_cells_desc", "mceTableSplitCells", "", (colspan == "1" && rowspan == "1"));
+							contextMenu.addItem(tinyMCE.baseURL + "/plugins/table/images/table_merge_cells.gif", "$lang_table_merge_cells_desc", "mceTableMergeCells", "", false);
+						}
+						break;
+				}
+			}  else {
+				// Add table specific
+				if (inst.hasPlugin("table")) {
+					contextMenu.addSeparator();
+					contextMenu.addItem(tinyMCE.baseURL + "/plugins/table/images/table.gif", "$lang_table_desc", "mceInsertTable", "insert");
+				}
+			}
+
+			contextMenu.show(x, y);
+		}, 10);
+
+		// Cancel default handeling
+		tinyMCE.cancelEvent(e);
+		return false;
+	},
+
+	_hideContextMenu : function() {
+		if (TinyMCE_ContextMenuPlugin._contextMenu)
+			TinyMCE_ContextMenuPlugin._contextMenu.hide();
+	},
+
+	_commandHandler : function(command, value) {
+		var cm = TinyMCE_ContextMenuPlugin._contextMenu;
+
+		cm.hide();
+
+		// UI must be true on these
+		var ui = false;
+		if (command == "mceInsertTable" || command == "mceTableCellProps" || command == "mceTableRowProps" || command == "mceTableMergeCells")
+			ui = true;
+
+		if (command == "Paste")
+			value = null;
+
+		if (tinyMCE.getParam("dialog_type") == "modal" && tinyMCE.isMSIE) {
+			// Cell properties will generate access denied error is this isn't done?!
+			window.setTimeout(function() {
+				cm.inst.execCommand(command, ui, value);
+			}, 100);
+		} else
+			cm.inst.execCommand(command, ui, value);
+	}
+};
+
+tinyMCE.addPlugin("contextmenu", TinyMCE_ContextMenuPlugin);
+
+// Context menu class
+
+function TinyMCE_ContextMenu(settings) {
+	var doc, self = this;
+
+	// Default value function
+	function defParam(key, def_val) {
+		settings[key] = typeof(settings[key]) != "undefined" ? settings[key] : def_val;
+	}
+
+	this.isMSIE = (navigator.appName == "Microsoft Internet Explorer");
+
+	// Setup contextmenu div
+	this.contextMenuDiv = document.createElement("div");
+	this.contextMenuDiv.className = "contextMenu";
+	this.contextMenuDiv.setAttribute("class", "contextMenu");
+	this.contextMenuDiv.style.display = "none";
+	this.contextMenuDiv.style.position = 'absolute';
+	this.contextMenuDiv.style.zindex = 1000;
+	this.contextMenuDiv.style.left = '0';
+	this.contextMenuDiv.style.top = '0';
+	this.contextMenuDiv.unselectable = "on";
+
+	document.body.appendChild(this.contextMenuDiv);
+
+	// Setup default values
+	defParam("commandhandler", "");
+	defParam("spacer_image", "images/spacer.gif");
+
+	this.items = new Array();
+	this.settings = settings;
+	this.html = "";
+
+	// IE Popup
+	if (tinyMCE.isMSIE && !tinyMCE.isMSIE5_0 && !tinyMCE.isOpera) {
+		this.pop = window.createPopup();
+		doc = this.pop.document;
+		doc.open();
+		doc.write('<html><head><link href="' + tinyMCE.baseURL + '/plugins/contextmenu/css/contextmenu.css" rel="stylesheet" type="text/css" /></head><body unselectable="yes" class="contextMenuIEPopup"></body></html>');
+		doc.close();
+	}
+};
+
+TinyMCE_ContextMenu.prototype = {
+	clearAll : function() {
+		this.html = "";
+		this.contextMenuDiv.innerHTML = "";
+	},
+
+	addSeparator : function() {
+		this.html += '<tr class="contextMenuItem"><td class="contextMenuIcon"><img src="' + this.settings['spacer_image'] + '" width="20" height="1" class="contextMenuImage" /></td><td><img class="contextMenuSeparator" width="1" height="1" src="' + this.settings['spacer_image'] + '" /></td></tr>';
+	},
+
+	addItem : function(icon, title, command, value, disabled) {
+		if (title.charAt(0) == '$')
+			title = tinyMCE.getLang(title.substring(1));
+
+		var onMouseDown = '';
+		var html = '';
+
+		if (tinyMCE.isMSIE && !tinyMCE.isMSIE5_0)
+			onMouseDown = 'contextMenu.execCommand(\'' + command + '\', \'' + value + '\');return false;';
+		else
+			onMouseDown = this.settings['commandhandler'] + '(\'' + command + '\', \'' + value + '\');return false;';
+
+		if (icon == "")
+			icon = this.settings['spacer_image'];
+
+		if (!disabled)
+			html += '<tr class="contextMenuItem">';
+		else
+			html += '<tr class="contextMenuItemDisabled">';
+
+		html += '<td class="contextMenuIcon"><img src="' + icon + '" width="20" height="20" class="contextMenuImage" /></td>';
+		html += '<td><div class="contextMenuText">';
+		html += '<a href="javascript:void(0);" onclick="' + onMouseDown + '" onmousedown="return false;">&#160;';
+
+		// Add text
+		html += title;
+
+		html += '&#160;</a>';
+		html += '</div></td>';
+		html += '</tr>';
+
+		// Add to main
+		this.html += html;
+	},
+
+	show : function(x, y) {
+		var vp, width, height, yo;
+
+		if (this.html == "")
+			return;
+
+		var html = '';
+
+		html += '<a href="#"></a><table border="0" cellpadding="0" cellspacing="0">';
+		html += this.html;
+		html += '</table>';
+
+		this.contextMenuDiv.innerHTML = html;
+
+		// Get dimensions
+		this.contextMenuDiv.style.display = "block";
+		width = this.contextMenuDiv.offsetWidth;
+		height = this.contextMenuDiv.offsetHeight;
+		this.contextMenuDiv.style.display = "none";
+
+		if (tinyMCE.isMSIE && !tinyMCE.isMSIE5_0 && !tinyMCE.isOpera) {
+			// Setup popup and show
+			this.pop.document.body.innerHTML = '<div class="contextMenu">' + html + "</div>";
+			this.pop.document.tinyMCE = tinyMCE;
+			this.pop.document.contextMenu = this;
+			this.pop.show(x, y, width, height);
+		} else {
+			vp = this.getViewPort();
+			yo = tinyMCE.isMSIE5_0 ? document.body.scrollTop : self.pageYOffset;
+			this.contextMenuDiv.style.left = (x > vp.left + vp.width - width ? vp.left + vp.width - width : x) + 'px';
+			this.contextMenuDiv.style.top = (y > vp.top + vp.height - height ? vp.top + vp.height - height : y) + 'px';
+			this.contextMenuDiv.style.display = "block";
+		}
+	},
+
+	getViewPort : function() {
+		return {
+			left : self.pageXOffset || self.document.documentElement.scrollLeft || self.document.body.scrollLeft,
+			top: self.pageYOffset || self.document.documentElement.scrollTop || self.document.body.scrollTop,
+			width : document.documentElement.offsetWidth || document.body.offsetWidth,
+			height : self.innerHeight || document.documentElement.clientHeight || document.body.clientHeight
+		};
+	},
+
+	hide : function() {
+		if (tinyMCE.isMSIE && !tinyMCE.isMSIE5_0 && !tinyMCE.isOpera)
+			this.pop.hide();
+		else
+			this.contextMenuDiv.style.display = "none";
+	},
+
+	execCommand : function(command, value) {
+		eval(this.settings['commandhandler'] + "(command, value);");
+	}
+};

Added: labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/plugins/contextmenu/images/spacer.gif
===================================================================
(Binary files differ)


Property changes on: labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/plugins/contextmenu/images/spacer.gif
___________________________________________________________________
Name: svn:mime-type
   + application/octet-stream

Added: labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/plugins/contextmenu/readme.txt
===================================================================
--- labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/plugins/contextmenu/readme.txt	2007-01-11 22:09:16 UTC (rev 8831)
+++ labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/plugins/contextmenu/readme.txt	2007-01-11 22:10:56 UTC (rev 8832)
@@ -0,0 +1 @@
+Check the TinyMCE documentation for details on this plugin.

Added: labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/plugins/devkit/css/devkit.css
===================================================================
--- labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/plugins/devkit/css/devkit.css	2007-01-11 22:09:16 UTC (rev 8831)
+++ labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/plugins/devkit/css/devkit.css	2007-01-11 22:10:56 UTC (rev 8832)
@@ -0,0 +1,117 @@
+body {
+	overflow: hidden;
+}
+
+h1 {
+	font-size: 14px;
+	margin: 0 0 10px 0;
+}
+
+h2 {
+	font-size: 12px;
+	margin: 3px 0 3px 0;
+}
+
+h3 {
+	font-size: 11px;
+	margin: 3px 0 3px 0;
+}
+
+#log {
+	font-family: Verdana;
+	border: 1px solid gray;
+	width: 100%; height: 240px;
+	overflow: scroll;
+	white-space: nowrap;
+}
+
+#log span {
+	display: block;
+}
+
+#log span.msg {
+	float: left;
+}
+
+#log span.time {
+	float: left;
+}
+
+#log br {
+	clear: both;
+}
+
+#logfilter {
+	width: 350px;
+}
+
+#logenabled {
+	border: 0;
+}
+
+#settings_panel span, #info_panel span, #content_panel span, #command_states_panel span, #undo_redo_panel span {
+	display: block;
+	margin: 5px 0 5px 0;
+}
+
+div.data {
+	width: 100%; height: 240px;
+	overflow: scroll;
+	border: 1px solid gray;
+}
+
+#misc_panel div.data {
+	height: 270px;
+}
+
+.data input {
+	width: 265px;
+	border: 0;
+}
+
+.data h2 {
+	margin-left: 5px;
+}
+
+.data h3 {
+	margin-left: 7px;
+}
+
+.data div {
+	margin-left: 7px;
+}
+
+.data table {
+	margin: 0 0 15px 15px;
+}
+
+.data p {
+	margin: 0; padding: 0;
+	margin-top: 5px;
+	margin-left: 5px;
+}
+
+table, td {
+	border: 1px solid gray;
+	border-collapse: collapse;
+}
+
+#flip {
+	position: absolute;
+	left: 295; top: 384px;
+}
+
+.bspec {
+	color: gray;
+}
+
+.dep {
+	color: #880000;
+}
+
+.col1 {
+	width: 265px;
+}
+
+div.undodata {
+}

Added: labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/plugins/devkit/css/devkit_ui.css
===================================================================
--- labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/plugins/devkit/css/devkit_ui.css	2007-01-11 22:09:16 UTC (rev 8831)
+++ labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/plugins/devkit/css/devkit_ui.css	2007-01-11 22:10:56 UTC (rev 8832)
@@ -0,0 +1,15 @@
+#devkit {
+	position: absolute;
+	top: -385px; right: 0;
+	width: 640px; height: 390px;
+	border: 1px solid black;
+	z-index: 10000;
+}
+
+.devkitup {
+	top: -385px !important;
+}
+
+.devkitdown {
+	top: 0 !important;
+}

Added: labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/plugins/devkit/devkit.htm
===================================================================
--- labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/plugins/devkit/devkit.htm	2007-01-11 22:09:16 UTC (rev 8831)
+++ labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/plugins/devkit/devkit.htm	2007-01-11 22:10:56 UTC (rev 8832)
@@ -0,0 +1,140 @@
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+	<title>{$lang_devkit_title}</title>
+	<script language="javascript" type="text/javascript" src="../../tiny_mce_popup.js"></script>
+	<script language="javascript" type="text/javascript" src="../../utils/mctabs.js"></script>
+	<script language="javascript" type="text/javascript" src="../../utils/form_utils.js"></script>
+	<script language="javascript" type="text/javascript" src="jscripts/devkit.js"></script>
+	<script language="javascript" type="text/javascript" src="jscripts/diff.js"></script>
+	<link href="css/devkit.css" rel="stylesheet" type="text/css" />
+	<base target="_self" />
+</head>
+<body id="devkit" onload="tinyMCEPopup.executeOnLoad('init();');" style="display: none">
+    <form action="#">
+		<h1>{$lang_devkit_title}</h1>
+
+		<div class="tabs">
+			<ul>
+				<li id="log_tab" class="current"><span><a href="javascript:mcTabs.displayTab('log_tab','log_panel');" onmousedown="return false;">{$lang_devkit_log_tab}</a></span></li>
+				<li id="info_tab"><span><a href="javascript:mcTabs.displayTab('info_tab','info_panel');" onmousedown="return false;">{$lang_devkit_info_tab}</a></span></li>
+				<li id="settings_tab"><span><a href="javascript:mcTabs.displayTab('settings_tab','settings_panel');" onmousedown="return false;">{$lang_devkit_settings_tab}</a></span></li>
+				<li id="content_tab"><span><a href="javascript:mcTabs.displayTab('content_tab','content_panel');" onmousedown="return false;">{$lang_devkit_content_tab}</a></span></li>
+				<!-- <li id="command_states_tab"><span><a href="javascript:mcTabs.displayTab('command_states_tab','command_states_panel');" onmousedown="return false;">{$lang_devkit_command_states_tab}</a></span></li> -->
+				<li id="undo_redo_tab"><span><a href="javascript:mcTabs.displayTab('undo_redo_tab','undo_redo_panel');" onmousedown="return false;">{$lang_devkit_undo_redo_tab}</a></span></li>
+				<li id="misc_tab"><span><a href="javascript:mcTabs.displayTab('misc_tab','misc_panel');" onmousedown="return false;">{$lang_devkit_misc_tab}</a></span></li>
+			</ul>
+		</div>
+
+		<div class="panel_wrapper">
+			<div id="log_panel" class="panel current">
+				<fieldset>
+					<legend>{$lang_devkit_log_tab}</legend>
+
+					<div style="float: left">
+						<label>{$lang_devkit_filter} </label><input type="text" id="logfilter" name="logfilter" value="" onchange="changeFilter(this.value);" />
+					</div>
+
+					<div style="float: left">
+						<input type="checkbox" id="logenabled" name="logenabled" value="true" checked="checked" onclick="toggleLog(this.checked);" />
+					</div>
+
+					<div style="float: right">
+						<a href="javascript:clearLog();">[{$lang_devkit_clear_log}]</a>
+					</div>
+
+					<br style="clear: both" />
+
+					<div id="log">
+					</div>
+
+					<input type="checkbox" id="debug_events" name="debug_events" class="checkbox" onclick="toggleDebugEvents(this.checked);" /><label for="debug_events" onclick="toggleDebugEvents(this.form.debug_events.checked);">{$lang_devkit_debug_events}</label>
+				</fieldset>
+			</div>
+
+			<div id="info_panel" class="panel">
+				<fieldset>
+					<legend>{$lang_devkit_info_tab}</legend>
+
+					<span><a href="javascript:renderInfo();">[{$lang_devkit_refresh}]</a></span>
+
+					<div id="info" class="data">
+						<p>{$lang_devkit_info_help}</p>
+					</div>
+				</fieldset>
+			</div>
+
+			<div id="settings_panel" class="panel">
+			<fieldset>
+					<legend>{$lang_devkit_settings_tab}</legend>
+
+					<span><a href="javascript:renderSettings();">[{$lang_devkit_refresh}]</a></span>
+
+					<div id="settings" class="data">
+						<p>{$lang_devkit_settings_help}</p>
+					</div>
+				</fieldset>
+			</div>
+
+			<div id="content_panel" class="panel">
+			<fieldset>
+					<legend>{$lang_devkit_content_tab}</legend>
+
+					<span><a href="javascript:renderContent();">[{$lang_devkit_refresh}]</a></span>
+
+					<div id="content" class="data">
+						<p>{$lang_devkit_content_help}</p>
+					</div>
+				</fieldset>
+			</div>
+
+			<div id="command_states_panel" class="panel">
+			<fieldset>
+					<legend>{$lang_devkit_command_states_tab}</legend>
+
+					<span><a href="javascript:renderCommandStates();">[{$lang_devkit_refresh}]</a></span>
+
+					<div id="command_states" class="data">
+						<p>{$lang_devkit_command_states_help}</p>
+					</div>
+				</fieldset>
+			</div>
+
+			<div id="undo_redo_panel" class="panel">
+				<fieldset>
+					<legend>{$lang_devkit_undo_redo_tab}</legend>
+
+					<span><a href="javascript:renderUndoRedo();">[{$lang_devkit_refresh}]</a></span>
+
+					<div id="undo_redo" class="data">
+						<p>{$lang_devkit_undo_redo_help}</p>
+					</div>
+
+					<input type="checkbox" id="undo_diff" name="undo_diff" class="checkbox" /><label for="undo_diff">{$lang_devkit_undo_diff}</label>
+				</fieldset>
+			</div>
+
+			<div id="misc_panel" class="panel">
+				<fieldset>
+					<legend>{$lang_devkit_misc_tab}</legend>
+
+					<div class="data">
+						<p>{$lang_devkit_misc_help}</p>
+						<hr />
+						<p>Selection: <a href="#" onmousedown="return storeSelection();">[Store selection]</a> <a href="#" onmousedown="return restoreSelection();">[Restore selection]</a></p>
+						<hr />
+						<div><strong>Insert custom HTML content</strong></div>
+						<div><textarea id="htmlcont" name="htmlcont" style="width: 90%" rows="5"></textarea></div>
+						<div><a href="#" onclick="return tinyMCE.execCommand('mceInsertContent',false,document.getElementById('htmlcont').value);">[Insert content]</a></div>
+						<hr />
+						<div><strong>Eval JS:</strong></div>
+						<div><textarea id="jscont" name="jscont" style="width: 90%" rows="5">tinyMCE.execCommand('Bold',false,null);</textarea></div>
+						<div><a href="#" onclick="return parent.window.eval(document.getElementById('jscont').value);">[Evaluate]</a></div>
+					</div>
+				</fieldset>
+			</div>
+		</div>
+    </form>
+
+	<div id="flip"><a href="javascript:toggleFlip();" onmousedown="return false;"><img id="flipbtn" src="images/flip_down.gif" border="0" /></a></div>
+</body>
+</html>

Added: labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/plugins/devkit/editor_plugin.js
===================================================================
--- labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/plugins/devkit/editor_plugin.js	2007-01-11 22:09:16 UTC (rev 8831)
+++ labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/plugins/devkit/editor_plugin.js	2007-01-11 22:10:56 UTC (rev 8832)
@@ -0,0 +1 @@
+tinyMCE.importPluginLanguagePack('devkit');var TinyMCE_DevKitPlugin={_logFilter:'\\[(importCSS|execCommand|execInstanceCommand|debug)\\]',_logPadding:'',_startTime:null,_benchMark:false,_winLoaded:false,_isDebugEvents:false,getInfo:function(){return{longname:'Development Kit',author:'Moxiecode Systems AB',authorurl:'http://tinymce.moxiecode.com',infourl:'http://tinymce.moxiecode.com/tinymce/docs/plugin_devkit.html',version:tinyMCE.majorVersion+"."+tinyMCE.minorVersion}},initInstance:function(inst){this._setup()},_setup:function(){if(this._loaded)return;this._loaded=true;document.___TinyMCE=tinyMCE;this._logFilter=tinyMCE.getParam('devkit_log_filter',this._logFilter);this._benchMark=tinyMCE.getParam('devkit_bench_mark',false);var ifr=document.createElement('iframe');ifr.setAttribute("id","devkit");ifr.setAttribute("frameBorder","0");ifr.setAttribute("src",tinyMCE.baseURL+'/plugins/devkit/devkit.htm');document.body.appendChild(ifr);tinyMCE.importCSS(document,tinyMCE.baseURL+'!
 /plugins/devkit/css/devkit_ui.css')},_start:function(){this._logPadding+='\u00a0';return new Date().getTime()},_end:function(st){if(this._logPadding.length>0)this._logPadding=this._logPadding.substring(0,this._logPadding.length-1);if(this._benchMark)this._log("benchmark","Execution time: "+(new Date().getTime()-st))},_log:function(t){var m,a,i,e=document.getElementById('devkit'),now=new Date().getTime();if(!this._startTime)this._startTime=now;m=(this._logPadding.length>1?this._logPadding:'')+'['+(now-this._startTime)+'] ['+t+'] ';a=this._log.arguments;for(i=1;i<a.length;i++){if(typeof(a[i])=='undefined')continue;if(i>1)m+=', ';m+=a[i]}if(!new RegExp(this._logFilter,'gi').test(m)){if(this._logPadding.length>0)this._logPadding=this._logPadding.substring(0,this._logPadding.length-1);return}if(!this._winLoaded)tinyMCE.log[tinyMCE.log.length]=m;else e.contentWindow.debug(m)},_debugEvents:function(s){var i,ld,inst,n,ev=['CheckboxStateChange','DOMAttrModified','DOMMenuItemActive',!
 'DOMMenuItemInactive','DOMMouseScroll','DOMNodeInserted','DOMNodeRemov
ed','RadioStateChange','blur','broadcast','change','click','close','command','commandupdate','contextmenu','dblclick','dragdrop','dragenter','dragexit','draggesture','dragover','focus','input','keydown','keypress','keyup','load','mousedown','mouseout','mouseover','mouseup','overflow','overflowchanged','popuphidden','popuphiding','popupshowing','popupshown','select','syncfrompreference','synctopreference','underflow','unload','abort','activate','afterprint','afterupdate','beforeactivate','beforecopy','beforecut','beforedeactivate','beforeeditfocus','beforepaste','beforeprint','beforeunload','beforeupdate','bounce','cellchange','controlselect','copy','cut','dataavailable','datasetchanged','datasetcomplete','deactivate','dragend','dragleave','dragstart','drop','error','errorupdate','filterchange','finish','focusin','focusout','help','layoutcomplete','losecapture','mouseenter','mouseleave','mousewheel','move','moveend','movestart','paste','propertychange','readystatechange','res!
 et','resize','resizeend','resizestart','rowenter','rowexit','rowsdelete','rowsinserted','scroll','selectionchange','selectstart','start','stop','submit'];if(TinyMCE_DevKitPlugin._isDebugEvents==s)return;TinyMCE_DevKitPlugin._isDebugEvents=s;for(n in tinyMCE.instances){inst=tinyMCE.instances[n];if(!tinyMCE.isInstance(inst)||inst.getDoc()==ld)continue;ld=inst.getDoc();for(i=0;i<ev.length;i++){if(s)tinyMCE.addEvent(ld,ev[i],TinyMCE_DevKitPlugin._debugEvent);else tinyMCE.removeEvent(ld,ev[i],TinyMCE_DevKitPlugin._debugEvent)}}},_debugEvent:function(e){var t;e=e?e:tinyMCE.selectedInstance.getWin().event;t=e.srcElement?e.srcElement:e.target;tinyMCE.debug(e.type,t?t.nodeName:'')},_serialize:function(o){var i,v,s=TinyMCE_DevKitPlugin._serialize;if(o==null)return'null';switch(typeof o){case'string':v='\bb\tt\nn\ff\rr\""\'\'\\\\';return'"'+o.replace(new RegExp('([\u0080-\uFFFF\\x00-\\x1f\\"])','g'),function(a,b){i=v.indexOf(b);if(i+1)return'\\'+v.charAt(i+1);a=b.charCodeAt().toString!
 (16);return'\\u'+'0000'.substring(a.length)+a})+'"';case'object':if(o 
instanceof Array){for(i=0,v='[';i<o.length;i++)v+=(i>0?',':'')+s(o[i]);return v+']'}v='{';for(i in o)v+=typeof o[i]!='function'?(v.length>1?',"':'"')+i+'":'+s(o[i]):'';return v+'}'}return''+o}};tinyMCE.__debug=tinyMCE.debug;tinyMCE.debug=function(){var a,i,m='',now=new Date().getTime(),start=TinyMCE_DevKitPlugin._startTime;if(!start)TinyMCE_DevKitPlugin._startTime=start=now;a=this.debug.arguments;for(i=0;i<a.length;i++){if(typeof(a[i])=='undefined')continue;if(i>0)m+=', ';m+=a[i]}TinyMCE_DevKitPlugin._log('debug',m)};tinyMCE.dump=function(o){tinyMCE.debug(TinyMCE_DevKitPlugin._serialize(o))};tinyMCE.sleep=function(t){var s=new Date().getTime(),b;while(new Date().getTime()-s<t)b=1};tinyMCE.__execCommand=tinyMCE.execCommand;tinyMCE.execCommand=function(command,user_interface,value){var r,st,dk=TinyMCE_DevKitPlugin;st=dk._start();dk._log('execCommand',command,user_interface,value);r=tinyMCE.__execCommand(command,user_interface,value);dk._end(st);return r};tinyMCE.__execInstance!
 Command=tinyMCE.execInstanceCommand;tinyMCE.execInstanceCommand=function(editor_id,command,user_interface,value,focus){var r,st,dk=TinyMCE_DevKitPlugin;st=dk._start();dk._log('execInstanceCommand',editor_id,command,user_interface,value);r=tinyMCE.__execInstanceCommand(editor_id,command,user_interface,value);dk._end(st);return r};TinyMCE_Engine.prototype.__handleEvent=TinyMCE_Engine.prototype.handleEvent;TinyMCE_Engine.prototype.handleEvent=function(e){var r,st,dk=TinyMCE_DevKitPlugin;st=dk._start();dk._log('handleEvent',e.type);r=tinyMCE.__handleEvent(e);dk._end(st);return r};tinyMCE.__importCSS=tinyMCE.importCSS;tinyMCE.importCSS=function(doc,css){var r,st,dk=TinyMCE_DevKitPlugin;st=dk._start();dk._log('importCSS',doc,css);r=tinyMCE.__importCSS(doc,css);dk._end(st);return r};tinyMCE.__triggerNodeChange=tinyMCE.triggerNodeChange;tinyMCE.triggerNodeChange=function(focus,setup_content){var r,st,dk=TinyMCE_DevKitPlugin;st=dk._start();dk._log('triggerNodeChange',focus,setup_con!
 tent);r=tinyMCE.__triggerNodeChange(focus,setup_content);dk._end(st);r
eturn r};tinyMCE.__dispatchCallback=tinyMCE.dispatchCallback;tinyMCE.dispatchCallback=function(i,p,n){var r,st,dk=TinyMCE_DevKitPlugin;st=dk._start();dk._log('dispatchCallback',i,p,n);r=tinyMCE.__dispatchCallback(i,p,n);dk._end(st);return r};tinyMCE.__executeCallback=tinyMCE.executeCallback;tinyMCE.executeCallback=function(i,p,n){var r,st,dk=TinyMCE_DevKitPlugin;st=dk._start();dk._log('executeCallback',i,p,n);r=tinyMCE.__executeCallback(i,p,n);dk._end(st);return r};tinyMCE.__execCommandCallback=tinyMCE.execCommandCallback;tinyMCE.execCommandCallback=function(i,p,n){var r,st,dk=TinyMCE_DevKitPlugin;st=dk._start();dk._log('execCommandCallback',i,p,n);r=tinyMCE.__execCommandCallback(i,p,n);dk._end(st);return r};tinyMCE.addPlugin("devkit",TinyMCE_DevKitPlugin);
\ No newline at end of file

Added: labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/plugins/devkit/editor_plugin_src.js
===================================================================
--- labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/plugins/devkit/editor_plugin_src.js	2007-01-11 22:09:16 UTC (rev 8831)
+++ labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/plugins/devkit/editor_plugin_src.js	2007-01-11 22:10:56 UTC (rev 8832)
@@ -0,0 +1,325 @@
+/**
+ * $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.
+ */
+
+tinyMCE.importPluginLanguagePack('devkit');
+
+var TinyMCE_DevKitPlugin = {
+	_logFilter : '\\[(importCSS|execCommand|execInstanceCommand|debug)\\]',
+	_logPadding : '',
+	_startTime : null,
+	_benchMark : false,
+	_winLoaded : false,
+	_isDebugEvents : false,
+
+	getInfo : function() {
+		return {
+			longname : 'Development Kit',
+			author : 'Moxiecode Systems AB',
+			authorurl : 'http://tinymce.moxiecode.com',
+			infourl : 'http://tinymce.moxiecode.com/tinymce/docs/plugin_devkit.html',
+			version : tinyMCE.majorVersion + "." + tinyMCE.minorVersion
+		};
+	},
+
+	initInstance : function(inst) {
+		this._setup();
+	},
+
+	_setup : function() {
+		if (this._loaded)
+			return;
+
+		this._loaded = true;
+
+		// Register a document reference for more easy access in the FF DOM inspector
+		document.___TinyMCE = tinyMCE;
+
+		// Setup devkit by settings
+		this._logFilter = tinyMCE.getParam('devkit_log_filter', this._logFilter);
+		this._benchMark = tinyMCE.getParam('devkit_bench_mark', false);
+
+		var ifr = document.createElement('iframe');
+
+		ifr.setAttribute("id", "devkit");
+		ifr.setAttribute("frameBorder", "0");
+		ifr.setAttribute("src", tinyMCE.baseURL + '/plugins/devkit/devkit.htm');
+
+		document.body.appendChild(ifr);
+
+		// Workaround for strange IE reload bug
+		//if (tinyMCE.isRealIE)
+		//	document.getElementById('devkit').outerHTML = document.getElementById('devkit').outerHTML;
+
+		tinyMCE.importCSS(document, tinyMCE.baseURL + '/plugins/devkit/css/devkit_ui.css');
+	},
+
+	_start : function() {
+		this._logPadding += '\u00a0';
+
+		return new Date().getTime();
+	},
+
+	_end : function(st) {
+		if (this._logPadding.length > 0)
+			this._logPadding = this._logPadding.substring(0, this._logPadding.length - 1);
+
+		if (this._benchMark)
+			this._log("benchmark", "Execution time: " + (new Date().getTime() - st));
+	},
+
+	_log : function(t) {
+		var m, a, i, e = document.getElementById('devkit'), now = new Date().getTime();
+
+		if (!this._startTime)
+			this._startTime = now;
+
+		m = (this._logPadding.length > 1 ? this._logPadding : '') + '[' + (now - this._startTime) + '] [' + t + '] ';
+
+		a = this._log.arguments;
+		for (i=1; i<a.length; i++) {
+			if (typeof(a[i]) == 'undefined')
+				continue;
+
+			if (i > 1)
+				m += ', ';
+
+			m += a[i];
+		}
+
+		if (!new RegExp(this._logFilter, 'gi').test(m)) {
+			if (this._logPadding.length > 0)
+				this._logPadding = this._logPadding.substring(0, this._logPadding.length - 1);
+
+			return;
+		}
+
+		if (!this._winLoaded)
+			tinyMCE.log[tinyMCE.log.length] = m;
+		else
+			e.contentWindow.debug(m);
+	},
+
+	_debugEvents : function(s) {
+		var i, ld, inst, n, ev = ['CheckboxStateChange','DOMAttrModified','DOMMenuItemActive',
+				'DOMMenuItemInactive','DOMMouseScroll','DOMNodeInserted','DOMNodeRemoved',
+				'RadioStateChange','blur','broadcast','change','click','close','command',
+				'commandupdate','contextmenu','dblclick','dragdrop','dragenter','dragexit',
+				'draggesture','dragover','focus','input','keydown','keypress','keyup','load',
+				'mousedown','mouseout','mouseover','mouseup','overflow','overflowchanged','popuphidden',
+				'popuphiding','popupshowing','popupshown','select','syncfrompreference','synctopreference',
+				'underflow','unload','abort','activate','afterprint','afterupdate','beforeactivate',
+				'beforecopy','beforecut','beforedeactivate','beforeeditfocus','beforepaste','beforeprint',
+				'beforeunload','beforeupdate','bounce','cellchange','controlselect','copy','cut',
+				'dataavailable','datasetchanged','datasetcomplete','deactivate','dragend','dragleave',
+				'dragstart','drop','error','errorupdate','filterchange','finish','focusin','focusout',
+				'help','layoutcomplete','losecapture','mouseenter','mouseleave','mousewheel',
+				'move','moveend','movestart','paste','propertychange','readystatechange','reset','resize',
+				'resizeend','resizestart','rowenter','rowexit','rowsdelete','rowsinserted','scroll',
+				'selectionchange','selectstart','start','stop','submit'];
+		// mousemove
+
+		if (TinyMCE_DevKitPlugin._isDebugEvents == s)
+			return;
+
+		TinyMCE_DevKitPlugin._isDebugEvents = s;
+
+		for (n in tinyMCE.instances) {
+			inst = tinyMCE.instances[n];
+
+			if (!tinyMCE.isInstance(inst) || inst.getDoc() == ld)
+				continue;
+
+			ld = inst.getDoc();
+
+			for (i=0; i<ev.length; i++) {
+				if (s)
+					tinyMCE.addEvent(ld, ev[i], TinyMCE_DevKitPlugin._debugEvent);
+				else
+					tinyMCE.removeEvent(ld, ev[i], TinyMCE_DevKitPlugin._debugEvent);
+			}
+		}
+	},
+
+	_debugEvent : function(e) {
+		var t;
+
+		e = e ? e : tinyMCE.selectedInstance.getWin().event;
+		t = e.srcElement ? e.srcElement : e.target;
+
+		tinyMCE.debug(e.type, t ? t.nodeName : '');
+	},
+
+	_serialize : function(o) {
+		var i, v, s = TinyMCE_DevKitPlugin._serialize;
+
+		if (o == null)
+			return 'null';
+
+		switch (typeof o) {
+			case 'string':
+				v = '\bb\tt\nn\ff\rr\""\'\'\\\\';
+
+				return '"' + o.replace(new RegExp('([\u0080-\uFFFF\\x00-\\x1f\\"])', 'g'), function(a, b) {
+					i = v.indexOf(b);
+
+					if (i+1)
+						return '\\' + v.charAt(i + 1);
+
+					a = b.charCodeAt().toString(16);
+
+					return '\\u' + '0000'.substring(a.length) + a;
+				}) + '"';
+
+			case 'object':
+				if (o instanceof Array) {
+					for (i=0, v = '['; i<o.length; i++)
+						v += (i > 0 ? ',' : '') + s(o[i]);
+
+					return v + ']';
+				}
+
+				v = '{';
+
+				for (i in o)
+					v += typeof o[i] != 'function' ? (v.length > 1 ? ',"' : '"') + i + '":' + s(o[i]) : '';
+
+				return v + '}';
+		}
+
+		return '' + o;
+	}
+};
+
+// Patch and piggy back functions
+tinyMCE.__debug = tinyMCE.debug;
+tinyMCE.debug = function() {
+	var a, i, m = '', now = new Date().getTime(), start = TinyMCE_DevKitPlugin._startTime;
+
+	if (!start)
+		TinyMCE_DevKitPlugin._startTime = start = now;
+
+	a = this.debug.arguments;
+	for (i=0; i<a.length; i++) {
+		if (typeof(a[i]) == 'undefined')
+			continue;
+
+		if (i > 0)
+			m += ', ';
+
+		m += a[i];
+	}
+
+	TinyMCE_DevKitPlugin._log('debug', m);
+};
+
+tinyMCE.dump = function(o) {
+	tinyMCE.debug(TinyMCE_DevKitPlugin._serialize(o));
+};
+
+tinyMCE.sleep = function(t) {
+	var s = new Date().getTime(), b;
+
+	while (new Date().getTime() - s < t) b=1;
+};
+
+tinyMCE.__execCommand = tinyMCE.execCommand;
+tinyMCE.execCommand = function(command, user_interface, value) {
+	var r, st, dk = TinyMCE_DevKitPlugin;
+
+	st = dk._start();
+	dk._log('execCommand', command, user_interface, value);
+	r = tinyMCE.__execCommand(command, user_interface, value);
+	dk._end(st);
+
+	return r;
+};
+
+tinyMCE.__execInstanceCommand = tinyMCE.execInstanceCommand;
+tinyMCE.execInstanceCommand = function(editor_id, command, user_interface, value, focus) {
+	var r, st, dk = TinyMCE_DevKitPlugin;
+
+	st = dk._start();
+	dk._log('execInstanceCommand', editor_id, command, user_interface, value);
+	r = tinyMCE.__execInstanceCommand(editor_id, command, user_interface, value);
+	dk._end(st);
+
+	return r;
+};
+
+TinyMCE_Engine.prototype.__handleEvent = TinyMCE_Engine.prototype.handleEvent;
+TinyMCE_Engine.prototype.handleEvent = function(e) {
+	var r, st, dk = TinyMCE_DevKitPlugin;
+
+	st = dk._start();
+	dk._log('handleEvent', e.type);
+	r = tinyMCE.__handleEvent(e);
+	dk._end(st);
+
+	return r;
+};
+
+tinyMCE.__importCSS = tinyMCE.importCSS;
+tinyMCE.importCSS = function(doc, css) {
+	var r, st, dk = TinyMCE_DevKitPlugin;
+
+	st = dk._start();
+	dk._log('importCSS', doc, css);
+	r = tinyMCE.__importCSS(doc, css);
+	dk._end(st);
+
+	return r;
+};
+
+tinyMCE.__triggerNodeChange = tinyMCE.triggerNodeChange;
+tinyMCE.triggerNodeChange = function(focus, setup_content) {
+	var r, st, dk = TinyMCE_DevKitPlugin;
+
+	st = dk._start();
+	dk._log('triggerNodeChange', focus, setup_content);
+	r = tinyMCE.__triggerNodeChange(focus, setup_content);
+	dk._end(st);
+
+	return r;
+};
+
+tinyMCE.__dispatchCallback = tinyMCE.dispatchCallback;
+tinyMCE.dispatchCallback = function(i, p, n) {
+	var r, st, dk = TinyMCE_DevKitPlugin;
+
+	st = dk._start();
+	dk._log('dispatchCallback', i, p, n);
+	r = tinyMCE.__dispatchCallback(i, p, n);
+	dk._end(st);
+
+	return r;
+};
+
+tinyMCE.__executeCallback = tinyMCE.executeCallback;
+tinyMCE.executeCallback = function(i, p, n) {
+	var r, st, dk = TinyMCE_DevKitPlugin;
+
+	st = dk._start();
+	dk._log('executeCallback', i, p, n);
+	r = tinyMCE.__executeCallback(i, p, n);
+	dk._end(st);
+
+	return r;
+};
+
+tinyMCE.__execCommandCallback = tinyMCE.execCommandCallback;
+tinyMCE.execCommandCallback = function(i, p, n) {
+	var r, st, dk = TinyMCE_DevKitPlugin;
+
+	st = dk._start();
+	dk._log('execCommandCallback', i, p, n);
+	r = tinyMCE.__execCommandCallback(i, p, n);
+	dk._end(st);
+
+	return r;
+};
+
+tinyMCE.addPlugin("devkit", TinyMCE_DevKitPlugin);

Added: labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/plugins/devkit/images/flip_down.gif
===================================================================
(Binary files differ)


Property changes on: labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/plugins/devkit/images/flip_down.gif
___________________________________________________________________
Name: svn:mime-type
   + application/octet-stream

Added: labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/plugins/devkit/images/flip_up.gif
===================================================================
(Binary files differ)


Property changes on: labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/plugins/devkit/images/flip_up.gif
___________________________________________________________________
Name: svn:mime-type
   + application/octet-stream

Added: labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/plugins/devkit/jscripts/devkit.js
===================================================================
--- labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/plugins/devkit/jscripts/devkit.js	2007-01-11 22:09:16 UTC (rev 8831)
+++ labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/plugins/devkit/jscripts/devkit.js	2007-01-11 22:10:56 UTC (rev 8832)
@@ -0,0 +1,328 @@
+var devkit = parent.tinyMCE.plugins['devkit'], logEnabled = true, flip = false, book = null;
+
+function init() {
+	var log, i, f = document.forms[0];
+
+	devkit._winLoaded = true;
+
+	log = tinyMCE.log;
+
+	for (i=0; i<log.length; i++)
+		debug(log[i]);
+
+	f.logfilter.value = devkit._logFilter;
+}
+
+function changeFilter(f) {
+	devkit._logFilter = f;
+}
+
+function toggleLog(s) {
+	logEnabled = s;
+}
+
+function toggleFlip() {
+	document.getElementById('flipbtn').src = flip ? 'images/flip_down.gif' : 'images/flip_up.gif';
+
+	if (flip)
+		parent.document.getElementById('devkit').className = 'devkitup';
+	else
+		parent.document.getElementById('devkit').className = 'devkitdown';
+
+	flip = !flip;
+}
+
+function debug(s) {
+	var d, l, n;
+
+	if (!logEnabled || !new RegExp(devkit._logFilter, 'gi').test(s))
+		return;
+
+	d = document;
+	l = d.getElementById('log');
+	n = d.createElement('span');
+
+	n.innerHTML = tinyMCE.xmlEncode(s);
+
+	l.appendChild(n);
+	l.scrollTop = l.scrollHeight;
+}
+
+function renderInfo() {
+	var se = document.getElementById('info'), n, sn, inst, h = '', sel, rng, instCount = 0, rc;
+
+	h += '<h2>Browser info:</h2>';
+
+	h += '<table border="0" cellpadding="0" cellspacing="0" class="data">';
+	h += addRenderInfo('navigator.userAgent', navigator.userAgent);
+	h += addRenderInfo('navigator.appName', navigator.appName);
+	h += addRenderInfo('navigator.platform', navigator.platform);
+	h += addRenderInfo('navigator.language', navigator.language, 'bspec');
+	h += addRenderInfo('navigator.browserLanguage', navigator.browserLanguage, 'bspec');
+	h += addRenderInfo('navigator.systemLanguage', navigator.systemLanguage, 'bspec');
+	h += addRenderInfo('navigator.userLanguage', navigator.userLanguage, 'bspec');
+	h += addRenderInfo('opera.buildNumber("inconspicuous")', typeof(opera) != 'undefined' && opera.buildNumber ? opera.buildNumber('inconspicuous') : null, 'bspec');
+	h += addRenderInfo('window.innerWidth', parent.window.innerWidth, 'bspec');
+	h += addRenderInfo('window.innerHeight', parent.window.innerHeight, 'bspec');
+	h += addRenderInfo('document.body.offsetWidth', parent.document.body.offsetWidth);
+	h += addRenderInfo('document.body.offsetHeight', parent.document.body.offsetHeight);
+	h += addRenderInfo('screen.width', screen.width);
+	h += addRenderInfo('screen.height', screen.height);
+	h += addRenderInfo('screen.availWidth', screen.availWidth);
+	h += addRenderInfo('screen.availHeight', screen.availHeight);
+	h += addRenderInfo('screen.colorDepth', screen.colorDepth);
+	h += addRenderInfo('screen.pixelDepth', screen.pixelDepth, 'bspec');
+	h += addRenderInfo('document.contentType', document.contentType, 'bspec');
+	h += '</table>';
+
+	h += '<h2>TinyMCE_Engine info:</h2>';
+
+	h += '<table border="0" cellpadding="0" cellspacing="0" class="data">';
+	h += addRenderInfo('baseURL', tinyMCE.baseURL);
+	h += addRenderInfo('selectedInstance.editorId', tinyMCE.selectedInstance ? tinyMCE.selectedInstance.editorId : null);
+	h += addRenderInfo('selectedElement.nodeName', tinyMCE.selectedElement ? tinyMCE.selectedElement.nodeName : null, 'dep');
+	h += addRenderInfo('loadedFiles',tinyMCE.loadedFiles.join(','));
+	h += addRenderInfo('isMSIE', tinyMCE.isMSIE);
+	h += addRenderInfo('isMSIE5', tinyMCE.isMSIE5);
+	h += addRenderInfo('isMSIE5_0', tinyMCE.isMSIE5_0);
+	h += addRenderInfo('isMSIE7', tinyMCE.isMSIE7);
+	h += addRenderInfo('isGecko', tinyMCE.isGecko);
+	h += addRenderInfo('isSafari', tinyMCE.isSafari);
+	h += addRenderInfo('isOpera', tinyMCE.isOpera);
+	h += addRenderInfo('isMac', tinyMCE.isMac);
+	h += addRenderInfo('isNS7', tinyMCE.isNS7);
+	h += addRenderInfo('isNS71', tinyMCE.isNS71);
+	h += addRenderInfo('idCounter', tinyMCE.idCounter);
+	h += addRenderInfo('currentConfig', tinyMCE.currentConfig);
+	h += addRenderInfo('majorVersion', tinyMCE.majorVersion);
+	h += addRenderInfo('minorVersion', tinyMCE.minorVersion);
+	h += addRenderInfo('releaseDate', tinyMCE.releaseDate);
+	h += addRenderInfo('documentBasePath', tinyMCE.documentBasePath);
+	h += addRenderInfo('documentURL', tinyMCE.documentURL);
+	h += '</table>';
+
+	for (n in tinyMCE.instances) {
+		inst = tinyMCE.instances[n];
+
+		if (!tinyMCE.isInstance(inst))
+			continue;
+
+		sel = inst.selection.getSel();
+		rng = inst.selection.getRng();
+
+		h += '<h2>TinyMCE_Control(' + (instCount++) + ') id: ' + inst.editorId + '</h2>';
+		h += '<table border="0" cellpadding="0" cellspacing="0" class="data">';
+
+		h += addRenderInfo('editorId', inst.editorId);
+		h += addRenderInfo('visualAid', inst.visualAid);
+		h += addRenderInfo('foreColor', inst.foreColor);
+		h += addRenderInfo('backColor', inst.backColor);
+		h += addRenderInfo('formTargetElementId', inst.formTargetElementId);
+		h += addRenderInfo('linkElement', inst.linkElement ? inst.linkElement.nodeName : null, 'dep');
+		h += addRenderInfo('imgElement', inst.imgElement ? inst.imgElement.nodeName : null, 'dep');
+		h += addRenderInfo('selectedNode', inst.selectedNode ? inst.selectedNode.nodeName : null, 'dep');
+		h += addRenderInfo('targetElement', inst.targetElement ? inst.targetElement.nodeName : null);
+		h += addRenderInfo('getBody().nodeName', inst.getBody() ? inst.getBody().nodeName : null);
+		h += addRenderInfo('getBody().getAttribute("id")', inst.getBody() ? inst.getBody().getAttribute("id") : null);
+		h += addRenderInfo('getDoc().location', inst.getDoc() ? inst.getDoc().location : null);
+		h += addRenderInfo('startContent', inst.startContent);
+		h += addRenderInfo('isHidden()', inst.isHidden());
+		h += addRenderInfo('isDirty()', inst.isDirty());
+		h += addRenderInfo('undoRedo.undoLevels.length', inst.undoRedo.undoLevels.length);
+		h += addRenderInfo('undoRedo.undoIndex', inst.undoRedo.undoIndex);
+		h += addRenderInfo('selection.getSelectedHTML()', inst.selection.getSelectedHTML());
+		h += addRenderInfo('selection.getSelectedText()', inst.selection.getSelectedText());
+		h += addRenderInfo('selection.getFocusElement().nodeName', inst.selection.getFocusElement().nodeName);
+		h += addRenderInfo('selection.getFocusElement().outerHTML', tinyMCE.getOuterHTML(inst.selection.getFocusElement()));
+
+		if ((tinyMCE.isGecko || tinyMCE.isOpera) && sel && rng) {
+			h += addRenderInfo('selection.getSel().anchorNode.nodeName', sel.anchorNode ? sel.anchorNode.nodeName : null, 'bspec');
+			h += addRenderInfo('selection.getSel().anchorOffset', sel.anchorOffset, 'bspec');
+			h += addRenderInfo('selection.getSel().focusNode.nodeName', sel.focusNode ? sel.focusNode.nodeName : null, 'bspec');
+			h += addRenderInfo('selection.getSel().focusOffset', sel.focusOffset, 'bspec');
+			h += addRenderInfo('selection.getRng().startContainer.nodeName', rng.startContainer ? rng.startContainer.nodeName : null, 'bspec');
+			h += addRenderInfo('selection.getRng().startOffset', rng.startOffset, 'bspec');
+			h += addRenderInfo('selection.getRng().endContainer.nodeName', rng.endContainer ? rng.endContainer.nodeName : null, 'bspec');
+			h += addRenderInfo('selection.getRng().endOffset', rng.endOffset, 'bspec');
+		}
+
+		if (typeof(rng.item) != 'undefined' || typeof(rng.htmlText) != 'undefined') {
+			if (!rng.item) {
+				h += addRenderInfo('selection.getSel().type', sel.type, 'bspec');
+				h += addRenderInfo('selection.getRng().htmlText', rng.htmlText, 'bspec');
+				h += addRenderInfo('selection.getRng().text', rng.text, 'bspec');
+			} else
+				h += addRenderInfo('selection.getRng().item(0).nodeName', rng.item(0).nodeName, 'bspec');
+		}
+
+		h += '</table>';
+	}
+
+	h += '<p>Fields marked in <strong class="bspec">gray</strong> is not cross browser and should be used with care.</p>';
+	h += '<p>Fields marked <strong class="dep">red</strong> are marked deprecated and will be removed in the future.</p><br />';
+
+	se.innerHTML = h;
+}
+
+function addRenderInfo(n, v, c) {
+	return '<tr><td' + (c ? ' class="' + c + '"' : '')+ '>' + n + '</td><td><input type="text" value="' + tinyMCE.xmlEncode(v != null ? ('' + v).replace(/[\r\n]/g, '') : 'null') + '" /></td></tr>';
+}
+
+function renderSettings() {
+	var se = document.getElementById('settings'), n, sn, inst, h = '', v;
+
+	for (n in tinyMCE.instances) {
+		inst = tinyMCE.instances[n];
+
+		if (!tinyMCE.isInstance(inst))
+			continue;
+
+		h += '<h2>Instance id: ' + inst.editorId + '</h2>';
+		h += '<table border="0" cellpadding="0" cellspacing="0" class="data">';
+
+		for (sn in inst.settings) {
+			v = inst.settings[sn];
+
+			h += '<tr><td class="col1">' + tinyMCE.xmlEncode(sn) + '</td><td><input type="text" value="' + tinyMCE.xmlEncode(v) + '" /></td></tr>';
+		}
+
+		h += '</table>';
+	}
+
+	se.innerHTML = h;
+}
+
+function renderContent() {
+	var se = document.getElementById('content'), n, inst, h = '';
+
+	for (n in tinyMCE.instances) {
+		inst = tinyMCE.instances[n];
+
+		if (!tinyMCE.isInstance(inst))
+			continue;
+
+		h += '<h2>Instance id: ' + inst.editorId + '</h2>';
+
+		h += '<h3>Start content - inst.startContent:</h3>';
+		h += '<div>' + tinyMCE.xmlEncode(inst.startContent) + '</div>';
+
+		h += '<h3>Raw content - inst.getBody().innerHTML or inst.getHTML(true):</h3>';
+		h += '<div>' + tinyMCE.xmlEncode(inst.getHTML(true)) + '</div>';
+
+		h += '<h3>Cleaned content - inst.getHTML():</h3>';
+		h += '<div>' + tinyMCE.xmlEncode(inst.getHTML()) + '</div>';
+
+		if (inst.serializedHTML) {
+			h += '<h3>Serialized HTML content - inst.serializedHTML:</h3>';
+			h += '<div>' + tinyMCE.xmlEncode(inst.serializedHTML) + '</div>';
+		}
+	}
+
+	se.innerHTML = h;
+}
+
+function renderCommandStates() {
+	var se = document.getElementById('command_states'), n, inst, h = '', v, ex;
+	var cmds = new Array('2D-Position','AbsolutePosition','BackColor','BlockDirLTR','BlockDirRTL','Bold','BrowseMode','Copy','CreateBookmark','CreateLink','Cut','Delete','DirLTR','DirRTL','EditMode','enableInlineTableEditing','enableObjectResizing','FontName','FontSize','ForeColor','FormatBlock','Indent','InsertButton','InsertFieldset','InsertHorizontalRule','InsertIFrame','InsertImage','InsertInputButton','InsertInputCheckbox','InsertInputFileUpload','InsertInputHidden','InsertInputImage','InsertInputPassword','InsertInputRadio','InsertInputReset','InsertInputSubmit','InsertInputText','InsertMarquee','InsertOrderedList','InsertParagraph','InsertSelectDropdown','InsertSelectListbox','InsertTextArea','InsertUnorderedList','Italic','JustifyCenter','JustifyFull','JustifyLeft','JustifyNone','JustifyRight','LiveResize','MultipleSelection','Open','Outdent','OverWrite','Paste','PlayImage','Redo','Refresh','RemoveFormat','SaveAs','SelectAll','SizeToControl','SizeToControlHeight','Size!
 ToControlWidth','Stop','StopImage','StrikeThrough','styleWithCSS','Subscript','Superscript','UnBookmark','Underline','Undo','Unlink','Unselect'), i;
+
+	for (n in tinyMCE.instances) {
+		inst = tinyMCE.instances[n];
+
+		if (!tinyMCE.isInstance(inst))
+			continue;
+
+		h += '<h2>Instance id: ' + inst.editorId + '</h2>';
+		h += '<table border="0" cellpadding="0" cellspacing="0" class="data">';
+
+		for (i=0; i<cmds.length; i++) {
+			v = null;
+
+			try {
+				v = tinyMCE.isGecko || inst.getDoc().queryCommandSupported(cmds[i]);
+				v = v ? inst.queryCommandState(cmds[i]) : 'Not supported';
+			} catch (ex) {
+				v = 'Not supported';
+			}
+
+			h += '<tr><td><input type="text" value="' + tinyMCE.xmlEncode(cmds[i]) + '" /></td><td><input type="text" value="' + tinyMCE.xmlEncode(v) + '" /></td></tr>';
+		}
+
+		h += '</table>';
+	}
+
+	se.innerHTML = h;
+}
+
+function renderUndoRedo() {
+	var se = document.getElementById('undo_redo'), inst, n, h = '', i, le, id, d, ur;
+	var f = document.forms[0];	
+
+	if (tinyMCE.undoLevels) {
+		le = tinyMCE.undoLevels;
+
+		h += '<h2>Global undo/redo</h2>';
+		h += '<table border="0" cellpadding="0" cellspacing="0" width="50%" class="data">';
+		h += '<tr><td>undoLevels.length</td><td>' + le.length + '</td></tr>';
+		h += '<tr><td>undoIndex</td><td>' + tinyMCE.undoIndex + '</td></tr>';
+		h += '</table>';
+
+		for (i=0; i<le.length; i++)
+			h += '<h3>Level: ' + i + ', Instance: ' + (le[i] ? le[i].editorId : 'null') + '</h3>';
+	}
+
+	for (n in tinyMCE.instances) {
+		inst = tinyMCE.instances[n];
+
+		if (!tinyMCE.isInstance(inst))
+			continue;
+
+		ur = inst.undoRedo;
+		le = ur.undoLevels;
+
+		h += '<hr /><h2>Instance id: ' + inst.editorId + '</h2>';
+		h += '<table border="0" cellpadding="0" cellspacing="0" width="50%" class="data">';
+		h += '<tr><td>undoLevels.length</td><td>' + le.length + '</td></tr>';
+		h += '<tr><td>undoIndex</td><td>' + ur.undoIndex + '</td></tr>';
+		h += '<tr><td>typingUndoIndex</td><td>' + ur.typingUndoIndex + '</td></tr>';
+		h += '<tr><td>undoRedo</td><td>' + ur.undoRedo + '</td></tr>';
+		h += '</table>';
+
+		for (i=0; i<le.length; i++) {
+			h += '<h3>Level: ' + i + (!le[i].bookmark ? "" : " [bookmark]") + '</h3>';
+			h += '<div class="undodata">' + tinyMCE.xmlEncode(le[i].content) + '</div>';
+
+			if (i > 0 && f.undo_diff.checked) {
+				d = diff_main(i > 0 ? le[i-1].content.replace(/[\r\n]+/g, '') : null, le[i].content.replace(/[\r\n]+/g, ''), false);
+				diff_cleanup_semantic(d);
+				h += '<h3>Diff ' + (i-1) + ',' + i + '</h3><div class="undodata">' + diff_prettyhtml(d) + '</div>';
+			}
+		}
+	}
+
+	se.innerHTML = h;
+}
+
+function clearLog() {
+	document.getElementById('log').innerHTML = '';
+	devkit._startTime = null;
+}
+
+function cancelAction() {
+	parent.document.getElementById('devkit').style.display = 'none';
+}
+
+function toggleDebugEvents(s) {
+	devkit._debugEvents(s);
+}
+
+function storeSelection() {
+	book = tinyMCE.selectedInstance.selection.getBookmark();
+
+	return false;
+}
+
+function restoreSelection() {
+	tinyMCE.selectedInstance.selection.moveToBookmark(book);
+
+	return false;
+}
\ No newline at end of file

Added: labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/plugins/devkit/jscripts/diff.js
===================================================================
--- labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/plugins/devkit/jscripts/diff.js	2007-01-11 22:09:16 UTC (rev 8831)
+++ labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/plugins/devkit/jscripts/diff.js	2007-01-11 22:10:56 UTC (rev 8832)
@@ -0,0 +1,1192 @@
+// Diff_Match_Patch v1.3
+// Computes the difference between two texts to create a patch.
+// Applies the patch onto another text, allowing for errors.
+// Copyright (C) 2006 Neil Fraser
+// http://neil.fraser.name/software/diff_match_patch/
+
+// This program is free software; you can redistribute it and/or
+// modify it under the terms of the GNU General Public License
+// as published by the Free Software Foundation.
+
+// This program is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+// GNU General Public License (www.gnu.org) for more details.
+
+
+// Constants.
+// Redefine these in your program to override the defaults.
+
+// Number of seconds to map a diff before giving up.  (0 for infinity)
+var DIFF_TIMEOUT = 1.0;
+// Cost of an empty edit operation in terms of edit characters.
+var DIFF_EDIT_COST = 4;
+// Tweak the relative importance (0.0 = accuracy, 1.0 = proximity)
+var MATCH_BALANCE = 0.5;
+// At what point is no match declared (0.0 = perfection, 1.0 = very loose)
+var MATCH_THRESHOLD = 0.5;
+// The min and max cutoffs used when computing text lengths.
+var MATCH_MINLENGTH = 100;
+var MATCH_MAXLENGTH = 1000;
+// Chunk size for context length.
+var PATCH_MARGIN = 4;
+
+
+  //////////////////////////////////////////////////////////////////////
+ //  Diff                                                            //
+//////////////////////////////////////////////////////////////////////
+
+// The data structure representing a diff is an array of tuples:
+// [[-1, "Hello"], [1, "Goodbye"], [0, " world."]]
+// which means: delete "Hello", add "Goodbye" and keep " world."
+
+
+function diff_main(text1, text2, checklines) {
+  // Find the differences between two texts.  Return an array of changes.
+  // If checklines is present and false, then don't run a line-level diff first to identify the changed areas.
+  // Check for equality (speedup)
+  if (text1 == text2)
+    return [[0, text1]];
+
+  if (typeof checklines == 'undefined')
+    checklines = true;
+
+  var a;
+  // Trim off common prefix (speedup)
+  a = diff_prefix(text1, text2);
+  text1 = a[0];
+  text2 = a[1];
+  var commonprefix = a[2];
+
+  // Trim off common suffix (speedup)
+  a = diff_suffix(text1, text2);
+  text1 = a[0];
+  text2 = a[1];
+  var commonsuffix = a[2];
+
+  var diff, i;
+  var longtext = text1.length > text2.length ? text1 : text2;
+  var shorttext = text1.length > text2.length ? text2 : text1;
+
+  if (!text1) {  // Just add some text (speedup)
+    diff = [[1, text2]];
+  } else if (!text2) { // Just delete some text (speedup)
+    diff = [[-1, text1]];
+  } else if ((i = longtext.indexOf(shorttext)) != -1) {
+    // Shorter text is inside the longer text (speedup)
+    diff = [[1, longtext.substring(0, i)], [0, shorttext], [1, longtext.substring(i+shorttext.length)]];
+    // Swap insertions for deletions if diff is reversed.
+    if (text1.length > text2.length)
+      diff[0][0] = diff[2][0] = -1;
+  } else {
+    longtext = shorttext = null; // Garbage collect
+    // Check to see if the problem can be split in two.
+    var hm = diff_halfmatch(text1, text2);
+    if (hm) {
+      // A half-match was found, sort out the return data.
+      var text1_a = hm[0];
+      var text1_b = hm[1];
+      var text2_a = hm[2];
+      var text2_b = hm[3];
+      var mid_common = hm[4];
+      // Send both pairs off for separate processing.
+      var diff_a = diff_main(text1_a, text2_a, checklines);
+      var diff_b = diff_main(text1_b, text2_b, checklines);
+      // Merge the results.
+      diff = diff_a.concat([[0, mid_common]], diff_b);
+    } else {
+      // Perform a real diff.
+      if (checklines && text1.length + text2.length < 250)
+        checklines = false; // Too trivial for the overhead.
+      if (checklines) {
+        // Scan the text on a line-by-line basis first.
+        a = diff_lines2chars(text1, text2);
+        text1 = a[0];
+        text2 = a[1];
+        var linearray = a[2];
+      }
+      diff = diff_map(text1, text2);
+      if (!diff) // No acceptable result.
+        diff = [[-1, text1], [1, text2]];
+      if (checklines) {
+        diff_chars2lines(diff, linearray); // Convert the diff back to original text.
+        diff_cleanup_semantic(diff); // Eliminate freak matches (e.g. blank lines)
+
+        // Rediff any replacement blocks, this time on character-by-character basis.
+        diff.push([0, '']);  // Add a dummy entry at the end.
+        var pointer = 0;
+        var count_delete = 0;
+        var count_insert = 0;
+        var text_delete = '';
+        var text_insert = '';
+        while(pointer < diff.length) {
+          if (diff[pointer][0] == 1) {
+            count_insert++;
+            text_insert += diff[pointer][1];
+          } else if (diff[pointer][0] == -1) {
+            count_delete++;
+            text_delete += diff[pointer][1];
+          } else {  // Upon reaching an equality, check for prior redundancies.
+            if (count_delete >= 1 && count_insert >= 1) {
+              // Delete the offending records and add the merged ones.
+              a = diff_main(text_delete, text_insert, false);
+              diff.splice(pointer - count_delete - count_insert, count_delete + count_insert);
+              pointer = pointer - count_delete - count_insert;
+              for (i=a.length-1; i>=0; i--)
+                diff.splice(pointer, 0, a[i]);
+              pointer = pointer + a.length;
+            }
+            count_insert = 0;
+            count_delete = 0;
+            text_delete = '';
+            text_insert = '';
+          }
+          pointer++;
+        }
+        diff.pop();  // Remove the dummy entry at the end.
+
+      }
+    }
+  }
+
+  if (commonprefix)
+    diff.unshift([0, commonprefix]);
+  if (commonsuffix)
+    diff.push([0, commonsuffix]);
+  diff_cleanup_merge(diff);
+  return diff;
+}
+
+
+function diff_lines2chars(text1, text2) {
+  // Split text into an array of strings.
+  // Reduce the texts to a string of hashes where each character represents one line.
+  var linearray = new Array();  // linearray[4] == "Hello\n"
+  var linehash = new Object();  // linehash["Hello\n"] == 4
+
+  // "\x00" is a valid JavaScript character, but the Venkman debugger doesn't like it (bug 335098)
+  // So we'll insert a junk entry to avoid generating a null character.
+  linearray.push('');
+
+  function diff_lines2chars_munge(text) {
+    // My first ever closure!
+    var i, line;
+    var chars = '';
+    while (text) {
+      i = text.indexOf('\n');
+      if (i == -1)
+        i = text.length;
+      line = text.substring(0, i+1);
+      text = text.substring(i+1);
+      if (linehash.hasOwnProperty ? linehash.hasOwnProperty(line) : (linehash[line] !== undefined)) {
+        chars += String.fromCharCode(linehash[line]);
+      } else {
+        linearray.push(line);
+        linehash[line] = linearray.length - 1;
+        chars += String.fromCharCode(linearray.length - 1);
+      }
+    }
+    return chars;
+  }
+
+  var chars1 = diff_lines2chars_munge(text1);
+  var chars2 = diff_lines2chars_munge(text2);
+  return [chars1, chars2, linearray];
+}
+
+
+function diff_chars2lines(diff, linearray) {
+  // Rehydrate the text in a diff from a string of line hashes to real lines of text.
+  var chars, text;
+  for (var x=0; x<diff.length; x++) {
+    chars = diff[x][1];
+    text = '';
+    for (var y=0; y<chars.length; y++)
+      text += linearray[chars.charCodeAt(y)];
+    diff[x][1] = text;
+  }
+}
+
+
+function diff_map(text1, text2) {
+  // Explore the intersection points between the two texts.
+  var now = new Date();
+  var ms_end = now.getTime() + DIFF_TIMEOUT * 1000; // Don't run for too long.
+  var max = (text1.length + text2.length) / 2;
+  var v_map1 = new Array();
+  var v_map2 = new Array();
+  var v1 = new Object();
+  var v2 = new Object();
+  v1[1] = 0;
+  v2[1] = 0;
+  var x, y;
+  var footstep; // Used to track overlapping paths.
+  var footsteps = new Object();
+  var done = false;
+  var hasOwnProperty = !!(footsteps.hasOwnProperty);
+  // If the total number of characters is odd, then the front path will collide with the reverse path.
+  var front = (text1.length + text2.length) % 2;
+  for (var d=0; d<max; d++) {
+    now = new Date();
+    if (DIFF_TIMEOUT > 0 && now.getTime() > ms_end) // Timeout reached
+      return null;
+
+    // Walk the front path one step.
+    v_map1[d] = new Object();
+    for (var k=-d; k<=d; k+=2) {
+      if (k == -d || k != d && v1[k-1] < v1[k+1])
+        x = v1[k+1];
+      else
+        x = v1[k-1]+1;
+      y = x - k;
+      footstep = x+","+y;
+      if (front && (hasOwnProperty ? footsteps.hasOwnProperty(footstep) : (footsteps[footstep] !== undefined)))
+        done = true;
+      if (!front)
+        footsteps[footstep] = d;
+      while (!done && x < text1.length && y < text2.length && text1.charAt(x) == text2.charAt(y)) {
+        x++; y++;
+        footstep = x+","+y;
+        if (front && (hasOwnProperty ? footsteps.hasOwnProperty(footstep) : (footsteps[footstep] !== undefined)))
+          done = true;
+        if (!front)
+          footsteps[footstep] = d;
+      }
+      v1[k] = x;
+      v_map1[d][x+","+y] = true;
+      if (done) {
+        // Front path ran over reverse path.
+        v_map2 = v_map2.slice(0, footsteps[footstep]+1);
+        var a = diff_path1(v_map1, text1.substring(0, x), text2.substring(0, y));
+        return a.concat(diff_path2(v_map2, text1.substring(x), text2.substring(y)));
+      }
+    }
+
+    // Walk the reverse path one step.
+    v_map2[d] = new Object();
+    for (var k=-d; k<=d; k+=2) {
+      if (k == -d || k != d && v2[k-1] < v2[k+1])
+        x = v2[k+1];
+      else
+        x = v2[k-1]+1;
+      y = x - k;
+      footstep = (text1.length-x)+","+(text2.length-y);
+      if (!front && (hasOwnProperty ? footsteps.hasOwnProperty(footstep) : (footsteps[footstep] !== undefined)))
+        done = true;
+      if (front)
+        footsteps[footstep] = d;
+      while (!done && x < text1.length && y < text2.length && text1.charAt(text1.length-x-1) == text2.charAt(text2.length-y-1)) {
+        x++; y++;
+        footstep = (text1.length-x)+","+(text2.length-y);
+        if (!front && (hasOwnProperty ? footsteps.hasOwnProperty(footstep) : (footsteps[footstep] !== undefined)))
+          done = true;
+        if (front)
+          footsteps[footstep] = d;
+      }
+      v2[k] = x;
+      v_map2[d][x+","+y] = true;
+      if (done) {
+        // Reverse path ran over front path.
+        v_map1 = v_map1.slice(0, footsteps[footstep]+1);
+        var a = diff_path1(v_map1, text1.substring(0, text1.length-x), text2.substring(0, text2.length-y));
+        return a.concat(diff_path2(v_map2, text1.substring(text1.length-x), text2.substring(text2.length-y)));
+      }
+    }
+  }
+  // Number of diffs equals number of characters, no commonality at all.
+  return null;
+}
+
+
+function diff_path1(v_map, text1, text2) {
+  // Work from the middle back to the start to determine the path.
+  var path = [];
+  var x = text1.length;
+  var y = text2.length;
+  var last_op = null;
+  for (var d=v_map.length-2; d>=0; d--) {
+    while(1) {
+      if (v_map[d].hasOwnProperty ? v_map[d].hasOwnProperty((x-1)+","+y) : (v_map[d][(x-1)+","+y] !== undefined)) {
+        x--;
+        if (last_op === -1)
+          path[0][1] = text1.charAt(x) + path[0][1];
+        else
+          path.unshift([-1, text1.charAt(x)]);
+        last_op = -1;
+        break;
+      } else if (v_map[d].hasOwnProperty ? v_map[d].hasOwnProperty(x+","+(y-1)) : (v_map[d][x+","+(y-1)] !== undefined)) {
+        y--;
+        if (last_op === 1)
+          path[0][1] = text2.charAt(y) + path[0][1];
+        else
+          path.unshift([1, text2.charAt(y)]);
+        last_op = 1;
+        break;
+      } else {
+        x--;
+        y--;
+        //if (text1.charAt(x) != text2.charAt(y))
+        //  return alert("No diagonal.  Can't happen. (diff_path1)");
+        if (last_op === 0)
+          path[0][1] = text1.charAt(x) + path[0][1];
+        else
+          path.unshift([0, text1.charAt(x)]);
+        last_op = 0;
+      }
+    }
+  }
+  return path;
+}
+
+
+function diff_path2(v_map, text1, text2) {
+  // Work from the middle back to the end to determine the path.
+  var path = [];
+  var x = text1.length;
+  var y = text2.length;
+  var last_op = null;
+  for (var d=v_map.length-2; d>=0; d--) {
+    while(1) {
+      if (v_map[d].hasOwnProperty ? v_map[d].hasOwnProperty((x-1)+","+y) : (v_map[d][(x-1)+","+y] !== undefined)) {
+        x--;
+        if (last_op === -1)
+          path[path.length-1][1] += text1.charAt(text1.length-x-1);
+        else
+          path.push([-1, text1.charAt(text1.length-x-1)]);
+        last_op = -1;
+        break;
+      } else if (v_map[d].hasOwnProperty ? v_map[d].hasOwnProperty(x+","+(y-1)) : (v_map[d][x+","+(y-1)] !== undefined)) {
+        y--;
+        if (last_op === 1)
+          path[path.length-1][1] += text2.charAt(text2.length-y-1);
+        else
+          path.push([1, text2.charAt(text2.length-y-1)]);
+        last_op = 1;
+        break;
+      } else {
+        x--;
+        y--;
+        //if (text1.charAt(text1.length-x-1) != text2.charAt(text2.length-y-1))
+        //  return alert("No diagonal.  Can't happen. (diff_path2)");
+        if (last_op === 0)
+          path[path.length-1][1] += text1.charAt(text1.length-x-1);
+        else
+          path.push([0, text1.charAt(text1.length-x-1)]);
+        last_op = 0;
+      }
+    }
+  }
+  return path;
+}
+
+
+function diff_prefix(text1, text2) {
+  // Trim off common prefix
+  var pointermin = 0;
+  var pointermax = Math.min(text1.length, text2.length);
+  var pointermid = pointermax;
+  while(pointermin < pointermid) {
+    if (text1.substring(0, pointermid) == text2.substring(0, pointermid))
+      pointermin = pointermid;
+    else
+      pointermax = pointermid;
+    pointermid = Math.floor((pointermax - pointermin) / 2 + pointermin);
+  }
+  var commonprefix = text1.substring(0, pointermid);
+  text1 = text1.substring(pointermid);
+  text2 = text2.substring(pointermid);
+  return [text1, text2, commonprefix];
+}
+
+
+function diff_suffix(text1, text2) {
+  // Trim off common suffix
+  var pointermin = 0;
+  var pointermax = Math.min(text1.length, text2.length);
+  var pointermid = pointermax;
+  while(pointermin < pointermid) {
+    if (text1.substring(text1.length-pointermid) == text2.substring(text2.length-pointermid))
+      pointermin = pointermid;
+    else
+      pointermax = pointermid;
+    pointermid = Math.floor((pointermax - pointermin) / 2 + pointermin);
+  }
+  var commonsuffix = text1.substring(text1.length-pointermid);
+  text1 = text1.substring(0, text1.length-pointermid);
+  text2 = text2.substring(0, text2.length-pointermid);
+  return [text1, text2, commonsuffix];
+}
+
+
+function diff_halfmatch(text1, text2) {
+  // Do the two texts share a substring which is at least half the length of the longer text?
+  var longtext = text1.length > text2.length ? text1 : text2;
+  var shorttext = text1.length > text2.length ? text2 : text1;
+  if (longtext.length < 10 || shorttext.length < 1)
+    return null; // Pointless.
+
+  function diff_halfmatch_i(longtext, shorttext, i) {
+    // Start with a 1/4 length substring at position i as a seed.
+    var seed = longtext.substring(i, i+Math.floor(longtext.length/4));
+    var j = -1;
+    var best_common = '';
+    var best_longtext_a, best_longtext_b, best_shorttext_a, best_shorttext_b;
+    while ((j = shorttext.indexOf(seed, j+1)) != -1) {
+      var my_prefix = diff_prefix(longtext.substring(i), shorttext.substring(j));
+      var my_suffix = diff_suffix(longtext.substring(0, i), shorttext.substring(0, j));
+      if (best_common.length < (my_suffix[2] + my_prefix[2]).length) {
+        best_common = my_suffix[2] + my_prefix[2];
+        best_longtext_a = my_suffix[0];
+        best_longtext_b = my_prefix[0];
+        best_shorttext_a = my_suffix[1];
+        best_shorttext_b = my_prefix[1];
+      }
+    }
+    if (best_common.length >= longtext.length/2)
+      return [best_longtext_a, best_longtext_b, best_shorttext_a, best_shorttext_b, best_common];
+    else
+      return null;
+  }
+
+  // First check if the second quarter is the seed for a half-match.
+  var hm1 = diff_halfmatch_i(longtext, shorttext, Math.ceil(longtext.length/4));
+  // Check again based on the third quarter.
+  var hm2 = diff_halfmatch_i(longtext, shorttext, Math.ceil(longtext.length/2));
+  var hm;
+  if (!hm1 && !hm2)
+    return null;
+  else if (!hm2)
+    hm = hm1;
+  else if (!hm1)
+    hm = hm2;
+  else // Both matched.  Select the longest.
+    hm = hm1[4].length > hm2[4].length ? hm1 : hm2;
+
+  // A half-match was found, sort out the return data.
+  if (text1.length > text2.length) {
+    var text1_a = hm[0];
+    var text1_b = hm[1];
+    var text2_a = hm[2];
+    var text2_b = hm[3];
+  } else {
+    var text2_a = hm[0];
+    var text2_b = hm[1];
+    var text1_a = hm[2];
+    var text1_b = hm[3];
+  }
+  var mid_common = hm[4];
+  return [text1_a, text1_b, text2_a, text2_b, mid_common];
+}
+
+
+function diff_cleanup_semantic(diff) {
+  // Reduce the number of edits by eliminating semantically trivial equalities.
+  var changes = false;
+  var equalities = []; // Stack of indices where equalities are found.
+  var lastequality = null; // Always equal to equalities[equalities.length-1][1]
+  var pointer = 0; // Index of current position.
+  var length_changes1 = 0; // Number of characters that changed prior to the equality.
+  var length_changes2 = 0; // Number of characters that changed after the equality.
+  while (pointer < diff.length) {
+    if (diff[pointer][0] == 0) { // equality found
+      equalities.push(pointer);
+      length_changes1 = length_changes2;
+      length_changes2 = 0;
+      lastequality = diff[pointer][1];
+    } else { // an insertion or deletion
+      length_changes2 += diff[pointer][1].length;
+      if (lastequality != null && (lastequality.length <= length_changes1) && (lastequality.length <= length_changes2)) {
+        //alert("Splitting: '"+lastequality+"'");
+        diff.splice(equalities[equalities.length-1], 0, [-1, lastequality]); // Duplicate record
+        diff[equalities[equalities.length-1]+1][0] = 1; // Change second copy to insert.
+        equalities.pop();  // Throw away the equality we just deleted;
+        equalities.pop();  // Throw away the previous equality;
+        pointer = equalities.length ? equalities[equalities.length-1] : -1;
+        length_changes1 = 0; // Reset the counters.
+        length_changes2 = 0;
+        lastequality = null;
+        changes = true;
+      }
+    }
+    pointer++;
+  }
+
+  if (changes)
+    diff_cleanup_merge(diff);
+}
+
+
+function diff_cleanup_efficiency(diff) {
+  // Reduce the number of edits by eliminating operationally trivial equalities.
+  var changes = false;
+  var equalities = []; // Stack of indices where equalities are found.
+  var lastequality = ''; // Always equal to equalities[equalities.length-1][1]
+  var pointer = 0; // Index of current position.
+  var pre_ins = false; // Is there an insertion operation before the last equality.
+  var pre_del = false; // Is there an deletion operation before the last equality.
+  var post_ins = false; // Is there an insertion operation after the last equality.
+  var post_del = false; // Is there an deletion operation after the last equality.
+  while (pointer < diff.length) {
+    if (diff[pointer][0] == 0) { // equality found
+      if (diff[pointer][1].length < DIFF_EDIT_COST && (post_ins || post_del)) {
+        // Candidate found.
+        equalities.push(pointer);
+        pre_ins = post_ins;
+        pre_del = post_del;
+        lastequality = diff[pointer][1];
+      } else {
+        // Not a candidate, and can never become one.
+        equalities = [];
+        lastequality = '';
+      }
+      post_ins = post_del = false;
+    } else { // an insertion or deletion
+      if (diff[pointer][0] == -1)
+        post_del = true;
+      else
+        post_ins = true;
+      // Five types to be split:
+      // <ins>A</ins><del>B</del>XY<ins>C</ins><del>D</del>
+      // <ins>A</ins>X<ins>C</ins><del>D</del>
+      // <ins>A</ins><del>B</del>X<ins>C</ins>
+      // <ins>A</del>X<ins>C</ins><del>D</del>
+      // <ins>A</ins><del>B</del>X<del>C</del>
+      if (lastequality && ((pre_ins && pre_del && post_ins && post_del) || ((lastequality.length < DIFF_EDIT_COST/2) && (pre_ins + pre_del + post_ins + post_del) == 3))) {
+        //alert("Splitting: '"+lastequality+"'");
+        diff.splice(equalities[equalities.length-1], 0, [-1, lastequality]); // Duplicate record
+        diff[equalities[equalities.length-1]+1][0] = 1; // Change second copy to insert.
+        equalities.pop();  // Throw away the equality we just deleted;
+        lastequality = '';
+        if (pre_ins && pre_del) {
+          // No changes made which could affect previous entry, keep going.
+          post_ins = post_del = true;
+          equalities = [];
+        } else {
+          equalities.pop();  // Throw away the previous equality;
+          pointer = equalities.length ? equalities[equalities.length-1] : -1;
+          post_ins = post_del = false;
+        }
+        changes = true;
+      }
+    }
+    pointer++;
+  }
+
+  if (changes)
+    diff_cleanup_merge(diff);
+}
+
+
+function diff_cleanup_merge(diff) {
+  // Reorder and merge like edit sections.  Merge equalities.
+  // Any edit section can move as long as it doesn't cross an equality.
+  diff.push([0, '']);  // Add a dummy entry at the end.
+  var pointer = 0;
+  var count_delete = 0;
+  var count_insert = 0;
+  var text_delete = '';
+  var text_insert = '';
+  var record_insert, record_delete;
+  var my_xfix;
+  while(pointer < diff.length) {
+    if (diff[pointer][0] == 1) {
+      count_insert++;
+      text_insert += diff[pointer][1];
+      pointer++;
+    } else if (diff[pointer][0] == -1) {
+      count_delete++;
+      text_delete += diff[pointer][1];
+      pointer++;
+    } else {  // Upon reaching an equality, check for prior redundancies.
+      if (count_delete > 1 || count_insert > 1) {
+        if (count_delete > 1 && count_insert > 1) {
+          // Factor out any common prefixies.
+          my_xfix = diff_prefix(text_insert, text_delete);
+          if (my_xfix[2] != '') {
+            if ((pointer - count_delete - count_insert) > 0 && diff[pointer - count_delete - count_insert - 1][0] == 0) {
+              text_insert = my_xfix[0];
+              text_delete = my_xfix[1];
+              diff[pointer - count_delete - count_insert - 1][1] += my_xfix[2];
+            }
+          }
+          // Factor out any common suffixies.
+          my_xfix = diff_suffix(text_insert, text_delete);
+          if (my_xfix[2] != '') {
+            text_insert = my_xfix[0];
+            text_delete = my_xfix[1];
+            diff[pointer][1] = my_xfix[2] + diff[pointer][1];
+          }
+        }
+        // Delete the offending records and add the merged ones.
+        if (count_delete == 0)
+          diff.splice(pointer - count_delete - count_insert, count_delete + count_insert, [1, text_insert]);
+        else if (count_insert == 0)
+          diff.splice(pointer - count_delete - count_insert, count_delete + count_insert, [-1, text_delete]);
+        else
+          diff.splice(pointer - count_delete - count_insert, count_delete + count_insert, [-1, text_delete], [1, text_insert]);
+        pointer = pointer - count_delete - count_insert + (count_delete ? 1 : 0) + (count_insert ? 1 : 0) + 1;
+      } else if (pointer != 0 && diff[pointer-1][0] == 0) {
+        // Merge this equality with the previous one.
+        diff[pointer-1][1] += diff[pointer][1];
+        diff.splice(pointer, 1);
+      } else {
+        pointer++;
+      }
+      count_insert = 0;
+      count_delete = 0;
+      text_delete = '';
+      text_insert = '';
+    }
+  }
+  if (diff[diff.length-1][1] == '')
+    diff.pop();  // Remove the dummy entry at the end.
+}
+
+
+function diff_addindex(diff) {
+  // Add an index to each tuple, represents where the tuple is located in text2.
+  // e.g. [[-1, 'h', 0], [1, 'c', 0], [0, 'at', 1]]
+  var i = 0;
+  for (var x=0; x<diff.length; x++) {
+    diff[x].push(i);
+    if (diff[x][0] != -1)
+      i += diff[x][1].length;
+  }
+}
+
+
+function diff_xindex(diff, loc) {
+  // loc is a location in text1, compute and return the equivalent location in text2.
+  // e.g. "The cat" vs "The big cat", 1->1, 5->8
+  var chars1 = 0;
+  var chars2 = 0;
+  var last_chars1 = 0;
+  var last_chars2 = 0;
+  for (var x=0; x<diff.length; x++) {
+    if (diff[x][0] != 1) // Equality or deletion.
+      chars1 += diff[x][1].length;
+    if (diff[x][0] != -1) // Equality or insertion.
+      chars2 += diff[x][1].length;
+    if (chars1 > loc) // Overshot the location.
+      break;
+    last_chars1 = chars1;
+    last_chars2 = chars2;
+  }
+  if (diff.length != x && diff[x][0] == -1) // The location was deleted.
+    return last_chars2;
+  // Add the remaining character length.
+  return last_chars2 + (loc - last_chars1);
+}
+
+
+function diff_prettyhtml(diff) {
+  // Convert a diff array into a pretty HTML report.
+  diff_addindex(diff);
+  var html = '';
+  for (var x=0; x<diff.length; x++) {
+    var m = diff[x][0]; // Mode (-1=delete, 0=copy, 1=add)
+    var t = diff[x][1]; // Text of change.
+    var i = diff[x][2]; // Index of change.
+    t = t.replace(/&/g, "&amp;").replace(/</g, "&lt;").replace(/>/g, "&gt;");
+    t = t.replace(/\n/g, "&para;<BR>");
+    if (m == -1)
+      html += "<DEL STYLE='background:#FFE6E6;' TITLE='i="+i+"'>"+t+"</DEL>";
+    else if (m == 1)
+      html += "<INS STYLE='background:#E6FFE6;' TITLE='i="+i+"'>"+t+"</INS>";
+    else
+      html += "<SPAN TITLE='i="+i+"'>"+t+"</SPAN>";
+  }
+  return html;
+}
+
+
+  //////////////////////////////////////////////////////////////////////
+ //  Match                                                           //
+//////////////////////////////////////////////////////////////////////
+
+
+function match_getmaxbits() {
+  // Compute the number of bits in an int.
+  // The normal answer for JavaScript is 32.
+  var maxbits = 0;
+  var oldi = 1;
+  var newi = 2;
+  while (oldi != newi) {
+    maxbits++;
+    oldi = newi;
+    newi = newi << 1;
+  }
+  return maxbits;
+}
+var MATCH_MAXBITS = match_getmaxbits();
+
+
+function match_main(text, pattern, loc) {
+  // Locate the best instance of 'pattern' in 'text' near 'loc'.
+  loc = Math.max(0, Math.min(loc, text.length-pattern.length));
+  if (text == pattern) {
+    // Shortcut (potentially not guaranteed by the algorithm)
+    return 0;
+  } else if (text.length == 0) {
+    // Nothing to match.
+    return null;
+  } else if (text.substring(loc, loc + pattern.length) == pattern) {
+    // Perfect match at the perfect spot!  (Includes case of null pattern)
+    return loc;
+  } else {
+    // Do a fuzzy compare.
+    var match = match_bitap(text, pattern, loc);
+    return match;
+  }
+}
+
+
+function match_bitap(text, pattern, loc) {
+  // Locate the best instance of 'pattern' in 'text' near 'loc' using the Bitap algorithm.
+  if (pattern.length > MATCH_MAXBITS)
+    return alert("Pattern too long for this browser.");
+
+  // Initialise the alphabet.
+  var s = match_alphabet(pattern);
+
+  var score_text_length = text.length;
+  // Coerce the text length between reasonable maximums and minimums.
+  score_text_length = Math.max(score_text_length, MATCH_MINLENGTH);
+  score_text_length = Math.min(score_text_length, MATCH_MAXLENGTH);
+
+  function match_bitap_score (e, x) {
+    // Compute and return the score for a match with e errors and x location.
+    var d = Math.abs(loc-x);
+    return (e / pattern.length / MATCH_BALANCE) + (d / score_text_length / (1.0 - MATCH_BALANCE));
+  }
+
+  // Highest score beyond which we give up.
+  var score_threshold = MATCH_THRESHOLD;
+  // Is there a nearby exact match? (speedup)
+  var best_loc = text.indexOf(pattern, loc);
+  if (best_loc != -1)
+    score_threshold = Math.min(match_bitap_score(0, best_loc), score_threshold);
+  // What about in the other direction? (speedup)
+  best_loc = text.lastIndexOf(pattern, loc+pattern.length);
+  if (best_loc != -1)
+    score_threshold = Math.min(match_bitap_score(0, best_loc), score_threshold);
+
+  // Initialise the bit arrays.
+  var r = Array();
+  var d = -1;
+  var matchmask = Math.pow(2, pattern.length-1);
+  best_loc = null;
+
+  var bin_min, bin_mid;
+  var bin_max = Math.max(loc+loc, text.length);
+  var last_rd;
+  for (var d=0; d<pattern.length; d++) {
+    // Scan for the best match; each iteration allows for one more error.
+    var rd = Array(text.length);
+
+    // Run a binary search to determine how far from 'loc' we can stray at this error level.
+    bin_min = loc;
+    bin_mid = bin_max;
+    while(bin_min < bin_mid) {
+      if (match_bitap_score(d, bin_mid) < score_threshold)
+        bin_min = bin_mid;
+      else
+        bin_max = bin_mid;
+      bin_mid = Math.floor((bin_max - bin_min) / 2 + bin_min);
+    }
+    bin_max = bin_mid; // Use the result from this iteration as the maximum for the next.
+    var start = Math.max(0, loc - (bin_mid - loc) - 1);
+    var finish = Math.min(text.length-1, pattern.length + bin_mid);
+
+    if (text.charAt(finish) == pattern.charAt(pattern.length-1))
+      rd[finish] = Math.pow(2, d+1)-1;
+    else
+      rd[finish] = Math.pow(2, d)-1;
+    for (var j=finish-1; j>=start; j--) {
+      // The alphabet (s) is a sparse hash, so the following lines generate warnings.
+      if (d == 0) // First pass: exact match.
+        rd[j] = ((rd[j+1] << 1) | 1) & s[text.charAt(j)];
+      else // Subsequent passes: fuzzy match.
+        rd[j] = ((rd[j+1] << 1) | 1) & s[text.charAt(j)] | ((last_rd[j+1] << 1) | 1) | ((last_rd[j] << 1) | 1) | last_rd[j+1];
+      if (rd[j] & matchmask) {
+        var score = match_bitap_score(d, j);
+        // This match will almost certainly be better than any existing match.  But check anyway.
+        if (score <= score_threshold) {
+          // Told you so.
+          score_threshold = score;
+          best_loc = j;
+          if (j > loc) {
+            // When passing loc, don't exceed our current distance from loc.
+            start = Math.max(0, loc - (j - loc));
+          } else {
+            // Already passed loc, downhill from here on in.
+            break;
+          }
+        }
+      }
+    }
+    if (match_bitap_score(d+1, loc) > score_threshold) // No hope for a (better) match at greater error levels.
+      break;
+    last_rd = rd;
+  }
+  return best_loc;
+}
+
+
+function match_alphabet(pattern) {
+  // Initialise the alphabet for the Bitap algorithm.
+  var s = Object();
+  for (var i=0; i<pattern.length; i++)
+    s[pattern.charAt(i)] = 0;
+  for (var i=0; i<pattern.length; i++)
+    s[pattern.charAt(i)] |= Math.pow(2, pattern.length-i-1);
+  return s;
+}
+
+
+  //////////////////////////////////////////////////////////////////////
+ //  Patch                                                           //
+//////////////////////////////////////////////////////////////////////
+
+
+function patch_obj() {
+  // Constructor for a patch object.
+  this.diffs = [];
+  this.start1 = null;
+  this.start2 = null;
+  this.length1 = 0;
+  this.length2 = 0;
+
+  this.toString = function() {
+    // Emmulate GNU diff's format.
+    // Header: @@ -382,8 +481,9 @@
+    // Indicies are printed as 1-based, not 0-based.
+    var coords1, coords2;
+    if (this.length1 == 0)
+      coords1 = this.start1+",0";
+    else if (this.length1 == 1)
+      coords1 = this.start1+1;
+    else
+      coords1 = (this.start1+1)+","+this.length1;
+    if (this.length2 == 0)
+      coords2 = this.start2+",0";
+    else if (this.length2 == 1)
+      coords2 = this.start2+1;
+    else
+      coords2 = (this.start2+1)+","+this.length2;
+    var txt = "@@ -"+coords1+" +"+coords2+" @@\n";
+    // Escape the body of the patch with %xx notation.
+    for (var x=0; x<this.diffs.length; x++)
+      txt += ("- +".charAt(this.diffs[x][0]+1)) + encodeURI(this.diffs[x][1]) + "\n";
+    return txt.replace(/%20/g, ' ');
+  }
+
+  this.text1 = function() {
+    // Compute and return the source text (all equalities and deletions).
+    var txt = '';
+    for (var x=0; x<this.diffs.length; x++)
+      if (this.diffs[x][0] == 0 || this.diffs[x][0] == -1)
+        txt += this.diffs[x][1];
+    return txt;
+  }
+
+  this.text2 = function() {
+    // Compute and return the destination text (all equalities and insertions).
+    var txt = '';
+    for (var x=0; x<this.diffs.length; x++)
+      if (this.diffs[x][0] == 0 || this.diffs[x][0] == 1)
+        txt += this.diffs[x][1];
+    return txt;
+  }
+}
+
+
+function patch_addcontext(patch, text) {
+  var pattern = text.substring(patch.start2, patch.start2+patch.length1);
+  var padding = 0;
+  // Increase the context until we're unique (but don't let the pattern expand beyond MATCH_MAXBITS).
+  while (text.indexOf(pattern) != text.lastIndexOf(pattern) && pattern.length < MATCH_MAXBITS-PATCH_MARGIN-PATCH_MARGIN) {
+    padding += PATCH_MARGIN;
+    pattern = text.substring(patch.start2 - padding, patch.start2+patch.length1 + padding);
+  }
+  // Add one chunk for good luck.
+  padding += PATCH_MARGIN;
+  // Add the prefix.
+  var prefix = text.substring(patch.start2 - padding, patch.start2);
+  if (prefix != '')
+    patch.diffs.unshift([0, prefix]);
+  // Add the suffix
+  var suffix = text.substring(patch.start2+patch.length1, patch.start2+patch.length1 + padding);
+  if (suffix != '')
+    patch.diffs.push([0, suffix]);
+
+  // Roll back the start points.
+  patch.start1 -= prefix.length;
+  patch.start2 -= prefix.length;
+  // Extend the lengths.
+  patch.length1 += prefix.length + suffix.length;
+  patch.length2 += prefix.length + suffix.length;
+}
+
+
+function patch_make(text1, text2, diff) {
+  // Compute a list of patches to turn text1 into text2.
+  // Use diff if provided, otherwise compute it ourselves.
+  if (typeof diff == 'undefined') {
+    diff = diff_main(text1, text2, true);
+    if (diff.length > 2) {
+      diff_cleanup_semantic(diff);
+      diff_cleanup_efficiency(diff);
+    }
+  }
+  if (diff.length == 0)
+    return []; // Get rid of the null case.
+  var patches = [];
+  var patch = new patch_obj();
+  var char_count1 = 0; // Number of characters into the text1 string.
+  var char_count2 = 0; // Number of characters into the text2 string.
+  var last_type = null;
+  var prepatch_text = text1; // Recreate the patches to determine context info.
+  var postpatch_text = text1;
+  for (var x=0; x<diff.length; x++) {
+    var diff_type = diff[x][0];
+    var diff_text = diff[x][1];
+
+    if (patch.diffs.length == 0 && diff_type != 0) {
+      // A new patch starts here.
+      patch.start1 = char_count1;
+      patch.start2 = char_count2;
+    }
+
+    if (diff_type == 1) {
+      // Insertion
+      patch.diffs.push(diff[x]);
+      patch.length2 += diff_text.length;
+      postpatch_text = postpatch_text.substring(0, char_count2) + diff_text + postpatch_text.substring(char_count2);
+    } else if (diff_type == -1) {
+      // Deletion.
+      patch.length1 += diff_text.length;
+      patch.diffs.push(diff[x]);
+      postpatch_text = postpatch_text.substring(0, char_count2) + postpatch_text.substring(char_count2 + diff_text.length);
+    } else if (diff_type == 0 && diff_text.length <= 2*PATCH_MARGIN && patch.diffs.length != 0 && diff.length != x+1) {
+      // Small equality inside a patch.
+      patch.diffs.push(diff[x]);
+      patch.length1 += diff_text.length;
+      patch.length2 += diff_text.length;
+    }
+
+    last_type = diff_type;
+    if (diff_type == 0 && diff_text.length >= 2*PATCH_MARGIN) {
+      // Time for a new patch.
+      if (patch.diffs.length != 0) {
+        patch_addcontext(patch, prepatch_text);
+        patches.push(patch);
+        var patch = new patch_obj();
+        last_type = null;
+        prepatch_text = postpatch_text;
+      }
+    }
+
+    // Update the current character count.
+    if (diff_type != 1)
+      char_count1 += diff_text.length;
+    if (diff_type != -1)
+      char_count2 += diff_text.length;
+  }
+  // Pick up the leftover patch if not empty.
+  if (patch.diffs.length != 0) {
+    patch_addcontext(patch, prepatch_text);
+    patches.push(patch);
+  }
+
+  return patches;
+}
+
+
+function patch_apply(patches, text) {
+  // Merge a set of patches onto the text.
+  // Return a patched text, as well as a list of true/false values indicating which patches were applied.
+  patch_splitmax(patches);
+  var results = [];
+  var delta = 0;
+  var expected_loc, start_loc;
+  var text1, text2;
+  var diff, mod, index1, index2;
+  for (var x=0; x<patches.length; x++) {
+    expected_loc = patches[x].start2 + delta;
+    text1 = patches[x].text1();
+    start_loc = match_main(text, text1, expected_loc);
+    if (start_loc == null) {
+      // No match found.  :(
+      results.push(false);
+    } else {
+      // Found a match.  :)
+      results.push(true);
+      delta = start_loc - expected_loc;
+      text2 = text.substring(start_loc, start_loc + text1.length);
+      if (text1 == text2) {
+        // Perfect match, just shove the replacement text in.
+        text = text.substring(0, start_loc) + patches[x].text2() + text.substring(start_loc + text1.length);
+      } else {
+        // Imperfect match.  Run a diff to get a framework of equivalent indicies.
+        diff = diff_main(text1, text2, false);
+        index1 = 0;
+        for (var y=0; y<patches[x].diffs.length; y++) {
+          mod = patches[x].diffs[y];
+          if (mod[0] != 0)
+            index2 = diff_xindex(diff, index1);
+          if (mod[0] == 1) // Insertion
+            text = text.substring(0, start_loc + index2) + mod[1] + text.substring(start_loc + index2);
+          else if (mod[0] == -1) // Deletion
+            text = text.substring(0, start_loc + index2) + text.substring(start_loc + diff_xindex(diff, index1 + mod[1].length));
+          if (mod[0] != -1)
+            index1 += mod[1].length;
+        }
+      }
+    }
+  }
+  return [text, results];
+}
+
+
+function patch_splitmax(patches) {
+  // Look through the patches and break up any which are longer than the maximum limit of the match algorithm.
+  var bigpatch, patch, patch_size, start1, start2, diff_type, diff_text, precontext, postcontext, empty;
+  for (var x=0; x<patches.length; x++) {
+    if (patches[x].length1 > MATCH_MAXBITS) {
+      bigpatch = patches[x];
+      // Remove the big old patch.
+      patches.splice(x, 1);
+      patch_size = MATCH_MAXBITS;
+      start1 = bigpatch.start1;
+      start2 = bigpatch.start2;
+      precontext = '';
+      while (bigpatch.diffs.length != 0) {
+        // Create one of several smaller patches.
+        patch = new patch_obj();
+        empty = true;
+        patch.start1 = start1 - precontext.length;
+        patch.start2 = start2 - precontext.length;
+        if (precontext  != '') {
+          patch.length1 = patch.length2 = precontext.length;
+          patch.diffs.push([0, precontext]);
+        }
+        while (bigpatch.diffs.length != 0 && patch.length1 < patch_size - PATCH_MARGIN) {
+          diff_type = bigpatch.diffs[0][0];
+          diff_text = bigpatch.diffs[0][1];
+          if (diff_type == 1) {
+            // Insertions are harmless.
+            patch.length2 += diff_text.length;
+            start2 += diff_text.length;
+            patch.diffs.push(bigpatch.diffs.shift());
+            empty = false;
+          } else {
+            // Deletion or equality.  Only take as much as we can stomach.
+            diff_text = diff_text.substring(0, patch_size - patch.length1 - PATCH_MARGIN);
+            patch.length1 += diff_text.length;
+            start1 += diff_text.length;
+            if (diff_type == 0) {
+              patch.length2 += diff_text.length;
+              start2 += diff_text.length;
+            } else {
+              empty = false;
+            }
+            patch.diffs.push([diff_type, diff_text]);
+            if (diff_text == bigpatch.diffs[0][1])
+              bigpatch.diffs.shift();
+            else
+              bigpatch.diffs[0][1] = bigpatch.diffs[0][1].substring(diff_text.length);
+          }
+        }
+        // Compute the head context for the next patch.
+        precontext = patch.text2();
+        precontext = precontext.substring(precontext.length - PATCH_MARGIN);
+        // Append the end context for this patch.
+        postcontext = bigpatch.text1().substring(0, PATCH_MARGIN);
+        if (postcontext  != '') {
+          patch.length1 += postcontext.length;
+          patch.length2 += postcontext.length;
+          if (patch.diffs.length > 0 && patch.diffs[patch.diffs.length-1][0] == 0)
+            patch.diffs[patch.diffs.length-1][1] += postcontext;
+          else
+            patch.diffs.push([0, postcontext]);
+        }
+        if (!empty)
+          patches.splice(x++, 0, patch);
+      }
+    }
+  }
+}
+
+
+function patch_totext(patches) {
+  // Take a list of patches and return a textual representation.
+  var text = '';
+  for (var x=0; x<patches.length; x++)
+    text += patches[x];
+  return text;
+}
+
+
+function patch_fromtext(text) {
+  // Take a textual representation of patches and return a list of patch objects.
+  var patches = [];
+  text = text.split('\n');
+  var patch, m, chars1, chars2, sign, line;
+  while (text.length != 0) {
+    m = text[0].match(/^@@ -(\d+),?(\d*) \+(\d+),?(\d*) @@$/);
+    if (!m)
+      return alert("Invalid patch string:\n"+text[0]);
+    patch = new patch_obj();
+    patches.push(patch);
+    patch.start1 = parseInt(m[1]);
+    if (m[2] == '') {
+      patch.start1--;
+      patch.length1 = 1;
+    } else if (m[2] == '0') {
+      patch.length1 = 0;
+    } else {
+      patch.start1--;
+      patch.length1 = parseInt(m[2]);
+    }
+
+    patch.start2 = parseInt(m[3]);
+    if (m[4] == '') {
+      patch.start2--;
+      patch.length2 = 1;
+    } else if (m[4] == '0') {
+      patch.length2 = 0;
+    } else {
+      patch.start2--;
+      patch.length2 = parseInt(m[4]);
+    }
+    text.shift();
+
+    while (text.length != 0) {
+      sign = text[0].charAt(0);
+      line = decodeURIComponent(text[0].substring(1));
+      if (sign == '-') {
+        // Deletion.
+        patch.diffs.push([-1, line]);
+      } else if (sign == '+') {
+        // Insertion.
+        patch.diffs.push([1, line]);
+      } else if (sign == ' ') {
+        // Minor equality.
+        patch.diffs.push([0, line]);
+      } else if (sign == '@') {
+        // Start of next patch.
+        break;
+      } else if (sign == '') {
+        // Blank line?  Whatever.
+      } else {
+        // WTF?
+        return alert("Invalid patch mode: '"+sign+"'\n"+line);
+      }
+      text.shift();
+    }
+  }
+  return patches;
+}
+
+// EOF

Added: labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/plugins/devkit/langs/en.js
===================================================================
--- labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/plugins/devkit/langs/en.js	2007-01-11 22:09:16 UTC (rev 8831)
+++ labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/plugins/devkit/langs/en.js	2007-01-11 22:10:56 UTC (rev 8832)
@@ -0,0 +1,23 @@
+// UK lang variables
+
+tinyMCE.addToLang('devkit',{
+title : 'TinyMCE Development Kit',
+info_tab : 'Info',
+settings_tab : 'Settings',
+log_tab : 'Log',
+content_tab : 'Content',
+command_states_tab : 'Commands',
+undo_redo_tab : 'Undo/Redo',
+misc_tab : 'Misc',
+filter : 'Filter:',
+clear_log : 'Clear log',
+refresh : 'Refresh',
+info_help : 'Press Refresh to view info.',
+settings_help : 'Press Refresh to display the settings array for each TinyMCE_Control instance.',
+content_help : 'Press Refresh to display the raw and cleaned HTML content for each TinyMCE_Control instance.',
+command_states_help : 'Press Refresh to display the current command states from inst.queryCommandState. This list will also mark unsupported commands.',
+undo_redo_help : 'Press Refresh to display the global and instance undo/redo levels.',
+misc_help : 'Here are various tools for debugging and development purposes.',
+debug_events : 'Debug events',
+undo_diff : 'Diff undo levels'
+});

Added: labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/plugins/directionality/editor_plugin.js
===================================================================
--- labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/plugins/directionality/editor_plugin.js	2007-01-11 22:09:16 UTC (rev 8831)
+++ labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/plugins/directionality/editor_plugin.js	2007-01-11 22:10:56 UTC (rev 8832)
@@ -0,0 +1 @@
+tinyMCE.importPluginLanguagePack('directionality');var TinyMCE_DirectionalityPlugin={getInfo:function(){return{longname:'Directionality',author:'Moxiecode Systems AB',authorurl:'http://tinymce.moxiecode.com',infourl:'http://tinymce.moxiecode.com/tinymce/docs/plugin_directionality.html',version:tinyMCE.majorVersion+"."+tinyMCE.minorVersion}},getControlHTML:function(cn){switch(cn){case"ltr":return tinyMCE.getButtonHTML(cn,'lang_directionality_ltr_desc','{$pluginurl}/images/ltr.gif','mceDirectionLTR');case"rtl":return tinyMCE.getButtonHTML(cn,'lang_directionality_rtl_desc','{$pluginurl}/images/rtl.gif','mceDirectionRTL')}return""},execCommand:function(editor_id,element,command,user_interface,value){switch(command){case"mceDirectionLTR":var inst=tinyMCE.getInstanceById(editor_id);var elm=tinyMCE.getParentElement(inst.getFocusElement(),"p,div,td,h1,h2,h3,h4,h5,h6,pre,address");if(elm)elm.setAttribute("dir","ltr");tinyMCE.triggerNodeChange(false);return true;case"mceDirectionRTL"!
 :var inst=tinyMCE.getInstanceById(editor_id);var elm=tinyMCE.getParentElement(inst.getFocusElement(),"p,div,td,h1,h2,h3,h4,h5,h6,pre,address");if(elm)elm.setAttribute("dir","rtl");tinyMCE.triggerNodeChange(false);return true}return false},handleNodeChange:function(editor_id,node,undo_index,undo_levels,visual_aid,any_selection){function getAttrib(elm,name){return elm.getAttribute(name)?elm.getAttribute(name):""}if(node==null)return;var elm=tinyMCE.getParentElement(node,"p,div,td,h1,h2,h3,h4,h5,h6,pre,address");if(!elm){tinyMCE.switchClass(editor_id+'_ltr','mceButtonDisabled');tinyMCE.switchClass(editor_id+'_rtl','mceButtonDisabled');return true}tinyMCE.switchClass(editor_id+'_ltr','mceButtonNormal');tinyMCE.switchClass(editor_id+'_rtl','mceButtonNormal');var dir=getAttrib(elm,"dir");if(dir=="ltr"||dir=="")tinyMCE.switchClass(editor_id+'_ltr','mceButtonSelected');else tinyMCE.switchClass(editor_id+'_rtl','mceButtonSelected');return true}};tinyMCE.addPlugin("directionality",Ti!
 nyMCE_DirectionalityPlugin);
\ No newline at end of file

Added: labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/plugins/directionality/editor_plugin_src.js
===================================================================
--- labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/plugins/directionality/editor_plugin_src.js	2007-01-11 22:09:16 UTC (rev 8831)
+++ labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/plugins/directionality/editor_plugin_src.js	2007-01-11 22:10:56 UTC (rev 8832)
@@ -0,0 +1,90 @@
+/**
+ * $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('directionality');
+
+var TinyMCE_DirectionalityPlugin = {
+	getInfo : function() {
+		return {
+			longname : 'Directionality',
+			author : 'Moxiecode Systems AB',
+			authorurl : 'http://tinymce.moxiecode.com',
+			infourl : 'http://tinymce.moxiecode.com/tinymce/docs/plugin_directionality.html',
+			version : tinyMCE.majorVersion + "." + tinyMCE.minorVersion
+		};
+	},
+
+	getControlHTML : function(cn) {
+		switch (cn) {
+			case "ltr":
+				return tinyMCE.getButtonHTML(cn, 'lang_directionality_ltr_desc', '{$pluginurl}/images/ltr.gif', 'mceDirectionLTR');
+
+			case "rtl":
+				return tinyMCE.getButtonHTML(cn, 'lang_directionality_rtl_desc', '{$pluginurl}/images/rtl.gif', 'mceDirectionRTL');
+		}
+
+		return "";
+	},
+
+	execCommand : function(editor_id, element, command, user_interface, value) {
+		// Handle commands
+		switch (command) {
+			case "mceDirectionLTR":
+				var inst = tinyMCE.getInstanceById(editor_id);
+				var elm = tinyMCE.getParentElement(inst.getFocusElement(), "p,div,td,h1,h2,h3,h4,h5,h6,pre,address");
+
+				if (elm)
+					elm.setAttribute("dir", "ltr");
+
+				tinyMCE.triggerNodeChange(false);
+				return true;
+
+			case "mceDirectionRTL":
+				var inst = tinyMCE.getInstanceById(editor_id);
+				var elm = tinyMCE.getParentElement(inst.getFocusElement(), "p,div,td,h1,h2,h3,h4,h5,h6,pre,address");
+
+				if (elm)
+					elm.setAttribute("dir", "rtl");
+
+				tinyMCE.triggerNodeChange(false);
+				return true;
+		}
+
+		// Pass to next handler in chain
+		return false;
+	},
+
+	handleNodeChange : function(editor_id, node, undo_index, undo_levels, visual_aid, any_selection) {
+		function getAttrib(elm, name) {
+			return elm.getAttribute(name) ? elm.getAttribute(name) : "";
+		}
+
+		if (node == null)
+			return;
+
+		var elm = tinyMCE.getParentElement(node, "p,div,td,h1,h2,h3,h4,h5,h6,pre,address");
+		if (!elm) {
+			tinyMCE.switchClass(editor_id + '_ltr', 'mceButtonDisabled');
+			tinyMCE.switchClass(editor_id + '_rtl', 'mceButtonDisabled');
+			return true;
+		}
+
+		tinyMCE.switchClass(editor_id + '_ltr', 'mceButtonNormal');
+		tinyMCE.switchClass(editor_id + '_rtl', 'mceButtonNormal');
+
+		var dir = getAttrib(elm, "dir");
+		if (dir == "ltr" || dir == "")
+			tinyMCE.switchClass(editor_id + '_ltr', 'mceButtonSelected');
+		else
+			tinyMCE.switchClass(editor_id + '_rtl', 'mceButtonSelected');
+
+		return true;
+	}
+};
+
+tinyMCE.addPlugin("directionality", TinyMCE_DirectionalityPlugin);

Added: labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/plugins/directionality/images/ltr.gif
===================================================================
(Binary files differ)


Property changes on: labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/plugins/directionality/images/ltr.gif
___________________________________________________________________
Name: svn:mime-type
   + application/octet-stream

Added: labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/plugins/directionality/images/rtl.gif
===================================================================
(Binary files differ)


Property changes on: labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/plugins/directionality/images/rtl.gif
___________________________________________________________________
Name: svn:mime-type
   + application/octet-stream

Added: labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/plugins/directionality/langs/en.js
===================================================================
--- labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/plugins/directionality/langs/en.js	2007-01-11 22:09:16 UTC (rev 8831)
+++ labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/plugins/directionality/langs/en.js	2007-01-11 22:10:56 UTC (rev 8832)
@@ -0,0 +1,6 @@
+// UK lang variables
+
+tinyMCE.addToLang('',{
+directionality_ltr_desc : 'Direction left to right',
+directionality_rtl_desc : 'Direction right to left'
+});

Added: labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/plugins/directionality/readme.txt
===================================================================
--- labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/plugins/directionality/readme.txt	2007-01-11 22:09:16 UTC (rev 8831)
+++ labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/plugins/directionality/readme.txt	2007-01-11 22:10:56 UTC (rev 8832)
@@ -0,0 +1 @@
+Check the TinyMCE documentation for details on this plugin.

Modified: labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/plugins/emotions/editor_plugin.js
===================================================================
--- labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/plugins/emotions/editor_plugin.js	2007-01-11 22:09:16 UTC (rev 8831)
+++ labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/plugins/emotions/editor_plugin.js	2007-01-11 22:10:56 UTC (rev 8832)
@@ -1,36 +1 @@
-/* Import theme specific language pack */
-tinyMCE.importPluginLanguagePack('emotions', 'uk,se');
-
-/**
- * Returns the HTML contents of the emotions control.
- */
-function TinyMCE_emotions_getControlHTML(control_name) {
-	switch (control_name) {
-		case "emotions":
-			return '<img id="{$editor_id}_emotions" src="{$pluginurl}/images/emotions.gif" title="{$lang_emotions_desc}" width="20" height="20" class="mceButtonNormal" onmouseover="tinyMCE.switchClass(this,\'mceButtonOver\');" onmouseout="tinyMCE.restoreClass(this);" onmousedown="tinyMCE.restoreAndSwitchClass(this,\'mceButtonDown\');" onclick="tinyMCE.execInstanceCommand(\'{$editor_id}\',\'mceEmotion\');">';
-	}
-
-	return "";
-}
-
-/**
- * Executes the mceEmotion command.
- */
-function TinyMCE_emotions_execCommand(editor_id, element, command, user_interface, value) {
-	// Handle commands
-	switch (command) {
-		case "mceEmotion":
-			var template = new Array();
-
-			template['file'] = '../../plugins/emotions/emotions.htm'; // Relative to theme
-			template['width'] = 150;
-			template['height'] = 180;
-
-			tinyMCE.openWindow(template, {editor_id : editor_id});
-
-			return true;
-	}
-
-	// Pass to next handler in chain
-	return false;
-}
+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!
 );
\ No newline at end of file

Added: labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/plugins/emotions/editor_plugin_src.js
===================================================================
--- labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/plugins/emotions/editor_plugin_src.js	2007-01-11 22:09:16 UTC (rev 8831)
+++ labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/plugins/emotions/editor_plugin_src.js	2007-01-11 22:10:56 UTC (rev 8832)
@@ -0,0 +1,63 @@
+/**
+ * $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');
+
+// Plucin static class
+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
+		};
+	},
+
+	/**
+	 * Returns the HTML contents of the emotions control.
+	 */
+	getControlHTML : function(cn) {
+		switch (cn) {
+			case "emotions":
+				return tinyMCE.getButtonHTML(cn, 'lang_emotions_desc', '{$pluginurl}/images/emotions.gif', 'mceEmotion');
+		}
+
+		return "";
+	},
+
+	/**
+	 * Executes the mceEmotion command.
+	 */
+	execCommand : function(editor_id, element, command, user_interface, value) {
+		// Handle commands
+		switch (command) {
+			case "mceEmotion":
+				var template = new Array();
+
+				template['file'] = '../../plugins/emotions/emotions.htm'; // Relative to theme
+				template['width'] = 160;
+				template['height'] = 160;
+
+				// Language specific width and height addons
+				template['width'] += tinyMCE.getLang('lang_emotions_delta_width', 0);
+				template['height'] += tinyMCE.getLang('lang_emotions_delta_height', 0);
+
+				tinyMCE.openWindow(template, {editor_id : editor_id, inline : "yes"});
+
+				return true;
+		}
+
+		// Pass to next handler in chain
+		return false;
+	}
+};
+
+// Register plugin
+tinyMCE.addPlugin('emotions', TinyMCE_EmotionsPlugin);

Modified: labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/plugins/emotions/emotions.htm
===================================================================
--- labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/plugins/emotions/emotions.htm	2007-01-11 22:09:16 UTC (rev 8831)
+++ labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/plugins/emotions/emotions.htm	2007-01-11 22:10:56 UTC (rev 8832)
@@ -1,45 +1,40 @@
-<html>
+<html xmlns="http://www.w3.org/1999/xhtml">
 <head>
-<title>{$lang_insert_emotions_title}</title>
-<script language="javascript" src="../../tiny_mce_popup.js"></script>
-<script language="javascript">
-	function insertEmotion(file_name) {
-		if (window.opener) {
-			tinyMCE.insertImage(tinyMCE.baseURL + "/plugins/emotions/images/" + file_name);
-			window.close();
-		}
-	}
-</script>
+	<title>{$lang_emotions_title}</title>
+	<script language="javascript" type="text/javascript" src="../../tiny_mce_popup.js"></script>
+	<script language="javascript" type="text/javascript" src="jscripts/functions.js"></script>
+	<base target="_self" />
 </head>
-<body onload="window.focus();">
-<div align="center">
-<div class="title">{$lang_insert_emotions_title}:<br /><br /></div>
-<table border="0" cellspacing="0" cellpadding="4">
-  <tr>
-    <td><a href="#" onclick="insertEmotion('smiley-cool.gif');"><img src="images/smiley-cool.gif" width="18" height="18" border="0" /></a></td>
-    <td><a href="#" onclick="insertEmotion('smiley-cry.gif');"><img src="images/smiley-cry.gif" width="18" height="18" border="0" /></a></td>
-    <td><a href="#" onclick="insertEmotion('smiley-embarassed.gif');"><img src="images/smiley-embarassed.gif" width="18" height="18" border="0" /></a></td>
-    <td><a href="#" onclick="insertEmotion('smiley-foot-in-mouth.gif');"><img src="images/smiley-foot-in-mouth.gif" width="18" height="18" border="0" /></a></td>
-  </tr>
-  <tr>
-    <td><a href="#" onclick="insertEmotion('smiley-frown.gif');"><img src="images/smiley-frown.gif" width="18" height="18" border="0" /></a></td>
-    <td><a href="#" onclick="insertEmotion('smiley-innocent.gif');"><img src="images/smiley-innocent.gif" width="18" height="18" border="0" /></a></td>
-    <td><a href="#" onclick="insertEmotion('smiley-kiss.gif');"><img src="images/smiley-kiss.gif" width="18" height="18" border="0" /></a></td>
-    <td><a href="#" onclick="insertEmotion('smiley-laughing.gif');"><img src="images/smiley-laughing.gif" width="18" height="18" border="0" /></a></td>
-  </tr>
-  <tr>
-    <td><a href="#" onclick="insertEmotion('smiley-money-mouth.gif');"><img src="images/smiley-money-mouth.gif" width="18" height="18" border="0" /></a></td>
-    <td><a href="#" onclick="insertEmotion('smiley-sealed.gif');"><img src="images/smiley-sealed.gif" width="18" height="18" border="0" /></a></td>
-    <td><a href="#" onclick="insertEmotion('smiley-smile.gif');"><img src="images/smiley-smile.gif" width="18" height="18" border="0" /></a></td>
-    <td><a href="#" onclick="insertEmotion('smiley-surprised.gif');"><img src="images/smiley-surprised.gif" width="18" height="18" border="0" /></a></td>
-  </tr>
-  <tr>
-    <td><a href="#" onclick="insertEmotion('smiley-tongue-out.gif');"><img src="images/smiley-tongue-out.gif" width="18" height="18" border="0" /></a></td>
-    <td><a href="#" onclick="insertEmotion('smiley-undecided.gif');"><img src="images/smiley-undecided.gif" width="18" height="18" border="0" /></a></td>
-    <td><a href="#" onclick="insertEmotion('smiley-wink.gif');"><img src="images/smiley-wink.gif" width="18" height="18" border="0" /></a></td>
-    <td><a href="#" onclick="insertEmotion('smiley-yell.gif');"><img src="images/smiley-yell.gif" width="18" height="18" border="0" /></a></td>
-  </tr>
-</table>
-</div>
+<body onload="tinyMCEPopup.executeOnLoad('init();');" style="display: none">
+	<div align="center">
+		<div class="title">{$lang_emotions_title}:<br /><br /></div>
+
+		<table border="0" cellspacing="0" cellpadding="4">
+		  <tr>
+			<td><a href="javascript:insertEmotion('smiley-cool.gif','lang_emotions_cool');"><img src="images/smiley-cool.gif" width="18" height="18" border="0" alt="{$lang_emotions_cool}" title="{$lang_emotions_cool}" /></a></td>
+			<td><a href="javascript:insertEmotion('smiley-cry.gif','lang_emotions_cry');"><img src="images/smiley-cry.gif" width="18" height="18" border="0" alt="{$lang_emotions_cry}" title="{$lang_emotions_cry}" /></a></td>
+			<td><a href="javascript:insertEmotion('smiley-embarassed.gif','lang_emotions_embarassed');"><img src="images/smiley-embarassed.gif" width="18" height="18" border="0" alt="{$lang_emotions_embarassed}" title="{$lang_emotions_embarassed}" /></a></td>
+			<td><a href="javascript:insertEmotion('smiley-foot-in-mouth.gif','lang_emotions_foot_in_mouth');"><img src="images/smiley-foot-in-mouth.gif" width="18" height="18" border="0" alt="{$lang_emotions_foot_in_mouth}" title="{$lang_emotions_foot_in_mouth}" /></a></td>
+		  </tr>
+		  <tr>
+			<td><a href="javascript:insertEmotion('smiley-frown.gif','lang_emotions_frown');"><img src="images/smiley-frown.gif" width="18" height="18" border="0" alt="{$lang_emotions_frown}" title="{$lang_emotions_frown}" /></a></td>
+			<td><a href="javascript:insertEmotion('smiley-innocent.gif','lang_emotions_innocent');"><img src="images/smiley-innocent.gif" width="18" height="18" border="0" alt="{$lang_emotions_innocent}" title="{$lang_emotions_innocent}" /></a></td>
+			<td><a href="javascript:insertEmotion('smiley-kiss.gif','lang_emotions_kiss');"><img src="images/smiley-kiss.gif" width="18" height="18" border="0" alt="{$lang_emotions_kiss}" title="{$lang_emotions_kiss}" /></a></td>
+			<td><a href="javascript:insertEmotion('smiley-laughing.gif','lang_emotions_laughing');"><img src="images/smiley-laughing.gif" width="18" height="18" border="0" alt="{$lang_emotions_laughing}" title="{$lang_emotions_laughing}" /></a></td>
+		  </tr>
+		  <tr>
+			<td><a href="javascript:insertEmotion('smiley-money-mouth.gif','lang_emotions_money_mouth');"><img src="images/smiley-money-mouth.gif" width="18" height="18" border="0" alt="{$lang_emotions_money_mouth}" title="{$lang_emotions_money_mouth}" /></a></td>
+			<td><a href="javascript:insertEmotion('smiley-sealed.gif','lang_emotions_sealed');"><img src="images/smiley-sealed.gif" width="18" height="18" border="0" alt="{$lang_emotions_sealed}" title="{$lang_emotions_sealed}" /></a></td>
+			<td><a href="javascript:insertEmotion('smiley-smile.gif','lang_emotions_smile');"><img src="images/smiley-smile.gif" width="18" height="18" border="0" alt="{$lang_emotions_smile}" title="{$lang_emotions_smile}" /></a></td>
+			<td><a href="javascript:insertEmotion('smiley-surprised.gif','lang_emotions_surprised');"><img src="images/smiley-surprised.gif" width="18" height="18" border="0" alt="{$lang_emotions_surprised}" title="{$lang_emotions_surprised}" /></a></td>
+		  </tr>
+		  <tr>
+			<td><a href="javascript:insertEmotion('smiley-tongue-out.gif','lang_emotions_tongue_out');"><img src="images/smiley-tongue-out.gif" width="18" height="18" border="0" alt="{$lang_emotions_tongue-out}" title="{$lang_emotions_tongue_out}" /></a></td>
+			<td><a href="javascript:insertEmotion('smiley-undecided.gif','lang_emotions_undecided');"><img src="images/smiley-undecided.gif" width="18" height="18" border="0" alt="{$lang_emotions_undecided}" title="{$lang_emotions_undecided}" /></a></td>
+			<td><a href="javascript:insertEmotion('smiley-wink.gif','lang_emotions_wink');"><img src="images/smiley-wink.gif" width="18" height="18" border="0" alt="{$lang_emotions_wink}" title="{$lang_emotions_wink}" /></a></td>
+			<td><a href="javascript:insertEmotion('smiley-yell.gif','lang_emotions_yell');"><img src="images/smiley-yell.gif" width="18" height="18" border="0" alt="{$lang_emotions_yell}" title="{$lang_emotions_yell}" /></a></td>
+		  </tr>
+		</table>
+	</div>
 </body>
 </html>

Modified: labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/plugins/emotions/images/emotions.gif
===================================================================
(Binary files differ)

Modified: labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/plugins/emotions/images/smiley-cool.gif
===================================================================
(Binary files differ)

Modified: labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/plugins/emotions/images/smiley-cry.gif
===================================================================
(Binary files differ)

Modified: labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/plugins/emotions/images/smiley-embarassed.gif
===================================================================
(Binary files differ)

Modified: labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/plugins/emotions/images/smiley-foot-in-mouth.gif
===================================================================
(Binary files differ)

Modified: labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/plugins/emotions/images/smiley-frown.gif
===================================================================
(Binary files differ)

Modified: labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/plugins/emotions/images/smiley-innocent.gif
===================================================================
(Binary files differ)

Modified: labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/plugins/emotions/images/smiley-kiss.gif
===================================================================
(Binary files differ)

Modified: labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/plugins/emotions/images/smiley-laughing.gif
===================================================================
(Binary files differ)

Modified: labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/plugins/emotions/images/smiley-money-mouth.gif
===================================================================
(Binary files differ)

Modified: labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/plugins/emotions/images/smiley-sealed.gif
===================================================================
(Binary files differ)

Modified: labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/plugins/emotions/images/smiley-smile.gif
===================================================================
(Binary files differ)

Modified: labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/plugins/emotions/images/smiley-surprised.gif
===================================================================
(Binary files differ)

Modified: labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/plugins/emotions/images/smiley-tongue-out.gif
===================================================================
(Binary files differ)

Modified: labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/plugins/emotions/images/smiley-undecided.gif
===================================================================
(Binary files differ)

Modified: labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/plugins/emotions/images/smiley-wink.gif
===================================================================
(Binary files differ)

Modified: labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/plugins/emotions/images/smiley-yell.gif
===================================================================
(Binary files differ)

Added: labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/plugins/emotions/jscripts/functions.js
===================================================================
--- labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/plugins/emotions/jscripts/functions.js	2007-01-11 22:09:16 UTC (rev 8831)
+++ labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/plugins/emotions/jscripts/functions.js	2007-01-11 22:10:56 UTC (rev 8832)
@@ -0,0 +1,21 @@
+function init() {
+	tinyMCEPopup.resizeToInnerSize();
+}
+
+function insertEmotion(file_name, title) {
+	title = tinyMCE.getLang(title);
+
+	if (title == null)
+		title = "";
+
+	// XML encode
+	title = title.replace(/&/g, '&amp;');
+	title = title.replace(/\"/g, '&quot;');
+	title = title.replace(/</g, '&lt;');
+	title = title.replace(/>/g, '&gt;');
+
+	var html = '<img src="' + tinyMCE.baseURL + "/plugins/emotions/images/" + file_name + '" mce_src="' + tinyMCE.baseURL + "/plugins/emotions/images/" + file_name + '" border="0" alt="' + title + '" title="' + title + '" />';
+
+	tinyMCE.execCommand('mceInsertContent', false, html);
+	tinyMCEPopup.close();
+}

Added: labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/plugins/emotions/langs/en.js
===================================================================
--- labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/plugins/emotions/langs/en.js	2007-01-11 22:09:16 UTC (rev 8831)
+++ labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/plugins/emotions/langs/en.js	2007-01-11 22:10:56 UTC (rev 8832)
@@ -0,0 +1,22 @@
+// UK lang variables
+
+tinyMCE.addToLang('emotions',{
+title : 'Insert emotion',
+desc : 'Emotions',
+cool : 'Cool',
+cry : 'Cry',
+embarassed : 'Embarassed',
+foot_in_mouth : 'Foot in mouth',
+frown : 'Frown',
+innocent : 'Innocent',
+kiss : 'Kiss',
+laughing : 'Laughing',
+money_mouth : 'Money mouth',
+sealed : 'Sealed',
+smile : 'Smile',
+surprised : 'Surprised',
+tongue_out : 'Tongue out',
+undecided : 'Undecided',
+wink : 'Wink',
+yell : 'Yell'
+});

Modified: labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/plugins/emotions/readme.txt
===================================================================
--- labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/plugins/emotions/readme.txt	2007-01-11 22:09:16 UTC (rev 8831)
+++ labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/plugins/emotions/readme.txt	2007-01-11 22:10:56 UTC (rev 8832)
@@ -1,20 +1 @@
- Emotions plugin for TinyMCE
-------------------------------
-
-Installation instructions:
-  * Copy the emotions directory to the plugins directory of TinyMCE (/jscripts/tiny_mce/plugins).
-  * Add plugin to TinyMCE plugin option list example: plugins : "emotions".
-  * Add the emotions button name to button list, example: theme_advanced_buttons3_add : "emotions".
-
-Initialization example:
-  tinyMCE.init({
-    theme : "advanced",
-    mode : "textareas",
-    plugins : "emotions",
-    theme_advanced_buttons3_add : "emotions"
-  });
-
-Copyright notice:
-  These emotions where taken from Mozilla Thunderbird.
-  I hope they don't get angry if I use them here after all this is a open source project
-  aswell and I realy love their product.
+Check the TinyMCE documentation for details on this plugin.

Added: labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/plugins/flash/css/content.css
===================================================================
--- labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/plugins/flash/css/content.css	2007-01-11 22:09:16 UTC (rev 8831)
+++ labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/plugins/flash/css/content.css	2007-01-11 22:10:56 UTC (rev 8832)
@@ -0,0 +1,7 @@
+.mceItemFlash {
+	border: 1px dotted #cc0000;
+	background-image: url('../images/flash.gif');
+	background-position: center;
+	background-repeat: no-repeat;
+	background-color: #ffffcc;
+}

Added: labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/plugins/flash/css/flash.css
===================================================================
--- labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/plugins/flash/css/flash.css	2007-01-11 22:09:16 UTC (rev 8831)
+++ labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/plugins/flash/css/flash.css	2007-01-11 22:10:56 UTC (rev 8832)
@@ -0,0 +1,11 @@
+.panel_wrapper div.current {
+	height: 100px;
+}
+
+#width, #height {
+	width: 50px;
+}
+
+#file {
+	width: 250px;
+}

Modified: labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/plugins/flash/editor_plugin.js
===================================================================
--- labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/plugins/flash/editor_plugin.js	2007-01-11 22:09:16 UTC (rev 8831)
+++ labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/plugins/flash/editor_plugin.js	2007-01-11 22:10:56 UTC (rev 8832)
@@ -1,194 +1 @@
-/* Import theme specific language pack */
-tinyMCE.importPluginLanguagePack('flash', 'uk,se,de');
-
-function TinyMCE_flash_getControlHTML(control_name) {
-    switch (control_name) {
-        case "flash":
-            return '<img id="{$editor_id}_flash" src="{$pluginurl}/images/flash.gif" title="{$lang_insert_flash}" width="20" height="20" class="mceButtonNormal" onmouseover="tinyMCE.switchClass(this,\'mceButtonOver\');" onmouseout="tinyMCE.restoreClass(this);" onmousedown="tinyMCE.restoreAndSwitchClass(this,\'mceButtonDown\');" onclick="tinyMCE.execInstanceCommand(\'{$editor_id}\',\'mceFlash\');" />';
-    }
-    return "";
-}
-
-/**
- * Executes the mceFlash command.
- */
-function TinyMCE_flash_execCommand(editor_id, element, command, user_interface, value) {
-    // Handle commands
-    switch (command) {
-        case "mceFlash":
-            var template = new Array();
-            template['file']   = '../../plugins/flash/flash.htm'; // Relative to theme
-            template['width']  = 400;
-            template['height'] = 180;
-            var name = "", swffile = "", swfwidth = "", swfheight = "", mceDo = "insert";
-            if (tinyMCE.selectedElement != null && tinyMCE.selectedElement.nodeName.toLowerCase() == "img"){
-                tinyMCE.flashElement = tinyMCE.selectedElement;
-                if (tinyMCE.flashElement) {
-                    name    = tinyMCE.flashElement.getAttribute('name') ? tinyMCE.flashElement.getAttribute('name') : "";
-                    if (name!='mce_plugin_flash')
-                        return;
-                    swfwidth   = tinyMCE.flashElement.getAttribute('width') ? tinyMCE.flashElement.getAttribute('width') : "";
-                    swfheight  = tinyMCE.flashElement.getAttribute('height') ? tinyMCE.flashElement.getAttribute('height') : "";
-                    swffile     = tinyMCE.flashElement.getAttribute('alt') ? tinyMCE.flashElement.getAttribute('alt') : "";
-                    mceDo = "update";
-                }
-            }
-            tinyMCE.openWindow(template, {editor_id : editor_id, swffile : swffile, swfwidth : swfwidth, swfheight : swfheight, mceDo : mceDo});                   
-       return true;
-   }
-   // Pass to next handler in chain
-   return false;
-}
-
-/**
- * Called when content cleanup is performed.
- */
-function TinyMCE_flash_cleanup(type, content) {
-	// Handle custom cleanup
-	switch (type) {
-		// Called when editor is filled with content
-		case "insert_to_editor":
-			return TinyMCE_flash_mkCodeCleanup('insertToEditor', content);
-
-		// Called when editor is pass out content
-		case "get_from_editor":
-			return TinyMCE_flash_mkCodeCleanup('getFromEditor', content);
-	}
-
-	// Pass through to next handler in chain
-	return content;
-}
-
-function TinyMCE_flash_handleNodeChange(editor_id, node, undo_index, undo_levels, visual_aid, any_selection) {
-	function getAttrib(elm, name) {
-		return elm.getAttribute(name) ? elm.getAttribute(name) : "";
-	}
-
-	tinyMCE.switchClassSticky(editor_id + '_flash', 'mceButtonNormal');
-
-	do {
-		if (node.nodeName.toLowerCase() == "img" && getAttrib(node, 'name').indexOf('mce_plugin_flash') == 0)
-			tinyMCE.switchClassSticky(editor_id + '_flash', 'mceButtonSelected');
-	} while ((node = node.parentNode));
-
-	return true;
-}
-
-/* Custom cleanup functions for the Flash support */
-
-/**/
-// added 2004 by Michael Keck <me at michaelkeck.de>
-// why such a thing?
-// - okay it's needed to have a weelformated code for better searching
-//   and replacement of some elements
-function TinyMCE_flash_mkAttribOrder(content) {
-    var attribOrder = new Array(
-        'src','href','target','width','height','face','size','maxlength','border','align','valign',
-        'cellpadding','cellspacing','colspan','rowspan','bgcolor','background','color','class','style',
-        'alt','title','name','id','classid','codebase','menu','quality','pluginspage','type','value',
-        'checked','disabled','readonly','selected','method','enctype',
-        'onmouseover','onmouseout','onclick','onfocus','onblur','onchange','noshade'
-    );
-    var tagArray = new Array();
-    tagArray = content.split('<');
-    var orgTags = new Array();
-    var newTags = new Array();
-    tagCount = -1;
-    for (var i=1; i<tagArray.length; i++) {
-        if (tagArray[i].substring(0,1)!='/' && tagArray[i]!='') {
-            tmpTag = tagArray[i].split('>');
-            tagCount++;
-            orgTags[tagCount] = '<' + tmpTag[0] + '>';
-        }
-    }
-    for (var i=0; i<orgTags.length; i++) {
-        newAttributesString = "";
-        savedSlash = '>';
-        var attribVals = new Array();
-        if (orgTags[i].lastIndexOf('/>')!=-1) {
-            savedSlash=' />';
-        }
-        if (orgTags[i].indexOf(" ")!=-1) {
-            for (var j=0; j<attribOrder.length; j++) {
-                if (orgTags[i].indexOf(' ' + attribOrder[j] + '="')!=-1) {
-                   tmpAttrib    = orgTags[i].split(attribOrder[j]+'="');
-                   if (typeof(tmpAttrib[1])!='undefined') {
-                       tmpArrAttrib = tmpAttrib[1].split('"');
-                       attribVals[attribOrder[j]]=tmpArrAttrib[0];
-                   }
-                }
-            }
-            for (var j=0; j<attribOrder.length; j++) {
-                if (typeof(attribVals[attribOrder[j]])!='undefined') {
-                    newAttributesString += ' ' + attribOrder[j] + '="' + attribVals[attribOrder[j]] + '"';
-                }
-            }
-            savedTag   = '' + orgTags[i].substring(0,orgTags[i].indexOf(" ")) + newAttributesString + savedSlash + '';
-            newTags[i] = savedTag;
-        } else {
-            newTags[i] = '' + orgTags[i] + '';
-        }
-    }
-    for (var i=0; i<orgTags.length; i++){
-         content = content.replace(orgTags[i],newTags[i]);
-    }
-    return content;
-}
-
-function TinyMCE_flash_mkCodeCleanup(action, content) {
-// some code removes and replaces
-    content = content.replace(new RegExp('\r\n','gi'),'\n');
-    content = content.replace(new RegExp('>\n','gi'),'>');
-    content = content.replace(new RegExp('\n<','gi'),'<');
-    content = content.replace(new RegExp('<param value="[^"]*" name="Quality" />','gi'),'<param name="quality" value="high" />');
-    content = content.replace(new RegExp('<param value="[^"]*" name="Menu" />','gi'),'<param name="menu" value="false" />');
-    content = content.replace(new RegExp('<param value="([^"]*)" name="src" \/>','gi'),'<param name="src" value="$1" />');
-    content = content.replace(new RegExp('<param value[^>]*>','gi'),'');
-    content = content.replace(new RegExp('strong>','gi'),'b>');
-    content = content.replace(new RegExp('em>','gi'),'em>');
-    content = TinyMCE_flash_mkAttribOrder(content);
-// a special order in attrib list is needed
-    swfObjSearch = new RegExp('<object width="([^"]*)" height="([^"]*)" '
-        + 'classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" '
-        + 'codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,29,0">'
-        + '<param name="src" value="([^"]*)" />'
-        + '<param name="quality" value="high" />'
-        + '<param name="menu" value="false" />'
-        + '</object>','gi');
-    swfObjReplace = '<object width="$1" height="$2" classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" '
-        + 'codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,29,0">'
-        + '<param name="src" value="$3" /><param name="quality" value="high" /><param name="menu" value="false" />'
-        + '<embed src="$3" width="$1" height="$2" menu="false" quality="high" pluginspage="http://www.macromedia.com/go/getflashplayer" '
-        + 'type="application/x-shockwave-flash"></embed></object>';
-    content = content.replace(swfObjSearch,swfObjReplace);
-    switch(action) {
-        case 'insertToEditor':
-            objSearch = new RegExp('<object width="([^"]*)" height="([^"]*)" classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" '
-                + 'codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,29,0">'
-                + '<param name="src" value="([^"]*)" /><param name="quality" value="high" /><param name="menu" value="false" />'
-                + '<embed src="([^"]*)" width="([^"]*)" height="([^"]*)" menu="false" quality="high" pluginspage="http://www.macromedia.com/go/getflashplayer" '
-                + 'type="application/x-shockwave-flash"></embed></object>','gi');
-            objReplace = '<img src="' + (tinyMCE.getParam("theme_href") + "/images/spacer.gif") + '" width="$1" height="$2" border="0" class="mce_plugin_flash" alt="$3" title="$3" name="mce_plugin_flash" />';
-            content = content.replace(objSearch,objReplace);
-        break;
-        case 'getFromEditor':
-            objSearch = new RegExp('<img src="([^"]*)" width="([^"]*)" height="([^"]*)" border="([^"]*)" class="mce_plugin_flash" alt="([^"]*)" title="([^"]*)" name="mce_plugin_flash" />','gi');
-            objReplace = '<object width="$2" height="$3" classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" '
-                + 'codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,29,0">'
-                + '<param name="src" value="$5" /><param name="quality" value="high" /><param name="menu" value="false" />'
-                + '<embed src="$5" width="$2" height="$3" menu="false" quality="high" pluginspage="http://www.macromedia.com/go/getflashplayer" '
-                + 'type="application/x-shockwave-flash"></embed></object>';
-            content = content.replace(objSearch,objReplace);
-        break;
-    }
-    content = content.replace(new RegExp('\r\n','gi'),'\n');
-    content = content.replace(new RegExp('>\n','gi'),'>');
-    content = content.replace(new RegExp('\n<','gi'),'<');
-    content = TinyMCE_flash_mkAttribOrder(content);
-    content = content.replace(new RegExp('\r\n','gi'),'\n');
-    content = content.replace(new RegExp('>\n','gi'),'>');
-    content = content.replace(new RegExp('\n<','gi'),'<');
-    return content;
-/**/
-}
-
+tinyMCE.importPluginLanguagePack('flash');var TinyMCE_FlashPlugin={getInfo:function(){return{longname:'Flash',author:'Moxiecode Systems AB',authorurl:'http://tinymce.moxiecode.com',infourl:'http://tinymce.moxiecode.com/tinymce/docs/plugin_flash.html',version:tinyMCE.majorVersion+"."+tinyMCE.minorVersion}},initInstance:function(inst){if(!tinyMCE.settings['flash_skip_plugin_css'])tinyMCE.importCSS(inst.getDoc(),tinyMCE.baseURL+"/plugins/flash/css/content.css")},getControlHTML:function(cn){switch(cn){case"flash":return tinyMCE.getButtonHTML(cn,'lang_flash_desc','{$pluginurl}/images/flash.gif','mceFlash')}return""},execCommand:function(editor_id,element,command,user_interface,value){switch(command){case"mceFlash":var name="",swffile="",swfwidth="",swfheight="",action="insert";var template=new Array();var inst=tinyMCE.getInstanceById(editor_id);var focusElm=inst.getFocusElement();template['file']='../../plugins/flash/flash.htm';template['width']=430;template['height']=175;templa!
 te['width']+=tinyMCE.getLang('lang_flash_delta_width',0);template['height']+=tinyMCE.getLang('lang_flash_delta_height',0);if(focusElm!=null&&focusElm.nodeName.toLowerCase()=="img"){name=tinyMCE.getAttrib(focusElm,'class');if(name.indexOf('mceItemFlash')==-1)return true;swffile=tinyMCE.getAttrib(focusElm,'alt');if(tinyMCE.getParam('convert_urls'))swffile=eval(tinyMCE.settings['urlconverter_callback']+"(swffile, null, true);");swfwidth=tinyMCE.getAttrib(focusElm,'width');swfheight=tinyMCE.getAttrib(focusElm,'height');action="update"}tinyMCE.openWindow(template,{editor_id:editor_id,inline:"yes",swffile:swffile,swfwidth:swfwidth,swfheight:swfheight,action:action});return true}return false},cleanup:function(type,content){switch(type){case"insert_to_editor_dom":if(tinyMCE.getParam('convert_urls')){var imgs=content.getElementsByTagName("img");for(var i=0;i<imgs.length;i++){if(tinyMCE.getAttrib(imgs[i],"class")=="mceItemFlash"){var src=tinyMCE.getAttrib(imgs[i],"alt");if(tinyMCE.ge!
 tParam('convert_urls'))src=eval(tinyMCE.settings['urlconverter_callbac
k']+"(src, null, true);");imgs[i].setAttribute('alt',src);imgs[i].setAttribute('title',src)}}}break;case"get_from_editor_dom":var imgs=content.getElementsByTagName("img");for(var i=0;i<imgs.length;i++){if(tinyMCE.getAttrib(imgs[i],"class")=="mceItemFlash"){var src=tinyMCE.getAttrib(imgs[i],"alt");if(tinyMCE.getParam('convert_urls'))src=eval(tinyMCE.settings['urlconverter_callback']+"(src, null, true);");imgs[i].setAttribute('alt',src);imgs[i].setAttribute('title',src)}}break;case"insert_to_editor":var startPos=0;var embedList=new Array();content=content.replace(new RegExp('<[ ]*embed','gi'),'<embed');content=content.replace(new RegExp('<[ ]*/embed[ ]*>','gi'),'</embed>');content=content.replace(new RegExp('<[ ]*object','gi'),'<object');content=content.replace(new RegExp('<[ ]*/object[ ]*>','gi'),'</object>');while((startPos=content.indexOf('<embed',startPos+1))!=-1){var endPos=content.indexOf('>',startPos);var attribs=TinyMCE_FlashPlugin._parseAttributes(content.substring(st!
 artPos+6,endPos));embedList[embedList.length]=attribs}var index=0;while((startPos=content.indexOf('<object',startPos))!=-1){if(index>=embedList.length)break;var attribs=embedList[index];endPos=content.indexOf('</object>',startPos);endPos+=9;var contentAfter=content.substring(endPos);content=content.substring(0,startPos);content+='<img width="'+attribs["width"]+'" height="'+attribs["height"]+'"';content+=' src="'+(tinyMCE.getParam("theme_href")+'/images/spacer.gif')+'" title="'+attribs["src"]+'"';content+=' alt="'+attribs["src"]+'" class="mceItemFlash" />'+content.substring(endPos);content+=contentAfter;index++;startPos++}var index=0;while((startPos=content.indexOf('<embed',startPos))!=-1){if(index>=embedList.length)break;var attribs=embedList[index];endPos=content.indexOf('>',startPos);endPos+=9;var contentAfter=content.substring(endPos);content=content.substring(0,startPos);content+='<img width="'+attribs["width"]+'" height="'+attribs["height"]+'"';content+=' src="'+(tinyM!
 CE.getParam("theme_href")+'/images/spacer.gif')+'" title="'+attribs["s
rc"]+'"';content+=' alt="'+attribs["src"]+'" class="mceItemFlash" />'+content.substring(endPos);content+=contentAfter;index++;startPos++}break;case"get_from_editor":var startPos=-1;while((startPos=content.indexOf('<img',startPos+1))!=-1){var endPos=content.indexOf('/>',startPos);var attribs=TinyMCE_FlashPlugin._parseAttributes(content.substring(startPos+4,endPos));if(attribs['class']!="mceItemFlash")continue;endPos+=2;var embedHTML='';var wmode=tinyMCE.getParam("flash_wmode","");var quality=tinyMCE.getParam("flash_quality","high");var menu=tinyMCE.getParam("flash_menu","false");embedHTML+='<object classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000"';embedHTML+=' codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,29,0"';embedHTML+=' width="'+attribs["width"]+'" height="'+attribs["height"]+'">';embedHTML+='<param name="movie" value="'+attribs["title"]+'" />';embedHTML+='<param name="quality" value="'+quality+'" />';embedHTML+='<param nam!
 e="menu" value="'+menu+'" />';embedHTML+='<param name="wmode" value="'+wmode+'" />';embedHTML+='<embed src="'+attribs["title"]+'" wmode="'+wmode+'" quality="'+quality+'" menu="'+menu+'" pluginspage="http://www.macromedia.com/go/getflashplayer" type="application/x-shockwave-flash" width="'+attribs["width"]+'" height="'+attribs["height"]+'"></embed></object>';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"&&tinyMCE.getAttrib(node,'class').indexOf('mceItemFlash')==0){tinyMCE.switchClass(editor_id+'_flash','mceButtonSelected');return true}}while((node=node.parentNode));tinyMCE.switchClass(editor_id+'_flash','mceButtonNormal');return true},_parseAttributes:function(attribute_string){var attributeName="";var attributeValue="";var withInName;var withInV!
 alue;var attributes=new Array();var whiteSpaceRegExp=new RegExp('^[ \n
\r\t]+','g');if(attribute_string==null||attribute_string.length<2)return null;withInName=withInValue=false;for(var i=0;i<attribute_string.length;i++){var chr=attribute_string.charAt(i);if((chr=='"'||chr=="'")&&!withInValue)withInValue=true;else if((chr=='"'||chr=="'")&&withInValue){withInValue=false;var pos=attributeName.lastIndexOf(' ');if(pos!=-1)attributeName=attributeName.substring(pos+1);attributes[attributeName.toLowerCase()]=attributeValue.substring(1);attributeName="";attributeValue=""}else if(!whiteSpaceRegExp.test(chr)&&!withInName&&!withInValue)withInName=true;if(chr=='='&&withInName)withInName=false;if(withInName)attributeName+=chr;if(withInValue)attributeValue+=chr}return attributes}};tinyMCE.addPlugin("flash",TinyMCE_FlashPlugin);
\ No newline at end of file

Added: labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/plugins/flash/editor_plugin_src.js
===================================================================
--- labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/plugins/flash/editor_plugin_src.js	2007-01-11 22:09:16 UTC (rev 8831)
+++ labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/plugins/flash/editor_plugin_src.js	2007-01-11 22:10:56 UTC (rev 8832)
@@ -0,0 +1,285 @@
+/**
+ * $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('flash');
+
+var TinyMCE_FlashPlugin = {
+	getInfo : function() {
+		return {
+			longname : 'Flash',
+			author : 'Moxiecode Systems AB',
+			authorurl : 'http://tinymce.moxiecode.com',
+			infourl : 'http://tinymce.moxiecode.com/tinymce/docs/plugin_flash.html',
+			version : tinyMCE.majorVersion + "." + tinyMCE.minorVersion
+		};
+	},
+
+	initInstance : function(inst) {
+		if (!tinyMCE.settings['flash_skip_plugin_css'])
+			tinyMCE.importCSS(inst.getDoc(), tinyMCE.baseURL + "/plugins/flash/css/content.css");
+	},
+
+	getControlHTML : function(cn) {
+		switch (cn) {
+			case "flash":
+				return tinyMCE.getButtonHTML(cn, 'lang_flash_desc', '{$pluginurl}/images/flash.gif', 'mceFlash');
+		}
+
+		return "";
+	},
+
+	execCommand : function(editor_id, element, command, user_interface, value) {
+		// Handle commands
+		switch (command) {
+			case "mceFlash":
+				var name = "", swffile = "", swfwidth = "", swfheight = "", action = "insert";
+				var template = new Array();
+				var inst = tinyMCE.getInstanceById(editor_id);
+				var focusElm = inst.getFocusElement();
+
+				template['file']   = '../../plugins/flash/flash.htm'; // Relative to theme
+				template['width']  = 430;
+				template['height'] = 175;
+
+				template['width'] += tinyMCE.getLang('lang_flash_delta_width', 0);
+				template['height'] += tinyMCE.getLang('lang_flash_delta_height', 0);
+
+				// Is selection a image
+				if (focusElm != null && focusElm.nodeName.toLowerCase() == "img") {
+					name = tinyMCE.getAttrib(focusElm, 'class');
+
+					if (name.indexOf('mceItemFlash') == -1) // Not a Flash
+						return true;
+
+					// Get rest of Flash items
+					swffile = tinyMCE.getAttrib(focusElm, 'alt');
+
+					if (tinyMCE.getParam('convert_urls'))
+						swffile = eval(tinyMCE.settings['urlconverter_callback'] + "(swffile, null, true);");
+
+					swfwidth = tinyMCE.getAttrib(focusElm, 'width');
+					swfheight = tinyMCE.getAttrib(focusElm, 'height');
+					action = "update";
+				}
+
+				tinyMCE.openWindow(template, {editor_id : editor_id, inline : "yes", swffile : swffile, swfwidth : swfwidth, swfheight : swfheight, action : action});
+			return true;
+	   }
+
+	   // Pass to next handler in chain
+	   return false;
+	},
+
+	cleanup : function(type, content) {
+		switch (type) {
+			case "insert_to_editor_dom":
+				// Force relative/absolute
+				if (tinyMCE.getParam('convert_urls')) {
+					var imgs = content.getElementsByTagName("img");
+					for (var i=0; i<imgs.length; i++) {
+						if (tinyMCE.getAttrib(imgs[i], "class") == "mceItemFlash") {
+							var src = tinyMCE.getAttrib(imgs[i], "alt");
+
+							if (tinyMCE.getParam('convert_urls'))
+								src = eval(tinyMCE.settings['urlconverter_callback'] + "(src, null, true);");
+
+							imgs[i].setAttribute('alt', src);
+							imgs[i].setAttribute('title', src);
+						}
+					}
+				}
+				break;
+
+			case "get_from_editor_dom":
+				var imgs = content.getElementsByTagName("img");
+				for (var i=0; i<imgs.length; i++) {
+					if (tinyMCE.getAttrib(imgs[i], "class") == "mceItemFlash") {
+						var src = tinyMCE.getAttrib(imgs[i], "alt");
+
+						if (tinyMCE.getParam('convert_urls'))
+							src = eval(tinyMCE.settings['urlconverter_callback'] + "(src, null, true);");
+
+						imgs[i].setAttribute('alt', src);
+						imgs[i].setAttribute('title', src);
+					}
+				}
+				break;
+
+			case "insert_to_editor":
+				var startPos = 0;
+				var embedList = new Array();
+
+				// Fix the embed and object elements
+				content = content.replace(new RegExp('<[ ]*embed','gi'),'<embed');
+				content = content.replace(new RegExp('<[ ]*/embed[ ]*>','gi'),'</embed>');
+				content = content.replace(new RegExp('<[ ]*object','gi'),'<object');
+				content = content.replace(new RegExp('<[ ]*/object[ ]*>','gi'),'</object>');
+
+				// Parse all embed tags
+				while ((startPos = content.indexOf('<embed', startPos+1)) != -1) {
+					var endPos = content.indexOf('>', startPos);
+					var attribs = TinyMCE_FlashPlugin._parseAttributes(content.substring(startPos + 6, endPos));
+					embedList[embedList.length] = attribs;
+				}
+
+				// Parse all object tags and replace them with images from the embed data
+				var index = 0;
+				while ((startPos = content.indexOf('<object', startPos)) != -1) {
+					if (index >= embedList.length)
+						break;
+
+					var attribs = embedList[index];
+
+					// Find end of object
+					endPos = content.indexOf('</object>', startPos);
+					endPos += 9;
+
+					// Insert image
+					var contentAfter = content.substring(endPos);
+					content = content.substring(0, startPos);
+					content += '<img width="' + attribs["width"] + '" height="' + attribs["height"] + '"';
+					content += ' src="' + (tinyMCE.getParam("theme_href") + '/images/spacer.gif') + '" title="' + attribs["src"] + '"';
+					content += ' alt="' + attribs["src"] + '" class="mceItemFlash" />' + content.substring(endPos);
+					content += contentAfter;
+					index++;
+
+					startPos++;
+				}
+
+				// Parse all embed tags and replace them with images from the embed data
+				var index = 0;
+				while ((startPos = content.indexOf('<embed', startPos)) != -1) {
+					if (index >= embedList.length)
+						break;
+
+					var attribs = embedList[index];
+
+					// Find end of embed
+					endPos = content.indexOf('>', startPos);
+					endPos += 9;
+
+					// Insert image
+					var contentAfter = content.substring(endPos);
+					content = content.substring(0, startPos);
+					content += '<img width="' + attribs["width"] + '" height="' + attribs["height"] + '"';
+					content += ' src="' + (tinyMCE.getParam("theme_href") + '/images/spacer.gif') + '" title="' + attribs["src"] + '"';
+					content += ' alt="' + attribs["src"] + '" class="mceItemFlash" />' + content.substring(endPos);
+					content += contentAfter;
+					index++;
+
+					startPos++;
+				}
+
+				break;
+
+			case "get_from_editor":
+				// Parse all img tags and replace them with object+embed
+				var startPos = -1;
+
+				while ((startPos = content.indexOf('<img', startPos+1)) != -1) {
+					var endPos = content.indexOf('/>', startPos);
+					var attribs = TinyMCE_FlashPlugin._parseAttributes(content.substring(startPos + 4, endPos));
+
+					// Is not flash, skip it
+					if (attribs['class'] != "mceItemFlash")
+						continue;
+
+					endPos += 2;
+
+					var embedHTML = '';
+					var wmode = tinyMCE.getParam("flash_wmode", "");
+					var quality = tinyMCE.getParam("flash_quality", "high");
+					var menu = tinyMCE.getParam("flash_menu", "false");
+
+					// Insert object + embed
+					embedHTML += '<object classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000"';
+					embedHTML += ' codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,29,0"';
+					embedHTML += ' width="' + attribs["width"] + '" height="' + attribs["height"] + '">';
+					embedHTML += '<param name="movie" value="' + attribs["title"] + '" />';
+					embedHTML += '<param name="quality" value="' + quality + '" />';
+					embedHTML += '<param name="menu" value="' + menu + '" />';
+					embedHTML += '<param name="wmode" value="' + wmode + '" />';
+					embedHTML += '<embed src="' + attribs["title"] + '" wmode="' + wmode + '" quality="' + quality + '" menu="' + menu + '" pluginspage="http://www.macromedia.com/go/getflashplayer" type="application/x-shockwave-flash" width="' + attribs["width"] + '" height="' + attribs["height"] + '"></embed></object>';
+
+					// Insert embed/object chunk
+					chunkBefore = content.substring(0, startPos);
+					chunkAfter = content.substring(endPos);
+					content = chunkBefore + embedHTML + chunkAfter;
+				}
+				break;
+		}
+
+		// Pass through to next handler in chain
+		return content;
+	},
+
+	handleNodeChange : function(editor_id, node, undo_index, undo_levels, visual_aid, any_selection) {
+		if (node == null)
+			return;
+
+		do {
+			if (node.nodeName == "IMG" && tinyMCE.getAttrib(node, 'class').indexOf('mceItemFlash') == 0) {
+				tinyMCE.switchClass(editor_id + '_flash', 'mceButtonSelected');
+				return true;
+			}
+		} while ((node = node.parentNode));
+
+		tinyMCE.switchClass(editor_id + '_flash', 'mceButtonNormal');
+
+		return true;
+	},
+
+	// Private plugin internal functions
+
+	_parseAttributes : function(attribute_string) {
+		var attributeName = "";
+		var attributeValue = "";
+		var withInName;
+		var withInValue;
+		var attributes = new Array();
+		var whiteSpaceRegExp = new RegExp('^[ \n\r\t]+', 'g');
+
+		if (attribute_string == null || attribute_string.length < 2)
+			return null;
+
+		withInName = withInValue = false;
+
+		for (var i=0; i<attribute_string.length; i++) {
+			var chr = attribute_string.charAt(i);
+
+			if ((chr == '"' || chr == "'") && !withInValue)
+				withInValue = true;
+			else if ((chr == '"' || chr == "'") && withInValue) {
+				withInValue = false;
+
+				var pos = attributeName.lastIndexOf(' ');
+				if (pos != -1)
+					attributeName = attributeName.substring(pos+1);
+
+				attributes[attributeName.toLowerCase()] = attributeValue.substring(1);
+
+				attributeName = "";
+				attributeValue = "";
+			} else if (!whiteSpaceRegExp.test(chr) && !withInName && !withInValue)
+				withInName = true;
+
+			if (chr == '=' && withInName)
+				withInName = false;
+
+			if (withInName)
+				attributeName += chr;
+
+			if (withInValue)
+				attributeValue += chr;
+		}
+
+		return attributes;
+	}
+};
+
+tinyMCE.addPlugin("flash", TinyMCE_FlashPlugin);

Modified: labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/plugins/flash/flash.htm
===================================================================
--- labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/plugins/flash/flash.htm	2007-01-11 22:09:16 UTC (rev 8831)
+++ labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/plugins/flash/flash.htm	2007-01-11 22:10:56 UTC (rev 8832)
@@ -1,116 +1,70 @@
-<?xml version="1.0" encoding="iso-8859-1"?>
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
 <html xmlns="http://www.w3.org/1999/xhtml">
 <head>
-<title>{$lang_insert_flash}</title>
-<script language="javascript" type="text/javascript" src="../../tiny_mce_popup.js"></script>
-<script language="javascript" type="text/javascript">
-<!--
-    function init() {
-    // modified 2004-11-10 by Michael Keck (me at michaelkeck.de)
-    // supporting onclick event to open pop windows
-        var formObj = document.forms[0];
-        var swffile   = tinyMCE.getWindowArg('swffile');
-        var swfwidth  = '' + tinyMCE.getWindowArg('swfwidth');
-        var swfheight = '' + tinyMCE.getWindowArg('swfheight');
-        if (swfwidth.indexOf('%')!=-1) {
-            formObj.width2.value = "%";
-            formObj.width.value  = swfwidth.substring(0,swfwidth.length-1);
-        } else {
-            formObj.width2.value = "px";
-            formObj.width.value  = swfwidth;
-        }
-        if (swfheight.indexOf('%')!=-1) {
-            formObj.height2.value = "%";
-            formObj.height.value  = swfheight.substring(0,swfheight.length-1);
-        } else {
-            formObj.height2.value = "px";
-            formObj.height.value  = swfheight;
-        }
-        formObj.file.value = swffile;
-        formObj.insert.value = tinyMCE.getLang('lang_' + tinyMCE.getWindowArg('mceDo'));
-        window.focus();
-    }
+	<title>{$lang_flash_title}</title>
+	<script language="javascript" type="text/javascript" src="../../tiny_mce_popup.js"></script>
+	<script language="javascript" type="text/javascript" src="jscripts/flash.js"></script>
+	<script language="javascript" type="text/javascript" src="../../utils/mctabs.js"></script>
+	<script language="javascript" type="text/javascript" src="../../utils/form_utils.js"></script>
+	<link href="css/flash.css" rel="stylesheet" type="text/css" />
+	<base target="_self" />
+</head>
+<body onload="tinyMCEPopup.executeOnLoad('init();');" style="display: none">
+    <form onsubmit="insertFlash();return false;" action="#">
+		<div class="tabs">
+			<ul>
+				<li id="general_tab" class="current"><span><a href="javascript:mcTabs.displayTab('general_tab','general_panel');" onmousedown="return false;">{$lang_flash_general}</a></span></li>
+			</ul>
+		</div>
 
-    function insertFlash() {
-        var formObj = document.forms[0];
-        if (window.opener) {
-            var html      = '';
-            var file      = formObj.file.value;
-            var width     = formObj.width.value;
-            var height    = formObj.height.value;
-            if (formObj.width2.value=='%') {
-                width = width + '%';
-            }
-            if (formObj.height2.value=='%') {
-                height = height + '%';
-            }
-            html += ''
-                + '<img src="' + (tinyMCE.getParam("theme_href") + "/images/spacer.gif") + '" '
-                + 'width="' + width + '" height="' + height + '" '
-                + 'border="0" alt="' + file + '" title="' + file + '" class="mce_plugin_flash" name="mce_plugin_flash" />';
-            tinyMCE.execCommand("mceInsertContent",true,html);
-            top.close();
-        }
-    }
+		<div class="panel_wrapper">
+			<div id="general_panel" class="panel current">
+				<fieldset>
+					<legend>{$lang_flash_general}</legend>
 
-    function cancelAction() {
-        top.close();
-    }
+					<table border="0" cellpadding="4" cellspacing="0">
+							<tr>
+							<td nowrap="nowrap"><label for="file">{$lang_flash_file}</label></td>
+							  <td nowrap="nowrap">
+									<table border="0" cellspacing="0" cellpadding="0">
+									  <tr>
+										<td><input id="file" name="file" type="text" value="" onfocus="this.select();" /></td>
+										<td id="filebrowsercontainer">&nbsp;</td>
+									  </tr>
+									</table>
+								</td>
+							</tr>
+							<tr id="linklistrow">
+								<td><label for="linklist">{$lang_flash_list}</label></td>
+								<td id="linklistcontainer">&nbsp;</td>
+							</tr>
+							<tr>
+								<td nowrap="nowrap"><label>{$lang_flash_size}</label></td>
+								<td nowrap="nowrap">
+									<input type="text" id="width" name="width" value="" onfocus="this.select();" />
+									<select name="width2" id="width2" style="width: 50px">
+										<option value="">px</option>
+										<option value="%">%</option>
+									</select>&nbsp;x&nbsp;<input id="height" name="height" type="text"  value="" onfocus="this.select();" />
+									<select name="height2" id="height2" style="width: 50px">
+										<option value="">px</option>
+										<option value="%">%</option>
+									</select>
+								</td>
+							</tr>
+					</table>
+				</fieldset>
+			</div>
+		</div>
 
-//-->
-</script>
-<style type="text/css">
-<!--
-   input.radio {
-        border: 1px none #000000;
-        background-color: transparent;
-        vertical-align: middle;
-   }
--->
-</style>
-</head>
-<body onload="init();">
-    <form onsubmit="insertFlash();return false;">
-        <table border="0" cellpadding="0" cellspacing="0" width="100%">
-            <tr>
-                <td class="title">{$lang_insert_flash}</td>
-            </tr>
-            <tr>
-                <td><hr size="1" noshade="noshade" /></td>
-            </tr>
-            <tr>
-                <td align="center" valign="middle"><table border="0" cellpadding="4" cellspacing="0">
-                    <tr>
-                        <td align="right">{$lang_insert_flash_file}:</td>
-                        <td nowrap="nowrap">
-                            <input name="file" type="text" id="file" value="" onfocus="this.select();" style="width: 250px; vertical-align: middle;" />
-                        </td>
-                    </tr>
-                    <tr>
-                        <td align="right">{$lang_insert_flash_size}:</td>
-                        <td nowrap="nowrap">
-                            <input name="width" type="text" id="width" value="" onfocus="this.select();" style="width: 50px; vertical-align: middle;" />
-                            <select name="width2" id="width2" style="width: 50px; vertical-align: middle;">
-                                <option value="">px</option>
-                                <option value="%">%</option>
-                            </select>&nbsp;x&nbsp;<input name="height" type="text" id="height" value="" onfocus="this.select();" style="width: 50px; vertical-align: middle;" />
-                            <select name="height2" id="height2" style="width: 50px; vertical-align: middle;">
-                                <option value="">px</option>
-                                <option value="%">%</option>
-                            </select>
-                        </td>
-                    </tr>
-                </table></td>
-            <tr>
-                <td><hr size="1" noshade="noshade" /></td>
-            </tr>
-            <tr>
-                <td nowrap="nowrap" align="center">
-                    <input type="button" name="insert" value="{$lang_insert}" onclick="insertFlash();" id="insert" />&nbsp;<input type="button" name="cancel" value="{$lang_cancel}" onclick="cancelAction();" id="cancel" />
-                </td>
-            </tr>
-        </table>
-    </form>
+		<div class="mceActionPanel">
+			<div style="float: left">
+				<input type="button" id="insert" name="insert" value="{$lang_insert}" onclick="insertFlash();" />
+			</div>
+
+			<div style="float: right">
+				<input type="button" id="cancel" name="cancel" value="{$lang_cancel}" onclick="tinyMCEPopup.close();" />
+			</div>
+		</div>
+	</form>
 </body>
 </html>

Modified: labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/plugins/flash/images/flash.gif
===================================================================
(Binary files differ)

Added: labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/plugins/flash/jscripts/flash.js
===================================================================
--- labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/plugins/flash/jscripts/flash.js	2007-01-11 22:09:16 UTC (rev 8831)
+++ labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/plugins/flash/jscripts/flash.js	2007-01-11 22:10:56 UTC (rev 8832)
@@ -0,0 +1,107 @@
+var url = tinyMCE.getParam("flash_external_list_url");
+if (url != null) {
+	// Fix relative
+	if (url.charAt(0) != '/' && url.indexOf('://') == -1)
+		url = tinyMCE.documentBasePath + "/" + url;
+
+	document.write('<sc'+'ript language="javascript" type="text/javascript" src="' + url + '"></sc'+'ript>');
+}
+
+function init() {
+	tinyMCEPopup.resizeToInnerSize();
+
+	document.getElementById("filebrowsercontainer").innerHTML = getBrowserHTML('filebrowser','file','flash','flash');
+
+	// Image list outsrc
+	var html = getFlashListHTML('filebrowser','file','flash','flash');
+	if (html == "")
+		document.getElementById("linklistrow").style.display = 'none';
+	else
+		document.getElementById("linklistcontainer").innerHTML = html;
+
+	var formObj = document.forms[0];
+	var swffile   = tinyMCE.getWindowArg('swffile');
+	var swfwidth  = '' + tinyMCE.getWindowArg('swfwidth');
+	var swfheight = '' + tinyMCE.getWindowArg('swfheight');
+
+	if (swfwidth.indexOf('%')!=-1) {
+		formObj.width2.value = "%";
+		formObj.width.value  = swfwidth.substring(0,swfwidth.length-1);
+	} else {
+		formObj.width2.value = "px";
+		formObj.width.value  = swfwidth;
+	}
+
+	if (swfheight.indexOf('%')!=-1) {
+		formObj.height2.value = "%";
+		formObj.height.value  = swfheight.substring(0,swfheight.length-1);
+	} else {
+		formObj.height2.value = "px";
+		formObj.height.value  = swfheight;
+	}
+
+	formObj.file.value = swffile;
+	formObj.insert.value = tinyMCE.getLang('lang_' + tinyMCE.getWindowArg('action'), 'Insert', true);
+
+	selectByValue(formObj, 'linklist', swffile);
+
+	// Handle file browser
+	if (isVisible('filebrowser'))
+		document.getElementById('file').style.width = '230px';
+
+	// Auto select flash in list
+	if (typeof(tinyMCEFlashList) != "undefined" && tinyMCEFlashList.length > 0) {
+		for (var i=0; i<formObj.linklist.length; i++) {
+			if (formObj.linklist.options[i].value == tinyMCE.getWindowArg('swffile'))
+				formObj.linklist.options[i].selected = true;
+		}
+	}
+}
+
+function getFlashListHTML() {
+	if (typeof(tinyMCEFlashList) != "undefined" && tinyMCEFlashList.length > 0) {
+		var html = "";
+
+		html += '<select id="linklist" name="linklist" style="width: 250px" onfocus="tinyMCE.addSelectAccessibility(event, this, window);" onchange="this.form.file.value=this.options[this.selectedIndex].value;">';
+		html += '<option value="">---</option>';
+
+		for (var i=0; i<tinyMCEFlashList.length; i++)
+			html += '<option value="' + tinyMCEFlashList[i][1] + '">' + tinyMCEFlashList[i][0] + '</option>';
+
+		html += '</select>';
+
+		return html;
+	}
+
+	return "";
+}
+
+function insertFlash() {
+	var formObj = document.forms[0];
+	var html      = '';
+	var file      = formObj.file.value;
+	var width     = formObj.width.value;
+	var height    = formObj.height.value;
+	if (formObj.width2.value=='%') {
+		width = width + '%';
+	}
+	if (formObj.height2.value=='%') {
+		height = height + '%';
+	}
+
+	if (width == "")
+		width = 100;
+
+	if (height == "")
+		height = 100;
+
+	html += ''
+		+ '<img src="' + (tinyMCE.getParam("theme_href") + "/images/spacer.gif") + '" mce_src="' + (tinyMCE.getParam("theme_href") + "/images/spacer.gif") + '" '
+		+ 'width="' + width + '" height="' + height + '" '
+		+ 'border="0" alt="' + file + '" title="' + file + '" class="mceItemFlash" />';
+
+	tinyMCEPopup.execCommand("mceInsertContent", true, html);
+	tinyMCE.selectedInstance.repaint();
+
+	tinyMCEPopup.close();
+}

Added: labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/plugins/flash/langs/en.js
===================================================================
--- labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/plugins/flash/langs/en.js	2007-01-11 22:09:16 UTC (rev 8831)
+++ labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/plugins/flash/langs/en.js	2007-01-11 22:10:56 UTC (rev 8832)
@@ -0,0 +1,11 @@
+// UK lang variables
+
+tinyMCE.addToLang('flash',{
+title : 'Insert / edit Flash Movie',
+desc : 'Insert / edit Flash Movie',
+file : 'Flash-File (.swf)',
+size : 'Size',
+list : 'Flash files',
+props : 'Flash properties',
+general : 'General'
+});

Modified: labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/plugins/flash/readme.txt
===================================================================
--- labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/plugins/flash/readme.txt	2007-01-11 22:09:16 UTC (rev 8831)
+++ labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/plugins/flash/readme.txt	2007-01-11 22:10:56 UTC (rev 8832)
@@ -1,23 +1 @@
- FLASH plugin for TinyMCE
------------------------------
-
-About:
-  This is the INSERT FLASH Dioalog contributed by Michael Keck.
-  This one supports popup windows and targets.
-
-Note:
-  The placeholder for Flash is called 'mce_plugin_flash' and needs a class 'mce_plugin_flash' in the 'css_-style'.
-  Do not name another image 'name="mce_plugin_flash"!
-
-Installation instructions:
-  * Copy the flash directory to the plugins directory of TinyMCE (/jscripts/tiny_mce/plugins).
-  * Add plugin to TinyMCE plugin option list example: plugins : "flash".
-  * Add this "img[class|src|border=0|alt|title|hspace|vspace|width|height|align|onmouseover|onmouseout|name]" to extended_valid_elements option.
-
-Initialization example:
-  tinyMCE.init({
-    theme : "advanced",
-    mode : "textareas",
-    plugins : "flash",
-    extended_valid_elements : "img[class|src|border=0|alt|title|hspace|vspace|width|height|align|onmouseover|onmouseout|name]"
-  });
+Check the TinyMCE documentation for details on this plugin.

Added: labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/plugins/fullpage/blank.htm
===================================================================
--- labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/plugins/fullpage/blank.htm	2007-01-11 22:09:16 UTC (rev 8831)
+++ labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/plugins/fullpage/blank.htm	2007-01-11 22:10:56 UTC (rev 8832)
@@ -0,0 +1,9 @@
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+	<title>blank_page</title>
+	<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
+</head>
+<body onload="parent.setupIframe(document);">
+
+</body>
+</html>

Added: labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/plugins/fullpage/css/fullpage.css
===================================================================
--- labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/plugins/fullpage/css/fullpage.css	2007-01-11 22:09:16 UTC (rev 8831)
+++ labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/plugins/fullpage/css/fullpage.css	2007-01-11 22:10:56 UTC (rev 8832)
@@ -0,0 +1,172 @@
+/* Hide the advanced tab */
+#advanced_tab {
+	display: none;
+}
+
+#metatitle, #metakeywords, #metadescription, #metaauthor, #metacopyright {
+	width: 280px;
+}
+
+#doctype, #docencoding {
+	width: 200px;
+}
+
+#langcode {
+	width: 30px;
+}
+
+#bgimage {
+	width: 220px;	
+}
+
+#fontface {
+	width: 240px;
+}
+
+#leftmargin, #rightmargin, #topmargin, #bottommargin {
+	width: 50px;
+}
+
+.panel_wrapper div.current {
+	height: 400px;
+}
+
+#stylesheet, #style {
+	width: 240px;
+}
+
+/* Head list classes */
+
+.headlistwrapper {
+	width: 100%;
+}
+
+.addbutton, .removebutton, .moveupbutton, .movedownbutton {
+	border-top: 1px solid;
+	border-left: 1px solid;
+	border-bottom: 1px solid;
+	border-right: 1px solid;
+	border-color: #F0F0EE;
+	cursor: default;
+	display: block;
+	width: 20px;
+	height: 20px;
+}
+
+.addbutton:hover, .removebutton:hover, .moveupbutton:hover, .movedownbutton:hover {
+	border: 1px solid #0A246A;
+	background-color: #B6BDD2;
+}
+
+.addbutton {
+	background-image: url('../images/add.gif');
+	float: left;
+	margin-right: 3px;
+}
+
+.removebutton {
+	background-image: url('../images/remove.gif');
+	float: left;
+}
+
+.moveupbutton {
+	background-image: url('../images/move_up.gif');
+	float: left;
+	margin-right: 3px;
+}
+
+.movedownbutton {
+	background-image: url('../images/move_down.gif');
+	float: left;
+}
+
+.selected {
+	border: 1px solid #0A246A;
+	background-color: #B6BDD2;
+}
+
+.toolbar {
+	width: 100%;
+}
+
+#headlist {
+	width: 100%;
+	margin-top: 3px;
+	font-size: 11px;
+}
+
+#info, #title_element, #meta_element, #script_element, #style_element, #base_element, #link_element, #comment_element, #unknown_element {
+	display: none;
+}
+
+#addmenu {
+	position: absolute;
+	border: 1px solid gray;
+	display: none;
+	z-index: 100;
+	background-color: white;
+}
+
+#addmenu a {
+	display: block;
+	width: 100%;
+	line-height: 20px;
+	text-decoration: none;
+	background-color: white;
+}
+
+#addmenu a:hover {
+	background-color: #B6BDD2;
+	color: black;
+}
+
+#addmenu span {
+	padding-left: 10px;
+	padding-right: 10px;
+}
+
+#updateElementPanel {
+	display: none;
+}
+
+#script_element .panel_wrapper div.current {
+	height: 108px;
+}
+
+#style_element .panel_wrapper div.current {
+	height: 108px;
+}
+
+#link_element  .panel_wrapper div.current {
+	height: 140px;
+}
+
+#element_script_value {
+	width: 100%;
+	height: 100px;
+}
+
+#element_comment_value {
+	width: 100%;
+	height: 120px;
+}
+
+#element_style_value {
+	width: 100%;
+	height: 100px;
+}
+
+#element_title, #element_script_src, #element_meta_name, #element_meta_content, #element_base_href, #element_link_href, #element_link_title {
+	width: 250px;
+}
+
+.updateElementButton {
+	margin-top: 3px;
+}
+
+/* MSIE specific styles */
+
+* html .addbutton, * html .removebutton, * html .moveupbutton, * html .movedownbutton {
+	width: 22px;
+	height: 22px;
+}

Added: labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/plugins/fullpage/editor_plugin.js
===================================================================
--- labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/plugins/fullpage/editor_plugin.js	2007-01-11 22:09:16 UTC (rev 8831)
+++ labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/plugins/fullpage/editor_plugin.js	2007-01-11 22:10:56 UTC (rev 8832)
@@ -0,0 +1 @@
+tinyMCE.importPluginLanguagePack('fullpage');var TinyMCE_FullPagePlugin={getInfo:function(){return{longname:'Fullpage',author:'Moxiecode Systems AB',authorurl:'http://tinymce.moxiecode.com',infourl:'http://tinymce.moxiecode.com/tinymce/docs/plugin_fullpage.html',version:tinyMCE.majorVersion+"."+tinyMCE.minorVersion}},getControlHTML:function(cn){switch(cn){case"fullpage":return tinyMCE.getButtonHTML(cn,'lang_fullpage_desc','{$pluginurl}/images/fullpage.gif','mceFullPageProperties')}return""},execCommand:function(editor_id,element,command,user_interface,value){switch(command){case"mceFullPageProperties":var template=new Array();template['file']='../../plugins/fullpage/fullpage.htm';template['width']=430;template['height']=485+(tinyMCE.isOpera?5:0);template['width']+=tinyMCE.getLang('lang_fullpage_delta_width',0);template['height']+=tinyMCE.getLang('lang_fullpage_delta_height',0);tinyMCE.openWindow(template,{editor_id:editor_id,inline:"yes"});return true;case"mceFullPageUpdate!
 ":TinyMCE_FullPagePlugin._addToHead(tinyMCE.getInstanceById(editor_id));return true}return false},cleanup:function(type,content,inst){switch(type){case"insert_to_editor":var tmp=content.toLowerCase();var pos=tmp.indexOf('<body'),pos2;if(pos!=-1){pos=tmp.indexOf('>',pos);pos2=tmp.lastIndexOf('</body>');inst.fullpageTopContent=content.substring(0,pos+1);content=content.substring(pos+1,pos2);}else{if(!inst.fullpageTopContent){var docType=tinyMCE.getParam("fullpage_default_doctype",'<!DOCTYPE html PUBLIC "-/'+'/W3C//DTD XHTML 1.0 Transitional/'+'/EN" "http:/'+'/www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">');var enc=tinyMCE.getParam("fullpage_default_encoding",'utf-8');var title=tinyMCE.getParam("fullpage_default_title",'Untitled document');var lang=tinyMCE.getParam("fullpage_default_langcode",'en');var pi=tinyMCE.getParam("fullpage_default_xml_pi",true);var ff=tinyMCE.getParam("fullpage_default_font_family","");var fz=tinyMCE.getParam("fullpage_default_font_size","");var !
 ds=tinyMCE.getParam("fullpage_default_style","");var dtc=tinyMCE.getPa
ram("fullpage_default_text_color","");title=title.replace(/&/g,'&amp;');title=title.replace(/\"/g,'&quot;');title=title.replace(/</g,'&lt;');title=title.replace(/>/g,'&gt;');tmp='';if(pi)tmp+='<?xml version="1.0" encoding="'+enc+'"?>\n';tmp+=docType+'\n';tmp+='<html xmlns="http:/'+'/www.w3.org/1999/xhtml" lang="'+lang+'" xml:lang="'+lang+'">\n';tmp+='<head>\n';tmp+='\t<title>'+title+'</title>\n';tmp+='\t<meta http-equiv="Content-Type" content="text/html; charset='+enc+'" />\n';tmp+='</head>\n';tmp+='<body';if(ff!=''||fz!=''){tmp+=' style="';if(ds!='')tmp+=ds+";";if(ff!='')tmp+='font-family: '+ff+";";if(fz!='')tmp+='font-size: '+fz+";";tmp+='"'}if(dtc!='')tmp+=' text="'+dtc+'"';tmp+='>\n';inst.fullpageTopContent=tmp}}this._addToHead(inst);break;case"get_from_editor":if(inst.fullpageTopContent)content=inst.fullpageTopContent+content+"\n</body>\n</html>";break}return content},_addToHead:function(inst){var doc=inst.getDoc();var head=doc.getElementsByTagName("head")[0];var body=d!
 oc.body;var h=inst.fullpageTopContent;var e=doc.createElement("body");var nl,i,le,tmp;h=h.replace(/(\r|\n)/gi,'');h=h.replace(/<\?[^\>]*\>/gi,'');h=h.replace(/<\/?(!DOCTYPE|head|html)[^\>]*\>/gi,'');h=h.replace(/<script(.*?)<\/script>/gi,'');h=h.replace(/<title(.*?)<\/title>/gi,'');h=h.replace(/<(meta|base)[^>]*>/gi,'');h=h.replace(/<link([^>]*)\/>/gi,'<pre mce_type="link" $1></pre>');h=h.replace(/<body/gi,'<div mce_type="body"');h+='</div>';e.innerHTML=h;body.vLink=body.aLink=body.link=body.text='';body.style.cssText='';nl=head.getElementsByTagName('link');for(i=0;i<nl.length;i++){if(tinyMCE.getAttrib(nl[i],'mce_head')=="true")nl[i].parentNode.removeChild(nl[i])}nl=e.getElementsByTagName('pre');for(i=0;i<nl.length;i++){tmp=tinyMCE.getAttrib(nl[i],'media');if(tinyMCE.getAttrib(nl[i],'mce_type')=="link"&&(tmp==""||tmp=="screen"||tmp=="all")&&tinyMCE.getAttrib(nl[i],'rel')=="stylesheet"){le=doc.createElement("link");le.rel="stylesheet";le.href=tinyMCE.getAttrib(nl[i],'href');!
 le.setAttribute("mce_head","true");head.appendChild(le)}}nl=e.getEleme
ntsByTagName('div');if(nl.length>0){body.style.cssText=tinyMCE.getAttrib(nl[0],'style');if((tmp=tinyMCE.getAttrib(nl[0],'leftmargin'))!=''&&body.style.marginLeft=='')body.style.marginLeft=tmp+"px";if((tmp=tinyMCE.getAttrib(nl[0],'rightmargin'))!=''&&body.style.marginRight=='')body.style.marginRight=tmp+"px";if((tmp=tinyMCE.getAttrib(nl[0],'topmargin'))!=''&&body.style.marginTop=='')body.style.marginTop=tmp+"px";if((tmp=tinyMCE.getAttrib(nl[0],'bottommargin'))!=''&&body.style.marginBottom=='')body.style.marginBottom=tmp+"px";body.dir=tinyMCE.getAttrib(nl[0],'dir');body.vLink=tinyMCE.getAttrib(nl[0],'vlink');body.aLink=tinyMCE.getAttrib(nl[0],'alink');body.link=tinyMCE.getAttrib(nl[0],'link');body.text=tinyMCE.getAttrib(nl[0],'text');if((tmp=tinyMCE.getAttrib(nl[0],'background'))!='')body.style.backgroundImage="url('"+tmp+"')";if((tmp=tinyMCE.getAttrib(nl[0],'bgcolor'))!='')body.style.backgroundColor=tmp}}};tinyMCE.addPlugin("fullpage",TinyMCE_FullPagePlugin);
\ No newline at end of file

Added: labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/plugins/fullpage/editor_plugin_src.js
===================================================================
--- labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/plugins/fullpage/editor_plugin_src.js	2007-01-11 22:09:16 UTC (rev 8831)
+++ labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/plugins/fullpage/editor_plugin_src.js	2007-01-11 22:10:56 UTC (rev 8832)
@@ -0,0 +1,227 @@
+/**
+ * $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('fullpage');
+
+var TinyMCE_FullPagePlugin = {
+	getInfo : function() {
+		return {
+			longname : 'Fullpage',
+			author : 'Moxiecode Systems AB',
+			authorurl : 'http://tinymce.moxiecode.com',
+			infourl : 'http://tinymce.moxiecode.com/tinymce/docs/plugin_fullpage.html',
+			version : tinyMCE.majorVersion + "." + tinyMCE.minorVersion
+		};
+	},
+
+	getControlHTML : function(cn) {
+		switch (cn) {
+			case "fullpage":
+				return tinyMCE.getButtonHTML(cn, 'lang_fullpage_desc', '{$pluginurl}/images/fullpage.gif', 'mceFullPageProperties');
+		}
+
+		return "";
+	},
+
+	execCommand : function(editor_id, element, command, user_interface, value) {
+		// Handle commands
+		switch (command) {
+			case "mceFullPageProperties":
+				var template = new Array();
+
+				template['file']   = '../../plugins/fullpage/fullpage.htm';
+				template['width']  = 430;
+				template['height'] = 485 + (tinyMCE.isOpera ? 5 : 0);
+
+				template['width'] += tinyMCE.getLang('lang_fullpage_delta_width', 0);
+				template['height'] += tinyMCE.getLang('lang_fullpage_delta_height', 0);
+
+				tinyMCE.openWindow(template, {editor_id : editor_id, inline : "yes"});
+			return true;
+
+			case "mceFullPageUpdate":
+				TinyMCE_FullPagePlugin._addToHead(tinyMCE.getInstanceById(editor_id));
+				return true;
+	   }
+
+	   // Pass to next handler in chain
+	   return false;
+	},
+
+	cleanup : function(type, content, inst) {
+		switch (type) {
+			case "insert_to_editor":
+				var tmp = content.toLowerCase();
+				var pos = tmp.indexOf('<body'), pos2;
+
+				// Split page in header and body chunks
+				if (pos != -1) {
+					pos = tmp.indexOf('>', pos);
+					pos2 = tmp.lastIndexOf('</body>');
+					inst.fullpageTopContent = content.substring(0, pos + 1);
+					content = content.substring(pos + 1, pos2);
+					// tinyMCE.debug(inst.fullpageTopContent, content);
+				} else {
+					if (!inst.fullpageTopContent) {
+						var docType = tinyMCE.getParam("fullpage_default_doctype", '<!DOCTYPE html PUBLIC "-/'+'/W3C//DTD XHTML 1.0 Transitional/'+'/EN" "http:/'+'/www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">');
+						var enc = tinyMCE.getParam("fullpage_default_encoding", 'utf-8');
+						var title = tinyMCE.getParam("fullpage_default_title", 'Untitled document');
+						var lang = tinyMCE.getParam("fullpage_default_langcode", 'en');
+						var pi = tinyMCE.getParam("fullpage_default_xml_pi", true);
+						var ff = tinyMCE.getParam("fullpage_default_font_family", "");
+						var fz = tinyMCE.getParam("fullpage_default_font_size", "");
+						var ds = tinyMCE.getParam("fullpage_default_style", "");
+						var dtc = tinyMCE.getParam("fullpage_default_text_color", "");
+
+						// Xml encode it
+						title = title.replace(/&/g, '&amp;');
+						title = title.replace(/\"/g, '&quot;');
+						title = title.replace(/</g, '&lt;');
+						title = title.replace(/>/g, '&gt;');
+
+						tmp = '';
+
+						// Make default chunk
+						if (pi)
+							tmp += '<?xml version="1.0" encoding="' + enc + '"?>\n';
+
+						tmp += docType + '\n';
+						tmp += '<html xmlns="http:/'+'/www.w3.org/1999/xhtml" lang="' + lang + '" xml:lang="' + lang + '">\n';
+						tmp += '<head>\n';
+						tmp += '\t<title>' + title + '</title>\n';
+						tmp += '\t<meta http-equiv="Content-Type" content="text/html; charset=' + enc + '" />\n';
+						tmp += '</head>\n';
+						tmp += '<body';
+
+						if (ff != '' || fz != '') {
+							tmp += ' style="';
+
+							if (ds != '')
+								tmp += ds + ";";
+
+							if (ff != '')
+								tmp += 'font-family: ' + ff + ";";
+
+							if (fz != '')
+								tmp += 'font-size: ' + fz + ";";
+
+							tmp += '"';
+						}
+
+						if (dtc != '')
+							tmp += ' text="' + dtc + '"';
+
+						tmp += '>\n';
+
+						inst.fullpageTopContent = tmp;
+					}
+				}
+
+				this._addToHead(inst);
+
+				break;
+
+			case "get_from_editor":
+				if (inst.fullpageTopContent)
+					content = inst.fullpageTopContent + content + "\n</body>\n</html>";
+
+				break;
+		}
+
+		// Pass through to next handler in chain
+		return content;
+	},
+
+	// Private plugin internal methods
+
+	_addToHead : function(inst) {
+		var doc = inst.getDoc();
+		var head = doc.getElementsByTagName("head")[0];
+		var body = doc.body;
+		var h = inst.fullpageTopContent;
+		var e = doc.createElement("body");
+		var nl, i, le, tmp;
+
+		// Remove stuff we don't want
+		h = h.replace(/(\r|\n)/gi, '');
+		h = h.replace(/<\?[^\>]*\>/gi, '');
+		h = h.replace(/<\/?(!DOCTYPE|head|html)[^\>]*\>/gi, '');
+		h = h.replace(/<script(.*?)<\/script>/gi, '');
+		h = h.replace(/<title(.*?)<\/title>/gi, '');
+		h = h.replace(/<(meta|base)[^>]*>/gi, '');
+
+		// Make link and style elements into pre
+		h = h.replace(/<link([^>]*)\/>/gi, '<pre mce_type="link" $1></pre>');
+		//h = h.replace(/<style([^>]*)>(.*?)<\/style>/gi, '<pre mce_type="style" $1>$2</pre>');
+
+		// Make body a div
+		h = h.replace(/<body/gi, '<div mce_type="body"');
+		h += '</div>';
+
+		// Now crapy MSIE can parse it
+		e.innerHTML = h;
+
+		// Reset all body attributes
+		body.vLink = body.aLink = body.link = body.text = '';
+		body.style.cssText = '';
+
+		// Delete all old links
+		nl = head.getElementsByTagName('link');
+		for (i=0; i<nl.length; i++) {
+			if (tinyMCE.getAttrib(nl[i], 'mce_head') == "true")
+				nl[i].parentNode.removeChild(nl[i]);
+		}
+
+		// Add link elements
+		nl = e.getElementsByTagName('pre');
+		for (i=0; i<nl.length; i++) {
+			tmp = tinyMCE.getAttrib(nl[i], 'media');
+			if (tinyMCE.getAttrib(nl[i], 'mce_type') == "link" && (tmp == "" || tmp == "screen" || tmp == "all") && tinyMCE.getAttrib(nl[i], 'rel') == "stylesheet") {
+				le = doc.createElement("link");
+
+				le.rel = "stylesheet";
+				le.href = tinyMCE.getAttrib(nl[i], 'href');
+				le.setAttribute("mce_head", "true");
+
+				head.appendChild(le);
+			}
+		}
+
+		// Add body attributes
+		nl = e.getElementsByTagName('div');
+		if (nl.length > 0) {
+			body.style.cssText = tinyMCE.getAttrib(nl[0], 'style');
+
+			if ((tmp = tinyMCE.getAttrib(nl[0], 'leftmargin')) != '' && body.style.marginLeft == '')
+				body.style.marginLeft = tmp + "px";
+
+			if ((tmp = tinyMCE.getAttrib(nl[0], 'rightmargin')) != '' && body.style.marginRight == '')
+				body.style.marginRight = tmp + "px";
+
+			if ((tmp = tinyMCE.getAttrib(nl[0], 'topmargin')) != '' && body.style.marginTop == '')
+				body.style.marginTop = tmp + "px";
+
+			if ((tmp = tinyMCE.getAttrib(nl[0], 'bottommargin')) != '' && body.style.marginBottom == '')
+				body.style.marginBottom = tmp + "px";
+
+			body.dir = tinyMCE.getAttrib(nl[0], 'dir');
+			body.vLink = tinyMCE.getAttrib(nl[0], 'vlink');
+			body.aLink = tinyMCE.getAttrib(nl[0], 'alink');
+			body.link = tinyMCE.getAttrib(nl[0], 'link');
+			body.text = tinyMCE.getAttrib(nl[0], 'text');
+
+			if ((tmp = tinyMCE.getAttrib(nl[0], 'background')) != '')
+				body.style.backgroundImage = "url('" + tmp + "')";
+
+			if ((tmp = tinyMCE.getAttrib(nl[0], 'bgcolor')) != '')
+				body.style.backgroundColor = tmp;
+		}
+	}
+};
+
+tinyMCE.addPlugin("fullpage", TinyMCE_FullPagePlugin);

Added: labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/plugins/fullpage/fullpage.htm
===================================================================
--- labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/plugins/fullpage/fullpage.htm	2007-01-11 22:09:16 UTC (rev 8831)
+++ labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/plugins/fullpage/fullpage.htm	2007-01-11 22:10:56 UTC (rev 8832)
@@ -0,0 +1,577 @@
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+	<title>{$lang_fullpage_title}</title>
+	<script language="javascript" type="text/javascript" src="../../tiny_mce_popup.js"></script>
+	<script language="javascript" type="text/javascript" src="../../utils/mctabs.js"></script>
+	<script language="javascript" type="text/javascript" src="../../utils/mclayer.js"></script>
+	<script language="javascript" type="text/javascript" src="../../utils/form_utils.js"></script>
+	<script language="javascript" type="text/javascript" src="jscripts/fullpage.js"></script>
+	<link href="css/fullpage.css" rel="stylesheet" type="text/css" />
+	<base target="_self" />
+</head>
+<body id="advlink" onload="tinyMCEPopup.executeOnLoad('init();');" style="display: none">
+    <form onsubmit="updateAction();return false;" name="fullpage" action="#">
+		<div class="tabs">
+			<ul>
+				<li id="meta_tab" class="current"><span><a href="javascript:mcTabs.displayTab('meta_tab','meta_panel');" onmousedown="return false;">{$lang_fullpage_meta_tab}</a></span></li>
+				<li id="appearance_tab"><span><a href="javascript:mcTabs.displayTab('appearance_tab','appearance_panel');" onmousedown="return false;">{$lang_fullpage_appearance_tab}</a></span></li>
+				<li id="advanced_tab"><span><a href="javascript:mcTabs.displayTab('advanced_tab','advanced_panel');" onmousedown="return false;">{$lang_fullpage_advanced_tab}</a></span></li>
+			</ul>
+		</div>
+
+		<div class="panel_wrapper">
+			<div id="meta_panel" class="panel current">
+				<fieldset>
+					<legend>{$lang_fullpage_meta_props}</legend>
+
+					<table border="0" cellpadding="4" cellspacing="0">
+						<tr>
+							<td nowrap="nowrap"><label for="metatitle">{$lang_fullpage_meta_title}</label>&nbsp;</td>
+							<td><input type="text" id="metatitle" name="metatitle" value="" /></td>
+						</tr>
+						<tr>
+							<td nowrap="nowrap"><label for="metakeywords">{$lang_fullpage_meta_keywords}</label>&nbsp;</td>
+							<td><textarea id="metakeywords" name="metakeywords" rows="3"></textarea></td>
+						</tr>
+						<tr>
+							<td nowrap="nowrap"><label for="metadescription">{$lang_fullpage_meta_description}</label>&nbsp;</td>
+							<td><textarea id="metadescription" name="metadescription" rows="3"></textarea></td>
+						</tr>
+						<tr>
+							<td nowrap="nowrap"><label for="metaauthor">{$lang_fullpage_author}</label>&nbsp;</td>
+							<td><input type="text" id="metaauthor" name="metaauthor" value="" /></td>
+						</tr>
+						<tr>
+							<td nowrap="nowrap"><label for="metacopyright">{$lang_fullpage_copyright}</label>&nbsp;</td>
+							<td><input type="text" id="metacopyright" name="metacopyright" value="" /></td>
+						</tr>
+						<tr>
+							<td nowrap="nowrap"><label for="metarobots">{$lang_fullpage_meta_robots}</label>&nbsp;</td>
+							<td>
+<select id="metarobots" name="metarobots">
+			<option value="">{$lang_not_set}</option> 
+			<option value="index,follow">{$lang_fullpage_meta_index_follow}</option>
+			<option value="index,nofollow">{$lang_fullpage_meta_index_nofollow}</option>
+			<option value="noindex,follow">{$lang_fullpage_meta_noindex_follow}</option>
+			<option value="noindex,nofollow">{$lang_fullpage_meta_noindex_nofollow}</option>
+</select>
+							</td>
+						</tr>
+					</table>
+				</fieldset>
+
+				<fieldset>
+					<legend>{$lang_fullpage_langprops}</legend>
+
+					<table border="0" cellpadding="4" cellspacing="0">
+						<tr>
+							<td class="column1"><label for="docencoding">{$lang_fullpage_encoding}</label></td> 
+							<td>
+								<select id="docencoding" name="docencoding"> 
+										<option value="">{$lang_not_set}</option>
+								</select>
+							</td> 
+						</tr>
+						<tr>
+							<td nowrap="nowrap"><label for="doctypes">{$lang_fullpage_doctypes}</label>&nbsp;</td>
+							<td>
+								<select id="doctypes" name="doctypes">
+										<option value="">{$lang_not_set}</option>
+								</select>
+							</td>
+						</tr>
+						<tr>
+							<td nowrap="nowrap"><label for="langcode">{$lang_fullpage_langcode}</label>&nbsp;</td>
+							<td><input type="text" id="langcode" name="langcode" value="" /></td>
+						</tr>
+						<tr>
+							<td class="column1"><label for="langdir">{$lang_fullpage_langdir}</label></td> 
+							<td>
+								<select id="langdir" name="langdir"> 
+										<option value="">{$lang_not_set}</option> 
+										<option value="ltr">{$lang_fullpage_ltr}</option> 
+										<option value="rtl">{$lang_fullpage_rtl}</option> 
+								</select>
+							</td> 
+						</tr>
+						<tr>
+							<td nowrap="nowrap"><label for="xml_pi">{$lang_fullpage_xml_pi}</label>&nbsp;</td>
+							<td><input type="checkbox" id="xml_pi" name="xml_pi" class="checkbox" /></td>
+						</tr>
+					</table>
+				</fieldset>
+			</div>
+
+			<div id="appearance_panel" class="panel">
+				<fieldset>
+					<legend>{$lang_fullpage_appearance_textprops}</legend>
+
+					<table border="0" cellpadding="4" cellspacing="0">
+						<tr>
+							<td class="column1"><label for="fontface">{$lang_fullpage_fontface}</label></td> 
+							<td>
+								<select id="fontface" name="fontface" onchange="changedStyleField(this);">
+										<option value="">{$lang_not_set}</option>
+								</select>
+							</td> 
+						</tr>
+
+						<tr>
+							<td class="column1"><label for="fontsize">{$lang_fullpage_fontsize}</label></td> 
+							<td>
+								<select id="fontsize" name="fontsize" onchange="changedStyleField(this);">
+										<option value="">{$lang_not_set}</option>
+								</select>
+							</td>
+						</tr>
+
+						<tr>
+							<td class="column1"><label for="textcolor">{$lang_fullpage_textcolor}</label></td> 
+							<td>
+								<table border="0" cellpadding="0" cellspacing="0">
+									<tr>
+										<td><input id="textcolor" name="textcolor" type="text" value="" size="9" onchange="updateColor('textcolor_pick','textcolor');changedStyleField(this);" /></td>
+										<td id="textcolor_pickcontainer">&nbsp;</td>
+									</tr>
+								</table>
+							</td>
+						</tr>
+					</table>
+				</fieldset>
+
+				<fieldset>
+					<legend>{$lang_fullpage_appearance_bgprops}</legend>
+
+					<table border="0" cellpadding="4" cellspacing="0">
+						<tr>
+							<td class="column1"><label for="bgimage">{$lang_fullpage_bgimage}</label></td> 
+							<td>
+								<table border="0" cellpadding="0" cellspacing="0">
+									<tr>
+										<td><input id="bgimage" name="bgimage" type="text" value="" onchange="changedStyleField(this);" /></td>
+										<td id="bgimage_pickcontainer">&nbsp;</td>
+									</tr>
+								</table>
+							</td>
+						</tr>
+						<tr>
+							<td class="column1"><label for="bgcolor">{$lang_fullpage_bgcolor}</label></td> 
+							<td>
+								<table border="0" cellpadding="0" cellspacing="0">
+									<tr>
+										<td><input id="bgcolor" name="bgcolor" type="text" value="" size="9" onchange="updateColor('bgcolor_pick','bgcolor');changedStyleField(this);" /></td>
+										<td id="bgcolor_pickcontainer">&nbsp;</td>
+									</tr>
+								</table>
+							</td> 
+						</tr>
+					</table>
+				</fieldset>
+
+				<fieldset>
+					<legend>{$lang_fullpage_appearance_marginprops}</legend>
+
+					<table border="0" cellpadding="4" cellspacing="0">
+						<tr>
+							<td class="column1"><label for="leftmargin">{$lang_fullpage_left_margin}</label></td> 
+							<td><input id="leftmargin" name="leftmargin" type="text" value="" onchange="changedStyleField(this);" /></td>
+							<td class="column1"><label for="rightmargin">{$lang_fullpage_right_margin}</label></td> 
+							<td><input id="rightmargin" name="rightmargin" type="text" value="" onchange="changedStyleField(this);" /></td>
+						</tr>
+						<tr>
+							<td class="column1"><label for="topmargin">{$lang_fullpage_top_margin}</label></td> 
+							<td><input id="topmargin" name="topmargin" type="text" value="" onchange="changedStyleField(this);" /></td>
+							<td class="column1"><label for="bottommargin">{$lang_fullpage_bottom_margin}</label></td> 
+							<td><input id="bottommargin" name="bottommargin" type="text" value="" onchange="changedStyleField(this);" /></td>
+						</tr>
+					</table>
+				</fieldset>
+
+				<fieldset>
+					<legend>{$lang_fullpage_appearance_linkprops}</legend>
+
+					<table border="0" cellpadding="4" cellspacing="0">
+						<tr>
+							<td class="column1"><label for="link_color">{$lang_fullpage_link_color}</label></td> 
+							<td>
+								<table border="0" cellpadding="0" cellspacing="0">
+									<tr>
+										<td><input id="link_color" name="link_color" type="text" value="" size="9" onchange="updateColor('link_color_pick','link_color');changedStyleField(this);" /></td>
+										<td id="link_color_pickcontainer">&nbsp;</td>
+									</tr>
+								</table>
+							</td>
+
+							<td class="column1"><label for="visited_color">{$lang_fullpage_visited_color}</label></td> 
+							<td>
+								<table border="0" cellpadding="0" cellspacing="0">
+									<tr>
+										<td><input id="visited_color" name="visited_color" type="text" value="" size="9" onchange="updateColor('visited_color_pick','visited_color');changedStyleField(this);" /></td>
+										<td id="visited_color_pickcontainer">&nbsp;</td>
+									</tr>
+								</table>
+							</td>
+						</tr>
+
+						<tr>
+							<td class="column1"><label for="active_color">{$lang_fullpage_active_color}</label></td> 
+							<td>
+								<table border="0" cellpadding="0" cellspacing="0">
+									<tr>
+										<td><input id="active_color" name="active_color" type="text" value="" size="9" onchange="updateColor('active_color_pick','active_color');changedStyleField(this);" /></td>
+										<td id="active_color_pickcontainer">&nbsp;</td>
+									</tr>
+								</table>
+							</td>
+
+							<td>&nbsp;</td>
+							<td>&nbsp;</td>
+
+<!--							<td class="column1"><label for="hover_color">{$lang_fullpage_hover_color}</label></td> 
+							<td>
+								<table border="0" cellpadding="0" cellspacing="0">
+									<tr>
+										<td><input id="hover_color" name="hover_color" type="text" value="" size="9" onchange="changedStyleField(this);" /></td>
+										<td id="hover_color_pickcontainer">&nbsp;</td>
+									</tr>
+								</table>
+							</td> -->
+						</tr>
+					</table>
+				</fieldset>
+
+				<fieldset>
+					<legend>{$lang_fullpage_appearance_style}</legend>
+
+					<table border="0" cellpadding="4" cellspacing="0">
+						<tr>
+							<td class="column1"><label for="stylesheet">{$lang_fullpage_stylesheet}</label></td> 
+							<td><table border="0" cellpadding="0" cellspacing="0">
+									<tr>
+										<td><input id="stylesheet" name="stylesheet" type="text" value="" /></td>
+										<td id="stylesheet_browsercontainer">&nbsp;</td>
+									</tr>
+								</table></td>
+						</tr>
+						<tr>
+							<td class="column1"><label for="style">{$lang_fullpage_style}</label></td> 
+							<td><input id="style" name="style" type="text" value="" onchange="changedStyleField(this);" /></td>
+						</tr>
+					</table>
+				</fieldset>
+			</div>
+
+			<div id="advanced_panel" class="panel">
+				<div id="addmenu">
+					<table border="0" cellpadding="0" cellspacing="0">
+						<tr><td><a href="javascript:addHeadElm('title');" onmousedown="return false;"><span>{$lang_fullpage_add_title}</span></a></td></tr>
+						<tr><td><a href="javascript:addHeadElm('meta');" onmousedown="return false;"><span>{$lang_fullpage_add_meta}</span></a></td></tr>
+						<tr><td><a href="javascript:addHeadElm('script');" onmousedown="return false;"><span>{$lang_fullpage_add_script}</span></a></td></tr>
+						<tr><td><a href="javascript:addHeadElm('style');" onmousedown="return false;"><span>{$lang_fullpage_add_style}</span></a></td></tr>
+						<tr><td><a href="javascript:addHeadElm('link');" onmousedown="return false;"><span>{$lang_fullpage_add_link}</span></a></td></tr>
+						<tr><td><a href="javascript:addHeadElm('base');" onmousedown="return false;"><span>{$lang_fullpage_add_base}</span></a></td></tr>
+						<tr><td><a href="javascript:addHeadElm('comment');" onmousedown="return false;"><span>{$lang_fullpage_add_comment}</span></a></td></tr>
+					</table>
+				</div>
+
+				<fieldset>
+					<legend>{$lang_fullpage_head_elements}</legend>
+
+					<div class="headlistwrapper">
+						<div class="toolbar">
+							<div style="float: left">
+								<a id="addbutton" href="javascript:showAddMenu();" onmousedown="return false;" class="addbutton" title="{$lang_fullpage_add}"></a>
+								<a href="#" onmousedown="return false;" class="removebutton" title="{$lang_fullpage_remove}"></a>
+							</div>
+							<div style="float: right">
+								<a href="#" onmousedown="return false;" class="moveupbutton" title="{$lang_fullpage_moveup}"></a>
+								<a href="#" onmousedown="return false;" class="movedownbutton" title="{$lang_fullpage_movedown}"></a>
+							</div>
+							<br style="clear: both" />
+						</div>
+						<select id="headlist" size="26" onchange="updateHeadElm(this.options[this.selectedIndex].value);">
+							<option value="title_0">&lt;title&gt;Some title bla bla bla&lt;/title&gt;</option>
+							<option value="meta_1">&lt;meta name="keywords"&gt;Some bla bla bla&lt;/meta&gt;</option>
+							<option value="meta_2">&lt;meta name="description"&gt;Some bla bla bla bla bla bla bla bla bla&lt;/meta&gt;</option>
+							<option value="script_3">&lt;script language=&quot;javascript&quot;&gt;...&lt;/script&gt;</option>
+							<option value="style_4">&lt;style&gt;...&lt;/style&gt;</option>
+							<option value="base_5">&lt;base href="." /&gt;</option>
+							<option value="comment_6">&lt;!-- ... --&gt;</option>
+							<option value="link_7">&lt;link href="." /&gt;</option>
+						</select>
+					</div>
+				</fieldset>
+
+				<fieldset id="meta_element">
+					<legend>{$lang_fullpage_meta_element}</legend>
+
+					<table border="0" cellpadding="4" cellspacing="0">
+						<tr>
+							<td class="column1"><label for="element_meta_type">{$lang_fullpage_type}</label></td> 
+							<td><select id="element_meta_type">
+										<option value="name">name</option>
+										<option value="http-equiv">http-equiv</option>
+								</select></td>
+						</tr>
+						<tr>
+							<td class="column1"><label for="element_meta_name">{$lang_fullpage_name}</label></td> 
+							<td><input id="element_meta_name" name="element_meta_name" type="text" value="" /></td>
+						</tr>
+						<tr>
+							<td class="column1"><label for="element_meta_content">{$lang_fullpage_content}</label></td> 
+							<td><input id="element_meta_content" name="element_meta_content" type="text" value="" /></td>
+						</tr>
+					</table>
+
+					<input type="button" id="meta_updateelement" class="updateElementButton" name="update" value="{$lang_update}" onclick="updateElement();" />
+				</fieldset>
+
+				<fieldset id="title_element">
+					<legend>{$lang_fullpage_title_element}</legend>
+
+					<table border="0" cellpadding="4" cellspacing="0">
+						<tr>
+							<td class="column1"><label for="element_title">{$lang_fullpage_meta_title}</label></td> 
+							<td><input id="element_title" name="element_title" type="text" value="" /></td>
+						</tr>
+					</table>
+
+					<input type="button" id="title_updateelement" class="updateElementButton" name="update" value="{$lang_update}" onclick="updateElement();" />
+				</fieldset>
+
+				<fieldset id="script_element">
+					<legend>{$lang_fullpage_script_element}</legend>
+
+					<div class="tabs">
+						<ul>
+							<li id="script_props_tab" class="current"><span><a href="javascript:mcTabs.displayTab('script_props_tab','script_props_panel');" onmousedown="return false;">{$lang_fullpage_properties}</a></span></li>
+							<li id="script_value_tab"><span><a href="javascript:mcTabs.displayTab('script_value_tab','script_value_panel');" onmousedown="return false;">{$lang_fullpage_value}</a></span></li>
+						</ul>
+					</div>
+
+					<br style="clear: both" />
+
+					<div class="panel_wrapper">
+						<div id="script_props_panel" class="panel current">
+							<table border="0" cellpadding="4" cellspacing="0">
+								<tr>
+									<td class="column1"><label for="element_script_type">{$lang_fullpage_type}</label></td> 
+									<td><select id="element_script_type">
+										<option value="text/javascript">text/javascript</option>
+										<option value="text/jscript">text/jscript</option>
+										<option value="text/vbscript">text/vbscript</option>
+										<option value="text/vbs">text/vbs</option>
+										<option value="text/ecmascript">text/ecmascript</option>
+										<option value="text/xml">text/xml</option>
+									</select></td>
+								</tr>
+								<tr>
+									<td class="column1"><label for="element_script_src">{$lang_fullpage_src}</label></td> 
+									<td><table border="0" cellpadding="0" cellspacing="0">
+									<tr>
+										<td><input id="element_script_src" name="element_script_src" type="text" value="" /></td>
+										<td id="script_src_pickcontainer">&nbsp;</td>
+									</tr>
+								</table></td>
+								</tr>
+								<tr>
+									<td class="column1"><label for="element_script_charset">{$lang_fullpage_charset}</label></td> 
+									<td><select id="element_script_charset"><option value="">{$lang_not_set}</option></select></td>
+								</tr>
+								<tr>
+									<td class="column1"><label for="element_script_defer">{$lang_fullpage_defer}</label></td> 
+									<td><input type="checkbox" id="element_script_defer" name="element_script_defer" class="checkbox" /></td>
+								</tr>
+							</table>
+						</div>
+
+						<div id="script_value_panel" class="panel">
+							<textarea id="element_script_value"></textarea>
+						</div>
+					</div>
+
+					<input type="button" id="script_updateelement" class="updateElementButton" name="update" value="{$lang_update}" onclick="updateElement();" />
+				</fieldset>
+
+				<fieldset id="style_element">
+					<legend>{$lang_fullpage_style_element}</legend>
+
+					<div class="tabs">
+						<ul>
+							<li id="style_props_tab" class="current"><span><a href="javascript:mcTabs.displayTab('style_props_tab','style_props_panel');" onmousedown="return false;">{$lang_fullpage_properties}</a></span></li>
+							<li id="style_value_tab"><span><a href="javascript:mcTabs.displayTab('style_value_tab','style_value_panel');" onmousedown="return false;">{$lang_fullpage_value}</a></span></li>
+						</ul>
+					</div>
+
+					<br style="clear: both" />
+
+					<div class="panel_wrapper">
+						<div id="style_props_panel" class="panel current">
+							<table border="0" cellpadding="4" cellspacing="0">
+								<tr>
+									<td class="column1"><label for="element_style_type">{$lang_fullpage_type}</label></td> 
+									<td><select id="element_style_type">
+										<option value="text/css">text/css</option>
+									</select></td>
+								</tr>
+								<tr>
+									<td class="column1"><label for="element_style_media">{$lang_fullpage_media}</label></td> 
+									<td><select id="element_style_media"></select></td>
+								</tr>
+							</table>
+						</div>
+
+						<div id="style_value_panel" class="panel">
+							<textarea id="element_style_value"></textarea>
+						</div>
+					</div>
+
+					<input type="button" id="style_updateelement" class="updateElementButton" name="update" value="{$lang_update}" onclick="updateElement();" />
+				</fieldset>
+
+				<fieldset id="base_element">
+					<legend>{$lang_fullpage_base_element}</legend>
+
+					<table border="0" cellpadding="4" cellspacing="0">
+						<tr>
+							<td class="column1"><label for="element_base_href">{$lang_fullpage_href}</label></td> 
+							<td><input id="element_base_href" name="element_base_href" type="text" value="" /></td>
+						</tr>
+						<tr>
+							<td class="column1"><label for="element_base_target">{$lang_fullpage_target}</label></td> 
+							<td><input id="element_base_target" name="element_base_target" type="text" value="" /></td>
+						</tr>
+					</table>
+
+					<input type="button" id="base_updateelement" class="updateElementButton" name="update" value="{$lang_update}" onclick="updateElement();" />
+				</fieldset>
+
+				<fieldset id="link_element">
+					<legend>{$lang_fullpage_link_element}</legend>
+
+					<div class="tabs">
+						<ul>
+							<li id="link_general_tab" class="current"><span><a href="javascript:mcTabs.displayTab('link_general_tab','link_general_panel');" onmousedown="return false;">{$lang_fullpage_general_props}</a></span></li>
+							<li id="link_advanced_tab"><span><a href="javascript:mcTabs.displayTab('link_advanced_tab','link_advanced_panel');" onmousedown="return false;">{$lang_fullpage_advanced_props}</a></span></li>
+						</ul>
+					</div>
+
+					<br style="clear: both" />
+
+					<div class="panel_wrapper">
+						<div id="link_general_panel" class="panel current">
+							<table border="0" cellpadding="4" cellspacing="0">
+								<tr>
+									<td class="column1"><label for="element_link_href">{$lang_fullpage_href}</label></td> 
+									<td><table border="0" cellpadding="0" cellspacing="0">
+									<tr>
+										<td><input id="element_link_href" name="element_link_href" type="text" value="" /></td>
+										<td id="link_href_pickcontainer">&nbsp;</td>
+									</tr>
+								</table></td>
+								</tr>
+								<tr>
+									<td class="column1"><label for="element_link_title">{$lang_fullpage_meta_title}</label></td> 
+									<td><input id="element_link_title" name="element_link_title" type="text" value="" /></td>
+								</tr>
+								<tr>
+									<td class="column1"><label for="element_link_type">{$lang_fullpage_type}</label></td> 
+									<td><select id="element_link_type" name="element_link_type">
+										<option value="text/css">text/css</option>
+										<option value="text/javascript">text/javascript</option>
+									</select></td>
+								</tr>
+								<tr>
+									<td class="column1"><label for="element_link_media">{$lang_fullpage_media}</label></td> 
+									<td><select id="element_link_media" name="element_link_media"></select></td>
+								</tr>
+								<tr>
+									<td><label for="element_style_rel">{$lang_fullpage_rel}</label></td>
+									<td><select id="element_style_rel" name="element_style_rel"> 
+											<option value="">{$lang_not_set}</option> 
+											<option value="stylesheet">Stylesheet</option>
+											<option value="alternate">Alternate</option>
+											<option value="designates">Designates</option>
+											<option value="start">Start</option>
+											<option value="next">Next</option>
+											<option value="prev">Prev</option>
+											<option value="contents">Contents</option>
+											<option value="index">Index</option>
+											<option value="glossary">Glossary</option>
+											<option value="copyright">Copyright</option>
+											<option value="chapter">Chapter</option>
+											<option value="subsection">Subsection</option>
+											<option value="appendix">Appendix</option>
+											<option value="help">Help</option>
+											<option value="bookmark">Bookmark</option>
+										</select> 
+									</td>
+								</tr>
+							</table>
+						</div>
+
+						<div id="link_advanced_panel" class="panel">
+							<table border="0" cellpadding="4" cellspacing="0">
+								<tr>
+									<td class="column1"><label for="element_link_charset">{$lang_fullpage_charset}</label></td> 
+									<td><select id="element_link_charset"><option value="">{$lang_not_set}</option></select></td>
+								</tr>
+								<tr>
+									<td class="column1"><label for="element_link_hreflang">{$lang_fullpage_hreflang}</label></td> 
+									<td><input id="element_link_hreflang" name="element_link_hreflang" type="text" value="" /></td>
+								</tr>
+								<tr>
+									<td class="column1"><label for="element_link_target">{$lang_fullpage_target}</label></td> 
+									<td><input id="element_link_target" name="element_link_target" type="text" value="" /></td>
+								</tr>
+								<tr>
+									<td><label for="element_style_rev">{$lang_fullpage_rev}</label></td>
+									<td><select id="element_style_rev" name="element_style_rev"> 
+											<option value="">{$lang_not_set}</option> 
+											<option value="alternate">Alternate</option> 
+											<option value="designates">Designates</option> 
+											<option value="stylesheet">Stylesheet</option> 
+											<option value="start">Start</option> 
+											<option value="next">Next</option> 
+											<option value="prev">Prev</option> 
+											<option value="contents">Contents</option> 
+											<option value="index">Index</option> 
+											<option value="glossary">Glossary</option> 
+											<option value="copyright">Copyright</option> 
+											<option value="chapter">Chapter</option> 
+											<option value="subsection">Subsection</option> 
+											<option value="appendix">Appendix</option> 
+											<option value="help">Help</option> 
+											<option value="bookmark">Bookmark</option> 
+										</select> 
+									</td>
+								</tr>
+							</table>
+						</div>
+					</div>
+
+					<input type="button" id="link_updateelement" class="updateElementButton" name="update" value="{$lang_update}" onclick="updateElement();" />
+				</fieldset>
+
+				<fieldset id="comment_element">
+					<legend>{$lang_fullpage_comment_element}</legend>
+
+					<textarea id="element_comment_value"></textarea>
+
+					<input type="button" id="comment_updateelement" class="updateElementButton" name="update" value="{$lang_update}" onclick="updateElement();" />
+				</fieldset>
+			</div>
+		</div>
+
+		<div class="mceActionPanel">
+			<div style="float: left">
+				<input type="button" id="insert" name="update" value="{$lang_update}" onclick="updateAction();" />
+			</div>
+
+			<div style="float: right">
+				<input type="button" id="cancel" name="cancel" value="{$lang_cancel}" onclick="tinyMCEPopup.close();" />
+			</div>
+		</div>
+    </form>
+</body>
+</html>

Added: labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/plugins/fullpage/images/add.gif
===================================================================
(Binary files differ)


Property changes on: labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/plugins/fullpage/images/add.gif
___________________________________________________________________
Name: svn:mime-type
   + application/octet-stream

Added: labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/plugins/fullpage/images/fullpage.gif
===================================================================
(Binary files differ)


Property changes on: labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/plugins/fullpage/images/fullpage.gif
___________________________________________________________________
Name: svn:mime-type
   + application/octet-stream

Added: labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/plugins/fullpage/images/move_down.gif
===================================================================
(Binary files differ)


Property changes on: labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/plugins/fullpage/images/move_down.gif
___________________________________________________________________
Name: svn:mime-type
   + application/octet-stream

Added: labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/plugins/fullpage/images/move_up.gif
===================================================================
(Binary files differ)


Property changes on: labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/plugins/fullpage/images/move_up.gif
___________________________________________________________________
Name: svn:mime-type
   + application/octet-stream

Added: labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/plugins/fullpage/images/remove.gif
===================================================================
(Binary files differ)


Property changes on: labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/plugins/fullpage/images/remove.gif
___________________________________________________________________
Name: svn:mime-type
   + application/octet-stream

Added: labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/plugins/fullpage/jscripts/fullpage.js
===================================================================
--- labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/plugins/fullpage/jscripts/fullpage.js	2007-01-11 22:09:16 UTC (rev 8831)
+++ labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/plugins/fullpage/jscripts/fullpage.js	2007-01-11 22:10:56 UTC (rev 8832)
@@ -0,0 +1,580 @@
+//
+
+var defaultDocTypes = 
+	'XHTML 1.0 Transitional=<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">,' +
+	'XHTML 1.0 Frameset=<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Frameset//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-frameset.dtd">,' +
+	'XHTML 1.0 Strict=<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">,' +
+	'XHTML 1.1=<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">">,' +
+	'HTML 4.01 Transitional=<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">,' +
+	'HTML 4.01 Strict=<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">,' +
+	'HTML 4.01 Frameset=<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Frameset//EN" "http://www.w3.org/TR/html4/frameset.dtd">';
+
+var defaultEncodings = 
+	'Western european (iso-8859-1)=iso-8859-1,' +
+	'Central European (iso-8859-2)=iso-8859-2,' +
+	'Unicode (UTF-8)=utf-8,' +
+	'Chinese traditional (Big5)=big5,' +
+	'Cyrillic (iso-8859-5)=iso-8859-5,' +
+	'Japanese (iso-2022-jp)=iso-2022-jp,' +
+	'Greek (iso-8859-7)=iso-8859-7,' +
+	'Korean (iso-2022-kr)=iso-2022-kr,' +
+	'ASCII (us-ascii)=us-ascii';
+
+var defaultMediaTypes = 
+	'all=all,' +
+	'screen=screen,' +
+	'print=print,' +
+	'tty=tty,' +
+	'tv=tv,' +
+	'projection=projection,' +
+	'handheld=handheld,' +
+	'braille=braille,' +
+	'aural=aural';
+
+var defaultFontNames = 'Arial=arial,helvetica,sans-serif;Courier New=courier new,courier,monospace;Georgia=georgia,times new roman,times,serif;Tahoma=tahoma,arial,helvetica,sans-serif;Times New Roman=times new roman,times,serif;Verdana=verdana,arial,helvetica,sans-serif;Impact=impact;WingDings=wingdings';
+var defaultFontSizes = '10px,11px,12px,13px,14px,15px,16px';
+
+var addMenuLayer = new MCLayer("addmenu");
+var lastElementType = null;
+var topDoc;
+
+function init() {
+	var f = document.forms['fullpage'];
+	var i, p, doctypes, encodings, mediaTypes, fonts;
+	var inst = tinyMCE.getInstanceById(tinyMCE.getWindowArg('editor_id'));
+
+	// Setup doctype select box
+	doctypes = tinyMCE.getParam("fullpage_doctypes", defaultDocTypes).split(',');
+	for (i=0; i<doctypes.length; i++) {
+		p = doctypes[i].split('=');
+
+		if (p.length > 1)
+			addSelectValue(f, 'doctypes', p[0], p[1]);
+	}
+
+	// Setup fonts select box
+	fonts = tinyMCE.getParam("fullpage_fonts", defaultFontNames).split(';');
+	for (i=0; i<fonts.length; i++) {
+		p = fonts[i].split('=');
+
+		if (p.length > 1)
+			addSelectValue(f, 'fontface', p[0], p[1]);
+	}
+
+	// Setup fontsize select box
+	fonts = tinyMCE.getParam("fullpage_fontsizes", defaultFontSizes).split(',');
+	for (i=0; i<fonts.length; i++)
+		addSelectValue(f, 'fontsize', fonts[i], fonts[i]);
+
+	// Setup mediatype select boxs
+	mediaTypes = tinyMCE.getParam("fullpage_media_types", defaultMediaTypes).split(',');
+	for (i=0; i<mediaTypes.length; i++) {
+		p = mediaTypes[i].split('=');
+
+		if (p.length > 1) {
+			addSelectValue(f, 'element_style_media', p[0], p[1]);
+			addSelectValue(f, 'element_link_media', p[0], p[1]);
+		}
+	}
+
+	// Setup encodings select box
+	encodings = tinyMCE.getParam("fullpage_encodings", defaultEncodings).split(',');
+	for (i=0; i<encodings.length; i++) {
+		p = encodings[i].split('=');
+
+		if (p.length > 1) {
+			addSelectValue(f, 'docencoding', p[0], p[1]);
+			addSelectValue(f, 'element_script_charset', p[0], p[1]);
+			addSelectValue(f, 'element_link_charset', p[0], p[1]);
+		}
+	}
+
+	document.getElementById('bgcolor_pickcontainer').innerHTML = getColorPickerHTML('bgcolor_pick','bgcolor');
+	document.getElementById('link_color_pickcontainer').innerHTML = getColorPickerHTML('link_color_pick','link_color');
+	//document.getElementById('hover_color_pickcontainer').innerHTML = getColorPickerHTML('hover_color_pick','hover_color');
+	document.getElementById('visited_color_pickcontainer').innerHTML = getColorPickerHTML('visited_color_pick','visited_color');
+	document.getElementById('active_color_pickcontainer').innerHTML = getColorPickerHTML('active_color_pick','active_color');
+	document.getElementById('textcolor_pickcontainer').innerHTML = getColorPickerHTML('textcolor_pick','textcolor');
+	document.getElementById('stylesheet_browsercontainer').innerHTML = getBrowserHTML('stylesheetbrowser','stylesheet','file','fullpage');
+	document.getElementById('link_href_pickcontainer').innerHTML = getBrowserHTML('link_href_browser','element_link_href','file','fullpage');
+	document.getElementById('script_src_pickcontainer').innerHTML = getBrowserHTML('script_src_browser','element_script_src','file','fullpage');
+	document.getElementById('bgimage_pickcontainer').innerHTML = getBrowserHTML('bgimage_browser','bgimage','image','fullpage');
+
+	// Resize some elements
+	if (isVisible('stylesheetbrowser'))
+		document.getElementById('stylesheet').style.width = '220px';
+
+	if (isVisible('link_href_browser'))
+		document.getElementById('element_link_href').style.width = '230px';
+
+	if (isVisible('bgimage_browser'))
+		document.getElementById('bgimage').style.width = '210px';
+
+	// Create iframe
+	var iframe = document.createElement('iframe');
+
+	iframe.id = 'tempFrame';
+	iframe.style.display = 'none';
+	iframe.src = tinyMCE.baseURL + "/plugins/fullpage/blank.htm";
+
+	document.body.appendChild(iframe);
+
+	tinyMCEPopup.resizeToInnerSize();
+}
+
+function setupIframe(doc) {
+	var inst = tinyMCE.getInstanceById(tinyMCE.getWindowArg('editor_id'));
+	var hc = inst.fullpageTopContent;
+	var f = document.forms[0];
+	var xmlVer, xmlEnc, docType;
+	var nodes, i, x, name, value, tmp, l;
+
+	// Keep it from not loading/executing stuff
+	hc = hc.replace(/<script>/gi, '<script type="text/javascript">');
+	hc = hc.replace(/\ssrc=/gi, " mce_src=");
+	hc = hc.replace(/\shref=/gi, " mce_href=");
+	hc = hc.replace(/\stype=/gi, " mce_type=");
+	hc = hc.replace(/<script/gi, '<script type="text/unknown" ');
+
+	// Add end to make it DOM parseable
+	hc += '</body></html>';
+
+	topDoc = doc;
+	doc.open();
+	doc.write(hc);
+	doc.close();
+
+	// ------- Setup options for genral tab
+
+	// Parse xml and doctype
+	xmlVer = getReItem(/<\?\s*?xml.*?version\s*?=\s*?"(.*?)".*?\?>/gi, hc, 1);
+	xmlEnc = getReItem(/<\?\s*?xml.*?encoding\s*?=\s*?"(.*?)".*?\?>/gi, hc, 1);
+	docType = getReItem(/<\!DOCTYPE.*?>/gi, hc, 0);
+	f.langcode.value = getReItem(/lang="(.*?)"/gi, hc, 1);
+
+	// Get title
+	f.metatitle.value = tinyMCE.entityDecode(getReItem(/<title>(.*?)<\/title>/gi, hc, 1));
+
+	// Check for meta encoding
+	nodes = doc.getElementsByTagName("meta");
+	for (i=0; i<nodes.length; i++) {
+		name = tinyMCE.getAttrib(nodes[i], 'name');
+		value = tinyMCE.getAttrib(nodes[i], 'content');
+		httpEquiv = tinyMCE.getAttrib(nodes[i], 'httpEquiv');
+
+		switch (name.toLowerCase()) {
+			case "keywords":
+				f.metakeywords.value = value;
+				break;
+
+			case "description":
+				f.metadescription.value = value;
+				break;
+
+			case "author":
+				f.metaauthor.value = value;
+				break;
+
+			case "copyright":
+				f.metacopyright.value = value;
+				break;
+
+			case "robots":
+				selectByValue(f, 'metarobots', value, true, true);
+				break;
+		}
+
+		switch (httpEquiv.toLowerCase()) {
+			case "content-type":
+				tmp = getReItem(/charset\s*=\s*(.*)\s*/gi, value, 1);
+
+				// Override XML encoding
+				if (tmp != "")
+					xmlEnc = tmp;
+
+				break;
+		}
+	}
+
+	selectByValue(f, 'doctypes', docType, true, true);
+	selectByValue(f, 'docencoding', xmlEnc, true, true);
+	selectByValue(f, 'langdir', tinyMCE.getAttrib(doc.body, 'dir'), true, true);
+
+	if (xmlVer != '')
+		f.xml_pi.checked = true;
+
+	// ------- Setup options for appearance tab
+
+	// Get primary stylesheet
+	nodes = doc.getElementsByTagName("link");
+	for (i=0; i<nodes.length; i++) {
+		l = nodes[i];
+		tmp = tinyMCE.getAttrib(l, 'media');
+
+		if (tinyMCE.getAttrib(l, 'mce_type') == "text/css" && (tmp == "" || tmp == "screen" || tmp == "all") && tinyMCE.getAttrib(l, 'rel') == "stylesheet") {
+			f.stylesheet.value = tinyMCE.getAttrib(l, 'mce_href');
+			break;
+		}
+	}
+
+	// Get from style elements
+	nodes = doc.getElementsByTagName("style");
+	for (i=0; i<nodes.length; i++) {
+		tmp = parseStyleElement(nodes[i]);
+
+		for (x=0; x<tmp.length; x++) {
+		//	if (tmp[x].rule.indexOf('a:hover') != -1 && tmp[x].data['color'])
+		//		f.hover_color.value = tmp[x].data['color'];
+
+			if (tmp[x].rule.indexOf('a:visited') != -1 && tmp[x].data['color'])
+				f.visited_color.value = tmp[x].data['color'];
+
+			if (tmp[x].rule.indexOf('a:link') != -1 && tmp[x].data['color'])
+				f.link_color.value = tmp[x].data['color'];
+
+			if (tmp[x].rule.indexOf('a:active') != -1 && tmp[x].data['color'])
+				f.active_color.value = tmp[x].data['color'];
+		}
+	}
+
+	// Get from body attribs
+
+/*	f.leftmargin.value = tinyMCE.getAttrib(doc.body, "leftmargin");
+	f.rightmargin.value = tinyMCE.getAttrib(doc.body, "rightmargin");
+	f.topmargin.value = tinyMCE.getAttrib(doc.body, "topmargin");
+	f.bottommargin.value = tinyMCE.getAttrib(doc.body, "bottommargin");*/
+	f.textcolor.value = convertRGBToHex(tinyMCE.getAttrib(doc.body, "text"));
+	f.active_color.value = convertRGBToHex(tinyMCE.getAttrib(doc.body, "alink"));
+	f.link_color.value = convertRGBToHex(tinyMCE.getAttrib(doc.body, "link"));
+	f.visited_color.value = convertRGBToHex(tinyMCE.getAttrib(doc.body, "vlink"));
+	f.bgcolor.value = convertRGBToHex(tinyMCE.getAttrib(doc.body, "bgcolor"));
+	f.bgimage.value = convertRGBToHex(tinyMCE.getAttrib(doc.body, "background"));
+
+	// Get from style info
+	var style = tinyMCE.parseStyle(tinyMCE.getAttrib(doc.body, 'style'));
+
+	if (style['font-family'])
+		selectByValue(f, 'fontface', style['font-family'], true, true);
+	else
+		selectByValue(f, 'fontface', tinyMCE.getParam("fullpage_default_fontface", ""), true, true);
+
+	if (style['font-size'])
+		selectByValue(f, 'fontsize', style['font-size'], true, true);
+	else
+		selectByValue(f, 'fontsize', tinyMCE.getParam("fullpage_default_fontsize", ""), true, true);
+
+	if (style['color'])
+		f.textcolor.value = convertRGBToHex(style['color']);
+
+	if (style['background-image'])
+		f.bgimage.value = style['background-image'].replace(new RegExp("url\\('?([^']*)'?\\)", 'gi'), "$1");
+
+	if (style['background-color'])
+		f.bgcolor.value = convertRGBToHex(style['background-color']);
+
+	if (style['margin']) {
+		tmp = style['margin'].replace(/[^0-9 ]/g, '');
+		tmp = tmp.split(/ +/);
+		f.topmargin.value = tmp.length > 0 ? tmp[0] : '';
+		f.rightmargin.value = tmp.length > 1 ? tmp[1] : tmp[0];
+		f.bottommargin.value = tmp.length > 2 ? tmp[2] : tmp[0];
+		f.leftmargin.value = tmp.length > 3 ? tmp[3] : tmp[0];
+	}
+
+	if (style['margin-left'])
+		f.leftmargin.value = style['margin-left'].replace(/[^0-9]/g, '');
+
+	if (style['margin-right'])
+		f.rightmargin.value = style['margin-right'].replace(/[^0-9]/g, '');
+
+	if (style['margin-top'])
+		f.topmargin.value = style['margin-top'].replace(/[^0-9]/g, '');
+
+	if (style['margin-bottom'])
+		f.bottommargin.value = style['margin-bottom'].replace(/[^0-9]/g, '');
+
+	f.style.value = tinyMCE.serializeStyle(style);
+
+	updateColor('textcolor_pick', 'textcolor');
+	updateColor('bgcolor_pick', 'bgcolor');
+	updateColor('visited_color_pick', 'visited_color');
+	updateColor('active_color_pick', 'active_color');
+	updateColor('link_color_pick', 'link_color');
+	//updateColor('hover_color_pick', 'hover_color');
+}
+
+function updateAction() {
+	var inst = tinyMCE.getInstanceById(tinyMCE.getWindowArg('editor_id'));
+	var f = document.forms[0];
+	var nl, i, h, v, s, head, html, l, tmp, addlink = true;
+
+	head = topDoc.getElementsByTagName('head')[0];
+
+	// Fix scripts without a type
+	nl = topDoc.getElementsByTagName('script');
+	for (i=0; i<nl.length; i++) {
+		if (tinyMCE.getAttrib(nl[i], 'mce_type') == '')
+			nl[i].setAttribute('mce_type', 'text/javascript');
+	}
+
+	// Get primary stylesheet
+	nl = topDoc.getElementsByTagName("link");
+	for (i=0; i<nl.length; i++) {
+		l = nl[i];
+
+		tmp = tinyMCE.getAttrib(l, 'media');
+
+		if (tinyMCE.getAttrib(l, 'mce_type') == "text/css" && (tmp == "" || tmp == "screen" || tmp == "all") && tinyMCE.getAttrib(l, 'rel') == "stylesheet") {
+			addlink = false;
+
+			if (f.stylesheet.value == '')
+				l.parentNode.removeChild(l);
+			else
+				l.setAttribute('mce_href', f.stylesheet.value);
+
+			break;
+		}
+	}
+
+	// Add new link
+	if (f.stylesheet.value != '') {
+		l = topDoc.createElement('link');
+
+		l.setAttribute('mce_type', 'text/css');
+		l.setAttribute('mce_href', f.stylesheet.value);
+		l.setAttribute('rel', 'stylesheet');
+
+		head.appendChild(l);
+	}
+
+	setMeta(head, 'keywords', f.metakeywords.value);
+	setMeta(head, 'description', f.metadescription.value);
+	setMeta(head, 'author', f.metaauthor.value);
+	setMeta(head, 'copyright', f.metacopyright.value);
+	setMeta(head, 'robots', getSelectValue(f, 'metarobots'));
+	setMeta(head, 'Content-Type', getSelectValue(f, 'docencoding'));
+
+	topDoc.body.dir = getSelectValue(f, 'langdir');
+	topDoc.body.style.cssText = f.style.value;
+
+	topDoc.body.setAttribute('vLink', f.visited_color.value);
+	topDoc.body.setAttribute('link', f.link_color.value);
+	topDoc.body.setAttribute('text', f.textcolor.value);
+	topDoc.body.setAttribute('aLink', f.active_color.value);
+
+	topDoc.body.style.fontFamily = getSelectValue(f, 'fontface');
+	topDoc.body.style.fontSize = getSelectValue(f, 'fontsize');
+	topDoc.body.style.backgroundColor = f.bgcolor.value;
+
+	if (f.leftmargin.value != '')
+		topDoc.body.style.marginLeft = f.leftmargin.value + 'px';
+
+	if (f.rightmargin.value != '')
+		topDoc.body.style.marginRight = f.rightmargin.value + 'px';
+
+	if (f.bottommargin.value != '')
+		topDoc.body.style.marginBottom = f.bottommargin.value + 'px';
+
+	if (f.topmargin.value != '')
+		topDoc.body.style.marginTop = f.topmargin.value + 'px';
+
+	html = topDoc.getElementsByTagName('html')[0];
+	html.setAttribute('lang', f.langcode.value);
+	html.setAttribute('xml:lang', f.langcode.value);
+
+	if (f.bgimage.value != '')
+		topDoc.body.style.backgroundImage = "url('" + f.bgimage.value + "')";
+	else
+		topDoc.body.style.backgroundImage = '';
+
+	inst.cleanup.addRuleStr('-title,meta[http-equiv|name|content],base[href|target],link[href|rel|type|title|media],style[type],script[type|language|src],html[lang|xml:lang|xmlns],body[style|dir|vlink|link|text|alink],head');
+
+	h = inst.cleanup.serializeNodeAsHTML(topDoc.documentElement);
+
+	h = h.substring(0, h.lastIndexOf('</body>'));
+
+	if (h.indexOf('<title>') == -1)
+		h = h.replace(/<head.*?>/, '$&\n' + '<title>' + inst.cleanup.xmlEncode(f.metatitle.value) + '</title>');
+	else
+		h = h.replace(/<title>(.*?)<\/title>/, '<title>' + inst.cleanup.xmlEncode(f.metatitle.value) + '</title>');
+
+	if ((v = getSelectValue(f, 'doctypes')) != '')
+		h = v + '\n' + h;
+
+	if (f.xml_pi.checked) {
+		s = '<?xml version="1.0"';
+
+		if ((v = getSelectValue(f, 'docencoding')) != '')
+			s += ' encoding="' + v + '"';
+
+		s += '?>\n';
+		h = s + h;
+	}
+
+	inst.fullpageTopContent = h;
+
+	tinyMCEPopup.execCommand('mceFullPageUpdate', false, '');
+	tinyMCEPopup.close();
+}
+
+function setMeta(he, k, v) {
+	var nl, i, m;
+
+	nl = he.getElementsByTagName('meta');
+	for (i=0; i<nl.length; i++) {
+		if (k == 'Content-Type' && tinyMCE.getAttrib(nl[i], 'http-equiv') == k) {
+			if (v == '')
+				nl[i].parentNode.removeChild(nl[i]);
+			else
+				nl[i].setAttribute('content', "text/html; charset=" + v);
+
+			return;
+		}
+
+		if (tinyMCE.getAttrib(nl[i], 'name') == k) {
+			if (v == '')
+				nl[i].parentNode.removeChild(nl[i]);
+			else
+				nl[i].setAttribute('content', v);
+			return;
+		}
+	}
+
+	if (v == '')
+		return;
+
+	m = topDoc.createElement('meta');
+
+	if (k == 'Content-Type')
+		m.httpEquiv = k;
+	else
+		m.setAttribute('name', k);
+
+	m.setAttribute('content', v);
+	he.appendChild(m);
+}
+
+function parseStyleElement(e) {
+	var v = e.innerHTML;
+	var p, i, r;
+
+	v = v.replace(/<!--/gi, '');
+	v = v.replace(/-->/gi, '');
+	v = v.replace(/[\n\r]/gi, '');
+	v = v.replace(/\s+/gi, ' ');
+
+	r = new Array();
+	p = v.split(/{|}/);
+
+	for (i=0; i<p.length; i+=2) {
+		if (p[i] != "")
+			r[r.length] = {rule : tinyMCE.trim(p[i]), data : tinyMCE.parseStyle(p[i+1])};
+	}
+
+	return r;
+}
+
+function serializeStyleElement(d) {
+	var i, s, st;
+
+	s = '<!--\n';
+
+	for (i=0; i<d.length; i++) {
+		s += d[i].rule + ' {\n';
+
+		st = tinyMCE.serializeStyle(d[i].data);
+
+		if (st != '')
+			st += ';';
+
+		s += st.replace(/;/g, ';\n');
+		s += '}\n';
+
+		if (i != d.length - 1)
+			s += '\n';
+	}
+
+	s += '\n-->';
+
+	return s;
+}
+
+function getReItem(r, s, i) {
+	var c = r.exec(s);
+
+	if (c && c.length > i)
+		return c[i];
+
+	return '';
+}
+
+function changedStyleField(field) {
+	//alert(field.id);
+}
+
+function showAddMenu() {
+	var re = document.getElementById('addbutton');
+
+	addMenuLayer.moveRelativeTo(re, 'tr');
+	if (addMenuLayer.isMSIE)
+		addMenuLayer.moveBy(2, 0);
+
+	addMenuLayer.show();
+	addMenuLayer.setAutoHide(true, hideAddMenu);
+	addMenuLayer.addCSSClass(re, 'selected');
+}
+
+function hideAddMenu(l, e, mx, my) {
+	var re = document.getElementById('addbutton');
+	addMenuLayer.removeCSSClass(re, 'selected');
+}
+
+function addHeadElm(type) {
+	var le = document.getElementById('headlist');
+	var re = document.getElementById('addbutton');
+	var te = document.getElementById(type + '_element');
+
+	if (lastElementType)
+		lastElementType.style.display = 'none';
+
+	te.style.display = 'block';
+
+	lastElementType = te;
+
+	addMenuLayer.hide();
+	addMenuLayer.removeCSSClass(re, 'selected');
+
+	document.getElementById(type + '_updateelement').value = tinyMCE.getLang('lang_insert', 'Insert', true);
+
+	le.size = 10;
+}
+
+function updateHeadElm(item) {
+	var type = item.substring(0, item.indexOf('_'));
+	var le = document.getElementById('headlist');
+	var re = document.getElementById('addbutton');
+	var te = document.getElementById(type + '_element');
+
+	if (lastElementType)
+		lastElementType.style.display = 'none';
+
+	te.style.display = 'block';
+
+	lastElementType = te;
+
+	addMenuLayer.hide();
+	addMenuLayer.removeCSSClass(re, 'selected');
+
+	document.getElementById(type + '_updateelement').value = tinyMCE.getLang('lang_update', 'Update', true);
+
+	le.size = 10;
+}
+
+function cancelElementUpdate() {
+	var le = document.getElementById('headlist');
+
+	if (lastElementType)
+		lastElementType.style.display = 'none';
+
+	le.size = 26;
+}
\ No newline at end of file

Added: labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/plugins/fullpage/langs/en.js
===================================================================
--- labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/plugins/fullpage/langs/en.js	2007-01-11 22:09:16 UTC (rev 8831)
+++ labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/plugins/fullpage/langs/en.js	2007-01-11 22:10:56 UTC (rev 8832)
@@ -0,0 +1,92 @@
+// UK lang variables
+
+tinyMCE.addToLang('fullpage',{
+	title : 'Document properties',
+	desc : 'Document properties',
+	meta_tab : 'General',
+	appearance_tab : 'Appearance',
+	advanced_tab : 'Advanced',
+	meta_props : 'Meta information',
+	langprops : 'Language and encoding',
+	meta_title : 'Title',
+	meta_keywords : 'Keywords',
+	meta_description : 'Description',
+	meta_robots : 'Robots',
+	doctypes : 'Doctype',
+	langcode : 'Language code',
+	langdir : 'Language direction',
+	ltr : 'Left to right',
+	rtl : 'Right to left',
+	xml_pi : 'XML declaration',
+	encoding : 'Character encoding',
+	appearance_bgprops : 'Background properties',
+	appearance_marginprops : 'Body margins',
+	appearance_linkprops : 'Link colors',
+	appearance_textprops : 'Text properties',
+	bgcolor : 'Background color',
+	bgimage : 'Background image',
+	left_margin : 'Left margin',
+	right_margin : 'Right margin',
+	top_margin : 'Top margin',
+	bottom_margin : 'Bottom margin',
+	text_color : 'Text color',
+	font_size : 'Font size',
+	font_face : 'Font face',
+	link_color : 'Link color',
+	hover_color : 'Hover color',
+	visited_color : 'Visited color',
+	active_color : 'Active color',
+	textcolor : 'Color',
+	fontsize : 'Font size',
+	fontface : 'Font family',
+	meta_index_follow : 'Index and follow the links',
+	meta_index_nofollow : 'Index and don\'t follow the links',
+	meta_noindex_follow : 'Do not index but follow the links',
+	meta_noindex_nofollow : 'Do not index and don\'t follow the links',
+	appearance_style : 'Stylesheet and style properties',
+	stylesheet : 'Stylesheet',
+	style : 'Style',
+	author : 'Author',
+	copyright : 'Copyright',
+	add : 'Add new element',
+	remove : 'Remove selected element',
+	moveup : 'Move selected element up',
+	movedown : 'Move selected element down',
+	head_elements : 'Head elements',
+	info : 'Information',
+	info_text : '',
+	add_title : 'Title element',
+	add_meta : 'Meta element',
+	add_script : 'Script element',
+	add_style : 'Style element',
+	add_link : 'Link element',
+	add_base : 'Base element',
+	add_comment : 'Comment node',
+	title_element : 'Title element',
+	script_element : 'Script element',
+	style_element : 'Style element',
+	base_element : 'Base element',
+	link_element : 'Link element',
+	meta_element : 'Meta element',
+	comment_element : 'Comment',
+	src : 'Src',
+	language : 'Language',
+	href : 'Href',
+	target : 'Target',
+	rel : 'Rel',
+	type : 'Type',
+	charset : 'Charset',
+	defer : 'Defer',
+	media : 'Media',
+	properties : 'Properties',
+	name : 'Name',
+	value : 'Value',
+	content : 'Content',
+	rel : 'Rel',
+	rev : 'Rev',
+	hreflang : 'Href lang',
+	general_props : 'General',
+	advanced_props : 'Advanced',
+	delta_width : 0,
+	delta_height : 0
+});

Added: labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/plugins/fullscreen/css/content.css
===================================================================
--- labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/plugins/fullscreen/css/content.css	2007-01-11 22:09:16 UTC (rev 8831)
+++ labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/plugins/fullscreen/css/content.css	2007-01-11 22:10:56 UTC (rev 8832)
@@ -0,0 +1,3 @@
+.mceItemFullScreenHidden {
+	display: none !important;
+}

Added: labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/plugins/fullscreen/editor_plugin.js
===================================================================
--- labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/plugins/fullscreen/editor_plugin.js	2007-01-11 22:09:16 UTC (rev 8831)
+++ labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/plugins/fullscreen/editor_plugin.js	2007-01-11 22:10:56 UTC (rev 8832)
@@ -0,0 +1 @@
+tinyMCE.importPluginLanguagePack('fullscreen');var TinyMCE_FullScreenPlugin={getInfo:function(){return{longname:'Fullscreen',author:'Moxiecode Systems AB',authorurl:'http://tinymce.moxiecode.com',infourl:'http://tinymce.moxiecode.com/tinymce/docs/plugin_fullscreen.html',version:tinyMCE.majorVersion+"."+tinyMCE.minorVersion}},initInstance:function(inst){if(!tinyMCE.settings['fullscreen_skip_plugin_css'])tinyMCE.importCSS(inst.getDoc(),tinyMCE.baseURL+"/plugins/fullscreen/css/content.css")},getControlHTML:function(cn){switch(cn){case"fullscreen":return tinyMCE.getButtonHTML(cn,'lang_fullscreen_desc','{$pluginurl}/images/fullscreen.gif','mceFullScreen')}return""},execCommand:function(editor_id,element,command,user_interface,value){switch(command){case"mceFullScreen":this._toggleFullscreen(tinyMCE.getInstanceById(editor_id));return true}return false},_toggleFullscreen:function(inst){var ds=inst.getData('fullscreen'),editorContainer,tableElm,iframe,vp,cw,cd,re,w,h,si;cw=inst.get!
 ContainerWin();cd=cw.document;editorContainer=cd.getElementById(inst.editorId+'_parent');tableElm=editorContainer.firstChild;iframe=inst.iframeElement;re=cd.getElementById(inst.editorId+'_resize');if(!ds.enabled){ds.parents=[];tinyMCE.getParentNode(tableElm.parentNode,function(n){var st=n.style;if(n.nodeType==1&&st){if(n.nodeName=='BODY')return true;ds.parents.push({el:n,position:st.position,left:st.left,top:st.top,right:st.right,bottom:st.bottom,width:st.width,height:st.height,margin:st.margin,padding:st.padding,border:st.border});st.position='static';st.left=st.top=st.margin=st.padding=st.border='0';st.width=st.height=st.right=st.bottom='auto'}return false});ds.oldOverflow=cd.body.style.overflow;cd.body.style.overflow='hidden';if(re)re.style.display='none';vp=tinyMCE.getViewPort(cw);ds.oldWidth=iframe.style.width?iframe.style.width:iframe.offsetWidth;ds.oldHeight=iframe.style.height?iframe.style.height:iframe.offsetHeight;ds.oldTWidth=tableElm.style.width?tableElm.style.w!
 idth:tableElm.offsetWidth;ds.oldTHeight=tableElm.style.height?tableElm
.style.height:tableElm.offsetHeight;if(ds.oldWidth&&ds.oldWidth.indexOf)ds.oldTWidth=ds.oldWidth.indexOf('%')!=-1?ds.oldWidth:ds.oldTWidth;tableElm.style.position='absolute';tableElm.style.zIndex=1000;tableElm.style.left=tableElm.style.top='0';tableElm.style.width=vp.width+'px';tableElm.style.height=vp.height+'px';if(tinyMCE.isRealIE){iframe.style.width=vp.width+'px';iframe.style.height=vp.height+'px';w=iframe.parentNode.clientWidth-(tableElm.offsetWidth-vp.width);h=iframe.parentNode.clientHeight-(tableElm.offsetHeight-vp.height)}else{w=iframe.parentNode.clientWidth;h=iframe.parentNode.clientHeight}iframe.style.width=w+"px";iframe.style.height=h+"px";tinyMCE.selectElements(cd,'SELECT,INPUT,BUTTON,TEXTAREA',function(n){tinyMCE.addCSSClass(n,'mceItemFullScreenHidden');return false});tinyMCE.switchClass(inst.editorId+'_fullscreen','mceButtonSelected');ds.enabled=true}else{si=0;tinyMCE.getParentNode(tableElm.parentNode,function(n){var st=n.style,s=ds.parents[si++];if(n.nodeName=!
 ='BODY')return true;if(st){st.position=s.position;st.left=s.left;st.top=s.top;st.bottom=s.bottom;st.right=s.right;st.width=s.width;st.height=s.height;st.margin=s.margin;st.padding=s.padding;st.border=s.border}});ds.parents=[];cd.body.style.overflow=ds.oldOverflow?ds.oldOverflow:'';if(re&&tinyMCE.getParam("theme_advanced_resizing",false))re.style.display='block';tableElm.style.position='static';tableElm.style.zIndex='';tableElm.style.width='';tableElm.style.height='';tableElm.style.width=ds.oldTWidth?ds.oldTWidth:'';tableElm.style.height=ds.oldTHeight?ds.oldTHeight:'';iframe.style.width=ds.oldWidth?ds.oldWidth:'';iframe.style.height=ds.oldHeight?ds.oldHeight:'';tinyMCE.selectElements(cd,'SELECT,INPUT,BUTTON,TEXTAREA',function(n){tinyMCE.removeCSSClass(n,'mceItemFullScreenHidden');return false});tinyMCE.switchClass(inst.editorId+'_fullscreen','mceButtonNormal');ds.enabled=false}}};tinyMCE.addPlugin("fullscreen",TinyMCE_FullScreenPlugin);
\ No newline at end of file

Added: labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/plugins/fullscreen/editor_plugin_src.js
===================================================================
--- labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/plugins/fullscreen/editor_plugin_src.js	2007-01-11 22:09:16 UTC (rev 8831)
+++ labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/plugins/fullscreen/editor_plugin_src.js	2007-01-11 22:10:56 UTC (rev 8832)
@@ -0,0 +1,189 @@
+/**
+ * $Id: editor_plugin_src.js 128 2006-10-22 19:55:28Z spocke $
+ *
+ * @author Moxiecode
+ * @copyright Copyright © 2004-2006, Moxiecode Systems AB, All rights reserved.
+ */
+
+/* Import plugin specific language pack */
+tinyMCE.importPluginLanguagePack('fullscreen');
+
+var TinyMCE_FullScreenPlugin = {
+	getInfo : function() {
+		return {
+			longname : 'Fullscreen',
+			author : 'Moxiecode Systems AB',
+			authorurl : 'http://tinymce.moxiecode.com',
+			infourl : 'http://tinymce.moxiecode.com/tinymce/docs/plugin_fullscreen.html',
+			version : tinyMCE.majorVersion + "." + tinyMCE.minorVersion
+		};
+	},
+
+	initInstance : function(inst) {
+		if (!tinyMCE.settings['fullscreen_skip_plugin_css'])
+			tinyMCE.importCSS(inst.getDoc(), tinyMCE.baseURL + "/plugins/fullscreen/css/content.css");
+	},
+
+	getControlHTML : function(cn) {
+		switch (cn) {
+			case "fullscreen":
+				return tinyMCE.getButtonHTML(cn, 'lang_fullscreen_desc', '{$pluginurl}/images/fullscreen.gif', 'mceFullScreen');
+		}
+
+		return "";
+	},
+
+	execCommand : function(editor_id, element, command, user_interface, value) {
+		// Handle commands
+		switch (command) {
+			case "mceFullScreen":
+				this._toggleFullscreen(tinyMCE.getInstanceById(editor_id));
+				return true;
+		}
+
+		// Pass to next handler in chain
+		return false;
+	},
+
+	_toggleFullscreen : function(inst) {
+		var ds = inst.getData('fullscreen'), editorContainer, tableElm, iframe, vp, cw, cd, re, w, h, si;
+
+		cw = inst.getContainerWin();
+		cd = cw.document;
+		editorContainer = cd.getElementById(inst.editorId + '_parent');
+		tableElm = editorContainer.firstChild;
+		iframe = inst.iframeElement;
+		re = cd.getElementById(inst.editorId + '_resize');
+
+		if (!ds.enabled) {
+			ds.parents = [];
+
+			tinyMCE.getParentNode(tableElm.parentNode, function (n) {
+				var st = n.style;
+
+				if (n.nodeType == 1 && st) {
+					if (n.nodeName == 'BODY')
+						return true;
+
+					ds.parents.push({
+						el : n,
+						position : st.position,
+						left : st.left,
+						top : st.top,
+						right : st.right,
+						bottom : st.bottom,
+						width : st.width,
+						height : st.height,
+						margin : st.margin,
+						padding : st.padding,
+						border : st.border
+					});
+
+					st.position = 'static';
+					st.left = st.top = st.margin = st.padding = st.border = '0';
+					st.width = st.height = st.right = st.bottom = 'auto';
+				}
+
+				return false;
+			});
+
+			ds.oldOverflow = cd.body.style.overflow;
+			cd.body.style.overflow = 'hidden';
+
+			if (re)
+				re.style.display = 'none';
+
+			vp = tinyMCE.getViewPort(cw);
+
+			ds.oldWidth = iframe.style.width ? iframe.style.width : iframe.offsetWidth;
+			ds.oldHeight = iframe.style.height ? iframe.style.height : iframe.offsetHeight;
+			ds.oldTWidth = tableElm.style.width ? tableElm.style.width : tableElm.offsetWidth;
+			ds.oldTHeight = tableElm.style.height ? tableElm.style.height : tableElm.offsetHeight;
+
+			// Handle % width
+			if (ds.oldWidth && ds.oldWidth.indexOf)
+				ds.oldTWidth = ds.oldWidth.indexOf('%') != -1 ? ds.oldWidth : ds.oldTWidth;
+
+			tableElm.style.position = 'absolute';
+			tableElm.style.zIndex = 1000;
+			tableElm.style.left = tableElm.style.top = '0';
+
+			tableElm.style.width = vp.width + 'px';
+			tableElm.style.height = vp.height + 'px';
+
+			if (tinyMCE.isRealIE) {
+				iframe.style.width = vp.width + 'px';
+				iframe.style.height = vp.height + 'px';
+
+				// Calc new width/height based on overflow
+				w = iframe.parentNode.clientWidth - (tableElm.offsetWidth - vp.width);
+				h = iframe.parentNode.clientHeight - (tableElm.offsetHeight - vp.height);
+			} else {
+				w = iframe.parentNode.clientWidth;
+				h = iframe.parentNode.clientHeight;
+			}
+
+			iframe.style.width = w + "px";
+			iframe.style.height = h + "px";
+
+			tinyMCE.selectElements(cd, 'SELECT,INPUT,BUTTON,TEXTAREA', function (n) {
+				tinyMCE.addCSSClass(n, 'mceItemFullScreenHidden');
+
+				return false;
+			});
+
+			tinyMCE.switchClass(inst.editorId + '_fullscreen', 'mceButtonSelected');
+			ds.enabled = true;
+		} else {
+			si = 0;
+			tinyMCE.getParentNode(tableElm.parentNode, function (n) {
+				var st = n.style, s = ds.parents[si++];
+
+				if (n.nodeName == 'BODY')
+					return true;
+
+				if (st) {
+					st.position = s.position;
+					st.left = s.left;
+					st.top = s.top;
+					st.bottom = s.bottom;
+					st.right = s.right;
+					st.width = s.width;
+					st.height = s.height;
+					st.margin = s.margin;
+					st.padding = s.padding;
+					st.border = s.border;
+				}
+			});
+
+			ds.parents = [];
+
+			cd.body.style.overflow = ds.oldOverflow ? ds.oldOverflow : '';
+
+			if (re && tinyMCE.getParam("theme_advanced_resizing", false))
+				re.style.display = 'block';
+
+			tableElm.style.position = 'static';
+			tableElm.style.zIndex = '';
+			tableElm.style.width = '';
+			tableElm.style.height = '';
+
+			tableElm.style.width = ds.oldTWidth ? ds.oldTWidth : '';
+			tableElm.style.height = ds.oldTHeight ? ds.oldTHeight : '';
+
+			iframe.style.width = ds.oldWidth ? ds.oldWidth : '';
+			iframe.style.height = ds.oldHeight ? ds.oldHeight : '';
+
+			tinyMCE.selectElements(cd, 'SELECT,INPUT,BUTTON,TEXTAREA', function (n) {
+				tinyMCE.removeCSSClass(n, 'mceItemFullScreenHidden');
+
+				return false;
+			});
+
+			tinyMCE.switchClass(inst.editorId + '_fullscreen', 'mceButtonNormal');
+			ds.enabled = false;
+		}
+	}
+};
+
+tinyMCE.addPlugin("fullscreen", TinyMCE_FullScreenPlugin);

Added: labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/plugins/fullscreen/images/fullscreen.gif
===================================================================
(Binary files differ)


Property changes on: labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/plugins/fullscreen/images/fullscreen.gif
___________________________________________________________________
Name: svn:mime-type
   + application/octet-stream

Added: labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/plugins/fullscreen/langs/en.js
===================================================================
--- labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/plugins/fullscreen/langs/en.js	2007-01-11 22:09:16 UTC (rev 8831)
+++ labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/plugins/fullscreen/langs/en.js	2007-01-11 22:10:56 UTC (rev 8832)
@@ -0,0 +1,5 @@
+// UK lang variables
+
+tinyMCE.addToLang('',{
+fullscreen_desc : 'Toggle fullscreen mode'
+});

Added: labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/plugins/fullscreen/readme.txt
===================================================================
--- labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/plugins/fullscreen/readme.txt	2007-01-11 22:09:16 UTC (rev 8831)
+++ labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/plugins/fullscreen/readme.txt	2007-01-11 22:10:56 UTC (rev 8832)
@@ -0,0 +1 @@
+Check the TinyMCE documentation for details on this plugin.

Modified: labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/plugins/iespell/editor_plugin.js
===================================================================
--- labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/plugins/iespell/editor_plugin.js	2007-01-11 22:09:16 UTC (rev 8831)
+++ labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/plugins/iespell/editor_plugin.js	2007-01-11 22:10:56 UTC (rev 8832)
@@ -1,37 +1 @@
-/* Import theme specific language pack */
-tinyMCE.importPluginLanguagePack('iespell', 'uk,se');
-
-/**
- * Returns the HTML contents of the iespell control.
- */
-function TinyMCE_iespell_getControlHTML(control_name) {
-	// Is it the iespell control and is the brower MSIE.
-	if (control_name == "iespell" && tinyMCE.isMSIE)
-		return '<img id="{$editor_id}_iespell" src="{$pluginurl}/images/iespell.gif" title="{$lang_iespell_desc}" width="20" height="20" class="mceButtonNormal" onmouseover="tinyMCE.switchClass(this,\'mceButtonOver\');" onmouseout="tinyMCE.restoreClass(this);" onmousedown="tinyMCE.restoreAndSwitchClass(this,\'mceButtonDown\');" onclick="tinyMCE.execInstanceCommand(\'{$editor_id}\',\'mceIESpell\');">';
-
-	return "";
-}
-
-/**
- * Executes the mceIESpell command.
- */
-function TinyMCE_iespell_execCommand(editor_id, element, command, user_interface, value) {
-	// Handle ieSpellCommand
-	if (command == "mceIESpell") {
-		try {
-			var ieSpell = new ActiveXObject("ieSpell.ieSpellExtension");
-			ieSpell.CheckDocumentNode(tinyMCE._getInstanceById(editor_id).contentDocument.documentElement);
-		} catch (e) {
-			if (e.number == -2146827859) {
-				if (confirm(tinyMCE.getLang("lang_iespell_download", "", true)))
-					window.open('http://www.iespell.com/download.php', 'ieSpellDownload', '');
-			} else
-				alert("Error Loading ieSpell: Exception " + e.number);
-		}
-
-		return true;
-	}
-
-	// Pass to next handler in chain
-	return false;
-}
\ No newline at end of file
+tinyMCE.importPluginLanguagePack('iespell');var TinyMCE_IESpellPlugin={getInfo:function(){return{longname:'IESpell (MSIE Only)',author:'Moxiecode Systems AB',authorurl:'http://tinymce.moxiecode.com',infourl:'http://tinymce.moxiecode.com/tinymce/docs/plugin_iespell.html',version:tinyMCE.majorVersion+"."+tinyMCE.minorVersion}},getControlHTML:function(cn){if(cn=="iespell"&&(tinyMCE.isMSIE&&!tinyMCE.isOpera))return tinyMCE.getButtonHTML(cn,'lang_iespell_desc','{$pluginurl}/images/iespell.gif','mceIESpell');return""},execCommand:function(editor_id,element,command,user_interface,value){if(command=="mceIESpell"){try{var ieSpell=new ActiveXObject("ieSpell.ieSpellExtension");ieSpell.CheckDocumentNode(tinyMCE.getInstanceById(editor_id).contentDocument.documentElement)}catch(e){if(e.number==-2146827859){if(confirm(tinyMCE.getLang("lang_iespell_download","",true)))window.open('http://www.iespell.com/download.php','ieSpellDownload','')}else alert("Error Loading ieSpell: Exception "+e.nu!
 mber)}return true}return false}};tinyMCE.addPlugin("iespell",TinyMCE_IESpellPlugin);
\ No newline at end of file

Added: labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/plugins/iespell/editor_plugin_src.js
===================================================================
--- labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/plugins/iespell/editor_plugin_src.js	2007-01-11 22:09:16 UTC (rev 8831)
+++ labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/plugins/iespell/editor_plugin_src.js	2007-01-11 22:10:56 UTC (rev 8832)
@@ -0,0 +1,58 @@
+/**
+ * $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('iespell');
+
+var TinyMCE_IESpellPlugin = {
+	getInfo : function() {
+		return {
+			longname : 'IESpell (MSIE Only)',
+			author : 'Moxiecode Systems AB',
+			authorurl : 'http://tinymce.moxiecode.com',
+			infourl : 'http://tinymce.moxiecode.com/tinymce/docs/plugin_iespell.html',
+			version : tinyMCE.majorVersion + "." + tinyMCE.minorVersion
+		};
+	},
+
+	/**
+	 * Returns the HTML contents of the iespell control.
+	 */
+	getControlHTML : function(cn) {
+		// Is it the iespell control and is the brower MSIE.
+		if (cn == "iespell" && (tinyMCE.isMSIE && !tinyMCE.isOpera))
+			return tinyMCE.getButtonHTML(cn, 'lang_iespell_desc', '{$pluginurl}/images/iespell.gif', 'mceIESpell');
+
+		return "";
+	},
+
+	/**
+	 * Executes the mceIESpell command.
+	 */
+	execCommand : function(editor_id, element, command, user_interface, value) {
+		// Handle ieSpellCommand
+		if (command == "mceIESpell") {
+			try {
+				var ieSpell = new ActiveXObject("ieSpell.ieSpellExtension");
+				ieSpell.CheckDocumentNode(tinyMCE.getInstanceById(editor_id).contentDocument.documentElement);
+			} catch (e) {
+				if (e.number == -2146827859) {
+					if (confirm(tinyMCE.getLang("lang_iespell_download", "", true)))
+						window.open('http://www.iespell.com/download.php', 'ieSpellDownload', '');
+				} else
+					alert("Error Loading ieSpell: Exception " + e.number);
+			}
+
+			return true;
+		}
+
+		// Pass to next handler in chain
+		return false;
+	}
+};
+
+tinyMCE.addPlugin("iespell", TinyMCE_IESpellPlugin);

Modified: labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/plugins/iespell/images/iespell.gif
===================================================================
(Binary files differ)

Added: labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/plugins/iespell/langs/en.js
===================================================================
--- labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/plugins/iespell/langs/en.js	2007-01-11 22:09:16 UTC (rev 8831)
+++ labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/plugins/iespell/langs/en.js	2007-01-11 22:10:56 UTC (rev 8832)
@@ -0,0 +1,7 @@
+// UK lang variables
+
+tinyMCE.addToLang('',{
+iespell_desc : 'Run spell checking',
+iespell_download : "ieSpell not detected. Click OK to go to download page."
+});
+

Modified: labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/plugins/iespell/readme.txt
===================================================================
--- labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/plugins/iespell/readme.txt	2007-01-11 22:09:16 UTC (rev 8831)
+++ labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/plugins/iespell/readme.txt	2007-01-11 22:10:56 UTC (rev 8832)
@@ -1,20 +1 @@
- ieSpell plugin for TinyMCE
-----------------------------
-
-Installation instructions:
-  * Copy the iespell directory to the plugins directory of TinyMCE (/jscripts/tiny_mce/plugins).
-  * Add plugin to TinyMCE plugin option list example: plugins : "iespell".
-  * Add the iespell button name to button list, example: theme_advanced_buttons3_add : "iespell".
-
-Initialization example:
-  tinyMCE.init({
-    theme : "advanced",
-    mode : "textareas",
-    plugins : "iespell",
-    theme_advanced_buttons3_add : "iespell"
-  });
-
-Requirements:
-  The end user will need MSIE on Windows with the ieSpell installed. This can be downloaded
-  from http://www.iespell.com/download.php. Notice on other browsers than MSIE the spellchecking
-  button will not be visible.
+Check the TinyMCE documentation for details on this plugin.

Added: labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/plugins/inlinepopups/css/inlinepopup.css
===================================================================
--- labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/plugins/inlinepopups/css/inlinepopup.css	2007-01-11 22:09:16 UTC (rev 8831)
+++ labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/plugins/inlinepopups/css/inlinepopup.css	2007-01-11 22:10:56 UTC (rev 8832)
@@ -0,0 +1,69 @@
+/* Window classes */
+
+.mceWindow {
+	position: absolute;
+	left: 0;
+	top: 0;
+	border: 1px solid black;
+	background-color: #D4D0C8;
+}
+
+.mceWindowHead {
+	background-color: #334F8D;
+	width: 100%;
+	height: 18px;
+	cursor: move;
+	overflow: hidden;
+}
+
+.mceWindowBody {
+	clear: both;
+	background-color: white;
+}
+
+.mceWindowStatusbar {
+	background-color: #D4D0C8;
+	height: 12px;
+	border-top: 1px solid black;
+}
+
+.mceWindowTitle {
+	float: left;
+	font-family: "MS Sans Serif";
+	font-size: 9pt;
+	font-weight: bold;
+	line-height: 18px;
+	color: white;
+	margin-left: 2px;
+	overflow: hidden;
+}
+
+.mceWindowHeadTools {
+	margin-right: 2px;
+}
+
+.mceWindowClose, .mceWindowMinimize, .mceWindowMaximize {
+	display: block;
+	float: right;
+	overflow: hidden;
+	margin-top: 2px;
+}
+
+.mceWindowClose {
+	margin-left: 2px;
+}
+
+.mceWindowMinimize {
+}
+
+.mceWindowMaximize {
+}
+
+.mceWindowResize {
+	display: block;
+	float: right;
+	overflow: hidden;
+	cursor: se-resize;
+	width: 12px;
+	height: 12px;
+}

Added: labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/plugins/inlinepopups/editor_plugin.js
===================================================================
--- labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/plugins/inlinepopups/editor_plugin.js	2007-01-11 22:09:16 UTC (rev 8831)
+++ labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/plugins/inlinepopups/editor_plugin.js	2007-01-11 22:10:56 UTC (rev 8832)
@@ -0,0 +1 @@
+var TinyMCE_InlinePopupsPlugin={getInfo:function(){return{longname:'Inline Popups',author:'Moxiecode Systems AB',authorurl:'http://tinymce.moxiecode.com',infourl:'http://tinymce.moxiecode.com/tinymce/docs/plugin_inlinepopups.html',version:tinyMCE.majorVersion+"."+tinyMCE.minorVersion}}};tinyMCE.addPlugin("inlinepopups",TinyMCE_InlinePopupsPlugin);TinyMCE_Engine.prototype.orgOpenWindow=TinyMCE_Engine.prototype.openWindow;TinyMCE_Engine.prototype.openWindow=function(template,args){if(args['inline']!="yes"||tinyMCE.isOpera||tinyMCE.getParam("plugins").indexOf('inlinepopups')==-1){mcWindows.selectedWindow=null;args['mce_inside_iframe']=false;this.orgOpenWindow(template,args);return}var url,resizable,scrollbars;args['mce_inside_iframe']=true;tinyMCE.windowArgs=args;if(template['file'].charAt(0)!='/'&&template['file'].indexOf('://')==-1)url=tinyMCE.baseURL+"/themes/"+tinyMCE.getParam("theme")+"/"+template['file'];else url=template['file'];if(!(width=parseInt(template['width'])))w!
 idth=320;if(!(height=parseInt(template['height'])))height=200;resizable=(args&&args['resizable'])?args['resizable']:"no";scrollbars=(args&&args['scrollbars'])?args['scrollbars']:"no";height+=18;for(var name in args){if(typeof(args[name])=='function')continue;url=tinyMCE.replaceVar(url,name,escape(args[name]))}var elm=document.getElementById(this.selectedInstance.editorId+'_parent');var pos=tinyMCE.getAbsPosition(elm);pos.absLeft+=Math.round((elm.firstChild.clientWidth/ 2) - (width /2));pos.absTop+=Math.round((elm.firstChild.clientHeight/ 2) - (height /2));mcWindows.open(url,mcWindows.idCounter++,"modal=yes,width="+width+",height="+height+",resizable="+resizable+",scrollbars="+scrollbars+",statusbar="+resizable+",left="+pos.absLeft+",top="+pos.absTop)};TinyMCE_Engine.prototype.orgCloseWindow=TinyMCE_Engine.prototype.closeWindow;TinyMCE_Engine.prototype.closeWindow=function(win){if(mcWindows.selectedWindow!=null)mcWindows.selectedWindow.close();else this.orgCloseWindow(win)};!
 TinyMCE_Engine.prototype.setWindowTitle=function(win_ref,title){for(va
r n in mcWindows.windows){var win=mcWindows.windows[n];if(typeof(win)=='function')continue;if(win_ref.name==win.id+"_iframe")window.frames[win.id+"_iframe"].document.getElementById(win.id+'_title').innerHTML=title}};function TinyMCE_Windows(){this.settings=new Array();this.windows=new Array();this.isMSIE=(navigator.appName=="Microsoft Internet Explorer");this.isGecko=navigator.userAgent.indexOf('Gecko')!=-1;this.isSafari=navigator.userAgent.indexOf('Safari')!=-1;this.isMac=navigator.userAgent.indexOf('Mac')!=-1;this.isMSIE5_0=this.isMSIE&&(navigator.userAgent.indexOf('MSIE 5.0')!=-1);this.action="none";this.selectedWindow=null;this.lastSelectedWindow=null;this.zindex=100;this.mouseDownScreenX=0;this.mouseDownScreenY=0;this.mouseDownLayerX=0;this.mouseDownLayerY=0;this.mouseDownWidth=0;this.mouseDownHeight=0;this.idCounter=0};TinyMCE_Windows.prototype.init=function(settings){this.settings=settings;if(this.isMSIE)this.addEvent(document,"mousemove",mcWindows.eventDispatcher);el!
 se this.addEvent(window,"mousemove",mcWindows.eventDispatcher);this.addEvent(document,"mouseup",mcWindows.eventDispatcher);this.doc=document};TinyMCE_Windows.prototype.getParam=function(name,default_value){var value=null;value=(typeof(this.settings[name])=="undefined")?default_value:this.settings[name];if(value=="true"||value=="false")return(value=="true");return value};TinyMCE_Windows.prototype.eventDispatcher=function(e){e=typeof(e)=="undefined"?window.event:e;if(mcWindows.selectedWindow==null)return;if(mcWindows.isGecko&&e.type=="mousedown"){var elm=e.currentTarget;for(var n in mcWindows.windows){var win=mcWindows.windows[n];if(win.headElement==elm||win.resizeElement==elm){win.focus();break}}}switch(e.type){case"mousemove":mcWindows.selectedWindow.onMouseMove(e);break;case"mouseup":mcWindows.selectedWindow.onMouseUp(e);break;case"mousedown":mcWindows.selectedWindow.onMouseDown(e);break;case"focus":mcWindows.selectedWindow.onFocus(e);break}};TinyMCE_Windows.prototype.addE!
 vent=function(obj,name,handler){if(this.isMSIE)obj.attachEvent("on"+na
me,handler);else obj.addEventListener(name,handler,true)};TinyMCE_Windows.prototype.cancelEvent=function(e){if(this.isMSIE){e.returnValue=false;e.cancelBubble=true}else e.preventDefault()};TinyMCE_Windows.prototype.parseFeatures=function(opts){opts=opts.toLowerCase();opts=opts.replace(/;/g,",");opts=opts.replace(/[^0-9a-z=,]/g,"");var optionChunks=opts.split(',');var options=new Array();options['left']="10";options['top']="10";options['width']="300";options['height']="300";options['resizable']="yes";options['minimizable']="yes";options['maximizable']="yes";options['close']="yes";options['movable']="yes";options['statusbar']="yes";options['scrollbars']="auto";options['modal']="no";if(opts=="")return options;for(var i=0;i<optionChunks.length;i++){var parts=optionChunks[i].split('=');if(parts.length==2)options[parts[0]]=parts[1]}options['left']=parseInt(options['left']);options['top']=parseInt(options['top']);options['width']=parseInt(options['width']);options['height']=parseIn!
 t(options['height']);return options};TinyMCE_Windows.prototype.open=function(url,name,features){this.lastSelectedWindow=this.selectedWindow;var win=new TinyMCE_Window();var winDiv,html="",id;var imgPath=this.getParam("images_path");features=this.parseFeatures(features);id="mcWindow_"+name;win.deltaHeight=18;if(features['statusbar']=="yes"){win.deltaHeight+=13;if(this.isMSIE)win.deltaHeight+=1}width=parseInt(features['width']);height=parseInt(features['height'])-win.deltaHeight;if(this.isMSIE)width-=2;win.id=id;win.url=url;win.name=name;win.features=features;this.windows[name]=win;iframeWidth=width;iframeHeight=height;html+='<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">';html+='<html>';html+='<head>';html+='<title>Wrapper iframe</title>';html+='<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">';html+='<link href="'+this.getParam("css_file")+'" rel="stylesheet" type="text/css" />';html+='</head>';html+='<body onload="parent.mcWindows.onLoad(!
 \''+name+'\');">';html+='<div id="'+id+'_container" class="mceWindow">
';html+='<div id="'+id+'_head" class="mceWindowHead" onmousedown="parent.mcWindows.windows[\''+name+'\'].focus();">';html+='  <div id="'+id+'_title" class="mceWindowTitle"';html+='  onselectstart="return false;" unselectable="on" style="-moz-user-select: none !important;"></div>';html+='    <div class="mceWindowHeadTools">';html+='      <a href="javascript:parent.mcWindows.windows[\''+name+'\'].close();" target="_self" onmousedown="return false;" class="mceWindowClose"><img border="0" src="'+imgPath+'/window_close.gif" /></a>';html+='    </div>';html+='</div><div id="'+id+'_body" class="mceWindowBody" style="width: '+width+'px; height: '+height+'px;">';html+='<iframe id="'+id+'_iframe" name="'+id+'_iframe" frameborder="0" width="'+iframeWidth+'" height="'+iframeHeight+'" src="'+url+'" class="mceWindowBodyIframe" scrolling="'+features['scrollbars']+'"></iframe></div>';if(features['statusbar']=="yes"){html+='<div id="'+id+'_statusbar" class="mceWindowStatusbar" onmousedown="pa!
 rent.mcWindows.windows[\''+name+'\'].focus();">';if(features['resizable']=="yes"){if(this.isGecko)html+='<div id="'+id+'_resize" class="mceWindowResize"><div style="background-image: url(\''+imgPath+'/window_resize.gif\'); width: 12px; height: 12px;"></div></div>';else html+='<div id="'+id+'_resize" class="mceWindowResize"><img onmousedown="parent.mcWindows.windows[\''+name+'\'].focus();" border="0" src="'+imgPath+'/window_resize.gif" /></div>'}html+='</div>'}html+='</div>';html+='</body>';html+='</html>';this.createFloatingIFrame(id,features['left'],features['top'],features['width'],features['height'],html)};TinyMCE_Windows.prototype.setDocumentLock=function(state){if(state){var elm=document.getElementById('mcWindowEventBlocker');if(elm==null){elm=document.createElement("div");elm.id="mcWindowEventBlocker";elm.style.position="absolute";elm.style.left="0";elm.style.top="0";document.body.appendChild(elm)}elm.style.display="none";var imgPath=this.getParam("images_path");var w!
 idth=document.body.clientWidth;var height=document.body.clientHeight;e
lm.style.width=width;elm.style.height=height;elm.innerHTML='<img src="'+imgPath+'/spacer.gif" width="'+width+'" height="'+height+'" />';elm.style.zIndex=mcWindows.zindex-1;elm.style.display="block"}else{var elm=document.getElementById('mcWindowEventBlocker');if(mcWindows.windows.length==0)elm.parentNode.removeChild(elm);else elm.style.zIndex=mcWindows.zindex-1}};TinyMCE_Windows.prototype.onLoad=function(name){var win=mcWindows.windows[name];var id="mcWindow_"+name;var wrapperIframe=window.frames[id+"_iframe"].frames[0];var wrapperDoc=window.frames[id+"_iframe"].document;var doc=window.frames[id+"_iframe"].document;var winDiv=document.getElementById("mcWindow_"+name+"_div");var realIframe=window.frames[id+"_iframe"].frames[0];win.id="mcWindow_"+name;win.winElement=winDiv;win.bodyElement=doc.getElementById(id+'_body');win.iframeElement=doc.getElementById(id+'_iframe');win.headElement=doc.getElementById(id+'_head');win.titleElement=doc.getElementById(id+'_title');win.resizeElem!
 ent=doc.getElementById(id+'_resize');win.containerElement=doc.getElementById(id+'_container');win.left=win.features['left'];win.top=win.features['top'];win.frame=window.frames[id+'_iframe'].frames[0];win.wrapperFrame=window.frames[id+'_iframe'];win.wrapperIFrameElement=document.getElementById(id+"_iframe");mcWindows.addEvent(win.headElement,"mousedown",mcWindows.eventDispatcher);if(win.resizeElement!=null)mcWindows.addEvent(win.resizeElement,"mousedown",mcWindows.eventDispatcher);if(mcWindows.isMSIE){mcWindows.addEvent(realIframe.document,"mousemove",mcWindows.eventDispatcher);mcWindows.addEvent(realIframe.document,"mouseup",mcWindows.eventDispatcher)}else{mcWindows.addEvent(realIframe,"mousemove",mcWindows.eventDispatcher);mcWindows.addEvent(realIframe,"mouseup",mcWindows.eventDispatcher);mcWindows.addEvent(realIframe,"focus",mcWindows.eventDispatcher)}for(var i=0;i<window.frames.length;i++){if(!window.frames[i]._hasMouseHandlers){if(mcWindows.isMSIE){mcWindows.addEvent(wi!
 ndow.frames[i].document,"mousemove",mcWindows.eventDispatcher);mcWindo
ws.addEvent(window.frames[i].document,"mouseup",mcWindows.eventDispatcher)}else{mcWindows.addEvent(window.frames[i],"mousemove",mcWindows.eventDispatcher);mcWindows.addEvent(window.frames[i],"mouseup",mcWindows.eventDispatcher)}window.frames[i]._hasMouseHandlers=true}}if(mcWindows.isMSIE){mcWindows.addEvent(win.frame.document,"mousemove",mcWindows.eventDispatcher);mcWindows.addEvent(win.frame.document,"mouseup",mcWindows.eventDispatcher)}else{mcWindows.addEvent(win.frame,"mousemove",mcWindows.eventDispatcher);mcWindows.addEvent(win.frame,"mouseup",mcWindows.eventDispatcher);mcWindows.addEvent(win.frame,"focus",mcWindows.eventDispatcher)}var func=this.getParam("on_open_window","");if(func!="")eval(func+"(win);");win.focus();if(win.features['modal']=="yes")mcWindows.setDocumentLock(true)};TinyMCE_Windows.prototype.createFloatingIFrame=function(id_prefix,left,top,width,height,html){var iframe=document.createElement("iframe");var div=document.createElement("div"),doc;width=parse!
 Int(width);height=parseInt(height)+1;div.setAttribute("id",id_prefix+"_div");div.setAttribute("width",width);div.setAttribute("height",(height));div.style.position="absolute";div.style.left=left+"px";div.style.top=top+"px";div.style.width=width+"px";div.style.height=(height)+"px";div.style.backgroundColor="white";div.style.display="none";if(this.isGecko){iframeWidth=width+2;iframeHeight=height+2}else{iframeWidth=width;iframeHeight=height+1}iframe.setAttribute("id",id_prefix+"_iframe");iframe.setAttribute("name",id_prefix+"_iframe");iframe.setAttribute("border","0");iframe.setAttribute("frameBorder","0");iframe.setAttribute("marginWidth","0");iframe.setAttribute("marginHeight","0");iframe.setAttribute("leftMargin","0");iframe.setAttribute("topMargin","0");iframe.setAttribute("width",iframeWidth);iframe.setAttribute("height",iframeHeight);iframe.setAttribute("scrolling","no");iframe.style.width=iframeWidth+"px";iframe.style.height=iframeHeight+"px";iframe.style.backgroundColo!
 r="white";div.appendChild(iframe);document.body.appendChild(div);div.i
nnerHTML=div.innerHTML;if(this.isSafari){window.setTimeout(function(){var doc=window.frames[id_prefix+'_iframe'].document;doc.open();doc.write(html);doc.close()},10)}else{doc=window.frames[id_prefix+'_iframe'].window.document;doc.open();doc.write(html);doc.close()}div.style.display="block";return div};function TinyMCE_Window(){};TinyMCE_Window.prototype.focus=function(){if(this!=mcWindows.selectedWindow){this.winElement.style.zIndex=++mcWindows.zindex;mcWindows.lastSelectedWindow=mcWindows.selectedWindow;mcWindows.selectedWindow=this}};TinyMCE_Window.prototype.minimize=function(){};TinyMCE_Window.prototype.maximize=function(){};TinyMCE_Window.prototype.startResize=function(){mcWindows.action="resize"};TinyMCE_Window.prototype.startMove=function(e){mcWindows.action="move"};TinyMCE_Window.prototype.close=function(){if(this.frame&&this.frame['tinyMCEPopup'])this.frame['tinyMCEPopup'].restoreSelection();if(mcWindows.lastSelectedWindow!=null)mcWindows.lastSelectedWindow.focus();v!
 ar mcWindowsNew=new Array();for(var n in mcWindows.windows){var win=mcWindows.windows[n];if(typeof(win)=='function')continue;if(win.name!=this.name)mcWindowsNew[n]=win}mcWindows.windows=mcWindowsNew;var e=mcWindows.doc.getElementById(this.id+"_iframe");e.parentNode.removeChild(e);var e=mcWindows.doc.getElementById(this.id+"_div");e.parentNode.removeChild(e);mcWindows.setDocumentLock(false)};TinyMCE_Window.prototype.onMouseMove=function(e){var scrollX=0;var scrollY=0;var dx=e.screenX-mcWindows.mouseDownScreenX;var dy=e.screenY-mcWindows.mouseDownScreenY;switch(mcWindows.action){case"resize":width=mcWindows.mouseDownWidth+(e.screenX-mcWindows.mouseDownScreenX);height=mcWindows.mouseDownHeight+(e.screenY-mcWindows.mouseDownScreenY);width=width<100?100:width;height=height<100?100:height;this.wrapperIFrameElement.style.width=width+2;this.wrapperIFrameElement.style.height=height+2;this.wrapperIFrameElement.width=width+2;this.wrapperIFrameElement.height=height+2;this.winElement.st!
 yle.width=width;this.winElement.style.height=height;height=height-this
.deltaHeight;this.containerElement.style.width=width;this.iframeElement.style.width=width;this.iframeElement.style.height=height;this.bodyElement.style.width=width;this.bodyElement.style.height=height;this.headElement.style.width=width;mcWindows.cancelEvent(e);break;case"move":this.left=mcWindows.mouseDownLayerX+(e.screenX-mcWindows.mouseDownScreenX);this.top=mcWindows.mouseDownLayerY+(e.screenY-mcWindows.mouseDownScreenY);this.winElement.style.left=this.left+"px";this.winElement.style.top=this.top+"px";mcWindows.cancelEvent(e);break}};function debug(msg){document.getElementById('debug').value+=msg+"\n"}TinyMCE_Window.prototype.onMouseUp=function(e){mcWindows.action="none"};TinyMCE_Window.prototype.onFocus=function(e){var winRef=e.currentTarget;for(var n in mcWindows.windows){var win=mcWindows.windows[n];if(typeof(win)=='function')continue;if(winRef.name==win.id+"_iframe"){win.focus();return}}};TinyMCE_Window.prototype.onMouseDown=function(e){var elm=mcWindows.isMSIE?this.wr!
 apperFrame.event.srcElement:e.target;var scrollX=0;var scrollY=0;mcWindows.mouseDownScreenX=e.screenX;mcWindows.mouseDownScreenY=e.screenY;mcWindows.mouseDownLayerX=this.left;mcWindows.mouseDownLayerY=this.top;mcWindows.mouseDownWidth=parseInt(this.winElement.style.width);mcWindows.mouseDownHeight=parseInt(this.winElement.style.height);if(this.resizeElement!=null&&elm==this.resizeElement.firstChild)this.startResize(e);else this.startMove(e);mcWindows.cancelEvent(e)};var mcWindows=new TinyMCE_Windows();mcWindows.init({images_path:tinyMCE.baseURL+"/plugins/inlinepopups/images",css_file:tinyMCE.baseURL+"/plugins/inlinepopups/css/inlinepopup.css"});
\ No newline at end of file

Added: labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/plugins/inlinepopups/editor_plugin_src.js
===================================================================
--- labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/plugins/inlinepopups/editor_plugin_src.js	2007-01-11 22:09:16 UTC (rev 8831)
+++ labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/plugins/inlinepopups/editor_plugin_src.js	2007-01-11 22:10:56 UTC (rev 8832)
@@ -0,0 +1,660 @@
+/**
+ * $Id: editor_plugin_src.js 126 2006-10-22 16:19:55Z spocke $
+ *
+ * Moxiecode DHTML Windows script.
+ *
+ * @author Moxiecode
+ * @copyright Copyright © 2004-2006, Moxiecode Systems AB, All rights reserved.
+ */
+
+// Patch openWindow, closeWindow TinyMCE functions
+
+var TinyMCE_InlinePopupsPlugin = {
+	getInfo : function() {
+		return {
+			longname : 'Inline Popups',
+			author : 'Moxiecode Systems AB',
+			authorurl : 'http://tinymce.moxiecode.com',
+			infourl : 'http://tinymce.moxiecode.com/tinymce/docs/plugin_inlinepopups.html',
+			version : tinyMCE.majorVersion + "." + tinyMCE.minorVersion
+		};
+	}
+};
+
+tinyMCE.addPlugin("inlinepopups", TinyMCE_InlinePopupsPlugin);
+
+// Patch openWindow, closeWindow TinyMCE functions
+
+TinyMCE_Engine.prototype.orgOpenWindow = TinyMCE_Engine.prototype.openWindow;
+
+TinyMCE_Engine.prototype.openWindow = function(template, args) {
+	// Does the caller support inline
+	if (args['inline'] != "yes" || tinyMCE.isOpera || tinyMCE.getParam("plugins").indexOf('inlinepopups') == -1) {
+		mcWindows.selectedWindow = null;
+		args['mce_inside_iframe'] = false;
+		this.orgOpenWindow(template, args);
+		return;
+	}
+
+	var url, resizable, scrollbars;
+
+	args['mce_inside_iframe'] = true;
+	tinyMCE.windowArgs = args;
+
+	if (template['file'].charAt(0) != '/' && template['file'].indexOf('://') == -1)
+		url = tinyMCE.baseURL + "/themes/" + tinyMCE.getParam("theme") + "/" + template['file'];
+	else
+		url = template['file'];
+
+	if (!(width = parseInt(template['width'])))
+		width = 320;
+
+	if (!(height = parseInt(template['height'])))
+		height = 200;
+
+	resizable = (args && args['resizable']) ? args['resizable'] : "no";
+	scrollbars = (args && args['scrollbars']) ? args['scrollbars'] : "no";
+
+	height += 18;
+
+	// Replace all args as variables in URL
+	for (var name in args) {
+		if (typeof(args[name]) == 'function')
+			continue;
+
+		url = tinyMCE.replaceVar(url, name, escape(args[name]));
+	}
+
+	var elm = document.getElementById(this.selectedInstance.editorId + '_parent');
+	var pos = tinyMCE.getAbsPosition(elm);
+
+	// Center div in editor area
+	pos.absLeft += Math.round((elm.firstChild.clientWidth / 2) - (width / 2));
+	pos.absTop += Math.round((elm.firstChild.clientHeight / 2) - (height / 2));
+
+	mcWindows.open(url, mcWindows.idCounter++, "modal=yes,width=" + width+ ",height=" + height + ",resizable=" + resizable + ",scrollbars=" + scrollbars + ",statusbar=" + resizable + ",left=" + pos.absLeft + ",top=" + pos.absTop);
+};
+
+TinyMCE_Engine.prototype.orgCloseWindow = TinyMCE_Engine.prototype.closeWindow;
+
+TinyMCE_Engine.prototype.closeWindow = function(win) {
+	if (mcWindows.selectedWindow != null)
+		mcWindows.selectedWindow.close();
+	else
+		this.orgCloseWindow(win);
+};
+
+TinyMCE_Engine.prototype.setWindowTitle = function(win_ref, title) {
+	for (var n in mcWindows.windows) {
+		var win = mcWindows.windows[n];
+		if (typeof(win) == 'function')
+			continue;
+
+		if (win_ref.name == win.id + "_iframe")
+			window.frames[win.id + "_iframe"].document.getElementById(win.id + '_title').innerHTML = title;
+	}
+};
+
+// * * * * * TinyMCE_Windows classes below
+
+// Windows handler
+function TinyMCE_Windows() {
+	this.settings = new Array();
+	this.windows = new Array();
+	this.isMSIE = (navigator.appName == "Microsoft Internet Explorer");
+	this.isGecko = navigator.userAgent.indexOf('Gecko') != -1;
+	this.isSafari = navigator.userAgent.indexOf('Safari') != -1;
+	this.isMac = navigator.userAgent.indexOf('Mac') != -1;
+	this.isMSIE5_0 = this.isMSIE && (navigator.userAgent.indexOf('MSIE 5.0') != -1);
+	this.action = "none";
+	this.selectedWindow = null;
+	this.lastSelectedWindow = null;
+	this.zindex = 100;
+	this.mouseDownScreenX = 0;
+	this.mouseDownScreenY = 0;
+	this.mouseDownLayerX = 0;
+	this.mouseDownLayerY = 0;
+	this.mouseDownWidth = 0;
+	this.mouseDownHeight = 0;
+	this.idCounter = 0;
+};
+
+TinyMCE_Windows.prototype.init = function(settings) {
+	this.settings = settings;
+
+	if (this.isMSIE)
+		this.addEvent(document, "mousemove", mcWindows.eventDispatcher);
+	else
+		this.addEvent(window, "mousemove", mcWindows.eventDispatcher);
+
+	this.addEvent(document, "mouseup", mcWindows.eventDispatcher);
+
+	this.doc = document;
+};
+
+TinyMCE_Windows.prototype.getParam = function(name, default_value) {
+	var value = null;
+
+	value = (typeof(this.settings[name]) == "undefined") ? default_value : this.settings[name];
+
+	// Fix bool values
+	if (value == "true" || value == "false")
+		return (value == "true");
+
+	return value;
+};
+
+TinyMCE_Windows.prototype.eventDispatcher = function(e) {
+	e = typeof(e) == "undefined" ? window.event : e;
+
+	if (mcWindows.selectedWindow == null)
+		return;
+
+	// Switch focus
+	if (mcWindows.isGecko && e.type == "mousedown") {
+		var elm = e.currentTarget;
+
+		for (var n in mcWindows.windows) {
+			var win = mcWindows.windows[n];
+
+			if (win.headElement == elm || win.resizeElement == elm) {
+				win.focus();
+				break;
+			}
+		}
+	}
+
+	switch (e.type) {
+		case "mousemove":
+			mcWindows.selectedWindow.onMouseMove(e);
+			break;
+
+		case "mouseup":
+			mcWindows.selectedWindow.onMouseUp(e);
+			break;
+
+		case "mousedown":
+			mcWindows.selectedWindow.onMouseDown(e);
+			break;
+
+		case "focus":
+			mcWindows.selectedWindow.onFocus(e);
+			break;
+	}
+};
+
+TinyMCE_Windows.prototype.addEvent = function(obj, name, handler) {
+	if (this.isMSIE)
+		obj.attachEvent("on" + name, handler);
+	else
+		obj.addEventListener(name, handler, true);
+};
+
+TinyMCE_Windows.prototype.cancelEvent = function(e) {
+	if (this.isMSIE) {
+		e.returnValue = false;
+		e.cancelBubble = true;
+	} else
+		e.preventDefault();
+};
+
+TinyMCE_Windows.prototype.parseFeatures = function(opts) {
+	// Cleanup the options
+	opts = opts.toLowerCase();
+	opts = opts.replace(/;/g, ",");
+	opts = opts.replace(/[^0-9a-z=,]/g, "");
+
+	var optionChunks = opts.split(',');
+	var options = new Array();
+
+	options['left'] = "10";
+	options['top'] = "10";
+	options['width'] = "300";
+	options['height'] = "300";
+	options['resizable'] = "yes";
+	options['minimizable'] = "yes";
+	options['maximizable'] = "yes";
+	options['close'] = "yes";
+	options['movable'] = "yes";
+	options['statusbar'] = "yes";
+	options['scrollbars'] = "auto";
+	options['modal'] = "no";
+
+	if (opts == "")
+		return options;
+
+	for (var i=0; i<optionChunks.length; i++) {
+		var parts = optionChunks[i].split('=');
+
+		if (parts.length == 2)
+			options[parts[0]] = parts[1];
+	}
+
+	options['left'] = parseInt(options['left']);
+	options['top'] = parseInt(options['top']);
+	options['width'] = parseInt(options['width']);
+	options['height'] = parseInt(options['height']);
+
+	return options;
+};
+
+TinyMCE_Windows.prototype.open = function(url, name, features) {
+	this.lastSelectedWindow = this.selectedWindow;
+
+	var win = new TinyMCE_Window();
+	var winDiv, html = "", id;
+	var imgPath = this.getParam("images_path");
+
+	features = this.parseFeatures(features);
+
+	// Create div
+	id = "mcWindow_" + name;
+	win.deltaHeight = 18;
+
+	if (features['statusbar'] == "yes") {
+		win.deltaHeight += 13;
+
+		if (this.isMSIE)
+			win.deltaHeight += 1;
+	}
+
+	width = parseInt(features['width']);
+	height = parseInt(features['height'])-win.deltaHeight;
+
+	if (this.isMSIE)
+		width -= 2;
+
+	// Setup first part of window
+	win.id = id;
+	win.url = url;
+	win.name = name;
+	win.features = features;
+	this.windows[name] = win;
+
+	iframeWidth = width;
+	iframeHeight = height;
+
+	// Create inner content
+	html += '<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">';
+	html += '<html>';
+	html += '<head>';
+	html += '<title>Wrapper iframe</title>';
+	html += '<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">';
+	html += '<link href="' + this.getParam("css_file") + '" rel="stylesheet" type="text/css" />';
+	html += '</head>';
+	html += '<body onload="parent.mcWindows.onLoad(\'' + name + '\');">';
+
+	html += '<div id="' + id + '_container" class="mceWindow">';
+	html += '<div id="' + id + '_head" class="mceWindowHead" onmousedown="parent.mcWindows.windows[\'' + name + '\'].focus();">';
+	html += '  <div id="' + id + '_title" class="mceWindowTitle"';
+	html += '  onselectstart="return false;" unselectable="on" style="-moz-user-select: none !important;"></div>';
+	html += '    <div class="mceWindowHeadTools">';
+	html += '      <a href="javascript:parent.mcWindows.windows[\'' + name + '\'].close();" target="_self" onmousedown="return false;" class="mceWindowClose"><img border="0" src="' + imgPath + '/window_close.gif" /></a>';
+//	html += '      <a href="javascript:mcWindows.windows[\'' + name + '\'].maximize();" target="_self" onmousedown="return false;" class="mceWindowMaximize"></a>';
+//	html += '      <a href="javascript:mcWindows.windows[\'' + name + '\'].minimize();" target="_self" onmousedown="return false;" class="mceWindowMinimize"></a>';
+	html += '    </div>';
+	html += '</div><div id="' + id + '_body" class="mceWindowBody" style="width: ' + width + 'px; height: ' + height + 'px;">';
+	html += '<iframe id="' + id + '_iframe" name="' + id + '_iframe" frameborder="0" width="' + iframeWidth + '" height="' + iframeHeight + '" src="' + url + '" class="mceWindowBodyIframe" scrolling="' + features['scrollbars'] + '"></iframe></div>';
+
+	if (features['statusbar'] == "yes") {
+		html += '<div id="' + id + '_statusbar" class="mceWindowStatusbar" onmousedown="parent.mcWindows.windows[\'' + name + '\'].focus();">';
+
+		if (features['resizable'] == "yes") {
+			if (this.isGecko)
+				html += '<div id="' + id + '_resize" class="mceWindowResize"><div style="background-image: url(\'' + imgPath + '/window_resize.gif\'); width: 12px; height: 12px;"></div></div>';
+			else
+				html += '<div id="' + id + '_resize" class="mceWindowResize"><img onmousedown="parent.mcWindows.windows[\'' + name + '\'].focus();" border="0" src="' + imgPath + '/window_resize.gif" /></div>';
+		}
+
+		html += '</div>';
+	}
+
+	html += '</div>';
+
+	html += '</body>';
+	html += '</html>';
+
+	// Create iframe
+	this.createFloatingIFrame(id, features['left'], features['top'], features['width'], features['height'], html);
+};
+
+// Blocks the document events by placing a image over the whole document
+TinyMCE_Windows.prototype.setDocumentLock = function(state) {
+	if (state) {
+		var elm = document.getElementById('mcWindowEventBlocker');
+		if (elm == null) {
+			elm = document.createElement("div");
+
+			elm.id = "mcWindowEventBlocker";
+			elm.style.position = "absolute";
+			elm.style.left = "0";
+			elm.style.top = "0";
+
+			document.body.appendChild(elm);
+		}
+
+		elm.style.display = "none";
+
+		var imgPath = this.getParam("images_path");
+		var width = document.body.clientWidth;
+		var height = document.body.clientHeight;
+
+		elm.style.width = width;
+		elm.style.height = height;
+		elm.innerHTML = '<img src="' + imgPath + '/spacer.gif" width="' + width + '" height="' + height + '" />';
+
+		elm.style.zIndex = mcWindows.zindex-1;
+		elm.style.display = "block";
+	} else {
+		var elm = document.getElementById('mcWindowEventBlocker');
+
+		if (mcWindows.windows.length == 0)
+			elm.parentNode.removeChild(elm);
+		else
+			elm.style.zIndex = mcWindows.zindex-1;
+	}
+};
+
+// Gets called when wrapper iframe is initialized
+TinyMCE_Windows.prototype.onLoad = function(name) {
+	var win = mcWindows.windows[name];
+	var id = "mcWindow_" + name;
+	var wrapperIframe = window.frames[id + "_iframe"].frames[0];
+	var wrapperDoc = window.frames[id + "_iframe"].document;
+	var doc = window.frames[id + "_iframe"].document;
+	var winDiv = document.getElementById("mcWindow_" + name + "_div");
+	var realIframe = window.frames[id + "_iframe"].frames[0];
+
+	// Set window data
+	win.id = "mcWindow_" + name;
+	win.winElement = winDiv;
+	win.bodyElement = doc.getElementById(id + '_body');
+	win.iframeElement = doc.getElementById(id + '_iframe');
+	win.headElement = doc.getElementById(id + '_head');
+	win.titleElement = doc.getElementById(id + '_title');
+	win.resizeElement = doc.getElementById(id + '_resize');
+	win.containerElement = doc.getElementById(id + '_container');
+	win.left = win.features['left'];
+	win.top = win.features['top'];
+	win.frame = window.frames[id + '_iframe'].frames[0];
+	win.wrapperFrame = window.frames[id + '_iframe'];
+	win.wrapperIFrameElement = document.getElementById(id + "_iframe");
+
+	// Add event handlers
+	mcWindows.addEvent(win.headElement, "mousedown", mcWindows.eventDispatcher);
+
+	if (win.resizeElement != null)
+		mcWindows.addEvent(win.resizeElement, "mousedown", mcWindows.eventDispatcher);
+
+	if (mcWindows.isMSIE) {
+		mcWindows.addEvent(realIframe.document, "mousemove", mcWindows.eventDispatcher);
+		mcWindows.addEvent(realIframe.document, "mouseup", mcWindows.eventDispatcher);
+	} else {
+		mcWindows.addEvent(realIframe, "mousemove", mcWindows.eventDispatcher);
+		mcWindows.addEvent(realIframe, "mouseup", mcWindows.eventDispatcher);
+		mcWindows.addEvent(realIframe, "focus", mcWindows.eventDispatcher);
+	}
+
+	for (var i=0; i<window.frames.length; i++) {
+		if (!window.frames[i]._hasMouseHandlers) {
+			if (mcWindows.isMSIE) {
+				mcWindows.addEvent(window.frames[i].document, "mousemove", mcWindows.eventDispatcher);
+				mcWindows.addEvent(window.frames[i].document, "mouseup", mcWindows.eventDispatcher);
+			} else {
+				mcWindows.addEvent(window.frames[i], "mousemove", mcWindows.eventDispatcher);
+				mcWindows.addEvent(window.frames[i], "mouseup", mcWindows.eventDispatcher);
+			}
+
+			window.frames[i]._hasMouseHandlers = true;
+		}
+	}
+
+	if (mcWindows.isMSIE) {
+		mcWindows.addEvent(win.frame.document, "mousemove", mcWindows.eventDispatcher);
+		mcWindows.addEvent(win.frame.document, "mouseup", mcWindows.eventDispatcher);
+	} else {
+		mcWindows.addEvent(win.frame, "mousemove", mcWindows.eventDispatcher);
+		mcWindows.addEvent(win.frame, "mouseup", mcWindows.eventDispatcher);
+		mcWindows.addEvent(win.frame, "focus", mcWindows.eventDispatcher);
+	}
+
+	// Dispatch open window event
+	var func = this.getParam("on_open_window", "");
+	if (func != "")
+		eval(func + "(win);");
+
+	win.focus();
+
+	if (win.features['modal'] == "yes")
+		mcWindows.setDocumentLock(true);
+};
+
+TinyMCE_Windows.prototype.createFloatingIFrame = function(id_prefix, left, top, width, height, html) {
+	var iframe = document.createElement("iframe");
+	var div = document.createElement("div"), doc;
+
+	width = parseInt(width);
+	height = parseInt(height)+1;
+
+	// Create wrapper div
+	div.setAttribute("id", id_prefix + "_div");
+	div.setAttribute("width", width);
+	div.setAttribute("height", (height));
+	div.style.position = "absolute";
+	div.style.left = left + "px";
+	div.style.top = top + "px";
+	div.style.width = width + "px";
+	div.style.height = (height) + "px";
+	div.style.backgroundColor = "white";
+	div.style.display = "none";
+
+	if (this.isGecko) {
+		iframeWidth = width + 2;
+		iframeHeight = height + 2;
+	} else {
+		iframeWidth = width;
+		iframeHeight = height + 1;
+	}
+
+	// Create iframe
+	iframe.setAttribute("id", id_prefix + "_iframe");
+	iframe.setAttribute("name", id_prefix + "_iframe");
+	iframe.setAttribute("border", "0");
+	iframe.setAttribute("frameBorder", "0");
+	iframe.setAttribute("marginWidth", "0");
+	iframe.setAttribute("marginHeight", "0");
+	iframe.setAttribute("leftMargin", "0");
+	iframe.setAttribute("topMargin", "0");
+	iframe.setAttribute("width", iframeWidth);
+	iframe.setAttribute("height", iframeHeight);
+//	iframe.setAttribute("src", "../jscripts/tiny_mce/blank.htm");
+	// iframe.setAttribute("allowtransparency", "false");
+	iframe.setAttribute("scrolling", "no");
+	iframe.style.width = iframeWidth + "px";
+	iframe.style.height = iframeHeight + "px";
+	iframe.style.backgroundColor = "white";
+	div.appendChild(iframe);
+
+	document.body.appendChild(div);
+
+	// Fixed MSIE 5.0 issue
+	div.innerHTML = div.innerHTML;
+
+	if (this.isSafari) {
+		// Give Safari some time to setup
+		window.setTimeout(function() {
+			var doc = window.frames[id_prefix + '_iframe'].document;
+			doc.open();
+			doc.write(html);
+			doc.close();
+		}, 10);
+	} else {
+		doc = window.frames[id_prefix + '_iframe'].window.document;
+		doc.open();
+		doc.write(html);
+		doc.close();
+	}
+
+	div.style.display = "block";
+
+	return div;
+};
+
+// Window instance
+function TinyMCE_Window() {
+};
+
+TinyMCE_Window.prototype.focus = function() {
+	if (this != mcWindows.selectedWindow) {
+		this.winElement.style.zIndex = ++mcWindows.zindex;
+		mcWindows.lastSelectedWindow = mcWindows.selectedWindow;
+		mcWindows.selectedWindow = this;
+	}
+};
+
+TinyMCE_Window.prototype.minimize = function() {
+};
+
+TinyMCE_Window.prototype.maximize = function() {
+	
+};
+
+TinyMCE_Window.prototype.startResize = function() {
+	mcWindows.action = "resize";
+};
+
+TinyMCE_Window.prototype.startMove = function(e) {
+	mcWindows.action = "move";
+};
+
+TinyMCE_Window.prototype.close = function() {
+	if (this.frame && this.frame['tinyMCEPopup'])
+		this.frame['tinyMCEPopup'].restoreSelection();
+
+	if (mcWindows.lastSelectedWindow != null)
+		mcWindows.lastSelectedWindow.focus();
+
+	var mcWindowsNew = new Array();
+	for (var n in mcWindows.windows) {
+		var win = mcWindows.windows[n];
+		if (typeof(win) == 'function')
+			continue;
+
+		if (win.name != this.name)
+			mcWindowsNew[n] = win;
+	}
+
+	mcWindows.windows = mcWindowsNew;
+
+//	alert(mcWindows.doc.getElementById(this.id + "_iframe"));
+
+	var e = mcWindows.doc.getElementById(this.id + "_iframe");
+	e.parentNode.removeChild(e);
+
+	var e = mcWindows.doc.getElementById(this.id + "_div");
+	e.parentNode.removeChild(e);
+
+	mcWindows.setDocumentLock(false);
+};
+
+TinyMCE_Window.prototype.onMouseMove = function(e) {
+	var scrollX = 0;//this.doc.body.scrollLeft;
+	var scrollY = 0;//this.doc.body.scrollTop;
+
+	// Calculate real X, Y
+	var dx = e.screenX - mcWindows.mouseDownScreenX;
+	var dy = e.screenY - mcWindows.mouseDownScreenY;
+
+	switch (mcWindows.action) {
+		case "resize":
+			width = mcWindows.mouseDownWidth + (e.screenX - mcWindows.mouseDownScreenX);
+			height = mcWindows.mouseDownHeight + (e.screenY - mcWindows.mouseDownScreenY);
+
+			width = width < 100 ? 100 : width;
+			height = height < 100 ? 100 : height;
+
+			this.wrapperIFrameElement.style.width = width+2;
+			this.wrapperIFrameElement.style.height = height+2;
+			this.wrapperIFrameElement.width = width+2;
+			this.wrapperIFrameElement.height = height+2;
+			this.winElement.style.width = width;
+			this.winElement.style.height = height;
+
+			height = height - this.deltaHeight;
+
+			this.containerElement.style.width = width;
+
+			this.iframeElement.style.width = width;
+			this.iframeElement.style.height = height;
+			this.bodyElement.style.width = width;
+			this.bodyElement.style.height = height;
+			this.headElement.style.width = width;
+			//this.statusElement.style.width = width;
+
+			mcWindows.cancelEvent(e);
+			break;
+
+		case "move":
+			this.left = mcWindows.mouseDownLayerX + (e.screenX - mcWindows.mouseDownScreenX);
+			this.top = mcWindows.mouseDownLayerY + (e.screenY - mcWindows.mouseDownScreenY);
+			this.winElement.style.left = this.left + "px";
+			this.winElement.style.top = this.top + "px";
+
+			mcWindows.cancelEvent(e);
+			break;
+	}
+};
+
+function debug(msg) {
+	document.getElementById('debug').value += msg + "\n";
+}
+
+TinyMCE_Window.prototype.onMouseUp = function(e) {
+	mcWindows.action = "none";
+};
+
+TinyMCE_Window.prototype.onFocus = function(e) {
+	// Gecko only handler
+	var winRef = e.currentTarget;
+
+	for (var n in mcWindows.windows) {
+		var win = mcWindows.windows[n];
+		if (typeof(win) == 'function')
+			continue;
+
+		if (winRef.name == win.id + "_iframe") {
+			win.focus();
+			return;
+		}
+	}
+};
+
+TinyMCE_Window.prototype.onMouseDown = function(e) {
+	var elm = mcWindows.isMSIE ? this.wrapperFrame.event.srcElement : e.target;
+
+	var scrollX = 0;//this.doc.body.scrollLeft;
+	var scrollY = 0;//this.doc.body.scrollTop;
+
+	mcWindows.mouseDownScreenX = e.screenX;
+	mcWindows.mouseDownScreenY = e.screenY;
+	mcWindows.mouseDownLayerX = this.left;
+	mcWindows.mouseDownLayerY = this.top;
+	mcWindows.mouseDownWidth = parseInt(this.winElement.style.width);
+	mcWindows.mouseDownHeight = parseInt(this.winElement.style.height);
+
+	if (this.resizeElement != null && elm == this.resizeElement.firstChild)
+		this.startResize(e);
+	else
+		this.startMove(e);
+
+	mcWindows.cancelEvent(e);
+};
+
+// Global instance
+var mcWindows = new TinyMCE_Windows();
+
+// Initialize windows
+mcWindows.init({
+	images_path : tinyMCE.baseURL + "/plugins/inlinepopups/images",
+	css_file : tinyMCE.baseURL + "/plugins/inlinepopups/css/inlinepopup.css"
+});

Added: labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/plugins/inlinepopups/images/spacer.gif
===================================================================
(Binary files differ)


Property changes on: labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/plugins/inlinepopups/images/spacer.gif
___________________________________________________________________
Name: svn:mime-type
   + application/octet-stream

Added: labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/plugins/inlinepopups/images/window_close.gif
===================================================================
(Binary files differ)


Property changes on: labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/plugins/inlinepopups/images/window_close.gif
___________________________________________________________________
Name: svn:mime-type
   + application/octet-stream

Added: labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/plugins/inlinepopups/images/window_maximize.gif
===================================================================
(Binary files differ)


Property changes on: labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/plugins/inlinepopups/images/window_maximize.gif
___________________________________________________________________
Name: svn:mime-type
   + application/octet-stream

Added: labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/plugins/inlinepopups/images/window_minimize.gif
===================================================================
(Binary files differ)


Property changes on: labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/plugins/inlinepopups/images/window_minimize.gif
___________________________________________________________________
Name: svn:mime-type
   + application/octet-stream

Added: labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/plugins/inlinepopups/images/window_resize.gif
===================================================================
(Binary files differ)


Property changes on: labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/plugins/inlinepopups/images/window_resize.gif
___________________________________________________________________
Name: svn:mime-type
   + application/octet-stream

Added: labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/plugins/inlinepopups/jscripts/mcwindows.js
===================================================================
--- labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/plugins/inlinepopups/jscripts/mcwindows.js	2007-01-11 22:09:16 UTC (rev 8831)
+++ labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/plugins/inlinepopups/jscripts/mcwindows.js	2007-01-11 22:10:56 UTC (rev 8832)
@@ -0,0 +1,453 @@
+/**
+ * $Id: mcwindows.js 18 2006-06-29 14:11:23Z spocke $
+ *
+ * Moxiecode DHTML Windows script.
+ *
+ * @author Moxiecode
+ * @copyright Copyright © 2004, Moxiecode Systems AB, All rights reserved.
+ */
+
+// Windows handler
+function MCWindows() {
+	this.settings = new Array();
+	this.windows = new Array();
+	this.isMSIE = (navigator.appName == "Microsoft Internet Explorer");
+	this.isGecko = navigator.userAgent.indexOf('Gecko') != -1;
+	this.isSafari = navigator.userAgent.indexOf('Safari') != -1;
+	this.isMac = navigator.userAgent.indexOf('Mac') != -1;
+	this.isMSIE5_0 = this.isMSIE && (navigator.userAgent.indexOf('MSIE 5.0') != -1);
+	this.action = "none";
+	this.selectedWindow = null;
+	this.zindex = 100;
+	this.mouseDownScreenX = 0;
+	this.mouseDownScreenY = 0;
+	this.mouseDownLayerX = 0;
+	this.mouseDownLayerY = 0;
+	this.mouseDownWidth = 0;
+	this.mouseDownHeight = 0;
+};
+
+MCWindows.prototype.init = function(settings) {
+	this.settings = settings;
+
+	if (this.isMSIE)
+		this.addEvent(document, "mousemove", mcWindows.eventDispatcher);
+	else
+		this.addEvent(window, "mousemove", mcWindows.eventDispatcher);
+
+	this.addEvent(document, "mouseup", mcWindows.eventDispatcher);
+};
+
+MCWindows.prototype.getParam = function(name, default_value) {
+	var value = null;
+
+	value = (typeof(this.settings[name]) == "undefined") ? default_value : this.settings[name];
+
+	// Fix bool values
+	if (value == "true" || value == "false")
+		return (value == "true");
+
+	return value;
+};
+
+MCWindows.prototype.eventDispatcher = function(e) {
+	e = typeof(e) == "undefined" ? window.event : e;
+
+	if (mcWindows.selectedWindow == null)
+		return;
+
+	// Switch focus
+	if (mcWindows.isGecko && e.type == "mousedown") {
+		var elm = e.currentTarget;
+
+		for (var n in mcWindows.windows) {
+			var win = mcWindows.windows[n];
+			if (typeof(win) == 'function')
+				continue;
+
+			if (win.headElement == elm || win.resizeElement == elm) {
+				win.focus();
+				break;
+			}
+		}
+	}
+
+	switch (e.type) {
+		case "mousemove":
+			mcWindows.selectedWindow.onMouseMove(e);
+			break;
+
+		case "mouseup":
+			mcWindows.selectedWindow.onMouseUp(e);
+			break;
+
+		case "mousedown":
+			mcWindows.selectedWindow.onMouseDown(e);
+			break;
+
+		case "focus":
+			mcWindows.selectedWindow.onFocus(e);
+			break;
+	}
+}
+
+MCWindows.prototype.addEvent = function(obj, name, handler) {
+	if (this.isMSIE)
+		obj.attachEvent("on" + name, handler);
+	else
+		obj.addEventListener(name, handler, true);
+};
+
+MCWindows.prototype.cancelEvent = function(e) {
+	if (this.isMSIE) {
+		e.returnValue = false;
+		e.cancelBubble = true;
+	} else
+		e.preventDefault();
+};
+
+MCWindows.prototype.parseFeatures = function(opts) {
+	// Cleanup the options
+	opts = opts.toLowerCase();
+	opts = opts.replace(/;/g, ",");
+	opts = opts.replace(/[^0-9a-z=,]/g, "");
+
+	var optionChunks = opts.split(',');
+	var options = new Array();
+
+	options['left'] = 10;
+	options['top'] = 10;
+	options['width'] = 300;
+	options['height'] = 300;
+	options['resizable'] = true;
+	options['minimizable'] = true;
+	options['maximizable'] = true;
+	options['close'] = true;
+	options['movable'] = true;
+
+	if (opts == "")
+		return options;
+
+	for (var i=0; i<optionChunks.length; i++) {
+		var parts = optionChunks[i].split('=');
+
+		if (parts.length == 2)
+			options[parts[0]] = parts[1];
+	}
+
+	return options;
+};
+
+MCWindows.prototype.open = function(url, name, features) {
+	var win = new MCWindow();
+	var winDiv, html = "", id;
+
+	features = this.parseFeatures(features);
+
+	// Create div
+	id = "mcWindow_" + name;
+
+	width = parseInt(features['width']);
+	height = parseInt(features['height'])-12-19;
+
+	if (this.isMSIE)
+		width -= 2;
+
+	// Setup first part of window
+	win.id = id;
+	win.url = url;
+	win.name = name;
+	win.features = features;
+	this.windows[name] = win;
+
+	iframeWidth = width;
+	iframeHeight = height;
+
+	// Create inner content
+	html += '<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">';
+	html += '<html>';
+	html += '<head>';
+	html += '<title>Wrapper iframe</title>';
+	html += '<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">';
+	html += '<link href="../jscripts/tiny_mce/themes/advanced/css/editor_ui.css" rel="stylesheet" type="text/css" />';
+	html += '</head>';
+	html += '<body onload="parent.mcWindows.onLoad(\'' + name + '\');">';
+
+	html += '<div id="' + id + '_container" class="mceWindow">';
+	html += '<div id="' + id + '_head" class="mceWindowHead" onmousedown="parent.mcWindows.windows[\'' + name + '\'].focus();">';
+	html += '  <div id="' + id + '_title" class="mceWindowTitle"';
+	html += '  onselectstart="return false;" unselectable="on" style="-moz-user-select: none !important;">No name window</div>';
+	html += '    <div class="mceWindowHeadTools">';
+	html += '      <a href="javascript:parent.mcWindows.windows[\'' + name + '\'].close();" onmousedown="return false;" class="mceWindowClose"><img border="0" src="../jscripts/tiny_mce/themes/advanced/images/window_close.gif" /></a>';
+//	html += '      <a href="javascript:mcWindows.windows[\'' + name + '\'].maximize();" onmousedown="return false;" class="mceWindowMaximize"></a>';
+//	html += '      <a href="javascript:mcWindows.windows[\'' + name + '\'].minimize();" onmousedown="return false;" class="mceWindowMinimize"></a>';
+	html += '    </div>';
+	html += '</div><div id="' + id + '_body" class="mceWindowBody" style="width: ' + width + 'px; height: ' + height + 'px;">';
+	html += '<iframe id="' + id + '_iframe" name="' + id + '_iframe" onfocus="parent.mcWindows.windows[\'' + name + '\'].focus();" frameborder="0" width="' + iframeWidth + '" height="' + iframeHeight + '" src="' + url + '" class="mceWindowBodyIframe"></iframe></div>';
+	html += '<div id="' + id + '_statusbar" class="mceWindowStatusbar" onmousedown="parent.mcWindows.windows[\'' + name + '\'].focus();">';
+	html += '<div id="' + id + '_resize" class="mceWindowResize"><img onmousedown="parent.mcWindows.windows[\'' + name + '\'].focus();" border="0" src="../jscripts/tiny_mce/themes/advanced/images/window_resize.gif" /></div>';
+	html += '</div>';
+	html += '</div>';
+
+	html += '</body>';
+	html += '</html>';
+
+	// Create iframe
+	this.createFloatingIFrame(id, features['left'], features['top'], features['width'], features['height'], html);
+};
+
+// Gets called when wrapper iframe is initialized
+MCWindows.prototype.onLoad = function(name) {
+	var win = mcWindows.windows[name];
+	var id = "mcWindow_" + name;
+	var wrapperIframe = window.frames[id + "_iframe"].frames[0];
+	var wrapperDoc = window.frames[id + "_iframe"].document;
+	var doc = window.frames[id + "_iframe"].document;
+	var winDiv = document.getElementById("mcWindow_" + name + "_div");
+	var realIframe = window.frames[id + "_iframe"].frames[0];
+
+	// Set window data
+	win.id = "mcWindow_" + name + "_iframe";
+	win.winElement = winDiv;
+	win.bodyElement = doc.getElementById(id + '_body');
+	win.iframeElement = doc.getElementById(id + '_iframe');
+	win.headElement = doc.getElementById(id + '_head');
+	win.titleElement = doc.getElementById(id + '_title');
+	win.resizeElement = doc.getElementById(id + '_resize');
+	win.containerElement = doc.getElementById(id + '_container');
+	win.left = win.features['left'];
+	win.top = win.features['top'];
+	win.frame = window.frames[id + '_iframe'].frames[0];
+	win.wrapperFrame = window.frames[id + '_iframe'];
+	win.wrapperIFrameElement = document.getElementById(id + "_iframe");
+
+	// Add event handlers
+	mcWindows.addEvent(win.headElement, "mousedown", mcWindows.eventDispatcher);
+	mcWindows.addEvent(win.resizeElement, "mousedown", mcWindows.eventDispatcher);
+
+	if (mcWindows.isMSIE) {
+		mcWindows.addEvent(realIframe.document, "mousemove", mcWindows.eventDispatcher);
+		mcWindows.addEvent(realIframe.document, "mouseup", mcWindows.eventDispatcher);
+	} else {
+		mcWindows.addEvent(realIframe, "mousemove", mcWindows.eventDispatcher);
+		mcWindows.addEvent(realIframe, "mouseup", mcWindows.eventDispatcher);
+		mcWindows.addEvent(realIframe, "focus", mcWindows.eventDispatcher);
+	}
+
+	for (var i=0; i<window.frames.length; i++) {
+		if (!window.frames[i]._hasMouseHandlers) {
+			if (mcWindows.isMSIE) {
+				mcWindows.addEvent(window.frames[i].document, "mousemove", mcWindows.eventDispatcher);
+				mcWindows.addEvent(window.frames[i].document, "mouseup", mcWindows.eventDispatcher);
+			} else {
+				mcWindows.addEvent(window.frames[i], "mousemove", mcWindows.eventDispatcher);
+				mcWindows.addEvent(window.frames[i], "mouseup", mcWindows.eventDispatcher);
+			}
+
+			window.frames[i]._hasMouseHandlers = true;
+		}
+	}
+
+	if (mcWindows.isMSIE) {
+		mcWindows.addEvent(win.frame.document, "mousemove", mcWindows.eventDispatcher);
+		mcWindows.addEvent(win.frame.document, "mouseup", mcWindows.eventDispatcher);
+	} else {
+		mcWindows.addEvent(win.frame, "mousemove", mcWindows.eventDispatcher);
+		mcWindows.addEvent(win.frame, "mouseup", mcWindows.eventDispatcher);
+		mcWindows.addEvent(win.frame, "focus", mcWindows.eventDispatcher);
+	}
+
+	this.selectedWindow = win;
+};
+
+MCWindows.prototype.createFloatingIFrame = function(id_prefix, left, top, width, height, html) {
+	var iframe = document.createElement("iframe");
+	var div = document.createElement("div");
+
+	width = parseInt(width);
+	height = parseInt(height)+1;
+
+	// Create wrapper div
+	div.setAttribute("id", id_prefix + "_div");
+	div.setAttribute("width", width);
+	div.setAttribute("height", (height));
+	div.style.position = "absolute";
+	div.style.left = left + "px";
+	div.style.top = top + "px";
+	div.style.width = width + "px";
+	div.style.height = (height) + "px";
+	div.style.backgroundColor = "white";
+	div.style.display = "none";
+
+	if (this.isGecko) {
+		iframeWidth = width + 2;
+		iframeHeight = height + 2;
+	} else {
+		iframeWidth = width;
+		iframeHeight = height + 1;
+	}
+
+	// Create iframe
+	iframe.setAttribute("id", id_prefix + "_iframe");
+	iframe.setAttribute("name", id_prefix + "_iframe");
+	iframe.setAttribute("border", "0");
+	iframe.setAttribute("frameBorder", "0");
+	iframe.setAttribute("marginWidth", "0");
+	iframe.setAttribute("marginHeight", "0");
+	iframe.setAttribute("leftMargin", "0");
+	iframe.setAttribute("topMargin", "0");
+	iframe.setAttribute("width", iframeWidth);
+	iframe.setAttribute("height", iframeHeight);
+//	iframe.setAttribute("src", "../jscripts/tiny_mce/blank.htm");
+	// iframe.setAttribute("allowtransparency", "false");
+	iframe.setAttribute("scrolling", "no");
+	iframe.style.width = iframeWidth + "px";
+	iframe.style.height = iframeHeight + "px";
+	iframe.style.backgroundColor = "white";
+	div.appendChild(iframe);
+
+	document.body.appendChild(div);
+
+	// Fixed MSIE 5.0 issue
+	div.innerHTML = div.innerHTML;
+
+	if (this.isSafari) {
+		// Give Safari some time to setup
+		window.setTimeout(function() {
+			doc = window.frames[id_prefix + '_iframe'].document;
+			doc.open();
+			doc.write(html);
+			doc.close();
+		}, 10);
+	} else {
+		doc = window.frames[id_prefix + '_iframe'].window.document
+		doc.open();
+		doc.write(html);
+		doc.close();
+	}
+
+	div.style.display = "block";
+
+	return div;
+};
+
+// Window instance
+function MCWindow() {
+};
+
+MCWindow.prototype.focus = function() {
+	this.winElement.style.zIndex = mcWindows.zindex++;
+	mcWindows.selectedWindow = this;
+};
+
+MCWindow.prototype.minimize = function() {
+};
+
+MCWindow.prototype.maximize = function() {
+	
+};
+
+MCWindow.prototype.startResize = function() {
+	mcWindows.action = "resize";
+};
+
+MCWindow.prototype.startMove = function(e) {
+	mcWindows.action = "move";
+};
+
+MCWindow.prototype.close = function() {
+	document.body.removeChild(this.winElement);
+	mcWindows.windows[this.name] = null;
+};
+
+MCWindow.prototype.onMouseMove = function(e) {
+	var scrollX = 0;//this.doc.body.scrollLeft;
+	var scrollY = 0;//this.doc.body.scrollTop;
+
+	// Calculate real X, Y
+	var dx = e.screenX - mcWindows.mouseDownScreenX;
+	var dy = e.screenY - mcWindows.mouseDownScreenY;
+
+	switch (mcWindows.action) {
+		case "resize":
+			width = mcWindows.mouseDownWidth + (e.screenX - mcWindows.mouseDownScreenX);
+			height = mcWindows.mouseDownHeight + (e.screenY - mcWindows.mouseDownScreenY);
+
+			width = width < 100 ? 100 : width;
+			height = height < 100 ? 100 : height;
+
+			this.wrapperIFrameElement.style.width = width+2;
+			this.wrapperIFrameElement.style.height = height+2;
+			this.wrapperIFrameElement.width = width+2;
+			this.wrapperIFrameElement.height = height+2;
+			this.winElement.style.width = width;
+			this.winElement.style.height = height;
+
+			height = height-12-19;
+
+			this.containerElement.style.width = width;
+
+			this.iframeElement.style.width = width;
+			this.iframeElement.style.height = height;
+			this.bodyElement.style.width = width;
+			this.bodyElement.style.height = height;
+			this.headElement.style.width = width;
+			//this.statusElement.style.width = width;
+
+			mcWindows.cancelEvent(e);
+			break;
+
+		case "move":
+			this.left = mcWindows.mouseDownLayerX + (e.screenX - mcWindows.mouseDownScreenX);
+			this.top = mcWindows.mouseDownLayerY + (e.screenY - mcWindows.mouseDownScreenY);
+			this.winElement.style.left = this.left + "px";
+			this.winElement.style.top = this.top + "px";
+
+			mcWindows.cancelEvent(e);
+			break;
+	}
+};
+
+MCWindow.prototype.onMouseUp = function(e) {
+	mcWindows.action = "none";
+};
+
+MCWindow.prototype.onFocus = function(e) {
+	// Gecko only handler
+	var winRef = e.currentTarget;
+
+	for (var n in mcWindows.windows) {
+		var win = mcWindows.windows[n];
+		if (typeof(win) == 'function')
+			continue;
+
+		if (winRef.name == win.id) {
+			win.focus();
+			return;
+		}
+	}
+};
+
+MCWindow.prototype.onMouseDown = function(e) {
+	var elm = mcWindows.isMSIE ? this.wrapperFrame.event.srcElement : e.target;
+
+	var scrollX = 0;//this.doc.body.scrollLeft;
+	var scrollY = 0;//this.doc.body.scrollTop;
+
+	mcWindows.mouseDownScreenX = e.screenX;
+	mcWindows.mouseDownScreenY = e.screenY;
+	mcWindows.mouseDownLayerX = this.left;
+	mcWindows.mouseDownLayerY = this.top;
+	mcWindows.mouseDownWidth = parseInt(this.winElement.style.width);
+	mcWindows.mouseDownHeight = parseInt(this.winElement.style.height);
+
+	if (elm == this.resizeElement.firstChild)
+		this.startResize(e);
+	else
+		this.startMove(e);
+
+	mcWindows.cancelEvent(e);
+};
+
+// Global instance
+var mcWindows = new MCWindows();

Added: labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/plugins/inlinepopups/readme.txt
===================================================================

Modified: labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/plugins/insertdatetime/editor_plugin.js
===================================================================
--- labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/plugins/insertdatetime/editor_plugin.js	2007-01-11 22:09:16 UTC (rev 8831)
+++ labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/plugins/insertdatetime/editor_plugin.js	2007-01-11 22:10:56 UTC (rev 8832)
@@ -1,63 +1 @@
-/* Import theme specific language pack */
-tinyMCE.importPluginLanguagePack('insertdatetime', 'uk,se');
-
-/**
- * Returns the HTML contents of the insertdate, inserttime controls.
- */
-function TinyMCE_insertdatetime_getControlHTML(control_name) {
-	switch (control_name) {
-		case "insertdate":
-			return '<img id="{$editor_id}_insertdate" src="{$pluginurl}/images/insertdate.gif" title="{$lang_insertdate_desc}" width="20" height="20" class="mceButtonNormal" onmouseover="tinyMCE.switchClass(this,\'mceButtonOver\');" onmouseout="tinyMCE.restoreClass(this);" onmousedown="tinyMCE.restoreAndSwitchClass(this,\'mceButtonDown\');" onclick="tinyMCE.execInstanceCommand(\'{$editor_id}\',\'mceInsertDate\');">';
-
-		case "inserttime":
-			return '<img id="{$editor_id}_inserttime" src="{$pluginurl}/images/inserttime.gif" title="{$lang_inserttime_desc}" width="20" height="20" class="mceButtonNormal" onmouseover="tinyMCE.switchClass(this,\'mceButtonOver\');" onmouseout="tinyMCE.restoreClass(this);" onmousedown="tinyMCE.restoreAndSwitchClass(this,\'mceButtonDown\');" onclick="tinyMCE.execInstanceCommand(\'{$editor_id}\',\'mceInsertTime\');">';
-	}
-
-	return "";
-}
-
-/**
- * Executes the mceInsertDate command.
- */
-function TinyMCE_insertdatetime_execCommand(editor_id, element, command, user_interface, value) {
-	/* Adds zeros infront of value */
-	function addZeros(value, len) {
-		value = "" + value;
-
-		if (value.length < len) {
-			for (var i=0; i<(len-value.length); i++)
-				value = "0" + value;
-		}
-
-		return value;
-	}
-
-	/* Returns the date object in the specified format */
-	function getDateTime(date, format) {
-		format = tinyMCE.regexpReplace(format, "%D", "%m/%d/%y");
-		format = tinyMCE.regexpReplace(format, "%Y", "" + date.getFullYear());
-		format = tinyMCE.regexpReplace(format, "%y", "" + date.getYear());
-		format = tinyMCE.regexpReplace(format, "%m", addZeros(date.getMonth()+1, 2));
-		format = tinyMCE.regexpReplace(format, "%d", addZeros(date.getDate(), 2));
-		format = tinyMCE.regexpReplace(format, "%H", "" + addZeros(date.getHours(), 2));
-		format = tinyMCE.regexpReplace(format, "%M", "" + addZeros(date.getMinutes(), 2));
-		format = tinyMCE.regexpReplace(format, "%S", "" + addZeros(date.getSeconds(), 2));
-		format = tinyMCE.regexpReplace(format, "%%", "%");
-
-		return format;
-	}
-
-	// Handle commands
-	switch (command) {
-		case "mceInsertDate":
-			tinyMCE.execInstanceCommand(editor_id, 'mceInsertContent', false, getDateTime(new Date(), tinyMCE.getParam("plugin_insertdate_dateFormat", "%Y-%m-%d")));
-			return true;
-
-		case "mceInsertTime":
-			tinyMCE.execInstanceCommand(editor_id, 'mceInsertContent', false, getDateTime(new Date(), tinyMCE.getParam("plugin_insertdate_timeFormat", "%H:%M:%S")));
-			return true;
-	}
-
-	// Pass to next handler in chain
-	return false;
-}
+tinyMCE.importPluginLanguagePack('insertdatetime');var TinyMCE_InsertDateTimePlugin={getInfo:function(){return{longname:'Insert date/time',author:'Moxiecode Systems AB',authorurl:'http://tinymce.moxiecode.com',infourl:'http://tinymce.moxiecode.com/tinymce/docs/plugin_insertdatetime.html',version:tinyMCE.majorVersion+"."+tinyMCE.minorVersion}},getControlHTML:function(cn){switch(cn){case"insertdate":return tinyMCE.getButtonHTML(cn,'lang_insertdate_desc','{$pluginurl}/images/insertdate.gif','mceInsertDate');case"inserttime":return tinyMCE.getButtonHTML(cn,'lang_inserttime_desc','{$pluginurl}/images/inserttime.gif','mceInsertTime')}return""},execCommand:function(editor_id,element,command,user_interface,value){function addZeros(value,len){value=""+value;if(value.length<len){for(var i=0;i<(len-value.length);i++)value="0"+value}return value}function getDateTime(d,fmt){fmt=fmt.replace("%D","%m/%d/%y");fmt=fmt.replace("%r","%I:%M:%S %p");fmt=fmt.replace("%Y",""+d.getFullYear());fmt=!
 fmt.replace("%y",""+d.getYear());fmt=fmt.replace("%m",addZeros(d.getMonth()+1,2));fmt=fmt.replace("%d",addZeros(d.getDate(),2));fmt=fmt.replace("%H",""+addZeros(d.getHours(),2));fmt=fmt.replace("%M",""+addZeros(d.getMinutes(),2));fmt=fmt.replace("%S",""+addZeros(d.getSeconds(),2));fmt=fmt.replace("%I",""+((d.getHours()+11)%12+1));fmt=fmt.replace("%p",""+(d.getHours()<12?"AM":"PM"));fmt=fmt.replace("%B",""+tinyMCE.getLang("lang_inserttime_months_long")[d.getMonth()]);fmt=fmt.replace("%b",""+tinyMCE.getLang("lang_inserttime_months_short")[d.getMonth()]);fmt=fmt.replace("%A",""+tinyMCE.getLang("lang_inserttime_day_long")[d.getDay()]);fmt=fmt.replace("%a",""+tinyMCE.getLang("lang_inserttime_day_short")[d.getDay()]);fmt=fmt.replace("%%","%");return fmt}switch(command){case"mceInsertDate":tinyMCE.execInstanceCommand(editor_id,'mceInsertContent',false,getDateTime(new Date(),tinyMCE.getParam("plugin_insertdate_dateFormat",tinyMCE.getLang('lang_insertdate_def_fmt'))));return true;ca!
 se"mceInsertTime":tinyMCE.execInstanceCommand(editor_id,'mceInsertCont
ent',false,getDateTime(new Date(),tinyMCE.getParam("plugin_insertdate_timeFormat",tinyMCE.getLang('lang_inserttime_def_fmt'))));return true}return false}};tinyMCE.addPlugin("insertdatetime",TinyMCE_InsertDateTimePlugin);
\ No newline at end of file

Added: labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/plugins/insertdatetime/editor_plugin_src.js
===================================================================
--- labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/plugins/insertdatetime/editor_plugin_src.js	2007-01-11 22:09:16 UTC (rev 8831)
+++ labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/plugins/insertdatetime/editor_plugin_src.js	2007-01-11 22:10:56 UTC (rev 8832)
@@ -0,0 +1,90 @@
+/**
+ * $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('insertdatetime');
+
+var TinyMCE_InsertDateTimePlugin = {
+	getInfo : function() {
+		return {
+			longname : 'Insert date/time',
+			author : 'Moxiecode Systems AB',
+			authorurl : 'http://tinymce.moxiecode.com',
+			infourl : 'http://tinymce.moxiecode.com/tinymce/docs/plugin_insertdatetime.html',
+			version : tinyMCE.majorVersion + "." + tinyMCE.minorVersion
+		};
+	},
+
+	/**
+	 * Returns the HTML contents of the insertdate, inserttime controls.
+	 */
+	getControlHTML : function(cn) {
+		switch (cn) {
+			case "insertdate":
+				return tinyMCE.getButtonHTML(cn, 'lang_insertdate_desc', '{$pluginurl}/images/insertdate.gif', 'mceInsertDate');
+
+			case "inserttime":
+				return tinyMCE.getButtonHTML(cn, 'lang_inserttime_desc', '{$pluginurl}/images/inserttime.gif', 'mceInsertTime');
+		}
+
+		return "";
+	},
+
+	/**
+	 * Executes the mceInsertDate command.
+	 */
+	execCommand : function(editor_id, element, command, user_interface, value) {
+		/* Adds zeros infront of value */
+		function addZeros(value, len) {
+			value = "" + value;
+
+			if (value.length < len) {
+				for (var i=0; i<(len-value.length); i++)
+					value = "0" + value;
+			}
+
+			return value;
+		}
+
+		function getDateTime(d, fmt) {
+			fmt = fmt.replace("%D", "%m/%d/%y");
+			fmt = fmt.replace("%r", "%I:%M:%S %p");
+			fmt = fmt.replace("%Y", "" + d.getFullYear());
+			fmt = fmt.replace("%y", "" + d.getYear());
+			fmt = fmt.replace("%m", addZeros(d.getMonth()+1, 2));
+			fmt = fmt.replace("%d", addZeros(d.getDate(), 2));
+			fmt = fmt.replace("%H", "" + addZeros(d.getHours(), 2));
+			fmt = fmt.replace("%M", "" + addZeros(d.getMinutes(), 2));
+			fmt = fmt.replace("%S", "" + addZeros(d.getSeconds(), 2));
+			fmt = fmt.replace("%I", "" + ((d.getHours() + 11) % 12 + 1));
+			fmt = fmt.replace("%p", "" + (d.getHours() < 12 ? "AM" : "PM"));
+			fmt = fmt.replace("%B", "" + tinyMCE.getLang("lang_inserttime_months_long")[d.getMonth()]);
+			fmt = fmt.replace("%b", "" + tinyMCE.getLang("lang_inserttime_months_short")[d.getMonth()]);
+			fmt = fmt.replace("%A", "" + tinyMCE.getLang("lang_inserttime_day_long")[d.getDay()]);
+			fmt = fmt.replace("%a", "" + tinyMCE.getLang("lang_inserttime_day_short")[d.getDay()]);
+			fmt = fmt.replace("%%", "%");
+
+			return fmt;
+		}
+
+		// Handle commands
+		switch (command) {
+			case "mceInsertDate":
+				tinyMCE.execInstanceCommand(editor_id, 'mceInsertContent', false, getDateTime(new Date(), tinyMCE.getParam("plugin_insertdate_dateFormat", tinyMCE.getLang('lang_insertdate_def_fmt'))));
+				return true;
+
+			case "mceInsertTime":
+				tinyMCE.execInstanceCommand(editor_id, 'mceInsertContent', false, getDateTime(new Date(), tinyMCE.getParam("plugin_insertdate_timeFormat", tinyMCE.getLang('lang_inserttime_def_fmt'))));
+				return true;
+		}
+
+		// Pass to next handler in chain
+		return false;
+	}
+};
+
+tinyMCE.addPlugin("insertdatetime", TinyMCE_InsertDateTimePlugin);

Modified: labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/plugins/insertdatetime/images/insertdate.gif
===================================================================
(Binary files differ)

Modified: labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/plugins/insertdatetime/images/inserttime.gif
===================================================================
(Binary files differ)

Added: labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/plugins/insertdatetime/langs/en.js
===================================================================
--- labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/plugins/insertdatetime/langs/en.js	2007-01-11 22:09:16 UTC (rev 8831)
+++ labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/plugins/insertdatetime/langs/en.js	2007-01-11 22:10:56 UTC (rev 8832)
@@ -0,0 +1,12 @@
+// UK lang variables
+
+tinyMCE.addToLang('',{
+insertdate_def_fmt : '%Y-%m-%d',
+inserttime_def_fmt : '%H:%M:%S',
+insertdate_desc : 'Insert date',
+inserttime_desc : 'Insert time',
+inserttime_months_long : new Array("January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December"),
+inserttime_months_short : new Array("Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec"),
+inserttime_day_long : new Array("Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday", "Sunday"),
+inserttime_day_short : new Array("Sun", "Mon", "Tue", "Wed", "Thu", "Fri", "Sat", "Sun")
+});

Modified: labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/plugins/insertdatetime/readme.txt
===================================================================
--- labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/plugins/insertdatetime/readme.txt	2007-01-11 22:09:16 UTC (rev 8831)
+++ labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/plugins/insertdatetime/readme.txt	2007-01-11 22:10:56 UTC (rev 8832)
@@ -1,32 +1 @@
- InsertDateTime plugin for TinyMCE
------------------------------------
-
-Installation instructions:
-  * Copy the insertdatetime directory to the plugins directory of TinyMCE (/jscripts/tiny_mce/plugins).
-  * Add plugin to TinyMCE plugin option list example: plugins : "insertdatetime".
-  * Add the insertdate or inserttime button name to button list, example: theme_advanced_buttons3_add : "insertdate,inserttime".
-
-Initialization example:
-  tinyMCE.init({
-    theme : "advanced",
-    mode : "textareas",
-    plugins : "insertdatetime",
-    theme_advanced_buttons3_add : "insertdate,inserttime",
-    plugin_insertdate_dateFormat : "%Y-%m-%d",
-    plugin_insertdate_timeFormat : "%H:%M:%S"
-  });
-
-Configuration:
-  plugin_insertdate_dateFormat - Format that the date is output as. Defaults to: "%Y-%m-%d".
-	Replacement variables:
-	%y - year as a decimal number without a century (range 00 to 99)
-	%Y - year as a decimal number including the century
-	%d - day of the month as a decimal number (range 01 to 31)
-	%m - month as a decimal number (range 01 to 12)
-	%D - same as %m/%d/%y
-	%H - hour as a decimal number using a 24-hour clock (range 00 to 23)
-	%M - minute as a decimal number (range 00-59)
-	%S - second as a decimal number (range 00-59)
-	%% - a literal `%' character
-
-  plugin_insertdate_timeFormat - Format that the time is output as. Defaults to: "%H:%M:%S".
+Check the TinyMCE documentation for details on this plugin.

Added: labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/plugins/layer/editor_plugin.js
===================================================================
--- labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/plugins/layer/editor_plugin.js	2007-01-11 22:09:16 UTC (rev 8831)
+++ labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/plugins/layer/editor_plugin.js	2007-01-11 22:10:56 UTC (rev 8832)
@@ -0,0 +1 @@
+tinyMCE.importPluginLanguagePack('layer');var TinyMCE_LayerPlugin={getInfo:function(){return{longname:'Layer',author:'Moxiecode Systems AB',authorurl:'http://tinymce.moxiecode.com',infourl:'http://tinymce.moxiecode.com/tinymce/docs/plugin_layer.html',version:tinyMCE.majorVersion+"."+tinyMCE.minorVersion}},initInstance:function(inst){if(tinyMCE.isMSIE&&!tinyMCE.isOpera)inst.getDoc().execCommand('2D-Position')},handleEvent:function(e){var inst=tinyMCE.selectedInstance;var w=inst.getWin(),le=inst._lastStyleElm,e;if(tinyMCE.isGecko){e=this._getParentLayer(inst.getFocusElement());if(e){if(!inst._lastStyleElm){e.style.overflow='auto';inst._lastStyleElm=e}}else if(le){le=inst._lastStyleElm;le.style.width=le.scrollWidth+'px';le.style.height=le.scrollHeight+'px';le.style.overflow='';inst._lastStyleElm=null}}return true},handleVisualAid:function(el,deep,state,inst){var nl=inst.getDoc().getElementsByTagName("div"),i;for(i=0;i<nl.length;i++){if(new RegExp('absolute|relative|static','gi!
 ').test(nl[i].style.position)){if(state)tinyMCE.addCSSClass(nl[i],'mceVisualAid');else tinyMCE.removeCSSClass(nl[i],'mceVisualAid')}}},getControlHTML:function(cn){switch(cn){case"moveforward":return tinyMCE.getButtonHTML(cn,'lang_layer_forward_desc','{$pluginurl}/images/moveforward.gif','mceMoveForward',true);case"movebackward":return tinyMCE.getButtonHTML(cn,'lang_layer_backward_desc','{$pluginurl}/images/movebackward.gif','mceMoveBackward',true);case"absolute":return tinyMCE.getButtonHTML(cn,'lang_layer_absolute_desc','{$pluginurl}/images/absolute.gif','mceMakeAbsolute',true);case"insertlayer":return tinyMCE.getButtonHTML(cn,'lang_layer_insertlayer_desc','{$pluginurl}/images/insertlayer.gif','mceInsertLayer',true)}return""},execCommand:function(editor_id,element,command,user_interface,value){switch(command){case"mceInsertLayer":this._insertLayer();return true;case"mceMoveForward":this._move(1);return true;case"mceMoveBackward":this._move(-1);return true;case"mceMakeAbsolu!
 te":this._toggleAbsolute();return true}return false},handleNodeChange:
function(editor_id,node,undo_index,undo_levels,visual_aid,any_selection){var inst=tinyMCE.getInstanceById(editor_id);var le=this._getParentLayer(inst.getFocusElement());var p=tinyMCE.getParentElement(inst.getFocusElement(),'div,p,img');tinyMCE.switchClass(editor_id+'_absolute','mceButtonDisabled');tinyMCE.switchClass(editor_id+'_moveforward','mceButtonDisabled');tinyMCE.switchClass(editor_id+'_movebackward','mceButtonDisabled');if(p)tinyMCE.switchClass(editor_id+'_absolute','mceButtonNormal');if(le&&le.style.position.toLowerCase()=="absolute"){tinyMCE.switchClass(editor_id+'_absolute','mceButtonSelected');tinyMCE.switchClass(editor_id+'_moveforward','mceButtonNormal');tinyMCE.switchClass(editor_id+'_movebackward','mceButtonNormal')}},_move:function(d){var inst=tinyMCE.selectedInstance,i,z=new Array();var le=this._getParentLayer(inst.getFocusElement()),ci=-1,fi=-1;var nl=tinyMCE.selectNodes(inst.getBody(),function(n){return n.nodeType==1&&new RegExp('absolute|relative|static'!
 ,'gi').test(n.style.position)});for(i=0;i<nl.length;i++){z[i]=nl[i].style.zIndex?parseInt(nl[i].style.zIndex):0;if(ci<0&&nl[i]==le)ci=i}if(d<0){for(i=0;i<z.length;i++){if(z[i]<z[ci]){fi=i;break}}if(fi>-1){nl[ci].style.zIndex=z[fi];nl[fi].style.zIndex=z[ci]}else{if(z[ci]>0)nl[ci].style.zIndex=z[ci]-1}}else{for(i=0;i<z.length;i++){if(z[i]>z[ci]){fi=i;break}}if(fi>-1){nl[ci].style.zIndex=z[fi];nl[fi].style.zIndex=z[ci]}else nl[ci].style.zIndex=z[ci]+1}inst.repaint()},_getParentLayer:function(n){return tinyMCE.getParentNode(n,function(n){return n.nodeType==1&&new RegExp('absolute|relative|static','gi').test(n.style.position)})},_insertLayer:function(){var inst=tinyMCE.selectedInstance;var e=tinyMCE.getParentElement(inst.getFocusElement());var p=tinyMCE.getAbsPosition(e);var d=inst.getDoc();var ne=d.createElement('div');var h=inst.selection.getSelectedHTML();ne.style.position='absolute';ne.style.left=p.absLeft+'px';ne.style.top=(p.absTop>20?p.absTop:20)+'px';ne.style.width='100p!
 x';ne.style.height='100px';ne.className='mceVisualAid';if(!h)h=tinyMCE
.getLang('lang_layer_content');ne.innerHTML=h;d.body.appendChild(ne)},_toggleAbsolute:function(){var inst=tinyMCE.selectedInstance;var le=this._getParentLayer(inst.getFocusElement());if(le==null)le=tinyMCE.getParentElement(inst.getFocusElement(),'div,p,img');if(le){if(le.style.position.toLowerCase()=="absolute"){le.style.position="";le.style.left="";le.style.top=""}else{le.style.position="absolute";if(le.style.left=="")le.style.left=20+'px';if(le.style.top=="")le.style.top=20+'px';if(le.style.width=="")le.style.width=le.width?(le.width+'px'):'100px';if(le.style.height=="")le.style.height=le.height?(le.height+'px'):'100px';tinyMCE.handleVisualAid(inst.getBody(),true,inst.visualAid,inst)}inst.repaint();tinyMCE.triggerNodeChange()}}};tinyMCE.addPlugin("layer",TinyMCE_LayerPlugin);
\ No newline at end of file

Added: labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/plugins/layer/editor_plugin_src.js
===================================================================
--- labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/plugins/layer/editor_plugin_src.js	2007-01-11 22:09:16 UTC (rev 8831)
+++ labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/plugins/layer/editor_plugin_src.js	2007-01-11 22:10:56 UTC (rev 8832)
@@ -0,0 +1,248 @@
+/**
+ * $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('layer');
+
+var TinyMCE_LayerPlugin = {
+	getInfo : function() {
+		return {
+			longname : 'Layer',
+			author : 'Moxiecode Systems AB',
+			authorurl : 'http://tinymce.moxiecode.com',
+			infourl : 'http://tinymce.moxiecode.com/tinymce/docs/plugin_layer.html',
+			version : tinyMCE.majorVersion + "." + tinyMCE.minorVersion
+		};
+	},
+
+	initInstance : function(inst) {
+		if (tinyMCE.isMSIE && !tinyMCE.isOpera)
+			inst.getDoc().execCommand('2D-Position');
+	},
+
+	handleEvent : function(e) {
+		var inst = tinyMCE.selectedInstance;
+		var w = inst.getWin(), le = inst._lastStyleElm, e;
+
+		if (tinyMCE.isGecko) {
+			e = this._getParentLayer(inst.getFocusElement());
+
+			if (e) {
+				if (!inst._lastStyleElm) {
+					e.style.overflow = 'auto';
+					inst._lastStyleElm = e;
+				}
+			} else if (le) {
+				le = inst._lastStyleElm;
+				le.style.width = le.scrollWidth + 'px';
+				le.style.height = le.scrollHeight + 'px';
+				le.style.overflow = '';
+				inst._lastStyleElm = null;
+			}
+		}
+
+		return true;
+	},
+
+	handleVisualAid : function(el, deep, state, inst) {
+		var nl = inst.getDoc().getElementsByTagName("div"), i;
+
+		for (i=0; i<nl.length; i++) {
+			if (new RegExp('absolute|relative|static', 'gi').test(nl[i].style.position)) {
+				if (state)
+					tinyMCE.addCSSClass(nl[i], 'mceVisualAid');
+				else
+					tinyMCE.removeCSSClass(nl[i], 'mceVisualAid');					
+			}
+		}
+	},
+
+	getControlHTML : function(cn) {
+		switch (cn) {
+			case "moveforward":
+				return tinyMCE.getButtonHTML(cn, 'lang_layer_forward_desc', '{$pluginurl}/images/moveforward.gif', 'mceMoveForward', true);
+
+			case "movebackward":
+				return tinyMCE.getButtonHTML(cn, 'lang_layer_backward_desc', '{$pluginurl}/images/movebackward.gif', 'mceMoveBackward', true);
+
+			case "absolute":
+				return tinyMCE.getButtonHTML(cn, 'lang_layer_absolute_desc', '{$pluginurl}/images/absolute.gif', 'mceMakeAbsolute', true);
+
+			case "insertlayer":
+				return tinyMCE.getButtonHTML(cn, 'lang_layer_insertlayer_desc', '{$pluginurl}/images/insertlayer.gif', 'mceInsertLayer', true);
+		}
+
+		return "";
+	},
+
+	execCommand : function(editor_id, element, command, user_interface, value) {
+		// Handle commands
+		switch (command) {
+			case "mceInsertLayer":
+				this._insertLayer();
+				return true;
+
+			case "mceMoveForward":
+				this._move(1);
+				return true;
+
+			case "mceMoveBackward":
+				this._move(-1);
+				return true;
+
+			case "mceMakeAbsolute":
+				this._toggleAbsolute();
+				return true;
+		}
+
+		// Pass to next handler in chain
+		return false;
+	},
+
+	handleNodeChange : function(editor_id, node, undo_index, undo_levels, visual_aid, any_selection) {
+		var inst = tinyMCE.getInstanceById(editor_id);
+		var le = this._getParentLayer(inst.getFocusElement());
+		var p = tinyMCE.getParentElement(inst.getFocusElement(), 'div,p,img');
+
+		tinyMCE.switchClass(editor_id + '_absolute', 'mceButtonDisabled');
+		tinyMCE.switchClass(editor_id + '_moveforward', 'mceButtonDisabled');
+		tinyMCE.switchClass(editor_id + '_movebackward', 'mceButtonDisabled');
+
+		if (p)
+			tinyMCE.switchClass(editor_id + '_absolute', 'mceButtonNormal');
+
+		if (le && le.style.position.toLowerCase() == "absolute") {
+			tinyMCE.switchClass(editor_id + '_absolute', 'mceButtonSelected');
+			tinyMCE.switchClass(editor_id + '_moveforward', 'mceButtonNormal');
+			tinyMCE.switchClass(editor_id + '_movebackward', 'mceButtonNormal');
+		}
+	},
+
+	// Private plugin specific methods
+
+	_move : function(d) {
+		var inst = tinyMCE.selectedInstance, i, z = new Array();
+		var le = this._getParentLayer(inst.getFocusElement()), ci = -1, fi = -1;
+		var nl = tinyMCE.selectNodes(inst.getBody(), function(n) {
+			return n.nodeType == 1 && new RegExp('absolute|relative|static', 'gi').test(n.style.position);
+		});
+
+		// Find z-indexes
+		for (i=0; i<nl.length; i++) {
+			z[i] = nl[i].style.zIndex ? parseInt(nl[i].style.zIndex) : 0;
+
+			if (ci < 0 && nl[i] == le)
+				ci = i;
+		}
+
+		if (d < 0) {
+			// Move back
+
+			// Try find a lower one
+			for (i=0; i<z.length; i++) {
+				if (z[i] < z[ci]) {
+					fi = i;
+					break;
+				}
+			}
+
+			if (fi > -1) {
+				nl[ci].style.zIndex = z[fi];
+				nl[fi].style.zIndex = z[ci];
+			} else {
+				if (z[ci] > 0)
+					nl[ci].style.zIndex = z[ci] - 1;
+			}
+		} else {
+			// Move forward
+
+			// Try find a higher one
+			for (i=0; i<z.length; i++) {
+				if (z[i] > z[ci]) {
+					fi = i;
+					break;
+				}
+			}
+
+			if (fi > -1) {
+				nl[ci].style.zIndex = z[fi];
+				nl[fi].style.zIndex = z[ci];
+			} else
+				nl[ci].style.zIndex = z[ci] + 1;
+		}
+
+		inst.repaint();
+	},
+
+	_getParentLayer : function(n) {
+		return tinyMCE.getParentNode(n, function(n) {
+			return n.nodeType == 1 && new RegExp('absolute|relative|static', 'gi').test(n.style.position);
+		});
+	},
+
+	_insertLayer : function() {
+		var inst = tinyMCE.selectedInstance;
+		var e = tinyMCE.getParentElement(inst.getFocusElement());
+		var p = tinyMCE.getAbsPosition(e);
+		var d = inst.getDoc();
+		var ne = d.createElement('div');
+		var h = inst.selection.getSelectedHTML();
+
+		// Move div
+		ne.style.position = 'absolute';
+		ne.style.left = p.absLeft + 'px';
+		ne.style.top = (p.absTop > 20 ? p.absTop : 20) + 'px';
+		ne.style.width = '100px';
+		ne.style.height = '100px';
+		ne.className = 'mceVisualAid';
+
+		if (!h)
+			h = tinyMCE.getLang('lang_layer_content');
+
+		ne.innerHTML = h;
+
+		// Add it
+		d.body.appendChild(ne);
+	},
+
+	_toggleAbsolute : function() {
+		var inst = tinyMCE.selectedInstance;
+		var le = this._getParentLayer(inst.getFocusElement());
+
+		if (le == null)
+			le = tinyMCE.getParentElement(inst.getFocusElement(), 'div,p,img');
+
+		if (le) {
+			if (le.style.position.toLowerCase() == "absolute") {
+				le.style.position = "";
+				le.style.left = "";
+				le.style.top = "";
+			} else {
+				le.style.position = "absolute";
+
+				if (le.style.left == "")
+					le.style.left = 20 + 'px';
+
+				if (le.style.top == "")
+					le.style.top = 20 + 'px';
+
+				if (le.style.width == "")
+					le.style.width = le.width ? (le.width + 'px') : '100px';
+
+				if (le.style.height == "")
+					le.style.height = le.height ? (le.height + 'px') : '100px';
+
+				tinyMCE.handleVisualAid(inst.getBody(), true, inst.visualAid, inst);
+			}
+
+			inst.repaint();
+			tinyMCE.triggerNodeChange();
+		}
+	}
+};
+
+tinyMCE.addPlugin("layer", TinyMCE_LayerPlugin);

Added: labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/plugins/layer/images/absolute.gif
===================================================================
(Binary files differ)


Property changes on: labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/plugins/layer/images/absolute.gif
___________________________________________________________________
Name: svn:mime-type
   + application/octet-stream

Added: labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/plugins/layer/images/backward.gif
===================================================================
(Binary files differ)


Property changes on: labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/plugins/layer/images/backward.gif
___________________________________________________________________
Name: svn:mime-type
   + application/octet-stream

Added: labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/plugins/layer/images/forward.gif
===================================================================
(Binary files differ)


Property changes on: labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/plugins/layer/images/forward.gif
___________________________________________________________________
Name: svn:mime-type
   + application/octet-stream

Added: labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/plugins/layer/images/insert_layer.gif
===================================================================
(Binary files differ)


Property changes on: labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/plugins/layer/images/insert_layer.gif
___________________________________________________________________
Name: svn:mime-type
   + application/octet-stream

Added: labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/plugins/layer/images/insertlayer.gif
===================================================================
(Binary files differ)


Property changes on: labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/plugins/layer/images/insertlayer.gif
___________________________________________________________________
Name: svn:mime-type
   + application/octet-stream

Added: labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/plugins/layer/images/movebackward.gif
===================================================================
(Binary files differ)


Property changes on: labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/plugins/layer/images/movebackward.gif
___________________________________________________________________
Name: svn:mime-type
   + application/octet-stream

Added: labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/plugins/layer/images/moveforward.gif
===================================================================
(Binary files differ)


Property changes on: labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/plugins/layer/images/moveforward.gif
___________________________________________________________________
Name: svn:mime-type
   + application/octet-stream

Added: labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/plugins/layer/langs/en.js
===================================================================
--- labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/plugins/layer/langs/en.js	2007-01-11 22:09:16 UTC (rev 8831)
+++ labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/plugins/layer/langs/en.js	2007-01-11 22:10:56 UTC (rev 8832)
@@ -0,0 +1,9 @@
+// UK lang variables
+
+tinyMCE.addToLang('layer',{
+insertlayer_desc : 'Insert new layer',
+forward_desc : 'Move forward',
+backward_desc : 'Move backward',
+absolute_desc : 'Toggle absolute positioning',
+content : 'New layer...'
+});

Added: labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/plugins/layer/readme.txt
===================================================================
--- labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/plugins/layer/readme.txt	2007-01-11 22:09:16 UTC (rev 8831)
+++ labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/plugins/layer/readme.txt	2007-01-11 22:10:56 UTC (rev 8832)
@@ -0,0 +1 @@
+Check the TinyMCE documentation for details on this plugin.

Added: labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/plugins/media/css/content.css
===================================================================
--- labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/plugins/media/css/content.css	2007-01-11 22:09:16 UTC (rev 8831)
+++ labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/plugins/media/css/content.css	2007-01-11 22:10:56 UTC (rev 8832)
@@ -0,0 +1,26 @@
+.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');
+}

Added: labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/plugins/media/css/media.css
===================================================================
--- labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/plugins/media/css/media.css	2007-01-11 22:09:16 UTC (rev 8831)
+++ labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/plugins/media/css/media.css	2007-01-11 22:10:56 UTC (rev 8832)
@@ -0,0 +1,68 @@
+#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;
+}

Added: labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/plugins/media/editor_plugin.js
===================================================================
--- labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/plugins/media/editor_plugin.js	2007-01-11 22:09:16 UTC (rev 8831)
+++ labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/plugins/media/editor_plugin.js	2007-01-11 22:10:56 UTC (rev 8832)
@@ -0,0 +1 @@
+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].heig!
 ht=nl[i].title.replace(/.*height:[^0-9]?([0-9]+)%?.*/g,'$1');}}nl=tiny
MCE.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_M!
 ediaPlugin._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(conten!
 t.substring(startPos+4,endPos));if(!/mceItem(Flash|ShockWave|WindowsMe
dia|QuickTime|RealMedia)/.test(attribs['class']))continue;endPos+=2;at=attribs['title'];if(at){at=at.replace(/&#39;/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.convertRel!
 ativeToAbsoluteURL(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.addPlug!
 in("media",TinyMCE_MediaPlugin);
\ No newline at end of file

Added: labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/plugins/media/editor_plugin_src.js
===================================================================
--- labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/plugins/media/editor_plugin_src.js	2007-01-11 22:09:16 UTC (rev 8831)
+++ labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/plugins/media/editor_plugin_src.js	2007-01-11 22:10:56 UTC (rev 8832)
@@ -0,0 +1,428 @@
+/**
+ * $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(/&#39;/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);

Added: labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/plugins/media/images/flash.gif
===================================================================
(Binary files differ)


Property changes on: labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/plugins/media/images/flash.gif
___________________________________________________________________
Name: svn:mime-type
   + application/octet-stream

Added: labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/plugins/media/images/media.gif
===================================================================
(Binary files differ)


Property changes on: labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/plugins/media/images/media.gif
___________________________________________________________________
Name: svn:mime-type
   + application/octet-stream

Added: labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/plugins/media/images/quicktime.gif
===================================================================
(Binary files differ)


Property changes on: labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/plugins/media/images/quicktime.gif
___________________________________________________________________
Name: svn:mime-type
   + application/octet-stream

Added: labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/plugins/media/images/realmedia.gif
===================================================================
(Binary files differ)


Property changes on: labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/plugins/media/images/realmedia.gif
___________________________________________________________________
Name: svn:mime-type
   + application/octet-stream

Added: labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/plugins/media/images/shockwave.gif
===================================================================
(Binary files differ)


Property changes on: labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/plugins/media/images/shockwave.gif
___________________________________________________________________
Name: svn:mime-type
   + application/octet-stream

Added: labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/plugins/media/images/windowsmedia.gif
===================================================================
(Binary files differ)


Property changes on: labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/plugins/media/images/windowsmedia.gif
___________________________________________________________________
Name: svn:mime-type
   + application/octet-stream

Added: labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/plugins/media/jscripts/embed.js
===================================================================
--- labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/plugins/media/jscripts/embed.js	2007-01-11 22:09:16 UTC (rev 8831)
+++ labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/plugins/media/jscripts/embed.js	2007-01-11 22:10:56 UTC (rev 8832)
@@ -0,0 +1,73 @@
+/**
+ * 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);
+}

Added: labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/plugins/media/jscripts/media.js
===================================================================
--- labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/plugins/media/jscripts/media.js	2007-01-11 22:09:16 UTC (rev 8831)
+++ labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/plugins/media/jscripts/media.js	2007-01-11 22:10:56 UTC (rev 8832)
@@ -0,0 +1,572 @@
+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;
+}

Added: labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/plugins/media/langs/en.js
===================================================================
--- labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/plugins/media/langs/en.js	2007-01-11 22:09:16 UTC (rev 8831)
+++ labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/plugins/media/langs/en.js	2007-01-11 22:10:56 UTC (rev 8832)
@@ -0,0 +1,85 @@
+// 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..'
+});

Added: labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/plugins/media/media.htm
===================================================================
--- labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/plugins/media/media.htm	2007-01-11 22:09:16 UTC (rev 8831)
+++ labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/plugins/media/media.htm	2007-01-11 22:10:56 UTC (rev 8832)
@@ -0,0 +1,723 @@
+<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">&nbsp;</td>
+									  </tr>
+									</table>
+								</td>
+							</tr>
+							<tr id="linklistrow">
+								<td><label for="linklist">{$lang_media_list}</label></td>
+								<td id="linklistcontainer">&nbsp;</td>
+							</tr>
+							<tr>
+								<td><label for="width">{$lang_media_size}</label></td>
+								<td>
+								<table border="0" cellpadding="0" cellspacing="0">
+									<tr>
+										<td><input type="text" id="width" name="width" value="" class="size" onchange="generatePreview('width');" /> x <input type="text" id="height" name="height" value="" class="size"  onchange="generatePreview('height');" /></td>
+										<td>&nbsp;&nbsp;<input id="constrain" type="checkbox" name="constrain" class="checkbox" /></td>
+										<td><label id="constrainlabel" for="constrain">{$lang_media_constrain_proportions}</label></td>
+									</tr>
+								</table>
+							</tr>
+					</table>
+				</fieldset>
+
+				<fieldset>
+					<legend>{$lang_media_preview}</legend>
+					<div id="prev"></div>
+				</fieldset>
+			</div>
+
+			<div id="advanced_panel" class="panel">
+				<fieldset>
+					<legend>{$lang_media_advanced}</legend>
+
+					<table border="0" cellpadding="4" cellspacing="0" width="100%">
+						<tr>
+							<td><label for="id">{$lang_media_id}</label></td>
+							<td><input type="text" id="id" name="id" onchange="generatePreview();" /></td>
+							<td><label for="name">{$lang_media_name}</label></td>
+							<td><input type="text" id="name" name="name" onchange="generatePreview();" /></td>
+						</tr>
+
+						<tr>
+							<td><label for="align">{$lang_media_align}</label></td>
+							<td>
+								<select id="align" name="align" onchange="generatePreview();">
+									<option value="">{$lang_not_set}</option> 
+									<option value="top">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">&nbsp;</td>
+									</tr>
+								</table>
+							</td>
+						</tr>
+
+						<tr>
+							<td><label for="vspace">{$lang_media_vspace}</label></td>
+							<td><input type="text" id="vspace" name="vspace" class="number" onchange="generatePreview();" /></td>
+							<td><label for="hspace">{$lang_media_hspace}</label></td>
+							<td><input type="text" id="hspace" name="hspace" class="number" onchange="generatePreview();" /></td>
+						</tr>
+					</table>
+				</fieldset>
+
+				<fieldset id="flash_options">
+					<legend>{$lang_media_flash_options}</legend>
+
+					<table border="0" cellpadding="4" cellspacing="0">
+						<tr>
+							<td><label for="flash_quality">{$lang_media_quality}</label></td>
+							<td>
+								<select id="flash_quality" name="flash_quality" onchange="generatePreview();">
+									<option value="">{$lang_not_set}</option> 
+									<option value="high">high</option>
+									<option value="low">low</option>
+									<option value="autolow">autolow</option>
+									<option value="autohigh">autohigh</option>
+									<option value="best">best</option>
+								</select>
+							</td>
+
+							<td><label for="flash_scale">{$lang_media_scale}</label></td>
+							<td>
+								<select id="flash_scale" name="flash_scale" onchange="generatePreview();">
+									<option value="">{$lang_not_set}</option> 
+									<option value="showall">showall</option>
+									<option value="noborder">noborder</option>
+									<option value="exactfit">exactfit</option>
+								</select>
+							</td>
+						</tr>
+
+						<tr>
+							<td><label for="flash_wmode">{$lang_media_wmode}</label></td>
+							<td>
+								<select id="flash_wmode" name="flash_wmode" onchange="generatePreview();">
+									<option value="">{$lang_not_set}</option> 
+									<option value="window">window</option>
+									<option value="opaque">opaque</option>
+									<option value="transparent">transparent</option>
+								</select>
+							</td>
+
+							<td><label for="flash_salign">{$lang_media_salign}</label></td>
+							<td>
+								<select id="flash_salign" name="flash_salign" onchange="generatePreview();">
+									<option value="">{$lang_not_set}</option> 
+									<option value="l">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">&nbsp;</td>
+						</tr>
+
+						<tr>
+							<td><label for="qt_starttime">{$lang_media_starttime}</label></td>
+							<td><input type="text" id="qt_starttime" name="qt_starttime" onchange="generatePreview();" /></td>
+
+							<td><label for="qt_endtime">{$lang_media_endtime}</label></td>
+							<td><input type="text" id="qt_endtime" name="qt_endtime" onchange="generatePreview();" /></td>
+						</tr>
+
+						<tr>
+							<td><label for="qt_target">{$lang_media_target}</label></td>
+							<td><input type="text" id="qt_target" name="qt_target" onchange="generatePreview();" /></td>
+
+							<td><label for="qt_href">{$lang_media_href}</label></td>
+							<td><input type="text" id="qt_href" name="qt_href" onchange="generatePreview();" /></td>
+						</tr>
+
+						<tr>
+							<td><label for="qt_qtsrcchokespeed">{$lang_media_qtsrcchokespeed}</label></td>
+							<td><input type="text" id="qt_qtsrcchokespeed" name="qt_qtsrcchokespeed" onchange="generatePreview();" /></td>
+
+							<td><label for="qt_volume">{$lang_media_volume}</label></td>
+							<td><input type="text" id="qt_volume" name="qt_volume" onchange="generatePreview();" /></td>
+						</tr>
+
+						<tr>
+							<td><label for="qt_qtsrc">{$lang_media_qtsrc}</label></td>
+							<td colspan="4">
+							<table border="0" cellspacing="0" cellpadding="0">
+								  <tr>
+									<td><input type="text" id="qt_qtsrc" name="qt_qtsrc" onchange="generatePreview();" /></td>
+									<td id="qtsrcfilebrowsercontainer">&nbsp;</td>
+								  </tr>
+							</table>
+							</td>
+						</tr>
+					</table>
+				</fieldset>
+
+				<fieldset id="wmp_options">
+					<legend>{$lang_media_wmp_options}</legend>
+
+					<table border="0" cellpadding="4" cellspacing="0">
+						<tr>
+							<td colspan="2">
+								<table border="0" cellpadding="0" cellspacing="0">
+									<tr>
+										<td><input type="checkbox" class="checkbox" id="wmp_autostart" name="wmp_autostart" checked="checked" onchange="generatePreview();" /></td>
+										<td><label for="wmp_autostart">{$lang_media_autostart}</label></td>
+									</tr>
+								</table>
+							</td>
+
+							<td colspan="2">
+								<table border="0" cellpadding="0" cellspacing="0">
+									<tr>
+										<td><input type="checkbox" class="checkbox" id="wmp_enabled" name="wmp_enabled" onchange="generatePreview();" /></td>
+										<td><label for="wmp_enabled">{$lang_media_enabled}</label></td>
+									</tr>
+								</table>
+							</td>
+						</tr>
+
+						<tr>
+							<td colspan="2">
+								<table border="0" cellpadding="0" cellspacing="0">
+									<tr>
+										<td><input type="checkbox" class="checkbox" id="wmp_enablecontextmenu" name="wmp_enablecontextmenu" checked="checked" onchange="generatePreview();" /></td>
+										<td><label for="wmp_enablecontextmenu">{$lang_media_menu}</label></td>
+									</tr>
+								</table>
+							</td>
+
+							<td colspan="2">
+								<table border="0" cellpadding="0" cellspacing="0">
+									<tr>
+										<td><input type="checkbox" class="checkbox" id="wmp_fullscreen" name="wmp_fullscreen" onchange="generatePreview();" /></td>
+										<td><label for="wmp_fullscreen">{$lang_media_fullscreen}</label></td>
+									</tr>
+								</table>
+							</td>
+						</tr>
+
+						<tr>
+							<td colspan="2">
+								<table border="0" cellpadding="0" cellspacing="0">
+									<tr>
+										<td><input type="checkbox" class="checkbox" id="wmp_invokeurls" name="wmp_invokeurls" checked="checked" onchange="generatePreview();" /></td>
+										<td><label for="wmp_invokeurls">{$lang_media_invokeurls}</label></td>
+									</tr>
+								</table>
+							</td>
+
+							<td colspan="2">
+								<table border="0" cellpadding="0" cellspacing="0">
+									<tr>
+										<td><input type="checkbox" class="checkbox" id="wmp_mute" name="wmp_mute" onchange="generatePreview();" /></td>
+										<td><label for="wmp_mute">{$lang_media_mute}</label></td>
+									</tr>
+								</table>
+							</td>
+						</tr>
+
+						<tr>
+							<td colspan="2">
+								<table border="0" cellpadding="0" cellspacing="0">
+									<tr>
+										<td><input type="checkbox" class="checkbox" id="wmp_stretchtofit" name="wmp_stretchtofit" onchange="generatePreview();" /></td>
+										<td><label for="wmp_stretchtofit">{$lang_media_stretchtofit}</label></td>
+									</tr>
+								</table>
+							</td>
+
+							<td colspan="2">
+								<table border="0" cellpadding="0" cellspacing="0">
+									<tr>
+										<td><input type="checkbox" class="checkbox" id="wmp_windowlessvideo" name="wmp_windowlessvideo" onchange="generatePreview();" /></td>
+										<td><label for="wmp_windowlessvideo">{$lang_media_windowlessvideo}</label></td>
+									</tr>
+								</table>
+							</td>
+						</tr>
+
+						<tr>
+							<td><label for="wmp_balance">{$lang_media_balance}</label></td>
+							<td><input type="text" id="wmp_balance" name="wmp_balance" onchange="generatePreview();" /></td>
+
+							<td><label for="wmp_baseurl">{$lang_media_baseurl}</label></td>
+							<td><input type="text" id="wmp_baseurl" name="wmp_baseurl" onchange="generatePreview();" /></td>
+						</tr>
+
+						<tr>
+							<td><label for="wmp_captioningid">{$lang_media_captioningid}</label></td>
+							<td><input type="text" id="wmp_captioningid" name="wmp_captioningid" onchange="generatePreview();" /></td>
+
+							<td><label for="wmp_currentmarker">{$lang_media_currentmarker}</label></td>
+							<td><input type="text" id="wmp_currentmarker" name="wmp_currentmarker" onchange="generatePreview();" /></td>
+						</tr>
+
+						<tr>
+							<td><label for="wmp_currentposition">{$lang_media_currentposition}</label></td>
+							<td><input type="text" id="wmp_currentposition" name="wmp_currentposition" onchange="generatePreview();" /></td>
+
+							<td><label for="wmp_defaultframe">{$lang_media_defaultframe}</label></td>
+							<td><input type="text" id="wmp_defaultframe" name="wmp_defaultframe" onchange="generatePreview();" /></td>
+						</tr>
+
+						<tr>
+							<td><label for="wmp_playcount">{$lang_media_playcount}</label></td>
+							<td><input type="text" id="wmp_playcount" name="wmp_playcount" onchange="generatePreview();" /></td>
+
+							<td><label for="wmp_rate">{$lang_media_rate}</label></td>
+							<td><input type="text" id="wmp_rate" name="wmp_rate" onchange="generatePreview();" /></td>
+						</tr>
+
+						<tr>
+							<td><label for="wmp_uimode">{$lang_media_uimode}</label></td>
+							<td><input type="text" id="wmp_uimode" name="wmp_uimode" onchange="generatePreview();" /></td>
+
+							<td><label for="wmp_volume">{$lang_media_volume}</label></td>
+							<td><input type="text" id="wmp_volume" name="wmp_volume" onchange="generatePreview();" /></td>
+						</tr>
+
+					</table>
+				</fieldset>
+
+				<fieldset id="rmp_options">
+					<legend>{$lang_media_rmp_options}</legend>
+
+					<table border="0" cellpadding="4" cellspacing="0">
+						<tr>
+							<td colspan="2">
+								<table border="0" cellpadding="0" cellspacing="0">
+									<tr>
+										<td><input type="checkbox" class="checkbox" id="rmp_autostart" name="rmp_autostart" onchange="generatePreview();" /></td>
+										<td><label for="rmp_autostart">{$lang_media_autostart}</label></td>
+									</tr>
+								</table>
+							</td>
+
+							<td colspan="2">
+								<table border="0" cellpadding="0" cellspacing="0">
+									<tr>
+										<td><input type="checkbox" class="checkbox" id="rmp_loop" name="rmp_loop" onchange="generatePreview();" /></td>
+										<td><label for="rmp_loop">{$lang_media_loop}</label></td>
+									</tr>
+								</table>
+							</td>
+						</tr>
+
+						<tr>
+							<td colspan="2">
+								<table border="0" cellpadding="0" cellspacing="0">
+									<tr>
+										<td><input type="checkbox" class="checkbox" id="rmp_autogotourl" name="rmp_autogotourl" checked="checked" onchange="generatePreview();" /></td>
+										<td><label for="rmp_autogotourl">{$lang_media_autogotourl}</label></td>
+									</tr>
+								</table>
+							</td>
+
+							<td colspan="2">
+								<table border="0" cellpadding="0" cellspacing="0">
+									<tr>
+										<td><input type="checkbox" class="checkbox" id="rmp_center" name="rmp_center" onchange="generatePreview();" /></td>
+										<td><label for="rmp_center">{$lang_media_center}</label></td>
+									</tr>
+								</table>
+							</td>
+						</tr>
+
+						<tr>
+							<td colspan="2">
+								<table border="0" cellpadding="0" cellspacing="0">
+									<tr>
+										<td><input type="checkbox" class="checkbox" id="rmp_imagestatus" name="rmp_imagestatus" checked="checked" onchange="generatePreview();" /></td>
+										<td><label for="rmp_imagestatus">{$lang_media_imagestatus}</label></td>
+									</tr>
+								</table>
+							</td>
+
+							<td colspan="2">
+								<table border="0" cellpadding="0" cellspacing="0">
+									<tr>
+										<td><input type="checkbox" class="checkbox" id="rmp_maintainaspect" name="rmp_maintainaspect" onchange="generatePreview();" /></td>
+										<td><label for="rmp_maintainaspect">{$lang_media_maintainaspect}</label></td>
+									</tr>
+								</table>
+							</td>
+						</tr>
+
+						<tr>
+							<td colspan="2">
+								<table border="0" cellpadding="0" cellspacing="0">
+									<tr>
+										<td><input type="checkbox" class="checkbox" id="rmp_nojava" name="rmp_nojava" onchange="generatePreview();" /></td>
+										<td><label for="rmp_nojava">{$lang_media_nojava}</label></td>
+									</tr>
+								</table>
+							</td>
+
+							<td colspan="2">
+								<table border="0" cellpadding="0" cellspacing="0">
+									<tr>
+										<td><input type="checkbox" class="checkbox" id="rmp_prefetch" name="rmp_prefetch" onchange="generatePreview();" /></td>
+										<td><label for="rmp_prefetch">{$lang_media_prefetch}</label></td>
+									</tr>
+								</table>
+							</td>
+						</tr>
+
+						<tr>
+							<td colspan="2">
+								<table border="0" cellpadding="0" cellspacing="0">
+									<tr>
+										<td><input type="checkbox" class="checkbox" id="rmp_shuffle" name="rmp_shuffle" onchange="generatePreview();" /></td>
+										<td><label for="rmp_shuffle">{$lang_media_shuffle}</label></td>
+									</tr>
+								</table>
+							</td>
+
+							<td colspan="2">
+								&nbsp;
+							</td>
+						</tr>
+
+						<tr>
+							<td><label for="rmp_console">{$lang_media_console}</label></td>
+							<td><input type="text" id="rmp_console" name="rmp_console" onchange="generatePreview();" /></td>
+
+							<td><label for="rmp_controls">{$lang_media_controls}</label></td>
+							<td><input type="text" id="rmp_controls" name="rmp_controls" onchange="generatePreview();" /></td>
+						</tr>
+
+						<tr>
+							<td><label for="rmp_numloop">{$lang_media_numloop}</label></td>
+							<td><input type="text" id="rmp_numloop" name="rmp_numloop" onchange="generatePreview();" /></td>
+
+							<td><label for="rmp_scriptcallbacks">{$lang_media_scriptcallbacks}</label></td>
+							<td><input type="text" id="rmp_scriptcallbacks" name="rmp_scriptcallbacks" onchange="generatePreview();" /></td>
+						</tr>
+					</table>
+				</fieldset>
+
+				<fieldset id="shockwave_options">
+					<legend>{$lang_media_shockwave_options}</legend>
+
+					<table border="0" cellpadding="4" cellspacing="0">
+						<tr>
+							<td><label for="shockwave_swstretchstyle">{$lang_media_swstretchstyle}</label></td>
+							<td>
+								<select id="shockwave_swstretchstyle" name="shockwave_swstretchstyle" onchange="generatePreview();">
+									<option value="none">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>

Added: labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/plugins/nonbreaking/editor_plugin.js
===================================================================
--- labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/plugins/nonbreaking/editor_plugin.js	2007-01-11 22:09:16 UTC (rev 8831)
+++ labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/plugins/nonbreaking/editor_plugin.js	2007-01-11 22:10:56 UTC (rev 8832)
@@ -0,0 +1 @@
+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">&middot;</span>':'&nbsp;';tinyMCE.execInstanceCommand(editor_id,'mceInsertContent',false,h);return true}return false},handleEvent:function(e){var inst,h;if(!tinyMCE.isOpera&&e.type=='keydown'&&e.keyCode==9&&tinyMCE.getParam('nonbr!
 eaking_force_tab',false)){inst=tinyMCE.selectedInstance;h=(inst.visualChars&&inst.visualChars.state)?'<span class="mceItemHiddenVisualChar">&middot;&middot;&middot;</span>':'&nbsp;&nbsp;&nbsp;';tinyMCE.execInstanceCommand(inst.editorId,'mceInsertContent',false,h);tinyMCE.cancelEvent(e);return false}return true}};tinyMCE.addPlugin("nonbreaking",TinyMCE_NonBreakingPlugin);
\ No newline at end of file

Added: labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/plugins/nonbreaking/editor_plugin_src.js
===================================================================
--- labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/plugins/nonbreaking/editor_plugin_src.js	2007-01-11 22:09:16 UTC (rev 8831)
+++ labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/plugins/nonbreaking/editor_plugin_src.js	2007-01-11 22:10:56 UTC (rev 8832)
@@ -0,0 +1,62 @@
+/**
+ * $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">&middot;</span>' : '&nbsp;';
+				tinyMCE.execInstanceCommand(editor_id, 'mceInsertContent', false, h);
+				return true;
+		}
+
+		return false;
+	},
+
+	handleEvent : function(e) {
+		var inst, h;
+
+		if (!tinyMCE.isOpera && e.type == 'keydown' && e.keyCode == 9 && tinyMCE.getParam('nonbreaking_force_tab', false)) {
+			inst = tinyMCE.selectedInstance;
+
+			h = (inst.visualChars && inst.visualChars.state) ? '<span class="mceItemHiddenVisualChar">&middot;&middot;&middot;</span>' : '&nbsp;&nbsp;&nbsp;';
+			tinyMCE.execInstanceCommand(inst.editorId, 'mceInsertContent', false, h);
+
+			tinyMCE.cancelEvent(e);
+			return false;
+		}
+
+		return true;
+	}
+};
+
+tinyMCE.addPlugin("nonbreaking", TinyMCE_NonBreakingPlugin);

Added: labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/plugins/nonbreaking/images/nonbreaking.gif
===================================================================
(Binary files differ)


Property changes on: labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/plugins/nonbreaking/images/nonbreaking.gif
___________________________________________________________________
Name: svn:mime-type
   + application/octet-stream

Added: labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/plugins/nonbreaking/langs/en.js
===================================================================
--- labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/plugins/nonbreaking/langs/en.js	2007-01-11 22:09:16 UTC (rev 8831)
+++ labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/plugins/nonbreaking/langs/en.js	2007-01-11 22:10:56 UTC (rev 8832)
@@ -0,0 +1,5 @@
+// UK lang variables
+
+tinyMCE.addToLang('nonbreaking',{
+desc : 'Insert non-breaking space character'
+});

Added: labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/plugins/noneditable/css/noneditable.css
===================================================================
--- labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/plugins/noneditable/css/noneditable.css	2007-01-11 22:09:16 UTC (rev 8831)
+++ labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/plugins/noneditable/css/noneditable.css	2007-01-11 22:10:56 UTC (rev 8832)
@@ -0,0 +1,9 @@
+/* This is the CSS file for the noneditable elements plugin */
+
+.mceItemEditable {
+	/*border: 1px dotted #0000cc;*/
+}
+
+.mceItemNonEditable {
+	/*border: 1px dotted #cc0000;*/
+}

Added: labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/plugins/noneditable/editor_plugin.js
===================================================================
--- labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/plugins/noneditable/editor_plugin.js	2007-01-11 22:09:16 UTC (rev 8831)
+++ labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/plugins/noneditable/editor_plugin.js	2007-01-11 22:10:56 UTC (rev 8832)
@@ -0,0 +1 @@
+var TinyMCE_NonEditablePlugin={getInfo:function(){return{longname:'Non editable elements',author:'Moxiecode Systems AB',authorurl:'http://tinymce.moxiecode.com',infourl:'http://tinymce.moxiecode.com/tinymce/docs/plugin_noneditable.html',version:tinyMCE.majorVersion+"."+tinyMCE.minorVersion}},initInstance:function(inst){tinyMCE.importCSS(inst.getDoc(),tinyMCE.baseURL+"/plugins/noneditable/css/noneditable.css");if(tinyMCE.isMSIE5_0)tinyMCE.settings['plugins']=tinyMCE.settings['plugins'].replace(/noneditable/gi,'Noneditable')},handleEvent:function(e){return this._moveSelection(e,tinyMCE.selectedInstance)},cleanup:function(type,content,inst){if(tinyMCE.isGecko)return content;switch(type){case"insert_to_editor_dom":var nodes=tinyMCE.getNodeTree(content,new Array(),1);var editClass=tinyMCE.getParam("noneditable_editable_class","mceItemEditable");var nonEditClass=tinyMCE.getParam("noneditable_noneditable_class","mceItemNonEditable");for(var i=0;i<nodes.length;i++){var elm=nodes[i]!
 ;var editable=tinyMCE.getAttrib(elm,"contenteditable");if(new RegExp("true|false","gi").test(editable))TinyMCE_NonEditablePlugin._setEditable(elm,editable=="true");if(tinyMCE.isMSIE){var className=elm.className?elm.className:"";if(className.indexOf(editClass)!=-1)elm.contentEditable=true;if(className.indexOf(nonEditClass)!=-1)elm.contentEditable=false}}break;case"insert_to_editor":if(tinyMCE.isMSIE){var editClass=tinyMCE.getParam("noneditable_editable_class","mceItemEditable");var nonEditClass=tinyMCE.getParam("noneditable_noneditable_class","mceItemNonEditable");content=content.replace(new RegExp("class=\"(.*)("+editClass+")([^\"]*)\"","gi"),'class="$1$2$3" contenteditable="true"');content=content.replace(new RegExp("class=\"(.*)("+nonEditClass+")([^\"]*)\"","gi"),'class="$1$2$3" contenteditable="false"')}break;case"get_from_editor_dom":if(tinyMCE.getParam("noneditable_leave_contenteditable",false)){var nodes=tinyMCE.getNodeTree(content,new Array(),1);for(var i=0;i<nodes.l!
 ength;i++)nodes[i].removeAttribute("contenteditable")}break}return con
tent},_moveSelection:function(e,inst){var s,r,sc,ec,el,c=tinyMCE.getParam('noneditable_editable_class','mceItemNonEditable');if(!inst)return true;if(tinyMCE.isGecko){s=inst.selection.getSel();r=s.getRangeAt(0);sc=tinyMCE.getParentNode(r.startContainer,function(n){return tinyMCE.hasCSSClass(n,c)});ec=tinyMCE.getParentNode(r.endContainer,function(n){return tinyMCE.hasCSSClass(n,c)});sc&&r.setStartBefore(sc);ec&&r.setEndAfter(ec);if(sc||ec){if(e.type=='keypress'&&e.keyCode==39){el=sc||ec;}s.removeAllRanges();s.addRange(r);return tinyMCE.cancelEvent(e)}}return true},_setEditable:function(elm,state){var editClass=tinyMCE.getParam("noneditable_editable_class","mceItemEditable");var nonEditClass=tinyMCE.getParam("noneditable_noneditable_class","mceItemNonEditable");var className=elm.className?elm.className:"";if(className.indexOf(editClass)!=-1||className.indexOf(nonEditClass)!=-1)return;if((className=tinyMCE.getAttrib(elm,"class"))!="")className+=" ";className+=state?editClass:non!
 EditClass;elm.setAttribute("class",className);elm.className=className}};tinyMCE.addPlugin("noneditable",TinyMCE_NonEditablePlugin);
\ No newline at end of file

Added: labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/plugins/noneditable/editor_plugin_src.js
===================================================================
--- labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/plugins/noneditable/editor_plugin_src.js	2007-01-11 22:09:16 UTC (rev 8831)
+++ labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/plugins/noneditable/editor_plugin_src.js	2007-01-11 22:10:56 UTC (rev 8832)
@@ -0,0 +1,140 @@
+/**
+ * $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.
+ */
+
+var TinyMCE_NonEditablePlugin = {
+	getInfo : function() {
+		return {
+			longname : 'Non editable elements',
+			author : 'Moxiecode Systems AB',
+			authorurl : 'http://tinymce.moxiecode.com',
+			infourl : 'http://tinymce.moxiecode.com/tinymce/docs/plugin_noneditable.html',
+			version : tinyMCE.majorVersion + "." + tinyMCE.minorVersion
+		};
+	},
+
+	initInstance : function(inst) {
+		tinyMCE.importCSS(inst.getDoc(), tinyMCE.baseURL + "/plugins/noneditable/css/noneditable.css");
+
+		// Ugly hack
+		if (tinyMCE.isMSIE5_0)
+			tinyMCE.settings['plugins'] = tinyMCE.settings['plugins'].replace(/noneditable/gi, 'Noneditable');
+	},
+
+	handleEvent : function(e) {
+		return this._moveSelection(e, tinyMCE.selectedInstance);
+	},
+
+	cleanup : function(type, content, inst) {
+		// Pass through Gecko
+		if (tinyMCE.isGecko)
+			return content;
+
+		switch (type) {
+			case "insert_to_editor_dom":
+				var nodes = tinyMCE.getNodeTree(content, new Array(), 1);
+				var editClass = tinyMCE.getParam("noneditable_editable_class", "mceItemEditable");
+				var nonEditClass = tinyMCE.getParam("noneditable_noneditable_class", "mceItemNonEditable");
+
+				for (var i=0; i<nodes.length; i++) {
+					var elm = nodes[i];
+
+					// Convert contenteditable to classes
+					var editable = tinyMCE.getAttrib(elm, "contenteditable");
+					if (new RegExp("true|false","gi").test(editable))
+						TinyMCE_NonEditablePlugin._setEditable(elm, editable == "true");
+
+					if (tinyMCE.isMSIE) {
+						var className = elm.className ? elm.className : "";
+
+						if (className.indexOf(editClass) != -1)
+							elm.contentEditable = true;
+
+						if (className.indexOf(nonEditClass) != -1)
+							elm.contentEditable = false;
+					}
+				}
+
+				break;
+
+			case "insert_to_editor":
+				if (tinyMCE.isMSIE) {
+					var editClass = tinyMCE.getParam("noneditable_editable_class", "mceItemEditable");
+					var nonEditClass = tinyMCE.getParam("noneditable_noneditable_class", "mceItemNonEditable");
+
+					content = content.replace(new RegExp("class=\"(.*)(" + editClass + ")([^\"]*)\"", "gi"), 'class="$1$2$3" contenteditable="true"');
+					content = content.replace(new RegExp("class=\"(.*)(" + nonEditClass + ")([^\"]*)\"", "gi"), 'class="$1$2$3" contenteditable="false"');
+				}
+
+				break;
+
+			case "get_from_editor_dom":
+				if (tinyMCE.getParam("noneditable_leave_contenteditable", false)) {
+					var nodes = tinyMCE.getNodeTree(content, new Array(), 1);
+
+					for (var i=0; i<nodes.length; i++)
+						nodes[i].removeAttribute("contenteditable");
+				}
+
+				break;
+		}
+
+		return content;
+	},
+
+	_moveSelection : function(e, inst) {
+		var s, r, sc, ec, el, c = tinyMCE.getParam('noneditable_editable_class', 'mceItemNonEditable');
+
+		if (!inst)
+			return true;
+
+		// Always select whole element
+		if (tinyMCE.isGecko) {
+			s = inst.selection.getSel();
+			r = s.getRangeAt(0);
+			sc = tinyMCE.getParentNode(r.startContainer, function (n) {return tinyMCE.hasCSSClass(n, c);});
+			ec = tinyMCE.getParentNode(r.endContainer, function (n) {return tinyMCE.hasCSSClass(n, c);});
+
+			sc && r.setStartBefore(sc);
+			ec && r.setEndAfter(ec);
+
+			if (sc || ec) {
+				if (e.type == 'keypress' && e.keyCode == 39) {
+					el = sc || ec;
+
+					// Try!!
+				}
+
+				s.removeAllRanges();
+				s.addRange(r);
+
+				return tinyMCE.cancelEvent(e);
+			}
+		}
+
+		return true;
+	},
+
+	_setEditable : function(elm, state) {
+		var editClass = tinyMCE.getParam("noneditable_editable_class", "mceItemEditable");
+		var nonEditClass = tinyMCE.getParam("noneditable_noneditable_class", "mceItemNonEditable");
+
+		var className = elm.className ? elm.className : "";
+
+		if (className.indexOf(editClass) != -1 || className.indexOf(nonEditClass) != -1)
+			return;
+
+		if ((className = tinyMCE.getAttrib(elm, "class")) != "")
+			className += " ";
+
+		className += state ? editClass : nonEditClass;
+
+		elm.setAttribute("class", className);
+		elm.className = className;
+	}
+};
+
+tinyMCE.addPlugin("noneditable", TinyMCE_NonEditablePlugin);

Added: labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/plugins/noneditable/readme.txt
===================================================================
--- labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/plugins/noneditable/readme.txt	2007-01-11 22:09:16 UTC (rev 8831)
+++ labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/plugins/noneditable/readme.txt	2007-01-11 22:10:56 UTC (rev 8832)
@@ -0,0 +1 @@
+Check the TinyMCE documentation for details on this plugin.

Added: labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/plugins/paste/blank.htm
===================================================================
--- labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/plugins/paste/blank.htm	2007-01-11 22:09:16 UTC (rev 8831)
+++ labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/plugins/paste/blank.htm	2007-01-11 22:10:56 UTC (rev 8832)
@@ -0,0 +1,19 @@
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+	<title>blank_page</title>
+	<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
+	<script language="javascript">
+		function init() {
+			document.body.contentEditable = true;
+			document.designMode = 'on';
+			parent.initIframe(document);
+			window.focus();
+		}
+	</script>
+	<link href="css/blank.css" rel="stylesheet" type="text/css" />
+	<base target="_self" />
+</head>
+<body onload="init();">
+
+</body>
+</html>

Added: labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/plugins/paste/css/blank.css
===================================================================
--- labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/plugins/paste/css/blank.css	2007-01-11 22:09:16 UTC (rev 8831)
+++ labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/plugins/paste/css/blank.css	2007-01-11 22:10:56 UTC (rev 8832)
@@ -0,0 +1,13 @@
+body {
+	background-color: #FFFFFF;
+	font-family: Verdana, Arial, Helvetica, sans-serif;
+	font-size: 10px;
+	scrollbar-3dlight-color: #F0F0EE;
+	scrollbar-arrow-color: #676662;
+	scrollbar-base-color: #F0F0EE;
+	scrollbar-darkshadow-color: #DDDDDD;
+	scrollbar-face-color: #E0E0DD;
+	scrollbar-highlight-color: #F0F0EE;
+	scrollbar-shadow-color: #F0F0EE;
+	scrollbar-track-color: #F5F5F5;
+}

Added: labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/plugins/paste/css/pasteword.css
===================================================================
--- labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/plugins/paste/css/pasteword.css	2007-01-11 22:09:16 UTC (rev 8831)
+++ labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/plugins/paste/css/pasteword.css	2007-01-11 22:10:56 UTC (rev 8832)
@@ -0,0 +1,3 @@
+.sourceIframe {
+	border: 1px solid #808080;
+}

Added: labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/plugins/paste/editor_plugin.js
===================================================================
--- labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/plugins/paste/editor_plugin.js	2007-01-11 22:09:16 UTC (rev 8831)
+++ labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/plugins/paste/editor_plugin.js	2007-01-11 22:10:56 UTC (rev 8832)
@@ -0,0 +1 @@
+tinyMCE.importPluginLanguagePack('paste');var TinyMCE_PastePlugin={getInfo:function(){return{longname:'Paste text/word',author:'Moxiecode Systems AB',authorurl:'http://tinymce.moxiecode.com',infourl:'http://tinymce.moxiecode.com/tinymce/docs/plugin_paste.html',version:tinyMCE.majorVersion+"."+tinyMCE.minorVersion}},initInstance:function(inst){if(tinyMCE.isMSIE&&tinyMCE.getParam("paste_auto_cleanup_on_paste",false))tinyMCE.addEvent(inst.getBody(),"paste",TinyMCE_PastePlugin._handlePasteEvent)},getControlHTML:function(cn){switch(cn){case"pastetext":return tinyMCE.getButtonHTML(cn,'lang_paste_text_desc','{$pluginurl}/images/pastetext.gif','mcePasteText',true);case"pasteword":return tinyMCE.getButtonHTML(cn,'lang_paste_word_desc','{$pluginurl}/images/pasteword.gif','mcePasteWord',true);case"selectall":return tinyMCE.getButtonHTML(cn,'lang_selectall_desc','{$pluginurl}/images/selectall.gif','mceSelectAll',true)}return''},execCommand:function(editor_id,element,command,user_interf!
 ace,value){switch(command){case"mcePasteText":if(user_interface){if((tinyMCE.isMSIE&&!tinyMCE.isOpera)&&!tinyMCE.getParam('paste_use_dialog',false))TinyMCE_PastePlugin._insertText(clipboardData.getData("Text"),true);else{var template=new Array();template['file']='../../plugins/paste/pastetext.htm';template['width']=450;template['height']=400;var plain_text="";tinyMCE.openWindow(template,{editor_id:editor_id,plain_text:plain_text,resizable:"yes",scrollbars:"no",inline:"yes",mceDo:'insert'})}}else TinyMCE_PastePlugin._insertText(value['html'],value['linebreaks']);return true;case"mcePasteWord":if(user_interface){if((tinyMCE.isMSIE&&!tinyMCE.isOpera)&&!tinyMCE.getParam('paste_use_dialog',false)){TinyMCE_PastePlugin._insertWordContent(TinyMCE_PastePlugin._clipboardHTML())}else{var template=new Array();template['file']='../../plugins/paste/pasteword.htm';template['width']=450;template['height']=400;var plain_text="";tinyMCE.openWindow(template,{editor_id:editor_id,plain_text:pla!
 in_text,resizable:"yes",scrollbars:"no",inline:"yes",mceDo:'insert'})}
}else TinyMCE_PastePlugin._insertWordContent(value);return true;case"mceSelectAll":tinyMCE.execInstanceCommand(editor_id,'selectall');return true}return false},_handlePasteEvent:function(e){switch(e.type){case"paste":var html=TinyMCE_PastePlugin._clipboardHTML();var r,inst=tinyMCE.selectedInstance;if(inst&&(r=inst.getRng())&&r.text.length>0)tinyMCE.execCommand('delete');if(html&&html.length>0)tinyMCE.execCommand('mcePasteWord',false,html);tinyMCE.cancelEvent(e);return false}return true},_insertText:function(content,bLinebreaks){if(content&&content.length>0){if(bLinebreaks){if(tinyMCE.getParam("paste_create_paragraphs",true)){var rl=tinyMCE.getParam("paste_replace_list",'\u2122,<sup>TM</sup>,\u2026,...,\u201c|\u201d,",\u2019,\',\u2013|\u2014|\u2015|\u2212,-').split(',');for(var i=0;i<rl.length;i+=2)content=content.replace(new RegExp(rl[i],'gi'),rl[i+1]);content=tinyMCE.regexpReplace(content,"\r\n\r\n","</p><p>","gi");content=tinyMCE.regexpReplace(content,"\r\r","</p><p>","gi"!
 );content=tinyMCE.regexpReplace(content,"\n\n","</p><p>","gi");if((pos=content.indexOf('</p><p>'))!=-1){tinyMCE.execCommand("Delete");var node=tinyMCE.selectedInstance.getFocusElement();var breakElms=new Array();do{if(node.nodeType==1){if(node.nodeName=="TD"||node.nodeName=="BODY")break;breakElms[breakElms.length]=node}}while(node=node.parentNode);var before="",after="</p>";before+=content.substring(0,pos);for(var i=0;i<breakElms.length;i++){before+="</"+breakElms[i].nodeName+">";after+="<"+breakElms[(breakElms.length-1)-i].nodeName+">"}before+="<p>";content=before+content.substring(pos+7)+after}}if(tinyMCE.getParam("paste_create_linebreaks",true)){content=tinyMCE.regexpReplace(content,"\r\n","<br />","gi");content=tinyMCE.regexpReplace(content,"\r","<br />","gi");content=tinyMCE.regexpReplace(content,"\n","<br />","gi")}}tinyMCE.execCommand("mceInsertRawHTML",false,content)}},_insertWordContent:function(content){if(content&&content.length>0){var bull=String.fromCharCode(82!
 26);var middot=String.fromCharCode(183);var cb;if((cb=tinyMCE.getParam
("paste_insert_word_content_callback",""))!="")content=eval(cb+"('before', content)");var rl=tinyMCE.getParam("paste_replace_list",'\u2122,<sup>TM</sup>,\u2026,...,\u201c|\u201d,",\u2019,\',\u2013|\u2014|\u2015|\u2212,-').split(',');for(var i=0;i<rl.length;i+=2)content=content.replace(new RegExp(rl[i],'gi'),rl[i+1]);if(tinyMCE.getParam("paste_convert_headers_to_strong",false)){content=content.replace(new RegExp('<p class=MsoHeading.*?>(.*?)<\/p>','gi'),'<p><b>$1</b></p>')}content=content.replace(new RegExp('tab-stops: list [0-9]+.0pt">','gi'),'">'+"--list--");content=content.replace(new RegExp(bull+"(.*?)<BR>","gi"),"<p>"+middot+"$1</p>");content=content.replace(new RegExp('<SPAN style="mso-list: Ignore">','gi'),"<span>"+bull);content=content.replace(/<o:p><\/o:p>/gi,"");content=content.replace(new RegExp('<br style="page-break-before: always;.*>','gi'),'-- page break --');content=content.replace(new RegExp('<(!--)([^>]*)(--)>','g'),"");if(tinyMCE.getParam("paste_remove_span!
 s",true))content=content.replace(/<\/?span[^>]*>/gi,"");if(tinyMCE.getParam("paste_remove_styles",true))content=content.replace(new RegExp('<(\\w[^>]*) style="([^"]*)"([^>]*)','gi'),"<$1$3");content=content.replace(/<\/?font[^>]*>/gi,"");switch(tinyMCE.getParam("paste_strip_class_attributes","all")){case"all":content=content.replace(/<(\w[^>]*) class=([^ |>]*)([^>]*)/gi,"<$1$3");break;case"mso":content=content.replace(new RegExp('<(\\w[^>]*) class="?mso([^ |>]*)([^>]*)','gi'),"<$1$3");break}content=content.replace(new RegExp('href="?'+TinyMCE_PastePlugin._reEscape(""+document.location)+'','gi'),'href="'+tinyMCE.settings['document_base_url']);content=content.replace(/<(\w[^>]*) lang=([^ |>]*)([^>]*)/gi,"<$1$3");content=content.replace(/<\\?\?xml[^>]*>/gi,"");content=content.replace(/<\/?\w+:[^>]*>/gi,"");content=content.replace(/-- page break --\s*<p>&nbsp;<\/p>/gi,"");content=content.replace(/-- page break --/gi,"");if(!tinyMCE.settings['force_p_newlines']){content=content.!
 replace('','','gi');content=content.replace('</p>','<br /><br />','gi'
)}if(!tinyMCE.isMSIE&&!tinyMCE.settings['force_p_newlines']){content=content.replace(/<\/?p[^>]*>/gi,"")}content=content.replace(/<\/?div[^>]*>/gi,"");if(tinyMCE.getParam("paste_convert_middot_lists",true)){var div=document.createElement("div");div.innerHTML=content;var className=tinyMCE.getParam("paste_unindented_list_class","unIndentedList");while(TinyMCE_PastePlugin._convertMiddots(div,"--list--"));while(TinyMCE_PastePlugin._convertMiddots(div,middot,className));while(TinyMCE_PastePlugin._convertMiddots(div,bull));content=div.innerHTML}if(tinyMCE.getParam("paste_convert_headers_to_strong",false)){content=content.replace(/<h[1-6]>&nbsp;<\/h[1-6]>/gi,'<p>&nbsp;&nbsp;</p>');content=content.replace(/<h[1-6]>/gi,'<p><b>');content=content.replace(/<\/h[1-6]>/gi,'</b></p>');content=content.replace(/<b>&nbsp;<\/b>/gi,'<b>&nbsp;&nbsp;</b>');content=content.replace(/^(&nbsp;)*/gi,'')}content=content.replace(/--list--/gi,"");if((cb=tinyMCE.getParam("paste_insert_word_content_callbac!
 k",""))!="")content=eval(cb+"('after', content)");tinyMCE.execCommand("mceInsertContent",false,content);if(tinyMCE.getParam('paste_force_cleanup_wordpaste',true))window.setTimeout('tinyMCE.execCommand("mceCleanup");',1);}},_reEscape:function(s){var l="?.\\*[](){}+^$:";var o="";for(var i=0;i<s.length;i++){var c=s.charAt(i);if(l.indexOf(c)!=-1)o+='\\'+c;else o+=c}return o},_convertMiddots:function(div,search,class_name){var mdot=String.fromCharCode(183);var bull=String.fromCharCode(8226);var nodes=div.getElementsByTagName("p");var prevul;for(var i=0;i<nodes.length;i++){var p=nodes[i];if(p.innerHTML.indexOf(search)==0){var ul=document.createElement("ul");if(class_name)ul.className=class_name;var li=document.createElement("li");li.innerHTML=p.innerHTML.replace(new RegExp(''+mdot+'|'+bull+'|--list--|&nbsp;',"gi"),'');ul.appendChild(li);var np=p.nextSibling;while(np){if(np.nodeType==3&&new RegExp('^\\s$','m').test(np.nodeValue)){np=np.nextSibling;continue}if(search==mdot){if(np.n!
 odeType==1&&new RegExp('^o(\\s+|&nbsp;)').test(np.innerHTML)){if(!prev
ul){prevul=ul;ul=document.createElement("ul");prevul.appendChild(ul)}np.innerHTML=np.innerHTML.replace(/^o/,'')}else{if(prevul){ul=prevul;prevul=null}if(np.nodeType!=1||np.innerHTML.indexOf(search)!=0)break}}else{if(np.nodeType!=1||np.innerHTML.indexOf(search)!=0)break}var cp=np.nextSibling;var li=document.createElement("li");li.innerHTML=np.innerHTML.replace(new RegExp(''+mdot+'|'+bull+'|--list--|&nbsp;',"gi"),'');np.parentNode.removeChild(np);ul.appendChild(li);np=cp}p.parentNode.replaceChild(ul,p);return true}}return false},_clipboardHTML:function(){var div=document.getElementById('_TinyMCE_clipboardHTML');if(!div){var div=document.createElement('DIV');div.id='_TinyMCE_clipboardHTML';with(div.style){visibility='hidden';overflow='hidden';position='absolute';width=1;height=1}document.body.appendChild(div)}div.innerHTML='';var rng=document.body.createTextRange();rng.moveToElementText(div);rng.execCommand('Paste');var html=div.innerHTML;div.innerHTML='';return html}};tinyMCE.!
 addPlugin("paste",TinyMCE_PastePlugin);
\ No newline at end of file

Added: labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/plugins/paste/editor_plugin_src.js
===================================================================
--- labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/plugins/paste/editor_plugin_src.js	2007-01-11 22:09:16 UTC (rev 8831)
+++ labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/plugins/paste/editor_plugin_src.js	2007-01-11 22:10:56 UTC (rev 8832)
@@ -0,0 +1,385 @@
+/**
+ * $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('paste');
+
+var TinyMCE_PastePlugin = {
+	getInfo : function() {
+		return {
+			longname : 'Paste text/word',
+			author : 'Moxiecode Systems AB',
+			authorurl : 'http://tinymce.moxiecode.com',
+			infourl : 'http://tinymce.moxiecode.com/tinymce/docs/plugin_paste.html',
+			version : tinyMCE.majorVersion + "." + tinyMCE.minorVersion
+		};
+	},
+
+	initInstance : function(inst) {
+		if (tinyMCE.isMSIE && tinyMCE.getParam("paste_auto_cleanup_on_paste", false))
+			tinyMCE.addEvent(inst.getBody(), "paste", TinyMCE_PastePlugin._handlePasteEvent);
+	},
+
+	getControlHTML : function(cn) { 
+		switch (cn) { 
+			case "pastetext":
+				return tinyMCE.getButtonHTML(cn, 'lang_paste_text_desc', '{$pluginurl}/images/pastetext.gif', 'mcePasteText', true);
+
+			case "pasteword":
+				return tinyMCE.getButtonHTML(cn, 'lang_paste_word_desc', '{$pluginurl}/images/pasteword.gif', 'mcePasteWord', true);
+
+			case "selectall":
+				return tinyMCE.getButtonHTML(cn, 'lang_selectall_desc', '{$pluginurl}/images/selectall.gif', 'mceSelectAll', true);
+		} 
+
+		return ''; 
+	},
+
+	execCommand : function(editor_id, element, command, user_interface, value) { 
+		switch (command) { 
+			case "mcePasteText": 
+				if (user_interface) {
+					if ((tinyMCE.isMSIE && !tinyMCE.isOpera) && !tinyMCE.getParam('paste_use_dialog', false))
+						TinyMCE_PastePlugin._insertText(clipboardData.getData("Text"), true); 
+					else { 
+						var template = new Array(); 
+						template['file']	= '../../plugins/paste/pastetext.htm'; // Relative to theme 
+						template['width']  = 450; 
+						template['height'] = 400; 
+						var plain_text = ""; 
+						tinyMCE.openWindow(template, {editor_id : editor_id, plain_text: plain_text, resizable : "yes", scrollbars : "no", inline : "yes", mceDo : 'insert'}); 
+					}
+				} else
+					TinyMCE_PastePlugin._insertText(value['html'], value['linebreaks']);
+
+				return true;
+
+			case "mcePasteWord": 
+				if (user_interface) {
+					if ((tinyMCE.isMSIE && !tinyMCE.isOpera) && !tinyMCE.getParam('paste_use_dialog', false)) {
+						TinyMCE_PastePlugin._insertWordContent(TinyMCE_PastePlugin._clipboardHTML());
+					} else { 
+						var template = new Array(); 
+						template['file']	= '../../plugins/paste/pasteword.htm'; // Relative to theme 
+						template['width']  = 450; 
+						template['height'] = 400; 
+						var plain_text = ""; 
+						tinyMCE.openWindow(template, {editor_id : editor_id, plain_text: plain_text, resizable : "yes", scrollbars : "no", inline : "yes", mceDo : 'insert'});
+					}
+				} else
+					TinyMCE_PastePlugin._insertWordContent(value);
+
+				return true;
+
+			case "mceSelectAll":
+				tinyMCE.execInstanceCommand(editor_id, 'selectall'); 
+				return true; 
+
+		} 
+
+		// Pass to next handler in chain 
+		return false; 
+	},
+
+	// Private plugin internal methods
+
+	_handlePasteEvent : function(e) {
+		switch (e.type) {
+			case "paste":
+				var html = TinyMCE_PastePlugin._clipboardHTML();
+				var r, inst = tinyMCE.selectedInstance;
+
+				// Removes italic, strong etc, the if was needed due to bug #1437114
+				if (inst && (r = inst.getRng()) && r.text.length > 0)
+					tinyMCE.execCommand('delete');
+
+				if (html && html.length > 0)
+					tinyMCE.execCommand('mcePasteWord', false, html);
+
+				tinyMCE.cancelEvent(e);
+				return false;
+		}
+
+		return true;
+	},
+
+	_insertText : function(content, bLinebreaks) { 
+		if (content && content.length > 0) {
+			if (bLinebreaks) { 
+				// Special paragraph treatment 
+				if (tinyMCE.getParam("paste_create_paragraphs", true)) {
+					var rl = tinyMCE.getParam("paste_replace_list", '\u2122,<sup>TM</sup>,\u2026,...,\u201c|\u201d,",\u2019,\',\u2013|\u2014|\u2015|\u2212,-').split(',');
+					for (var i=0; i<rl.length; i+=2)
+						content = content.replace(new RegExp(rl[i], 'gi'), rl[i+1]);
+
+					content = tinyMCE.regexpReplace(content, "\r\n\r\n", "</p><p>", "gi"); 
+					content = tinyMCE.regexpReplace(content, "\r\r", "</p><p>", "gi"); 
+					content = tinyMCE.regexpReplace(content, "\n\n", "</p><p>", "gi"); 
+
+					// Has paragraphs 
+					if ((pos = content.indexOf('</p><p>')) != -1) { 
+						tinyMCE.execCommand("Delete"); 
+
+						var node = tinyMCE.selectedInstance.getFocusElement(); 
+
+						// Get list of elements to break 
+						var breakElms = new Array(); 
+
+						do { 
+							if (node.nodeType == 1) { 
+								// Don't break tables and break at body 
+								if (node.nodeName == "TD" || node.nodeName == "BODY") 
+									break; 
+		
+								breakElms[breakElms.length] = node; 
+							} 
+						} while(node = node.parentNode); 
+
+						var before = "", after = "</p>"; 
+						before += content.substring(0, pos); 
+
+						for (var i=0; i<breakElms.length; i++) { 
+							before += "</" + breakElms[i].nodeName + ">"; 
+							after += "<" + breakElms[(breakElms.length-1)-i].nodeName + ">"; 
+						} 
+
+						before += "<p>"; 
+						content = before + content.substring(pos+7) + after; 
+					} 
+				} 
+
+				if (tinyMCE.getParam("paste_create_linebreaks", true)) {
+					content = tinyMCE.regexpReplace(content, "\r\n", "<br />", "gi"); 
+					content = tinyMCE.regexpReplace(content, "\r", "<br />", "gi"); 
+					content = tinyMCE.regexpReplace(content, "\n", "<br />", "gi"); 
+				}
+			} 
+		
+			tinyMCE.execCommand("mceInsertRawHTML", false, content); 
+		}
+	},
+
+	_insertWordContent : function(content) { 
+		if (content && content.length > 0) {
+			// Cleanup Word content
+			var bull = String.fromCharCode(8226);
+			var middot = String.fromCharCode(183);
+			var cb;
+
+			if ((cb = tinyMCE.getParam("paste_insert_word_content_callback", "")) != "")
+				content = eval(cb + "('before', content)");
+
+			var rl = tinyMCE.getParam("paste_replace_list", '\u2122,<sup>TM</sup>,\u2026,...,\u201c|\u201d,",\u2019,\',\u2013|\u2014|\u2015|\u2212,-').split(',');
+			for (var i=0; i<rl.length; i+=2)
+				content = content.replace(new RegExp(rl[i], 'gi'), rl[i+1]);
+
+			if (tinyMCE.getParam("paste_convert_headers_to_strong", false)) {
+				content = content.replace(new RegExp('<p class=MsoHeading.*?>(.*?)<\/p>', 'gi'), '<p><b>$1</b></p>');
+			}
+
+			content = content.replace(new RegExp('tab-stops: list [0-9]+.0pt">', 'gi'), '">' + "--list--");
+			content = content.replace(new RegExp(bull + "(.*?)<BR>", "gi"), "<p>" + middot + "$1</p>");
+			content = content.replace(new RegExp('<SPAN style="mso-list: Ignore">', 'gi'), "<span>" + bull); // Covert to bull list
+			content = content.replace(/<o:p><\/o:p>/gi, "");
+			content = content.replace(new RegExp('<br style="page-break-before: always;.*>', 'gi'), '-- page break --'); // Replace pagebreaks
+			content = content.replace(new RegExp('<(!--)([^>]*)(--)>', 'g'), "");  // Word comments
+
+			if (tinyMCE.getParam("paste_remove_spans", true))
+				content = content.replace(/<\/?span[^>]*>/gi, "");
+
+			if (tinyMCE.getParam("paste_remove_styles", true))
+				content = content.replace(new RegExp('<(\\w[^>]*) style="([^"]*)"([^>]*)', 'gi'), "<$1$3");
+
+			content = content.replace(/<\/?font[^>]*>/gi, "");
+
+			// Strips class attributes.
+			switch (tinyMCE.getParam("paste_strip_class_attributes", "all")) {
+				case "all":
+					content = content.replace(/<(\w[^>]*) class=([^ |>]*)([^>]*)/gi, "<$1$3");
+					break;
+
+				case "mso":
+					content = content.replace(new RegExp('<(\\w[^>]*) class="?mso([^ |>]*)([^>]*)', 'gi'), "<$1$3");
+					break;
+			}
+
+			content = content.replace(new RegExp('href="?' + TinyMCE_PastePlugin._reEscape("" + document.location) + '', 'gi'), 'href="' + tinyMCE.settings['document_base_url']);
+			content = content.replace(/<(\w[^>]*) lang=([^ |>]*)([^>]*)/gi, "<$1$3");
+			content = content.replace(/<\\?\?xml[^>]*>/gi, "");
+			content = content.replace(/<\/?\w+:[^>]*>/gi, "");
+			content = content.replace(/-- page break --\s*<p>&nbsp;<\/p>/gi, ""); // Remove pagebreaks
+			content = content.replace(/-- page break --/gi, ""); // Remove pagebreaks
+
+	//		content = content.replace(/\/?&nbsp;*/gi, ""); &nbsp;
+	//		content = content.replace(/<p>&nbsp;<\/p>/gi, '');
+
+			if (!tinyMCE.settings['force_p_newlines']) {
+				content = content.replace('', '' ,'gi');
+				content = content.replace('</p>', '<br /><br />' ,'gi');
+			}
+
+			if (!tinyMCE.isMSIE && !tinyMCE.settings['force_p_newlines']) {
+				content = content.replace(/<\/?p[^>]*>/gi, "");
+			}
+
+			content = content.replace(/<\/?div[^>]*>/gi, "");
+
+			// Convert all middlot lists to UL lists
+			if (tinyMCE.getParam("paste_convert_middot_lists", true)) {
+				var div = document.createElement("div");
+				div.innerHTML = content;
+
+				// Convert all middot paragraphs to li elements
+				var className = tinyMCE.getParam("paste_unindented_list_class", "unIndentedList");
+
+				while (TinyMCE_PastePlugin._convertMiddots(div, "--list--")) ; // bull
+				while (TinyMCE_PastePlugin._convertMiddots(div, middot, className)) ; // Middot
+				while (TinyMCE_PastePlugin._convertMiddots(div, bull)) ; // bull
+
+				content = div.innerHTML;
+			}
+
+			// Replace all headers with strong and fix some other issues
+			if (tinyMCE.getParam("paste_convert_headers_to_strong", false)) {
+				content = content.replace(/<h[1-6]>&nbsp;<\/h[1-6]>/gi, '<p>&nbsp;&nbsp;</p>');
+				content = content.replace(/<h[1-6]>/gi, '<p><b>');
+				content = content.replace(/<\/h[1-6]>/gi, '</b></p>');
+				content = content.replace(/<b>&nbsp;<\/b>/gi, '<b>&nbsp;&nbsp;</b>');
+				content = content.replace(/^(&nbsp;)*/gi, '');
+			}
+
+			content = content.replace(/--list--/gi, ""); // Remove --list--
+
+			if ((cb = tinyMCE.getParam("paste_insert_word_content_callback", "")) != "")
+				content = eval(cb + "('after', content)");
+
+			// Insert cleaned content
+			tinyMCE.execCommand("mceInsertContent", false, content);
+
+			if (tinyMCE.getParam('paste_force_cleanup_wordpaste', true))
+				window.setTimeout('tinyMCE.execCommand("mceCleanup");', 1); // Do normal cleanup detached from this thread
+		}
+	},
+
+	_reEscape : function(s) {
+		var l = "?.\\*[](){}+^$:";
+		var o = "";
+
+		for (var i=0; i<s.length; i++) {
+			var c = s.charAt(i);
+
+			if (l.indexOf(c) != -1)
+				o += '\\' + c;
+			else
+				o += c;
+		}
+
+		return o;
+	},
+
+	_convertMiddots : function(div, search, class_name) {
+		var mdot = String.fromCharCode(183);
+		var bull = String.fromCharCode(8226);
+
+		var nodes = div.getElementsByTagName("p");
+		var prevul;
+		for (var i=0; i<nodes.length; i++) {
+			var p = nodes[i];
+
+			// Is middot
+			if (p.innerHTML.indexOf(search) == 0) {
+				var ul = document.createElement("ul");
+
+				if (class_name)
+					ul.className = class_name;
+
+				// Add the first one
+				var li = document.createElement("li");
+				li.innerHTML = p.innerHTML.replace(new RegExp('' + mdot + '|' + bull + '|--list--|&nbsp;', "gi"), '');
+				ul.appendChild(li);
+
+				// Add the rest
+				var np = p.nextSibling;
+				while (np) {
+			        // If the node is whitespace, then
+			        // ignore it and continue on.
+			        if (np.nodeType == 3 && new RegExp('^\\s$', 'm').test(np.nodeValue)) {
+			                np = np.nextSibling;
+			                continue;
+			        }
+
+					if (search == mdot) {
+					        if (np.nodeType == 1 && new RegExp('^o(\\s+|&nbsp;)').test(np.innerHTML)) {
+					                // Second level of nesting
+					                if (!prevul) {
+					                        prevul = ul;
+					                        ul = document.createElement("ul");
+					                        prevul.appendChild(ul);
+					                }
+					                np.innerHTML = np.innerHTML.replace(/^o/, '');
+					        } else {
+					                // Pop the stack if we're going back up to the first level
+					                if (prevul) {
+					                        ul = prevul;
+					                        prevul = null;
+					                }
+					                // Not element or middot paragraph
+					                if (np.nodeType != 1 || np.innerHTML.indexOf(search) != 0)
+					                        break;
+					        }
+					} else {
+					        // Not element or middot paragraph
+					        if (np.nodeType != 1 || np.innerHTML.indexOf(search) != 0)
+					                break;
+				        }
+
+					var cp = np.nextSibling;
+					var li = document.createElement("li");
+					li.innerHTML = np.innerHTML.replace(new RegExp('' + mdot + '|' + bull + '|--list--|&nbsp;', "gi"), '');
+					np.parentNode.removeChild(np);
+					ul.appendChild(li);
+					np = cp;
+				}
+
+				p.parentNode.replaceChild(ul, p);
+
+				return true;
+			}
+		}
+
+		return false;
+	},
+
+	_clipboardHTML : function() {
+		var div = document.getElementById('_TinyMCE_clipboardHTML');
+
+		if (!div) {
+			var div = document.createElement('DIV');
+			div.id = '_TinyMCE_clipboardHTML';
+
+			with (div.style) {
+				visibility = 'hidden';
+				overflow = 'hidden';
+				position = 'absolute';
+				width = 1;
+				height = 1;
+			}
+
+			document.body.appendChild(div);
+		}
+
+		div.innerHTML = '';
+		var rng = document.body.createTextRange();
+		rng.moveToElementText(div);
+		rng.execCommand('Paste');
+		var html = div.innerHTML;
+		div.innerHTML = '';
+		return html;
+	}
+};
+
+tinyMCE.addPlugin("paste", TinyMCE_PastePlugin);

Added: labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/plugins/paste/images/pastetext.gif
===================================================================
(Binary files differ)


Property changes on: labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/plugins/paste/images/pastetext.gif
___________________________________________________________________
Name: svn:mime-type
   + application/octet-stream

Added: labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/plugins/paste/images/pasteword.gif
===================================================================
(Binary files differ)


Property changes on: labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/plugins/paste/images/pasteword.gif
___________________________________________________________________
Name: svn:mime-type
   + application/octet-stream

Added: labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/plugins/paste/images/selectall.gif
===================================================================
(Binary files differ)


Property changes on: labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/plugins/paste/images/selectall.gif
___________________________________________________________________
Name: svn:mime-type
   + application/octet-stream

Added: labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/plugins/paste/jscripts/pastetext.js
===================================================================
--- labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/plugins/paste/jscripts/pastetext.js	2007-01-11 22:09:16 UTC (rev 8831)
+++ labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/plugins/paste/jscripts/pastetext.js	2007-01-11 22:10:56 UTC (rev 8832)
@@ -0,0 +1,38 @@
+function saveContent() {
+	if (document.forms[0].htmlSource.value == '') {
+		tinyMCEPopup.close();
+		return false;
+	}
+
+	tinyMCEPopup.execCommand('mcePasteText', false, {
+		html : document.forms[0].htmlSource.value,
+		linebreaks : document.forms[0].linebreaks.checked
+	});
+
+	tinyMCEPopup.close();
+}
+
+function onLoadInit() {
+	tinyMCEPopup.resizeToInnerSize();
+
+	// Remove Gecko spellchecking
+	if (tinyMCE.isGecko)
+		document.body.spellcheck = tinyMCE.getParam("gecko_spellcheck");
+
+	resizeInputs();
+}
+
+var wHeight=0, wWidth=0, owHeight=0, owWidth=0;
+
+function resizeInputs() {
+	if (!tinyMCE.isMSIE) {
+		wHeight = self.innerHeight-80;
+		wWidth = self.innerWidth-17;
+	} else {
+		wHeight = document.body.clientHeight-80;
+		wWidth = document.body.clientWidth-17;
+	}
+
+	document.forms[0].htmlSource.style.height = Math.abs(wHeight) + 'px';
+	document.forms[0].htmlSource.style.width  = Math.abs(wWidth) + 'px';
+}

Added: labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/plugins/paste/jscripts/pasteword.js
===================================================================
--- labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/plugins/paste/jscripts/pasteword.js	2007-01-11 22:09:16 UTC (rev 8831)
+++ labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/plugins/paste/jscripts/pasteword.js	2007-01-11 22:10:56 UTC (rev 8832)
@@ -0,0 +1,52 @@
+function saveContent() {
+	var html = document.getElementById("frmData").contentWindow.document.body.innerHTML;
+
+	if (html == ''){
+		tinyMCEPopup.close();
+		return false;
+	}
+
+	tinyMCEPopup.execCommand('mcePasteWord', false, html);
+	tinyMCEPopup.close();
+}
+
+function onLoadInit() {
+	tinyMCEPopup.resizeToInnerSize();
+
+	// Fix for endless reloading in FF
+	window.setTimeout('createIFrame();', 10);
+}
+
+function createIFrame() {
+	document.getElementById('iframecontainer').innerHTML = '<iframe id="frmData" name="frmData" class="sourceIframe" src="blank.htm" height="280" width="400" frameborder="0" style="background-color:#FFFFFF; width:100%;" dir="ltr" wrap="soft"></iframe>';
+}
+
+var wHeight=0, wWidth=0, owHeight=0, owWidth=0;
+
+function initIframe(doc) {
+	var dir = tinyMCE.selectedInstance.settings['directionality'];
+
+	doc.body.dir = dir;
+
+	// Remove Gecko spellchecking
+	if (tinyMCE.isGecko)
+		doc.body.spellcheck = tinyMCE.getParam("gecko_spellcheck");
+
+	resizeInputs();
+}
+
+function resizeInputs() {
+	if (!tinyMCE.isMSIE) {
+		wHeight = self.innerHeight - 80;
+		wWidth = self.innerWidth - 18;
+	} else {
+		wHeight = document.body.clientHeight - 80;
+		wWidth = document.body.clientWidth - 18;
+	}
+
+	var elm = document.getElementById('frmData');
+	if (elm) {
+		elm.style.height = Math.abs(wHeight) + 'px';
+		elm.style.width  = Math.abs(wWidth) + 'px';
+	}
+}

Added: labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/plugins/paste/langs/en.js
===================================================================
--- labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/plugins/paste/langs/en.js	2007-01-11 22:09:16 UTC (rev 8831)
+++ labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/plugins/paste/langs/en.js	2007-01-11 22:10:56 UTC (rev 8832)
@@ -0,0 +1,10 @@
+// UK lang variables
+
+tinyMCE.addToLang('',{
+paste_text_desc : 'Paste as Plain Text',
+paste_text_title : 'Use CTRL+V on your keyboard to paste the text into the window.',
+paste_text_linebreaks : 'Keep linebreaks',
+paste_word_desc : 'Paste from Word',
+paste_word_title : 'Use CTRL+V on your keyboard to paste the text into the window.',
+selectall_desc : 'Select All'
+});

Added: labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/plugins/paste/pastetext.htm
===================================================================
--- labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/plugins/paste/pastetext.htm	2007-01-11 22:09:16 UTC (rev 8831)
+++ labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/plugins/paste/pastetext.htm	2007-01-11 22:10:56 UTC (rev 8832)
@@ -0,0 +1,34 @@
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+	<title>{$lang_paste_text_desc}</title>
+	<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
+	<script language="javascript" type="text/javascript" src="../../tiny_mce_popup.js"></script>
+	<script language="javascript" type="text/javascript" src="jscripts/pastetext.js"></script>
+	<base target="_self" />
+</head>
+<body onload="tinyMCEPopup.executeOnLoad('onLoadInit();');" onresize="resizeInputs();" style="display: none">
+<form name="source" onsubmit="saveContent();">
+	<div style="float: left" class="title">{$lang_paste_text_desc}</div>
+
+	<div style="float: right">
+		<input type="checkbox" name="linebreaks" id="linebreaks" class="wordWrapCode" checked="checked" /><label for="linebreaks">{$lang_paste_text_linebreaks}</label>
+	</div>
+
+	<br style="clear: both" />
+
+	<div>{$lang_paste_text_title}</div>
+
+	<textarea name="htmlSource" id="htmlSource" rows="15" cols="100" style="width: 100%; height: 100%; font-family: 'Courier New',Courier,mono; font-size: 12px;" dir="ltr" wrap="soft"></textarea>
+
+	<div class="mceActionPanel">
+		<div style="float: left">
+			<input type="button" name="insert" value="{$lang_insert}" onclick="saveContent();" id="insert" />
+		</div>
+
+		<div style="float: right">
+			<input type="button" name="cancel" value="{$lang_cancel}" onclick="tinyMCEPopup.close();" id="cancel" />
+		</div>
+	</div>
+</form>
+</body> 
+</html>
\ No newline at end of file

Added: labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/plugins/paste/pasteword.htm
===================================================================
--- labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/plugins/paste/pasteword.htm	2007-01-11 22:09:16 UTC (rev 8831)
+++ labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/plugins/paste/pasteword.htm	2007-01-11 22:10:56 UTC (rev 8832)
@@ -0,0 +1,29 @@
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+	<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
+	<title>{$lang_paste_word_desc}</title>
+	<script language="javascript" type="text/javascript" src="../../tiny_mce_popup.js"></script>
+	<script language="javascript" type="text/javascript" src="jscripts/pasteword.js"></script>
+	<link href="css/pasteword.css" rel="stylesheet" type="text/css" />
+	<base target="_self" />
+</head>
+<body onload="tinyMCEPopup.executeOnLoad('onLoadInit();');" onresize="resizeInputs();" style="display: none">
+	<form name="source" onsubmit="saveContent();" action="#">
+		<div class="title">{$lang_paste_word_desc}</div>
+
+		<div>{$lang_paste_word_title}</div>
+
+		<div id="iframecontainer"></div>
+
+		<div class="mceActionPanel">
+			<div style="float: left">
+				<input type="button" id="insert" name="insert" value="{$lang_insert}" onclick="saveContent();" />
+			</div>
+
+			<div style="float: right">
+				<input type="button" id="cancel" name="cancel" value="{$lang_cancel}" onclick="tinyMCEPopup.close();" />
+			</div>
+		</div>
+	</form>
+</body>
+</html>

Added: labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/plugins/paste/readme.txt
===================================================================
--- labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/plugins/paste/readme.txt	2007-01-11 22:09:16 UTC (rev 8831)
+++ labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/plugins/paste/readme.txt	2007-01-11 22:10:56 UTC (rev 8832)
@@ -0,0 +1 @@
+Check the TinyMCE documentation for details on this plugin.

Modified: labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/plugins/preview/editor_plugin.js
===================================================================
--- labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/plugins/preview/editor_plugin.js	2007-01-11 22:09:16 UTC (rev 8831)
+++ labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/plugins/preview/editor_plugin.js	2007-01-11 22:10:56 UTC (rev 8832)
@@ -1,62 +1 @@
-/* Import theme specific language pack */
-tinyMCE.importPluginLanguagePack('preview', 'uk,se,de');
-
-/**
- * Returns the HTML contents of the preview control.
- */
-function TinyMCE_preview_getControlHTML(control_name) {
-	switch (control_name) {
-		case "preview":
-			return '<img id="{$editor_id}_preview" src="{$pluginurl}/images/preview.gif" title="{$lang_preview_desc}" width="20" height="20" class="mceButtonNormal" onmouseover="tinyMCE.switchClass(this,\'mceButtonOver\');" onmouseout="tinyMCE.restoreClass(this);" onmousedown="tinyMCE.restoreAndSwitchClass(this,\'mceButtonDown\');" onclick="tinyMCE.execInstanceCommand(\'{$editor_id}\',\'mcePreview\');" />';
-	}
-
-	return "";
-}
-
-/**
- * Executes the mcePreview command.
- */
-function TinyMCE_preview_execCommand(editor_id, element, command, user_interface, value) {
-	// Handle commands
-	switch (command) {
-		case "mcePreview":
-			var previewPage = tinyMCE.getParam("plugin_preview_pageurl", null);
-			var previewWidth = tinyMCE.getParam("plugin_preview_width", "550");
-			var previewHeight = tinyMCE.getParam("plugin_preview_height", "600");
-
-			// Use a custom preview page
-			if (previewPage) {
-				var template = new Array();
-
-				template['file'] = previewPage;
-				template['width'] = previewWidth;
-				template['height'] = previewHeight;
-
-				tinyMCE.openWindow(template, {editor_id : editor_id, resizable : "yes", scrollbars : "yes", content : tinyMCE.getContent(), content_css : tinyMCE.getParam("content_css")});
-			} else {
-				var win = window.open("", "mcePreview", "menubar=no,toolbar=no,scrollbars=yes,resizable=yes,left=20,top=20,width=" + previewWidth + ",height="  + previewHeight);
-				var html = "";
-
-				html += '<!doctype html public "-//w3c//dtd html 4.0 transitional//en">';
-				html += '<html>';
-				html += '<head>';
-				html += '<title>' + tinyMCE.getLang('lang_preview_desc') + '</title>';
-				html += '<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">';
-				html += '<link href="' + tinyMCE.getParam("content_css") + '" rel="stylesheet" type="text/css">';
-				html += '<base href="' + tinyMCE.getParam("document_base_url") + '">';
-				html += '</head>';
-				html += '<body>';
-				html += tinyMCE.getContent();
-				html += '</body>';
-				html += '</html>';
-
-				win.document.write(html);
-				win.document.close();
-			}
-
-			return true;
-	}
-
-	// Pass to next handler in chain
-	return false;
-}
+tinyMCE.importPluginLanguagePack('preview');var TinyMCE_PreviewPlugin={getInfo:function(){return{longname:'Preview',author:'Moxiecode Systems AB',authorurl:'http://tinymce.moxiecode.com',infourl:'http://tinymce.moxiecode.com/tinymce/docs/plugin_preview.html',version:tinyMCE.majorVersion+"."+tinyMCE.minorVersion}},getControlHTML:function(cn){switch(cn){case"preview":return tinyMCE.getButtonHTML(cn,'lang_preview_desc','{$pluginurl}/images/preview.gif','mcePreview')}return""},execCommand:function(editor_id,element,command,user_interface,value){switch(command){case"mcePreview":var previewPage=tinyMCE.getParam("plugin_preview_pageurl",null);var previewWidth=tinyMCE.getParam("plugin_preview_width","550");var previewHeight=tinyMCE.getParam("plugin_preview_height","600");if(previewPage){var template=new Array();template['file']=previewPage;template['width']=previewWidth;template['height']=previewHeight;tinyMCE.openWindow(template,{editor_id:editor_id,resizable:"yes",scrollbars:"yes!
 ",inline:"yes",content:tinyMCE.getContent(),content_css:tinyMCE.getParam("content_css")})}else{var win=window.open("","mcePreview","menubar=no,toolbar=no,scrollbars=yes,resizable=yes,left=20,top=20,width="+previewWidth+",height="+previewHeight);var html="",i;var c=tinyMCE.getContent();var pos=c.indexOf('<body'),pos2,css=tinyMCE.getParam("content_css").split(',');if(pos!=-1){pos=c.indexOf('>',pos);pos2=c.lastIndexOf('</body>');c=c.substring(pos+1,pos2)}html+=tinyMCE.getParam('doctype');html+='<html xmlns="http://www.w3.org/1999/xhtml">';html+='<head>';html+='<title>'+tinyMCE.getLang('lang_preview_desc')+'</title>';html+='<base href="'+tinyMCE.settings['base_href']+'" />';html+='<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />';for(i=0;i<css.length;i++)html+='<link href="'+css[i]+'" rel="stylesheet" type="text/css" />';html+='<script type="text/javascript">';html+='window.opener.TinyMCE_PreviewPlugin._setDoc(document);';html+='window.opener.TinyMCE_Previe!
 wPlugin._setWin(window);';html+='writeFlash = window.opener.TinyMCE_Pr
eviewPlugin._writeFlash;';html+='writeShockWave = window.opener.TinyMCE_PreviewPlugin._writeShockWave;';html+='writeQuickTime = window.opener.TinyMCE_PreviewPlugin._writeQuickTime;';html+='writeRealMedia = window.opener.TinyMCE_PreviewPlugin._writeRealMedia;';html+='writeWindowsMedia = window.opener.TinyMCE_PreviewPlugin._writeWindowsMedia;';html+='writeEmbed = window.opener.TinyMCE_PreviewPlugin._writeEmbed;';html+='</script>';html+='</head>';html+='<body dir="'+tinyMCE.getParam("directionality")+'" onload="window.opener.TinyMCE_PreviewPlugin._onLoad();">';html+=c;html+='</body>';html+='</html>';win.document.write(html);win.document.close()}return true}return false},_setDoc:function(d){TinyMCE_PreviewPlugin._doc=d;d._embeds=new Array()},_setWin:function(d){TinyMCE_PreviewPlugin._win=d},_onLoad:function(){var nl,i,el=new Array(),d=TinyMCE_PreviewPlugin._doc,sv,ne;nl=d.getElementsByTagName("script");for(i=0;i<nl.length;i++){sv=tinyMCE.isMSIE?nl[i].innerHTML:nl[i].firstChild.n!
 odeValue;if(new RegExp('write(Flash|ShockWave|WindowsMedia|QuickTime|RealMedia)\\(.*','g').test(sv))el[el.length]=nl[i]}for(i=0;i<el.length;i++){ne=d.createElement("div");ne.innerHTML=d._embeds[i];el[i].parentNode.insertBefore(ne.firstChild,el[i])}},_writeFlash:function(p){p.src=tinyMCE.convertRelativeToAbsoluteURL(tinyMCE.settings['base_href'],p.src);TinyMCE_PreviewPlugin._writeEmbed('D27CDB6E-AE6D-11cf-96B8-444553540000','http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,40,0','application/x-shockwave-flash',p)},_writeShockWave:function(p){p.src=tinyMCE.convertRelativeToAbsoluteURL(tinyMCE.settings['base_href'],p.src);TinyMCE_PreviewPlugin._writeEmbed('166B1BCA-3F9C-11CF-8075-444553540000','http://download.macromedia.com/pub/shockwave/cabs/director/sw.cab#version=8,5,1,0','application/x-director',p)},_writeQuickTime:function(p){p.src=tinyMCE.convertRelativeToAbsoluteURL(tinyMCE.settings['base_href'],p.src);TinyMCE_PreviewPlugin._writeEmbed('0!
 2BF25D5-8C17-4B23-BC80-D3488ABDDC6B','http://www.apple.com/qtactivex/q
tplugin.cab#version=6,0,2,0','video/quicktime',p)},_writeRealMedia:function(p){p.src=tinyMCE.convertRelativeToAbsoluteURL(tinyMCE.settings['base_href'],p.src);TinyMCE_PreviewPlugin._writeEmbed('CFCDAA03-8BE4-11cf-B84B-0020AFBBCCFA','http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,40,0','audio/x-pn-realaudio-plugin',p)},_writeWindowsMedia:function(p){p.src=tinyMCE.convertRelativeToAbsoluteURL(tinyMCE.settings['base_href'],p.src);p.url=p.src;TinyMCE_PreviewPlugin._writeEmbed('6BF52A52-394A-11D3-B153-00C04F79FAA6','http://activex.microsoft.com/activex/controls/mplayer/en/nsmp2inf.cab#Version=5,1,52,701','application/x-mplayer2',p)},_writeEmbed:function(cls,cb,mt,p){var h='',n,d=TinyMCE_PreviewPlugin._doc,ne,c;h+='<object classid="clsid:'+cls+'" codebase="'+cb+'"';h+=typeof(p.id)!="undefined"?'id="'+p.id+'"':'';h+=typeof(p.name)!="undefined"?'name="'+p.name+'"':'';h+=typeof(p.width)!="undefined"?'width="'+p.width+'"':'';h+=typeof(p.height)!="undef!
 ined"?'height="'+p.height+'"':'';h+=typeof(p.align)!="undefined"?'align="'+p.align+'"':'';h+='>';for(n in p)h+='<param name="'+n+'" value="'+p[n]+'">';h+='<embed type="'+mt+'"';for(n in p)h+=n+'="'+p[n]+'" ';h+='></embed></object>';d._embeds[d._embeds.length]=h}};tinyMCE.addPlugin("preview",TinyMCE_PreviewPlugin);
\ No newline at end of file

Added: labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/plugins/preview/editor_plugin_src.js
===================================================================
--- labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/plugins/preview/editor_plugin_src.js	2007-01-11 22:09:16 UTC (rev 8831)
+++ labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/plugins/preview/editor_plugin_src.js	2007-01-11 22:10:56 UTC (rev 8832)
@@ -0,0 +1,205 @@
+/**
+ * $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('preview');
+
+var TinyMCE_PreviewPlugin = {
+	getInfo : function() {
+		return {
+			longname : 'Preview',
+			author : 'Moxiecode Systems AB',
+			authorurl : 'http://tinymce.moxiecode.com',
+			infourl : 'http://tinymce.moxiecode.com/tinymce/docs/plugin_preview.html',
+			version : tinyMCE.majorVersion + "." + tinyMCE.minorVersion
+		};
+	},
+
+	/**
+	 * Returns the HTML contents of the preview control.
+	 */
+	getControlHTML : function(cn) {
+		switch (cn) {
+			case "preview":
+				return tinyMCE.getButtonHTML(cn, 'lang_preview_desc', '{$pluginurl}/images/preview.gif', 'mcePreview');
+		}
+
+		return "";
+	},
+
+	/**
+	 * Executes the mcePreview command.
+	 */
+	execCommand : function(editor_id, element, command, user_interface, value) {
+		// Handle commands
+		switch (command) {
+			case "mcePreview":
+				var previewPage = tinyMCE.getParam("plugin_preview_pageurl", null);
+				var previewWidth = tinyMCE.getParam("plugin_preview_width", "550");
+				var previewHeight = tinyMCE.getParam("plugin_preview_height", "600");
+
+				// Use a custom preview page
+				if (previewPage) {
+					var template = new Array();
+
+					template['file'] = previewPage;
+					template['width'] = previewWidth;
+					template['height'] = previewHeight;
+
+					tinyMCE.openWindow(template, {editor_id : editor_id, resizable : "yes", scrollbars : "yes", inline : "yes", content : tinyMCE.getContent(), content_css : tinyMCE.getParam("content_css")});
+				} else {
+					var win = window.open("", "mcePreview", "menubar=no,toolbar=no,scrollbars=yes,resizable=yes,left=20,top=20,width=" + previewWidth + ",height="  + previewHeight);
+					var html = "", i;
+					var c = tinyMCE.getContent();
+					var pos = c.indexOf('<body'), pos2, css = tinyMCE.getParam("content_css").split(',');
+
+					if (pos != -1) {
+						pos = c.indexOf('>', pos);
+						pos2 = c.lastIndexOf('</body>');
+						c = c.substring(pos + 1, pos2);
+					}
+
+					html += tinyMCE.getParam('doctype');
+					html += '<html xmlns="http://www.w3.org/1999/xhtml">';
+					html += '<head>';
+					html += '<title>' + tinyMCE.getLang('lang_preview_desc') + '</title>';
+					html += '<base href="' + tinyMCE.settings['base_href'] + '" />';
+					html += '<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />';
+
+					for (i=0; i<css.length; i++)
+						html += '<link href="' + css[i] + '" rel="stylesheet" type="text/css" />';
+
+					html += '<script type="text/javascript">';
+					html += 'window.opener.TinyMCE_PreviewPlugin._setDoc(document);';
+					html += 'window.opener.TinyMCE_PreviewPlugin._setWin(window);';
+					html += 'writeFlash = window.opener.TinyMCE_PreviewPlugin._writeFlash;';
+					html += 'writeShockWave = window.opener.TinyMCE_PreviewPlugin._writeShockWave;';
+					html += 'writeQuickTime = window.opener.TinyMCE_PreviewPlugin._writeQuickTime;';
+					html += 'writeRealMedia = window.opener.TinyMCE_PreviewPlugin._writeRealMedia;';
+					html += 'writeWindowsMedia = window.opener.TinyMCE_PreviewPlugin._writeWindowsMedia;';
+					html += 'writeEmbed = window.opener.TinyMCE_PreviewPlugin._writeEmbed;';
+					html += '</script>';
+					html += '</head>';
+					html += '<body dir="' + tinyMCE.getParam("directionality") + '" onload="window.opener.TinyMCE_PreviewPlugin._onLoad();">';
+					html += c;
+					html += '</body>';
+					html += '</html>';
+
+					win.document.write(html);
+					win.document.close();
+				}
+
+				return true;
+		}
+
+		return false;
+	},
+
+	_setDoc : function(d) {
+		TinyMCE_PreviewPlugin._doc = d;
+		d._embeds = new Array();
+	},
+
+	_setWin : function(d) {
+		TinyMCE_PreviewPlugin._win = d;
+	},
+
+	_onLoad : function() {
+		var nl, i, el = new Array(), d = TinyMCE_PreviewPlugin._doc, sv, ne;
+
+		nl = d.getElementsByTagName("script");
+		for (i=0; i<nl.length; i++) {
+			sv = tinyMCE.isMSIE ? nl[i].innerHTML : nl[i].firstChild.nodeValue;
+
+			if (new RegExp('write(Flash|ShockWave|WindowsMedia|QuickTime|RealMedia)\\(.*', 'g').test(sv))
+				el[el.length] = nl[i];
+		}
+
+		for (i=0; i<el.length; i++) {
+			ne = d.createElement("div");
+			ne.innerHTML = d._embeds[i];
+			el[i].parentNode.insertBefore(ne.firstChild, el[i]);
+		}
+	},
+
+	_writeFlash : function(p) {
+		p.src = tinyMCE.convertRelativeToAbsoluteURL(tinyMCE.settings['base_href'], p.src);
+		TinyMCE_PreviewPlugin._writeEmbed(
+			'D27CDB6E-AE6D-11cf-96B8-444553540000',
+			'http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,40,0',
+			'application/x-shockwave-flash',
+			p
+		);
+	},
+
+	_writeShockWave : function(p) {
+		p.src = tinyMCE.convertRelativeToAbsoluteURL(tinyMCE.settings['base_href'], p.src);
+		TinyMCE_PreviewPlugin._writeEmbed(
+			'166B1BCA-3F9C-11CF-8075-444553540000',
+			'http://download.macromedia.com/pub/shockwave/cabs/director/sw.cab#version=8,5,1,0',
+			'application/x-director',
+			p
+		);
+	},
+
+	_writeQuickTime : function(p) {
+		p.src = tinyMCE.convertRelativeToAbsoluteURL(tinyMCE.settings['base_href'], p.src);
+		TinyMCE_PreviewPlugin._writeEmbed(
+			'02BF25D5-8C17-4B23-BC80-D3488ABDDC6B',
+			'http://www.apple.com/qtactivex/qtplugin.cab#version=6,0,2,0',
+			'video/quicktime',
+			p
+		);
+	},
+
+	_writeRealMedia : function(p) {
+		p.src = tinyMCE.convertRelativeToAbsoluteURL(tinyMCE.settings['base_href'], p.src);
+		TinyMCE_PreviewPlugin._writeEmbed(
+			'CFCDAA03-8BE4-11cf-B84B-0020AFBBCCFA',
+			'http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,40,0',
+			'audio/x-pn-realaudio-plugin',
+			p
+		);
+	},
+
+	_writeWindowsMedia : function(p) {
+		p.src = tinyMCE.convertRelativeToAbsoluteURL(tinyMCE.settings['base_href'], p.src);
+		p.url = p.src;
+		TinyMCE_PreviewPlugin._writeEmbed(
+			'6BF52A52-394A-11D3-B153-00C04F79FAA6',
+			'http://activex.microsoft.com/activex/controls/mplayer/en/nsmp2inf.cab#Version=5,1,52,701',
+			'application/x-mplayer2',
+			p
+		);
+	},
+
+	_writeEmbed : function(cls, cb, mt, p) {
+		var h = '', n, d = TinyMCE_PreviewPlugin._doc, ne, c;
+
+		h += '<object classid="clsid:' + cls + '" codebase="' + cb + '"';
+		h += typeof(p.id) != "undefined" ? 'id="' + p.id + '"' : '';
+		h += typeof(p.name) != "undefined" ? 'name="' + p.name + '"' : '';
+		h += typeof(p.width) != "undefined" ? 'width="' + p.width + '"' : '';
+		h += typeof(p.height) != "undefined" ? 'height="' + p.height + '"' : '';
+		h += typeof(p.align) != "undefined" ? 'align="' + p.align + '"' : '';
+		h += '>';
+
+		for (n in p)
+			h += '<param name="' + n + '" value="' + p[n] + '">';
+
+		h += '<embed type="' + mt + '"';
+
+		for (n in p)
+			h += n + '="' + p[n] + '" ';
+
+		h += '></embed></object>';
+
+		d._embeds[d._embeds.length] = h;
+	}
+};
+
+tinyMCE.addPlugin("preview", TinyMCE_PreviewPlugin);

Modified: labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/plugins/preview/example.html
===================================================================
--- labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/plugins/preview/example.html	2007-01-11 22:09:16 UTC (rev 8831)
+++ labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/plugins/preview/example.html	2007-01-11 22:10:56 UTC (rev 8832)
@@ -1,9 +1,9 @@
-<!doctype html public "-//w3c//dtd html 4.0 transitional//en">
-<html>
+<html xmlns="http://www.w3.org/1999/xhtml">
 <head>
 <script language="javascript" src="../../tiny_mce_popup.js"></script>
+<script type="text/javascript" src="jscripts/embed.js"></script>
 <title>Example of a custom preview page</title>
-<link href="{$content_css}" rel="stylesheet" type="text/css">
+<link href="{$content_css}" rel="stylesheet" type="text/css" />
 </head>
 <body>
 

Modified: labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/plugins/preview/images/preview.gif
===================================================================
(Binary files differ)

Added: labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/plugins/preview/jscripts/embed.js
===================================================================
--- labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/plugins/preview/jscripts/embed.js	2007-01-11 22:09:16 UTC (rev 8831)
+++ labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/plugins/preview/jscripts/embed.js	2007-01-11 22:10:56 UTC (rev 8832)
@@ -0,0 +1,73 @@
+/**
+ * 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);
+}

Added: labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/plugins/preview/langs/en.js
===================================================================
--- labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/plugins/preview/langs/en.js	2007-01-11 22:09:16 UTC (rev 8831)
+++ labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/plugins/preview/langs/en.js	2007-01-11 22:10:56 UTC (rev 8832)
@@ -0,0 +1,5 @@
+// UK lang variables
+
+tinyMCE.addToLang('',{
+preview_desc : 'Preview'
+});

Modified: labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/plugins/preview/readme.txt
===================================================================
--- labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/plugins/preview/readme.txt	2007-01-11 22:09:16 UTC (rev 8831)
+++ labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/plugins/preview/readme.txt	2007-01-11 22:10:56 UTC (rev 8832)
@@ -1,23 +1 @@
- Preview plugin for TinyMCE
------------------------------------
-
-Installation instructions:
-  * Copy the preview directory to the plugins directory of TinyMCE (/jscripts/tiny_mce/plugins).
-  * Add plugin to TinyMCE plugin option list example: plugins : "preview".
-  * Add the preview button name to button list, example: theme_advanced_buttons3_add : "preview".
-
-Initialization example:
-  tinyMCE.init({
-    theme : "advanced",
-    mode : "textareas",
-    plugins : "preview",
-    theme_advanced_buttons3_add : "preview",
-    plugin_preview_width : "500",
-    plugin_preview_height : "600"
-  });
-
-Configuration:
-  plugin_preview_width - Preview window width. Defaults to 550.
-  plugin_preview_height - Preview window height. Defaults to 600.
-  plugin_preview_pageurl - Custom preview page URL relative from theme
-                           use "../../plugins/preview/example.html" for a example.
+Check the TinyMCE documentation for details on this plugin.

Added: labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/plugins/print/editor_plugin.js
===================================================================
--- labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/plugins/print/editor_plugin.js	2007-01-11 22:09:16 UTC (rev 8831)
+++ labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/plugins/print/editor_plugin.js	2007-01-11 22:10:56 UTC (rev 8832)
@@ -0,0 +1 @@
+tinyMCE.importPluginLanguagePack('print');var TinyMCE_PrintPlugin={getInfo:function(){return{longname:'Print',author:'Moxiecode Systems AB',authorurl:'http://tinymce.moxiecode.com',infourl:'http://tinymce.moxiecode.com/tinymce/docs/plugin_print.html',version:tinyMCE.majorVersion+"."+tinyMCE.minorVersion}},getControlHTML:function(cn){switch(cn){case"print":return tinyMCE.getButtonHTML(cn,'lang_print_desc','{$pluginurl}/images/print.gif','mcePrint')}return""},execCommand:function(editor_id,element,command,user_interface,value){switch(command){case"mcePrint":tinyMCE.getInstanceById(editor_id).contentWindow.print();return true}return false}};tinyMCE.addPlugin("print",TinyMCE_PrintPlugin);
\ No newline at end of file

Added: labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/plugins/print/editor_plugin_src.js
===================================================================
--- labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/plugins/print/editor_plugin_src.js	2007-01-11 22:09:16 UTC (rev 8831)
+++ labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/plugins/print/editor_plugin_src.js	2007-01-11 22:10:56 UTC (rev 8832)
@@ -0,0 +1,47 @@
+/**
+ * $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('print');
+
+var TinyMCE_PrintPlugin = {
+	getInfo : function() {
+		return {
+			longname : 'Print',
+			author : 'Moxiecode Systems AB',
+			authorurl : 'http://tinymce.moxiecode.com',
+			infourl : 'http://tinymce.moxiecode.com/tinymce/docs/plugin_print.html',
+			version : tinyMCE.majorVersion + "." + tinyMCE.minorVersion
+		};
+	},
+
+	getControlHTML : function(cn)	{
+		switch (cn) {
+			case "print":
+				return tinyMCE.getButtonHTML(cn, 'lang_print_desc', '{$pluginurl}/images/print.gif', 'mcePrint');
+		}
+
+		return "";
+	},
+
+	/**
+	 * Executes	the	search/replace commands.
+	 */
+	execCommand : function(editor_id, element, command,	user_interface,	value) {
+		// Handle commands
+		switch (command) {
+			case "mcePrint":
+				tinyMCE.getInstanceById(editor_id).contentWindow.print();
+				return true;
+		}
+
+		// Pass to next handler in chain
+		return false;
+	}
+};
+
+tinyMCE.addPlugin("print", TinyMCE_PrintPlugin);

Added: labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/plugins/print/images/print.gif
===================================================================
(Binary files differ)


Property changes on: labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/plugins/print/images/print.gif
___________________________________________________________________
Name: svn:mime-type
   + application/octet-stream

Added: labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/plugins/print/langs/en.js
===================================================================
--- labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/plugins/print/langs/en.js	2007-01-11 22:09:16 UTC (rev 8831)
+++ labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/plugins/print/langs/en.js	2007-01-11 22:10:56 UTC (rev 8832)
@@ -0,0 +1,5 @@
+// UK lang variables
+
+tinyMCE.addToLang('',{
+print_desc : 'Print'
+});

Added: labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/plugins/print/readme.txt
===================================================================
--- labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/plugins/print/readme.txt	2007-01-11 22:09:16 UTC (rev 8831)
+++ labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/plugins/print/readme.txt	2007-01-11 22:10:56 UTC (rev 8832)
@@ -0,0 +1 @@
+Check the TinyMCE documentation for details on this plugin.

Added: labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/plugins/save/editor_plugin.js
===================================================================
--- labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/plugins/save/editor_plugin.js	2007-01-11 22:09:16 UTC (rev 8831)
+++ labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/plugins/save/editor_plugin.js	2007-01-11 22:10:56 UTC (rev 8832)
@@ -0,0 +1 @@
+tinyMCE.importPluginLanguagePack('save');var TinyMCE_SavePlugin={getInfo:function(){return{longname:'Save',author:'Moxiecode Systems AB',authorurl:'http://tinymce.moxiecode.com',infourl:'http://tinymce.moxiecode.com/tinymce/docs/plugin_save.html',version:tinyMCE.majorVersion+"."+tinyMCE.minorVersion}},initInstance:function(inst){inst.addShortcut('ctrl','s','lang_save_desc','mceSave')},getControlHTML:function(cn){switch(cn){case"save":return tinyMCE.getButtonHTML(cn,'lang_save_desc','{$pluginurl}/images/save.gif','mceSave')}return""},execCommand:function(editor_id,element,command,user_interface,value){switch(command){case"mceSave":if(tinyMCE.getParam("fullscreen_is_enabled"))return true;var inst=tinyMCE.selectedInstance;var formObj=inst.formElement.form;if(tinyMCE.getParam("save_enablewhendirty")&&!inst.isDirty())return true;if(formObj){tinyMCE.triggerSave();var os;if((os=tinyMCE.getParam("save_onsavecallback"))){if(eval(os+'(inst);')){inst.startContent=tinyMCE.trim(inst.get!
 Body().innerHTML);tinyMCE.triggerNodeChange(false,true)}return true}for(var i=0;i<formObj.elements.length;i++){var elementId=formObj.elements[i].name?formObj.elements[i].name:formObj.elements[i].id;if(elementId.indexOf('mce_editor_')==0)formObj.elements[i].disabled=true}tinyMCE.isNotDirty=true;if(formObj.onsubmit==null||formObj.onsubmit()!=false)inst.formElement.form.submit()}else alert("Error: No form element found.");return true}return false},handleNodeChange:function(editor_id,node,undo_index,undo_levels,visual_aid,any_selection){if(tinyMCE.getParam("fullscreen_is_enabled")){tinyMCE.switchClass(editor_id+'_save','mceButtonDisabled');return true}if(tinyMCE.getParam("save_enablewhendirty")){var inst=tinyMCE.getInstanceById(editor_id);if(inst.isDirty()){tinyMCE.switchClass(editor_id+'_save','mceButtonNormal');return true}tinyMCE.switchClass(editor_id+'_save','mceButtonDisabled')}return true}};tinyMCE.addPlugin("save",TinyMCE_SavePlugin);
\ No newline at end of file

Added: labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/plugins/save/editor_plugin_src.js
===================================================================
--- labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/plugins/save/editor_plugin_src.js	2007-01-11 22:09:16 UTC (rev 8831)
+++ labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/plugins/save/editor_plugin_src.js	2007-01-11 22:10:56 UTC (rev 8832)
@@ -0,0 +1,115 @@
+/**
+ * $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('save');
+
+var TinyMCE_SavePlugin = {
+	getInfo : function() {
+		return {
+			longname : 'Save',
+			author : 'Moxiecode Systems AB',
+			authorurl : 'http://tinymce.moxiecode.com',
+			infourl : 'http://tinymce.moxiecode.com/tinymce/docs/plugin_save.html',
+			version : tinyMCE.majorVersion + "." + tinyMCE.minorVersion
+		};
+	},
+
+	initInstance : function(inst) {
+		inst.addShortcut('ctrl', 's', 'lang_save_desc', 'mceSave');
+	},
+
+	/**
+	 * Returns the HTML contents of the save control.
+	 */
+	getControlHTML : function(cn) {
+		switch (cn) {
+			case "save":
+				return tinyMCE.getButtonHTML(cn, 'lang_save_desc', '{$pluginurl}/images/save.gif', 'mceSave');
+		}
+
+		return "";
+	},
+
+	/**
+	 * Executes the save command.
+	 */
+	execCommand : function(editor_id, element, command, user_interface, value) {
+		// Handle commands
+		switch (command) {
+			case "mceSave":
+				if (tinyMCE.getParam("fullscreen_is_enabled"))
+					return true;
+
+				var inst = tinyMCE.selectedInstance;
+				var formObj = inst.formElement.form;
+
+				if (tinyMCE.getParam("save_enablewhendirty") && !inst.isDirty())
+					return true;
+
+				if (formObj) {
+					tinyMCE.triggerSave();
+
+					// Use callback instead
+					var os;
+					if ((os = tinyMCE.getParam("save_onsavecallback"))) {
+						if (eval(os + '(inst);')) {
+							inst.startContent = tinyMCE.trim(inst.getBody().innerHTML);
+							/*inst.undoLevels = new Array();
+							inst.undoIndex = 0;
+							inst.typingUndoIndex = -1;
+							inst.undoRedo = true;
+							inst.undoLevels[inst.undoLevels.length] = inst.startContent;*/
+							tinyMCE.triggerNodeChange(false, true);
+						}
+
+						return true;
+					}
+
+					// Disable all UI form elements that TinyMCE created
+					for (var i=0; i<formObj.elements.length; i++) {
+						var elementId = formObj.elements[i].name ? formObj.elements[i].name : formObj.elements[i].id;
+
+						if (elementId.indexOf('mce_editor_') == 0)
+							formObj.elements[i].disabled = true;
+					}
+
+					tinyMCE.isNotDirty = true;
+
+					if (formObj.onsubmit == null || formObj.onsubmit() != false)
+						inst.formElement.form.submit();
+				} else
+					alert("Error: No form element found.");
+
+				return true;
+		}
+		// Pass to next handler in chain
+		return false;
+	},
+
+	handleNodeChange : function(editor_id, node, undo_index, undo_levels, visual_aid, any_selection) {
+		if (tinyMCE.getParam("fullscreen_is_enabled")) {
+			tinyMCE.switchClass(editor_id + '_save', 'mceButtonDisabled');
+			return true;
+		}
+
+		if (tinyMCE.getParam("save_enablewhendirty")) {
+			var inst = tinyMCE.getInstanceById(editor_id);
+
+			if (inst.isDirty()) {
+				tinyMCE.switchClass(editor_id + '_save', 'mceButtonNormal');
+				return true;
+			}
+
+			tinyMCE.switchClass(editor_id + '_save', 'mceButtonDisabled');
+		}
+
+		return true;
+	}
+};
+
+tinyMCE.addPlugin("save", TinyMCE_SavePlugin);

Added: labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/plugins/save/images/save.gif
===================================================================
(Binary files differ)


Property changes on: labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/plugins/save/images/save.gif
___________________________________________________________________
Name: svn:mime-type
   + application/octet-stream

Added: labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/plugins/save/langs/en.js
===================================================================
--- labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/plugins/save/langs/en.js	2007-01-11 22:09:16 UTC (rev 8831)
+++ labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/plugins/save/langs/en.js	2007-01-11 22:10:56 UTC (rev 8832)
@@ -0,0 +1,5 @@
+// UK lang variables
+
+tinyMCE.addToLang('',{
+save_desc : 'Save'
+});

Added: labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/plugins/save/readme.txt
===================================================================
--- labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/plugins/save/readme.txt	2007-01-11 22:09:16 UTC (rev 8831)
+++ labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/plugins/save/readme.txt	2007-01-11 22:10:56 UTC (rev 8832)
@@ -0,0 +1 @@
+Check the TinyMCE documentation for details on this plugin.

Added: labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/plugins/searchreplace/css/searchreplace.css
===================================================================
--- labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/plugins/searchreplace/css/searchreplace.css	2007-01-11 22:09:16 UTC (rev 8831)
+++ labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/plugins/searchreplace/css/searchreplace.css	2007-01-11 22:10:56 UTC (rev 8832)
@@ -0,0 +1,20 @@
+/* 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); }

Added: labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/plugins/searchreplace/editor_plugin.js
===================================================================
--- labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/plugins/searchreplace/editor_plugin.js	2007-01-11 22:09:16 UTC (rev 8831)
+++ labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/plugins/searchreplace/editor_plugin.js	2007-01-11 22:10:56 UTC (rev 8832)
@@ -0,0 +1 @@
+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(valu!
 e[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(temp
late,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("searchr!
 eplace",TinyMCE_SearchReplacePlugin);
\ No newline at end of file

Added: labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/plugins/searchreplace/editor_plugin_src.js
===================================================================
--- labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/plugins/searchreplace/editor_plugin_src.js	2007-01-11 22:09:16 UTC (rev 8831)
+++ labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/plugins/searchreplace/editor_plugin_src.js	2007-01-11 22:10:56 UTC (rev 8832)
@@ -0,0 +1,164 @@
+/**
+ * $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.
+ */
+
+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);
+		// No CTRL+R for "replace" because browsers will reload page instead of executing plugin
+	},
+
+	getControlHTML : function (cn) {
+		switch (cn) {
+			case "search" :
+				return tinyMCE.getButtonHTML(cn, 'lang_searchreplace_search_desc', '{$pluginurl}/images/search.gif','mceSearch', true);
+
+			case "replace" :
+				return tinyMCE.getButtonHTML(cn, 'lang_searchreplace_replace_desc', '{$pluginurl}/images/replace.gif', 'mceSearchReplace', true);
+		}
+
+		return "";
+	},
+
+	execCommand : function (editor_id, element, command, user_interface, value) {
+		var inst = tinyMCE.getInstanceById(editor_id), selectedText = inst.selection.getSelectedText(), rng;
+
+		function defValue(key, default_value) {
+			value[key] = typeof(value[key]) == "undefined" ? default_value : value[key];
+		}
+
+		function replaceSel(search_str, str, back) {
+			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);
\ No newline at end of file

Added: labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/plugins/searchreplace/images/replace.gif
===================================================================
(Binary files differ)


Property changes on: labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/plugins/searchreplace/images/replace.gif
___________________________________________________________________
Name: svn:mime-type
   + application/octet-stream

Added: labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/plugins/searchreplace/images/replace_all_button_bg.gif
===================================================================
(Binary files differ)


Property changes on: labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/plugins/searchreplace/images/replace_all_button_bg.gif
___________________________________________________________________
Name: svn:mime-type
   + application/octet-stream

Added: labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/plugins/searchreplace/images/replace_button_bg.gif
===================================================================
(Binary files differ)


Property changes on: labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/plugins/searchreplace/images/replace_button_bg.gif
___________________________________________________________________
Name: svn:mime-type
   + application/octet-stream

Added: labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/plugins/searchreplace/images/search.gif
===================================================================
(Binary files differ)


Property changes on: labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/plugins/searchreplace/images/search.gif
___________________________________________________________________
Name: svn:mime-type
   + application/octet-stream

Added: labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/plugins/searchreplace/jscripts/searchreplace.js
===================================================================
--- labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/plugins/searchreplace/jscripts/searchreplace.js	2007-01-11 22:09:16 UTC (rev 8831)
+++ labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/plugins/searchreplace/jscripts/searchreplace.js	2007-01-11 22:10:56 UTC (rev 8832)
@@ -0,0 +1,85 @@
+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;
+}
\ No newline at end of file

Added: labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/plugins/searchreplace/langs/en.js
===================================================================
--- labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/plugins/searchreplace/langs/en.js	2007-01-11 22:09:16 UTC (rev 8831)
+++ labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/plugins/searchreplace/langs/en.js	2007-01-11 22:10:56 UTC (rev 8832)
@@ -0,0 +1,21 @@
+// UK lang variables
+
+tinyMCE.addToLang('',{
+searchreplace_search_desc : 'Find',
+searchreplace_searchnext_desc : 'Find again',
+searchreplace_replace_desc : 'Find/Replace',
+searchreplace_notfound : 'The search has been completed. The search string could not be found.',
+searchreplace_search_title : 'Find',
+searchreplace_replace_title : 'Find/Replace',
+searchreplace_allreplaced : 'All occurrences of the search string were replaced.',
+searchreplace_findwhat : 'Find what',
+searchreplace_replacewith : 'Replace with',
+searchreplace_direction : 'Direction',
+searchreplace_up : 'Up',
+searchreplace_down : 'Down',
+searchreplace_case : 'Match case',
+searchreplace_findnext : 'Find&nbsp;next',
+searchreplace_replace : 'Replace',
+searchreplace_replaceall : 'Replace&nbsp;all',
+searchreplace_cancel : 'Cancel'
+});

Added: labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/plugins/searchreplace/readme.txt
===================================================================
--- labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/plugins/searchreplace/readme.txt	2007-01-11 22:09:16 UTC (rev 8831)
+++ labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/plugins/searchreplace/readme.txt	2007-01-11 22:10:56 UTC (rev 8832)
@@ -0,0 +1 @@
+Check the TinyMCE documentation for details on this plugin.

Added: labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/plugins/searchreplace/searchreplace.htm
===================================================================
--- labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/plugins/searchreplace/searchreplace.htm	2007-01-11 22:09:16 UTC (rev 8831)
+++ labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/plugins/searchreplace/searchreplace.htm	2007-01-11 22:10:56 UTC (rev 8832)
@@ -0,0 +1,104 @@
+<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>

Added: labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/plugins/style/css/props.css
===================================================================
--- labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/plugins/style/css/props.css	2007-01-11 22:09:16 UTC (rev 8831)
+++ labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/plugins/style/css/props.css	2007-01-11 22:10:56 UTC (rev 8832)
@@ -0,0 +1,62 @@
+#text_font {
+	width: 250px;
+}
+
+#text_size {
+	width: 70px;
+}
+
+.mceAddSelectValue {
+	background-color: #DDDDDD;
+}
+
+select, #block_text_indent, #box_width, #box_height, #box_padding_top, #box_padding_right, #box_padding_bottom, #box_padding_left {
+	width: 70px;
+}
+
+#box_margin_top, #box_margin_right, #box_margin_bottom, #box_margin_left, #positioning_width, #positioning_height, #positioning_zindex {
+	width: 70px;
+}
+
+#positioning_placement_top, #positioning_placement_right, #positioning_placement_bottom, #positioning_placement_left {
+	width: 70px;
+}
+
+#positioning_clip_top, #positioning_clip_right, #positioning_clip_bottom, #positioning_clip_left {
+	width: 70px;
+}
+
+.panel_wrapper div.current {
+	padding-top: 10px;
+	height: 230px;
+}
+
+.delim {
+	border-left: 1px solid gray;
+}
+
+.tdelim {
+	border-bottom: 1px solid gray;	
+}
+
+#block_display {
+	width: 145px;
+}
+
+#list_type {
+	width: 115px;
+}
+
+.disabled {
+	background-color: #EEEEEE;
+}
+
+#apply {
+	font-weight: bold;
+	width: 78px;
+	height: 21px;
+	border: 0;
+	background-image: url('../images/apply_button_bg.gif');
+	cursor: pointer;
+}
+

Added: labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/plugins/style/editor_plugin.js
===================================================================
--- labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/plugins/style/editor_plugin.js	2007-01-11 22:09:16 UTC (rev 8831)
+++ labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/plugins/style/editor_plugin.js	2007-01-11 22:10:56 UTC (rev 8832)
@@ -0,0 +1 @@
+tinyMCE.importPluginLanguagePack('style');var TinyMCE_StylePlugin={getInfo:function(){return{longname:'Style',author:'Moxiecode Systems AB',authorurl:'http://tinymce.moxiecode.com',infourl:'http://tinymce.moxiecode.com/tinymce/docs/plugin_style.html',version:tinyMCE.majorVersion+"."+tinyMCE.minorVersion}},getControlHTML:function(cn){switch(cn){case"styleprops":return tinyMCE.getButtonHTML(cn,'lang_style_styleinfo_desc','{$pluginurl}/images/styleprops.gif','mceStyleProps',true)}return""},execCommand:function(editor_id,element,command,user_interface,value){var e,inst;switch(command){case"mceStyleProps":TinyMCE_StylePlugin._styleProps();return true;case"mceSetElementStyle":inst=tinyMCE.getInstanceById(editor_id);e=inst.selection.getFocusElement();if(e){e.style.cssText=value;inst.repaint()}return true}return false},handleNodeChange:function(editor_id,node,undo_index,undo_levels,visual_aid,any_selection){},_styleProps:function(){var e=tinyMCE.selectedInstance.selection.getFocusE!
 lement();if(!e)return;tinyMCE.openWindow({file:'../../plugins/style/props.htm',width:480+tinyMCE.getLang('lang_style_props_delta_width',0),height:320+tinyMCE.getLang('lang_style_props_delta_height',0)},{editor_id:tinyMCE.selectedInstance.editorId,inline:"yes",style_text:e.style.cssText})}};tinyMCE.addPlugin("style",TinyMCE_StylePlugin);
\ No newline at end of file

Added: labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/plugins/style/editor_plugin_src.js
===================================================================
--- labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/plugins/style/editor_plugin_src.js	2007-01-11 22:09:16 UTC (rev 8831)
+++ labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/plugins/style/editor_plugin_src.js	2007-01-11 22:10:56 UTC (rev 8832)
@@ -0,0 +1,79 @@
+/**
+ * $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('style');
+
+var TinyMCE_StylePlugin = {
+	getInfo : function() {
+		return {
+			longname : 'Style',
+			author : 'Moxiecode Systems AB',
+			authorurl : 'http://tinymce.moxiecode.com',
+			infourl : 'http://tinymce.moxiecode.com/tinymce/docs/plugin_style.html',
+			version : tinyMCE.majorVersion + "." + tinyMCE.minorVersion
+		};
+	},
+
+	getControlHTML : function(cn) {
+		switch (cn) {
+			case "styleprops":
+				return tinyMCE.getButtonHTML(cn, 'lang_style_styleinfo_desc', '{$pluginurl}/images/styleprops.gif', 'mceStyleProps', true);
+		}
+
+		return "";
+	},
+
+	execCommand : function(editor_id, element, command, user_interface, value) {
+		var e, inst;
+
+		// Handle commands
+		switch (command) {
+			case "mceStyleProps":
+				TinyMCE_StylePlugin._styleProps();
+				return true;
+
+			case "mceSetElementStyle":
+				inst = tinyMCE.getInstanceById(editor_id);
+				e = inst.selection.getFocusElement();
+
+				if (e) {
+					e.style.cssText = value;
+					inst.repaint();
+				}
+
+				return true;
+		}
+
+		// Pass to next handler in chain
+		return false;
+	},
+
+	handleNodeChange : function(editor_id, node, undo_index, undo_levels, visual_aid, any_selection) {
+	},
+
+	// Private plugin specific methods
+
+	_styleProps : function() {
+		var e = tinyMCE.selectedInstance.selection.getFocusElement();
+
+		if (!e)
+			return;
+
+		tinyMCE.openWindow({
+			file : '../../plugins/style/props.htm',
+			width : 480 + tinyMCE.getLang('lang_style_props_delta_width', 0),
+			height : 320 + tinyMCE.getLang('lang_style_props_delta_height', 0)
+		}, {
+			editor_id : tinyMCE.selectedInstance.editorId,
+			inline : "yes",
+			style_text : e.style.cssText
+		});
+	}
+};
+
+tinyMCE.addPlugin("style", TinyMCE_StylePlugin);

Added: labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/plugins/style/images/apply_button_bg.gif
===================================================================
(Binary files differ)


Property changes on: labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/plugins/style/images/apply_button_bg.gif
___________________________________________________________________
Name: svn:mime-type
   + application/octet-stream

Added: labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/plugins/style/images/style_info.gif
===================================================================
(Binary files differ)


Property changes on: labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/plugins/style/images/style_info.gif
___________________________________________________________________
Name: svn:mime-type
   + application/octet-stream

Added: labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/plugins/style/images/styleprops.gif
===================================================================
(Binary files differ)


Property changes on: labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/plugins/style/images/styleprops.gif
___________________________________________________________________
Name: svn:mime-type
   + application/octet-stream

Added: labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/plugins/style/jscripts/props.js
===================================================================
--- labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/plugins/style/jscripts/props.js	2007-01-11 22:09:16 UTC (rev 8831)
+++ labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/plugins/style/jscripts/props.js	2007-01-11 22:10:56 UTC (rev 8832)
@@ -0,0 +1,633 @@
+var defaultFonts = "" + 
+	"Arial, Helvetica, sans-serif=Arial, Helvetica, sans-serif;" + 
+	"Times New Roman, Times, serif=Times New Roman, Times, serif;" + 
+	"Courier New, Courier, mono=Courier New, Courier, mono;" + 
+	"Times New Roman, Times, serif=Times New Roman, Times, serif;" + 
+	"Georgia, Times New Roman, Times, serif=Georgia, Times New Roman, Times, serif;" + 
+	"Verdana, Arial, Helvetica, sans-serif=Verdana, Arial, Helvetica, sans-serif;" + 
+	"Geneva, Arial, Helvetica, sans-serif=Geneva, Arial, Helvetica, sans-serif";
+
+var defaultSizes = "9;10;12;14;16;18;24;xx-small;x-small;small;medium;large;x-large;xx-large;smaller;larger";
+var defaultMeasurement = "+pixels=px;points=pt;in;cm;mm;picas;ems;exs;%";
+var defaultSpacingMeasurement = "pixels=px;points=pt;in;cm;mm;picas;+ems;exs;%";
+var defaultIndentMeasurement = "pixels=px;+points=pt;in;cm;mm;picas;ems;exs;%";
+var defaultWeight = "normal;bold;bolder;lighter;100;200;300;400;500;600;700;800;900";
+var defaultTextStyle = "normal;italic;oblique";
+var defaultVariant = "normal;small-caps";
+var defaultLineHeight = "normal";
+var defaultAttachment = "fixed;scroll";
+var defaultRepeat = "no-repeat;repeat;repeat-x;repeat-y";
+var defaultPosH = "left;center;right";
+var defaultPosV = "top;center;bottom";
+var defaultVAlign = "baseline;sub;super;top;text-top;middle;bottom;text-bottom";
+var defaultDisplay = "inline;block;list-item;run-in;compact;marker;table;inline-table;table-row-group;table-header-group;table-footer-group;table-row;table-column-group;table-column;table-cell;table-caption;none";
+var defaultBorderStyle = "none;solid;dashed;dotted;double;groove;ridge;inset;outset";
+var defaultBorderWidth = "thin;medium;thick";
+var defaultListType = "disc;circle;square;decimal;lower-roman;upper-roman;lower-alpha;upper-alpha;none";
+
+function init() {
+	var ce = document.getElementById('container'), h;
+
+	ce.style.cssText = tinyMCEPopup.getWindowArg('style_text');
+
+	h = getBrowserHTML('background_image_browser','background_image','image','advimage');
+	document.getElementById("background_image_browser").innerHTML = h;
+
+	tinyMCEPopup.resizeToInnerSize();
+
+	document.getElementById('text_color_pickcontainer').innerHTML = getColorPickerHTML('text_color_pick','text_color');
+	document.getElementById('background_color_pickcontainer').innerHTML = getColorPickerHTML('background_color_pick','background_color');
+	document.getElementById('border_color_top_pickcontainer').innerHTML = getColorPickerHTML('border_color_top_pick','border_color_top');
+	document.getElementById('border_color_right_pickcontainer').innerHTML = getColorPickerHTML('border_color_right_pick','border_color_right');
+	document.getElementById('border_color_bottom_pickcontainer').innerHTML = getColorPickerHTML('border_color_bottom_pick','border_color_bottom');
+	document.getElementById('border_color_left_pickcontainer').innerHTML = getColorPickerHTML('border_color_left_pick','border_color_left');
+
+	fillSelect(0, 'text_font', 'style_font', defaultFonts, ';', true);
+	fillSelect(0, 'text_size', 'style_font_size', defaultSizes, ';', true);
+	fillSelect(0, 'text_size_measurement', 'style_font_size_measurement', defaultMeasurement, ';', true);
+	fillSelect(0, 'text_case', 'style_text_case', "capitalize;uppercase;lowercase", ';', true);
+	fillSelect(0, 'text_weight', 'style_font_weight', defaultWeight, ';', true);
+	fillSelect(0, 'text_style', 'style_font_style', defaultTextStyle, ';', true);
+	fillSelect(0, 'text_variant', 'style_font_variant', defaultVariant, ';', true);
+	fillSelect(0, 'text_lineheight', 'style_font_line_height', defaultLineHeight, ';', true);
+	fillSelect(0, 'text_lineheight_measurement', 'style_font_line_height_measurement', defaultMeasurement, ';', true);
+
+	fillSelect(0, 'background_attachment', 'style_background_attachment', defaultAttachment, ';', true);
+	fillSelect(0, 'background_repeat', 'style_background_repeat', defaultRepeat, ';', true);
+
+	fillSelect(0, 'background_hpos_measurement', 'style_background_hpos_measurement', defaultMeasurement, ';', true);
+	fillSelect(0, 'background_vpos_measurement', 'style_background_vpos_measurement', defaultMeasurement, ';', true);
+
+	fillSelect(0, 'background_hpos', 'style_background_hpos', defaultPosH, ';', true);
+	fillSelect(0, 'background_vpos', 'style_background_vpos', defaultPosV, ';', true);
+
+	fillSelect(0, 'block_wordspacing', 'style_wordspacing', 'normal', ';', true);
+	fillSelect(0, 'block_wordspacing_measurement', 'style_wordspacing_measurement', defaultSpacingMeasurement, ';', true);
+	fillSelect(0, 'block_letterspacing', 'style_letterspacing', 'normal', ';', true);
+	fillSelect(0, 'block_letterspacing_measurement', 'style_letterspacing_measurement', defaultSpacingMeasurement, ';', true);
+	fillSelect(0, 'block_vertical_alignment', 'style_vertical_alignment', defaultVAlign, ';', true);
+	fillSelect(0, 'block_text_align', 'style_text_align', "left;right;center;justify", ';', true);
+	fillSelect(0, 'block_whitespace', 'style_whitespace', "normal;pre;nowrap", ';', true);
+	fillSelect(0, 'block_display', 'style_display', defaultDisplay, ';', true);
+	fillSelect(0, 'block_text_indent_measurement', 'style_text_indent_measurement', defaultIndentMeasurement, ';', true);
+
+	fillSelect(0, 'box_width_measurement', 'style_box_width_measurement', defaultMeasurement, ';', true);
+	fillSelect(0, 'box_height_measurement', 'style_box_height_measurement', defaultMeasurement, ';', true);
+	fillSelect(0, 'box_float', 'style_float', 'left;right;none', ';', true);
+	fillSelect(0, 'box_clear', 'style_clear', 'left;right;both;none', ';', true);
+	fillSelect(0, 'box_padding_left_measurement', 'style_padding_left_measurement', defaultMeasurement, ';', true);
+	fillSelect(0, 'box_padding_top_measurement', 'style_padding_top_measurement', defaultMeasurement, ';', true);
+	fillSelect(0, 'box_padding_bottom_measurement', 'style_padding_bottom_measurement', defaultMeasurement, ';', true);
+	fillSelect(0, 'box_padding_right_measurement', 'style_padding_right_measurement', defaultMeasurement, ';', true);
+	fillSelect(0, 'box_margin_left_measurement', 'style_margin_left_measurement', defaultMeasurement, ';', true);
+	fillSelect(0, 'box_margin_top_measurement', 'style_margin_top_measurement', defaultMeasurement, ';', true);
+	fillSelect(0, 'box_margin_bottom_measurement', 'style_margin_bottom_measurement', defaultMeasurement, ';', true);
+	fillSelect(0, 'box_margin_right_measurement', 'style_margin_right_measurement', defaultMeasurement, ';', true);
+
+	fillSelect(0, 'border_style_top', 'style_border_style_top', defaultBorderStyle, ';', true);
+	fillSelect(0, 'border_style_right', 'style_border_style_right', defaultBorderStyle, ';', true);
+	fillSelect(0, 'border_style_bottom', 'style_border_style_bottom', defaultBorderStyle, ';', true);
+	fillSelect(0, 'border_style_left', 'style_border_style_left', defaultBorderStyle, ';', true);
+
+	fillSelect(0, 'border_width_top', 'style_border_width_top', defaultBorderWidth, ';', true);
+	fillSelect(0, 'border_width_right', 'style_border_width_right', defaultBorderWidth, ';', true);
+	fillSelect(0, 'border_width_bottom', 'style_border_width_bottom', defaultBorderWidth, ';', true);
+	fillSelect(0, 'border_width_left', 'style_border_width_left', defaultBorderWidth, ';', true);
+
+	fillSelect(0, 'border_width_top_measurement', 'style_border_width_top_measurement', defaultMeasurement, ';', true);
+	fillSelect(0, 'border_width_right_measurement', 'style_border_width_right_measurement', defaultMeasurement, ';', true);
+	fillSelect(0, 'border_width_bottom_measurement', 'style_border_width_bottom_measurement', defaultMeasurement, ';', true);
+	fillSelect(0, 'border_width_left_measurement', 'style_border_width_left_measurement', defaultMeasurement, ';', true);
+
+	fillSelect(0, 'list_type', 'style_list_type', defaultListType, ';', true);
+	fillSelect(0, 'list_position', 'style_list_position', "inside;outside", ';', true);
+
+	fillSelect(0, 'positioning_type', 'style_positioning_type', "absolute;relative;static", ';', true);
+	fillSelect(0, 'positioning_visibility', 'style_positioning_visibility', "inherit;visible;hidden", ';', true);
+
+	fillSelect(0, 'positioning_width_measurement', 'style_positioning_width_measurement', defaultMeasurement, ';', true);
+	fillSelect(0, 'positioning_height_measurement', 'style_positioning_height_measurement', defaultMeasurement, ';', true);
+	fillSelect(0, 'positioning_overflow', 'style_positioning_overflow', "visible;hidden;scroll;auto", ';', true);
+
+	fillSelect(0, 'positioning_placement_top_measurement', 'style_positioning_placement_top_measurement', defaultMeasurement, ';', true);
+	fillSelect(0, 'positioning_placement_right_measurement', 'style_positioning_placement_right_measurement', defaultMeasurement, ';', true);
+	fillSelect(0, 'positioning_placement_bottom_measurement', 'style_positioning_placement_bottom_measurement', defaultMeasurement, ';', true);
+	fillSelect(0, 'positioning_placement_left_measurement', 'style_positioning_placement_left_measurement', defaultMeasurement, ';', true);
+
+	fillSelect(0, 'positioning_clip_top_measurement', 'style_positioning_clip_top_measurement', defaultMeasurement, ';', true);
+	fillSelect(0, 'positioning_clip_right_measurement', 'style_positioning_clip_right_measurement', defaultMeasurement, ';', true);
+	fillSelect(0, 'positioning_clip_bottom_measurement', 'style_positioning_clip_bottom_measurement', defaultMeasurement, ';', true);
+	fillSelect(0, 'positioning_clip_left_measurement', 'style_positioning_clip_left_measurement', defaultMeasurement, ';', true);
+
+	TinyMCE_EditableSelects.init();
+	setupFormData();
+	showDisabledControls();
+}
+
+function setupFormData() {
+	var ce = document.getElementById('container'), f = document.forms[0], s, b, i;
+
+	// Setup text fields
+
+	selectByValue(f, 'text_font', ce.style.fontFamily, true, true);
+	selectByValue(f, 'text_size', getNum(ce.style.fontSize), true, true);
+	selectByValue(f, 'text_size_measurement', getMeasurement(ce.style.fontSize));
+	selectByValue(f, 'text_weight', ce.style.fontWeight, true, true);
+	selectByValue(f, 'text_style', ce.style.fontStyle, true, true);
+	selectByValue(f, 'text_lineheight', getNum(ce.style.lineHeight), true, true);
+	selectByValue(f, 'text_lineheight_measurement', getMeasurement(ce.style.lineHeight));
+	selectByValue(f, 'text_case', ce.style.textTransform, true, true);
+	selectByValue(f, 'text_variant', ce.style.fontVariant, true, true);
+	f.text_color.value = ce.style.color;
+	updateColor('text_color_pick', 'text_color');
+	f.text_underline.checked = inStr(ce.style.textDecoration, 'underline');
+	f.text_overline.checked = inStr(ce.style.textDecoration, 'overline');
+	f.text_linethrough.checked = inStr(ce.style.textDecoration, 'line-through');
+	f.text_blink.checked = inStr(ce.style.textDecoration, 'blink');
+
+	// Setup background fields
+
+	f.background_color.value = ce.style.backgroundColor;
+	updateColor('background_color_pick', 'background_color');
+	f.background_image.value = ce.style.backgroundImage.replace(new RegExp("url\\('?([^']*)'?\\)", 'gi'), "$1");
+	selectByValue(f, 'background_repeat', ce.style.backgroundRepeat, true, true);
+	selectByValue(f, 'background_attachment', ce.style.backgroundAttachment, true, true);
+	selectByValue(f, 'background_hpos', getNum(getVal(ce.style.backgroundPosition, 0)), true, true);
+	selectByValue(f, 'background_hpos_measurement', getMeasurement(getVal(ce.style.backgroundPosition, 0)));
+	selectByValue(f, 'background_vpos', getNum(getVal(ce.style.backgroundPosition, 1)), true, true);
+	selectByValue(f, 'background_vpos_measurement', getMeasurement(getVal(ce.style.backgroundPosition, 1)));
+
+	// Setup block fields
+
+	selectByValue(f, 'block_wordspacing', getNum(ce.style.wordSpacing), true, true);
+	selectByValue(f, 'block_wordspacing_measurement', getMeasurement(ce.style.wordSpacing));
+	selectByValue(f, 'block_letterspacing', getNum(ce.style.letterSpacing), true, true);
+	selectByValue(f, 'block_letterspacing_measurement', getMeasurement(ce.style.letterSpacing));
+	selectByValue(f, 'block_vertical_alignment', ce.style.verticalAlign, true, true);
+	selectByValue(f, 'block_text_align', ce.style.textAlign, true, true);
+	f.block_text_indent.value = getNum(ce.style.textIndent);
+	selectByValue(f, 'block_text_indent_measurement', getMeasurement(ce.style.textIndent));
+	selectByValue(f, 'block_whitespace', ce.style.whiteSpace, true, true);
+	selectByValue(f, 'block_display', ce.style.display, true, true);
+
+	// Setup box fields
+
+	f.box_width.value = getNum(ce.style.width);
+	selectByValue(f, 'box_width_measurement', getMeasurement(ce.style.width));
+
+	f.box_height.value = getNum(ce.style.height);
+	selectByValue(f, 'box_height_measurement', getMeasurement(ce.style.height));
+
+	if (tinyMCE.isGecko)
+		selectByValue(f, 'box_float', ce.style.cssFloat, true, true);
+	else
+		selectByValue(f, 'box_float', ce.style.styleFloat, true, true);
+
+	selectByValue(f, 'box_clear', ce.style.clear, true, true);
+
+	setupBox(f, ce, 'box_padding', 'padding', '');
+	setupBox(f, ce, 'box_margin', 'margin', '');
+
+	// Setup border fields
+
+	setupBox(f, ce, 'border_style', 'border', 'Style');
+	setupBox(f, ce, 'border_width', 'border', 'Width');
+	setupBox(f, ce, 'border_color', 'border', 'Color');
+
+	updateColor('border_color_top_pick', 'border_color_top');
+	updateColor('border_color_right_pick', 'border_color_right');
+	updateColor('border_color_bottom_pick', 'border_color_bottom');
+	updateColor('border_color_left_pick', 'border_color_left');
+
+	// Setup list fields
+
+	selectByValue(f, 'list_type', ce.style.listStyleType, true, true);
+	selectByValue(f, 'list_position', ce.style.listStylePosition, true, true);
+	f.list_bullet_image.value = ce.style.listStyleImage.replace(new RegExp("url\\('?([^']*)'?\\)", 'gi'), "$1");
+
+	// Setup box fields
+
+	selectByValue(f, 'positioning_type', ce.style.position, true, true);
+	selectByValue(f, 'positioning_visibility', ce.style.visibility, true, true);
+	selectByValue(f, 'positioning_overflow', ce.style.overflow, true, true);
+	f.positioning_zindex.value = ce.style.zIndex ? ce.style.zIndex : "";
+
+	f.positioning_width.value = getNum(ce.style.width);
+	selectByValue(f, 'positioning_width_measurement', getMeasurement(ce.style.width));
+
+	f.positioning_height.value = getNum(ce.style.height);
+	selectByValue(f, 'positioning_height_measurement', getMeasurement(ce.style.height));
+
+	setupBox(f, ce, 'positioning_placement', '', '', new Array('top', 'right', 'bottom', 'left'));
+
+	s = ce.style.clip.replace(new RegExp("rect\\('?([^']*)'?\\)", 'gi'), "$1");
+	s = s.replace(/,/g, ' ');
+
+	if (!hasEqualValues(new Array(getVal(s, 0), getVal(s, 1), getVal(s, 2), getVal(s, 3)))) {
+		f.positioning_clip_top.value = getNum(getVal(s, 0));
+		selectByValue(f, 'positioning_clip_top_measurement', getMeasurement(getVal(s, 0)));
+		f.positioning_clip_right.value = getNum(getVal(s, 1));
+		selectByValue(f, 'positioning_clip_right_measurement', getMeasurement(getVal(s, 1)));
+		f.positioning_clip_bottom.value = getNum(getVal(s, 2));
+		selectByValue(f, 'positioning_clip_bottom_measurement', getMeasurement(getVal(s, 2)));
+		f.positioning_clip_left.value = getNum(getVal(s, 3));
+		selectByValue(f, 'positioning_clip_left_measurement', getMeasurement(getVal(s, 3)));
+	} else {
+		f.positioning_clip_top.value = getNum(getVal(s, 0));
+		selectByValue(f, 'positioning_clip_top_measurement', getMeasurement(getVal(s, 0)));
+		f.positioning_clip_right.value = f.positioning_clip_bottom.value = f.positioning_clip_left.value;
+	}
+
+//	setupBox(f, ce, '', 'border', 'Color');
+}
+
+function getMeasurement(s) {
+	return s.replace(/^([0-9]+)(.*)$/, "$2");
+}
+
+function getNum(s) {
+	if (new RegExp('^[0-9]+[a-z%]+$', 'gi').test(s))
+		return s.replace(/[^0-9]/g, '');
+
+	return s;
+}
+
+function inStr(s, n) {
+	return new RegExp(n, 'gi').test(s);
+}
+
+function getVal(s, i) {
+	var a = tinyMCE.explode(' ', s);
+
+	if (a.length > 1)
+		return a[i];
+
+	return "";
+}
+
+function setValue(f, n, v) {
+	if (f.elements[n].type == "text")
+		f.elements[n].value = v;
+	else
+		selectByValue(f, n, v, true, true);
+}
+
+function setupBox(f, ce, fp, pr, sf, b) {
+	if (typeof(b) == "undefined")
+		b = new Array('Top', 'Right', 'Bottom', 'Left');
+
+	if (isSame(ce, pr, sf, b)) {
+		f.elements[fp + "_same"].checked = true;
+
+		setValue(f, fp + "_top", getNum(ce.style[pr + b[0] + sf]));
+		f.elements[fp + "_top"].disabled = false;
+
+		f.elements[fp + "_right"].value = "";
+		f.elements[fp + "_right"].disabled = true;
+		f.elements[fp + "_bottom"].value = "";
+		f.elements[fp + "_bottom"].disabled = true;
+		f.elements[fp + "_left"].value = "";
+		f.elements[fp + "_left"].disabled = true;
+
+		if (f.elements[fp + "_top_measurement"]) {
+			selectByValue(f, fp + '_top_measurement', getMeasurement(ce.style[pr + b[0] + sf]));
+			f.elements[fp + "_left_measurement"].disabled = true;
+			f.elements[fp + "_bottom_measurement"].disabled = true;
+			f.elements[fp + "_right_measurement"].disabled = true;
+		}
+	} else {
+		f.elements[fp + "_same"].checked = false;
+
+		setValue(f, fp + "_top", getNum(ce.style[pr + b[0] + sf]));
+		f.elements[fp + "_top"].disabled = false;
+
+		setValue(f, fp + "_right", getNum(ce.style[pr + b[1] + sf]));
+		f.elements[fp + "_right"].disabled = false;
+
+		setValue(f, fp + "_bottom", getNum(ce.style[pr + b[2] + sf]));
+		f.elements[fp + "_bottom"].disabled = false;
+
+		setValue(f, fp + "_left", getNum(ce.style[pr + b[3] + sf]));
+		f.elements[fp + "_left"].disabled = false;
+
+		if (f.elements[fp + "_top_measurement"]) {
+			selectByValue(f, fp + '_top_measurement', getMeasurement(ce.style[pr + b[0] + sf]));
+			selectByValue(f, fp + '_right_measurement', getMeasurement(ce.style[pr + b[1] + sf]));
+			selectByValue(f, fp + '_bottom_measurement', getMeasurement(ce.style[pr + b[2] + sf]));
+			selectByValue(f, fp + '_left_measurement', getMeasurement(ce.style[pr + b[3] + sf]));
+			f.elements[fp + "_left_measurement"].disabled = false;
+			f.elements[fp + "_bottom_measurement"].disabled = false;
+			f.elements[fp + "_right_measurement"].disabled = false;
+		}
+	}
+}
+
+function isSame(e, pr, sf, b) {
+	var a = new Array(), i, x;
+
+	if (typeof(b) == "undefined")
+		b = new Array('Top', 'Right', 'Bottom', 'Left');
+
+	if (typeof(sf) == "undefined" || sf == null)
+		sf = "";
+
+	a[0] = e.style[pr + b[0] + sf];
+	a[1] = e.style[pr + b[1] + sf];
+	a[2] = e.style[pr + b[2] + sf];
+	a[3] = e.style[pr + b[3] + sf];
+
+	for (i=0; i<a.length; i++) {
+		if (a[i] == null)
+			return false;
+
+		for (x=0; x<a.length; x++) {
+			if (a[x] != a[i])
+				return false;
+		}
+	}
+
+	return true;
+};
+
+function hasEqualValues(a) {
+	var i, x;
+
+	for (i=0; i<a.length; i++) {
+		if (a[i] == null)
+			return false;
+
+		for (x=0; x<a.length; x++) {
+			if (a[x] != a[i])
+				return false;
+		}
+	}
+
+	return true;
+}
+
+function applyAction() {
+	var ce = document.getElementById('container');
+
+	generateCSS();
+
+	tinyMCEPopup.execCommand('mceSetElementStyle', false, tinyMCE.serializeStyle(tinyMCE.parseStyle(ce.style.cssText)));
+}
+
+function updateAction() {
+	applyAction();
+	tinyMCEPopup.close();
+}
+
+function generateCSS() {
+	var ce = document.getElementById('container'), f = document.forms[0], num = new RegExp('[0-9]+', 'g'), s, t;
+
+	ce.style.cssText = "";
+
+	// Build text styles
+	ce.style.fontFamily = f.text_font.value;
+	ce.style.fontSize = f.text_size.value + (isNum(f.text_size.value) ? f.text_size_measurement.value : "");
+	ce.style.fontStyle = f.text_style.value;
+	ce.style.lineHeight = f.text_lineheight.value + (isNum(f.text_lineheight.value) ? f.text_lineheight_measurement.value : "");
+	ce.style.textTransform = f.text_case.value;
+	ce.style.fontWeight = f.text_weight.value;
+	ce.style.fontVariant = f.text_variant.value;
+	ce.style.color = f.text_color.value;
+
+	s = "";
+	s += f.text_underline.checked ? " underline" : "";
+	s += f.text_overline.checked ? " overline" : "";
+	s += f.text_linethrough.checked ? " line-through" : "";
+	s += f.text_blink.checked ? " blink" : "";
+	s = s.length > 0 ? s.substring(1) : s;
+
+	if (f.text_none.checked)
+		s = "none";
+
+	ce.style.textDecoration = s;
+
+	// Build background styles
+
+	ce.style.backgroundColor = f.background_color.value;
+	ce.style.backgroundImage = f.background_image.value != "" ? "url(" + f.background_image.value + ")" : "";
+	ce.style.backgroundRepeat = f.background_repeat.value;
+	ce.style.backgroundAttachment = f.background_attachment.value;
+
+	if (f.background_hpos.value != "") {
+		s = "";
+		s += f.background_hpos.value + (isNum(f.background_hpos.value) ? f.background_hpos_measurement.value : "") + " ";
+		s += f.background_vpos.value + (isNum(f.background_vpos.value) ? f.background_vpos_measurement.value : "");
+		ce.style.backgroundPosition = s;
+	}
+
+	// Build block styles
+
+	ce.style.wordSpacing = f.block_wordspacing.value + (isNum(f.block_wordspacing.value) ? f.block_wordspacing_measurement.value : "");
+	ce.style.letterSpacing = f.block_letterspacing.value + (isNum(f.block_letterspacing.value) ? f.block_letterspacing_measurement.value : "");
+	ce.style.verticalAlign = f.block_vertical_alignment.value;
+	ce.style.textAlign = f.block_text_align.value;
+	ce.style.textIndent = f.block_text_indent.value + (isNum(f.block_text_indent.value) ? f.block_text_indent_measurement.value : "");
+	ce.style.whiteSpace = f.block_whitespace.value;
+	ce.style.display = f.block_display.value;
+
+	// Build box styles
+
+	ce.style.width = f.box_width.value + (isNum(f.box_width.value) ? f.box_width_measurement.value : "");
+	ce.style.height = f.box_height.value + (isNum(f.box_height.value) ? f.box_height_measurement.value : "");
+	ce.style.styleFloat = f.box_float.value;
+
+	if (tinyMCE.isGecko)
+		ce.style.cssFloat = f.box_float.value;
+
+	ce.style.clear = f.box_clear.value;
+
+	if (!f.box_padding_same.checked) {
+		ce.style.paddingTop = f.box_padding_top.value + (isNum(f.box_padding_top.value) ? f.box_padding_top_measurement.value : "");
+		ce.style.paddingRight = f.box_padding_right.value + (isNum(f.box_padding_right.value) ? f.box_padding_right_measurement.value : "");
+		ce.style.paddingBottom = f.box_padding_bottom.value + (isNum(f.box_padding_bottom.value) ? f.box_padding_bottom_measurement.value : "");
+		ce.style.paddingLeft = f.box_padding_left.value + (isNum(f.box_padding_left.value) ? f.box_padding_left_measurement.value : "");
+	} else
+		ce.style.padding = f.box_padding_top.value + (isNum(f.box_padding_top.value) ? f.box_padding_top_measurement.value : "");		
+
+	if (!f.box_margin_same.checked) {
+		ce.style.marginTop = f.box_margin_top.value + (isNum(f.box_margin_top.value) ? f.box_margin_top_measurement.value : "");
+		ce.style.marginRight = f.box_margin_right.value + (isNum(f.box_margin_right.value) ? f.box_margin_right_measurement.value : "");
+		ce.style.marginBottom = f.box_margin_bottom.value + (isNum(f.box_margin_bottom.value) ? f.box_margin_bottom_measurement.value : "");
+		ce.style.marginLeft = f.box_margin_left.value + (isNum(f.box_margin_left.value) ? f.box_margin_left_measurement.value : "");
+	} else
+		ce.style.margin = f.box_margin_top.value + (isNum(f.box_margin_top.value) ? f.box_margin_top_measurement.value : "");		
+
+	// Build border styles
+
+	if (!f.border_style_same.checked) {
+		ce.style.borderTopStyle = f.border_style_top.value;
+		ce.style.borderRightStyle = f.border_style_right.value;
+		ce.style.borderBottomStyle = f.border_style_bottom.value;
+		ce.style.borderLeftStyle = f.border_style_left.value;
+	} else
+		ce.style.borderStyle = f.border_style_top.value;
+
+	if (!f.border_width_same.checked) {
+		ce.style.borderTopWidth = f.border_width_top.value + (isNum(f.border_width_top.value) ? f.border_width_top_measurement.value : "");
+		ce.style.borderRightWidth = f.border_width_right.value + (isNum(f.border_width_right.value) ? f.border_width_right_measurement.value : "");
+		ce.style.borderBottomWidth = f.border_width_bottom.value + (isNum(f.border_width_bottom.value) ? f.border_width_bottom_measurement.value : "");
+		ce.style.borderLeftWidth = f.border_width_left.value + (isNum(f.border_width_left.value) ? f.border_width_left_measurement.value : "");
+	} else
+		ce.style.borderWidth = f.border_width_top.value;
+
+	if (!f.border_color_same.checked) {
+		ce.style.borderTopColor = f.border_color_top.value;
+		ce.style.borderRightColor = f.border_color_right.value;
+		ce.style.borderBottomColor = f.border_color_bottom.value;
+		ce.style.borderLeftColor = f.border_color_left.value;
+	} else
+		ce.style.borderColor = f.border_color_top.value;
+
+	// Build list styles
+
+	ce.style.listStyleType = f.list_type.value;
+	ce.style.listStylePosition = f.list_position.value;
+	ce.style.listStyleImage = f.list_bullet_image.value != "" ? "url(" + f.list_bullet_image.value + ")" : "";
+
+	// Build positioning styles
+
+	ce.style.position = f.positioning_type.value;
+	ce.style.visibility = f.positioning_visibility.value;
+
+	if (ce.style.width == "")
+		ce.style.width = f.positioning_width.value + (isNum(f.positioning_width.value) ? f.positioning_width_measurement.value : "");
+
+	if (ce.style.height == "")
+		ce.style.height = f.positioning_height.value + (isNum(f.positioning_height.value) ? f.positioning_height_measurement.value : "");
+
+	ce.style.zIndex = f.positioning_zindex.value;
+	ce.style.overflow = f.positioning_overflow.value;
+
+	if (!f.positioning_placement_same.checked) {
+		ce.style.top = f.positioning_placement_top.value + (isNum(f.positioning_placement_top.value) ? f.positioning_placement_top_measurement.value : "");
+		ce.style.right = f.positioning_placement_right.value + (isNum(f.positioning_placement_right.value) ? f.positioning_placement_right_measurement.value : "");
+		ce.style.bottom = f.positioning_placement_bottom.value + (isNum(f.positioning_placement_bottom.value) ? f.positioning_placement_bottom_measurement.value : "");
+		ce.style.left = f.positioning_placement_left.value + (isNum(f.positioning_placement_left.value) ? f.positioning_placement_left_measurement.value : "");
+	} else {
+		s = f.positioning_placement_top.value + (isNum(f.positioning_placement_top.value) ? f.positioning_placement_top_measurement.value : "");
+		ce.style.top = s;
+		ce.style.right = s;
+		ce.style.bottom = s;
+		ce.style.left = s;
+	}
+
+	if (!f.positioning_clip_same.checked) {
+		s = "rect(";
+		s += (isNum(f.positioning_clip_top.value) ? f.positioning_clip_top.value + f.positioning_clip_top_measurement.value : "auto") + " ";
+		s += (isNum(f.positioning_clip_right.value) ? f.positioning_clip_right.value + f.positioning_clip_right_measurement.value : "auto") + " ";
+		s += (isNum(f.positioning_clip_bottom.value) ? f.positioning_clip_bottom.value + f.positioning_clip_bottom_measurement.value : "auto") + " ";
+		s += (isNum(f.positioning_clip_left.value) ? f.positioning_clip_left.value + f.positioning_clip_left_measurement.value : "auto");
+		s += ")";
+
+		if (s != "rect(auto auto auto auto)")
+			ce.style.clip = s;
+	} else {
+		s = "rect(";
+		t = isNum(f.positioning_clip_top.value) ? f.positioning_clip_top.value + f.positioning_clip_top_measurement.value : "auto";
+		s += t + " ";
+		s += t + " ";
+		s += t + " ";
+		s += t + ")";
+
+		if (s != "rect(auto auto auto auto)")
+			ce.style.clip = s;
+	}
+
+	ce.style.cssText = tinyMCE.serializeStyle(tinyMCE.parseStyle(ce.style.cssText));
+}
+
+function isNum(s) {
+	return new RegExp('[0-9]+', 'g').test(s);
+}
+
+function showDisabledControls() {
+	var f = document.forms, i, a;
+
+	for (i=0; i<f.length; i++) {
+		for (a=0; a<f[i].elements.length; a++) {
+			if (f[i].elements[a].disabled)
+				tinyMCE.addCSSClass(f[i].elements[a], "disabled");
+			else
+				tinyMCE.removeCSSClass(f[i].elements[a], "disabled");
+		}
+	}
+}
+
+function fillSelect(f, s, param, dval, sep, em) {
+	var i, ar, p, se;
+
+	f = document.forms[f];
+	sep = typeof(sep) == "undefined" ? ";" : sep;
+
+	if (em)
+		addSelectValue(f, s, "", "");
+
+	ar = tinyMCE.getParam(param, dval).split(sep);
+	for (i=0; i<ar.length; i++) {
+		se = false;
+
+		if (ar[i].charAt(0) == '+') {
+			ar[i] = ar[i].substring(1);
+			se = true;
+		}
+
+		p = ar[i].split('=');
+
+		if (p.length > 1) {
+			addSelectValue(f, s, p[0], p[1]);
+
+			if (se)
+				selectByValue(f, s, p[1]);
+		} else {
+			addSelectValue(f, s, p[0], p[0]);
+
+			if (se)
+				selectByValue(f, s, p[0]);
+		}
+	}
+}
+
+function toggleSame(ce, pre) {
+	var el = document.forms[0].elements, i;
+
+	if (ce.checked) {
+		el[pre + "_top"].disabled = false;
+		el[pre + "_right"].disabled = true;
+		el[pre + "_bottom"].disabled = true;
+		el[pre + "_left"].disabled = true;
+
+		if (el[pre + "_top_measurement"]) {
+			el[pre + "_top_measurement"].disabled = false;
+			el[pre + "_right_measurement"].disabled = true;
+			el[pre + "_bottom_measurement"].disabled = true;
+			el[pre + "_left_measurement"].disabled = true;
+		}
+	} else {
+		el[pre + "_top"].disabled = false;
+		el[pre + "_right"].disabled = false;
+		el[pre + "_bottom"].disabled = false;
+		el[pre + "_left"].disabled = false;
+
+		if (el[pre + "_top_measurement"]) {
+			el[pre + "_top_measurement"].disabled = false;
+			el[pre + "_right_measurement"].disabled = false;
+			el[pre + "_bottom_measurement"].disabled = false;
+			el[pre + "_left_measurement"].disabled = false;
+		}
+	}
+
+	showDisabledControls();
+}
+
+function synch(fr, to) {
+	var f = document.forms[0];
+
+	f.elements[to].value = f.elements[fr].value;
+
+	if (f.elements[fr + "_measurement"])
+		selectByValue(f, to + "_measurement", f.elements[fr + "_measurement"].value);
+}

Added: labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/plugins/style/langs/en.js
===================================================================
--- labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/plugins/style/langs/en.js	2007-01-11 22:09:16 UTC (rev 8831)
+++ labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/plugins/style/langs/en.js	2007-01-11 22:10:56 UTC (rev 8832)
@@ -0,0 +1,66 @@
+// UK lang variables
+
+tinyMCE.addToLang('style',{
+title : 'Edit CSS Style',
+styleinfo_desc : 'Edit CSS Style',
+apply : 'Apply',
+text_tab : 'Text',
+background_tab : 'Background',
+block_tab : 'Block',
+box_tab : 'Box',
+border_tab : 'Border',
+list_tab : 'List',
+positioning_tab : 'Positioning',
+text_props : 'Text',
+text_font : 'Font',
+text_size : 'Size',
+text_weight : 'Weight',
+text_style : 'Style',
+text_variant : 'Variant',
+text_lineheight : 'Line height',
+text_case : 'Case',
+text_color : 'Color',
+text_decoration : 'Decoration',
+text_overline : 'overline',
+text_underline : 'underline',
+text_striketrough : 'strikethrough',
+text_blink : 'blink',
+text_none : 'none',
+background_color : 'Background color',
+background_image : 'Background image',
+background_repeat : 'Repeat',
+background_attachment : 'Attachment',
+background_hpos : 'Horizontal position',
+background_vpos : 'Vertical position',
+block_wordspacing : 'Word spacing',
+block_letterspacing : 'Letter spacing',
+block_vertical_alignment : 'Vertical alignment',
+block_text_align : 'Text align',
+block_text_indent : 'Text indent',
+block_whitespace : 'Whitespace',
+block_display : 'Display',
+box_width : 'Width',
+box_height : 'Height',
+box_float : 'Float',
+box_clear : 'Clear',
+padding : 'Padding',
+same : 'Same for all',
+top : 'Top',
+right : 'Right',
+bottom : 'Bottom',
+left : 'Left',
+margin : 'Margin',
+style : 'Style',
+width : 'Width',
+height : 'Height',
+color : 'Color',
+list_type : 'Type',
+bullet_image : 'Bullet image',
+position : 'Position',
+positioning_type : 'Type',
+visibility : 'Visibility',
+zindex : 'Z-index',
+overflow : 'Overflow',
+placement : 'Placement',
+clip : 'Clip'
+});

Added: labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/plugins/style/props.htm
===================================================================
--- labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/plugins/style/props.htm	2007-01-11 22:09:16 UTC (rev 8831)
+++ labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/plugins/style/props.htm	2007-01-11 22:10:56 UTC (rev 8832)
@@ -0,0 +1,698 @@
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+	<title>{$lang_style_title}</title>
+	<script language="javascript" type="text/javascript" src="../../tiny_mce_popup.js"></script>
+	<script language="javascript" type="text/javascript" src="../../utils/mctabs.js"></script>
+	<script language="javascript" type="text/javascript" src="../../utils/editable_selects.js"></script>
+	<script language="javascript" type="text/javascript" src="../../utils/form_utils.js"></script>
+	<script language="javascript" type="text/javascript" src="jscripts/props.js"></script>
+	<link href="css/props.css" rel="stylesheet" type="text/css" />
+	<base target="_self" />
+</head>
+
+<body id="styleprops" onload="tinyMCEPopup.executeOnLoad('init();');" style="display: none">
+<form onsubmit="updateAction();return false;" action="#">
+<div class="tabs">
+	<ul>
+		<li id="text_tab" class="current"><span><a href="javascript:mcTabs.displayTab('text_tab','text_panel');" onmousedown="return false;">{$lang_style_text_tab}</a></span></li>
+		<li id="background_tab"><span><a href="javascript:mcTabs.displayTab('background_tab','background_panel');" onmousedown="return false;">{$lang_style_background_tab}</a></span></li>
+		<li id="block_tab"><span><a href="javascript:mcTabs.displayTab('block_tab','block_panel');" onmousedown="return false;">{$lang_style_block_tab}</a></span></li>
+		<li id="box_tab"><span><a href="javascript:mcTabs.displayTab('box_tab','box_panel');" onmousedown="return false;">{$lang_style_box_tab}</a></span></li>
+		<li id="border_tab"><span><a href="javascript:mcTabs.displayTab('border_tab','border_panel');" onmousedown="return false;">{$lang_style_border_tab}</a></span></li>
+		<li id="list_tab"><span><a href="javascript:mcTabs.displayTab('list_tab','list_panel');" onmousedown="return false;">{$lang_style_list_tab}</a></span></li>
+		<li id="positioning_tab"><span><a href="javascript:mcTabs.displayTab('positioning_tab','positioning_panel');" onmousedown="return false;">{$lang_style_positioning_tab}</a></span></li>
+	</ul>
+</div>
+
+<div class="panel_wrapper">
+<div id="text_panel" class="panel current">
+	<table border="0" width="100%">
+		<tr>
+			<td><label for="text_font">{$lang_style_text_font}</label></td>
+			<td colspan="3">
+				<select id="text_font" name="text_font" class="mceEditableSelect" onchange="alert(this.options[this.selectedIndex].value);"></select>
+			</td>
+		</tr>
+		<tr>
+			<td><label for="text_size">{$lang_style_text_size}</label></td>
+			<td>
+				<table border="0" cellspacing="0" cellpadding="0">
+					<tr>
+						<td><select id="text_size" name="text_size" class="mceEditableSelect"></select></td>
+						<td>&nbsp;<select id="text_size_measurement" name="text_size_measurement"></select>
+					</tr>
+				</table>
+			</td>
+			<td><label for="text_weight">{$lang_style_text_weight}</label></td>
+			<td>
+				<select id="text_weight" name="text_weight"></select>
+			</td>
+		</tr>
+		<tr>
+			<td><label for="text_style">{$lang_style_text_style}</label></td>
+			<td>
+				<select id="text_style" name="text_style" class="mceEditableSelect"></select>
+			</td>
+			<td><label for="text_variant">{$lang_style_text_variant}</label></td>
+			<td>
+				<select id="text_variant" name="text_variant"></select>
+			</td>
+		</tr>
+		<tr>
+			<td><label for="text_lineheight">{$lang_style_text_lineheight}</label></td>
+			<td>
+				<table border="0" cellspacing="0" cellpadding="0">
+					<tr>
+						<td>
+							<select id="text_lineheight" name="text_lineheight" class="mceEditableSelect"></select>
+						</td>
+						<td>&nbsp;<select id="text_lineheight_measurement" name="text_lineheight_measurement"></select>
+					</tr>
+				</table>
+			</td>
+			<td><label for="text_case">{$lang_style_text_case}</label></td>
+			<td>
+				<select id="text_case" name="text_case"></select>
+			</td>
+		</tr>
+		<tr>
+			<td><label for="text_color">{$lang_style_text_color}</label></td>
+			<td colspan="2">
+				<table border="0" cellpadding="0" cellspacing="0">
+					<tr>
+						<td><input id="text_color" name="text_color" type="text" value="" size="9" onchange="updateColor('text_color_pick','text_color');" /></td>
+						<td id="text_color_pickcontainer">&nbsp;</td>
+					</tr>
+				</table>
+			</td>
+		</tr>
+		<tr>
+			<td>{$lang_style_text_decoration}</td>
+			<td colspan="2">
+				<table border="0" cellspacing="0" cellpadding="0">
+					<tr>
+						<td><input id="text_underline" name="text_underline" class="checkbox" type="checkbox" /></td>
+						<td><label for="text_underline">{$lang_style_text_underline}</label></td>
+					</tr>
+					<tr>
+						<td><input id="text_overline" name="text_overline" class="checkbox" type="checkbox" /></td>
+						<td><label for="text_overline">{$lang_style_text_overline}</label></td>
+					</tr>
+					<tr>
+						<td><input id="text_linethrough" name="text_linethrough" class="checkbox" type="checkbox" /></td>
+						<td><label for="text_linethrough">{$lang_style_text_striketrough}</label></td>
+					</tr>
+					<tr>
+						<td><input id="text_blink" name="text_blink" class="checkbox" type="checkbox" /></td>
+						<td><label for="text_blink">{$lang_style_text_blink}</label></td>
+					</tr>
+					<tr>
+						<td><input id="text_none" name="text_none" class="checkbox" type="checkbox" /></td>
+						<td><label for="text_none">{$lang_style_text_none}</label></td>
+					</tr>
+				</table>
+			</td>
+		</tr>
+	</table>
+</div>
+
+<div id="background_panel" class="panel">
+	<table border="0">
+		<tr>
+			<td><label for="background_color">{$lang_style_background_color}</label></td>
+			<td>
+				<table border="0" cellpadding="0" cellspacing="0">
+					<tr>
+						<td><input id="background_color" name="background_color" type="text" value="" size="9" onchange="updateColor('background_color_pick','background_color');" /></td>
+						<td id="background_color_pickcontainer">&nbsp;</td>
+					</tr>
+				</table>
+			</td>
+		</tr>
+
+		<tr>
+			<td><label for="background_image">{$lang_style_background_image}</label></td>
+			<td><table border="0" cellspacing="0" cellpadding="0">
+				<tr> 
+				  <td><input id="background_image" name="background_image" type="text" /></td> 
+				  <td id="background_image_browser">&nbsp;</td>
+				</tr>
+				</table>
+			</td>
+		</tr>
+
+		<tr>
+			<td><label for="background_repeat">{$lang_style_background_repeat}</label></td>
+			<td><select id="background_repeat" name="background_repeat" class="mceEditableSelect"></select></td>
+		</tr>
+
+		<tr>
+			<td><label for="background_attachment">{$lang_style_background_attachment}</label></td>
+			<td><select id="background_attachment" name="background_attachment" class="mceEditableSelect"></select></td>
+		</tr>
+
+		<tr>
+			<td><label for="background_hpos">{$lang_style_background_hpos}</label></td>
+			<td>
+				<table border="0" cellspacing="0" cellpadding="0">
+					<tr>
+						<td><select id="background_hpos" name="background_hpos" class="mceEditableSelect"></select></td>
+						<td>&nbsp;<select id="background_hpos_measurement" name="background_hpos_measurement"></select>
+					</tr>
+				</table>
+			</td>
+		</tr>
+
+		<tr>
+			<td><label for="background_vpos">{$lang_style_background_vpos}</label></td>
+			<td>
+				<table border="0" cellspacing="0" cellpadding="0">
+					<tr>
+						<td><select id="background_vpos" name="background_vpos" class="mceEditableSelect"></select></td>
+						<td>&nbsp;<select id="background_vpos_measurement" name="background_vpos_measurement"></select>
+					</tr>
+				</table>
+			</td>
+		</tr>
+	</table>
+</div>
+
+<div id="block_panel" class="panel">
+	<table border="0">
+		<tr>
+			<td><label for="block_wordspacing">{$lang_style_block_wordspacing}</label></td>
+			<td>
+				<table border="0" cellspacing="0" cellpadding="0">
+					<tr>
+						<td><select id="block_wordspacing" name="block_wordspacing" class="mceEditableSelect"></select></td>
+						<td>&nbsp;<select id="block_wordspacing_measurement" name="block_wordspacing_measurement"></select>
+					</tr>
+				</table>
+			</td>
+		</tr>
+
+		<tr>
+			<td><label for="block_letterspacing">{$lang_style_block_letterspacing}</label></td>
+			<td>
+				<table border="0" cellspacing="0" cellpadding="0">
+					<tr>
+						<td><select id="block_letterspacing" name="block_letterspacing" class="mceEditableSelect"></select></td>
+						<td>&nbsp;<select id="block_letterspacing_measurement" name="block_letterspacing_measurement"></select>
+					</tr>
+				</table>
+			</td>
+		</tr>
+
+		<tr>
+			<td><label for="block_vertical_alignment">{$lang_style_block_vertical_alignment}</label></td>
+			<td><select id="block_vertical_alignment" name="block_vertical_alignment" class="mceEditableSelect"></select></td>
+		</tr>
+
+		<tr>
+			<td><label for="block_text_align">{$lang_style_block_text_align}</label></td>
+			<td><select id="block_text_align" name="block_text_align" class="mceEditableSelect"></select></td>
+		</tr>
+
+		<tr>
+			<td><label for="block_text_indent">{$lang_style_block_text_indent}</label></td>
+			<td>
+				<table border="0" cellspacing="0" cellpadding="0">
+					<tr>
+						<td><input type="text" id="block_text_indent" name="block_text_indent" /></td>
+						<td>&nbsp;<select id="block_text_indent_measurement" name="block_text_indent_measurement"></select>
+					</tr>
+				</table>
+			</td>
+		</tr>
+
+		<tr>
+			<td><label for="block_whitespace">{$lang_style_block_whitespace}</label></td>
+			<td><select id="block_whitespace" name="block_whitespace" class="mceEditableSelect"></select></td>
+		</tr>
+
+		<tr>
+			<td><label for="block_display">{$lang_style_block_display}</label></td>
+			<td><select id="block_display" name="block_display" class="mceEditableSelect"></select></td>
+		</tr>
+	</table>
+</div>
+
+<div id="box_panel" class="panel">
+<table border="0">
+	<tr>
+		<td><label for="box_width">{$lang_style_box_width}</label></td>
+		<td>
+			<table border="0" cellspacing="0" cellpadding="0">
+				<tr>
+					<td><input type="text" id="box_width" name="box_width" class="mceEditableSelect" onchange="synch('box_width','positioning_width');" /></td>
+					<td>&nbsp;<select id="box_width_measurement" name="box_width_measurement"></select>
+				</tr>
+			</table>
+		</td>
+		<td>&nbsp;&nbsp;&nbsp;<label for="box_float">{$lang_style_box_float}</label></td>
+		<td><select id="box_float" name="box_float" class="mceEditableSelect"></select></td>
+	</tr>
+
+	<tr>
+		<td><label for="box_height">{$lang_style_box_height}</label></td>
+		<td>
+			<table border="0" cellspacing="0" cellpadding="0">
+				<tr>
+					<td><input type="text" id="box_height" name="box_height" class="mceEditableSelect" onchange="synch('box_height','positioning_height');" /></td>
+					<td>&nbsp;<select id="box_height_measurement" name="box_height_measurement"></select>
+				</tr>
+			</table>
+		</td>
+		<td>&nbsp;&nbsp;&nbsp;<label for="box_clear">{$lang_style_box_clear}</label></td>
+		<td><select id="box_clear" name="box_clear" class="mceEditableSelect"></select></td>
+	</tr>
+</table>
+<div style="float: left; width: 49%">
+	<fieldset>
+		<legend>{$lang_style_padding}</legend>
+
+		<table border="0">
+			<tr>
+				<td>&nbsp;</td>
+				<td><input type="checkbox" id="box_padding_same" name="box_padding_same" class="checkbox" checked="checked" onclick="toggleSame(this,'box_padding');" /> <label for="box_padding_same">{$lang_style_same}</label></td>
+			</tr>
+			<tr>
+				<td><label for="box_padding_top">{$lang_style_top}</label></td>
+				<td>
+					<table border="0" cellspacing="0" cellpadding="0">
+						<tr>
+							<td><input type="text" id="box_padding_top" name="box_padding_top" class="mceEditableSelect" /></td>
+							<td>&nbsp;<select id="box_padding_top_measurement" name="box_padding_top_measurement"></select>
+						</tr>
+					</table>
+				</td>
+			</tr>
+			<tr>
+				<td><label for="box_padding_right">{$lang_style_right}</label></td>
+				<td>
+					<table border="0" cellspacing="0" cellpadding="0">
+						<tr>
+							<td><input type="text" id="box_padding_right" name="box_padding_right" class="mceEditableSelect" disabled="disabled" /></td>
+							<td>&nbsp;<select id="box_padding_right_measurement" name="box_padding_right_measurement" disabled="disabled"></select>
+						</tr>
+					</table>
+				</td>
+			</tr>
+			<tr>
+				<td><label for="box_padding_bottom">{$lang_style_bottom}</label></td>
+				<td>
+					<table border="0" cellspacing="0" cellpadding="0">
+						<tr>
+							<td><input type="text" id="box_padding_bottom" name="box_padding_bottom" class="mceEditableSelect" disabled="disabled" /></td>
+							<td>&nbsp;<select id="box_padding_bottom_measurement" name="box_padding_bottom_measurement" disabled="disabled"></select>
+						</tr>
+					</table>
+				</td>
+			</tr>
+			<tr>
+				<td><label for="box_padding_left">{$lang_style_left}</label></td>
+				<td>
+					<table border="0" cellspacing="0" cellpadding="0">
+						<tr>
+							<td><input type="text" id="box_padding_left" name="box_padding_left" class="mceEditableSelect" disabled="disabled" /></td>
+							<td>&nbsp;<select id="box_padding_left_measurement" name="box_padding_left_measurement" disabled="disabled"></select>
+						</tr>
+					</table>
+				</td>
+			</tr>
+		</table>
+	</fieldset>
+</div>
+
+<div style="float: right; width: 49%">
+	<fieldset>
+		<legend>{$lang_style_margin}</legend>
+
+		<table border="0">
+			<tr>
+				<td>&nbsp;</td>
+				<td><input type="checkbox" id="box_margin_same" name="box_margin_same" class="checkbox" checked="checked" onclick="toggleSame(this,'box_margin');" /> <label for="box_margin_same">{$lang_style_same}</label></td>
+			</tr>
+			<tr>
+				<td><label for="box_margin_top">{$lang_style_top}</label></td>
+				<td>
+					<table border="0" cellspacing="0" cellpadding="0">
+						<tr>
+							<td><input type="text" id="box_margin_top" name="box_margin_top" class="mceEditableSelect" /></td>
+							<td>&nbsp;<select id="box_margin_top_measurement" name="box_margin_top_measurement"></select>
+						</tr>
+					</table>
+				</td>
+			</tr>
+			<tr>
+				<td><label for="box_margin_right">{$lang_style_right}</label></td>
+				<td>
+					<table border="0" cellspacing="0" cellpadding="0">
+						<tr>
+							<td><input type="text" id="box_margin_right" name="box_margin_right" class="mceEditableSelect" disabled="disabled" /></td>
+							<td>&nbsp;<select id="box_margin_right_measurement" name="box_margin_right_measurement" disabled="disabled"></select>
+						</tr>
+					</table>
+				</td>
+			</tr>
+			<tr>
+				<td><label for="box_margin_bottom">{$lang_style_bottom}</label></td>
+				<td>
+					<table border="0" cellspacing="0" cellpadding="0">
+						<tr>
+							<td><input type="text" id="box_margin_bottom" name="box_margin_bottom" class="mceEditableSelect" disabled="disabled" /></td>
+							<td>&nbsp;<select id="box_margin_bottom_measurement" name="box_margin_bottom_measurement" disabled="disabled"></select>
+						</tr>
+					</table>
+				</td>
+			</tr>
+			<tr>
+				<td><label for="box_margin_left">{$lang_style_left}</label></td>
+				<td>
+					<table border="0" cellspacing="0" cellpadding="0">
+						<tr>
+							<td><input type="text" id="box_margin_left" name="box_margin_left" class="mceEditableSelect" disabled="disabled" /></td>
+							<td>&nbsp;<select id="box_margin_left_measurement" name="box_margin_left_measurement" disabled="disabled"></select>
+						</tr>
+					</table>
+				</td>
+			</tr>
+		</table>
+	</fieldset>
+</div>
+<br style="clear: both" />
+</div>
+
+<div id="border_panel" class="panel">
+<table border="0" cellspacing="0" cellpadding="0" width="100%">
+<tr>
+	<td class="tdelim">&nbsp;</td>
+	<td class="tdelim delim">&nbsp;</td>
+	<td class="tdelim">{$lang_style_style}</td>
+	<td class="tdelim delim">&nbsp;</td>
+	<td class="tdelim">{$lang_style_width}</td>
+	<td class="tdelim delim">&nbsp;</td>
+	<td class="tdelim">{$lang_style_color}</td>
+</tr>
+
+<tr>
+	<td>&nbsp;</td>
+	<td class="delim">&nbsp;</td>
+	<td><input type="checkbox" id="border_style_same" name="border_style_same" class="checkbox" checked="checked" onclick="toggleSame(this,'border_style');" /> <label for="border_style_same">{$lang_style_same}</label></td>
+	<td class="delim">&nbsp;</td>
+	<td><input type="checkbox" id="border_width_same" name="border_width_same" class="checkbox" checked="checked" onclick="toggleSame(this,'border_width');" /> <label for="border_width_same">{$lang_style_same}</label></td>
+	<td class="delim">&nbsp;</td>
+	<td><input type="checkbox" id="border_color_same" name="border_color_same" class="checkbox" checked="checked" onclick="toggleSame(this,'border_color');" /> <label for="border_color_same">{$lang_style_same}</label></td>
+</tr>
+
+<tr>
+	<td>{$lang_style_top}</td>
+	<td class="delim">&nbsp;</td>
+	<td><select id="border_style_top" name="border_style_top" class="mceEditableSelect"></select></td>
+	<td class="delim">&nbsp;</td>
+	<td>
+		<table border="0" cellspacing="0" cellpadding="0">
+			<tr>
+				<td><select id="border_width_top" name="border_width_top" class="mceEditableSelect"></select></td>
+				<td>&nbsp;<select id="border_width_top_measurement" name="border_width_top_measurement"></select>
+			</tr>
+		</table>
+	</td>
+	<td class="delim">&nbsp;</td>
+	<td>
+		<table border="0" cellpadding="0" cellspacing="0">
+			<tr>
+				<td><input id="border_color_top" name="border_color_top" type="text" value="" size="9" onchange="updateColor('border_color_top_pick','border_color_top');" /></td>
+				<td id="border_color_top_pickcontainer">&nbsp;</td>
+			</tr>
+		</table>
+	</td>
+</tr>
+
+<tr>
+	<td>{$lang_style_right}</td>
+	<td class="delim">&nbsp;</td>
+	<td><select id="border_style_right" name="border_style_right" class="mceEditableSelect" disabled="disabled"></select></td>
+	<td class="delim">&nbsp;</td>
+	<td>
+		<table border="0" cellspacing="0" cellpadding="0">
+			<tr>
+				<td><select id="border_width_right" name="border_width_right" class="mceEditableSelect" disabled="disabled"></select></td>
+				<td>&nbsp;<select id="border_width_right_measurement" name="border_width_right_measurement" disabled="disabled"></select>
+			</tr>
+		</table>
+	</td>
+	<td class="delim">&nbsp;</td>
+	<td>
+		<table border="0" cellpadding="0" cellspacing="0">
+			<tr>
+				<td><input id="border_color_right" name="border_color_right" type="text" value="" size="9" onchange="updateColor('border_color_right_pick','border_color_right');" disabled="disabled" /></td>
+				<td id="border_color_right_pickcontainer">&nbsp;</td>
+			</tr>
+		</table>
+	</td>
+</tr>
+
+<tr>
+	<td>{$lang_style_bottom}</td>
+	<td class="delim">&nbsp;</td>
+	<td><select id="border_style_bottom" name="border_style_bottom" class="mceEditableSelect" disabled="disabled"></select></td>
+	<td class="delim">&nbsp;</td>
+	<td>
+		<table border="0" cellspacing="0" cellpadding="0">
+			<tr>
+				<td><select id="border_width_bottom" name="border_width_bottom" class="mceEditableSelect" disabled="disabled"></select></td>
+				<td>&nbsp;<select id="border_width_bottom_measurement" name="border_width_bottom_measurement" disabled="disabled"></select>
+			</tr>
+		</table>
+	</td>
+	<td class="delim">&nbsp;</td>
+	<td>
+		<table border="0" cellpadding="0" cellspacing="0">
+			<tr>
+				<td><input id="border_color_bottom" name="border_color_bottom" type="text" value="" size="9" onchange="updateColor('border_color_bottom_pick','border_color_bottom');" disabled="disabled" /></td>
+				<td id="border_color_bottom_pickcontainer">&nbsp;</td>
+			</tr>
+		</table>
+	</td>
+</tr>
+
+<tr>
+	<td>{$lang_style_left}</td>
+	<td class="delim">&nbsp;</td>
+	<td><select id="border_style_left" name="border_style_left" class="mceEditableSelect" disabled="disabled"></select></td>
+	<td class="delim">&nbsp;</td>
+	<td>
+		<table border="0" cellspacing="0" cellpadding="0">
+			<tr>
+				<td><select id="border_width_left" name="border_width_left" class="mceEditableSelect" disabled="disabled"></select></td>
+				<td>&nbsp;<select id="border_width_left_measurement" name="border_width_left_measurement" disabled="disabled"></select>
+			</tr>
+		</table>
+	</td>
+	<td class="delim">&nbsp;</td>
+	<td>
+		<table border="0" cellpadding="0" cellspacing="0">
+			<tr>
+				<td><input id="border_color_left" name="border_color_left" type="text" value="" size="9" onchange="updateColor('border_color_left_pick','border_color_left');" disabled="disabled" /></td>
+				<td id="border_color_left_pickcontainer">&nbsp;</td>
+			</tr>
+		</table>
+	</td>
+</tr>
+</table>
+</div>
+
+<div id="list_panel" class="panel">
+	<table border="0">
+		<tr>
+			<td><label for="list_type">{$lang_style_list_type}</label></td>
+			<td><select id="list_type" name="list_type" class="mceEditableSelect"></select></td>
+		</tr>
+
+		<tr>
+			<td><label for="list_bullet_image">{$lang_style_bullet_image}</label></td>
+			<td><input id="list_bullet_image" name="list_bullet_image" type="text" /></td>
+		</tr>
+
+		<tr>
+			<td><label for="list_position">{$lang_style_position}</label></td>
+			<td><select id="list_position" name="list_position" class="mceEditableSelect"></select></td>
+		</tr>
+	</table>
+</div>
+
+<div id="positioning_panel" class="panel">
+<table border="0">
+	<tr>
+		<td><label for="positioning_type">{$lang_style_positioning_type}</label></td>
+		<td><select id="positioning_type" name="positioning_type" class="mceEditableSelect"></select></td>
+		<td>&nbsp;&nbsp;&nbsp;<label for="positioning_visibility">{$lang_style_visibility}</label></td>
+		<td><select id="positioning_visibility" name="positioning_visibility" class="mceEditableSelect"></select></td>
+	</tr>
+
+	<tr>
+		<td><label for="positioning_width">{$lang_style_width}</label></td>
+		<td>
+			<table border="0" cellspacing="0" cellpadding="0">
+				<tr>
+					<td><input type="text" id="positioning_width" name="positioning_width" onchange="synch('positioning_width','box_width');" /></td>
+					<td>&nbsp;<select id="positioning_width_measurement" name="positioning_width_measurement"></select>
+				</tr>
+			</table>
+		</td>
+		<td>&nbsp;&nbsp;&nbsp;<label for="positioning_zindex">{$lang_style_zindex}</label></td>
+		<td><input type="text" id="positioning_zindex" name="positioning_zindex" /></td>
+	</tr>
+
+	<tr>
+		<td><label for="positioning_height">{$lang_style_height}</label></td>
+		<td>
+			<table border="0" cellspacing="0" cellpadding="0">
+				<tr>
+					<td><input type="text" id="positioning_height" name="positioning_height" onchange="synch('positioning_height','box_height');" /></td>
+					<td>&nbsp;<select id="positioning_height_measurement" name="positioning_height_measurement"></select>
+				</tr>
+			</table>
+		</td>
+		<td>&nbsp;&nbsp;&nbsp;<label for="positioning_overflow">{$lang_style_overflow}</label></td>
+		<td><select id="positioning_overflow" name="positioning_overflow" class="mceEditableSelect"></select></td>
+	</tr>
+</table>
+
+<div style="float: left; width: 49%">
+	<fieldset>
+		<legend>{$lang_style_placement}</legend>
+
+		<table border="0">
+			<tr>
+				<td>&nbsp;</td>
+				<td><input type="checkbox" id="positioning_placement_same" name="positioning_placement_same" class="checkbox" checked="checked" onclick="toggleSame(this,'positioning_placement');" /> <label for="positioning_placement_same">{$lang_style_same}</label></td>
+			</tr>
+			<tr>
+				<td>{$lang_style_top}</td>
+				<td>
+					<table border="0" cellspacing="0" cellpadding="0">
+						<tr>
+							<td><input type="text" id="positioning_placement_top" name="positioning_placement_top" /></td>
+							<td>&nbsp;<select id="positioning_placement_top_measurement" name="positioning_placement_top_measurement"></select>
+						</tr>
+					</table>
+				</td>
+			</tr>
+			<tr>
+				<td>{$lang_style_right}</td>
+				<td>
+					<table border="0" cellspacing="0" cellpadding="0">
+						<tr>
+							<td><input type="text" id="positioning_placement_right" name="positioning_placement_right" disabled="disabled" /></td>
+							<td>&nbsp;<select id="positioning_placement_right_measurement" name="positioning_placement_right_measurement" disabled="disabled"></select>
+						</tr>
+					</table>
+				</td>
+			</tr>
+			<tr>
+				<td>{$lang_style_bottom}</td>
+				<td>
+					<table border="0" cellspacing="0" cellpadding="0">
+						<tr>
+							<td><input type="text" id="positioning_placement_bottom" name="positioning_placement_bottom" disabled="disabled" /></td>
+							<td>&nbsp;<select id="positioning_placement_bottom_measurement" name="positioning_placement_bottom_measurement" disabled="disabled"></select>
+						</tr>
+					</table>
+				</td>
+			</tr>
+			<tr>
+				<td>{$lang_style_left}</td>
+				<td>
+					<table border="0" cellspacing="0" cellpadding="0">
+						<tr>
+							<td><input type="text" id="positioning_placement_left" name="positioning_placement_left" disabled="disabled" /></td>
+							<td>&nbsp;<select id="positioning_placement_left_measurement" name="positioning_placement_left_measurement" disabled="disabled"></select>
+						</tr>
+					</table>
+				</td>
+			</tr>
+		</table>
+	</fieldset>
+</div>
+
+<div style="float: right; width: 49%">
+	<fieldset>
+		<legend>{$lang_style_clip}</legend>
+
+		<table border="0">
+			<tr>
+				<td>&nbsp;</td>
+				<td><input type="checkbox" id="positioning_clip_same" name="positioning_clip_same" class="checkbox" checked="checked" onclick="toggleSame(this,'positioning_clip');" /> <label for="positioning_clip_same">{$lang_style_same}</label></td>
+			</tr>
+			<tr>
+				<td>{$lang_style_top}</td>
+				<td>
+					<table border="0" cellspacing="0" cellpadding="0">
+						<tr>
+							<td><input type="text" id="positioning_clip_top" name="positioning_clip_top" /></td>
+							<td>&nbsp;<select id="positioning_clip_top_measurement" name="positioning_clip_top_measurement"></select>
+						</tr>
+					</table>
+				</td>
+			</tr>
+			<tr>
+				<td>{$lang_style_right}</td>
+				<td>
+					<table border="0" cellspacing="0" cellpadding="0">
+						<tr>
+							<td><input type="text" id="positioning_clip_right" name="positioning_clip_right" disabled="disabled" /></td>
+							<td>&nbsp;<select id="positioning_clip_right_measurement" name="positioning_clip_right_measurement" disabled="disabled"></select>
+						</tr>
+					</table>
+				</td>
+			</tr>
+			<tr>
+				<td>{$lang_style_bottom}</td>
+				<td>
+					<table border="0" cellspacing="0" cellpadding="0">
+						<tr>
+							<td><input type="text" id="positioning_clip_bottom" name="positioning_clip_bottom" disabled="disabled" /></td>
+							<td>&nbsp;<select id="positioning_clip_bottom_measurement" name="positioning_clip_bottom_measurement" disabled="disabled"></select>
+						</tr>
+					</table>
+				</td>
+			</tr>
+			<tr>
+				<td>{$lang_style_left}</td>
+				<td>
+					<table border="0" cellspacing="0" cellpadding="0">
+						<tr>
+							<td><input type="text" id="positioning_clip_left" name="positioning_clip_left" disabled="disabled" /></td>
+							<td>&nbsp;<select id="positioning_clip_left_measurement" name="positioning_clip_left_measurement" disabled="disabled"></select>
+						</tr>
+					</table>
+				</td>
+			</tr>
+		</table>
+	</fieldset>
+</div>
+<br style="clear: both" />
+</div>
+</div>
+
+<div class="mceActionPanel">
+	<div style="float: left">
+		<div style="float: left"><input type="button" id="insert" name="insert" value="{$lang_update}" onclick="updateAction();" /></div>
+
+		<div style="float: left">&nbsp;<input type="button" id="apply" name="apply" value="{$lang_style_apply}" onclick="applyAction();" class="updateButton" /></div>
+		<br style="clear: both" />
+	</div>
+
+	<div style="float: right">
+		<input type="button" id="cancel" name="cancel" value="{$lang_cancel}" onclick="tinyMCEPopup.close();" />
+	</div>
+</div>
+</form>
+
+<div style="display: none">
+	<div id="container"></div>
+</div>
+</body>
+</html>

Added: labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/plugins/style/readme.txt
===================================================================
--- labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/plugins/style/readme.txt	2007-01-11 22:09:16 UTC (rev 8831)
+++ labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/plugins/style/readme.txt	2007-01-11 22:10:56 UTC (rev 8832)
@@ -0,0 +1 @@
+Check the TinyMCE documentation for details on this plugin.

Added: labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/plugins/table/cell.htm
===================================================================
--- labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/plugins/table/cell.htm	2007-01-11 22:09:16 UTC (rev 8831)
+++ labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/plugins/table/cell.htm	2007-01-11 22:10:56 UTC (rev 8832)
@@ -0,0 +1,182 @@
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+	<title>{$lang_table_cell_title}</title>
+	<script language="javascript" type="text/javascript" src="../../tiny_mce_popup.js"></script>
+	<script language="javascript" type="text/javascript" src="../../utils/mctabs.js"></script>
+	<script language="javascript" type="text/javascript" src="../../utils/form_utils.js"></script>
+	<script language="javascript" type="text/javascript" src="jscripts/cell.js"></script>
+	<link href="css/cell.css" rel="stylesheet" type="text/css" />
+	<base target="_self" />
+</head>
+<body id="tablecell" onload="tinyMCEPopup.executeOnLoad('init();');" style="display: none">
+	<form onsubmit="updateAction();return false;" action="#">
+		<div class="tabs">
+			<ul>
+				<li id="general_tab" class="current"><span><a href="javascript:mcTabs.displayTab('general_tab','general_panel');" onmousedown="return false;">{$lang_table_general_tab}</a></span></li>
+				<li id="advanced_tab"><span><a href="javascript:mcTabs.displayTab('advanced_tab','advanced_panel');" onmousedown="return false;">{$lang_table_advanced_tab}</a></span></li>
+			</ul>
+		</div>
+
+		<div class="panel_wrapper">
+			<div id="general_panel" class="panel current">
+				<fieldset>
+					<legend>{$lang_table_general_props}</legend>
+
+					<table border="0" cellpadding="4" cellspacing="0">
+						<tr>
+							<td><label for="align">{$lang_table_align}</label></td>
+							<td>
+								<select id="align" name="align">
+									<option value="">{$lang_not_set}</option>
+									<option value="center">{$lang_table_align_middle}</option>
+									<option value="left">{$lang_table_align_left}</option>
+									<option value="right">{$lang_table_align_right}</option>
+								</select>
+							</td>
+		
+							<td><label for="celltype">{$lang_table_cell_type}</label></td>
+							<td>
+								<select id="celltype" name="celltype">
+									<option value="td">{$lang_table_td}</option>
+									<option value="th">{$lang_table_th}</option>
+								</select>
+							</td>
+						</tr>
+
+						<tr>
+							<td><label for="valign">{$lang_table_valign}</label></td>
+							<td>
+								<select id="valign" name="valign">
+									<option value="">{$lang_not_set}</option>
+									<option value="top">{$lang_table_align_top}</option>
+									<option value="middle">{$lang_table_align_middle}</option>
+									<option value="bottom">{$lang_table_align_bottom}</option>
+								</select>
+							</td>
+
+							<td><label for="scope">{$lang_table_scope}</label></td>
+							<td>
+								<select id="scope" name="scope">
+									<option value="">{$lang_not_set}</option>
+									<option value="col">{$lang_table_col}</option>
+									<option value="row">{$lang_table_row}</option>
+									<option value="rowgroup">{$lang_table_rowgroup}</option>
+									<option value="colgroup">{$lang_table_colgroup}</option>
+								</select>
+							</td>
+
+						</tr>
+
+						<tr>
+							<td><label for="width">{$lang_table_width}</label></td>
+							<td><input id="width" name="width" type="text" value="" size="4" maxlength="4" onchange="changedSize();" /></td>
+
+							<td><label for="height">{$lang_table_height}</label></td>
+							<td><input id="height" name="height" type="text" value="" size="4" maxlength="4" onchange="changedSize();" /></td>
+						</tr>
+
+						<tr id="styleSelectRow">
+							<td><label for="class">{$lang_class_name}</label></td>
+							<td colspan="3">
+								<select id="class" name="class">
+									<option value="" selected="selected">{$lang_not_set}</option>
+								</select>
+							</td>
+						</tr>
+					</table>
+				</fieldset>
+			</div>
+
+			<div id="advanced_panel" class="panel">
+				<fieldset>
+					<legend>{$lang_table_advanced_props}</legend>
+
+					<table border="0" cellpadding="0" cellspacing="4">
+						<tr>
+							<td class="column1"><label for="id">{$lang_table_id}</label></td> 
+							<td><input id="id" name="id" type="text" value="" style="width: 200px" /></td> 
+						</tr>
+
+						<tr>
+							<td><label for="style">{$lang_table_style}</label></td>
+							<td><input type="text" id="style" name="style" value="" style="width: 200px;" onchange="changedStyle();" /></td>
+						</tr>
+
+						<tr>
+							<td class="column1"><label for="dir">{$lang_table_langdir}</label></td> 
+							<td>
+								<select id="dir" name="dir" style="width: 200px"> 
+										<option value="">{$lang_not_set}</option> 
+										<option value="ltr">{$lang_table_ltr}</option> 
+										<option value="rtl">{$lang_table_rtl}</option> 
+								</select>
+							</td> 
+						</tr>
+
+						<tr>
+							<td class="column1"><label for="lang">{$lang_table_langcode}</label></td> 
+							<td>
+								<input id="lang" name="lang" type="text" value="" style="width: 200px" />
+							</td> 
+						</tr>
+
+						<tr>
+							<td class="column1"><label for="backgroundimage">{$lang_table_bgimage}</label></td> 
+							<td>
+								<table border="0" cellpadding="0" cellspacing="0">
+									<tr>
+										<td><input id="backgroundimage" name="backgroundimage" type="text" value="" style="width: 200px" onchange="changedBackgroundImage();" /></td>
+										<td id="backgroundimagebrowsercontainer">&nbsp;</td>
+									</tr>
+								</table>
+							</td> 
+						</tr>
+
+						<tr>
+							<td class="column1"><label for="bordercolor">{$lang_table_bordercolor}</label></td> 
+							<td>
+								<table border="0" cellpadding="0" cellspacing="0">
+									<tr>
+										<td><input id="bordercolor" name="bordercolor" type="text" value="" size="9" onchange="updateColor('bordercolor_pick','bordercolor');changedColor();" /></td>
+										<td id="bordercolor_pickcontainer">&nbsp;</td>
+									</tr>
+								</table>
+							</td> 
+						</tr>
+
+						<tr>
+							<td class="column1"><label for="bgcolor">{$lang_table_bgcolor}</label></td> 
+							<td>
+								<table border="0" cellpadding="0" cellspacing="0">
+									<tr>
+										<td><input id="bgcolor" name="bgcolor" type="text" value="" size="9" onchange="updateColor('bgcolor_pick','bgcolor');changedColor();" /></td>
+										<td id="bgcolor_pickcontainer">&nbsp;</td>
+									</tr>
+								</table>
+							</td> 
+						</tr>
+					</table>
+				</fieldset>
+			</div>
+		</div>
+
+		<div class="mceActionPanel">
+			<div>
+				<select id="action" name="action">
+					<option value="cell">{$lang_table_cell_cell}</option>
+					<option value="row">{$lang_table_cell_row}</option>
+					<option value="all">{$lang_table_cell_all}</option>
+				</select>
+			</div>
+
+			<div style="float: left">
+				<div><input type="button" id="insert" name="insert" value="{$lang_update}" onclick="updateAction();" /></div>
+			</div>
+
+			<div style="float: right">
+				<input type="button" id="cancel" name="cancel" value="{$lang_cancel}" onclick="tinyMCEPopup.close();" />
+			</div>
+		</div>
+	</form>
+</body>
+</html>

Added: labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/plugins/table/css/cell.css
===================================================================
--- labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/plugins/table/css/cell.css	2007-01-11 22:09:16 UTC (rev 8831)
+++ labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/plugins/table/css/cell.css	2007-01-11 22:10:56 UTC (rev 8832)
@@ -0,0 +1,17 @@
+/* CSS file for cell dialog in the table plugin */
+
+.panel_wrapper div.current {
+	height: 200px;
+}
+
+.advfield {
+	width: 200px;
+}
+
+#action {
+	margin-bottom: 3px;
+}
+
+#class {
+	width: 150px;
+}
\ No newline at end of file

Added: labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/plugins/table/css/row.css
===================================================================
--- labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/plugins/table/css/row.css	2007-01-11 22:09:16 UTC (rev 8831)
+++ labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/plugins/table/css/row.css	2007-01-11 22:10:56 UTC (rev 8832)
@@ -0,0 +1,25 @@
+/* CSS file for row dialog in the table plugin */
+
+.panel_wrapper div.current {
+	height: 200px;
+}
+
+.advfield {
+	width: 200px;
+}
+
+#action {
+	margin-bottom: 3px;
+}
+
+#rowtype,#align,#valign,#class,#height {
+	width: 150px;
+}
+
+#height {
+	width: 50px;	
+}
+
+.col2 {
+	padding-left: 20px;
+}

Added: labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/plugins/table/css/table.css
===================================================================
--- labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/plugins/table/css/table.css	2007-01-11 22:09:16 UTC (rev 8831)
+++ labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/plugins/table/css/table.css	2007-01-11 22:10:56 UTC (rev 8832)
@@ -0,0 +1,13 @@
+/* CSS file for table dialog in the table plugin */
+
+.panel_wrapper div.current {
+	height: 220px;
+}
+
+.advfield {
+	width: 200px;
+}
+
+#class {
+	width: 150px;
+}

Added: labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/plugins/table/editor_plugin.js
===================================================================
--- labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/plugins/table/editor_plugin.js	2007-01-11 22:09:16 UTC (rev 8831)
+++ labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/plugins/table/editor_plugin.js	2007-01-11 22:10:56 UTC (rev 8832)
@@ -0,0 +1 @@
+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','lan!
 g_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=="tablecontrol!
 s"){var html="";html+=tinyMCE.getControlHTML("table");html+=tinyMCE.ge
tControlHTML("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"mceTableCutR!
 ow":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_befor!
 e','mceButtonDisabled');tinyMCE.switchClass(editor_id+'_col_after','mc
eButtonDisabled');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_c!
 ells','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.getParen!
 tElement(focusElm,"tr");var tdElm=tinyMCE.getParentElement(focusElm,"t
d,th");var tableElm=tinyMCE.getParentElement(focusElm,"table");var doc=inst.contentWindow.document;var tableBorder=tableElm?tableElm.getAttribute("border"):"";if(trElm&&tdElm==null)tdElm=trElm.cells[0];function inArray(ar,v){for(var i=0;i<ar.length;i++){if(ar[i].length>0&&inArray(ar[i],v))return true;if(ar[i]==v)return true}return false}function makeTD(){var newTD=doc.createElement("td");newTD.innerHTML="&nbsp;"}function getColRowSpan(td){var colspan=tinyMCE.getAttrib(td,"colspan");var rowspan=tinyMCE.getAttrib(td,"rowspan");colspan=colspan==""?1:parseInt(colspan);rowspan=rowspan==""?1:parseInt(rowspan);return{colspan:colspan,rowspan:rowspan}}function getCellPos(grid,td){var x,y;for(y=0;y<grid.length;y++){for(x=0;x<grid[y].length;x++){if(grid[y][x]==td)return{cellindex:x,rowindex:y}}}return null}function getCell(grid,row,col){if(grid[row]&&grid[row][col])return grid[row][col];return null}function getTableGrid(table){var grid=new Array(),rows=table.rows,x,y,td,sd,xstart,x2,y2!
 ;for(y=0;y<rows.length;y++){for(x=0;x<rows[y].cells.length;x++){td=rows[y].cells[x];sd=getColRowSpan(td);for(xstart=x;grid[y]&&grid[y][xstart];xstart++);for(y2=y;y2<y+sd['rowspan'];y2++){if(!grid[y2])grid[y2]=new Array();for(x2=xstart;x2<xstart+sd['colspan'];x2++)grid[y2][x2]=td}}}return grid}function trimRow(table,tr,td,new_tr){var grid=getTableGrid(table),cpos=getCellPos(grid,td);var cells,lastElm;if(new_tr.cells.length!=tr.childNodes.length){cells=tr.childNodes;lastElm=null;for(var x=0;td=getCell(grid,cpos.rowindex,x);x++){var remove=true;var sd=getColRowSpan(td);if(inArray(cells,td)){new_tr.childNodes[x]._delete=true}else if((lastElm==null||td!=lastElm)&&sd.colspan>1){for(var i=x;i<x+td.colSpan;i++)new_tr.childNodes[i]._delete=true}if((lastElm==null||td!=lastElm)&&sd.rowspan>1)td.rowSpan=sd.rowspan+1;lastElm=td}deleteMarked(tableElm)}}function prevElm(node,name){while((node=node.previousSibling)!=null){if(node.nodeName==name)return node}return null}function nextElm(node!
 ,names){var namesAr=names.split(',');while((node=node.nextSibling)!=nu
ll){for(var i=0;i<namesAr.length;i++){if(node.nodeName.toLowerCase()==namesAr[i].toLowerCase())return node}}return null}function deleteMarked(tbl){if(tbl.rows==0)return;var tr=tbl.rows[0];do{var next=nextElm(tr,"TR");if(tr._delete){tr.parentNode.removeChild(tr);continue}var td=tr.cells[0];if(td.cells>1){do{var nexttd=nextElm(td,"TD,TH");if(td._delete)td.parentNode.removeChild(td)}while((td=nexttd)!=null)}}while((tr=next)!=null)}function addRows(td_elm,tr_elm,rowspan){td_elm.rowSpan=1;var trNext=nextElm(tr_elm,"TR");for(var i=1;i<rowspan&&trNext;i++){var newTD=doc.createElement("td");newTD.innerHTML="&nbsp;";if(tinyMCE.isMSIE)trNext.insertBefore(newTD,trNext.cells(td_elm.cellIndex));else trNext.insertBefore(newTD,trNext.cells[td_elm.cellIndex]);trNext=nextElm(trNext,"TR")}}function copyRow(doc,table,tr){var grid=getTableGrid(table);var newTR=tr.cloneNode(false);var cpos=getCellPos(grid,tr.cells[0]);var lastCell=null;var tableBorder=tinyMCE.getAttrib(table,"border");var tdElm=!
 null;for(var x=0;tdElm=getCell(grid,cpos.rowindex,x);x++){var newTD=null;if(lastCell!=tdElm){for(var i=0;i<tr.cells.length;i++){if(tdElm==tr.cells[i]){newTD=tdElm.cloneNode(true);break}}}if(newTD==null){newTD=doc.createElement("td");newTD.innerHTML="&nbsp;"}newTD.colSpan=1;newTD.rowSpan=1;newTR.appendChild(newTD);lastCell=tdElm}return newTR}switch(command){case"mceTableRowProps":if(trElm==null)return true;if(user_interface){var template=new Array();template['file']='../../plugins/table/row.htm';template['width']=380;template['height']=295;template['width']+=tinyMCE.getLang('lang_table_rowprops_delta_width',0);template['height']+=tinyMCE.getLang('lang_table_rowprops_delta_height',0);tinyMCE.openWindow(template,{editor_id:inst.editorId,inline:"yes"})}return true;case"mceTableCellProps":if(tdElm==null)return true;if(user_interface){var template=new Array();template['file']='../../plugins/table/cell.htm';template['width']=380;template['height']=295;template['width']+=tinyMCE.ge!
 tLang('lang_table_cellprops_delta_width',0);template['height']+=tinyMC
E.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"mceTablePasteR!
 owAfter":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 gri!
 d=getTableGrid(tableElm);var cpos=getCellPos(grid,tdElm);var newTR=doc
.createElement("tr");var lastTDElm=null;cpos.rowindex--;if(cpos.rowindex<0)cpos.rowindex=0;for(var x=0;tdElm=getCell(grid,cpos.rowindex,x);x++){if(tdElm!=lastTDElm){var sd=getColRowSpan(tdElm);if(sd['rowspan']==1){var newTD=doc.createElement("td");newTD.innerHTML="&nbsp;";newTD.colSpan=tdElm.colSpan;newTR.appendChild(newTD)}else tdElm.rowSpan=sd['rowspan']+1;lastTDElm=tdElm}}trElm.parentNode.insertBefore(newTR,trElm);grid=getTableGrid(tableElm);inst.selection.selectNode(getCell(grid,cpos.rowindex+1,cpos.cellindex),tinyMCE.isGecko,true);break;case"mceTableInsertRowAfter":if(!trElm||!tdElm)return true;var grid=getTableGrid(tableElm);var cpos=getCellPos(grid,tdElm);var newTR=doc.createElement("tr");var lastTDElm=null;for(var x=0;tdElm=getCell(grid,cpos.rowindex,x);x++){if(tdElm!=lastTDElm){var sd=getColRowSpan(tdElm);if(sd['rowspan']==1){var newTD=doc.createElement("td");newTD.innerHTML="&nbsp;";newTD.colSpan=tdElm.colSpan;newTR.appendChild(newTD)}else tdElm.rowSpan=sd['rowspan!
 ']+1;lastTDElm=tdElm}}if(newTR.hasChildNodes()){var nextTR=nextElm(trElm,"TR");if(nextTR)nextTR.parentNode.insertBefore(newTR,nextTR);else tableElm.appendChild(newTR)}grid=getTableGrid(tableElm);inst.selection.selectNode(getCell(grid,cpos.rowindex,cpos.cellindex),tinyMCE.isGecko,true);break;case"mceTableDeleteRow":if(!trElm||!tdElm)return true;var grid=getTableGrid(tableElm);var cpos=getCellPos(grid,tdElm);if(grid.length==1){tableElm=tinyMCE.getParentElement(tableElm,"table");tableElm.parentNode.removeChild(tableElm);return true}var cells=trElm.cells;var nextTR=nextElm(trElm,"TR");for(var x=0;x<cells.length;x++){if(cells[x].rowSpan>1){var newTD=cells[x].cloneNode(true);var sd=getColRowSpan(cells[x]);newTD.rowSpan=sd.rowspan-1;var nextTD=nextTR.cells[x];if(nextTD==null)nextTR.appendChild(newTD);else nextTR.insertBefore(newTD,nextTD)}}var lastTDElm=null;for(var x=0;tdElm=getCell(grid,cpos.rowindex,x);x++){if(tdElm!=lastTDElm){var sd=getColRowSpan(tdElm);if(sd.rowspan>1){tdElm!
 .rowSpan=sd.rowspan-1}else{trElm=tdElm.parentNode;if(trElm.parentNode)
trElm._delete=true}lastTDElm=tdElm}}deleteMarked(tableElm);cpos.rowindex--;if(cpos.rowindex<0)cpos.rowindex=0;grid=getTableGrid(tableElm);inst.selection.selectNode(getCell(grid,cpos.rowindex,0),tinyMCE.isGecko,true);break;case"mceTableInsertColBefore":if(!trElm||!tdElm)return true;var grid=getTableGrid(tableElm);var cpos=getCellPos(grid,tdElm);var lastTDElm=null;for(var y=0;tdElm=getCell(grid,y,cpos.cellindex);y++){if(tdElm!=lastTDElm){var sd=getColRowSpan(tdElm);if(sd['colspan']==1){var newTD=doc.createElement(tdElm.nodeName);newTD.innerHTML="&nbsp;";newTD.rowSpan=tdElm.rowSpan;tdElm.parentNode.insertBefore(newTD,tdElm)}else tdElm.colSpan++;lastTDElm=tdElm}}grid=getTableGrid(tableElm);inst.selection.selectNode(getCell(grid,cpos.rowindex,cpos.cellindex+1),tinyMCE.isGecko,true);break;case"mceTableInsertColAfter":if(!trElm||!tdElm)return true;var grid=getTableGrid(tableElm);var cpos=getCellPos(grid,tdElm);var lastTDElm=null;for(var y=0;tdElm=getCell(grid,y,cpos.cellindex);y++)!
 {if(tdElm!=lastTDElm){var sd=getColRowSpan(tdElm);if(sd['colspan']==1){var newTD=doc.createElement(tdElm.nodeName);newTD.innerHTML="&nbsp;";newTD.rowSpan=tdElm.rowSpan;var nextTD=nextElm(tdElm,"TD,TH");if(nextTD==null)tdElm.parentNode.appendChild(newTD);else nextTD.parentNode.insertBefore(newTD,nextTD)}else tdElm.colSpan++;lastTDElm=tdElm}}grid=getTableGrid(tableElm);inst.selection.selectNode(getCell(grid,cpos.rowindex,cpos.cellindex),tinyMCE.isGecko,true);break;case"mceTableDeleteCol":if(!trElm||!tdElm)return true;var grid=getTableGrid(tableElm);var cpos=getCellPos(grid,tdElm);var lastTDElm=null;if(grid.length>1&&grid[0].length<=1){tableElm=tinyMCE.getParentElement(tableElm,"table");tableElm.parentNode.removeChild(tableElm);return true}for(var y=0;tdElm=getCell(grid,y,cpos.cellindex);y++){if(tdElm!=lastTDElm){var sd=getColRowSpan(tdElm);if(sd['colspan']>1)tdElm.colSpan=sd['colspan']-1;else{if(tdElm.parentNode)tdElm.parentNode.removeChild(tdElm)}lastTDElm=tdElm}}cpos.cellin!
 dex--;if(cpos.cellindex<0)cpos.cellindex=0;grid=getTableGrid(tableElm)
;inst.selection.selectNode(getCell(grid,cpos.rowindex,0),tinyMCE.isGecko,true);break;case"mceTableSplitCells":if(!trElm||!tdElm)return true;var spandata=getColRowSpan(tdElm);var colspan=spandata["colspan"];var rowspan=spandata["rowspan"];if(colspan>1||rowspan>1){tdElm.colSpan=1;for(var i=1;i<colspan;i++){var newTD=doc.createElement("td");newTD.innerHTML="&nbsp;";trElm.insertBefore(newTD,nextElm(tdElm,"TD,TH"));if(rowspan>1)addRows(newTD,trElm,rowspan)}addRows(tdElm,trElm,rowspan)}tableElm=tinyMCE.getParentElement(inst.getFocusElement(),"table");break;case"mceTableMergeCells":var rows=new Array();var sel=inst.getSel();var grid=getTableGrid(tableElm);if(tinyMCE.isMSIE||sel.rangeCount==1){if(user_interface){var template=new Array();var sp=getColRowSpan(tdElm);template['file']='../../plugins/table/merge_cells.htm';template['width']=250;template['height']=105+(tinyMCE.isNS7?25:0);template['width']+=tinyMCE.getLang('lang_table_merge_cells_delta_width',0);template['height']+=tinyMC!
 E.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.chil!
 dNodes[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(rowColSp!
 an>colSpan)colSpan=rowColSpan;lastRowSpan=-1}var lastColSpan=-1;for(var x=0;x<rows[0].length;x++){var colRowSpan=0;for(var y=0;y<rows.length;y++){var sd=getColRowSpan(rows[y][x]);colRowSpan+=sd['rowspan'];if(lastColSpan!=-1&&sd['colspan']!=lastColSpan){alert("Invalid selection for merge.");return true}lastColSpan=sd['colspan']}if(colRowSpan>rowSpan)rowSpan=colRowSpan;lastColSpan=-1}tdElm=rows[0][0];tdElm.rowSpan=rowSpan;tdElm.colSpan=colSpan;for(var y=0;y<rows.length;y++){for(var x=0;x<rows[y].length;x++){var html=rows[y][x].innerHTML;var chk=tinyMCE.regexpReplace(html,"[ \t\r\n]","");if(chk!="<br/>"&&chk!="<br>"&&chk!="&nbsp;"&&(x+y>0))tdElm.innerHTML+=html;if(rows[y][x]!=tdElm&&!rows[y][x]._deleted){var cpos=getCellPos(grid,rows[y][x]);var tr=rows[y][x].parentNode;tr.removeChild(rows[y][x]);rows[y][x]._deleted=true;if(!tr.hasChildNodes()){tr.parentNode.removeChild(tr);var lastCell=null;for(var x=0;cellElm=getCell(grid,cpos.rowindex,x);x++){if(cellElm!=lastCell&&cellElm.ro!
 wSpan>1)cellElm.rowSpan--;lastCell=cellElm}if(tdElm.rowSpan>1)tdElm.ro
wSpan--}}}}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);
\ No newline at end of file

Added: labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/plugins/table/editor_plugin_src.js
===================================================================
--- labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/plugins/table/editor_plugin_src.js	2007-01-11 22:09:16 UTC (rev 8831)
+++ labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/plugins/table/editor_plugin_src.js	2007-01-11 22:10:56 UTC (rev 8832)
@@ -0,0 +1,1073 @@
+/**
+ * $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');
+
+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;
+	},
+
+	/**
+	 * Returns the HTML contents of the table control.
+	 */
+	getControlHTML : function(control_name) {
+		var controls = new Array(
+			['table', 'table.gif', 'lang_table_desc', 'mceInsertTable', true],
+			['delete_table', 'table_delete.gif', 'lang_table_del', 'mceTableDelete'],
+			['delete_col', 'table_delete_col.gif', 'lang_table_delete_col_desc', 'mceTableDeleteCol'],
+			['delete_row', 'table_delete_row.gif', 'lang_table_delete_row_desc', 'mceTableDeleteRow'],
+			['col_after', 'table_insert_col_after.gif', 'lang_table_col_after_desc', 'mceTableInsertColAfter'],
+			['col_before', 'table_insert_col_before.gif', 'lang_table_col_before_desc', 'mceTableInsertColBefore'],
+			['row_after', 'table_insert_row_after.gif', 'lang_table_row_after_desc', 'mceTableInsertRowAfter'],
+			['row_before', 'table_insert_row_before.gif', 'lang_table_row_before_desc', 'mceTableInsertRowBefore'],
+			['row_props', 'table_row_props.gif', 'lang_table_row_desc', 'mceTableRowProps', true],
+			['cell_props', 'table_cell_props.gif', 'lang_table_cell_desc', 'mceTableCellProps', true],
+			['split_cells', 'table_split_cells.gif', 'lang_table_split_cells_desc', 'mceTableSplitCells', true],
+			['merge_cells', 'table_merge_cells.gif', 'lang_table_merge_cells_desc', 'mceTableMergeCells', true]);
+
+		// Render table control
+		for (var i=0; i<controls.length; i++) {
+			var but = controls[i];
+			var cmd = 'tinyMCE.execInstanceCommand(\'{$editor_id}\',\'' + but[3] + '\', ' + (but.length > 4 ? but[4] : false) + (but.length > 5 ? ', \'' + but[5] + '\'' : '') + ');return false;';
+
+			if (but[0] == control_name)
+				return tinyMCE.getButtonHTML(control_name, but[2], '{$pluginurl}/images/'+ but[1], but[3], (but.length > 4 ? but[4] : false));
+		}
+
+		// Special tablecontrols
+		if (control_name == "tablecontrols") {
+			var html = "";
+
+			html += tinyMCE.getControlHTML("table");
+			html += tinyMCE.getControlHTML("separator");
+			html += tinyMCE.getControlHTML("row_props");
+			html += tinyMCE.getControlHTML("cell_props");
+			html += tinyMCE.getControlHTML("separator");
+			html += tinyMCE.getControlHTML("row_before");
+			html += tinyMCE.getControlHTML("row_after");
+			html += tinyMCE.getControlHTML("delete_row");
+			html += tinyMCE.getControlHTML("separator");
+			html += tinyMCE.getControlHTML("col_before");
+			html += tinyMCE.getControlHTML("col_after");
+			html += tinyMCE.getControlHTML("delete_col");
+			html += tinyMCE.getControlHTML("separator");
+			html += tinyMCE.getControlHTML("split_cells");
+			html += tinyMCE.getControlHTML("merge_cells");
+
+			return html;
+		}
+
+		return "";
+	},
+
+	/**
+	 * Executes the table commands.
+	 */
+	execCommand : function(editor_id, element, command, user_interface, value) {
+		// Is table command
+		switch (command) {
+			case "mceInsertTable":
+			case "mceTableRowProps":
+			case "mceTableCellProps":
+			case "mceTableSplitCells":
+			case "mceTableMergeCells":
+			case "mceTableInsertRowBefore":
+			case "mceTableInsertRowAfter":
+			case "mceTableDeleteRow":
+			case "mceTableInsertColBefore":
+			case "mceTableInsertColAfter":
+			case "mceTableDeleteCol":
+			case "mceTableCutRow":
+			case "mceTableCopyRow":
+			case "mceTablePasteRowBefore":
+			case "mceTablePasteRowAfter":
+			case "mceTableDelete":
+				var inst = tinyMCE.getInstanceById(editor_id);
+
+				inst.execCommand('mceBeginUndoLevel');
+				TinyMCE_TablePlugin._doExecCommand(editor_id, element, command, user_interface, value);
+				inst.execCommand('mceEndUndoLevel');
+
+				return true;
+		}
+
+		// Pass to next handler in chain
+		return false;
+	},
+
+	handleNodeChange : function(editor_id, node, undo_index, undo_levels, visual_aid, any_selection) {
+		var colspan = "1", rowspan = "1", tdElm;
+
+		var inst = tinyMCE.getInstanceById(editor_id);
+
+		// Reset table controls
+		tinyMCE.switchClass(editor_id + '_table', 'mceButtonNormal');
+		tinyMCE.switchClass(editor_id + '_delete_table', 'mceButtonDisabled');
+		tinyMCE.switchClass(editor_id + '_row_props', 'mceButtonDisabled');
+		tinyMCE.switchClass(editor_id + '_cell_props', 'mceButtonDisabled');
+		tinyMCE.switchClass(editor_id + '_row_before', 'mceButtonDisabled');
+		tinyMCE.switchClass(editor_id + '_row_after', 'mceButtonDisabled');
+		tinyMCE.switchClass(editor_id + '_delete_row', 'mceButtonDisabled');
+		tinyMCE.switchClass(editor_id + '_col_before', 'mceButtonDisabled');
+		tinyMCE.switchClass(editor_id + '_col_after', 'mceButtonDisabled');
+		tinyMCE.switchClass(editor_id + '_delete_col', 'mceButtonDisabled');
+		tinyMCE.switchClass(editor_id + '_split_cells', 'mceButtonDisabled');
+		tinyMCE.switchClass(editor_id + '_merge_cells', 'mceButtonDisabled');
+
+		// Within a td element
+		if (tdElm = tinyMCE.getParentElement(node, "td,th")) {
+			tinyMCE.switchClass(editor_id + '_cell_props', 'mceButtonSelected');
+			tinyMCE.switchClass(editor_id + '_delete_table', 'mceButtonNormal');
+			tinyMCE.switchClass(editor_id + '_row_before', 'mceButtonNormal');
+			tinyMCE.switchClass(editor_id + '_row_after', 'mceButtonNormal');
+			tinyMCE.switchClass(editor_id + '_delete_row', 'mceButtonNormal');
+			tinyMCE.switchClass(editor_id + '_col_before', 'mceButtonNormal');
+			tinyMCE.switchClass(editor_id + '_col_after', 'mceButtonNormal');
+			tinyMCE.switchClass(editor_id + '_delete_col', 'mceButtonNormal');
+
+			colspan = tinyMCE.getAttrib(tdElm, "colspan");
+			rowspan = tinyMCE.getAttrib(tdElm, "rowspan");
+
+			colspan = colspan == "" ? "1" : colspan;
+			rowspan = rowspan == "" ? "1" : rowspan;
+
+			if (colspan != "1" || rowspan != "1")
+				tinyMCE.switchClass(editor_id + '_split_cells', 'mceButtonNormal');
+		}
+
+		// Within a tr element
+		if (tinyMCE.getParentElement(node, "tr"))
+			tinyMCE.switchClass(editor_id + '_row_props', 'mceButtonSelected');
+
+		// Within table
+		if (tinyMCE.getParentElement(node, "table")) {
+			tinyMCE.switchClass(editor_id + '_table', 'mceButtonSelected');
+			tinyMCE.switchClass(editor_id + '_merge_cells', 'mceButtonNormal');
+		}
+	},
+
+	// Private plugin internal methods
+
+	_mouseDownHandler : function(e) {
+		var elm = tinyMCE.isMSIE ? event.srcElement : e.target;
+		var focusElm = tinyMCE.selectedInstance.getFocusElement();
+
+		// If press on special Mozilla create TD/TR thingie
+		if (elm.nodeName == "BODY" && (focusElm.nodeName == "TD" || focusElm.nodeName == "TH" || (focusElm.parentNode && focusElm.parentNode.nodeName == "TD") ||(focusElm.parentNode && focusElm.parentNode.nodeName == "TH") )) {
+			window.setTimeout(function() {
+				var tableElm = tinyMCE.getParentElement(focusElm, "table");
+				tinyMCE.handleVisualAid(tableElm, true, tinyMCE.settings['visual'], tinyMCE.selectedInstance);
+			}, 10);
+		}
+	},
+
+	/**
+	 * Executes the table commands.
+	 */
+	_doExecCommand : function(editor_id, element, command, user_interface, value) {
+		var inst = tinyMCE.getInstanceById(editor_id);
+		var focusElm = inst.getFocusElement();
+		var trElm = tinyMCE.getParentElement(focusElm, "tr");
+		var tdElm = tinyMCE.getParentElement(focusElm, "td,th");
+		var tableElm = tinyMCE.getParentElement(focusElm, "table");
+		var doc = inst.contentWindow.document;
+		var tableBorder = tableElm ? tableElm.getAttribute("border") : "";
+
+		// Get first TD if no TD found
+		if (trElm && tdElm == null)
+			tdElm = trElm.cells[0];
+
+		// ------- Inner functions ---------
+		function inArray(ar, v) {
+			for (var i=0; i<ar.length; i++) {
+				// Is array
+				if (ar[i].length > 0 && inArray(ar[i], v))
+					return true;
+
+				// Found value
+				if (ar[i] == v)
+					return true;
+			}
+
+			return false;
+		}
+
+		function makeTD() {
+			var newTD = doc.createElement("td");
+			newTD.innerHTML = "&nbsp;";
+		}
+
+		function getColRowSpan(td) {
+			var colspan = tinyMCE.getAttrib(td, "colspan");
+			var rowspan = tinyMCE.getAttrib(td, "rowspan");
+
+			colspan = colspan == "" ? 1 : parseInt(colspan);
+			rowspan = rowspan == "" ? 1 : parseInt(rowspan);
+
+			return {colspan : colspan, rowspan : rowspan};
+		}
+
+		function getCellPos(grid, td) {
+			var x, y;
+
+			for (y=0; y<grid.length; y++) {
+				for (x=0; x<grid[y].length; x++) {
+					if (grid[y][x] == td)
+						return {cellindex : x, rowindex : y};
+				}
+			}
+
+			return null;
+		}
+
+		function getCell(grid, row, col) {
+			if (grid[row] && grid[row][col])
+				return grid[row][col];
+
+			return null;
+		}
+
+		function getTableGrid(table) {
+			var grid = new Array(), rows = table.rows, x, y, td, sd, xstart, x2, y2;
+
+			for (y=0; y<rows.length; y++) {
+				for (x=0; x<rows[y].cells.length; x++) {
+					td = rows[y].cells[x];
+					sd = getColRowSpan(td);
+
+					// All ready filled
+					for (xstart = x; grid[y] && grid[y][xstart]; xstart++) ;
+
+					// Fill box
+					for (y2=y; y2<y+sd['rowspan']; y2++) {
+						if (!grid[y2])
+							grid[y2] = new Array();
+
+						for (x2=xstart; x2<xstart+sd['colspan']; x2++)
+							grid[y2][x2] = td;
+					}
+				}
+			}
+
+			return grid;
+		}
+
+		function trimRow(table, tr, td, new_tr) {
+			var grid = getTableGrid(table), cpos = getCellPos(grid, td);
+			var cells, lastElm;
+
+			// Time to crop away some
+			if (new_tr.cells.length != tr.childNodes.length) {
+				cells = tr.childNodes;
+				lastElm = null;
+
+				for (var x=0; td = getCell(grid, cpos.rowindex, x); x++) {
+					var remove = true;
+					var sd = getColRowSpan(td);
+
+					// Remove due to rowspan
+					if (inArray(cells, td)) {
+						new_tr.childNodes[x]._delete = true;
+					} else if ((lastElm == null || td != lastElm) && sd.colspan > 1) { // Remove due to colspan
+						for (var i=x; i<x+td.colSpan; i++)
+							new_tr.childNodes[i]._delete = true;
+					}
+
+					if ((lastElm == null || td != lastElm) && sd.rowspan > 1)
+						td.rowSpan = sd.rowspan + 1;
+
+					lastElm = td;
+				}
+
+				deleteMarked(tableElm);
+			}
+		}
+
+		function prevElm(node, name) {
+			while ((node = node.previousSibling) != null) {
+				if (node.nodeName == name)
+					return node;
+			}
+
+			return null;
+		}
+
+		function nextElm(node, names) {
+			var namesAr = names.split(',');
+
+			while ((node = node.nextSibling) != null) {
+				for (var i=0; i<namesAr.length; i++) {
+					if (node.nodeName.toLowerCase() == namesAr[i].toLowerCase() )
+						return node;
+				}
+			}
+
+			return null;
+		}
+
+		function deleteMarked(tbl) {
+			if (tbl.rows == 0)
+				return;
+
+			var tr = tbl.rows[0];
+			do {
+				var next = nextElm(tr, "TR");
+
+				// Delete row
+				if (tr._delete) {
+					tr.parentNode.removeChild(tr);
+					continue;
+				}
+
+				// Delete cells
+				var td = tr.cells[0];
+				if (td.cells > 1) {
+					do {
+						var nexttd = nextElm(td, "TD,TH");
+
+						if (td._delete)
+							td.parentNode.removeChild(td);
+					} while ((td = nexttd) != null);
+				}
+			} while ((tr = next) != null);
+		}
+
+		function addRows(td_elm, tr_elm, rowspan) {
+			// Add rows
+			td_elm.rowSpan = 1;
+			var trNext = nextElm(tr_elm, "TR");
+			for (var i=1; i<rowspan && trNext; i++) {
+				var newTD = doc.createElement("td");
+				newTD.innerHTML = "&nbsp;";
+
+				if (tinyMCE.isMSIE)
+					trNext.insertBefore(newTD, trNext.cells(td_elm.cellIndex));
+				else
+					trNext.insertBefore(newTD, trNext.cells[td_elm.cellIndex]);
+
+				trNext = nextElm(trNext, "TR");
+			}
+		}
+
+		function copyRow(doc, table, tr) {
+			var grid = getTableGrid(table);
+			var newTR = tr.cloneNode(false);
+			var cpos = getCellPos(grid, tr.cells[0]);
+			var lastCell = null;
+			var tableBorder = tinyMCE.getAttrib(table, "border");
+			var tdElm = null;
+
+			for (var x=0; tdElm = getCell(grid, cpos.rowindex, x); x++) {
+				var newTD = null;
+
+				if (lastCell != tdElm) {
+					for (var i=0; i<tr.cells.length; i++) {
+						if (tdElm == tr.cells[i]) {
+							newTD = tdElm.cloneNode(true);
+							break;
+						}
+					}
+				}
+
+				if (newTD == null) {
+					newTD = doc.createElement("td");
+					newTD.innerHTML = "&nbsp;";
+				}
+
+				// Reset col/row span
+				newTD.colSpan = 1;
+				newTD.rowSpan = 1;
+
+				newTR.appendChild(newTD);
+
+				lastCell = tdElm;
+			}
+
+			return newTR;
+		}
+
+		// ---- Commands -----
+
+		// Handle commands
+		switch (command) {
+			case "mceTableRowProps":
+				if (trElm == null)
+					return true;
+
+				if (user_interface) {
+					// Setup template
+					var template = new Array();
+
+					template['file'] = '../../plugins/table/row.htm';
+					template['width'] = 380;
+					template['height'] = 295;
+
+					// Language specific width and height addons
+					template['width'] += tinyMCE.getLang('lang_table_rowprops_delta_width', 0);
+					template['height'] += tinyMCE.getLang('lang_table_rowprops_delta_height', 0);
+
+					// Open window
+					tinyMCE.openWindow(template, {editor_id : inst.editorId, inline : "yes"});
+				}
+
+				return true;
+
+			case "mceTableCellProps":
+				if (tdElm == null)
+					return true;
+
+				if (user_interface) {
+					// Setup template
+					var template = new Array();
+
+					template['file'] = '../../plugins/table/cell.htm';
+					template['width'] = 380;
+					template['height'] = 295;
+
+					// Language specific width and height addons
+					template['width'] += tinyMCE.getLang('lang_table_cellprops_delta_width', 0);
+					template['height'] += tinyMCE.getLang('lang_table_cellprops_delta_height', 0);
+
+					// Open window
+					tinyMCE.openWindow(template, {editor_id : inst.editorId, inline : "yes"});
+				}
+
+				return true;
+
+			case "mceInsertTable":
+				if (user_interface) {
+					// Setup template
+					var template = new Array();
+
+					template['file'] = '../../plugins/table/table.htm';
+					template['width'] = 380;
+					template['height'] = 295;
+
+					// Language specific width and height addons
+					template['width'] += tinyMCE.getLang('lang_table_table_delta_width', 0);
+					template['height'] += tinyMCE.getLang('lang_table_table_delta_height', 0);
+
+					// Open window
+					tinyMCE.openWindow(template, {editor_id : inst.editorId, inline : "yes", action : value});
+				}
+
+				return true;
+
+			case "mceTableDelete":
+				var table = tinyMCE.getParentElement(inst.getFocusElement(), "table");
+				if (table) {
+					table.parentNode.removeChild(table);
+					inst.repaint();
+				}
+				return true;
+
+			case "mceTableSplitCells":
+			case "mceTableMergeCells":
+			case "mceTableInsertRowBefore":
+			case "mceTableInsertRowAfter":
+			case "mceTableDeleteRow":
+			case "mceTableInsertColBefore":
+			case "mceTableInsertColAfter":
+			case "mceTableDeleteCol":
+			case "mceTableCutRow":
+			case "mceTableCopyRow":
+			case "mceTablePasteRowBefore":
+			case "mceTablePasteRowAfter":
+				// No table just return (invalid command)
+				if (!tableElm)
+					return true;
+
+				// Table has a tbody use that reference
+				// Changed logic by ApTest 2005.07.12 (www.aptest.com)
+				// Now lookk at the focused element and take its parentNode.  That will be a tbody or a table.
+				if (trElm && tableElm != trElm.parentNode)
+					tableElm = trElm.parentNode;
+
+				if (tableElm && trElm) {
+					switch (command) {
+						case "mceTableCutRow":
+							if (!trElm || !tdElm)
+								return true;
+
+							inst.tableRowClipboard = copyRow(doc, tableElm, trElm);
+							inst.execCommand("mceTableDeleteRow");
+							break;
+
+						case "mceTableCopyRow":
+							if (!trElm || !tdElm)
+								return true;
+
+							inst.tableRowClipboard = copyRow(doc, tableElm, trElm);
+							break;
+
+						case "mceTablePasteRowBefore":
+							if (!trElm || !tdElm)
+								return true;
+
+							var newTR = inst.tableRowClipboard.cloneNode(true);
+
+							var prevTR = prevElm(trElm, "TR");
+							if (prevTR != null)
+								trimRow(tableElm, prevTR, prevTR.cells[0], newTR);
+
+							trElm.parentNode.insertBefore(newTR, trElm);
+							break;
+
+						case "mceTablePasteRowAfter":
+							if (!trElm || !tdElm)
+								return true;
+							
+							var nextTR = nextElm(trElm, "TR");
+							var newTR = inst.tableRowClipboard.cloneNode(true);
+
+							trimRow(tableElm, trElm, tdElm, newTR);
+
+							if (nextTR == null)
+								trElm.parentNode.appendChild(newTR);
+							else
+								nextTR.parentNode.insertBefore(newTR, nextTR);
+
+							break;
+
+						case "mceTableInsertRowBefore":
+							if (!trElm || !tdElm)
+								return true;
+
+							var grid = getTableGrid(tableElm);
+							var cpos = getCellPos(grid, tdElm);
+							var newTR = doc.createElement("tr");
+							var lastTDElm = null;
+
+							cpos.rowindex--;
+							if (cpos.rowindex < 0)
+								cpos.rowindex = 0;
+
+							// Create cells
+							for (var x=0; tdElm = getCell(grid, cpos.rowindex, x); x++) {
+								if (tdElm != lastTDElm) {
+									var sd = getColRowSpan(tdElm);
+
+									if (sd['rowspan'] == 1) {
+										var newTD = doc.createElement("td");
+
+										newTD.innerHTML = "&nbsp;";
+										newTD.colSpan = tdElm.colSpan;
+
+										newTR.appendChild(newTD);
+									} else
+										tdElm.rowSpan = sd['rowspan'] + 1;
+
+									lastTDElm = tdElm;
+								}
+							}
+
+							trElm.parentNode.insertBefore(newTR, trElm);
+
+							grid = getTableGrid(tableElm);
+							inst.selection.selectNode(getCell(grid, cpos.rowindex + 1, cpos.cellindex), tinyMCE.isGecko, true); // Only collape on gecko
+						break;
+
+						case "mceTableInsertRowAfter":
+							if (!trElm || !tdElm)
+								return true;
+
+							var grid = getTableGrid(tableElm);
+							var cpos = getCellPos(grid, tdElm);
+							var newTR = doc.createElement("tr");
+							var lastTDElm = null;
+
+							// Create cells
+							for (var x=0; tdElm = getCell(grid, cpos.rowindex, x); x++) {
+								if (tdElm != lastTDElm) {
+									var sd = getColRowSpan(tdElm);
+
+									if (sd['rowspan'] == 1) {
+										var newTD = doc.createElement("td");
+
+										newTD.innerHTML = "&nbsp;";
+										newTD.colSpan = tdElm.colSpan;
+
+										newTR.appendChild(newTD);
+									} else
+										tdElm.rowSpan = sd['rowspan'] + 1;
+
+									lastTDElm = tdElm;
+								}
+							}
+
+							if (newTR.hasChildNodes()) {
+								var nextTR = nextElm(trElm, "TR");
+								if (nextTR)
+									nextTR.parentNode.insertBefore(newTR, nextTR);
+								else
+									tableElm.appendChild(newTR);
+							}
+
+							grid = getTableGrid(tableElm);
+							inst.selection.selectNode(getCell(grid, cpos.rowindex, cpos.cellindex), tinyMCE.isGecko, true); // Only collape on gecko
+						break;
+
+						case "mceTableDeleteRow":
+							if (!trElm || !tdElm)
+								return true;
+
+							var grid = getTableGrid(tableElm);
+							var cpos = getCellPos(grid, tdElm);
+
+							// Only one row, remove whole table
+							if (grid.length == 1) {
+								tableElm = tinyMCE.getParentElement(tableElm, "table"); // Look for table instead of tbody
+								tableElm.parentNode.removeChild(tableElm);
+								return true;
+							}
+
+							// Move down row spanned cells
+							var cells = trElm.cells;
+							var nextTR = nextElm(trElm, "TR");
+							for (var x=0; x<cells.length; x++) {
+								if (cells[x].rowSpan > 1) {
+									var newTD = cells[x].cloneNode(true);
+									var sd = getColRowSpan(cells[x]);
+
+									newTD.rowSpan = sd.rowspan - 1;
+
+									var nextTD = nextTR.cells[x];
+
+									if (nextTD == null)
+										nextTR.appendChild(newTD);
+									else
+										nextTR.insertBefore(newTD, nextTD);
+								}
+							}
+
+							// Delete cells
+							var lastTDElm = null;
+							for (var x=0; tdElm = getCell(grid, cpos.rowindex, x); x++) {
+								if (tdElm != lastTDElm) {
+									var sd = getColRowSpan(tdElm);
+
+									if (sd.rowspan > 1) {
+										tdElm.rowSpan = sd.rowspan - 1;
+									} else {
+										trElm = tdElm.parentNode;
+
+										if (trElm.parentNode)
+											trElm._delete = true;
+									}
+
+									lastTDElm = tdElm;
+								}
+							}
+
+							deleteMarked(tableElm);
+
+							cpos.rowindex--;
+							if (cpos.rowindex < 0)
+								cpos.rowindex = 0;
+
+							// Recalculate grid and select
+							grid = getTableGrid(tableElm);
+							inst.selection.selectNode(getCell(grid, cpos.rowindex, 0), tinyMCE.isGecko, true); // Only collape on gecko
+						break;
+
+						case "mceTableInsertColBefore":
+							if (!trElm || !tdElm)
+								return true;
+
+							var grid = getTableGrid(tableElm);
+							var cpos = getCellPos(grid, tdElm);
+							var lastTDElm = null;
+
+							for (var y=0; tdElm = getCell(grid, y, cpos.cellindex); y++) {
+								if (tdElm != lastTDElm) {
+									var sd = getColRowSpan(tdElm);
+
+									if (sd['colspan'] == 1) {
+										var newTD = doc.createElement(tdElm.nodeName);
+
+										newTD.innerHTML = "&nbsp;";
+										newTD.rowSpan = tdElm.rowSpan;
+
+										tdElm.parentNode.insertBefore(newTD, tdElm);
+									} else
+										tdElm.colSpan++;
+
+									lastTDElm = tdElm;
+								}
+							}
+
+							grid = getTableGrid(tableElm);
+							inst.selection.selectNode(getCell(grid, cpos.rowindex, cpos.cellindex + 1), tinyMCE.isGecko, true); // Only collape on gecko
+						break;
+
+						case "mceTableInsertColAfter":
+							if (!trElm || !tdElm)
+								return true;
+
+							var grid = getTableGrid(tableElm);
+							var cpos = getCellPos(grid, tdElm);
+							var lastTDElm = null;
+
+							for (var y=0; tdElm = getCell(grid, y, cpos.cellindex); y++) {
+								if (tdElm != lastTDElm) {
+									var sd = getColRowSpan(tdElm);
+
+									if (sd['colspan'] == 1) {
+										var newTD = doc.createElement(tdElm.nodeName);
+
+										newTD.innerHTML = "&nbsp;";
+										newTD.rowSpan = tdElm.rowSpan;
+
+										var nextTD = nextElm(tdElm, "TD,TH");
+										if (nextTD == null)
+											tdElm.parentNode.appendChild(newTD);
+										else
+											nextTD.parentNode.insertBefore(newTD, nextTD);
+									} else
+										tdElm.colSpan++;
+
+									lastTDElm = tdElm;
+								}
+							}
+
+							grid = getTableGrid(tableElm);
+							inst.selection.selectNode(getCell(grid, cpos.rowindex, cpos.cellindex), tinyMCE.isGecko, true); // Only collape on gecko
+						break;
+
+						case "mceTableDeleteCol":
+							if (!trElm || !tdElm)
+								return true;
+
+							var grid = getTableGrid(tableElm);
+							var cpos = getCellPos(grid, tdElm);
+							var lastTDElm = null;
+
+							// Only one col, remove whole table
+							if (grid.length > 1 && grid[0].length <= 1) {
+								tableElm = tinyMCE.getParentElement(tableElm, "table"); // Look for table instead of tbody
+								tableElm.parentNode.removeChild(tableElm);
+								return true;
+							}
+
+							// Delete cells
+							for (var y=0; tdElm = getCell(grid, y, cpos.cellindex); y++) {
+								if (tdElm != lastTDElm) {
+									var sd = getColRowSpan(tdElm);
+
+									if (sd['colspan'] > 1)
+										tdElm.colSpan = sd['colspan'] - 1;
+									else {
+										if (tdElm.parentNode)
+											tdElm.parentNode.removeChild(tdElm);
+									}
+
+									lastTDElm = tdElm;
+								}
+							}
+
+							cpos.cellindex--;
+							if (cpos.cellindex < 0)
+								cpos.cellindex = 0;
+
+							// Recalculate grid and select
+							grid = getTableGrid(tableElm);
+							inst.selection.selectNode(getCell(grid, cpos.rowindex, 0), tinyMCE.isGecko, true); // Only collape on gecko
+						break;
+
+					case "mceTableSplitCells":
+						if (!trElm || !tdElm)
+							return true;
+
+						var spandata = getColRowSpan(tdElm);
+
+						var colspan = spandata["colspan"];
+						var rowspan = spandata["rowspan"];
+
+						// Needs splitting
+						if (colspan > 1 || rowspan > 1) {
+							// Generate cols
+							tdElm.colSpan = 1;
+							for (var i=1; i<colspan; i++) {
+								var newTD = doc.createElement("td");
+
+								newTD.innerHTML = "&nbsp;";
+
+								trElm.insertBefore(newTD, nextElm(tdElm, "TD,TH"));
+
+								if (rowspan > 1)
+									addRows(newTD, trElm, rowspan);
+							}
+
+							addRows(tdElm, trElm, rowspan);
+						}
+
+						// Apply visual aids
+						tableElm = tinyMCE.getParentElement(inst.getFocusElement(), "table");
+						break;
+
+					case "mceTableMergeCells":
+						var rows = new Array();
+						var sel = inst.getSel();
+						var grid = getTableGrid(tableElm);
+
+						if (tinyMCE.isMSIE || sel.rangeCount == 1) {
+							if (user_interface) {
+								// Setup template
+								var template = new Array();
+								var sp = getColRowSpan(tdElm);
+
+								template['file'] = '../../plugins/table/merge_cells.htm';
+								template['width'] = 250;
+								template['height'] = 105 + (tinyMCE.isNS7 ? 25 : 0);
+
+								// Language specific width and height addons
+								template['width'] += tinyMCE.getLang('lang_table_merge_cells_delta_width', 0);
+								template['height'] += tinyMCE.getLang('lang_table_merge_cells_delta_height', 0);
+
+								// Open window
+								tinyMCE.openWindow(template, {editor_id : inst.editorId, inline : "yes", action : "update", numcols : sp.colspan, numrows : sp.rowspan});
+
+								return true;
+							} else {
+								var numRows = parseInt(value['numrows']);
+								var numCols = parseInt(value['numcols']);
+								var cpos = getCellPos(grid, tdElm);
+
+								if (("" + numRows) == "NaN")
+									numRows = 1;
+
+								if (("" + numCols) == "NaN")
+									numCols = 1;
+
+								// Get rows and cells
+								var tRows = tableElm.rows;
+								for (var y=cpos.rowindex; y<grid.length; y++) {
+									var rowCells = new Array();
+
+									for (var x=cpos.cellindex; x<grid[y].length; x++) {
+										var td = getCell(grid, y, x);
+
+										if (td && !inArray(rows, td) && !inArray(rowCells, td)) {
+											var cp = getCellPos(grid, td);
+
+											// Within range
+											if (cp.cellindex < cpos.cellindex+numCols && cp.rowindex < cpos.rowindex+numRows)
+												rowCells[rowCells.length] = td;
+										}
+									}
+
+									if (rowCells.length > 0)
+										rows[rows.length] = rowCells;
+								}
+
+								//return true;
+							}
+						} else {
+							var cells = new Array();
+							var sel = inst.getSel();
+							var lastTR = null;
+							var curRow = null;
+							var x1 = -1, y1 = -1, x2, y2;
+
+							// Only one cell selected, whats the point?
+							if (sel.rangeCount < 2)
+								return true;
+
+							// Get all selected cells
+							for (var i=0; i<sel.rangeCount; i++) {
+								var rng = sel.getRangeAt(i);
+								var tdElm = rng.startContainer.childNodes[rng.startOffset];
+
+								if (!tdElm)
+									break;
+
+								if (tdElm.nodeName == "TD")
+									cells[cells.length] = tdElm;
+							}
+
+							// Get rows and cells
+							var tRows = tableElm.rows;
+							for (var y=0; y<tRows.length; y++) {
+								var rowCells = new Array();
+
+								for (var x=0; x<tRows[y].cells.length; x++) {
+									var td = tRows[y].cells[x];
+
+									for (var i=0; i<cells.length; i++) {
+										if (td == cells[i]) {
+											rowCells[rowCells.length] = td;
+										}
+									}
+								}
+
+								if (rowCells.length > 0)
+									rows[rows.length] = rowCells;
+							}
+
+							// Find selected cells in grid and box
+							var curRow = new Array();
+							var lastTR = null;
+							for (var y=0; y<grid.length; y++) {
+								for (var x=0; x<grid[y].length; x++) {
+									grid[y][x]._selected = false;
+
+									for (var i=0; i<cells.length; i++) {
+										if (grid[y][x] == cells[i]) {
+											// Get start pos
+											if (x1 == -1) {
+												x1 = x;
+												y1 = y;
+											}
+
+											// Get end pos
+											x2 = x;
+											y2 = y;
+
+											grid[y][x]._selected = true;
+										}
+									}
+								}
+							}
+
+							// Is there gaps, if so deny
+							for (var y=y1; y<=y2; y++) {
+								for (var x=x1; x<=x2; x++) {
+									if (!grid[y][x]._selected) {
+										alert("Invalid selection for merge.");
+										return true;
+									}
+								}
+							}
+						}
+
+						// Validate selection and get total rowspan and colspan
+						var rowSpan = 1, colSpan = 1;
+
+						// Validate horizontal and get total colspan
+						var lastRowSpan = -1;
+						for (var y=0; y<rows.length; y++) {
+							var rowColSpan = 0;
+
+							for (var x=0; x<rows[y].length; x++) {
+								var sd = getColRowSpan(rows[y][x]);
+
+								rowColSpan += sd['colspan'];
+
+								if (lastRowSpan != -1 && sd['rowspan'] != lastRowSpan) {
+									alert("Invalid selection for merge.");
+									return true;
+								}
+
+								lastRowSpan = sd['rowspan'];
+							}
+
+							if (rowColSpan > colSpan)
+								colSpan = rowColSpan;
+
+							lastRowSpan = -1;
+						}
+
+						// Validate vertical and get total rowspan
+						var lastColSpan = -1;
+						for (var x=0; x<rows[0].length; x++) {
+							var colRowSpan = 0;
+
+							for (var y=0; y<rows.length; y++) {
+								var sd = getColRowSpan(rows[y][x]);
+
+								colRowSpan += sd['rowspan'];
+
+								if (lastColSpan != -1 && sd['colspan'] != lastColSpan) {
+									alert("Invalid selection for merge.");
+									return true;
+								}
+
+								lastColSpan = sd['colspan'];
+							}
+
+							if (colRowSpan > rowSpan)
+								rowSpan = colRowSpan;
+
+							lastColSpan = -1;
+						}
+
+						// Setup td
+						tdElm = rows[0][0];
+						tdElm.rowSpan = rowSpan;
+						tdElm.colSpan = colSpan;
+
+						// Merge cells
+						for (var y=0; y<rows.length; y++) {
+							for (var x=0; x<rows[y].length; x++) {
+								var html = rows[y][x].innerHTML;
+								var chk = tinyMCE.regexpReplace(html, "[ \t\r\n]", "");
+
+								if (chk != "<br/>" && chk != "<br>" && chk != "&nbsp;" && (x+y > 0))
+									tdElm.innerHTML += html;
+
+								// Not current cell
+								if (rows[y][x] != tdElm && !rows[y][x]._deleted) {
+									var cpos = getCellPos(grid, rows[y][x]);
+									var tr = rows[y][x].parentNode;
+
+									tr.removeChild(rows[y][x]);
+									rows[y][x]._deleted = true;
+
+									// Empty TR, remove it
+									if (!tr.hasChildNodes()) {
+										tr.parentNode.removeChild(tr);
+
+										var lastCell = null;
+										for (var x=0; cellElm = getCell(grid, cpos.rowindex, x); x++) {
+											if (cellElm != lastCell && cellElm.rowSpan > 1)
+												cellElm.rowSpan--;
+
+											lastCell = cellElm;
+										}
+
+										if (tdElm.rowSpan > 1)
+											tdElm.rowSpan--;
+									}
+								}
+							}
+						}
+
+						break;
+					}
+
+					tableElm = tinyMCE.getParentElement(inst.getFocusElement(), "table");
+					tinyMCE.handleVisualAid(tableElm, true, tinyMCE.settings['visual'], tinyMCE.selectedInstance);
+					tinyMCE.triggerNodeChange();
+					inst.repaint();
+				}
+
+			return true;
+		}
+
+		// Pass to next handler in chain
+		return false;
+	}
+};
+
+tinyMCE.addPlugin("table", TinyMCE_TablePlugin);

Added: labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/plugins/table/images/buttons.gif
===================================================================
(Binary files differ)


Property changes on: labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/plugins/table/images/buttons.gif
___________________________________________________________________
Name: svn:mime-type
   + application/octet-stream

Added: labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/plugins/table/images/table.gif
===================================================================
(Binary files differ)


Property changes on: labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/plugins/table/images/table.gif
___________________________________________________________________
Name: svn:mime-type
   + application/octet-stream

Added: labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/plugins/table/images/table_cell_props.gif
===================================================================
(Binary files differ)


Property changes on: labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/plugins/table/images/table_cell_props.gif
___________________________________________________________________
Name: svn:mime-type
   + application/octet-stream

Added: labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/plugins/table/images/table_delete.gif
===================================================================
(Binary files differ)


Property changes on: labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/plugins/table/images/table_delete.gif
___________________________________________________________________
Name: svn:mime-type
   + application/octet-stream

Added: labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/plugins/table/images/table_delete_col.gif
===================================================================
(Binary files differ)


Property changes on: labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/plugins/table/images/table_delete_col.gif
___________________________________________________________________
Name: svn:mime-type
   + application/octet-stream

Added: labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/plugins/table/images/table_delete_row.gif
===================================================================
(Binary files differ)


Property changes on: labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/plugins/table/images/table_delete_row.gif
___________________________________________________________________
Name: svn:mime-type
   + application/octet-stream

Added: labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/plugins/table/images/table_insert_col_after.gif
===================================================================
(Binary files differ)


Property changes on: labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/plugins/table/images/table_insert_col_after.gif
___________________________________________________________________
Name: svn:mime-type
   + application/octet-stream

Added: labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/plugins/table/images/table_insert_col_before.gif
===================================================================
(Binary files differ)


Property changes on: labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/plugins/table/images/table_insert_col_before.gif
___________________________________________________________________
Name: svn:mime-type
   + application/octet-stream

Added: labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/plugins/table/images/table_insert_row_after.gif
===================================================================
(Binary files differ)


Property changes on: labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/plugins/table/images/table_insert_row_after.gif
___________________________________________________________________
Name: svn:mime-type
   + application/octet-stream

Added: labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/plugins/table/images/table_insert_row_before.gif
===================================================================
(Binary files differ)


Property changes on: labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/plugins/table/images/table_insert_row_before.gif
___________________________________________________________________
Name: svn:mime-type
   + application/octet-stream

Added: labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/plugins/table/images/table_merge_cells.gif
===================================================================
(Binary files differ)


Property changes on: labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/plugins/table/images/table_merge_cells.gif
___________________________________________________________________
Name: svn:mime-type
   + application/octet-stream

Added: labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/plugins/table/images/table_row_props.gif
===================================================================
(Binary files differ)


Property changes on: labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/plugins/table/images/table_row_props.gif
___________________________________________________________________
Name: svn:mime-type
   + application/octet-stream

Added: labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/plugins/table/images/table_split_cells.gif
===================================================================
(Binary files differ)


Property changes on: labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/plugins/table/images/table_split_cells.gif
___________________________________________________________________
Name: svn:mime-type
   + application/octet-stream

Added: labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/plugins/table/jscripts/cell.js
===================================================================
--- labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/plugins/table/jscripts/cell.js	2007-01-11 22:09:16 UTC (rev 8831)
+++ labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/plugins/table/jscripts/cell.js	2007-01-11 22:10:56 UTC (rev 8832)
@@ -0,0 +1,249 @@
+function init() {
+	tinyMCEPopup.resizeToInnerSize();
+
+	document.getElementById('backgroundimagebrowsercontainer').innerHTML = getBrowserHTML('backgroundimagebrowser','backgroundimage','image','table');
+	document.getElementById('bordercolor_pickcontainer').innerHTML = getColorPickerHTML('bordercolor_pick','bordercolor');
+	document.getElementById('bgcolor_pickcontainer').innerHTML = getColorPickerHTML('bgcolor_pick','bgcolor')
+
+	var inst = tinyMCE.selectedInstance;
+	var tdElm = tinyMCE.getParentElement(inst.getFocusElement(), "td,th");
+	var formObj = document.forms[0];
+	var st = tinyMCE.parseStyle(tinyMCE.getAttrib(tdElm, "style"));
+
+	// Get table cell data
+	var celltype = tdElm.nodeName.toLowerCase();
+	var align = tinyMCE.getAttrib(tdElm, 'align');
+	var valign = tinyMCE.getAttrib(tdElm, 'valign');
+	var width = trimSize(getStyle(tdElm, 'width', 'width'));
+	var height = trimSize(getStyle(tdElm, 'height', 'height'));
+	var bordercolor = convertRGBToHex(getStyle(tdElm, 'bordercolor', 'borderLeftColor'));
+	var bgcolor = convertRGBToHex(getStyle(tdElm, 'bgcolor', 'backgroundColor'));
+	var className = tinyMCE.getVisualAidClass(tinyMCE.getAttrib(tdElm, 'class'), false);
+	var backgroundimage = getStyle(tdElm, 'background', 'backgroundImage').replace(new RegExp("url\\('?([^']*)'?\\)", 'gi'), "$1");;
+	var id = tinyMCE.getAttrib(tdElm, 'id');
+	var lang = tinyMCE.getAttrib(tdElm, 'lang');
+	var dir = tinyMCE.getAttrib(tdElm, 'dir');
+	var scope = tinyMCE.getAttrib(tdElm, 'scope');
+
+	// Setup form
+	addClassesToList('class', 'table_cell_styles');
+	formObj.bordercolor.value = bordercolor;
+	formObj.bgcolor.value = bgcolor;
+	formObj.backgroundimage.value = backgroundimage;
+	formObj.width.value = width;
+	formObj.height.value = height;
+	formObj.id.value = id;
+	formObj.lang.value = lang;
+	formObj.style.value = tinyMCE.serializeStyle(st);
+	selectByValue(formObj, 'align', align);
+	selectByValue(formObj, 'valign', valign);
+	selectByValue(formObj, 'class', className);
+	selectByValue(formObj, 'celltype', celltype);
+	selectByValue(formObj, 'dir', dir);
+	selectByValue(formObj, 'scope', scope);
+
+	// Resize some elements
+	if (isVisible('backgroundimagebrowser'))
+		document.getElementById('backgroundimage').style.width = '180px';
+
+	updateColor('bordercolor_pick', 'bordercolor');
+	updateColor('bgcolor_pick', 'bgcolor');
+}
+
+function updateAction() {
+	tinyMCEPopup.restoreSelection();
+
+	var inst = tinyMCE.selectedInstance;
+	var tdElm = tinyMCE.getParentElement(inst.getFocusElement(), "td,th");
+	var trElm = tinyMCE.getParentElement(inst.getFocusElement(), "tr");
+	var tableElm = tinyMCE.getParentElement(inst.getFocusElement(), "table");
+	var formObj = document.forms[0];
+
+	inst.execCommand('mceBeginUndoLevel');
+
+	switch (getSelectValue(formObj, 'action')) {
+		case "cell":
+			var celltype = getSelectValue(formObj, 'celltype');
+			var scope = getSelectValue(formObj, 'scope');
+
+			if (tinyMCE.getParam("accessibility_warnings")) {
+				if (celltype == "th" && scope == "")
+					var answer = confirm(tinyMCE.getLang('lang_table_missing_scope', '', true));
+				else
+					var answer = true;
+
+				if (!answer)
+					return;
+			}
+
+			updateCell(tdElm);
+			break;
+
+		case "row":
+			var cell = trElm.firstChild;
+
+			if (cell.nodeName != "TD" && cell.nodeName != "TH")
+				cell = nextCell(cell);
+
+			do {
+				cell = updateCell(cell, true);
+			} while ((cell = nextCell(cell)) != null);
+
+			break;
+
+		case "all":
+			var rows = tableElm.getElementsByTagName("tr");
+
+			for (var i=0; i<rows.length; i++) {
+				var cell = rows[i].firstChild;
+
+				if (cell.nodeName != "TD" && cell.nodeName != "TH")
+					cell = nextCell(cell);
+
+				do {
+					cell = updateCell(cell, true);
+				} while ((cell = nextCell(cell)) != null);
+			}
+
+			break;
+	}
+
+	tinyMCE.handleVisualAid(inst.getBody(), true, inst.visualAid, inst);
+	tinyMCE.triggerNodeChange();
+	inst.execCommand('mceEndUndoLevel');
+	tinyMCEPopup.close();
+}
+
+function nextCell(elm) {
+	while ((elm = elm.nextSibling) != null) {
+		if (elm.nodeName == "TD" || elm.nodeName == "TH")
+			return elm;
+	}
+
+	return null;
+}
+
+function updateCell(td, skip_id) {
+	var inst = tinyMCE.selectedInstance;
+	var formObj = document.forms[0];
+	var curCellType = td.nodeName.toLowerCase();
+	var celltype = getSelectValue(formObj, 'celltype');
+	var doc = inst.getDoc();
+
+	if (!skip_id)
+		td.setAttribute('id', formObj.id.value);
+
+	td.setAttribute('align', formObj.align.value);
+	td.setAttribute('vAlign', formObj.valign.value);
+	td.setAttribute('lang', formObj.lang.value);
+	td.setAttribute('dir', getSelectValue(formObj, 'dir'));
+	td.setAttribute('style', tinyMCE.serializeStyle(tinyMCE.parseStyle(formObj.style.value)));
+	td.setAttribute('scope', formObj.scope.value);
+	tinyMCE.setAttrib(td, 'class', getSelectValue(formObj, 'class'));
+
+	// Clear deprecated attributes
+	tinyMCE.setAttrib(td, 'width', '');
+	tinyMCE.setAttrib(td, 'height', '');
+	tinyMCE.setAttrib(td, 'bgColor', '');
+	tinyMCE.setAttrib(td, 'borderColor', '');
+	tinyMCE.setAttrib(td, 'background', '');
+
+	// Set styles
+	td.style.width = getCSSSize(formObj.width.value);
+	td.style.height = getCSSSize(formObj.height.value);
+	if (formObj.bordercolor.value != "") {
+		td.style.borderColor = formObj.bordercolor.value;
+		td.style.borderStyle = td.style.borderStyle == "" ? "solid" : td.style.borderStyle;
+		td.style.borderWidth = td.style.borderWidth == "" ? "1px" : td.style.borderWidth;
+	} else
+		td.style.borderColor = '';
+
+	td.style.backgroundColor = formObj.bgcolor.value;
+
+	if (formObj.backgroundimage.value != "")
+		td.style.backgroundImage = "url('" + formObj.backgroundimage.value + "')";
+	else
+		td.style.backgroundImage = '';
+
+	if (curCellType != celltype) {
+		// changing to a different node type
+		var newCell = doc.createElement(celltype);
+
+		for (var c=0; c<td.childNodes.length; c++)
+			newCell.appendChild(td.childNodes[c].cloneNode(1));
+
+		for (var a=0; a<td.attributes.length; a++) {
+			var attr = td.attributes[a];
+			newCell.setAttribute(attr.name, attr.value);
+		}
+
+		td.parentNode.replaceChild(newCell, td);
+		td = newCell;
+	}
+
+	return td;
+}
+
+function changedBackgroundImage() {
+	var formObj = document.forms[0];
+	var st = tinyMCE.parseStyle(formObj.style.value);
+
+	st['background-image'] = "url('" + formObj.backgroundimage.value + "')";
+
+	formObj.style.value = tinyMCE.serializeStyle(st);
+}
+
+function changedSize() {
+	var formObj = document.forms[0];
+	var st = tinyMCE.parseStyle(formObj.style.value);
+
+	var width = formObj.width.value;
+	if (width != "")
+		st['width'] = getCSSSize(width);
+	else
+		st['width'] = "";
+
+	var height = formObj.height.value;
+	if (height != "")
+		st['height'] = getCSSSize(height);
+	else
+		st['height'] = "";
+
+	formObj.style.value = tinyMCE.serializeStyle(st);
+}
+
+function changedColor() {
+	var formObj = document.forms[0];
+	var st = tinyMCE.parseStyle(formObj.style.value);
+
+	st['background-color'] = formObj.bgcolor.value;
+	st['border-color'] = formObj.bordercolor.value;
+
+	formObj.style.value = tinyMCE.serializeStyle(st);
+}
+
+function changedStyle() {
+	var formObj = document.forms[0];
+	var st = tinyMCE.parseStyle(formObj.style.value);
+
+	if (st['background-image'])
+		formObj.backgroundimage.value = st['background-image'].replace(new RegExp("url\\('?([^']*)'?\\)", 'gi'), "$1");
+	else
+		formObj.backgroundimage.value = '';
+
+	if (st['width'])
+		formObj.width.value = trimSize(st['width']);
+
+	if (st['height'])
+		formObj.height.value = trimSize(st['height']);
+
+	if (st['background-color']) {
+		formObj.bgcolor.value = st['background-color'];
+		updateColor('bgcolor_pick','bgcolor');
+	}
+
+	if (st['border-color']) {
+		formObj.bordercolor.value = st['border-color'];
+		updateColor('bordercolor_pick','bordercolor');
+	}
+}

Added: labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/plugins/table/jscripts/merge_cells.js
===================================================================
--- labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/plugins/table/jscripts/merge_cells.js	2007-01-11 22:09:16 UTC (rev 8831)
+++ labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/plugins/table/jscripts/merge_cells.js	2007-01-11 22:10:56 UTC (rev 8832)
@@ -0,0 +1,24 @@
+function init() {
+	tinyMCEPopup.resizeToInnerSize();
+
+	var formObj = document.forms[0];
+
+	formObj.numcols.value = tinyMCE.getWindowArg('numcols', 1);
+	formObj.numrows.value = tinyMCE.getWindowArg('numrows', 1);
+}
+
+function mergeCells() {
+	var args = new Array();
+	var formObj = document.forms[0];
+
+	if (!AutoValidator.validate(formObj)) {
+		alert(tinyMCE.getLang('lang_invalid_data'));
+		return false;
+	}
+
+	args["numcols"] = formObj.numcols.value;
+	args["numrows"] = formObj.numrows.value;
+
+	tinyMCEPopup.execCommand("mceTableMergeCells", false, args);
+	tinyMCEPopup.close();
+}

Added: labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/plugins/table/jscripts/row.js
===================================================================
--- labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/plugins/table/jscripts/row.js	2007-01-11 22:09:16 UTC (rev 8831)
+++ labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/plugins/table/jscripts/row.js	2007-01-11 22:10:56 UTC (rev 8832)
@@ -0,0 +1,200 @@
+function init() {
+	tinyMCEPopup.resizeToInnerSize();
+
+	document.getElementById('backgroundimagebrowsercontainer').innerHTML = getBrowserHTML('backgroundimagebrowser','backgroundimage','image','table');
+	document.getElementById('bgcolor_pickcontainer').innerHTML = getColorPickerHTML('bgcolor_pick','bgcolor');
+
+	var inst = tinyMCE.selectedInstance;
+	var trElm = tinyMCE.getParentElement(inst.getFocusElement(), "tr");
+	var formObj = document.forms[0];
+	var st = tinyMCE.parseStyle(tinyMCE.getAttrib(trElm, "style"));
+
+	// Get table row data
+	var rowtype = trElm.parentNode.nodeName.toLowerCase();
+	var align = tinyMCE.getAttrib(trElm, 'align');
+	var valign = tinyMCE.getAttrib(trElm, 'valign');
+	var height = trimSize(getStyle(trElm, 'height', 'height'));
+	var className = tinyMCE.getVisualAidClass(tinyMCE.getAttrib(trElm, 'class'), false);
+	var bgcolor = convertRGBToHex(getStyle(trElm, 'bgcolor', 'backgroundColor'));
+	var backgroundimage = getStyle(trElm, 'background', 'backgroundImage').replace(new RegExp("url\\('?([^']*)'?\\)", 'gi'), "$1");;
+	var id = tinyMCE.getAttrib(trElm, 'id');
+	var lang = tinyMCE.getAttrib(trElm, 'lang');
+	var dir = tinyMCE.getAttrib(trElm, 'dir');
+
+	// Setup form
+	addClassesToList('class', 'table_row_styles');
+	formObj.bgcolor.value = bgcolor;
+	formObj.backgroundimage.value = backgroundimage;
+	formObj.height.value = height;
+	formObj.id.value = id;
+	formObj.lang.value = lang;
+	formObj.style.value = tinyMCE.serializeStyle(st);
+	selectByValue(formObj, 'align', align);
+	selectByValue(formObj, 'valign', valign);
+	selectByValue(formObj, 'class', className);
+	selectByValue(formObj, 'rowtype', rowtype);
+	selectByValue(formObj, 'dir', dir);
+
+	// Resize some elements
+	if (isVisible('backgroundimagebrowser'))
+		document.getElementById('backgroundimage').style.width = '180px';
+
+	updateColor('bgcolor_pick', 'bgcolor');
+}
+
+function updateAction() {
+	tinyMCEPopup.restoreSelection();
+
+	var inst = tinyMCE.selectedInstance;
+	var trElm = tinyMCE.getParentElement(inst.getFocusElement(), "tr");
+	var tableElm = tinyMCE.getParentElement(inst.getFocusElement(), "table");
+	var formObj = document.forms[0];
+	var action = getSelectValue(formObj, 'action');
+
+	inst.execCommand('mceBeginUndoLevel');
+
+	switch (action) {
+		case "row":
+			updateRow(trElm);
+			break;
+
+		case "all":
+			var rows = tableElm.getElementsByTagName("tr");
+
+			for (var i=0; i<rows.length; i++)
+				updateRow(rows[i], true);
+
+			break;
+
+		case "odd":
+		case "even":
+			var rows = tableElm.getElementsByTagName("tr");
+
+			for (var i=0; i<rows.length; i++) {
+				if ((i % 2 == 0 && action == "odd") || (i % 2 != 0 && action == "even"))
+					updateRow(rows[i], true, true);
+			}
+
+			break;
+	}
+
+	tinyMCE.handleVisualAid(inst.getBody(), true, inst.visualAid, inst);
+	tinyMCE.triggerNodeChange();
+	inst.execCommand('mceEndUndoLevel');
+	tinyMCEPopup.close();
+}
+
+function updateRow(tr_elm, skip_id, skip_parent) {
+	var inst = tinyMCE.selectedInstance;
+	var formObj = document.forms[0];
+	var curRowType = tr_elm.parentNode.nodeName.toLowerCase();
+	var rowtype = getSelectValue(formObj, 'rowtype');
+	var doc = inst.getDoc();
+
+	// Update row element
+	if (!skip_id)
+		tr_elm.setAttribute('id', formObj.id.value);
+
+	tr_elm.setAttribute('align', getSelectValue(formObj, 'align'));
+	tr_elm.setAttribute('vAlign', getSelectValue(formObj, 'valign'));
+	tr_elm.setAttribute('lang', formObj.lang.value);
+	tr_elm.setAttribute('dir', getSelectValue(formObj, 'dir'));
+	tr_elm.setAttribute('style', tinyMCE.serializeStyle(tinyMCE.parseStyle(formObj.style.value)));
+	tinyMCE.setAttrib(tr_elm, 'class', getSelectValue(formObj, 'class'));
+
+	// Clear deprecated attributes
+	tr_elm.setAttribute('background', '');
+	tr_elm.setAttribute('bgColor', '');
+	tr_elm.setAttribute('height', '');
+
+	// Set styles
+	tr_elm.style.height = getCSSSize(formObj.height.value);
+	tr_elm.style.backgroundColor = formObj.bgcolor.value;
+
+	if (formObj.backgroundimage.value != "")
+		tr_elm.style.backgroundImage = "url('" + formObj.backgroundimage.value + "')";
+	else
+		tr_elm.style.backgroundImage = '';
+
+	// Setup new rowtype
+	if (curRowType != rowtype && !skip_parent) {
+		// first, clone the node we are working on
+		var newRow = tr_elm.cloneNode(1);
+
+		// next, find the parent of its new destination (creating it if necessary)
+		var theTable = tinyMCE.getParentElement(tr_elm, "table");
+		var dest = rowtype;
+		var newParent = null;
+		for (var i = 0; i < theTable.childNodes.length; i++) {
+			if (theTable.childNodes[i].nodeName.toLowerCase() == dest)
+				newParent = theTable.childNodes[i];
+		}
+
+		if (newParent == null) {
+			newParent = doc.createElement(dest);
+
+			if (dest == "thead")
+				theTable.insertBefore(newParent, theTable.firstChild);
+			else
+				theTable.appendChild(newParent);
+		}
+
+		// append the row to the new parent
+		newParent.appendChild(newRow);
+
+		// remove the original
+		tr_elm.parentNode.removeChild(tr_elm);
+
+		// set tr_elm to the new node
+		tr_elm = newRow;
+	}
+}
+
+function changedBackgroundImage() {
+	var formObj = document.forms[0];
+	var st = tinyMCE.parseStyle(formObj.style.value);
+
+	st['background-image'] = "url('" + formObj.backgroundimage.value + "')";
+
+	formObj.style.value = tinyMCE.serializeStyle(st);
+}
+
+function changedStyle() {
+	var formObj = document.forms[0];
+	var st = tinyMCE.parseStyle(formObj.style.value);
+
+	if (st['background-image'])
+		formObj.backgroundimage.value = st['background-image'].replace(new RegExp("url\\('?([^']*)'?\\)", 'gi'), "$1");
+	else
+		formObj.backgroundimage.value = '';
+
+	if (st['height'])
+		formObj.height.value = trimSize(st['height']);
+
+	if (st['background-color']) {
+		formObj.bgcolor.value = st['background-color'];
+		updateColor('bgcolor_pick','bgcolor');
+	}
+}
+
+function changedSize() {
+	var formObj = document.forms[0];
+	var st = tinyMCE.parseStyle(formObj.style.value);
+
+	var height = formObj.height.value;
+	if (height != "")
+		st['height'] = getCSSSize(height);
+	else
+		st['height'] = "";
+
+	formObj.style.value = tinyMCE.serializeStyle(st);
+}
+
+function changedColor() {
+	var formObj = document.forms[0];
+	var st = tinyMCE.parseStyle(formObj.style.value);
+
+	st['background-color'] = formObj.bgcolor.value;
+
+	formObj.style.value = tinyMCE.serializeStyle(st);
+}

Added: labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/plugins/table/jscripts/table.js
===================================================================
--- labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/plugins/table/jscripts/table.js	2007-01-11 22:09:16 UTC (rev 8831)
+++ labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/plugins/table/jscripts/table.js	2007-01-11 22:10:56 UTC (rev 8832)
@@ -0,0 +1,349 @@
+var action, orgTableWidth, orgTableHeight;
+
+function insertTable() {
+	var formObj = document.forms[0];
+	var inst = tinyMCE.selectedInstance;
+	var cols = 2, rows = 2, border = 0, cellpadding = -1, cellspacing = -1, align, width, height, className;
+	var html = '';
+	var elm = tinyMCE.tableElm;
+	var cellLimit, rowLimit, colLimit;
+
+	if (!AutoValidator.validate(formObj)) {
+		alert(tinyMCE.getLang('lang_invalid_data'));
+		return false;
+	}
+
+	tinyMCEPopup.restoreSelection();
+
+	// Get form data
+	cols = formObj.elements['cols'].value;
+	rows = formObj.elements['rows'].value;
+	border = formObj.elements['border'].value != "" ? formObj.elements['border'].value  : 0;
+	cellpadding = formObj.elements['cellpadding'].value != "" ? formObj.elements['cellpadding'].value : "";
+	cellspacing = formObj.elements['cellspacing'].value != "" ? formObj.elements['cellspacing'].value : "";
+	align = formObj.elements['align'].options[formObj.elements['align'].selectedIndex].value;
+	width = formObj.elements['width'].value;
+	height = formObj.elements['height'].value;
+	bordercolor = formObj.elements['bordercolor'].value;
+	bgcolor = formObj.elements['bgcolor'].value;
+	className = formObj.elements['class'].options[formObj.elements['class'].selectedIndex].value;
+	id = formObj.elements['id'].value;
+	summary = formObj.elements['summary'].value;
+	style = formObj.elements['style'].value;
+	dir = formObj.elements['dir'].value;
+	lang = formObj.elements['lang'].value;
+	background = formObj.elements['backgroundimage'].value;
+
+	cellLimit = tinyMCE.getParam('table_cell_limit', false);
+	rowLimit = tinyMCE.getParam('table_row_limit', false);
+	colLimit = tinyMCE.getParam('table_col_limit', false);
+
+	// Validate table size
+	if (colLimit && cols > colLimit) {
+		alert(tinyMCE.getLang('lang_table_col_limit', '', true, {cols : colLimit}));
+		return false;
+	} else if (rowLimit && rows > rowLimit) {
+		alert(tinyMCE.getLang('lang_table_row_limit', '', true, {rows : rowLimit}));
+		return false;
+	} else if (cellLimit && cols * rows > cellLimit) {
+		alert(tinyMCE.getLang('lang_table_cell_limit', '', true, {cells : cellLimit}));
+		return false;
+	}
+
+	// Update table
+	if (action == "update") {
+		inst.execCommand('mceBeginUndoLevel');
+
+		tinyMCE.setAttrib(elm, 'cellPadding', cellpadding, true);
+		tinyMCE.setAttrib(elm, 'cellSpacing', cellspacing, true);
+		tinyMCE.setAttrib(elm, 'border', border, true);
+		tinyMCE.setAttrib(elm, 'align', align);
+		tinyMCE.setAttrib(elm, 'class', className);
+		tinyMCE.setAttrib(elm, 'style', style);
+		tinyMCE.setAttrib(elm, 'id', id);
+		tinyMCE.setAttrib(elm, 'summary', summary);
+		tinyMCE.setAttrib(elm, 'dir', dir);
+		tinyMCE.setAttrib(elm, 'lang', lang);
+
+		// Not inline styles
+		if (!tinyMCE.getParam("inline_styles"))
+			tinyMCE.setAttrib(elm, 'width', width, true);
+
+		// Remove these since they are not valid XHTML
+		tinyMCE.setAttrib(elm, 'borderColor', '');
+		tinyMCE.setAttrib(elm, 'bgColor', '');
+		tinyMCE.setAttrib(elm, 'background', '');
+		tinyMCE.setAttrib(elm, 'height', '');
+
+		if (background != '')
+			elm.style.backgroundImage = "url('" + background + "')";
+		else
+			elm.style.backgroundImage = '';
+
+		if (tinyMCE.getParam("inline_styles"))
+			elm.style.borderWidth = border + "px";
+
+		if (tinyMCE.getParam("inline_styles")) {
+			if (width != '')
+				elm.style.width = getCSSSize(width);
+		}
+
+		if (bordercolor != "") {
+			elm.style.borderColor = bordercolor;
+			elm.style.borderStyle = elm.style.borderStyle == "" ? "solid" : elm.style.borderStyle;
+			elm.style.borderWidth = border == "" ? "1px" : border;
+		} else
+			elm.style.borderColor = '';
+
+		elm.style.backgroundColor = bgcolor;
+		elm.style.height = getCSSSize(height);
+
+		tinyMCE.handleVisualAid(tinyMCE.tableElm, false, inst.visualAid, inst);
+
+		// Fix for stange MSIE align bug
+		tinyMCE.tableElm.outerHTML = tinyMCE.tableElm.outerHTML;
+
+		tinyMCE.handleVisualAid(inst.getBody(), true, inst.visualAid, inst);
+		tinyMCE.triggerNodeChange();
+		inst.execCommand('mceEndUndoLevel');
+
+		// Repaint if dimensions changed
+		if (formObj.width.value != orgTableWidth || formObj.height.value != orgTableHeight)
+			inst.repaint();
+
+		tinyMCEPopup.close();
+		return true;
+	}
+
+	// Create new table
+	html += '<table';
+
+	html += makeAttrib('id', id);
+	html += makeAttrib('border', border);
+	html += makeAttrib('cellpadding', cellpadding);
+	html += makeAttrib('cellspacing', cellspacing);
+	html += makeAttrib('width', width);
+	//html += makeAttrib('height', height);
+	//html += makeAttrib('bordercolor', bordercolor);
+	//html += makeAttrib('bgcolor', bgcolor);
+	html += makeAttrib('align', align);
+	html += makeAttrib('class', tinyMCE.getVisualAidClass(className, border == 0));
+	html += makeAttrib('style', style);
+	html += makeAttrib('summary', summary);
+	html += makeAttrib('dir', dir);
+	html += makeAttrib('lang', lang);
+
+	html += '>';
+
+	for (var y=0; y<rows; y++) {
+		html += "<tr>";
+
+		for (var x=0; x<cols; x++)
+			html += '<td>&nbsp;</td>';
+
+		html += "</tr>";
+	}
+
+	html += "</table>";
+
+	inst.execCommand('mceBeginUndoLevel');
+	inst.execCommand('mceInsertContent', false, html);
+	tinyMCE.handleVisualAid(inst.getBody(), true, tinyMCE.settings['visual']);
+	inst.execCommand('mceEndUndoLevel');
+
+	tinyMCEPopup.close();
+}
+
+function makeAttrib(attrib, value) {
+	var formObj = document.forms[0];
+	var valueElm = formObj.elements[attrib];
+
+	if (typeof(value) == "undefined" || value == null) {
+		value = "";
+
+		if (valueElm)
+			value = valueElm.value;
+	}
+
+	if (value == "")
+		return "";
+
+	// XML encode it
+	value = value.replace(/&/g, '&amp;');
+	value = value.replace(/\"/g, '&quot;');
+	value = value.replace(/</g, '&lt;');
+	value = value.replace(/>/g, '&gt;');
+
+	return ' ' + attrib + '="' + value + '"';
+}
+
+function init() {
+	tinyMCEPopup.resizeToInnerSize();
+
+	document.getElementById('backgroundimagebrowsercontainer').innerHTML = getBrowserHTML('backgroundimagebrowser','backgroundimage','image','table');
+	document.getElementById('backgroundimagebrowsercontainer').innerHTML = getBrowserHTML('backgroundimagebrowser','backgroundimage','image','table');
+	document.getElementById('bordercolor_pickcontainer').innerHTML = getColorPickerHTML('bordercolor_pick','bordercolor');
+	document.getElementById('bgcolor_pickcontainer').innerHTML = getColorPickerHTML('bgcolor_pick','bgcolor');
+
+	var cols = 2, rows = 2, border = tinyMCE.getParam('table_default_border', '0'), cellpadding = tinyMCE.getParam('table_default_cellpadding', ''), cellspacing = tinyMCE.getParam('table_default_cellspacing', '');
+	var align = "", width = "", height = "", bordercolor = "", bgcolor = "", className = "";
+	var id = "", summary = "", style = "", dir = "", lang = "", background = "", bgcolor = "", bordercolor = "";
+	var inst = tinyMCE.selectedInstance;
+	var formObj = document.forms[0];
+	var elm = tinyMCE.getParentElement(inst.getFocusElement(), "table");
+
+	tinyMCE.tableElm = elm;
+	action = tinyMCE.getWindowArg('action');
+	if (action == null)
+		action = tinyMCE.tableElm ? "update" : "insert";
+
+	if (tinyMCE.tableElm && action != "insert") {
+		var rowsAr = tinyMCE.tableElm.rows;
+		var cols = 0;
+		for (var i=0; i<rowsAr.length; i++)
+			if (rowsAr[i].cells.length > cols)
+				cols = rowsAr[i].cells.length;
+
+		cols = cols;
+		rows = rowsAr.length;
+
+		st = tinyMCE.parseStyle(tinyMCE.getAttrib(tinyMCE.tableElm, "style"));
+		border = trimSize(getStyle(elm, 'border', 'borderWidth'));
+		cellpadding = tinyMCE.getAttrib(tinyMCE.tableElm, 'cellpadding', "");
+		cellspacing = tinyMCE.getAttrib(tinyMCE.tableElm, 'cellspacing', "");
+		width = trimSize(getStyle(elm, 'width', 'width'));
+		height = trimSize(getStyle(elm, 'height', 'height'));
+		bordercolor = convertRGBToHex(getStyle(elm, 'bordercolor', 'borderLeftColor'));
+		bgcolor = convertRGBToHex(getStyle(elm, 'bgcolor', 'backgroundColor'));
+		align = tinyMCE.getAttrib(tinyMCE.tableElm, 'align', align);
+		className = tinyMCE.getVisualAidClass(tinyMCE.getAttrib(tinyMCE.tableElm, 'class'), false);
+		id = tinyMCE.getAttrib(tinyMCE.tableElm, 'id');
+		summary = tinyMCE.getAttrib(tinyMCE.tableElm, 'summary');
+		style = tinyMCE.serializeStyle(st);
+		dir = tinyMCE.getAttrib(tinyMCE.tableElm, 'dir');
+		lang = tinyMCE.getAttrib(tinyMCE.tableElm, 'lang');
+		background = getStyle(elm, 'background', 'backgroundImage').replace(new RegExp("url\\('?([^']*)'?\\)", 'gi'), "$1");
+
+		orgTableWidth = width;
+		orgTableHeight = height;
+
+		action = "update";
+	}
+
+	addClassesToList('class', "table_styles");
+
+	// Update form
+	selectByValue(formObj, 'align', align);
+	selectByValue(formObj, 'class', className);
+	formObj.cols.value = cols;
+	formObj.rows.value = rows;
+	formObj.border.value = border;
+	formObj.cellpadding.value = cellpadding;
+	formObj.cellspacing.value = cellspacing;
+	formObj.width.value = width;
+	formObj.height.value = height;
+	formObj.bordercolor.value = bordercolor;
+	formObj.bgcolor.value = bgcolor;
+	formObj.id.value = id;
+	formObj.summary.value = summary;
+	formObj.style.value = style;
+	formObj.dir.value = dir;
+	formObj.lang.value = lang;
+	formObj.backgroundimage.value = background;
+	formObj.insert.value = tinyMCE.getLang('lang_' + action, 'Insert', true); 
+
+	updateColor('bordercolor_pick', 'bordercolor');
+	updateColor('bgcolor_pick', 'bgcolor');
+
+	// Resize some elements
+	if (isVisible('backgroundimagebrowser'))
+		document.getElementById('backgroundimage').style.width = '180px';
+
+	// Disable some fields in update mode
+	if (action == "update") {
+		formObj.cols.disabled = true;
+		formObj.rows.disabled = true;
+	}
+}
+
+function changedSize() {
+	var formObj = document.forms[0];
+	var st = tinyMCE.parseStyle(formObj.style.value);
+
+	var width = formObj.width.value;
+	if (width != "")
+		st['width'] = tinyMCE.getParam("inline_styles") ? getCSSSize(width) : "";
+	else
+		st['width'] = "";
+
+	var height = formObj.height.value;
+	if (height != "")
+		st['height'] = getCSSSize(height);
+	else
+		st['height'] = "";
+
+	formObj.style.value = tinyMCE.serializeStyle(st);
+}
+
+function changedBackgroundImage() {
+	var formObj = document.forms[0];
+	var st = tinyMCE.parseStyle(formObj.style.value);
+
+	st['background-image'] = "url('" + formObj.backgroundimage.value + "')";
+
+	formObj.style.value = tinyMCE.serializeStyle(st);
+}
+
+function changedBorder() {
+	var formObj = document.forms[0];
+	var st = tinyMCE.parseStyle(formObj.style.value);
+
+	// Update border width if the element has a color
+	if (formObj.border.value != "" && formObj.bordercolor.value != "")
+		st['border-width'] = formObj.border.value + "px";
+
+	formObj.style.value = tinyMCE.serializeStyle(st);
+}
+
+function changedColor() {
+	var formObj = document.forms[0];
+	var st = tinyMCE.parseStyle(formObj.style.value);
+
+	st['background-color'] = formObj.bgcolor.value;
+
+	if (formObj.bordercolor.value != "") {
+		st['border-color'] = formObj.bordercolor.value;
+
+		// Add border-width if it's missing
+		if (!st['border-width'])
+			st['border-width'] = formObj.border.value == "" ? "1px" : formObj.border.value + "px";
+	}
+
+	formObj.style.value = tinyMCE.serializeStyle(st);
+}
+
+function changedStyle() {
+	var formObj = document.forms[0];
+	var st = tinyMCE.parseStyle(formObj.style.value);
+
+	if (st['background-image'])
+		formObj.backgroundimage.value = st['background-image'].replace(new RegExp("url\\('?([^']*)'?\\)", 'gi'), "$1");
+	else
+		formObj.backgroundimage.value = '';
+
+	if (st['width'])
+		formObj.width.value = trimSize(st['width']);
+
+	if (st['height'])
+		formObj.height.value = trimSize(st['height']);
+
+	if (st['background-color']) {
+		formObj.bgcolor.value = st['background-color'];
+		updateColor('bgcolor_pick','bgcolor');
+	}
+
+	if (st['border-color']) {
+		formObj.bordercolor.value = st['border-color'];
+		updateColor('bordercolor_pick','bordercolor');
+	}
+}

Added: labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/plugins/table/langs/en.js
===================================================================
--- labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/plugins/table/langs/en.js	2007-01-11 22:09:16 UTC (rev 8831)
+++ labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/plugins/table/langs/en.js	2007-01-11 22:10:56 UTC (rev 8832)
@@ -0,0 +1,78 @@
+// UK lang variables
+
+tinyMCE.addToLang('table',{
+general_tab : 'General',
+advanced_tab : 'Advanced',
+general_props : 'General properties',
+advanced_props : 'Advanced properties',
+desc : 'Inserts a new table',
+row_before_desc : 'Insert row before',
+row_after_desc : 'Insert row after',
+delete_row_desc : 'Delete row',
+col_before_desc : 'Insert column before',
+col_after_desc : 'Insert column after',
+delete_col_desc : 'Remove column',
+rowtype : 'Row in table part',
+title : 'Insert/Modify table',
+width : 'Width',
+height : 'Height',
+cols : 'Columns',
+rows : 'Rows',
+cellspacing : 'Cellspacing',
+cellpadding : 'Cellpadding',
+border : 'Border',
+align : 'Alignment',
+align_default : 'Default',
+align_left : 'Left',
+align_right : 'Right',
+align_middle : 'Center',
+row_title : 'Table row properties',
+cell_title : 'Table cell properties',
+cell_type : 'Cell type',
+row_desc : 'Table row properties',
+cell_desc : 'Table cell properties',
+valign : 'Vertical alignment',
+align_top : 'Top',
+align_bottom : 'Bottom',
+props_desc : 'Table properties',
+bordercolor : 'Border color',
+bgcolor : 'Background color',
+merge_cells_title : 'Merge table cells',
+split_cells_desc : 'Split table cells',
+merge_cells_desc : 'Merge table cells',
+cut_row_desc : 'Cut table row',
+copy_row_desc : 'Copy table row',
+paste_row_before_desc : 'Paste table row before',
+paste_row_after_desc : 'Paste table row after',
+id : 'Id',
+style: 'Style',
+langdir : 'Language direction',
+langcode : 'Language code',
+mime : 'Target MIME type',
+ltr : 'Left to right',
+rtl : 'Right to left',
+bgimage : 'Background image',
+summary : 'Summary',
+td : "Data",
+th : "Header",
+cell_cell : 'Update current cell',
+cell_row : 'Update all cells in row',
+cell_all : 'Update all cells in table',
+row_row : 'Update current row',
+row_odd : 'Update odd rows in table',
+row_even : 'Update even rows in table',
+row_all : 'Update all rows in table',
+thead : 'Table Head',
+tbody : 'Table Body',
+tfoot : 'Table Foot',
+del : 'Delete table',
+scope : 'Scope',
+row : 'Row',
+col : 'Col',
+rowgroup : 'Row Group',
+colgroup : 'Col Group',
+col_limit : 'You\'ve exceeded the maximum number of columns of {$cols}.',
+row_limit : 'You\'ve exceeded the maximum number of rows of {$rows}.',
+cell_limit : 'You\'ve exceeded the maximum number of cells of {$cells}.',
+missing_scope: 'Are you sure you want to continue without specifying a scope for this table header cell. Without it, it may be difficult for some users with disabilities to understand the content or data displayed of the table.'
+});

Added: labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/plugins/table/merge_cells.htm
===================================================================
--- labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/plugins/table/merge_cells.htm	2007-01-11 22:09:16 UTC (rev 8831)
+++ labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/plugins/table/merge_cells.htm	2007-01-11 22:10:56 UTC (rev 8832)
@@ -0,0 +1,38 @@
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+	<title>{$lang_table_merge_cells_title}</title>
+	<script language="javascript" type="text/javascript" src="../../tiny_mce_popup.js"></script>
+	<script language="javascript" type="text/javascript" src="../../utils/mctabs.js"></script>
+	<script language="javascript" type="text/javascript" src="../../utils/validate.js"></script>
+	<script language="javascript" type="text/javascript" src="jscripts/merge_cells.js"></script>
+	<base target="_self" />
+</head>
+<body onload="tinyMCEPopup.executeOnLoad('init();');" style="margin: 8px" style="display: none">
+<form onsubmit="insertTable();return false;" action="#">
+	<fieldset>
+		<legend>{$lang_table_merge_cells_title}</legend>
+		  <table border="0" cellpadding="0" cellspacing="3" width="100%">
+			  <tr>
+				<td>{$lang_table_cols}:</td>
+				<td align="right"><input type="text" name="numcols" value="" class="number min1" style="width: 30px" /></td>
+				<td>
+			  </tr>
+			  <tr>
+				<td>{$lang_table_rows}:</td>
+				<td align="right"><input type="text" name="numrows" value="" class="number min1" style="width: 30px" /></td>
+			  </tr>
+		  </table>
+	</fieldset>
+
+	<div class="mceActionPanel">
+		<div style="float: left">
+			<input type="button" id="insert" name="insert" value="{$lang_update}" onclick="mergeCells();" />
+		</div>
+
+		<div style="float: right">
+			<input type="button" id="cancel" name="cancel" value="{$lang_cancel}" onclick="tinyMCEPopup.close();" />
+		</div>
+	</div>
+</form>
+</body>
+</html>

Added: labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/plugins/table/readme.txt
===================================================================
--- labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/plugins/table/readme.txt	2007-01-11 22:09:16 UTC (rev 8831)
+++ labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/plugins/table/readme.txt	2007-01-11 22:10:56 UTC (rev 8832)
@@ -0,0 +1 @@
+Check the TinyMCE documentation for details on this plugin.

Added: labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/plugins/table/row.htm
===================================================================
--- labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/plugins/table/row.htm	2007-01-11 22:09:16 UTC (rev 8831)
+++ labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/plugins/table/row.htm	2007-01-11 22:10:56 UTC (rev 8832)
@@ -0,0 +1,159 @@
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+	<title>{$lang_table_row_title}</title>
+	<script language="javascript" type="text/javascript" src="../../tiny_mce_popup.js"></script>
+	<script language="javascript" type="text/javascript" src="../../utils/mctabs.js"></script>
+	<script language="javascript" type="text/javascript" src="../../utils/form_utils.js"></script>
+	<script language="javascript" type="text/javascript" src="jscripts/row.js"></script>
+	<link href="css/row.css" rel="stylesheet" type="text/css" />
+	<base target="_self" />
+</head>
+<body id="tablerow" onload="tinyMCEPopup.executeOnLoad('init();');" style="display: none">
+	<form onsubmit="updateAction();return false;">
+		<div class="tabs">
+			<ul>
+				<li id="general_tab" class="current"><span><a href="javascript:mcTabs.displayTab('general_tab','general_panel');" onmousedown="return false;">{$lang_table_general_tab}</a></span></li>
+				<li id="advanced_tab"><span><a href="javascript:mcTabs.displayTab('advanced_tab','advanced_panel');" onmousedown="return false;">{$lang_table_advanced_tab}</a></span></li>
+			</ul>
+		</div>
+
+		<div class="panel_wrapper">
+			<div id="general_panel" class="panel current">
+				<fieldset>
+					<legend>{$lang_table_general_props}</legend>
+
+					<table border="0" cellpadding="4" cellspacing="0">
+						<tr>
+							<td><label for="rowtype">{$lang_table_rowtype}</label></td>
+							<td class="col2">
+								<select id="rowtype" name="rowtype">
+									<option value="thead">{$lang_table_thead}</option>
+									<option value="tbody">{$lang_table_tbody}</option>
+									<option value="tfoot">{$lang_table_tfoot}</option>
+								</select>
+							</td>
+						</tr>
+
+						<tr>
+							<td><label for="align">{$lang_table_align}</label></td>
+							<td class="col2">
+								<select id="align" name="align">
+									<option value="">{$lang_not_set}</option>
+									<option value="center">{$lang_table_align_middle}</option>
+									<option value="left">{$lang_table_align_left}</option>
+									<option value="right">{$lang_table_align_right}</option>
+								</select>
+							</td>
+						</tr>
+
+						<tr>
+							<td><label for="valign">{$lang_table_valign}</label></td>
+							<td class="col2">
+								<select id="valign" name="valign">
+									<option value="">{$lang_not_set}</option>
+									<option value="top">{$lang_table_align_top}</option>
+									<option value="middle">{$lang_table_align_middle}</option>
+									<option value="bottom">{$lang_table_align_bottom}</option>
+								</select>
+							</td>
+						</tr>
+
+						<tr id="styleSelectRow">
+							<td><label for="class">{$lang_class_name}</label></td>
+							<td class="col2">
+								<select id="class" name="class">
+									<option value="" selected="selected">{$lang_not_set}</option>
+								</select>
+							</td>
+						</tr>
+
+						<tr>
+							<td><label for="height">{$lang_table_height}</label></td>
+							<td class="col2"><input name="height" type="text" id="height" value="" size="4" maxlength="4" onchange="changedSize();" /></td>
+						</tr>
+					</table>
+				</fieldset>
+			</div>
+
+			<div id="advanced_panel" class="panel">
+				<fieldset>
+					<legend>{$lang_table_advanced_props}</legend>
+
+					<table border="0" cellpadding="0" cellspacing="4">
+						<tr>
+							<td class="column1"><label for="id">{$lang_table_id}</label></td> 
+							<td><input id="id" name="id" type="text" value="" style="width: 200px" /></td> 
+						</tr>
+
+						<tr>
+							<td><label for="style">{$lang_table_style}</label></td>
+							<td><input type="text" id="style" name="style" value="" style="width: 200px;" onchange="changedStyle();" /></td>
+						</tr>
+
+						<tr>
+							<td class="column1"><label for="dir">{$lang_table_langdir}</label></td> 
+							<td>
+								<select id="dir" name="dir" style="width: 200px"> 
+										<option value="">{$lang_not_set}</option> 
+										<option value="ltr">{$lang_table_ltr}</option> 
+										<option value="rtl">{$lang_table_rtl}</option> 
+								</select>
+							</td> 
+						</tr>
+
+						<tr>
+							<td class="column1"><label for="lang">{$lang_table_langcode}</label></td> 
+							<td>
+								<input id="lang" name="lang" type="text" value="" style="width: 200px" />
+							</td> 
+						</tr>
+
+						<tr>
+							<td class="column1"><label for="backgroundimage">{$lang_table_bgimage}</label></td> 
+							<td>
+								<table border="0" cellpadding="0" cellspacing="0">
+									<tr>
+										<td><input id="backgroundimage" name="backgroundimage" type="text" value="" style="width: 200px" onchange="changedBackgroundImage();" /></td>
+										<td id="backgroundimagebrowsercontainer">&nbsp;</td>
+									</tr>
+								</table>
+							</td> 
+						</tr>
+
+						<tr>
+							<td class="column1"><label for="bgcolor">{$lang_table_bgcolor}</label></td> 
+							<td>
+								<table border="0" cellpadding="0" cellspacing="0">
+									<tr>
+										<td><input id="bgcolor" name="bgcolor" type="text" value="" size="9" onchange="updateColor('bgcolor_pick','bgcolor');changedColor();" /></td>
+										<td id="bgcolor_pickcontainer">&nbsp;</td>
+									</tr>
+								</table>
+							</td> 
+						</tr>
+					</table>
+				</fieldset>
+			</div>
+		</div>
+
+		<div class="mceActionPanel">
+			<div>
+				<select id="action" name="action">
+					<option value="row">{$lang_table_row_row}</option>
+					<option value="odd">{$lang_table_row_odd}</option>
+					<option value="even">{$lang_table_row_even}</option>
+					<option value="all">{$lang_table_row_all}</option>
+				</select>
+			</div>
+
+			<div style="float: left">
+				<div><input type="button" id="insert" name="insert" value="{$lang_update}" onclick="updateAction();" /></div>
+			</div>
+
+			<div style="float: right">
+				<input type="button" id="cancel" name="cancel" value="{$lang_cancel}" onclick="tinyMCEPopup.close();" />
+			</div>
+		</div>
+	</form>
+</body>
+</html>

Added: labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/plugins/table/table.htm
===================================================================
--- labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/plugins/table/table.htm	2007-01-11 22:09:16 UTC (rev 8831)
+++ labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/plugins/table/table.htm	2007-01-11 22:10:56 UTC (rev 8832)
@@ -0,0 +1,156 @@
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+	<title>{$lang_table_title}</title>
+	<script language="javascript" type="text/javascript" src="../../tiny_mce_popup.js"></script>
+	<script language="javascript" type="text/javascript" src="../../utils/mctabs.js"></script>
+	<script language="javascript" type="text/javascript" src="../../utils/form_utils.js"></script>
+	<script language="javascript" type="text/javascript" src="../../utils/validate.js"></script>
+	<script language="javascript" type="text/javascript" src="jscripts/table.js"></script>
+	<link href="css/table.css" rel="stylesheet" type="text/css" />
+	<base target="_self" />
+</head>
+<body id="table" onload="tinyMCEPopup.executeOnLoad('init();');" style="display: none">
+	<form onsubmit="insertTable();return false;" action="#">
+		<div class="tabs">
+			<ul>
+				<li id="general_tab" class="current"><span><a href="javascript:mcTabs.displayTab('general_tab','general_panel');" onmousedown="return false;">{$lang_table_general_tab}</a></span></li>
+				<li id="advanced_tab"><span><a href="javascript:mcTabs.displayTab('advanced_tab','advanced_panel');" onmousedown="return false;">{$lang_table_advanced_tab}</a></span></li>
+			</ul>
+		</div>
+
+		<div class="panel_wrapper">
+			<div id="general_panel" class="panel current">
+				<fieldset>
+					<legend>{$lang_table_general_props}</legend>
+
+					  <table border="0" cellpadding="4" cellspacing="0" width="100%">
+							  <tr>
+								<td><label id="colslabel" for="cols">{$lang_table_cols}</label></td>
+								<td><input id="cols" name="cols" type="text" value="" size="3" maxlength="3" class="required number min1" /></td>
+								<td><label id="rowslabel" for="rows">{$lang_table_rows}</label></td>
+								<td><input id="rows" name="rows" type="text" value="" size="3" maxlength="3" class="required number min1" /></td>
+							  </tr>
+							  <tr>
+								<td><label id="cellpaddinglabel" for="cellpadding">{$lang_table_cellpadding}</label></td>
+								<td><input id="cellpadding" name="cellpadding" type="text" value="" size="3" maxlength="3" class="number" /></td>
+								<td><label id="cellspacinglabel" for="cellspacing">{$lang_table_cellspacing}</label></td>
+								<td><input id="cellspacing" name="cellspacing" type="text" value="" size="3" maxlength="3" class="number" /></td>
+							  </tr>
+							  <tr>
+								<td><label id="alignlabel" for="align">{$lang_table_align}</label></td>
+								<td><select id="align" name="align">
+									<option value="">{$lang_not_set}</option>
+									<option value="center">{$lang_table_align_middle}</option>
+									<option value="left">{$lang_table_align_left}</option>
+									<option value="right">{$lang_table_align_right}</option>
+								  </select></td>
+								<td><label id="borderlabel" for="border">{$lang_table_border}</label></td>
+								<td><input id="border" name="border" type="text" value="" size="3" maxlength="3" onchange="changedBorder();" class="number" /></td>
+							  </tr>
+							  <tr id="width_row">
+								<td><label id="widthlabel" for="width">{$lang_table_width}</label></td>
+								<td><input name="width" type="text" id="width" value="" size="4" maxlength="4" onchange="changedSize();" class="size" /></td>
+								<td><label id="heightlabel" for="height">{$lang_table_height}</label></td>
+								<td><input name="height" type="text" id="height" value="" size="4" maxlength="4" onchange="changedSize();" class="size" /></td>
+							  </tr>
+							  <tr id="styleSelectRow">
+								<td><label id="classlabel" for="class">{$lang_class_name}</label></td>
+								<td colspan="3">
+								 <select id="class" name="class">
+									<option value="" selected>{$lang_not_set}</option>
+								 </select></td>
+							  </tr>
+							</table>
+				</fieldset>
+			</div>
+
+			<div id="advanced_panel" class="panel">
+				<fieldset>
+					<legend>{$lang_table_advanced_props}</legend>
+
+					<table border="0" cellpadding="0" cellspacing="4">
+						<tr>
+							<td class="column1"><label for="id">{$lang_table_id}</label></td> 
+							<td><input id="id" name="id" type="text" value="" class="advfield" /></td> 
+						</tr>
+
+						<tr>
+							<td class="column1"><label for="summary">{$lang_table_summary}</label></td> 
+							<td><input id="summary" name="summary" type="text" value="" class="advfield" /></td> 
+						</tr>
+
+						<tr>
+							<td><label for="style">{$lang_table_style}</label></td>
+							<td><input type="text" id="style" name="style" value="" class="advfield" onchange="changedStyle();" /></td>
+						</tr>
+
+						<tr>
+							<td class="column1"><label for="dir">{$lang_table_langdir}</label></td> 
+							<td>
+								<select id="dir" name="dir" class="advfield"> 
+										<option value="">{$lang_not_set}</option> 
+										<option value="ltr">{$lang_table_ltr}</option> 
+										<option value="rtl">{$lang_table_rtl}</option> 
+								</select>
+							</td> 
+						</tr>
+
+						<tr>
+							<td class="column1"><label id="langlabel" for="lang">{$lang_table_langcode}</label></td> 
+							<td>
+								<input id="lang" name="lang" type="text" value="" class="advfield" />
+							</td> 
+						</tr>
+
+						<tr>
+							<td class="column1"><label for="backgroundimage">{$lang_table_bgimage}</label></td> 
+							<td>
+								<table border="0" cellpadding="0" cellspacing="0">
+									<tr>
+										<td><input id="backgroundimage" name="backgroundimage" type="text" value="" class="advfield" onchange="changedBackgroundImage();" /></td>
+										<td id="backgroundimagebrowsercontainer">&nbsp;</td>
+									</tr>
+								</table>
+							</td> 
+						</tr>
+
+						<tr>
+							<td class="column1"><label for="bordercolor">{$lang_table_bordercolor}</label></td> 
+							<td>
+								<table border="0" cellpadding="0" cellspacing="0">
+									<tr>
+										<td><input id="bordercolor" name="bordercolor" type="text" value="" size="9" onchange="updateColor('bordercolor_pick','bordercolor');changedColor();" /></td>
+										<td id="bordercolor_pickcontainer">&nbsp;</td>
+									</tr>
+								</table>
+							</td> 
+						</tr>
+
+						<tr>
+							<td class="column1"><label for="bgcolor">{$lang_table_bgcolor}</label></td> 
+							<td>
+								<table border="0" cellpadding="0" cellspacing="0">
+									<tr>
+										<td><input id="bgcolor" name="bgcolor" type="text" value="" size="9" onchange="updateColor('bgcolor_pick','bgcolor');changedColor();" /></td>
+										<td id="bgcolor_pickcontainer">&nbsp;</td>
+									</tr>
+								</table>
+							</td> 
+						</tr>
+					</table>
+				</fieldset>
+			</div>
+		</div>
+
+		<div class="mceActionPanel">
+			<div style="float: left">
+				<input type="button" id="insert" name="insert" value="{$lang_insert}" onclick="insertTable();" />
+			</div>
+
+			<div style="float: right">
+				<input type="button" id="cancel" name="cancel" value="{$lang_cancel}" onclick="tinyMCEPopup.close();" />
+			</div>
+		</div>
+	</form>
+</body>
+</html>

Added: labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/plugins/visualchars/editor_plugin.js
===================================================================
--- labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/plugins/visualchars/editor_plugin.js	2007-01-11 22:09:16 UTC (rev 8831)
+++ labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/plugins/visualchars/editor_plugin.js	2007-01-11 22:10:56 UTC (rev 8832)
@@ -0,0 +1 @@
+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},_tog!
 gleVisualChars:function(editor_id,inst){var nl,i,h,d=inst.getDoc(),b=inst.getBody(),nv,s=inst.selection,bo;inst.visualChars.state=!inst.visualChars.state;bo=s.getBookmark(true);tinyMCE.switchClass(editor_id+'_visualchars',inst.visualChars.state?'mceButtonSelected':'mceButtonNormal');if(inst.visualChars.state){nl=tinyMCE.selectNodes(b,function(n){return n.nodeType==3&&n.nodeValue&&n.nodeValue.indexOf('\u00a0')!=-1});for(i=0;i<nl.length;i++){nv=nl[i].nodeValue;nv=nv.replace(/(\u00a0+)/g,'<span class="mceItemHiddenVisualChar">$1</span>');nv=nv.replace(/\u00a0/g,'\u00b7');tinyMCE.setOuterHTML(nl[i],nv,d)}}else{nl=tinyMCE.selectNodes(b,function(n){return n.nodeType==1&&n.nodeName=='SPAN'&&n.className=='mceItemHiddenVisualChar'});for(i=0;i<nl.length;i++)tinyMCE.setOuterHTML(nl[i],nl[i].innerHTML.replace(/(&middot;|\u00b7)/g,'&nbsp;'),d)}}};tinyMCE.addPlugin("visualchars",TinyMCE_VisualCharsPlugin);
\ No newline at end of file

Added: labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/plugins/visualchars/editor_plugin_src.js
===================================================================
--- labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/plugins/visualchars/editor_plugin_src.js	2007-01-11 22:09:16 UTC (rev 8831)
+++ labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/plugins/visualchars/editor_plugin_src.js	2007-01-11 22:10:56 UTC (rev 8832)
@@ -0,0 +1,89 @@
+/**
+ * $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(/(&middot;|\u00b7)/g, '&nbsp;'), d);
+		}
+
+		//s.moveToBookmark(bo);
+	}
+};
+
+tinyMCE.addPlugin("visualchars", TinyMCE_VisualCharsPlugin);

Added: labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/plugins/visualchars/images/visualchars.gif
===================================================================
(Binary files differ)


Property changes on: labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/plugins/visualchars/images/visualchars.gif
___________________________________________________________________
Name: svn:mime-type
   + application/octet-stream

Added: labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/plugins/visualchars/langs/en.js
===================================================================
--- labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/plugins/visualchars/langs/en.js	2007-01-11 22:09:16 UTC (rev 8831)
+++ labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/plugins/visualchars/langs/en.js	2007-01-11 22:10:56 UTC (rev 8832)
@@ -0,0 +1,5 @@
+// EN lang variables
+
+tinyMCE.addToLang('visualchars',{
+desc : 'Visual control characters on/off.'
+});

Added: labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/plugins/xhtmlxtras/abbr.htm
===================================================================
--- labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/plugins/xhtmlxtras/abbr.htm	2007-01-11 22:09:16 UTC (rev 8831)
+++ labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/plugins/xhtmlxtras/abbr.htm	2007-01-11 22:10:56 UTC (rev 8832)
@@ -0,0 +1,148 @@
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+	<title>{$lang_xhtmlxtras_title_abbr_element}</title>
+	<script language="javascript" type="text/javascript" src="../../tiny_mce_popup.js"></script>
+	<script language="javascript" type="text/javascript" src="../../utils/mctabs.js"></script>
+	<script language="javascript" type="text/javascript" src="../../utils/form_utils.js"></script>
+	<script language="javascript" type="text/javascript" src="../../utils/editable_selects.js"></script>
+	<script language="javascript" type="text/javascript" src="jscripts/element_common.js"></script>
+	<script language="javascript" type="text/javascript" src="jscripts/abbr.js"></script>
+	<link rel="stylesheet" type="text/css" href="css/popup.css" />
+	<base target="_self" />
+</head>
+<body onload="tinyMCEPopup.executeOnLoad('init();');" style="display: none">
+<form onsubmit="insertAbbr();return false;" action="#">
+	<div class="tabs">
+		<ul>
+			<li id="general_tab" class="current"><span><a href="javascript:mcTabs.displayTab('general_tab','general_panel');" onmousedown="return false;">{$lang_xhtmlxtras_general_tab}</a></span></li>
+			<!-- <li id="events_tab"><span><a href="javascript:mcTabs.displayTab('events_tab','events_panel');" onmousedown="return false;">{$lang_xhtmlxtras_events_tab}</a></span></li> -->
+		</ul>
+	</div>
+
+	<div class="panel_wrapper">
+		<div id="general_panel" class="panel current">
+			<fieldset>
+				<legend>{$lang_xhtmlxtras_fieldset_attrib_tab}</legend>
+				<table border="0" cellpadding="0" cellspacing="4">
+					<tr>
+						<td class="label"><label id="titlelabel" for="title">{$lang_xhtmlxtras_attribute_label_title}</label>:</td> 
+						<td><input id="title" name="title" type="text" value="" class="field" /></td> 
+					</tr>
+					<tr>
+						<td class="label"><label id="idlabel" for="id">{$lang_xhtmlxtras_attribute_label_id}</label>:</td> 
+						<td><input id="id" name="id" type="text" value="" class="field" /></td> 
+					</tr>
+					<tr>
+						<td class="label"><label id="classlabel" for="class">{$lang_xhtmlxtras_attribute_label_class}</label>:</td> 
+						<td>
+							<select id="class" name="class" class="field mceEditableSelect">
+								<option value="">{$lang_xhtmlxtras_not_set}</option> 
+							</select>
+						</td>
+					</tr>
+					<tr>
+						<td class="label"><label id="stylelabel" for="class">{$lang_xhtmlxtras_attribute_label_style}</label>:</td> 
+						<td><input id="style" name="style" type="text" value="" class="field" /></td> 
+					</tr>
+					<tr>
+						<td class="label"><label id="dirlabel" for="dir">{$lang_xhtmlxtras_attribute_label_langdir}</label>:</td> 
+						<td>
+							<select id="dir" name="dir" class="field"> 
+								<option value="">{$lang_xhtmlxtras_not_set}</option> 
+								<option value="ltr">{$lang_xhtmlxtras_attribute_option_ltr}</option> 
+								<option value="rtl">{$lang_xhtmlxtras_attribute_option_rtl}</option> 
+							</select>
+						</td> 
+					</tr>
+					<tr>
+						<td class="label"><label id="langlabel" for="lang">{$lang_xhtmlxtras_attribute_label_langcode}</label>:</td> 
+						<td>
+							<input id="lang" name="lang" type="text" value="" class="field" />
+						</td> 
+					</tr>
+				</table>
+			</fieldset>
+		</div>
+		<div id="events_panel" class="panel">
+			<fieldset>
+				<legend>{$lang_xhtmlxtras_fieldset_events_tab}</legend>
+
+				<table border="0" cellpadding="0" cellspacing="4">
+					<tr>
+						<td class="label"><label for="onfocus">onfocus</label>:</td> 
+						<td><input id="onfocus" name="onfocus" type="text" value="" class="field" /></td> 
+					</tr>
+
+					<tr>
+						<td class="label"><label for="onblur">onblur</label>:</td> 
+						<td><input id="onblur" name="onblur" type="text" value="" class="field" /></td> 
+					</tr>
+
+					<tr>
+						<td class="label"><label for="onclick">onclick</label>:</td> 
+						<td><input id="onclick" name="onclick" type="text" value="" class="field" /></td> 
+					</tr>
+
+					<tr>
+						<td class="label"><label for="ondblclick">ondblclick</label>:</td> 
+						<td><input id="ondblclick" name="ondblclick" type="text" value="" class="field" /></td> 
+					</tr>
+
+					<tr>
+						<td class="label"><label for="onmousedown">onmousedown</label>:</td> 
+						<td><input id="onmousedown" name="onmousedown" type="text" value="" class="field" /></td> 
+					</tr>
+
+					<tr>
+						<td class="label"><label for="onmouseup">onmouseup</label>:</td> 
+						<td><input id="onmouseup" name="onmouseup" type="text" value="" class="field" /></td> 
+					</tr>
+
+					<tr>
+						<td class="label"><label for="onmouseover">onmouseover</label>:</td> 
+						<td><input id="onmouseover" name="onmouseover" type="text" value="" class="field" /></td> 
+					</tr>
+
+					<tr>
+						<td class="label"><label for="onmousemove">onmousemove</label>:</td> 
+						<td><input id="onmousemove" name="onmousemove" type="text" value="" class="field" /></td> 
+					</tr>
+
+					<tr>
+						<td class="label"><label for="onmouseout">onmouseout</label>:</td> 
+						<td><input id="onmouseout" name="onmouseout" type="text" value="" class="field" /></td> 
+					</tr>
+
+					<tr>
+						<td class="label"><label for="onkeypress">onkeypress</label>:</td> 
+						<td><input id="onkeypress" name="onkeypress" type="text" value="" class="field" /></td> 
+					</tr>
+
+					<tr>
+						<td class="label"><label for="onkeydown">onkeydown</label>:</td> 
+						<td><input id="onkeydown" name="onkeydown" type="text" value="" class="field" /></td> 
+					</tr>
+
+					<tr>
+						<td class="label"><label for="onkeyup">onkeyup</label>:</td> 
+						<td><input id="onkeyup" name="onkeyup" type="text" value="" class="field" /></td> 
+					</tr>
+				</table>
+			</fieldset>
+		</div>
+	</div>
+	<div class="mceActionPanel">
+		<div style="float: left">
+			<input type="button" id="insert" name="insert" value="{$lang_update}" onclick="insertAbbr();" />
+		</div>
+		<div style="float: left">
+			<input type="button" id="remove" name="remove" value="{$lang_xhtmlxtras_remove}" onclick="removeAbbr();" style="display: none;" />
+		</div>
+		<div style="float: right">
+			<input type="button" id="cancel" name="cancel" value="{$lang_cancel}" onclick="tinyMCEPopup.close();" />
+		</div>
+	</div>
+
+</form>
+</body>
+</html>

Added: labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/plugins/xhtmlxtras/acronym.htm
===================================================================
--- labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/plugins/xhtmlxtras/acronym.htm	2007-01-11 22:09:16 UTC (rev 8831)
+++ labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/plugins/xhtmlxtras/acronym.htm	2007-01-11 22:10:56 UTC (rev 8832)
@@ -0,0 +1,148 @@
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+	<title>{$lang_xhtmlxtras_title_acronym_element}</title>
+	<script language="javascript" type="text/javascript" src="../../tiny_mce_popup.js"></script>
+	<script language="javascript" type="text/javascript" src="../../utils/mctabs.js"></script>
+	<script language="javascript" type="text/javascript" src="../../utils/form_utils.js"></script>
+	<script language="javascript" type="text/javascript" src="../../utils/editable_selects.js"></script>
+	<script language="javascript" type="text/javascript" src="jscripts/element_common.js"></script>
+	<script language="javascript" type="text/javascript" src="jscripts/acronym.js"></script>
+	<link rel="stylesheet" type="text/css" href="css/popup.css" />
+	<base target="_self" />
+</head>
+<body onload="tinyMCEPopup.executeOnLoad('init();');" style="display: none">
+<form onsubmit="insertAcronym();return false;" action="#">
+	<div class="tabs">
+		<ul>
+			<li id="general_tab" class="current"><span><a href="javascript:mcTabs.displayTab('general_tab','general_panel');" onmousedown="return false;">{$lang_xhtmlxtras_general_tab}</a></span></li>
+			<!-- <li id="events_tab"><span><a href="javascript:mcTabs.displayTab('events_tab','events_panel');" onmousedown="return false;">{$lang_xhtmlxtras_events_tab}</a></span></li> -->
+		</ul>
+	</div>
+
+	<div class="panel_wrapper">
+		<div id="general_panel" class="panel current">
+			<fieldset>
+				<legend>{$lang_xhtmlxtras_fieldset_attrib_tab}</legend>
+				<table border="0" cellpadding="0" cellspacing="4">
+					<tr>
+						<td class="label"><label id="titlelabel" for="title">{$lang_xhtmlxtras_attribute_label_title}</label>:</td> 
+						<td><input id="title" name="title" type="text" value="" class="field" /></td> 
+					</tr>
+					<tr>
+						<td class="label"><label id="idlabel" for="id">{$lang_xhtmlxtras_attribute_label_id}</label>:</td> 
+						<td><input id="id" name="id" type="text" value="" class="field" /></td> 
+					</tr>
+					<tr>
+						<td class="label"><label id="classlabel" for="class">{$lang_xhtmlxtras_attribute_label_class}</label>:</td> 
+						<td>
+							<select id="class" name="class" class="field mceEditableSelect">
+								<option value="">{$lang_xhtmlxtras_not_set}</option> 
+							</select>
+						</td>
+					</tr>
+					<tr>
+						<td class="label"><label id="stylelabel" for="class">{$lang_xhtmlxtras_attribute_label_style}</label>:</td> 
+						<td><input id="style" name="style" type="text" value="" class="field" /></td> 
+					</tr>
+					<tr>
+						<td class="label"><label id="dirlabel" for="dir">{$lang_xhtmlxtras_attribute_label_langdir}</label>:</td> 
+						<td>
+							<select id="dir" name="dir" class="field"> 
+								<option value="">{$lang_xhtmlxtras_not_set}</option> 
+								<option value="ltr">{$lang_xhtmlxtras_attribute_option_ltr}</option> 
+								<option value="rtl">{$lang_xhtmlxtras_attribute_option_rtl}</option> 
+							</select>
+						</td> 
+					</tr>
+					<tr>
+						<td class="label"><label id="langlabel" for="lang">{$lang_xhtmlxtras_attribute_label_langcode}</label>:</td> 
+						<td>
+							<input id="lang" name="lang" type="text" value="" class="field" />
+						</td> 
+					</tr>
+				</table>
+			</fieldset>
+		</div>
+		<div id="events_panel" class="panel">
+			<fieldset>
+				<legend>{$lang_xhtmlxtras_fieldset_events_tab}</legend>
+
+				<table border="0" cellpadding="0" cellspacing="4">
+					<tr>
+						<td class="label"><label for="onfocus">onfocus</label>:</td> 
+						<td><input id="onfocus" name="onfocus" type="text" value="" class="field" /></td> 
+					</tr>
+
+					<tr>
+						<td class="label"><label for="onblur">onblur</label>:</td> 
+						<td><input id="onblur" name="onblur" type="text" value="" class="field" /></td> 
+					</tr>
+
+					<tr>
+						<td class="label"><label for="onclick">onclick</label>:</td> 
+						<td><input id="onclick" name="onclick" type="text" value="" class="field" /></td> 
+					</tr>
+
+					<tr>
+						<td class="label"><label for="ondblclick">ondblclick</label>:</td> 
+						<td><input id="ondblclick" name="ondblclick" type="text" value="" class="field" /></td> 
+					</tr>
+
+					<tr>
+						<td class="label"><label for="onmousedown">onmousedown</label>:</td> 
+						<td><input id="onmousedown" name="onmousedown" type="text" value="" class="field" /></td> 
+					</tr>
+
+					<tr>
+						<td class="label"><label for="onmouseup">onmouseup</label>:</td> 
+						<td><input id="onmouseup" name="onmouseup" type="text" value="" class="field" /></td> 
+					</tr>
+
+					<tr>
+						<td class="label"><label for="onmouseover">onmouseover</label>:</td> 
+						<td><input id="onmouseover" name="onmouseover" type="text" value="" class="field" /></td> 
+					</tr>
+
+					<tr>
+						<td class="label"><label for="onmousemove">onmousemove</label>:</td> 
+						<td><input id="onmousemove" name="onmousemove" type="text" value="" class="field" /></td> 
+					</tr>
+
+					<tr>
+						<td class="label"><label for="onmouseout">onmouseout</label>:</td> 
+						<td><input id="onmouseout" name="onmouseout" type="text" value="" class="field" /></td> 
+					</tr>
+
+					<tr>
+						<td class="label"><label for="onkeypress">onkeypress</label>:</td> 
+						<td><input id="onkeypress" name="onkeypress" type="text" value="" class="field" /></td> 
+					</tr>
+
+					<tr>
+						<td class="label"><label for="onkeydown">onkeydown</label>:</td> 
+						<td><input id="onkeydown" name="onkeydown" type="text" value="" class="field" /></td> 
+					</tr>
+
+					<tr>
+						<td class="label"><label for="onkeyup">onkeyup</label>:</td> 
+						<td><input id="onkeyup" name="onkeyup" type="text" value="" class="field" /></td> 
+					</tr>
+				</table>
+			</fieldset>
+		</div>
+	</div>
+	<div class="mceActionPanel">
+		<div style="float: left">
+			<input type="button" id="insert" name="insert" value="{$lang_update}" onclick="insertAcronym();" />
+		</div>
+		<div style="float: left">
+			<input type="button" id="remove" name="remove" value="{$lang_xhtmlxtras_remove}" onclick="removeAcronym();" style="display: none;" />
+		</div>
+		<div style="float: right">
+			<input type="button" id="cancel" name="cancel" value="{$lang_cancel}" onclick="tinyMCEPopup.close();" />
+		</div>
+	</div>
+
+</form>
+</body>
+</html>

Added: labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/plugins/xhtmlxtras/cite.htm
===================================================================
--- labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/plugins/xhtmlxtras/cite.htm	2007-01-11 22:09:16 UTC (rev 8831)
+++ labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/plugins/xhtmlxtras/cite.htm	2007-01-11 22:10:56 UTC (rev 8832)
@@ -0,0 +1,148 @@
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+	<title>{$lang_xhtmlxtras_title_cite_element}</title>
+	<script language="javascript" type="text/javascript" src="../../tiny_mce_popup.js"></script>
+	<script language="javascript" type="text/javascript" src="../../utils/mctabs.js"></script>
+	<script language="javascript" type="text/javascript" src="../../utils/form_utils.js"></script>
+	<script language="javascript" type="text/javascript" src="../../utils/editable_selects.js"></script>
+	<script language="javascript" type="text/javascript" src="jscripts/element_common.js"></script>
+	<script language="javascript" type="text/javascript" src="jscripts/cite.js"></script>
+	<link rel="stylesheet" type="text/css" href="css/popup.css" />
+	<base target="_self" />
+</head>
+<body onload="tinyMCEPopup.executeOnLoad('init();');" style="display: none">
+<form onsubmit="insertCite();return false;" action="#">
+	<div class="tabs">
+		<ul>
+			<li id="general_tab" class="current"><span><a href="javascript:mcTabs.displayTab('general_tab','general_panel');" onmousedown="return false;">{$lang_xhtmlxtras_general_tab}</a></span></li>
+			<!-- <li id="events_tab"><span><a href="javascript:mcTabs.displayTab('events_tab','events_panel');" onmousedown="return false;">{$lang_xhtmlxtras_events_tab}</a></span></li> -->
+		</ul>
+	</div>
+
+	<div class="panel_wrapper">
+		<div id="general_panel" class="panel current">
+			<fieldset>
+				<legend>{$lang_xhtmlxtras_fieldset_attrib_tab}</legend>
+				<table border="0" cellpadding="0" cellspacing="4">
+					<tr>
+						<td class="label"><label id="titlelabel" for="title">{$lang_xhtmlxtras_attribute_label_title}</label>:</td> 
+						<td><input id="title" name="title" type="text" value="" class="field" /></td> 
+					</tr>
+					<tr>
+						<td class="label"><label id="idlabel" for="id">{$lang_xhtmlxtras_attribute_label_id}</label>:</td> 
+						<td><input id="id" name="id" type="text" value="" class="field" /></td> 
+					</tr>
+					<tr>
+						<td class="label"><label id="classlabel" for="class">{$lang_xhtmlxtras_attribute_label_class}</label>:</td> 
+						<td>
+							<select id="class" name="class" class="field mceEditableSelect">
+								<option value="">{$lang_xhtmlxtras_not_set}</option> 
+							</select>
+						</td>
+					</tr>
+					<tr>
+						<td class="label"><label id="stylelabel" for="class">{$lang_xhtmlxtras_attribute_label_style}</label>:</td> 
+						<td><input id="style" name="style" type="text" value="" class="field" /></td> 
+					</tr>
+					<tr>
+						<td class="label"><label id="dirlabel" for="dir">{$lang_xhtmlxtras_attribute_label_langdir}</label>:</td> 
+						<td>
+							<select id="dir" name="dir" class="field"> 
+								<option value="">{$lang_xhtmlxtras_not_set}</option> 
+								<option value="ltr">{$lang_xhtmlxtras_attribute_option_ltr}</option> 
+								<option value="rtl">{$lang_xhtmlxtras_attribute_option_rtl}</option> 
+							</select>
+						</td> 
+					</tr>
+					<tr>
+						<td class="label"><label id="langlabel" for="lang">{$lang_xhtmlxtras_attribute_label_langcode}</label>:</td> 
+						<td>
+							<input id="lang" name="lang" type="text" value="" class="field" />
+						</td> 
+					</tr>
+				</table>
+			</fieldset>
+		</div>
+		<div id="events_panel" class="panel">
+			<fieldset>
+				<legend>{$lang_xhtmlxtras_fieldset_events_tab}</legend>
+
+				<table border="0" cellpadding="0" cellspacing="4">
+					<tr>
+						<td class="label"><label for="onfocus">onfocus</label>:</td> 
+						<td><input id="onfocus" name="onfocus" type="text" value="" class="field" /></td> 
+					</tr>
+
+					<tr>
+						<td class="label"><label for="onblur">onblur</label>:</td> 
+						<td><input id="onblur" name="onblur" type="text" value="" class="field" /></td> 
+					</tr>
+
+					<tr>
+						<td class="label"><label for="onclick">onclick</label>:</td> 
+						<td><input id="onclick" name="onclick" type="text" value="" class="field" /></td> 
+					</tr>
+
+					<tr>
+						<td class="label"><label for="ondblclick">ondblclick</label>:</td> 
+						<td><input id="ondblclick" name="ondblclick" type="text" value="" class="field" /></td> 
+					</tr>
+
+					<tr>
+						<td class="label"><label for="onmousedown">onmousedown</label>:</td> 
+						<td><input id="onmousedown" name="onmousedown" type="text" value="" class="field" /></td> 
+					</tr>
+
+					<tr>
+						<td class="label"><label for="onmouseup">onmouseup</label>:</td> 
+						<td><input id="onmouseup" name="onmouseup" type="text" value="" class="field" /></td> 
+					</tr>
+
+					<tr>
+						<td class="label"><label for="onmouseover">onmouseover</label>:</td> 
+						<td><input id="onmouseover" name="onmouseover" type="text" value="" class="field" /></td> 
+					</tr>
+
+					<tr>
+						<td class="label"><label for="onmousemove">onmousemove</label>:</td> 
+						<td><input id="onmousemove" name="onmousemove" type="text" value="" class="field" /></td> 
+					</tr>
+
+					<tr>
+						<td class="label"><label for="onmouseout">onmouseout</label>:</td> 
+						<td><input id="onmouseout" name="onmouseout" type="text" value="" class="field" /></td> 
+					</tr>
+
+					<tr>
+						<td class="label"><label for="onkeypress">onkeypress</label>:</td> 
+						<td><input id="onkeypress" name="onkeypress" type="text" value="" class="field" /></td> 
+					</tr>
+
+					<tr>
+						<td class="label"><label for="onkeydown">onkeydown</label>:</td> 
+						<td><input id="onkeydown" name="onkeydown" type="text" value="" class="field" /></td> 
+					</tr>
+
+					<tr>
+						<td class="label"><label for="onkeyup">onkeyup</label>:</td> 
+						<td><input id="onkeyup" name="onkeyup" type="text" value="" class="field" /></td> 
+					</tr>
+				</table>
+			</fieldset>
+		</div>
+	</div>
+	<div class="mceActionPanel">
+		<div style="float: left">
+			<input type="button" id="insert" name="insert" value="{$lang_update}" onclick="insertCite();" />
+		</div>
+		<div style="float: left">
+			<input type="button" id="remove" name="remove" value="{$lang_xhtmlxtras_remove}" onclick="removeCite();" style="display: none;" />
+		</div>
+		<div style="float: right">
+			<input type="button" id="cancel" name="cancel" value="{$lang_cancel}" onclick="tinyMCEPopup.close();" />
+		</div>
+	</div>
+
+</form>
+</body>
+</html>

Added: labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/plugins/xhtmlxtras/css/popup.css
===================================================================
--- labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/plugins/xhtmlxtras/css/popup.css	2007-01-11 22:09:16 UTC (rev 8831)
+++ labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/plugins/xhtmlxtras/css/popup.css	2007-01-11 22:10:56 UTC (rev 8832)
@@ -0,0 +1,46 @@
+a.mceButtonNormal img, a.mceButtonSelected img {border: 1px solid #F0F0EE !important;}
+a.mceButtonNormal img:hover, a.mceButtonSelected img:hover {border: 1px solid #0A246A !important;  cursor: default;  background-color: #B6BDD2;}
+
+img {
+	border: 0;
+}
+
+input.field, select.field {
+	width: 200px;
+}
+
+input.picker {
+	width: 179px;
+	margin-left: 5px;
+}
+
+input.disabled {
+	border-color: #F2F2F2;
+}
+
+img.picker {
+	vertical-align: text-bottom;
+	cursor: pointer;
+}
+
+h1 {
+	padding: 0 0 5px 0;
+}
+
+#remove {
+	font-weight: bold;
+	width: 90px;
+	height: 21px;
+	border: 0px;
+	background-image: url('../images/remove_button_bg.gif');
+	cursor: pointer;
+	margin-left: 3px;
+}
+
+.panel_wrapper div.current {
+	height: 160px;
+}
+
+#xhtmlxtrasdel .panel_wrapper div.current, #xhtmlxtrasins .panel_wrapper div.current {
+	height: 220px;
+}

Added: labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/plugins/xhtmlxtras/css/xhtmlxtras.css
===================================================================
--- labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/plugins/xhtmlxtras/css/xhtmlxtras.css	2007-01-11 22:09:16 UTC (rev 8831)
+++ labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/plugins/xhtmlxtras/css/xhtmlxtras.css	2007-01-11 22:10:56 UTC (rev 8832)
@@ -0,0 +1,24 @@
+ins {
+	border-bottom: 1px solid green;
+	text-decoration: none;
+	color: green;
+}
+
+del {
+	color: Red;
+	text-decoration: line-through;
+}
+
+cite {
+	border-bottom: 1px dashed blue;
+}
+
+acronym {
+	border-bottom: 1px dotted #CCC;
+	cursor: help;
+}
+
+abbr, html\:abbr {
+	border-bottom: 1px dashed #CCC;
+	cursor: help;
+}

Added: labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/plugins/xhtmlxtras/del.htm
===================================================================
--- labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/plugins/xhtmlxtras/del.htm	2007-01-11 22:09:16 UTC (rev 8831)
+++ labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/plugins/xhtmlxtras/del.htm	2007-01-11 22:10:56 UTC (rev 8832)
@@ -0,0 +1,169 @@
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+	<title>{$lang_xhtmlxtras_title_del_element}</title>
+	<script language="javascript" type="text/javascript" src="../../tiny_mce_popup.js"></script>
+	<script language="javascript" type="text/javascript" src="../../utils/mctabs.js"></script>
+	<script language="javascript" type="text/javascript" src="../../utils/form_utils.js"></script>
+	<script language="javascript" type="text/javascript" src="../../utils/editable_selects.js"></script>
+	<script language="javascript" type="text/javascript" src="jscripts/element_common.js"></script>
+	<script language="javascript" type="text/javascript" src="jscripts/del.js"></script>
+	<link rel="stylesheet" type="text/css" href="css/popup.css" />
+	<base target="_self" />
+</head>
+<body id="xhtmlxtrasins" onload="tinyMCEPopup.executeOnLoad('init();');" style="display: none">
+<form onsubmit="insertDel();return false;" action="#">
+	<div class="tabs">
+		<ul>
+			<li id="general_tab" class="current"><span><a href="javascript:mcTabs.displayTab('general_tab','general_panel');" onmousedown="return false;">{$lang_xhtmlxtras_general_tab}</a></span></li>
+			<!-- <li id="events_tab"><span><a href="javascript:mcTabs.displayTab('events_tab','events_panel');" onmousedown="return false;">{$lang_xhtmlxtras_events_tab}</a></span></li> -->
+		</ul>
+	</div>
+
+	<div class="panel_wrapper">
+		<div id="general_panel" class="panel current">
+			<fieldset>
+				<legend>{$lang_xhtmlxtras_fieldset_general_tab}</legend>
+				<table border="0" cellpadding="0" cellspacing="4">
+					<tr>
+						<td class="label"><label id="datetimelabel" for="datetime">{$lang_xhtmlxtras_attribute_label_datetime}</label>:</td>
+						<td>
+							<table border="0" cellspacing="0" cellpadding="0">
+								<tr> 
+									<td><input id="datetime" name="datetime" type="text" value="" maxlength="19" class="field" /></td> 
+									<td><a href="javascript:insertDateTime('datetime');" class="mceButtonNormal"><img src="images/date_time.gif" class="picker" alt="{$lang_xhtmlxtras_insert_date}" title="{$lang_xhtmlxtras_insert_date}" /></a></td>
+								</tr>
+							</table>
+						</td>
+					</tr>
+					<tr>
+						<td class="label"><label id="citelabel" for="cite">{$lang_xhtmlxtras_attribute_label_cite}</label>:</td>
+						<td><input id="cite" name="cite" type="text" value="" class="field" /></td> 
+					</tr>
+				</table>
+			</fieldset>
+			<fieldset>
+				<legend>{$lang_xhtmlxtras_fieldset_attrib_tab}</legend>
+				<table border="0" cellpadding="0" cellspacing="4">
+					<tr>
+						<td class="label"><label id="titlelabel" for="title">{$lang_xhtmlxtras_attribute_label_title}</label>:</td> 
+						<td><input id="title" name="title" type="text" value="" class="field" /></td> 
+					</tr>
+					<tr>
+						<td class="label"><label id="idlabel" for="id">{$lang_xhtmlxtras_attribute_label_id}</label>:</td> 
+						<td><input id="id" name="id" type="text" value="" class="field" /></td> 
+					</tr>
+					<tr>
+						<td class="label"><label id="classlabel" for="class">{$lang_xhtmlxtras_attribute_label_class}</label>:</td> 
+						<td>
+							<select id="class" name="class" class="field mceEditableSelect">
+								<option value="">{$lang_xhtmlxtras_not_set}</option> 
+							</select>
+						</td>
+					</tr>
+					<tr>
+						<td class="label"><label id="stylelabel" for="class">{$lang_xhtmlxtras_attribute_label_style}</label>:</td> 
+						<td><input id="style" name="style" type="text" value="" class="field" /></td> 
+					</tr>
+					<tr>
+						<td class="label"><label id="dirlabel" for="dir">{$lang_xhtmlxtras_attribute_label_langdir}</label>:</td> 
+						<td>
+							<select id="dir" name="dir" class="field"> 
+								<option value="">{$lang_xhtmlxtras_not_set}</option> 
+								<option value="ltr">{$lang_xhtmlxtras_attribute_option_ltr}</option> 
+								<option value="rtl">{$lang_xhtmlxtras_attribute_option_rtl}</option> 
+							</select>
+						</td> 
+					</tr>
+					<tr>
+						<td class="label"><label id="langlabel" for="lang">{$lang_xhtmlxtras_attribute_label_langcode}</label>:</td> 
+						<td>
+							<input id="lang" name="lang" type="text" value="" class="field" />
+						</td> 
+					</tr>
+				</table>
+			</fieldset>
+		</div>
+		<div id="events_panel" class="panel">
+			<fieldset>
+				<legend>{$lang_xhtmlxtras_fieldset_events_tab}</legend>
+
+				<table border="0" cellpadding="0" cellspacing="4">
+					<tr>
+						<td class="label"><label for="onfocus">onfocus</label>:</td> 
+						<td><input id="onfocus" name="onfocus" type="text" value="" class="field" /></td> 
+					</tr>
+
+					<tr>
+						<td class="label"><label for="onblur">onblur</label>:</td> 
+						<td><input id="onblur" name="onblur" type="text" value="" class="field" /></td> 
+					</tr>
+
+					<tr>
+						<td class="label"><label for="onclick">onclick</label>:</td> 
+						<td><input id="onclick" name="onclick" type="text" value="" class="field" /></td> 
+					</tr>
+
+					<tr>
+						<td class="label"><label for="ondblclick">ondblclick</label>:</td> 
+						<td><input id="ondblclick" name="ondblclick" type="text" value="" class="field" /></td> 
+					</tr>
+
+					<tr>
+						<td class="label"><label for="onmousedown">onmousedown</label>:</td> 
+						<td><input id="onmousedown" name="onmousedown" type="text" value="" class="field" /></td> 
+					</tr>
+
+					<tr>
+						<td class="label"><label for="onmouseup">onmouseup</label>:</td> 
+						<td><input id="onmouseup" name="onmouseup" type="text" value="" class="field" /></td> 
+					</tr>
+
+					<tr>
+						<td class="label"><label for="onmouseover">onmouseover</label>:</td> 
+						<td><input id="onmouseover" name="onmouseover" type="text" value="" class="field" /></td> 
+					</tr>
+
+					<tr>
+						<td class="label"><label for="onmousemove">onmousemove</label>:</td> 
+						<td><input id="onmousemove" name="onmousemove" type="text" value="" class="field" /></td> 
+					</tr>
+
+					<tr>
+						<td class="label"><label for="onmouseout">onmouseout</label>:</td> 
+						<td><input id="onmouseout" name="onmouseout" type="text" value="" class="field" /></td> 
+					</tr>
+
+					<tr>
+						<td class="label"><label for="onkeypress">onkeypress</label>:</td> 
+						<td><input id="onkeypress" name="onkeypress" type="text" value="" class="field" /></td> 
+					</tr>
+
+					<tr>
+						<td class="label"><label for="onkeydown">onkeydown</label>:</td> 
+						<td><input id="onkeydown" name="onkeydown" type="text" value="" class="field" /></td> 
+					</tr>
+
+					<tr>
+						<td class="label"><label for="onkeyup">onkeyup</label>:</td> 
+						<td><input id="onkeyup" name="onkeyup" type="text" value="" class="field" /></td> 
+					</tr>
+				</table>
+			</fieldset>
+		</div>
+	</div>
+	<div class="mceActionPanel">
+		<div style="float: left">
+			<input type="button" id="insert" name="insert" value="{$lang_update}" onclick="insertDel();" />
+		</div>
+		<div style="float: left">
+			<input type="button" id="remove" name="remove" value="{$lang_xhtmlxtras_remove}" onclick="removeDel();" style="display: none;" />
+		</div>
+		<div style="float: right">
+			<input type="button" id="cancel" name="cancel" value="{$lang_cancel}" onclick="tinyMCEPopup.close();" />
+		</div>
+	</div>
+
+</form>
+
+</body>
+</html>

Added: labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/plugins/xhtmlxtras/editor_plugin.js
===================================================================
--- labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/plugins/xhtmlxtras/editor_plugin.js	2007-01-11 22:09:16 UTC (rev 8831)
+++ labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/plugins/xhtmlxtras/editor_plugin.js	2007-01-11 22:10:56 UTC (rev 8832)
@@ -0,0 +1 @@
+tinyMCE.importPluginLanguagePack('xhtmlxtras');var TinyMCE_XHTMLXtrasPlugin={getInfo:function(){return{longname:'XHTML Xtras Plugin',author:'Moxiecode Systems AB',authorurl:'http://tinymce.moxiecode.com',infourl:'http://tinymce.moxiecode.com/tinymce/docs/plugin_xhtmlxtras.html',version:tinyMCE.majorVersion+"."+tinyMCE.minorVersion}},initInstance:function(inst){tinyMCE.importCSS(inst.getDoc(),tinyMCE.baseURL+"/plugins/xhtmlxtras/css/xhtmlxtras.css")},getControlHTML:function(cn){switch(cn){case"cite":return tinyMCE.getButtonHTML(cn,'lang_xhtmlxtras_cite_desc','{$pluginurl}/images/cite.gif','mceCite',true);case"acronym":return tinyMCE.getButtonHTML(cn,'lang_xhtmlxtras_acronym_desc','{$pluginurl}/images/acronym.gif','mceAcronym',true);case"abbr":return tinyMCE.getButtonHTML(cn,'lang_xhtmlxtras_abbr_desc','{$pluginurl}/images/abbr.gif','mceAbbr',true);case"del":return tinyMCE.getButtonHTML(cn,'lang_xhtmlxtras_del_desc','{$pluginurl}/images/del.gif','mceDel',true);case"ins":retur!
 n tinyMCE.getButtonHTML(cn,'lang_xhtmlxtras_ins_desc','{$pluginurl}/images/ins.gif','mceIns',true)}return""},execCommand:function(editor_id,element,command,user_interface,value){var template;switch(command){case"mceCite":if(!this._anySel(editor_id))return true;template=new Array();template['file']='../../plugins/xhtmlxtras/cite.htm';template['width']=350;template['height']=250;tinyMCE.openWindow(template,{editor_id:editor_id});return true;case"mceAcronym":if(!this._anySel(editor_id))return true;template=new Array();template['file']='../../plugins/xhtmlxtras/acronym.htm';template['width']=350;template['height']=250;tinyMCE.openWindow(template,{editor_id:editor_id});return true;case"mceAbbr":if(!this._anySel(editor_id))return true;template=new Array();template['file']='../../plugins/xhtmlxtras/abbr.htm';template['width']=350;template['height']=250;tinyMCE.openWindow(template,{editor_id:editor_id});return true;case"mceIns":if(!this._anySel(editor_id))return true;template=new A!
 rray();template['file']='../../plugins/xhtmlxtras/ins.htm';template['w
idth']=350;template['height']=310;tinyMCE.openWindow(template,{editor_id:editor_id});return true;case"mceDel":if(!this._anySel(editor_id))return true;template=new Array();template['file']='../../plugins/xhtmlxtras/del.htm';template['width']=350;template['height']=310;tinyMCE.openWindow(template,{editor_id:editor_id});return true}return false},cleanup:function(type,content,inst){if(type=='insert_to_editor'&&tinyMCE.isIE&&!tinyMCE.isOpera){content=content.replace(/<abbr([^>]+)>/gi,'<html:ABBR $1>');content=content.replace(/<\/abbr>/gi,'</html:ABBR>')}return content},handleNodeChange:function(editor_id,node,undo_index,undo_levels,visual_aid,any_selection){if(node==null)return;if(!any_selection){tinyMCE.switchClass(editor_id+'_cite','mceButtonDisabled');tinyMCE.switchClass(editor_id+'_acronym','mceButtonDisabled');tinyMCE.switchClass(editor_id+'_abbr','mceButtonDisabled');tinyMCE.switchClass(editor_id+'_del','mceButtonDisabled');tinyMCE.switchClass(editor_id+'_ins','mceButtonDis!
 abled')}else{tinyMCE.switchClass(editor_id+'_cite','mceButtonNormal');tinyMCE.switchClass(editor_id+'_acronym','mceButtonNormal');tinyMCE.switchClass(editor_id+'_abbr','mceButtonNormal');tinyMCE.switchClass(editor_id+'_del','mceButtonNormal');tinyMCE.switchClass(editor_id+'_ins','mceButtonNormal')}switch(node.nodeName){case"CITE":tinyMCE.switchClass(editor_id+'_cite','mceButtonSelected');return true;case"ACRONYM":tinyMCE.switchClass(editor_id+'_acronym','mceButtonSelected');return true;case"abbr":case"HTML:ABBR":case"ABBR":tinyMCE.switchClass(editor_id+'_abbr','mceButtonSelected');return true;case"DEL":tinyMCE.switchClass(editor_id+'_del','mceButtonSelected');return true;case"INS":tinyMCE.switchClass(editor_id+'_ins','mceButtonSelected');return true}return true},_anySel:function(editor_id){var inst=tinyMCE.getInstanceById(editor_id),t=inst.selection.getSelectedText(),pe;pe=tinyMCE.getParentElement(inst.getFocusElement(),'CITE,ACRONYM,ABBR,HTML:ABBR,DEL,INS');return pe||inst!
 .getFocusElement().nodeName=="IMG"||(t&&t.length>0)}};tinyMCE.addPlugi
n("xhtmlxtras",TinyMCE_XHTMLXtrasPlugin);
\ No newline at end of file

Added: labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/plugins/xhtmlxtras/editor_plugin_src.js
===================================================================
--- labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/plugins/xhtmlxtras/editor_plugin_src.js	2007-01-11 22:09:16 UTC (rev 8831)
+++ labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/plugins/xhtmlxtras/editor_plugin_src.js	2007-01-11 22:10:56 UTC (rev 8832)
@@ -0,0 +1,175 @@
+ /**
+ * $Id: editor_plugin_src.js 42 2006-08-08 14:32:24Z spocke $
+ *
+ * @author Moxiecode - based on work by Andrew Tetlaw
+ * @copyright Copyright © 2004-2006, Moxiecode Systems AB, All rights reserved.
+ */
+
+/* Import plugin specific language pack */
+tinyMCE.importPluginLanguagePack('xhtmlxtras');
+
+var TinyMCE_XHTMLXtrasPlugin = {
+	getInfo : function() {
+		return {
+			longname : 'XHTML Xtras Plugin',
+			author : 'Moxiecode Systems AB',
+			authorurl : 'http://tinymce.moxiecode.com',
+			infourl : 'http://tinymce.moxiecode.com/tinymce/docs/plugin_xhtmlxtras.html',
+			version : tinyMCE.majorVersion + "." + tinyMCE.minorVersion
+		};
+	},
+
+	initInstance : function(inst) {
+		tinyMCE.importCSS(inst.getDoc(), tinyMCE.baseURL + "/plugins/xhtmlxtras/css/xhtmlxtras.css");
+	},
+
+	getControlHTML : function(cn) {
+		switch (cn) {
+			case "cite":
+				return tinyMCE.getButtonHTML(cn, 'lang_xhtmlxtras_cite_desc', '{$pluginurl}/images/cite.gif', 'mceCite', true);
+
+			case "acronym":
+				return tinyMCE.getButtonHTML(cn, 'lang_xhtmlxtras_acronym_desc', '{$pluginurl}/images/acronym.gif', 'mceAcronym', true);
+
+			case "abbr":
+				return tinyMCE.getButtonHTML(cn, 'lang_xhtmlxtras_abbr_desc', '{$pluginurl}/images/abbr.gif', 'mceAbbr', true);
+
+			case "del":
+				return tinyMCE.getButtonHTML(cn, 'lang_xhtmlxtras_del_desc', '{$pluginurl}/images/del.gif', 'mceDel', true);
+
+			case "ins":
+				return tinyMCE.getButtonHTML(cn, 'lang_xhtmlxtras_ins_desc', '{$pluginurl}/images/ins.gif', 'mceIns', true);
+		}
+
+		return "";
+	},
+
+	execCommand : function(editor_id, element, command, user_interface, value) {
+		var template;
+
+		switch (command) {
+			case "mceCite":
+				if (!this._anySel(editor_id))
+					return true;
+
+				template = new Array();
+				template['file'] = '../../plugins/xhtmlxtras/cite.htm';
+				template['width'] = 350;
+				template['height'] = 250;
+				tinyMCE.openWindow(template, {editor_id : editor_id});
+				return true;
+
+			case "mceAcronym":
+				if (!this._anySel(editor_id))
+					return true;
+
+				template = new Array();
+				template['file'] = '../../plugins/xhtmlxtras/acronym.htm';
+				template['width'] = 350;
+				template['height'] = 250;
+				tinyMCE.openWindow(template, {editor_id : editor_id});
+				return true;
+
+			case "mceAbbr":
+				if (!this._anySel(editor_id))
+					return true;
+
+				template = new Array();
+				template['file'] = '../../plugins/xhtmlxtras/abbr.htm';
+				template['width'] = 350;
+				template['height'] = 250;
+				tinyMCE.openWindow(template, {editor_id : editor_id});
+				return true;
+
+			case "mceIns":
+				if (!this._anySel(editor_id))
+					return true;
+
+				template = new Array();
+				template['file'] = '../../plugins/xhtmlxtras/ins.htm';
+				template['width'] = 350;
+				template['height'] = 310;
+				tinyMCE.openWindow(template, {editor_id : editor_id});
+				return true;
+
+			case "mceDel":
+				if (!this._anySel(editor_id))
+					return true;
+
+				template = new Array();
+				template['file'] = '../../plugins/xhtmlxtras/del.htm';
+				template['width'] = 350;
+				template['height'] = 310;
+				tinyMCE.openWindow(template, {editor_id : editor_id});
+				return true;
+		}
+
+		return false;
+	},
+
+	cleanup : function(type, content, inst) {
+		if (type == 'insert_to_editor' && tinyMCE.isIE && !tinyMCE.isOpera) {
+			content = content.replace(/<abbr([^>]+)>/gi, '<html:ABBR $1>');
+			content = content.replace(/<\/abbr>/gi, '</html:ABBR>');
+		}
+
+		return content;
+	},
+
+	handleNodeChange : function(editor_id, node, undo_index,undo_levels, visual_aid, any_selection) {
+		if (node == null)
+			return;
+
+		if (!any_selection) {
+			// Disable the buttons
+			tinyMCE.switchClass(editor_id + '_cite', 'mceButtonDisabled');
+			tinyMCE.switchClass(editor_id + '_acronym', 'mceButtonDisabled');
+			tinyMCE.switchClass(editor_id + '_abbr', 'mceButtonDisabled');
+			tinyMCE.switchClass(editor_id + '_del', 'mceButtonDisabled');
+			tinyMCE.switchClass(editor_id + '_ins', 'mceButtonDisabled');
+		} else {
+			// A selection means the buttons should be active.
+			tinyMCE.switchClass(editor_id + '_cite', 'mceButtonNormal');
+			tinyMCE.switchClass(editor_id + '_acronym', 'mceButtonNormal');
+			tinyMCE.switchClass(editor_id + '_abbr', 'mceButtonNormal');
+			tinyMCE.switchClass(editor_id + '_del', 'mceButtonNormal');
+			tinyMCE.switchClass(editor_id + '_ins', 'mceButtonNormal');
+		}
+
+		switch (node.nodeName) {
+			case "CITE":
+				tinyMCE.switchClass(editor_id + '_cite', 'mceButtonSelected');
+				return true;
+
+			case "ACRONYM":
+				tinyMCE.switchClass(editor_id + '_acronym', 'mceButtonSelected');
+				return true;
+
+			case "abbr": // IE
+			case "HTML:ABBR": // FF
+			case "ABBR":
+				tinyMCE.switchClass(editor_id + '_abbr', 'mceButtonSelected');
+				return true;
+
+			case "DEL":
+				tinyMCE.switchClass(editor_id + '_del', 'mceButtonSelected');
+				return true;
+
+			case "INS":
+				tinyMCE.switchClass(editor_id + '_ins', 'mceButtonSelected');
+				return true;
+		}
+
+		return true;
+	},
+
+	_anySel : function(editor_id) {
+		var inst = tinyMCE.getInstanceById(editor_id), t = inst.selection.getSelectedText(), pe;
+
+		pe = tinyMCE.getParentElement(inst.getFocusElement(), 'CITE,ACRONYM,ABBR,HTML:ABBR,DEL,INS');
+
+		return pe || inst.getFocusElement().nodeName == "IMG" || (t && t.length > 0);
+	}
+};
+
+tinyMCE.addPlugin("xhtmlxtras", TinyMCE_XHTMLXtrasPlugin);

Added: labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/plugins/xhtmlxtras/images/abbr.gif
===================================================================
(Binary files differ)


Property changes on: labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/plugins/xhtmlxtras/images/abbr.gif
___________________________________________________________________
Name: svn:mime-type
   + application/octet-stream

Added: labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/plugins/xhtmlxtras/images/acronym.gif
===================================================================
(Binary files differ)


Property changes on: labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/plugins/xhtmlxtras/images/acronym.gif
___________________________________________________________________
Name: svn:mime-type
   + application/octet-stream

Added: labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/plugins/xhtmlxtras/images/cite.gif
===================================================================
(Binary files differ)


Property changes on: labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/plugins/xhtmlxtras/images/cite.gif
___________________________________________________________________
Name: svn:mime-type
   + application/octet-stream

Added: labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/plugins/xhtmlxtras/images/date_time.gif
===================================================================
(Binary files differ)


Property changes on: labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/plugins/xhtmlxtras/images/date_time.gif
___________________________________________________________________
Name: svn:mime-type
   + application/octet-stream

Added: labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/plugins/xhtmlxtras/images/del.gif
===================================================================
(Binary files differ)


Property changes on: labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/plugins/xhtmlxtras/images/del.gif
___________________________________________________________________
Name: svn:mime-type
   + application/octet-stream

Added: labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/plugins/xhtmlxtras/images/ins.gif
===================================================================
(Binary files differ)


Property changes on: labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/plugins/xhtmlxtras/images/ins.gif
___________________________________________________________________
Name: svn:mime-type
   + application/octet-stream

Added: labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/plugins/xhtmlxtras/images/remove_button_bg.gif
===================================================================
(Binary files differ)


Property changes on: labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/plugins/xhtmlxtras/images/remove_button_bg.gif
___________________________________________________________________
Name: svn:mime-type
   + application/octet-stream

Added: labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/plugins/xhtmlxtras/ins.htm
===================================================================
--- labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/plugins/xhtmlxtras/ins.htm	2007-01-11 22:09:16 UTC (rev 8831)
+++ labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/plugins/xhtmlxtras/ins.htm	2007-01-11 22:10:56 UTC (rev 8832)
@@ -0,0 +1,169 @@
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+	<title>{$lang_xhtmlxtras_title_ins_element}</title>
+	<script language="javascript" type="text/javascript" src="../../tiny_mce_popup.js"></script>
+	<script language="javascript" type="text/javascript" src="../../utils/mctabs.js"></script>
+	<script language="javascript" type="text/javascript" src="../../utils/form_utils.js"></script>
+	<script language="javascript" type="text/javascript" src="../../utils/editable_selects.js"></script>
+	<script language="javascript" type="text/javascript" src="jscripts/element_common.js"></script>
+	<script language="javascript" type="text/javascript" src="jscripts/ins.js"></script>
+	<link rel="stylesheet" type="text/css" href="css/popup.css" />
+	<base target="_self" />
+</head>
+<body id="xhtmlxtrasins" onload="tinyMCEPopup.executeOnLoad('init();');" style="display: none">
+<form onsubmit="insertIns();return false;" action="#">
+	<div class="tabs">
+		<ul>
+			<li id="general_tab" class="current"><span><a href="javascript:mcTabs.displayTab('general_tab','general_panel');" onmousedown="return false;">{$lang_xhtmlxtras_general_tab}</a></span></li>
+			<!-- <li id="events_tab"><span><a href="javascript:mcTabs.displayTab('events_tab','events_panel');" onmousedown="return false;">{$lang_xhtmlxtras_events_tab}</a></span></li> -->
+		</ul>
+	</div>
+
+	<div class="panel_wrapper">
+		<div id="general_panel" class="panel current">
+			<fieldset>
+				<legend>{$lang_xhtmlxtras_fieldset_general_tab}</legend>
+				<table border="0" cellpadding="0" cellspacing="4">
+					<tr>
+						<td class="label"><label id="datetimelabel" for="datetime">{$lang_xhtmlxtras_attribute_label_datetime}</label>:</td> 
+						<td>
+							<table border="0" cellspacing="0" cellpadding="0">
+								<tr> 
+									<td><input id="datetime" name="datetime" type="text" value="" maxlength="19" class="field" /></td> 
+									<td><a href="javascript:insertDateTime('datetime');" class="mceButtonNormal"><img src="images/date_time.gif" class="picker" alt="{$lang_xhtmlxtras_insert_date}" title="{$lang_xhtmlxtras_insert_date}" /></a></td>
+								</tr>
+							</table>
+						</td>
+					</tr>
+					<tr>
+						<td class="label"><label id="citelabel" for="cite">{$lang_xhtmlxtras_attribute_label_cite}</label>:</td> 
+						<td><input id="cite" name="cite" type="text" value="" class="field" /></td> 
+					</tr>
+				</table>
+			</fieldset>
+			<fieldset>
+				<legend>{$lang_xhtmlxtras_fieldset_attrib_tab}</legend>
+				<table border="0" cellpadding="0" cellspacing="4">
+					<tr>
+						<td class="label"><label id="titlelabel" for="title">{$lang_xhtmlxtras_attribute_label_title}</label>:</td> 
+						<td><input id="title" name="title" type="text" value="" class="field" /></td> 
+					</tr>
+					<tr>
+						<td class="label"><label id="idlabel" for="id">{$lang_xhtmlxtras_attribute_label_id}</label>:</td> 
+						<td><input id="id" name="id" type="text" value="" class="field" /></td> 
+					</tr>
+					<tr>
+						<td class="label"><label id="classlabel" for="class">{$lang_xhtmlxtras_attribute_label_class}</label>:</td> 
+						<td>
+							<select id="class" name="class" class="field mceEditableSelect">
+								<option value="">{$lang_xhtmlxtras_not_set}</option> 
+							</select>
+						</td>
+					</tr>
+					<tr>
+						<td class="label"><label id="stylelabel" for="class">{$lang_xhtmlxtras_attribute_label_style}</label>:</td> 
+						<td><input id="style" name="style" type="text" value="" class="field" /></td> 
+					</tr>
+					<tr>
+						<td class="label"><label id="dirlabel" for="dir">{$lang_xhtmlxtras_attribute_label_langdir}</label>:</td> 
+						<td>
+							<select id="dir" name="dir" class="field"> 
+								<option value="">{$lang_xhtmlxtras_not_set}</option> 
+								<option value="ltr">{$lang_xhtmlxtras_attribute_option_ltr}</option> 
+								<option value="rtl">{$lang_xhtmlxtras_attribute_option_rtl}</option> 
+							</select>
+						</td> 
+					</tr>
+					<tr>
+						<td class="label"><label id="langlabel" for="lang">{$lang_xhtmlxtras_attribute_label_langcode}</label>:</td> 
+						<td>
+							<input id="lang" name="lang" type="text" value="" class="field" />
+						</td> 
+					</tr>
+				</table>
+			</fieldset>
+		</div>
+		<div id="events_panel" class="panel">
+			<fieldset>
+				<legend>{$lang_xhtmlxtras_fieldset_events_tab}</legend>
+
+				<table border="0" cellpadding="0" cellspacing="4">
+					<tr>
+						<td class="label"><label for="onfocus">onfocus</label>:</td> 
+						<td><input id="onfocus" name="onfocus" type="text" value="" class="field" /></td> 
+					</tr>
+
+					<tr>
+						<td class="label"><label for="onblur">onblur</label>:</td> 
+						<td><input id="onblur" name="onblur" type="text" value="" class="field" /></td> 
+					</tr>
+
+					<tr>
+						<td class="label"><label for="onclick">onclick</label>:</td> 
+						<td><input id="onclick" name="onclick" type="text" value="" class="field" /></td> 
+					</tr>
+
+					<tr>
+						<td class="label"><label for="ondblclick">ondblclick</label>:</td> 
+						<td><input id="ondblclick" name="ondblclick" type="text" value="" class="field" /></td> 
+					</tr>
+
+					<tr>
+						<td class="label"><label for="onmousedown">onmousedown</label>:</td> 
+						<td><input id="onmousedown" name="onmousedown" type="text" value="" class="field" /></td> 
+					</tr>
+
+					<tr>
+						<td class="label"><label for="onmouseup">onmouseup</label>:</td> 
+						<td><input id="onmouseup" name="onmouseup" type="text" value="" class="field" /></td> 
+					</tr>
+
+					<tr>
+						<td class="label"><label for="onmouseover">onmouseover</label>:</td> 
+						<td><input id="onmouseover" name="onmouseover" type="text" value="" class="field" /></td> 
+					</tr>
+
+					<tr>
+						<td class="label"><label for="onmousemove">onmousemove</label>:</td> 
+						<td><input id="onmousemove" name="onmousemove" type="text" value="" class="field" /></td> 
+					</tr>
+
+					<tr>
+						<td class="label"><label for="onmouseout">onmouseout</label>:</td> 
+						<td><input id="onmouseout" name="onmouseout" type="text" value="" class="field" /></td> 
+					</tr>
+
+					<tr>
+						<td class="label"><label for="onkeypress">onkeypress</label>:</td> 
+						<td><input id="onkeypress" name="onkeypress" type="text" value="" class="field" /></td> 
+					</tr>
+
+					<tr>
+						<td class="label"><label for="onkeydown">onkeydown</label>:</td> 
+						<td><input id="onkeydown" name="onkeydown" type="text" value="" class="field" /></td> 
+					</tr>
+
+					<tr>
+						<td class="label"><label for="onkeyup">onkeyup</label>:</td> 
+						<td><input id="onkeyup" name="onkeyup" type="text" value="" class="field" /></td> 
+					</tr>
+				</table>
+			</fieldset>
+		</div>
+	</div>
+	<div class="mceActionPanel">
+		<div style="float: left">
+			<input type="button" id="insert" name="insert" value="{$lang_update}" onclick="insertIns();" />
+		</div>
+		<div style="float: left">
+			<input type="button" id="remove" name="remove" value="{$lang_xhtmlxtras_remove}" onclick="removeIns();" style="display: none;" />
+		</div>
+		<div style="float: right">
+			<input type="button" id="cancel" name="cancel" value="{$lang_cancel}" onclick="tinyMCEPopup.close();" />
+		</div>
+	</div>
+
+</form>
+
+</body>
+</html>

Added: labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/plugins/xhtmlxtras/jscripts/abbr.js
===================================================================
--- labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/plugins/xhtmlxtras/jscripts/abbr.js	2007-01-11 22:09:16 UTC (rev 8831)
+++ labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/plugins/xhtmlxtras/jscripts/abbr.js	2007-01-11 22:10:56 UTC (rev 8832)
@@ -0,0 +1,29 @@
+ /**
+ * $Id: editor_plugin_src.js 42 2006-08-08 14:32:24Z spocke $
+ *
+ * @author Moxiecode - based on work by Andrew Tetlaw
+ * @copyright Copyright © 2004-2006, Moxiecode Systems AB, All rights reserved.
+ */
+
+function preinit() {
+	// Initialize
+	tinyMCE.setWindowArg('mce_windowresize', false);
+}
+
+function init() {
+	tinyMCEPopup.resizeToInnerSize();
+	SXE.initElementDialog('abbr');
+	if (SXE.currentAction == "update") {
+		SXE.showRemoveButton();
+	}
+}
+
+function insertAbbr() {
+	SXE.insertElement(tinyMCE.isIE && !tinyMCE.isOpera ? 'html:ABBR' : 'abbr');
+	tinyMCEPopup.close();
+}
+
+function removeAbbr() {
+	SXE.removeElement('abbr');
+	tinyMCEPopup.close();
+}
\ No newline at end of file

Added: labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/plugins/xhtmlxtras/jscripts/acronym.js
===================================================================
--- labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/plugins/xhtmlxtras/jscripts/acronym.js	2007-01-11 22:09:16 UTC (rev 8831)
+++ labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/plugins/xhtmlxtras/jscripts/acronym.js	2007-01-11 22:10:56 UTC (rev 8832)
@@ -0,0 +1,29 @@
+ /**
+ * $Id: editor_plugin_src.js 42 2006-08-08 14:32:24Z spocke $
+ *
+ * @author Moxiecode - based on work by Andrew Tetlaw
+ * @copyright Copyright © 2004-2006, Moxiecode Systems AB, All rights reserved.
+ */
+
+function preinit() {
+	// Initialize
+	tinyMCE.setWindowArg('mce_windowresize', false);
+}
+
+function init() {
+	tinyMCEPopup.resizeToInnerSize();
+	SXE.initElementDialog('acronym');
+	if (SXE.currentAction == "update") {
+		SXE.showRemoveButton();
+	}
+}
+
+function insertAcronym() {
+	SXE.insertElement('acronym');
+	tinyMCEPopup.close();
+}
+
+function removeAcronym() {
+	SXE.removeElement('acronym');
+	tinyMCEPopup.close();
+}
\ No newline at end of file

Added: labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/plugins/xhtmlxtras/jscripts/cite.js
===================================================================
--- labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/plugins/xhtmlxtras/jscripts/cite.js	2007-01-11 22:09:16 UTC (rev 8831)
+++ labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/plugins/xhtmlxtras/jscripts/cite.js	2007-01-11 22:10:56 UTC (rev 8832)
@@ -0,0 +1,29 @@
+ /**
+ * $Id: editor_plugin_src.js 42 2006-08-08 14:32:24Z spocke $
+ *
+ * @author Moxiecode - based on work by Andrew Tetlaw
+ * @copyright Copyright © 2004-2006, Moxiecode Systems AB, All rights reserved.
+ */
+
+function preinit() {
+	// Initialize
+	tinyMCE.setWindowArg('mce_windowresize', false);
+}
+
+function init() {
+	tinyMCEPopup.resizeToInnerSize();
+	SXE.initElementDialog('cite');
+	if (SXE.currentAction == "update") {
+		SXE.showRemoveButton();
+	}
+}
+
+function insertCite() {
+	SXE.insertElement('cite');
+	tinyMCEPopup.close();
+}
+
+function removeCite() {
+	SXE.removeElement('cite');
+	tinyMCEPopup.close();
+}
\ No newline at end of file

Added: labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/plugins/xhtmlxtras/jscripts/del.js
===================================================================
--- labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/plugins/xhtmlxtras/jscripts/del.js	2007-01-11 22:09:16 UTC (rev 8831)
+++ labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/plugins/xhtmlxtras/jscripts/del.js	2007-01-11 22:10:56 UTC (rev 8832)
@@ -0,0 +1,54 @@
+ /**
+ * $Id: editor_plugin_src.js 42 2006-08-08 14:32:24Z spocke $
+ *
+ * @author Moxiecode - based on work by Andrew Tetlaw
+ * @copyright Copyright © 2004-2006, Moxiecode Systems AB, All rights reserved.
+ */
+
+function preinit() {
+	// Initialize
+	tinyMCE.setWindowArg('mce_windowresize', false);
+}
+
+function init() {
+	tinyMCEPopup.resizeToInnerSize();
+	SXE.initElementDialog('del');
+	if (SXE.currentAction == "update") {
+		setFormValue('datetime', tinyMCE.getAttrib(SXE.updateElement, 'datetime'));
+		setFormValue('cite', tinyMCE.getAttrib(SXE.updateElement, 'cite'));
+		SXE.showRemoveButton();
+	}
+}
+
+function setElementAttribs(elm) {
+	setAllCommonAttribs(elm);
+	setAttrib(elm, 'datetime');
+	setAttrib(elm, 'cite');
+}
+
+function insertDel() {
+	var elm = tinyMCE.getParentElement(SXE.focusElement, 'del');
+
+	tinyMCEPopup.execCommand('mceBeginUndoLevel');
+	if (elm == null) {
+		var s = SXE.inst.selection.getSelectedHTML();
+		if(s.length > 0) {
+			tinyMCEPopup.execCommand('mceInsertContent', false, '<del id="#sxe_temp_del#">' + s + '</del>');
+			var elementArray = tinyMCE.getElementsByAttributeValue(SXE.inst.getBody(), 'del', 'id', '#sxe_temp_del#');
+			for (var i=0; i<elementArray.length; i++) {
+				var elm = elementArray[i];
+				setElementAttribs(elm);
+			}
+		}
+	} else {
+		setElementAttribs(elm);
+	}
+	tinyMCE.triggerNodeChange();
+	tinyMCEPopup.execCommand('mceEndUndoLevel');
+	tinyMCEPopup.close();
+}
+
+function removeDel() {
+	SXE.removeElement('del');
+	tinyMCEPopup.close();
+}
\ No newline at end of file

Added: labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/plugins/xhtmlxtras/jscripts/element_common.js
===================================================================
--- labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/plugins/xhtmlxtras/jscripts/element_common.js	2007-01-11 22:09:16 UTC (rev 8831)
+++ labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/plugins/xhtmlxtras/jscripts/element_common.js	2007-01-11 22:10:56 UTC (rev 8832)
@@ -0,0 +1,241 @@
+ /**
+ * $Id: editor_plugin_src.js 42 2006-08-08 14:32:24Z spocke $
+ *
+ * @author Moxiecode - based on work by Andrew Tetlaw
+ * @copyright Copyright © 2004-2006, Moxiecode Systems AB, All rights reserved.
+ */
+
+function initCommonAttributes(elm) {
+	var formObj = document.forms[0];
+
+	// Setup form data for common element attributes
+	setFormValue('title', tinyMCE.getAttrib(elm, 'title'));
+	setFormValue('id', tinyMCE.getAttrib(elm, 'id'));
+	selectByValue(formObj, 'class', tinyMCE.getAttrib(elm, 'class'), true);
+	setFormValue('style', tinyMCE.getAttrib(elm, 'style'));
+	selectByValue(formObj, 'dir', tinyMCE.getAttrib(elm, 'dir'));
+	setFormValue('lang', tinyMCE.getAttrib(elm, 'lang'));
+	setFormValue('onfocus', tinyMCE.getAttrib(elm, 'onfocus'));
+	setFormValue('onblur', tinyMCE.getAttrib(elm, 'onblur'));
+	setFormValue('onclick', tinyMCE.getAttrib(elm, 'onclick'));
+	setFormValue('ondblclick', tinyMCE.getAttrib(elm, 'ondblclick'));
+	setFormValue('onmousedown', tinyMCE.getAttrib(elm, 'onmousedown'));
+	setFormValue('onmouseup', tinyMCE.getAttrib(elm, 'onmouseup'));
+	setFormValue('onmouseover', tinyMCE.getAttrib(elm, 'onmouseover'));
+	setFormValue('onmousemove', tinyMCE.getAttrib(elm, 'onmousemove'));
+	setFormValue('onmouseout', tinyMCE.getAttrib(elm, 'onmouseout'));
+	setFormValue('onkeypress', tinyMCE.getAttrib(elm, 'onkeypress'));
+	setFormValue('onkeydown', tinyMCE.getAttrib(elm, 'onkeydown'));
+	setFormValue('onkeyup', tinyMCE.getAttrib(elm, 'onkeyup'));
+}
+
+function setFormValue(name, value) {
+	if(document.forms[0].elements[name]) document.forms[0].elements[name].value = value;
+}
+
+function insertDateTime(id) {
+	document.getElementById(id).value = getDateTime(new Date(), "%Y-%m-%dT%H:%M:%S");
+}
+
+function getDateTime(d, fmt) {
+	fmt = fmt.replace("%D", "%m/%d/%y");
+	fmt = fmt.replace("%r", "%I:%M:%S %p");
+	fmt = fmt.replace("%Y", "" + d.getFullYear());
+	fmt = fmt.replace("%y", "" + d.getYear());
+	fmt = fmt.replace("%m", addZeros(d.getMonth()+1, 2));
+	fmt = fmt.replace("%d", addZeros(d.getDate(), 2));
+	fmt = fmt.replace("%H", "" + addZeros(d.getHours(), 2));
+	fmt = fmt.replace("%M", "" + addZeros(d.getMinutes(), 2));
+	fmt = fmt.replace("%S", "" + addZeros(d.getSeconds(), 2));
+	fmt = fmt.replace("%I", "" + ((d.getHours() + 11) % 12 + 1));
+	fmt = fmt.replace("%p", "" + (d.getHours() < 12 ? "AM" : "PM"));
+	fmt = fmt.replace("%%", "%");
+
+	return fmt;
+}
+
+function addZeros(value, len) {
+	var i;
+
+	value = "" + value;
+
+	if (value.length < len) {
+		for (i=0; i<(len-value.length); i++)
+			value = "0" + value;
+	}
+
+	return value;
+}
+
+function selectByValue(form_obj, field_name, value, add_custom, ignore_case) {
+	if (!form_obj || !form_obj.elements[field_name])
+		return;
+
+	var sel = form_obj.elements[field_name];
+
+	var found = false;
+	for (var i=0; i<sel.options.length; i++) {
+		var option = sel.options[i];
+
+		if (option.value == value || (ignore_case && option.value.toLowerCase() == value.toLowerCase())) {
+			option.selected = true;
+			found = true;
+		} else
+			option.selected = false;
+	}
+
+	if (!found && add_custom && value != '') {
+		var option = new Option('Value: ' + value, value);
+		option.selected = true;
+		sel.options[sel.options.length] = option;
+	}
+
+	return found;
+}
+
+function setAttrib(elm, attrib, value) {
+	var formObj = document.forms[0];
+	var valueElm = formObj.elements[attrib.toLowerCase()];
+
+	if (typeof(value) == "undefined" || value == null) {
+		value = "";
+
+		if (valueElm)
+			value = valueElm.value;
+	}
+
+	if (value != "") {
+		if (attrib == "style")
+			attrib = "style.cssText";
+
+		if (attrib.substring(0, 2) == 'on')
+			value = 'return true;' + value;
+
+		if (attrib == "class") {
+			tinyMCE.addCSSClass(elm, value);
+			return;
+		}
+
+		elm.setAttribute(attrib.toLowerCase(), value);
+	} else
+		elm.removeAttribute(attrib);
+}
+
+function setAllCommonAttribs(elm) {
+	setAttrib(elm, 'title');
+	setAttrib(elm, 'id');
+	setAttrib(elm, 'class');
+	setAttrib(elm, 'style');
+	setAttrib(elm, 'dir');
+	setAttrib(elm, 'lang');
+	/*setAttrib(elm, 'onfocus');
+	setAttrib(elm, 'onblur');
+	setAttrib(elm, 'onclick');
+	setAttrib(elm, 'ondblclick');
+	setAttrib(elm, 'onmousedown');
+	setAttrib(elm, 'onmouseup');
+	setAttrib(elm, 'onmouseover');
+	setAttrib(elm, 'onmousemove');
+	setAttrib(elm, 'onmouseout');
+	setAttrib(elm, 'onkeypress');
+	setAttrib(elm, 'onkeydown');
+	setAttrib(elm, 'onkeyup');*/
+}
+
+SXE = {
+	currentAction : "insert",
+	inst : tinyMCE.getInstanceById(tinyMCE.getWindowArg('editor_id')),
+	updateElement : null
+}
+
+SXE.focusElement = SXE.inst.getFocusElement();
+
+SXE.initElementDialog = function(element_name) {
+	addClassesToList('class', 'xhtmlxtras_styles');
+	TinyMCE_EditableSelects.init();
+
+	element_name = element_name.toLowerCase();
+	var elm = tinyMCE.getParentElement(SXE.focusElement, element_name);
+	if (elm != null && elm.nodeName == element_name.toUpperCase()) {
+		SXE.currentAction = "update";
+	}
+
+	if (SXE.currentAction == "update") {
+		initCommonAttributes(elm);
+		SXE.updateElement = elm;
+	}
+
+	document.forms[0].insert.value = tinyMCE.getLang('lang_' + SXE.currentAction, 'Insert', true); 
+}
+
+SXE.insertElement = function(element_name) {
+	var elm = tinyMCE.getParentElement(SXE.focusElement, element_name), h, tagName;
+
+	tinyMCEPopup.execCommand('mceBeginUndoLevel');
+	if (elm == null) {
+		var s = SXE.inst.selection.getSelectedHTML();
+		if(s.length > 0) {
+			tagName = element_name;
+
+			if (tinyMCE.isIE && !tinyMCE.isOpera && element_name.indexOf('html:') == 0)
+				element_name = element_name.substring(5).toLowerCase();
+
+			h = '<' + tagName + ' id="#sxe_temp_' + element_name + '#">' + s + '</' + tagName + '>';
+
+			tinyMCEPopup.execCommand('mceInsertContent', false, h);
+
+			var elementArray = tinyMCE.getElementsByAttributeValue(SXE.inst.getBody(), element_name, 'id', '#sxe_temp_' + element_name + '#');
+			for (var i=0; i<elementArray.length; i++) {
+				var elm = elementArray[i];
+
+				elm.id = '';
+				elm.setAttribute('id', '');
+				elm.removeAttribute('id');
+
+				setAllCommonAttribs(elm);
+			}
+		}
+	} else {
+		setAllCommonAttribs(elm);
+	}
+	tinyMCE.triggerNodeChange();
+	tinyMCEPopup.execCommand('mceEndUndoLevel');
+}
+
+SXE.removeElement = function(element_name){
+	element_name = element_name.toLowerCase();
+	elm = tinyMCE.getParentElement(SXE.focusElement, element_name);
+	if(elm && elm.nodeName == element_name.toUpperCase()){
+		tinyMCEPopup.execCommand('mceBeginUndoLevel');
+		tinyMCE.execCommand('mceRemoveNode', false, elm);
+		tinyMCE.triggerNodeChange();
+		tinyMCEPopup.execCommand('mceEndUndoLevel');
+	}
+}
+
+SXE.showRemoveButton = function() {
+		document.getElementById("remove").style.display = 'block';
+}
+
+SXE.containsClass = function(elm,cl) {
+	return (elm.className.indexOf(cl) > -1) ? true : false;
+}
+
+SXE.removeClass = function(elm,cl) {
+	if(elm.className == null || elm.className == "" || !SXE.containsClass(elm,cl)) {
+		return true;
+	}
+	var classNames = elm.className.split(" ");
+	var newClassNames = "";
+	for (var x = 0, cnl = classNames.length; x < cnl; x++) {
+		if (classNames[x] != cl) {
+			newClassNames += (classNames[x] + " ");
+		}
+	}
+	elm.className = newClassNames.substring(0,newClassNames.length-1); //removes extra space at the end
+}
+
+SXE.addClass = function(elm,cl) {
+	if(!SXE.containsClass(elm,cl)) elm.className ? elm.className += " " + cl : elm.className = cl;
+	return true;
+}
\ No newline at end of file

Added: labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/plugins/xhtmlxtras/jscripts/ins.js
===================================================================
--- labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/plugins/xhtmlxtras/jscripts/ins.js	2007-01-11 22:09:16 UTC (rev 8831)
+++ labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/plugins/xhtmlxtras/jscripts/ins.js	2007-01-11 22:10:56 UTC (rev 8832)
@@ -0,0 +1,53 @@
+ /**
+ * $Id: editor_plugin_src.js 42 2006-08-08 14:32:24Z spocke $
+ *
+ * @author Moxiecode - based on work by Andrew Tetlaw
+ * @copyright Copyright © 2004-2006, Moxiecode Systems AB, All rights reserved.
+ */
+
+function preinit() {
+	// Initialize
+	tinyMCE.setWindowArg('mce_windowresize', false);
+}
+
+function init() {
+	tinyMCEPopup.resizeToInnerSize();
+	SXE.initElementDialog('ins');
+	if (SXE.currentAction == "update") {
+		setFormValue('datetime', tinyMCE.getAttrib(SXE.updateElement, 'datetime'));
+		setFormValue('cite', tinyMCE.getAttrib(SXE.updateElement, 'cite'));
+		SXE.showRemoveButton();
+	}
+}
+
+function setElementAttribs(elm) {
+	setAllCommonAttribs(elm);
+	setAttrib(elm, 'datetime');
+	setAttrib(elm, 'cite');
+}
+
+function insertIns() {
+	var elm = tinyMCE.getParentElement(SXE.focusElement, 'ins');
+	tinyMCEPopup.execCommand('mceBeginUndoLevel');
+	if (elm == null) {
+		var s = SXE.inst.selection.getSelectedHTML();
+		if(s.length > 0) {
+			tinyMCEPopup.execCommand('mceInsertContent', false, '<ins id="#sxe_temp_ins#">' + s + '</ins>');
+			var elementArray = tinyMCE.getElementsByAttributeValue(SXE.inst.getBody(), 'ins', 'id', '#sxe_temp_ins#');
+			for (var i=0; i<elementArray.length; i++) {
+				var elm = elementArray[i];
+				setElementAttribs(elm);
+			}
+		}
+	} else {
+		setElementAttribs(elm);
+	}
+	tinyMCE.triggerNodeChange();
+	tinyMCEPopup.execCommand('mceEndUndoLevel');
+	tinyMCEPopup.close();
+}
+
+function removeIns() {
+	SXE.removeElement('ins');
+	tinyMCEPopup.close();
+}
\ No newline at end of file

Added: labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/plugins/xhtmlxtras/langs/en.js
===================================================================
--- labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/plugins/xhtmlxtras/langs/en.js	2007-01-11 22:09:16 UTC (rev 8831)
+++ labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/plugins/xhtmlxtras/langs/en.js	2007-01-11 22:10:56 UTC (rev 8832)
@@ -0,0 +1,33 @@
+// UK lang variables
+
+tinyMCE.addToLang('xhtmlxtras',{
+cite_desc : 'Citation',
+abbr_desc : 'Abbreviation',
+acronym_desc : 'Acronym',
+del_desc : 'Deletion',
+ins_desc : 'Insertion',
+attribute_label_title : 'Title',
+attribute_label_id : 'ID',
+attribute_label_class : 'Class',
+attribute_label_style : 'Style',
+attribute_label_cite : 'Cite',
+attribute_label_datetime : 'Date/Time',
+attribute_label_langdir : 'Text Direction',
+attribute_option_ltr : 'Left to right',
+attribute_option_rtl : 'Right to left',
+attribute_label_langcode : 'Language',
+general_tab : 'General',
+attrib_tab : 'Attributes',
+events_tab : 'Events',
+fieldset_general_tab : 'General Settings',
+fieldset_attrib_tab : 'Element Attributes',
+fieldset_events_tab : 'Element Events',
+title_ins_element : 'Insertion Element',
+title_del_element : 'Deletion Element',
+title_acronym_element : 'Acronym Element',
+title_abbr_element : 'Abbreviation Element',
+title_cite_element : 'Citation Element',
+remove : 'Remove',
+not_set : '--not set--',
+insert_date : 'Insert current date/time'
+});

Modified: labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/plugins/zoom/editor_plugin.js
===================================================================
--- labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/plugins/zoom/editor_plugin.js	2007-01-11 22:09:16 UTC (rev 8831)
+++ labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/plugins/zoom/editor_plugin.js	2007-01-11 22:10:56 UTC (rev 8832)
@@ -1,38 +1 @@
-/* Import theme specific language pack */
-tinyMCE.importPluginLanguagePack('zoom', 'uk,se');
-
-/**
- * Returns the HTML contents of the zoom control.
- */
-function TinyMCE_zoom_getControlHTML(control_name) {
-	if (!tinyMCE.isMSIE)
-		return "";
-
-	switch (control_name) {
-		case "zoom":
-			return '<select id="{$editor_id}_formatSelect" name="{$editor_id}_zoomSelect" onchange="tinyMCE.execInstanceCommand(\'{$editor_id}\',\'mceZoom\',false,this.options[this.selectedIndex].value);" class="mceSelectList">\
-					<option value="100%">{$lang_zoom_prefix} 100%</option>\
-					<option value="150%">{$lang_zoom_prefix} 150%</option>\
-					<option value="200%">{$lang_zoom_prefix} 200%</option>\
-					<option value="250%">{$lang_zoom_prefix} 250%</option>\
-					</select>';
-	}
-
-	return "";
-}
-
-/**
- * Executes the mceZoom command.
- */
-function TinyMCE_zoom_execCommand(editor_id, element, command, user_interface, value) {
-	// Handle commands
-	switch (command) {
-		case "mceZoom":
-			tinyMCE._getInstanceById(editor_id).contentDocument.body.style.zoom = value;
-			tinyMCE._getInstanceById(editor_id).contentDocument.body.style.mozZoom = value;
-			return true;
-	}
-
-	// Pass to next handler in chain
-	return false;
-}
+var TinyMCE_ZoomPlugin={getInfo:function(){return{longname:'Zoom',author:'Moxiecode Systems AB',authorurl:'http://tinymce.moxiecode.com',infourl:'http://tinymce.moxiecode.com/tinymce/docs/plugin_zoom.html',version:tinyMCE.majorVersion+"."+tinyMCE.minorVersion}},getControlHTML:function(control_name){if(!tinyMCE.isMSIE||tinyMCE.isMSIE5_0||tinyMCE.isOpera)return"";switch(control_name){case"zoom":return'<select id="{$editor_id}_zoomSelect" name="{$editor_id}_zoomSelect" onfocus="tinyMCE.addSelectAccessibility(event, this, window);" onchange="tinyMCE.execInstanceCommand(\'{$editor_id}\',\'mceZoom\',false,this.options[this.selectedIndex].value);" class="mceSelectList">'+'<option value="100%">+ 100%</option>'+'<option value="150%">+ 150%</option>'+'<option value="200%">+ 200%</option>'+'<option value="250%">+ 250%</option>'+'</select>'}return""},execCommand:function(editor_id,element,command,user_interface,value){switch(command){case"mceZoom":tinyMCE.getInstanceById(editor_id).con!
 tentDocument.body.style.zoom=value;tinyMCE.getInstanceById(editor_id).contentDocument.body.style.mozZoom=value;return true}return false}};tinyMCE.addPlugin("zoom",TinyMCE_ZoomPlugin);
\ No newline at end of file

Added: labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/plugins/zoom/editor_plugin_src.js
===================================================================
--- labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/plugins/zoom/editor_plugin_src.js	2007-01-11 22:09:16 UTC (rev 8831)
+++ labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/plugins/zoom/editor_plugin_src.js	2007-01-11 22:10:56 UTC (rev 8832)
@@ -0,0 +1,56 @@
+/**
+ * $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.
+ */
+
+var TinyMCE_ZoomPlugin = {
+	getInfo : function() {
+		return {
+			longname : 'Zoom',
+			author : 'Moxiecode Systems AB',
+			authorurl : 'http://tinymce.moxiecode.com',
+			infourl : 'http://tinymce.moxiecode.com/tinymce/docs/plugin_zoom.html',
+			version : tinyMCE.majorVersion + "." + tinyMCE.minorVersion
+		};
+	},
+
+	/**
+	 * Returns the HTML contents of the zoom control.
+	 */
+	getControlHTML : function(control_name) {
+		if (!tinyMCE.isMSIE || tinyMCE.isMSIE5_0 || tinyMCE.isOpera)
+			return "";
+
+		switch (control_name) {
+			case "zoom":
+				return '<select id="{$editor_id}_zoomSelect" name="{$editor_id}_zoomSelect" onfocus="tinyMCE.addSelectAccessibility(event, this, window);" onchange="tinyMCE.execInstanceCommand(\'{$editor_id}\',\'mceZoom\',false,this.options[this.selectedIndex].value);" class="mceSelectList">' + 
+						'<option value="100%">+ 100%</option>' + 
+						'<option value="150%">+ 150%</option>' + 
+						'<option value="200%">+ 200%</option>' + 
+						'<option value="250%">+ 250%</option>' + 
+						'</select>';
+		}
+
+		return "";
+	},
+
+	/**
+	 * Executes the mceZoom command.
+	 */
+	execCommand : function(editor_id, element, command, user_interface, value) {
+		// Handle commands
+		switch (command) {
+			case "mceZoom":
+				tinyMCE.getInstanceById(editor_id).contentDocument.body.style.zoom = value;
+				tinyMCE.getInstanceById(editor_id).contentDocument.body.style.mozZoom = value;
+				return true;
+		}
+
+		// Pass to next handler in chain
+		return false;
+	}
+};
+
+tinyMCE.addPlugin("zoom", TinyMCE_ZoomPlugin);

Modified: labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/plugins/zoom/readme.txt
===================================================================
--- labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/plugins/zoom/readme.txt	2007-01-11 22:09:16 UTC (rev 8831)
+++ labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/plugins/zoom/readme.txt	2007-01-11 22:10:56 UTC (rev 8832)
@@ -1,22 +1 @@
- Zoom plugin for TinyMCE
---------------------------
-
-About:
- Adds a zoom drop list in MSIE, this plugin was mostly created to
- show how to add custom droplists as plugins.
-
-Installation instructions:
-  * Copy the zoom directory to the plugins directory of TinyMCE (/jscripts/tiny_mce/plugins).
-  * Add plugin to TinyMCE plugin option list example: plugins : "zoom".
-  * Add the preview button name to button list, example: theme_advanced_buttons3_add : "zoom".
-
-Initialization example:
-  tinyMCE.init({
-    theme : "advanced",
-    mode : "textareas",
-    plugins : "preview",
-    theme_advanced_buttons3_add : "zoom"
-  });
-
-Requirement:
-  This plugin requires MSIE on Mozilla the button will not be visible.
+Check the TinyMCE documentation for details on this plugin.

Added: labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/themes/advanced/about.htm
===================================================================
--- labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/themes/advanced/about.htm	2007-01-11 22:09:16 UTC (rev 8831)
+++ labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/themes/advanced/about.htm	2007-01-11 22:10:56 UTC (rev 8832)
@@ -0,0 +1,52 @@
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+	<title>{$lang_about_title}</title>
+	<script language="javascript" type="text/javascript" src="../../tiny_mce_popup.js"></script>
+	<script language="javascript" type="text/javascript" src="../../utils/mctabs.js"></script>
+	<script language="javascript" type="text/javascript" src="jscripts/about.js"></script>
+	<base target="_self" />
+</head>
+<body id="about" onload="tinyMCEPopup.executeOnLoad('init();');" style="display: none">
+		<div class="tabs">
+			<ul>
+				<li id="general_tab" class="current"><span><a href="javascript:mcTabs.displayTab('general_tab','general_panel');" onmousedown="return false;">{$lang_about}</a></span></li>
+				<li id="help_tab"><span><a href="javascript:mcTabs.displayTab('help_tab','help_panel');" onmousedown="return false;">{$lang_help}</a></span></li>
+				<li id="plugins_tab"><span><a href="javascript:mcTabs.displayTab('plugins_tab','plugins_panel');" onmousedown="return false;">{$lang_plugins}</a></span></li>
+			</ul>
+		</div>
+
+		<div class="panel_wrapper">
+			<div id="general_panel" class="panel current">
+				<h3>{$lang_about_title}</h3>
+				<p>Version: {$tinymce_version} ({$tinymce_releasedate})</p>
+				<p>TinyMCE is a platform independent web based Javascript HTML WYSIWYG editor control released as Open Source under <a href="../../license.txt" target="_blank">LGPL</a>
+				by Moxiecode Systems AB. It has the ability to convert HTML TEXTAREA fields or other HTML elements to editor instances.</p>
+				<p>Copyright &copy; 2003-2006, <a href="http://www.moxiecode.com" target="_blank">Moxiecode Systems AB</a>, All rights reserved.</p>
+				<p>For more information about this software visit the <a href="http://tinymce.moxiecode.com" target="_blank">TinyMCE website</a>.</p>
+
+				<div id="buttoncontainer"></div>
+			</div>
+
+			<div id="plugins_panel" class="panel">
+				<div id="pluginscontainer">
+					<h3>{$lang_loaded_plugins}</h3>
+
+					<div id="plugintablecontainer">
+					</div>
+
+					<p>&nbsp;</p>
+				</div>
+			</div>
+
+			<div id="help_panel" class="panel noscroll" style="overflow: visible;">
+				<div id="iframecontainer"></div>
+			</div>
+		</div>
+
+		<div class="mceActionPanel">
+			<div style="float: right">
+				<input type="button" id="cancel" name="cancel" value="{$lang_close}" onclick="tinyMCEPopup.close();" />
+			</div>
+		</div>
+</body>
+</html>

Modified: labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/themes/advanced/anchor.htm
===================================================================
--- labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/themes/advanced/anchor.htm	2007-01-11 22:09:16 UTC (rev 8831)
+++ labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/themes/advanced/anchor.htm	2007-01-11 22:10:56 UTC (rev 8832)
@@ -1,46 +1,33 @@
-<html>
+<html xmlns="http://www.w3.org/1999/xhtml">
 <head>
-<title>{$lang_insert_anchor_title}</title>
-<script language="javascript" src="../../tiny_mce_popup.js"></script>
-<script language="javascript">
-	function init() {
-		document.forms[0].anchorName.value = tinyMCE.getWindowArg('name');
-		document.forms[0].insert.value = tinyMCE.getLang('lang_' + tinyMCE.getWindowArg('action')); 
-		window.focus();
-	}
+	<title>{$lang_insert_anchor_title}</title>
+	<script language="javascript" type="text/javascript" src="../../tiny_mce_popup.js"></script>
+	<script language="javascript" type="text/javascript" src="jscripts/anchor.js"></script>
+	<base target="_self" />
+</head>
+<body onload="tinyMCEPopup.executeOnLoad('init();');" style="display: none">
+<form onsubmit="insertAnchor();return false;" action="#">
 
-	function insertAnchor() {
-		if (window.opener) {
-			tinyMCE.execInstanceCommand(tinyMCE.getWindowArg('editor_id'), 'mceAnchor', false, document.forms[0].anchorName.value);
-			top.close();
-		}
-	}
+	<table border="0" cellpadding="4" cellspacing="0">
+		<tr>
+			<td colspan="2" class="title">{$lang_insert_anchor_title}</td>
+		</tr>
+		<tr>
+			<td nowrap="nowrap">{$lang_insert_anchor_name}:</td>
+			<td><input name="anchorName" type="text" id="anchorName" value="" style="width: 200px" /></td>
+		</tr>
+	</table>
 
-	function cancelAction() {
-		top.close();
-	}
-</script>
-</head>
-<body onload="init();">
-<form onsubmit="insertAnchor();return false;">
-  <table border="0" cellpadding="0" cellspacing="0" width="100%">
-    <tr>
-      <td align="center" valign="middle"><table border="0" cellpadding="4" cellspacing="0">
-          <tr>
-            <td colspan="2" class="title">{$lang_insert_anchor_title}</td>
-          </tr>
-          <tr>
-            <td>{$lang_insert_anchor_name}:</td>
-            <td><input name="anchorName" type="text" id="anchorName" value="" style="width: 200px"></td>
-          </tr>
-          <tr>
-            <td><input type="button" id="insert" name="insert" value="{$lang_insert}" onclick="insertAnchor();">
-            </td>
-            <td align="right"><input type="button" id="cancel" name="cancel" value="{$lang_cancel}" onclick="cancelAction();"></td>
-          </tr>
-        </table></td>
-    </tr>
-  </table>
+	<div class="mceActionPanel">
+		<div style="float: left">
+			<input type="button" id="insert" name="insert" value="{$lang_update}" onclick="insertAnchor();" />
+		</div>
+
+		<div style="float: right">
+			<input type="button" id="cancel" name="cancel" value="{$lang_cancel}" onclick="tinyMCEPopup.close();" />
+		</div>
+	</div>
+
 </form>
 </body>
 </html>

Modified: labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/themes/advanced/charmap.htm
===================================================================
--- labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/themes/advanced/charmap.htm	2007-01-11 22:09:16 UTC (rev 8831)
+++ labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/themes/advanced/charmap.htm	2007-01-11 22:10:56 UTC (rev 8832)
@@ -1,351 +1,22 @@
-<?xml version="1.0" encoding="iso-8859-1"?>
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
 <html xmlns="http://www.w3.org/1999/xhtml">
 <head>
-<title>{$lang_theme_charmap_title}</title>
-<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
-<script language="javascript" type="text/javascript" src="../../tiny_mce_popup.js"></script>
-<script language="javascript" type="text/javascript">
-<!--
-	var charmap = new Array();
-
-	// for mor details please see w3c.org
-	// now here is the complete list ;)
-
-	charmap = [
-		['&nbsp;',    '&#160;',  true, 'no-break space'],
-		['&amp;',     '&#38;',   true, 'ampersand'],
-		['&quot;',    '&#34;',   true, 'quotation mark'],
-	// finance
-		['&cent;',    '&#162;',  true, 'cent sign'],
-		['&euro;',    '&#8364;', true, 'euro sign'],
-		['&pound;',   '&#163;',  true, 'pound sign'],
-		['&yen;',     '&#165;',  true, 'yen sign'],
-	// signs
-		['&copy;',    '&#169;',  true, 'copyright sign'],
-		['&reg;',     '&#174;',  true, 'registered sign'],
-		['&trade;',   '&#8482;', true, 'trade mark sign'],
-		['&permil;',  '&#8240;', true, 'per mille sign'],
-		['&micro;',   '&#181;',  true, 'micro sign'],
-		['&middot;',  '&#183;',  true, 'middle dot'],
-		['&bull;',    '&#8226;', true, 'bullet'],
-		['&hellip;',  '&#8230;', true, 'three dot leader'],
-		['&prime;',   '&#8242;', true, 'minutes / feet'],
-		['&Prime;',   '&#8243;', true, 'seconds / inches'],
-		['&sect;',    '&#167;',  true, 'section sign'],
-		['&para;',    '&#182;',  true, 'paragraph sign'],
-		['&szlig;',   '&#223;',  true, 'sharp s / ess-zed'],
-	// quotations
-		['&lsaquo;',  '&#8249;', true, 'single left-pointing angle quotation mark'],
-		['&rsaquo;',  '&#8250;', true, 'single right-pointing angle quotation mark'],
-		['&laquo;',   '&#171;',  true, 'left pointing guillemet'],
-		['&raquo;',   '&#187;',  true, 'right pointing guillemet'],
-		['&lsquo;',   '&#8216;', true, 'left single quotation mark'],
-		['&rsquo;',   '&#8217;', true, 'right single quotation mark'],
-		['&ldquo;',   '&#8220;', true, 'left double quotation mark'],
-		['&rdquo;',   '&#8221;', true, 'right double quotation mark'],
-		['&sbquo;',   '&#8218;', true, 'single low-9 quotation mark'],
-		['&bdquo;',   '&#8222;', true, 'double low-9 quotation mark'],
-		['&lt;',      '&#60;',   true, 'less-than sign'],
-		['&gt;',      '&#62;',   true, 'greater-than sign'],
-		['&le;',      '&#8804;', true, 'less-than or equal to'],
-		['&ge;',      '&#8805;', true, 'greater-than or equal to'],
-		['&ndash;',   '&#8211;', true, 'en dash'],
-		['&mdash;',   '&#8212;', true, 'em dash'],
-		['&macr;',    '&#175;',  true, 'macron'],
-		['&oline;',   '&#8254;', true, 'overline'],
-		['&curren;',  '&#164;',  true, 'currency sign'],
-		['&brvbar;',  '&#166;',  true, 'broken bar'],
-		['&uml;',     '&#168;',  true, 'diaeresis'],
-		['&iexcl;',   '&#161;',  true, 'inverted exclamation mark'],
-		['&iquest;',  '&#191;',  true, 'turned question mark'],
-		['&circ;',    '&#710;',  true, 'circumflex accent'],
-		['&tilde;',   '&#732;',  true, 'small tilde'],
-		['&deg;',     '&#176;',  true, 'degree sign'],
-		['&minus;',   '&#8722;', true, 'minus sign'],
-		['&plusmn;',  '&#177;',  true, 'plus-minus sign'],
-		['&divide;',  '&#247;',  true, 'division sign'],
-		['&frasl;',   '&#8260;', true, 'fraction slash'],
-		['&times;',   '&#215;',  true, 'multiplication sign'],
-		['&sup1;',    '&#185;',  true, 'superscript one'],
-		['&sup2;',    '&#178;',  true, 'superscript two'],
-		['&sup3;',    '&#179;',  true, 'superscript three'],
-		['&frac14;',  '&#188;',  true, 'fraction one quarter'],
-		['&frac12;',  '&#189;',  true, 'fraction one half'],
-		['&frac34;',  '&#190;',  true, 'fraction three quarters'],
-	// math / logical
-		['&fnof;',    '&#402;',  true, 'function / florin'],
-		['&int;',     '&#8747;', true, 'integral'],
-		['&sum;',     '&#8721;', true, 'n-ary sumation'],
-		['&infin;',   '&#8734;', true, 'infinity'],
-		['&radic;',   '&#8730;', true, 'square root'],
-		['&sim;',     '&#8764;', false,'similar to'],
-		['&cong;',    '&#8773;', false,'approximately equal to'],
-		['&asymp;',   '&#8776;', true, 'almost equal to'],
-		['&ne;',      '&#8800;', true, 'not equal to'],
-		['&equiv;',   '&#8801;', true, 'identical to'],
-		['&isin;',    '&#8712;', false,'element of'],
-		['&notin;',   '&#8713;', false,'not an element of'],
-		['&ni;',      '&#8715;', false,'contains as member'],
-		['&prod;',    '&#8719;', true, 'n-ary product'],
-		['&and;',     '&#8743;', false,'logical and'],
-		['&or;',      '&#8744;', false,'logical or'],
-		['&not;',     '&#172;',  true, 'not sign'],
-		['&cap;',     '&#8745;', true, 'intersection'],
-		['&cup;',     '&#8746;', false,'union'],
-		['&part;',    '&#8706;', true, 'partial differential'],
-		['&forall;',  '&#8704;', false,'for all'],
-		['&exist;',   '&#8707;', false,'there exists'],
-		['&empty;',   '&#8709;', false,'diameter'],
-		['&nabla;',   '&#8711;', false,'backward difference'],
-		['&lowast;',  '&#8727;', false,'asterisk operator'],
-		['&prop;',    '&#8733;', false,'proportional to'],
-		['&ang;',     '&#8736;', false,'angle'],
-	// undefined
-		['&acute;',   '&#180;',  true, 'acute accent'],
-		['&cedil;',   '&#184;',  true, 'cedilla'],
-		['&ordf;',    '&#170;',  true, 'feminine ordinal indicator'],
-		['&ordm;',    '&#186;',  true, 'masculine ordinal indicator'],
-		['&dagger;',  '&#8224;', true, 'dagger'],
-		['&Dagger;',  '&#8225;', true, 'double dagger'],
-	// alphabetical special chars
-		['&Agrave;',  '&#192;',  true, 'A - grave'],
-		['&Aacute;',  '&#193;',  true, 'A - acute'],
-		['&Acirc;',   '&#194;',  true, 'A - circumflex'],
-		['&Atilde;',  '&#195;',  true, 'A - tilde'],
-		['&Auml;',    '&#196;',  true, 'A - diaeresis'],
-		['&Aring;',   '&#197;',  true, 'A - ring above'],
-		['&AElig;',   '&#198;',  true, 'ligature AE'],
-		['&Ccedil;',  '&#199;',  true, 'C - cedilla'],
-		['&Egrave;',  '&#200;',  true, 'E - grave'],
-		['&Eacute;',  '&#201;',  true, 'E - acute'],
-		['&Ecirc;',   '&#202;',  true, 'E - circumflex'],
-		['&Euml;',    '&#203;',  true, 'E - diaeresis'],
-		['&Igrave;',  '&#204;',  true, 'I - grave'],
-		['&Iacute;',  '&#205;',  true, 'I - acute'],
-		['&Icirc;',   '&#206;',  true, 'I - circumflex'],
-		['&Iuml;',    '&#207;',  true, 'I - diaeresis'],
-		['&ETH;',     '&#208;',  true, 'ETH'],
-		['&Ntilde;',  '&#209;',  true, 'N - tilde'],
-		['&Ograve;',  '&#210;',  true, 'O - grave'],
-		['&Oacute;',  '&#211;',  true, 'O - acute'],
-		['&Ocirc;',   '&#212;',  true, 'O - circumflex'],
-		['&Otilde;',  '&#213;',  true, 'O - tilde'],
-		['&Ouml;',    '&#214;',  true, 'O - diaeresis'],
-		['&Oslash;',  '&#216;',  true, 'O - slash'],
-		['&OElig;',   '&#338;',  true, 'ligature OE'],
-		['&Scaron;',  '&#352;',  true, 'S - caron'],
-		['&Ugrave;',  '&#217;',  true, 'U - grave'],
-		['&Uacute;',  '&#218;',  true, 'U - acute'],
-		['&Ucirc;',   '&#219;',  true, 'U - circumflex'],
-		['&Uuml;',    '&#220;',  true, 'U - diaeresis'],
-		['&Yacute;',  '&#221;',  true, 'Y - acute'],
-		['&Yuml;',    '&#376;',  true, 'Y - diaeresis'],
-		['&THORN;',   '&#222;',  true, 'THORN'],
-		['&agrave;',  '&#224;',  true, 'a - grave'],
-		['&aacute;',  '&#225;',  true, 'a - acute'],
-		['&acirc;',   '&#226;',  true, 'a - circumflex'],
-		['&atilde;',  '&#227;',  true, 'a - tilde'],
-		['&auml;',    '&#228;',  true, 'a - diaeresis'],
-		['&aring;',   '&#229;',  true, 'a - ring above'],
-		['&aelig;',   '&#230;',  true, 'ligature ae'],
-		['&ccedil;',  '&#231;',  true, 'c - cedilla'],
-		['&egrave;',  '&#232;',  true, 'e - grave'],
-		['&eacute;',  '&#233;',  true, 'e - acute'],
-		['&ecirc;',   '&#234;',  true, 'e - circumflex'],
-		['&euml;',    '&#235;',  true, 'e - diaeresis'],
-		['&igrave;',  '&#236;',  true, 'i - grave'],
-		['&iacute;',  '&#237;',  true, 'i - acute'],
-		['&icirc;',   '&#238;',  true, 'i - circumflex'],
-		['&iuml;',    '&#239;',  true, 'i - diaeresis'],
-		['&eth;',     '&#240;',  true, 'eth'],
-		['&ntilde;',  '&#241;',  true, 'n - tilde'],
-		['&ograve;',  '&#242;',  true, 'o - grave'],
-		['&oacute;',  '&#243;',  true, 'o - acute'],
-		['&ocirc;',   '&#244;',  true, 'o - circumflex'],
-		['&otilde;',  '&#245;',  true, 'o - tilde'],
-		['&ouml;',    '&#246;',  true, 'o - diaeresis'],
-		['&oslash;',  '&#248;',  true, 'o slash'],
-		['&oelig;',   '&#339;',  true, 'ligature oe'],
-		['&scaron;',  '&#353;',  true, 's - caron'],
-		['&ugrave;',  '&#249;',  true, 'u - grave'],
-		['&uacute;',  '&#250;',  true, 'u - acute'],
-		['&ucirc;',   '&#251;',  true, 'u - circumflex'],
-		['&uuml;',    '&#252;',  true, 'u - diaeresis'],
-		['&yacute;',  '&#253;',  true, 'y - acute'],
-		['&thorn;',   '&#254;',  true, 'thorn'],
-		['&yuml;',    '&#255;',  true, 'y - diaeresis'],
-	// ['&Alpha;',   '&#913;',  true, 'Alpha'],
-		['&Beta;',    '&#914;',  true, 'Beta'],
-		['&Gamma;',   '&#915;',  true, 'Gamma'],
-		['&Delta;',   '&#916;',  true, 'Delta'],
-		['&Epsilon;', '&#917;',  true, 'Epsilon'],
-		['&Zeta;',    '&#918;',  true, 'Zeta'],
-		['&Eta;',     '&#919;',  true, 'Eta'],
-		['&Theta;',   '&#920;',  true, 'Theta'],
-		['&Iota;',    '&#921;',  true, 'Iota'],
-		['&Kappa;',   '&#922;',  true, 'Kappa'],
-		['&Lambda;',  '&#923;',  true, 'Lambda'],
-		['&Mu;',      '&#924;',  true, 'Mu'],
-		['&Nu;',      '&#925;',  true, 'Nu'],
-		['&Xi;',      '&#926;',  true, 'Xi'],
-		['&Omicron;', '&#927;',  true, 'Omicron'],
-		['&Pi;',      '&#928;',  true, 'Pi'],
-		['&Rho;',     '&#929;',  true, 'Rho'],
-		['&Sigma;',   '&#931;',  true, 'Sigma'],
-		['&Tau;',     '&#932;',  true, 'Tau'],
-		['&Upsilon;', '&#933;',  true, 'Upsilon'],
-		['&Phi;',     '&#934;',  true, 'Phi'],
-		['&Chi;',     '&#935;',  true, 'Chi'],
-		['&Psi;',     '&#936;',  true, 'Psi'],
-		['&Omega;',   '&#937;',  true, 'Omega'],
-		['&alpha;',   '&#945;',  true, 'alpha'],
-		['&beta;',    '&#946;',  true, 'beta'],
-		['&gamma;',   '&#947;',  true, 'gamma'],
-		['&delta;',   '&#948;',  true, 'delta'],
-		['&epsilon;', '&#949;',  true, 'epsilon'],
-		['&zeta;',    '&#950;',  true, 'zeta'],
-		['&eta;',     '&#951;',  true, 'eta'],
-		['&theta;',   '&#952;',  true, 'theta'],
-		['&iota;',    '&#953;',  true, 'iota'],
-		['&kappa;',   '&#954;',  true, 'kappa'],
-		['&lambda;',  '&#955;',  true, 'lambda'],
-		['&mu;',      '&#956;',  true, 'mu'],
-		['&nu;',      '&#957;',  true, 'nu'],
-		['&xi;',      '&#958;',  true, 'xi'],
-		['&omicron;', '&#959;',  true, 'omicron'],
-		['&pi;',      '&#960;',  true, 'pi'],
-		['&rho;',     '&#961;',  true, 'rho'],
-		['&sigmaf;',  '&#962;',  true, 'final sigma'],
-		['&sigma;',   '&#963;',  true, 'sigma'],
-		['&tau;',     '&#964;',  true, 'tau'],
-		['&upsilon;', '&#965;',  true, 'upsilon'],
-		['&phi;',     '&#966;',  true, 'phi'],
-		['&chi;',     '&#967;',  true, 'chi'],
-		['&psi;',     '&#968;',  true, 'psi'],
-		['&omega;',   '&#969;',  true, 'omega'],
-	// symbols
-		['&alefsym;', '&#8501;', false,'alef symbol'],
-		['&piv;',     '&#982;',  false,'pi symbol'],
-		['&real;',    '&#8476;', false,'real part symbol'],
-		['&thetasym;','&#977;',  false,'theta symbol'],
-		['&upsih;',   '&#978;',  false,'upsilon - hook symbol'],
-		['&weierp;',  '&#8472;', false,'Weierstrass p'],
-		['&image;',   '&#8465;', false,'imaginary part'],
-	// arrows
-		['&larr;',    '&#8592;', true, 'leftwards arrow'],
-		['&uarr;',    '&#8593;', true, 'upwards arrow'],
-		['&rarr;',    '&#8594;', true, 'rightwards arrow'],
-		['&darr;',    '&#8595;', true, 'downwards arrow'],
-		['&harr;',    '&#8596;', true, 'left right arrow'],
-		['&crarr;',   '&#8629;', false,'carriage return'],
-		['&lArr;',    '&#8656;', false,'leftwards double arrow'],
-		['&uArr;',    '&#8657;', false,'upwards double arrow'],
-		['&rArr;',    '&#8658;', false,'rightwards double arrow'],
-		['&dArr;',    '&#8659;', false,'downwards double arrow'],
-		['&hArr;',    '&#8660;', false,'left right double arrow'],
-		['&there4;',  '&#8756;', false,'therefore'],
-		['&sub;',     '&#8834;', false,'subset of'],
-		['&sup;',     '&#8835;', false,'superset of'],
-		['&nsub;',    '&#8836;', false,'not a subset of'],
-		['&sube;',    '&#8838;', false,'subset of or equal to'],
-		['&supe;',    '&#8839;', false,'superset of or equal to'],
-		['&oplus;',   '&#8853;', false,'circled plus'],
-		['&otimes;',  '&#8855;', false,'circled times'],
-		['&perp;',    '&#8869;', false,'perpendicular'],
-		['&sdot;',    '&#8901;', false,'dot operator'],
-		['&lceil;',   '&#8968;', false,'left ceiling'],
-		['&rceil;',   '&#8969;', false,'right ceiling'],
-		['&lfloor;',  '&#8970;', false,'left floor'],
-		['&rfloor;',  '&#8971;', false,'right floor'],
-		['&lang;',    '&#9001;', false,'left-pointing angle bracket'],
-		['&rang;',    '&#9002;', false,'right-pointing angle bracket'],
-		['&loz;',     '&#9674;', true,'lozenge'],
-		['&spades;',  '&#9824;', false,'black spade suit'],
-		['&clubs;',   '&#9827;', true, 'black club suit'],
-		['&hearts;',  '&#9829;', true, 'black heart suit'],
-		['&diams;',   '&#9830;', true, 'black diamond suit'],
-		['&ensp;',    '&#8194;', false,'en space'],
-		['&emsp;',    '&#8195;', false,'em space'],
-		['&thinsp;',  '&#8201;', false,'thin space'],
-		['&zwnj;',    '&#8204;', false,'zero width non-joiner'],
-		['&zwj;',     '&#8205;', false,'zero width joiner'],
-		['&lrm;',     '&#8206;', false,'left-to-right mark'],
-		['&rlm;',     '&#8207;', false,'right-to-left mark'],
-		['&shy;',     '&#173;',  false,'soft hyphen']
-	];
-
-    function renderCharMapHTML() {
-        var charsPerRow = 20, tdWidth=20, tdHeight=20;
-        var html = '<table border="0" cellspacing="1" cellpadding="0" width="' + (tdWidth*charsPerRow) + '"><tr height="' + tdHeight + '">';
-        var cols=-1;
-        for (var i=0; i<charmap.length; i++) {
-            if (charmap[i][2]==true) {
-                cols++;
-                html += ''
-                    + '<td width="' + tdWidth + '" height="' + tdHeight + '" class="charmap"'
-                    + ' onmouseover="tinyMCE.switchClass(this,\'charmapOver\');'
-                    + 'previewChar(\'' + charmap[i][1].substring(1,charmap[i][1].length) + '\',\'' + charmap[i][0].substring(1,charmap[i][0].length) + '\',\'' + charmap[i][3] + '\');"'
-                    + ' onmouseout="tinyMCE.restoreClass(this,\'charmapOver\');"'
-                    + ' onclick="insertChar(\'' + charmap[i][1].substring(2,charmap[i][1].length-1) + '\');return false;"'
-                    + ' title="' + charmap[i][3] + '" nowrap="nowrap">'
-                    + charmap[i][1]
-                    + '</td>';
-                if ((cols+1) % charsPerRow == 0)
-                    html += '</tr><tr height="' + tdHeight + '">';
-            }
-         }
-        if (cols % charsPerRow > 0) {
-            var padd = charsPerRow - (cols % charsPerRow);
-            for (var i=0; i<padd-1; i++)
-                html += '<td width="' + tdWidth + '" height="' + tdHeight + '" class="charmap">&nbsp;</td>';
-        }
-        html += '</tr></table>';
-        document.write(html);
-    }
-
-    function insertChar(chr) {
-        tinyMCE.execInstanceCommand(tinyMCE.getWindowArg('editor_id'), 'mceInsertContent', false, '\&#' + chr + ';');
-        //window.close();
-        self.focus();
-    }
-
-    function previewChar(codeA, codeB, codeN) {
-        var elmA = document.getElementById('codeA');
-        var elmB = document.getElementById('codeB');
-        var elmV = document.getElementById('codeV');
-        var elmN = document.getElementById('codeN');
-
-        if (codeA=='#160;') {
-            elmV.innerHTML = '__';
-        } else {
-            elmV.innerHTML = '&' + codeA;
-        }
-
-        elmB.innerHTML = '&amp;' + codeA;
-        elmA.innerHTML = '&amp;' + codeB;
-        elmN.innerHTML = codeN;
-    }
-
-    window.focus();
-//-->
-</script>
+	<title>{$lang_theme_charmap_title}</title>
+	<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" />
+	<script language="javascript" type="text/javascript" src="../../tiny_mce_popup.js"></script>
+	<script language="javascript" type="text/javascript" src="jscripts/charmap.js"></script>
+	<base target="_self" />
 </head>
-<body>
+<body onload="tinyMCEPopup.executeOnLoad('init();');" style="display: none">
 <table align="center" border="0" cellspacing="0" cellpadding="2">
     <tr>
         <td colspan="2" class="title">{$lang_theme_charmap_title}</td>
     </tr>
     <tr>
         <td rowspan="2" align="left" valign="top">
-            <script language="javascript" type="text/javascript">
-            <!--
-                renderCharMapHTML();
-            //-->
-            </script>
+            <script language="javascript" type="text/javascript">renderCharMapHTML();</script>
         </td>
         <td width="100" align="center" valign="top">
-            <table border="0" cellpadding="0" cellspacing="0" width="100" height="100">
+            <table border="0" cellpadding="0" cellspacing="0" width="100" style="height: 100px">
                 <tr>
                     <td class="charmapOver" style="font-size: 40px; height:80px;" id="codeV">&nbsp;</td>
                 </tr>

Modified: labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/themes/advanced/color_picker.htm
===================================================================
--- labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/themes/advanced/color_picker.htm	2007-01-11 22:09:16 UTC (rev 8831)
+++ labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/themes/advanced/color_picker.htm	2007-01-11 22:10:56 UTC (rev 8832)
@@ -1,272 +1,13 @@
-<html>
+<html xmlns="http://www.w3.org/1999/xhtml">
 <head>
-<title>{$lang_theme_colorpicker_title}</title>
-<script language="javascript" type="text/javascript" src="../../tiny_mce_popup.js"></script>
-<script language="javascript" type="text/javascript">
-<!--
-    function selectColor() {
-        var color = document.getElementById("selectedColorBox").value;
-        if (window.opener)
-            window.opener.tinyMCE.execInstanceCommand(tinyMCE.getWindowArg('editor_id'),tinyMCE.getWindowArg('command'),false,color);
-        window.close();
-    }
-    function showColor(color) {
-        document.getElementById("selectedColor").style.backgroundColor = color;
-        document.getElementById("selectedColorBox").value = color;
-    }
-
-    window.focus();
-
-    var colorPicker = "";
-    var colors = new Array(
-        "#000000",
-        "#000033",
-        "#000066",
-        "#000099",
-        "#0000cc",
-        "#0000ff",
-        "#330000",
-        "#330033",
-        "#330066",
-        "#330099",
-        "#3300cc",
-        "#3300ff",
-        "#660000",
-        "#660033",
-        "#660066",
-        "#660099",
-        "#6600cc",
-        "#6600ff",
-        "#990000",
-        "#990033",
-        "#990066",
-        "#990099",
-        "#9900cc",
-        "#9900ff",
-        "#cc0000",
-        "#cc0033",
-        "#cc0066",
-        "#cc0099",
-        "#cc00cc",
-        "#cc00ff",
-        "#ff0000",
-        "#ff0033",
-        "#ff0066",
-        "#ff0099",
-        "#ff00cc",
-        "#ff00ff",
-        "#003300",
-        "#003333",
-        "#003366",
-        "#003399",
-        "#0033cc",
-        "#0033ff",
-        "#333300",
-        "#333333",
-        "#333366",
-        "#333399",
-        "#3333cc",
-        "#3333ff",
-        "#663300",
-        "#663333",
-        "#663366",
-        "#663399",
-        "#6633cc",
-        "#6633ff",
-        "#993300",
-        "#993333",
-        "#993366",
-        "#993399",
-        "#9933cc",
-        "#9933ff",
-        "#cc3300",
-        "#cc3333",
-        "#cc3366",
-        "#cc3399",
-        "#cc33cc",
-        "#cc33ff",
-        "#ff3300",
-        "#ff3333",
-        "#ff3366",
-        "#ff3399",
-        "#ff33cc",
-        "#ff33ff",
-        "#006600",
-        "#006633",
-        "#006666",
-        "#006699",
-        "#0066cc",
-        "#0066ff",
-        "#336600",
-        "#336633",
-        "#336666",
-        "#336699",
-        "#3366cc",
-        "#3366ff",
-        "#666600",
-        "#666633",
-        "#666666",
-        "#666699",
-        "#6666cc",
-        "#6666ff",
-        "#996600",
-        "#996633",
-        "#996666",
-        "#996699",
-        "#9966cc",
-        "#9966ff",
-        "#cc6600",
-        "#cc6633",
-        "#cc6666",
-        "#cc6699",
-        "#cc66cc",
-        "#cc66ff",
-        "#ff6600",
-        "#ff6633",
-        "#ff6666",
-        "#ff6699",
-        "#ff66cc",
-        "#ff66ff",
-        "#009900",
-        "#009933",
-        "#009966",
-        "#009999",
-        "#0099cc",
-        "#0099ff",
-        "#339900",
-        "#339933",
-        "#339966",
-        "#339999",
-        "#3399cc",
-        "#3399ff",
-        "#669900",
-        "#669933",
-        "#669966",
-        "#669999",
-        "#6699cc",
-        "#6699ff",
-        "#999900",
-        "#999933",
-        "#999966",
-        "#999999",
-        "#9999cc",
-        "#9999ff",
-        "#cc9900",
-        "#cc9933",
-        "#cc9966",
-        "#cc9999",
-        "#cc99cc",
-        "#cc99ff",
-        "#ff9900",
-        "#ff9933",
-        "#ff9966",
-        "#ff9999",
-        "#ff99cc",
-        "#ff99ff",
-        "#00cc00",
-        "#00cc33",
-        "#00cc66",
-        "#00cc99",
-        "#00cccc",
-        "#00ccff",
-        "#33cc00",
-        "#33cc33",
-        "#33cc66",
-        "#33cc99",
-        "#33cccc",
-        "#33ccff",
-        "#66cc00",
-        "#66cc33",
-        "#66cc66",
-        "#66cc99",
-        "#66cccc",
-        "#66ccff",
-        "#99cc00",
-        "#99cc33",
-        "#99cc66",
-        "#99cc99",
-        "#99cccc",
-        "#99ccff",
-        "#cccc00",
-        "#cccc33",
-        "#cccc66",
-        "#cccc99",
-        "#cccccc",
-        "#ccccff",
-        "#ffcc00",
-        "#ffcc33",
-        "#ffcc66",
-        "#ffcc99",
-        "#ffcccc",
-        "#ffccff",
-        "#00ff00",
-        "#00ff33",
-        "#00ff66",
-        "#00ff99",
-        "#00ffcc",
-        "#00ffff",
-        "#33ff00",
-        "#33ff33",
-        "#33ff66",
-        "#33ff99",
-        "#33ffcc",
-        "#33ffff",
-        "#66ff00",
-        "#66ff33",
-        "#66ff66",
-        "#66ff99",
-        "#66ffcc",
-        "#66ffff",
-        "#99ff00",
-        "#99ff33",
-        "#99ff66",
-        "#99ff99",
-        "#99ffcc",
-        "#99ffff",
-        "#ccff00",
-        "#ccff33",
-        "#ccff66",
-        "#ccff99",
-        "#ccffcc",
-        "#ccffff",
-        "#ffff00",
-        "#ffff33",
-        "#ffff66",
-        "#ffff99",
-        "#ffffcc",
-        "#ffffff"
-    );
-
-    colorPicker += '<table border="0" cellspacing="1" cellpadding="0">'
-        + '<tr>';
-    for (var i=0; i<colors.length; i++) {
-        colorPicker += '<td bgcolor="' + colors[i] + '">'
-            + '<a href="#top" onclick="selectColor();return false;" onmouseover="showColor(\'' + colors[i] +  '\');">'
-            + '<img border="0" src="images/spacer.gif" width="10" height="10" /></a></td>';
-        if ((i+1) % 18 == 0)
-            colorPicker += '</tr><tr>';
-    }
-    colorPicker += '<tr><td colspan="18">'
-        + '<table width="100%" border="0" cellspacing="0" cellpadding="0">'
-        + '<tr><td>'
-        + '<img id="selectedColor" style="background-color:' + tinyMCE.getWindowArg('input_color') + '" border="0" src="images/spacer.gif" width="80" height="16" />'
-        + '</td><td align="right">'
-        + '<input id="selectedColorBox" name="selectedColorBox" type="text" size="7" maxlength="7" style="width:65px" value="' + tinyMCE.getWindowArg('input_color') + '" />'
-        + '</td></tr>'
-        + '</table>'
-        + '<input type="button" id="insert" name="insert" value="{$lang_theme_colorpicker_apply}" style="margin-top:3px" onclick="selectColor();">'
-        + '</td></tr>'
-        + '</table>';
-//-->
-</script>
+	<title>{$lang_theme_colorpicker_title}</title>
+	<script language="javascript" type="text/javascript" src="../../tiny_mce_popup.js"></script>
+	<script language="javascript" type="text/javascript" src="jscripts/color_picker.js"></script>
+	<base target="_self" />
 </head>
-<body marginheight="3" topmargin="3" leftmargin="3" marginwidth="3">
-<div align="center">
-    <script language="javascript" type="text/javascript">
-    <!--
-        document.write(colorPicker);
-    //-->
-    </script>
-</div>
+<body onload="tinyMCEPopup.executeOnLoad('init();');" style="margin: 3px; display: none">
+	<div align="center">
+	   <script language="javascript" type="text/javascript">renderColorMap();</script>
+	</div>
 </body>
 </html>

Added: labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/themes/advanced/css/editor_content.css
===================================================================
--- labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/themes/advanced/css/editor_content.css	2007-01-11 22:09:16 UTC (rev 8831)
+++ labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/themes/advanced/css/editor_content.css	2007-01-11 22:10:56 UTC (rev 8832)
@@ -0,0 +1,58 @@
+/* This file contains the CSS data for the editable area(iframe) of TinyMCE */
+/* You can extend this CSS by adding your own CSS file with the the content_css option */
+
+body, td, pre {
+	font-family: Verdana, Arial, Helvetica, sans-serif;
+	font-size: 10px;
+}
+
+body {
+	background-color: #FFFFFF;
+}
+
+.mceVisualAid {
+	border: 1px dashed #BBBBBB !important;
+}
+
+div.mceVisualAid {
+	background-image:url('../images/spacer.gif');
+	visibility: visible !important;
+}
+
+.mceItemAnchor {
+	width: 12px;
+	line-height: 6px;
+	overflow: hidden;
+	padding-left: 12px;
+	background-image: url('../images/anchor_symbol.gif');
+	background-position: bottom;
+	background-repeat: no-repeat;
+}
+
+/* Important is needed in Gecko browsers inorder to style links */
+/*
+a {
+	color: green !important;
+}
+*/
+
+/* Style selection range colors in Gecko browsers */
+/*
+::-moz-selection {
+	background-color: red;
+	color: green;
+}
+*/
+
+/* MSIE specific */
+
+* html body {
+	scrollbar-3dlight-color: #F0F0EE;
+	scrollbar-arrow-color: #676662;
+	scrollbar-base-color: #F0F0EE;
+	scrollbar-darkshadow-color: #DDDDDD;
+	scrollbar-face-color: #E0E0DD;
+	scrollbar-highlight-color: #F0F0EE;
+	scrollbar-shadow-color: #F0F0EE;
+	scrollbar-track-color: #F5F5F5;
+}

Added: labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/themes/advanced/css/editor_popup.css
===================================================================
--- labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/themes/advanced/css/editor_popup.css	2007-01-11 22:09:16 UTC (rev 8831)
+++ labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/themes/advanced/css/editor_popup.css	2007-01-11 22:10:56 UTC (rev 8832)
@@ -0,0 +1,331 @@
+/* This file contains the CSS data for all popups in TinyMCE */
+
+body {
+	background-color: #F0F0EE;
+	font-family: Verdana, Arial, Helvetica, sans-serif;
+	font-size: 11px;
+	scrollbar-3dlight-color: #F0F0EE;
+	scrollbar-arrow-color: #676662;
+	scrollbar-base-color: #F0F0EE;
+	scrollbar-darkshadow-color: #DDDDDD;
+	scrollbar-face-color: #E0E0DD;
+	scrollbar-highlight-color: #F0F0EE;
+	scrollbar-shadow-color: #F0F0EE;
+	scrollbar-track-color: #F5F5F5;
+	margin: 8px;
+}
+
+td {
+	font-family: Verdana, Arial, Helvetica, sans-serif;
+	font-size: 11px;
+}
+
+input {
+	background: #FFFFFF;
+	border: 1px solid #cccccc;
+}
+
+td, input, select, textarea {
+	font-family: Verdana, Arial, Helvetica, sans-serif;
+	font-size: 10px;
+}
+
+input, select, textarea {
+	border: 1px solid #808080;
+}
+
+.input_noborder {
+	border: 0;
+}
+
+#insert, .updateButton {
+   font-weight: bold;
+   width: 90px;
+   height: 21px;
+   border: 0;
+   background-image: url('../images/insert_button_bg.gif');
+   cursor: pointer;
+}
+
+#cancel {
+   font-weight: bold;
+   width: 90px;
+   height: 21px;
+   border: 0;
+   background-image: url('../images/cancel_button_bg.gif');
+   cursor: pointer;
+}
+
+/* Mozilla only style */
+html>body #insert, html>body #cancel {
+	padding-bottom: 2px;
+}
+
+.title {
+	font-size: 12px;
+	font-weight: bold;
+	color: #2B6FB6;
+}
+
+table.charmap {
+	border-style: solid;
+	border-width: 1px;
+	border-color: #AAAAAA;
+}
+
+td.charmap, td.charmapOver {
+	color: #000000;
+	border-color: #AAAAAA;
+	border-style: solid;
+	border-width: 1px;
+	text-align: center;
+	font-size: 12px;
+}
+
+td.charmapOver {
+	background-color: #CCCCCC;
+	cursor: default;
+}
+
+a.charmap {
+	color: #000000;
+	text-decoration: none
+}
+
+.wordWrapCode {
+	vertical-align: middle;
+	border: 1px none #000000;
+	background-color: transparent;
+}
+
+input.radio {
+	border: 1px none #000000;
+	background-color: transparent;
+	vertical-align: middle;
+}
+
+input.checkbox {
+	border: 1px none #000000;
+	background-color: transparent;
+	vertical-align: middle;
+}
+
+.mceButtonNormal, .mceButtonOver, .mceButtonDown, .mceSeparator, .mceButtonDisabled, .mceButtonSelected {
+	margin-left: 1px;
+}
+
+.mceButtonNormal {
+	border-top: 1px solid;
+	border-left: 1px solid;
+	border-bottom: 1px solid;
+	border-right: 1px solid;
+	border-color: #F0F0EE;
+	cursor: default;
+}
+
+.mceButtonOver {
+	border: 1px solid #0A246A;
+	cursor: default;
+	background-color: #B6BDD2;
+}
+
+.mceButtonDown {
+	cursor: default;
+	border: 1px solid #0A246A;
+	background-color: #8592B5;
+}
+
+.mceButtonDisabled {
+	filter:progid:DXImageTransform.Microsoft.Alpha(opacity=30);
+	-moz-opacity:0.3;
+	opacity: 0.3;
+	border-top: 1px solid;
+	border-left: 1px solid;
+	border-bottom: 1px solid;
+	border-right: 1px solid;
+	border-color: #F0F0EE;
+	cursor: default;
+}
+
+.mceActionPanel {
+	margin-top: 5px;
+}
+
+/* Tabs classes */
+
+.tabs {
+	float: left;
+	width: 100%;
+	line-height: normal;
+	background-image: url("../images/xp/tabs_bg.gif");
+}
+
+.tabs ul {
+	margin: 0;
+	padding: 0 0 0;
+	list-style: none;
+}
+
+.tabs li {
+	float: left;
+	background: url("../images/xp/tab_bg.gif") no-repeat left top;
+	margin: 0;
+	margin-left: 0;
+	margin-right: 2px;
+	padding: 0 0 0 10px;
+	line-height: 18px;
+}
+
+.tabs li.current {
+	background: url("../images/xp/tab_sel_bg.gif") no-repeat left top;
+	margin-right: 2px;
+}
+
+.tabs span {
+	float: left;
+	display: block;
+	background: url("../images/xp/tab_end.gif") no-repeat right top;
+	padding: 0px 10px 0 0;
+}
+
+.tabs .current span {
+	background: url("../images/xp/tab_sel_end.gif") no-repeat right top;
+}
+
+.tabs a {
+	text-decoration: none;
+	font-family: Verdana, Arial;
+	font-size: 10px;
+}
+
+.tabs a:link, .tabs a:visited, .tabs a:hover {
+	color: black;
+}
+
+.tabs a:hover {
+}
+
+.tabs .current {
+}
+
+.tabs .current a, .tabs .current a:link, .tabs .current a:visited {
+}
+
+.panel_wrapper div.panel {
+	display: none;
+}
+
+.panel_wrapper div.current {
+	display: block;
+	width: 100%;
+	height: 300px;
+	overflow: visible; /* Should be auto but that breaks Safari */
+}
+
+.panel_wrapper {
+	border: 1px solid #919B9C;
+	border-top: 0px;
+	padding: 10px;
+	padding-top: 5px;
+	clear: both;
+	background-color: white;
+}
+
+fieldset {
+	border: 1px solid #919B9C;
+	font-family: Verdana, Arial;
+	font-size: 10px;
+	padding: 0;
+	margin: 0;
+	padding: 4px;
+}
+
+legend {
+	color: #2B6FB6;
+	font-weight: bold;
+}
+
+.properties {
+	width: 100%;
+}
+
+.properties .column1 {
+}
+
+.properties .column2 {
+	text-align: left;
+}
+
+a:link, a:visited {
+	color: black;
+}
+
+a:hover {
+	color: #2B6FB6;
+}
+
+#plugintable thead {
+	font-weight: bold;
+	background-color: #DDDDDD;
+}
+
+#plugintable, #about #plugintable td {
+	border: 1px solid #919B9C;
+}
+
+#plugintable {
+	width: 99%;
+	margin-top: 10px;
+}
+
+#pluginscontainer {
+	height: 290px;
+	overflow: auto;
+}
+
+/* MSIE Specific styles */
+
+* html .panel_wrapper {
+	width: 100%;
+}
+
+.column {
+	float: left;
+}
+
+h1, h2, h3, h4 {
+	color: #2B6FB6;
+	margin: 0;
+	padding: 0;
+	padding-top: 5px;
+}
+
+h3 {
+	font-size: 14px;
+}
+
+#link .panel_wrapper, #link div.current {
+	height: 125px;
+}
+
+#image .panel_wrapper, #image div.current {
+	height: 190px;
+}
+
+label.msg { display: none; }
+label.invalid { color: #EE0000; display: inline; }
+input.invalid { border: 1px solid #EE0000; }
+
+/* Disables the advanced tab in the table plugin. */
+/*
+#table #advanced_tab {
+	display: none;
+}
+*/
+
+/* Disables the border input field and label in the table plugin. */
+/*
+#table #border, #table #borderlabel {
+	display: none;
+}
+*/

Added: labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/themes/advanced/css/editor_ui.css
===================================================================
--- labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/themes/advanced/css/editor_ui.css	2007-01-11 22:09:16 UTC (rev 8831)
+++ labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/themes/advanced/css/editor_ui.css	2007-01-11 22:10:56 UTC (rev 8832)
@@ -0,0 +1,97 @@
+/* This file contains the CSS data for the editor UI of TinyMCE instances */
+
+.mceToolbarTop a, .mceToolbarTop a:visited, .mceToolbarTop a:hover, .mceToolbarBottom a, .mceToolbarBottom a:visited, .mceToolbarBottom a:hover {border: 0;  margin: 0;  padding: 0;  background: transparent;}
+.mceSeparatorLine {border: 0; padding: 0; margin-left: 4px; margin-right: 2px;}
+.mceSelectList {font-family: 'MS Sans Serif', sans-serif, Verdana, Arial; font-size: 7pt !important; font-weight: normal; margin-top: 3px; padding: 0; display: inline; vertical-align: top; background-color: #F0F0EE;}
+.mceLabel, .mceLabelDisabled {font-family: 'MS Sans Serif', sans-serif, Verdana, Arial; font-size: 9pt;}
+.mceLabel {color: #000000;}
+.mceLabelDisabled {cursor: text;  color: #999999;}
+.mceEditor {background: #F0F0EE;  border: 1px solid #cccccc;  padding: 0;  margin: 0;}
+.mceEditorArea { font-family: 'MS Sans Serif', sans-serif, Verdana, Arial;  background: #FFFFFF;  padding: 0;  margin: 0;  }
+.mceToolbarTop, .mceToolbarBottom {background: #F0F0EE;  line-height: 1px;  font-size: 1px;}
+.mceToolbarTop {border-bottom: 1px solid #cccccc; padding-bottom: 1px;}
+.mceToolbarBottom {border-top: 1px solid #cccccc;}
+.mceToolbarContainer {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;}
+
+/* Menu button CSS rules */
+
+span.mceMenuButton img, span.mceMenuButtonSelected img {border: 1px solid #F0F0EE;  margin-left: 1px;}
+span.mceMenuButtonSelected img {border: 1px solid #6779AA;  background-color: #B6BDD2;}
+span.mceMenuButtonSelected img.mceMenuButton {border: 1px solid #F0F0EE;  background-color: transparent;}
+span.mceMenuButton img.mceMenuButton, span.mceMenuButtonSelected img.mceMenuButton {border-left: 0;  margin-left: 0;}
+span.mceMenuButton:hover img, span.mceMenuButtonSelected:hover img {border: 1px solid #0A246A;  background-color: #B6BDD2;}
+span.mceMenuButton:hover img.mceMenuButton, span.mceMenuButtonSelected:hover img.mceMenuButton {border-left: 0;}
+span.mceMenuButtonFocus img {border: 1px solid gray;  border-right: 0;  margin-left: 1px;  background-color: #F5F4F2;}
+span.mceMenuButtonFocus img.mceMenuButton {border: 1px solid gray;  border-left: 1px solid #F5F4F2;  margin-left: 0;}
+span.mceMenuHover img {border: 1px solid #0A246A;  background-color: #B6BDD2;}
+span.mceMenuButtonSelected.mceMenuHover img.mceMenuButton {border: 1px solid #0A246A;  background-color: #B6BDD2;  border-left: 0;}
+
+/* Menu */
+
+.mceMenu {position: absolute;  left: 0;  top: 0;  display: none;  z-index: 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;}
+
+/* MSIE 6 specific rules */
+
+* html a.mceButtonNormal img, * html a.mceButtonSelected img, * html a.mceButtonDisabled img {border: 0 !important;  margin-top: 2px;  margin-bottom: 1px;}
+* html a.mceButtonDisabled img {filter:progid:DXImageTransform.Microsoft.Alpha(opacity=30);  border: 0 !important;}
+* html a.mceButtonDisabled {border: 1px solid #F0F0EE !important;}
+* html a.mceButtonNormal, * html a.mceButtonSelected {border: 1px solid #F0F0EE !important;  cursor: default;}
+* html a.mceButtonSelected {border: 1px solid #6779AA !important;  background-color: #D4D5D8;}
+* html a.mceButtonNormal:hover, * html a.mceButtonSelected:hover {border: 1px solid #0A246A !important;  background-color: #B6BDD2;  cursor: default;}
+* html .mceSelectList {margin-top: 2px;}
+* html span.mceMenuButton, * html span.mceMenuButtonFocus {position: relative;  left: 0;  top: 0;}
+* html span.mceMenuButton img, * html span.mceMenuButtonSelected img, * html span.mceMenuButtonFocus img {position: relative;  top: 1px;}
+* html a.mceMoreColors {width: 132px;}
+* html .mceColors td a {width: 10px;  height: 10px;}
+* html .mceColorPreview {margin-left: 2px;  margin-top: 14px;}
+
+/* MSIE 7 specific rules */
+
+*:first-child+html a.mceButtonNormal img, *:first-child+html a.mceButtonSelected img, *:first-child+html a.mceButtonDisabled img {border: 0 !important;  margin-top: 2px;  margin-bottom: 1px;}
+*:first-child+html a.mceButtonDisabled img {filter:progid:DXImageTransform.Microsoft.Alpha(opacity=30);  border: 0 !important;}
+*:first-child+html a.mceButtonDisabled {border: 1px solid #F0F0EE !important;}
+*:first-child+html a.mceButtonNormal, *:first-child+html a.mceButtonSelected {border: 1px solid #F0F0EE !important;  cursor: default;}
+*:first-child+html a.mceButtonSelected {border: 1px solid #6779AA !important;  background-color: #D4D5D8;}
+*:first-child+html a.mceButtonNormal:hover, *:first-child+html a.mceButtonSelected:hover {border: 1px solid #0A246A !important;  background-color: #B6BDD2;  cursor: default;}
+*:first-child+html .mceSelectList {margin-top: 2px;}
+*:first-child+html span.mceMenuButton, *:first-child+html span.mceMenuButtonFocus {position: relative;  left: 0;  top: 0;}
+*:first-child+html span.mceMenuButton img, *:first-child+html span.mceMenuButtonSelected img, *:first-child+html span.mceMenuButtonFocus img {position: relative;  top: 1px;}
+*:first-child+html a.mceMoreColors {width: 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;}

Added: labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/themes/advanced/docs/en/about.htm
===================================================================
--- labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/themes/advanced/docs/en/about.htm	2007-01-11 22:09:16 UTC (rev 8831)
+++ labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/themes/advanced/docs/en/about.htm	2007-01-11 22:10:56 UTC (rev 8832)
@@ -0,0 +1,31 @@
+<html xmlns="http://www.w3.org/1999/xhtml">
+<HEAD>
+<TITLE>About TinyMCE</TITLE>
+<link href="style.css" rel="stylesheet" type="text/css">
+</HEAD>
+
+<BODY>
+
+<table width="100%" border="0" cellpadding="1" cellspacing="3" class="pageheader">
+  <tr> 
+    <td><span class="title">About TinyMCE</span></td>
+    <td align="right"><a href="index.htm"><acronym title="Table of contents">TOC</acronym></a></td>
+  </tr>
+</table>
+<hr noshade>
+<br>
+TinyMCE is a small WYSIWYG editor control for web browsers such as MSIE or Mozilla 
+that enables you to edit HTML contents in a more user friendly way. It has common 
+features that are found in most word processors and should not be difficult to 
+use.<br>
+<br>
+<hr noshade>
+<table width="100%" border="0" cellpadding="1" cellspacing="3" class="pagefooter">
+  <tr> 
+    <td>Go to: <a href="index.htm">Table of contents</a></td>
+    <td align="right"><a href="#">Top</a></td>
+  </tr>
+</table>
+<br>
+</BODY>
+</HTML>

Added: labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/themes/advanced/docs/en/common_buttons.htm
===================================================================
--- labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/themes/advanced/docs/en/common_buttons.htm	2007-01-11 22:09:16 UTC (rev 8831)
+++ labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/themes/advanced/docs/en/common_buttons.htm	2007-01-11 22:10:56 UTC (rev 8832)
@@ -0,0 +1,162 @@
+<html xmlns="http://www.w3.org/1999/xhtml">
+<HEAD>
+<TITLE>Common buttons</TITLE>
+<link href="style.css" rel="stylesheet" type="text/css">
+</HEAD>
+
+<BODY>
+
+<table width="100%" border="0" cellpadding="1" cellspacing="3" class="pageheader">
+  <tr> 
+    <td><span class="title">Common buttons</span></td>
+    <td align="right"><a href="index.htm"><acronym title="Table of contents">TOC</acronym></a></td>
+  </tr>
+</table>
+<hr noshade>
+<br>
+Below is a short description about each button.
+<br>
+<br>
+<table border="1" cellpadding="3" cellspacing="0">
+  <tr>
+    <td><img src="../../images/bold.gif" width="20" height="20" alt="Bold text icon" /></td>
+    <td>Bold text style (Ctrl+B).</td>
+  </tr>
+  <tr>
+    <td><img src="../../images/italic.gif" width="20" height="20" alt="Italic text icon" /></td>
+    <td>Italic text style (Ctrl+I).</td>
+  </tr>
+  <tr>
+    <td><img src="../../images/underline.gif" width="20" height="20" alt="Underline text icon." /></td>
+    <td>Underline text style (Ctrl+U).</td>
+  </tr>
+  <tr>
+    <td><img src="../../images/strikethrough.gif" width="20" height="20" alt="Strikethrough text icon." /></td>
+    <td>Strikethrough text style.</td>
+  </tr>
+  <tr>
+    <td><img src="../../images/justifyleft.gif" width="20" height="20" alt="Align left icon." /></td>
+    <td>Align left.</td>
+  </tr>
+  <tr>
+    <td><img src="../../images/justifycenter.gif" width="20" height="20" alt="Align center icon." /></td>
+    <td>Align center.</td>
+  </tr>
+  <tr>
+    <td><img src="../../images/justifyright.gif" width="20" height="20" alt="Align right icon." /></td>
+    <td>Align right.</td>
+  </tr>
+  <tr>
+    <td><img src="../../images/justifyfull.gif" width="20" height="20" alt="Align full icon." /></td>
+    <td>Align full.</td>
+  </tr>
+  <tr>
+    <td><img src="../../images/bullist.gif" width="20" height="20" alt="Unordered list/bullet list icon." /></td>
+    <td>Unordered list/bullet list.</td>
+  </tr>
+  <tr>
+    <td><img src="../../images/numlist.gif" width="20" height="20" alt="Ordered list/numbered list icon." /></td>
+    <td>Ordered list/numbered list</td>
+  </tr>
+  <tr>
+    <td><img src="../../images/outdent.gif" width="20" height="20" alt="Outdent/decrease indentation icon." /></td>
+    <td>Outdent/decrease indentation.</td>
+  </tr>
+  <tr>
+    <td><img src="../../images/indent.gif" width="20" height="20" alt="Indent/increase indentation icon." /></td>
+    <td>Indent/increase indentation.</td>
+  </tr>
+  <tr>
+    <td><img src="../../images/undo.gif" width="20" height="20" alt="Undo the last operation." /></td>
+    <td>Undo the last operation (Ctrl+Z).</td>
+  </tr>
+  <tr>
+    <td><img src="../../images/redo.gif" width="20" height="20" alt="Redo the last operation icon." /></td>
+    <td>Redo the last operation (Ctrl+Y).</td>
+  </tr>
+  <tr>
+    <td><img src="../../images/link.gif" width="20" height="20" alt="Insert a new link icon." /></td>
+    <td>Insert a new link, read more about this function in the <a href="insert_link_button.htm">Insert 
+      link section</a>.</td>
+  </tr>
+  <tr>
+    <td><img src="../../images/unlink.gif" width="20" height="20" alt="Unlinks the current selection icon." /></td>
+    <td>Unlinks the current selection/removes all selected links.</td>
+  </tr>
+  <tr>
+    <td><img src="../../images/anchor.gif" width="20" height="20" alt="Insert a new anchor icon." /></td>
+    <td>Insert a new anchor, read more about this function in the <a href="insert_anchor_button.htm">Insert anchor section.</a></td>
+  </tr>
+  <tr>
+    <td><img src="../../images/image.gif" width="20" height="20" alt="Insert a new image icon." /></td>
+    <td>Insert a new image, read more about this function in the <a href="insert_image_button.htm">Insert 
+      image section</a>.</td>
+  </tr>
+  <tr>
+    <td><img src="../../images/cleanup.gif" width="20" height="20" alt="Cleanup code icon." /></td>
+    <td>Cleanup code/Removes unwanted formating. This function is useful when 
+      you copy contents from for example a office product.</td>
+  </tr>
+  <tr>
+    <td><img src="../../images/help.gif" width="20" height="20" alt="Show help icon." /></td>
+    <td>Shows this help window.</td>
+  </tr>
+  <tr>
+    <td><img src="../../images/code.gif" width="20" height="20" alt="Source code editor icon." /></td>
+    <td>Opens HTML source code editor. </td>
+  </tr>
+  <tr>
+    <td><img src="../../../../plugins/table/images/table.gif" width="20" height="20" alt="Insert table icon." /></td>
+    <td>Inserts a new table at the current location. </td>
+  </tr>
+  <tr>
+    <td><img src="../../../../plugins/table/images/table_insert_row_before.gif" width="20" height="20" alt="Adds a row above icon." /></td>
+    <td>Adds a row above the current one. </td>
+  </tr>
+  <tr>
+    <td><img src="../../../../plugins/table/images/table_insert_row_after.gif" width="20" height="20" alt="Adds a row under icon." /></td>
+    <td>Adds a row under the current one. </td>
+  </tr>
+  <tr>
+    <td><img src="../../../../plugins/table/images/table_delete_row.gif" width="20" height="20" alt="Remove row icon." /></td>
+    <td>Removes the row. </td>
+  </tr>
+  <tr>
+    <td><img src="../../../../plugins/table/images/table_insert_col_before.gif" width="20" height="20" alt="Add column before icon." /></td>
+    <td>Adds a column before the current one.</td>
+  </tr>
+  <tr>
+    <td><img src="../../../../plugins/table/images/table_insert_col_after.gif" width="20" height="20" alt="Add column after icon." /></td>
+    <td>Adds a column after the current one.</td>
+  </tr>
+  <tr>
+    <td><img src="../../../../plugins/table/images/table_delete_col.gif" width="20" height="20" alt="Remove column icon." /></td>
+    <td>Removes the current column.</td>
+  </tr>
+  <tr>
+    <td><img src="../../images/hr.gif" width="20" height="20" alt="Insert horizontal ruler icon." /></td>
+    <td>Inserts a new horizontal ruler </td>
+  </tr>
+  <tr>
+    <td><img src="../../images/removeformat.gif" width="20" height="20" alt="Remove formatting icon." /></td>
+    <td>Removes formatting from the selection. </td>
+  </tr>
+  <tr>
+    <td><img src="../../images/sub.gif" width="20" height="20" alt="Subscript icon." /></td>
+    <td>Makes the selection to be subscript. </td>
+  </tr>
+  <tr>
+    <td><img src="../../images/sup.gif" width="20" height="20" alt="Superscript icon." /></td>
+    <td>Makes the selection to be superscripted. </td>
+  </tr>
+</table>
+<br>
+<hr noshade="noshade" />
+<table width="100%" border="0" cellpadding="1" cellspacing="3" class="pagefooter">
+  <tr> 
+    <td>Go to: <a href="index.htm">Table of contents</a></td>
+    <td align="right"><a href="#">Top</a></td>
+  </tr>
+</table>
+</BODY>
+</HTML>

Added: labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/themes/advanced/docs/en/create_accessible_content.htm
===================================================================
--- labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/themes/advanced/docs/en/create_accessible_content.htm	2007-01-11 22:09:16 UTC (rev 8831)
+++ labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/themes/advanced/docs/en/create_accessible_content.htm	2007-01-11 22:10:56 UTC (rev 8832)
@@ -0,0 +1,45 @@
+<html xmlns="http://www.w3.org/1999/xhtml">
+<HEAD>
+<TITLE>Insert table button</TITLE>
+<link href="style.css" rel="stylesheet" type="text/css">
+</HEAD>
+
+<BODY>
+
+<table width="100%" border="0" cellpadding="1" cellspacing="3" class="pageheader">
+  <tr> 
+    <td><span class="title">Create accessible content</span></td>
+    <td align="right"><a href="index.htm"><acronym title="Table of contents">TOC</acronym></a></td>
+  </tr>
+</table>
+<hr noshade>
+<p>TinyMCE can create HTML content that will be accessible to all users, including those with disabilities using assistive technologies, as well as those using text-based browsers, or those browsing the Web with images turned off. </p>
+
+<p><strong>Things you can do to make your content accessible:</strong></p>
+<ol>
+<li><strong>Include an Image Description:</strong> Blind users, or others who are unable to view images, will rely on the Image Description (or Alt text) to take the place of the image. If an image contains no meaning, such as a decoration or a spacer image, leave the Image Description empty. TinyMCE will then insert an empty Alt text attribute that will force assistive technologies to ignore the image. <br /><br /></li>
+
+<li> <strong>Add Scope to data table header cells:</strong> In the table cell editor dialog window, choose a Scope when creating Header cells so the column or row label in that cell becomes explicitely associated with its data cells. Table cell headers will then be announced with each data cell, making it easier for blind users using a screen reader to understand what the content of each cell represents. <br /><br /></li>
+
+<li><strong> Structure content with properly nested headings:</strong> In the format selection menu choose Heading 1 to Heading 6 to represent headings in your content,  rather than using other font formating options. Blind users using a screen reader can then extract the headings from the page to generate a summary of the content it contains, and use those headings to navigate quickly to subsections within the page.<br /><br /></li>
+
+<li><strong> Include alternate content:</strong> Create an alternate page for non-HTML content such as Flash, Java applets, or  embedded movies. This might be a static image, with a description of the image, and a description of the content that would have appeared in its place. An alternate HTML page could also be created, and a link to it included next to the non-HTML object. This will ensure that the content will be accessible to users of assistive technologies that can not view or play the content, and ensure the content will be available to those who do not have the appropriate plugin or helper application installed.<br /><br /></li>
+
+<li><strong> Check accessbility: </strong> When the AChecker plugin is installed with TinyMCE, click on the Check Accessibility button to generate a report of potential accessibility problems.<br /><br /></li>
+
+</ol>
+
+<p>See the <a href="http://checker.atrc.utoronto.ca" target="_new">AChecker Web Site</a> for further details about creating content that will be accessible to all users.<br />
+</p>
+
+<hr noshade>
+<table width="100%" border="0" cellpadding="1" cellspacing="3" class="pagefooter">
+  <tr> 
+    <td>Go to: <a href="index.htm">Table of contents</a></td>
+    <td align="right"><a href="#">Top</a></td>
+  </tr>
+</table>
+
+<br>
+</BODY>
+</HTML>

Added: labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/themes/advanced/docs/en/images/insert_anchor_window.gif
===================================================================
(Binary files differ)


Property changes on: labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/themes/advanced/docs/en/images/insert_anchor_window.gif
___________________________________________________________________
Name: svn:mime-type
   + application/octet-stream

Added: labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/themes/advanced/docs/en/images/insert_image_window.gif
===================================================================
(Binary files differ)


Property changes on: labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/themes/advanced/docs/en/images/insert_image_window.gif
___________________________________________________________________
Name: svn:mime-type
   + application/octet-stream

Added: labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/themes/advanced/docs/en/images/insert_link_window.gif
===================================================================
(Binary files differ)


Property changes on: labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/themes/advanced/docs/en/images/insert_link_window.gif
___________________________________________________________________
Name: svn:mime-type
   + application/octet-stream

Added: labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/themes/advanced/docs/en/images/insert_table_window.gif
===================================================================
(Binary files differ)


Property changes on: labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/themes/advanced/docs/en/images/insert_table_window.gif
___________________________________________________________________
Name: svn:mime-type
   + application/octet-stream

Added: labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/themes/advanced/docs/en/index.htm
===================================================================
--- labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/themes/advanced/docs/en/index.htm	2007-01-11 22:09:16 UTC (rev 8831)
+++ labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/themes/advanced/docs/en/index.htm	2007-01-11 22:10:56 UTC (rev 8832)
@@ -0,0 +1,27 @@
+<html xmlns="http://www.w3.org/1999/xhtml">
+<HEAD>
+<TITLE>Help Index</TITLE>
+<link href="style.css" rel="stylesheet" type="text/css">
+</HEAD>
+<BODY onload="window.focus();">
+<table width="100%" border="0" cellpadding="1" cellspacing="3" class="pageheader">
+  <tr> 
+    <td><span class="title">Table of contents</span></td>
+    <td align="right">&nbsp;</td>
+  </tr>
+</table>
+<hr noshade>
+<br>
+Click the links below to go to the different help sections. 
+<ul class="toc_ul">
+  <li class="toc_li"><a href="about.htm">About TinyMCE</a></li>
+  <li class="toc_li"><a href="common_buttons.htm">Common buttons</a></li>
+  <li class="toc_li"><a href="insert_image_button.htm">Insert image button</a></li>
+  <li class="toc_li"><a href="insert_link_button.htm">Insert link button</a></li>
+  <li class="toc_li"><a href="insert_anchor_button.htm">Insert anchor button</a></li>
+  <li class="toc_li"><a href="insert_table_button.htm">Insert table button</a></li>
+ <li class="toc_li"><a href="create_accessible_content.htm">Create accessible content</a></li>
+</ul>
+<hr noshade>
+</BODY>
+</HTML>

Added: labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/themes/advanced/docs/en/insert_anchor_button.htm
===================================================================
--- labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/themes/advanced/docs/en/insert_anchor_button.htm	2007-01-11 22:09:16 UTC (rev 8831)
+++ labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/themes/advanced/docs/en/insert_anchor_button.htm	2007-01-11 22:10:56 UTC (rev 8832)
@@ -0,0 +1,32 @@
+<html xmlns="http://www.w3.org/1999/xhtml">
+<HEAD>
+<TITLE>Insert anchor button</TITLE>
+<link href="style.css" rel="stylesheet" type="text/css">
+</HEAD>
+
+<BODY>
+
+<table width="100%" border="0" cellpadding="1" cellspacing="3" class="pageheader">
+  <tr> 
+    <td><span class="title">Insert anchor button</span></td>
+    <td align="right"><a href="index.htm"><acronym title="Table of contents">TOC</acronym></a></td>
+  </tr>
+</table>
+<hr noshade>
+<br>
+This button opens a new window with the insert/edit anchor function.<br>
+<br>
+<img src="images/insert_anchor_window.gif" width="330" height="139" alt="Anchor dialog/window" /><br>
+<br>
+There are one field in this window, this is where you enter the name of you anchor point. Remember the anchor name needs to be unique. <br>
+<br>
+<hr noshade>
+<table width="100%" border="0" cellpadding="1" cellspacing="3" class="pagefooter">
+  <tr> 
+    <td>Go to: <a href="index.htm">Table of contents</a></td>
+    <td align="right"><a href="#">Top</a></td>
+  </tr>
+</table>
+<br>
+</BODY>
+</HTML>

Added: labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/themes/advanced/docs/en/insert_image_button.htm
===================================================================
--- labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/themes/advanced/docs/en/insert_image_button.htm	2007-01-11 22:09:16 UTC (rev 8831)
+++ labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/themes/advanced/docs/en/insert_image_button.htm	2007-01-11 22:10:56 UTC (rev 8832)
@@ -0,0 +1,65 @@
+<html xmlns="http://www.w3.org/1999/xhtml">
+<HEAD>
+<TITLE>Insert image button</TITLE>
+<link href="style.css" rel="stylesheet" type="text/css">
+</HEAD>
+
+<BODY>
+
+<table width="100%" border="0" cellpadding="1" cellspacing="3" class="pageheader">
+  <tr> 
+    <td><span class="title">Insert image button</span></td>
+    <td align="right"><a href="index.htm"><acronym title="Table of contents">TOC</acronym></a></td>
+  </tr>
+</table>
+<hr noshade>
+<br>
+The insert image button opens the window shown below.<br>
+<br>
+<img src="images/insert_image_window.gif" alt="Insert image dialog/window" /><br>
+<br>
+You simply enter a URL to the image you want to link to and enter a image description, 
+this is then displayed as an alternative text descripton of the image on the page.<br>
+<br>
+<strong>Field descriptions:</strong><br>
+<table border="1" cellspacing="0">
+  <tr>
+    <td width="150"><strong>Image URL </strong></td>
+    <td>URL/path to the image.</td>
+  </tr>
+  <tr>
+    <td width="150"><strong>Image description </strong></td>
+    <td>Alternative description of image contents.</td>
+  </tr>
+  <tr>
+    <td><strong>Dimentions</strong></td>
+    <td>Image width/height. </td>
+  </tr>
+  <tr>
+    <td><strong>Alignment</strong></td>
+    <td>Image alignment, useful when wrapping text around images.</td>
+  </tr>
+  <tr>
+    <td><strong>Border</strong></td>
+    <td>Border thickness. </td>
+  </tr>
+  <tr>
+    <td><strong>VSpace</strong></td>
+    <td>Vertical space, useful when wrapping text around images.</td>
+  </tr>
+  <tr>
+    <td><strong>HSpace</strong></td>
+    <td>Horizontal space, useful when wrapping text around images.</td>
+  </tr>
+</table>
+<br>
+<hr noshade>
+<table width="100%" border="0" cellpadding="1" cellspacing="3" class="pagefooter">
+  <tr> 
+    <td>Go to: <a href="index.htm">Table of contents</a></td>
+    <td align="right"><a href="#">Top</a></td>
+  </tr>
+</table>
+<br>
+</BODY>
+</HTML>

Added: labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/themes/advanced/docs/en/insert_link_button.htm
===================================================================
--- labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/themes/advanced/docs/en/insert_link_button.htm	2007-01-11 22:09:16 UTC (rev 8831)
+++ labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/themes/advanced/docs/en/insert_link_button.htm	2007-01-11 22:10:56 UTC (rev 8832)
@@ -0,0 +1,33 @@
+<html xmlns="http://www.w3.org/1999/xhtml">
+<HEAD>
+<TITLE>Insert link button</TITLE>
+<link href="style.css" rel="stylesheet" type="text/css">
+</HEAD>
+
+<BODY>
+
+<table width="100%" border="0" cellpadding="1" cellspacing="3" class="pageheader">
+  <tr> 
+    <td><span class="title">Insert link button</span></td>
+    <td align="right"><a href="index.htm"><acronym title="Table of contents">TOC</acronym></a></td>
+  </tr>
+</table>
+<hr noshade>
+<br>
+This button opens a new window with the insert/edit link function.<br>
+<br>
+<img src="images/insert_link_window.gif" width="330" height="159" alt="Insert link dialog/window" /><br>
+<br>
+There are two fields in this window the first one &quot;Link URL&quot; is the 
+URL of the link. The target enables you to select how the link is to be opened.<br>
+<br>
+<hr noshade>
+<table width="100%" border="0" cellpadding="1" cellspacing="3" class="pagefooter">
+  <tr> 
+    <td>Go to: <a href="index.htm">Table of contents</a></td>
+    <td align="right"><a href="#">Top</a></td>
+  </tr>
+</table>
+<br>
+</BODY>
+</HTML>

Added: labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/themes/advanced/docs/en/insert_table_button.htm
===================================================================
--- labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/themes/advanced/docs/en/insert_table_button.htm	2007-01-11 22:09:16 UTC (rev 8831)
+++ labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/themes/advanced/docs/en/insert_table_button.htm	2007-01-11 22:10:56 UTC (rev 8832)
@@ -0,0 +1,71 @@
+<html xmlns="http://www.w3.org/1999/xhtml">
+<HEAD>
+<TITLE>Insert table button</TITLE>
+<link href="style.css" rel="stylesheet" type="text/css">
+</HEAD>
+
+<BODY>
+
+<table width="100%" border="0" cellpadding="1" cellspacing="3" class="pageheader">
+  <tr> 
+    <td><span class="title">Insert table button</span></td>
+    <td align="right"><a href="index.htm"><acronym title="Table of contents">TOC</acronym></a></td>
+  </tr>
+</table>
+<hr noshade>
+<br>
+The insert table button opens the window shown below. This action enables you to create tables. <br>
+<br>
+<img src="images/insert_table_window.gif" width="340" height="229" alt="Image of table window" /><br>
+<br>
+<strong>Field descriptions:</strong><br>
+<table border="1" cellspacing="0">
+  <tr>
+    <td width="150"><strong>Columns</strong></td>
+    <td>Number of columns in the  table. </td>
+  </tr>
+  <tr>
+    <td width="150"><strong>Rows</strong></td>
+    <td>Number of rows in the new table.</td>
+  </tr>
+  <tr>
+    <td><strong>Cellpadding</strong></td>
+    <td>Cellpadding of the table . </td>
+  </tr>
+  <tr>
+    <td><strong>Cellspacing</strong></td>
+    <td>Cellspacing of the table .</td>
+  </tr>
+  <tr>
+    <td><strong>Alignment</strong></td>
+    <td>Table alignment . </td>
+  </tr>
+  <tr>
+    <td><strong>Border</strong></td>
+    <td>Border thinkness of table.</td>
+  </tr>
+  <tr>
+    <td><strong>Width</strong></td>
+    <td>Width in pixels of table .</td>
+  </tr>
+  <tr>
+    <td><strong>Height</strong></td>
+    <td>Height in pixels of table.</td>
+  </tr>
+  <tr>
+    <td><strong>Class</strong></td>
+    <td>Style or CSS class of table.</td>
+  </tr>
+</table>
+<br>
+<br>
+<hr noshade>
+<table width="100%" border="0" cellpadding="1" cellspacing="3" class="pagefooter">
+  <tr> 
+    <td>Go to: <a href="index.htm">Table of contents</a></td>
+    <td align="right"><a href="#">Top</a></td>
+  </tr>
+</table>
+<br>
+</BODY>
+</HTML>

Added: labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/themes/advanced/docs/en/style.css
===================================================================
--- labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/themes/advanced/docs/en/style.css	2007-01-11 22:09:16 UTC (rev 8831)
+++ labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/themes/advanced/docs/en/style.css	2007-01-11 22:10:56 UTC (rev 8832)
@@ -0,0 +1,28 @@
+body { background-color: #FFFFFF; }
+body, td, .content { font-family: Verdana, Arial, helvetica, sans-serif; font-size: 12px; }
+.title { font-family: Verdana, Arial, helvetica, sans-serif; font-size: 16px; font-weight: bold; }
+.subtitle { font-size: 12px; font-weight: bold; }
+
+.toc_ul, .toc_li { margin-left: 8px; line-height: 16px; }
+.step_ol, .step_li { margin-left: 11px; line-height: 16px; }
+img { border: #000000 solid 1px; }
+
+a:visited { color: #666666; text-decoration: underline; }
+a:active { color: #666666; text-decoration: underline; }
+a:hover { color: #666666; text-decoration: underline; }
+a { color: #666666; text-decoration: underline; }
+
+.pageheader { border: #E0E0E0 solid 1px; }
+.pagefooter { border: #E0E0E0 solid 1px; }
+.sample { background-color: #FFFFFF; border: #000000 solid 1px; }
+.samplecontent { font-size: 10px; }
+
+.code { background-color: #FFFFFF; border: #000000 solid 1px; }
+.codecontent { font-size: 10px; }
+.codecontent a:visited { color: #666666; text-decoration: none; font-weight: bold }
+.codecontent a:active { color: #666666; text-decoration: none; font-weight: bold  }
+.codecontent a:hover { color: #666666; text-decoration: none; font-weight: bold  }
+.codecontent a { color: #666666; text-decoration: none; font-weight: bold  }
+
+hr { height: 1px; }
+

Modified: labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/themes/advanced/editor_template.js
===================================================================
--- labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/themes/advanced/editor_template.js	2007-01-11 22:09:16 UTC (rev 8831)
+++ labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/themes/advanced/editor_template.js	2007-01-11 22:10:56 UTC (rev 8832)
@@ -1,20 +1 @@
-/* Import theme specific language pack */
- tinyMCE.importThemeLanguagePack();var TinyMCE_advanced_autoImportCSSClasses=true;var TinyMCE_advanced_foreColor="#000000";var TinyMCE_advanced_anchorName="";var TinyMCE_advanced_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','left.gif','{$lang_justifyleft_desc}','JustifyLeft'],['justifycenter','center.gif','{$lang_justifycenter_desc}','JustifyCenter'],['justifyright','right.gif','{$lang_justifyright_desc}','JustifyRight'],['justifyfull','full.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'],['table','table.gif','{$lang_theme_table_desc}','mceInsertTable',true],['row_before','table_insert_row_before.gif','{$lang_theme_table_insert_row_before_desc}','mceTableInsertRowBefore'],['row_after','table_insert_row_after.gif','{$lang_theme_table_insert_row_after_desc}','mceTableInsertRowAfter'],['delete_row','table_delete_row.gif','{$lang_theme_table_delete_row_desc}','mceTableDeleteRow'],['!
 col_before','table_insert_col_before.gif','{$lang_theme_table_insert_c
ol_before_desc}','mceTableInsertColBefore'],['col_after','table_insert_col_after.gif','{$lang_theme_table_insert_col_after_desc}','mceTableInsertColAfter'],['delete_col','table_delete_col.gif','{$lang_theme_table_delete_col_desc}','mceTableDeleteCol'],['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'],['charmap','charmap.gif','{$lang_theme_charmap_desc}','mceCharMap'],['visualaid','visualaid.gif','{$lang_theme_visualaid_desc}','mceToggleVisualAid'],['anchor','anchor.gif','{$lang_theme_anchor_desc}','mceInsertAnchor']];function TinyMCE_advanced_getControlHTML(button_name){for(var i=0;i<TinyMCE_advanced_buttons.length;i++){var but=TinyMCE_advanced_buttons[i];if(but[0]==button_name)return '<img id=!
 "{$editor_id}_'+but[0]+'" src="{$themeurl}/images/'+but[1]+'" title="'+but[2]+'" width="20" height="20" class="mceButtonNormal" onmouseover="tinyMCE.switchClass(this,\'mceButtonOver\');" onmouseout="tinyMCE.restoreClass(this);" onmousedown="tinyMCE.restoreAndSwitchClass(this,\'mceButtonDown\');" onclick="tinyMCE.execInstanceCommand(\'{$editor_id}\',\''+but[3]+'\', '+(but.length>4?but[4]:false)+(but.length>5?', \''+but[5]+'\'':'')+')">';}switch(button_name){case "formatselect":var html='<select id="{$editor_id}_formatSelect" name="{$editor_id}_formatSelect" 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','{$lan!
 g_theme_h3}'],['h4','{$lang_theme_h4}'],['h5','{$lang_theme_h5}'],['h6
','{$lang_theme_h6}']];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_advanced_setupCSSClasses(\'{$editor_id}\');" name="{$editor_id}_styleSelect" onchange="tinyMCE.execInstanceCommand(\'{$editor_id}\',\'mceSetCSSClass\',false,this.options[this.selectedIndex].value);" class="mceSelectList">{$style_select_options}</select>';case "fontselect":return '<select id="{$editor_id}_fontNameSelect" name="{$editor_id}_fontNameSelect" onchange="tinyMCE.execInstanceCommand(\'{$editor_id}\',\'FontName\',false,this.options[this.selectedIndex].value);" class="mceSelectList">\
-					<option value="">{$lang_theme_fontdefault}</option>\
-					<option value="arial,helvetica,sans-serif">Arial</option>\
-					<option value="times new roman,times,serif">Times New Roman</option>\
-					<option value="verdana,arial,helvetica,sans-serif">Verdana</option>\
-					<option value="courier new,courier,monospace">Courier</option>\
-					<option value="georgia,times new roman,times,serif">Georgia</option>\
-					<option value="tahoma,arial,helvetica,sans-serif">Tahoma</option>\
-					</select>';case "fontsizeselect":return '<select id="{$editor_id}_fontSizeSelect" name="{$editor_id}_fontSizeSelect" onchange="tinyMCE.execInstanceCommand(\'{$editor_id}\',\'FontSize\',false,this.options[this.selectedIndex].value);" class="mceSelectList">\
-					<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 "separator":return '<img src="{$themeurl}/images/spacer.gif" width="1" height="15" class="mceSeparatorLine">';case "spacer":return '<img src="{$themeurl}/images/spacer.gif" width="1" height="15" border="0" class="mceSeparatorLine" style="vertical-align: middle" />';case "rowseparator":return '<br />';}return "";}function TinyMCE_advanced_execCommand(editor_id,element,command,user_interface,value){switch(command){case "mceForeColor":var template=new Array();var inputColor=TinyMCE_advanced_foreColor;if(!inputColor)inputColor="#000000";template['file']='color_picker.htm';template['width']=210;template['height']=200;tinyMCE.openWindow(template,{editor_id:editor_id,command:"forecolor",input_color:inputColor});return true;case "mceCodeEditor":var template=new Array();template['file']='source_editor.htm';template['width']=tinyMCE.getParam("theme_advanced_source_editor_width",500);template['height']=tinyMCE.getParam("theme_advanced_source_editor_height",400);ti!
 nyMCE.openWindow(template,{editor_id:editor_id,resizable:"yes",scrollbars:"no"});return true;case "mceCharMap":var template=new Array();template['file']='charmap.htm';template['width']=550;template['height']=280;tinyMCE.openWindow(template,{editor_id:editor_id});return true;case "mceInsertAnchor":var template=new Array();template['file']='anchor.htm';template['width']=320;template['height']=130;tinyMCE.openWindow(template,{editor_id:editor_id,name:TinyMCE_advanced_anchorName,action:(TinyMCE_advanced_anchorName==""?"insert":"update")});return true;}return false;}function TinyMCE_advanced_getEditorTemplate(settings){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 toolbarHTM
L="";var toolbarLocation=tinyMCE.getParam("theme_advanced_toolbar_location","bottom");var buttonNamesRow1=tinyMCE.getParam("theme_advanced_buttons1","bold,italic,underline,strikethrough,separator,justifyleft,justifycenter,justifyright,justifyfull,separator,styleselect,formatselect",true,',');buttonNamesRow1=removeFromArray(buttonNamesRow1,tinyMCE.getParam("theme_advanced_disable","",true,','));buttonNamesRow1=addToArray(buttonNamesRow1,tinyMCE.getParam("theme_advanced_buttons1_add","",true,','));buttonNamesRow1=addToArray(tinyMCE.getParam("theme_advanced_buttons1_add_before","",true,','),buttonNamesRow1);for(var i=0;i<buttonNamesRow1.length;i++)toolbarHTML+=tinyMCE.getControlHTML(buttonNamesRow1[i]);if(buttonNamesRow1.length>0)toolbarHTML+="<br />";var buttonNamesRow2=tinyMCE.getParam("theme_advanced_buttons2","bullist,numlist,separator,outdent,indent,separator,undo,redo,separator,link,unlink,anchor,image,cleanup,help,code",true,',');buttonNamesRow2=removeFromArray(buttonNam!
 esRow2,tinyMCE.getParam("theme_advanced_disable","",true,','));buttonNamesRow2=addToArray(buttonNamesRow2,tinyMCE.getParam("theme_advanced_buttons2_add","",true,','));buttonNamesRow2=addToArray(tinyMCE.getParam("theme_advanced_buttons2_add_before","",true,','),buttonNamesRow2);for(var i=0;i<buttonNamesRow2.length;i++)toolbarHTML+=tinyMCE.getControlHTML(buttonNamesRow2[i]);if(buttonNamesRow2.length>0)toolbarHTML+="<br />";var buttonNamesRow3=tinyMCE.getParam("theme_advanced_buttons3","table,separator,row_before,row_after,delete_row,separator,col_before,col_after,delete_col,separator,hr,removeformat,visualaid,separator,sub,sup,separator,charmap",true,',');buttonNamesRow3=removeFromArray(buttonNamesRow3,tinyMCE.getParam("theme_advanced_disable","",true,','));buttonNamesRow3=addToArray(buttonNamesRow3,tinyMCE.getParam("theme_advanced_buttons3_add","",true,','));buttonNamesRow3=addToArray(tinyMCE.getParam("theme_advanced_buttons3_add_before","",true,','),buttonNamesRow3);for(var!
  i=0;i<buttonNamesRow3.length;i++)toolbarHTML+=tinyMCE.getControlHTML(
buttonNamesRow3[i]);template['html']='<table class="mceEditor" border="0" cellpadding="0" cellspacing="0" width="{$width}" height="{$height}">';if(toolbarLocation=="top")template['html']+='<tr><td class="mceToolbarTop" align="center" height="1">'+toolbarHTML+'</td></tr>';template['html']+='<tr><td align="center">\
-		<span id="{$editor_id}"></span>\
-		</td></tr>';if(toolbarLocation=="bottom")template['html']+='<tr><td class="mceToolbarBottom" align="center" height="1">'+toolbarHTML+'</td></tr>';template['html']+='</table>';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_advanced_autoImportCSSClasses=false;}template['html']=tinyMCE.replaceVar(template['html'],'style_select_options',styleSelectHTML);template['delta_width']=0;template['delta_height']=-40;return template;}function TinyMCE_advanced_getInsertLinkTemplate(){var template=new Array();template['file']='link.htm';template['width']=320;template['height']=170;template['width']+=tinyMCE.getLang('lang_insert_link_delta_width',0);template['height']+=tinyMCE.getLa!
 ng('lang_insert_link_delta_height',0);return template;}function TinyMCE_advanced_getInsertImageTemplate(){var template=new Array();template['file']='image.htm';template['width']=340;template['height']=280;template['width']+=tinyMCE.getLang('lang_insert_image_delta_width',0);template['height']+=tinyMCE.getLang('lang_insert_image_delta_height',0);return template;}function TinyMCE_advanced_getInsertTableTemplate(settings){var template=new Array();template['file']='table.htm';template['width']=340;template['height']=220;template['width']+=tinyMCE.getLang('lang_insert_table_delta_width',0);template['height']+=tinyMCE.getLang('lang_insert_table_delta_height',0);return template;}function TinyMCE_advanced_handleNodeChange(editor_id,node,undo_index,undo_levels,visual_aid,any_selection){function selectByValue(select_elm,value){if(select_elm){for(var i=0;i<select_elm.options.length;i++){if(select_elm.options[i].value==value){select_elm.selectedIndex=i;return true;}}}return false;}func!
 tion getAttrib(elm,name){return elm.getAttribute(name)?elm.getAttribut
e(name):"";}var colorElm=tinyMCE.getParentElement(node,"font","color");if(colorElm)TinyMCE_advanced_foreColor=""+colorElm.color.toUpperCase();tinyMCE.switchClassSticky(editor_id+'_justifyleft','mceButtonNormal');tinyMCE.switchClassSticky(editor_id+'_justifyright','mceButtonNormal');tinyMCE.switchClassSticky(editor_id+'_justifycenter','mceButtonNormal');tinyMCE.switchClassSticky(editor_id+'_justifyfull','mceButtonNormal');tinyMCE.switchClassSticky(editor_id+'_bold','mceButtonNormal');tinyMCE.switchClassSticky(editor_id+'_italic','mceButtonNormal');tinyMCE.switchClassSticky(editor_id+'_underline','mceButtonNormal');tinyMCE.switchClassSticky(editor_id+'_strikethrough','mceButtonNormal');tinyMCE.switchClassSticky(editor_id+'_bullist','mceButtonNormal');tinyMCE.switchClassSticky(editor_id+'_numlist','mceButtonNormal');tinyMCE.switchClassSticky(editor_id+'_sub','mceButtonNormal');tinyMCE.switchClassSticky(editor_id+'_sup','mceButtonNormal');tinyMCE.switchClassSticky(editor_id+'_ta!
 ble','mceButtonNormal');tinyMCE.switchClassSticky(editor_id+'_anchor','mceButtonNormal');tinyMCE.switchClassSticky(editor_id+'_link','mceButtonDisabled',true);tinyMCE.switchClassSticky(editor_id+'_unlink','mceButtonDisabled',true);tinyMCE.switchClassSticky(editor_id+'_row_before','mceButtonDisabled',true);tinyMCE.switchClassSticky(editor_id+'_row_after','mceButtonDisabled',true);tinyMCE.switchClassSticky(editor_id+'_delete_row','mceButtonDisabled',true);tinyMCE.switchClassSticky(editor_id+'_col_before','mceButtonDisabled',true);tinyMCE.switchClassSticky(editor_id+'_col_after','mceButtonDisabled',true);tinyMCE.switchClassSticky(editor_id+'_delete_col','mceButtonDisabled',true);tinyMCE.switchClassSticky(editor_id+'_outdent','mceButtonDisabled',true);tinyMCE.switchClassSticky(editor_id+'_image','mceButtonNormal');tinyMCE.switchClassSticky(editor_id+'_hr','mceButtonNormal');var anchorName=tinyMCE.getParentElement(node,"a","name");TinyMCE_advanced_anchorName="";if(anchorName){Ti!
 nyMCE_advanced_anchorName=anchorName.getAttribute("name");tinyMCE.swit
chClassSticky(editor_id+'_anchor','mceButtonSelected');}var anchorLink=tinyMCE.getParentElement(node,"a","href");if(anchorLink||any_selection){tinyMCE.switchClassSticky(editor_id+'_link',anchorLink?'mceButtonSelected':'mceButtonNormal',false);tinyMCE.switchClassSticky(editor_id+'_unlink',anchorLink?'mceButtonSelected':'mceButtonNormal',false);}tinyMCE.switchClassSticky(editor_id+'_visualaid',visual_aid?'mceButtonSelected':'mceButtonNormal',false);if(undo_levels!=-1){tinyMCE.switchClassSticky(editor_id+'_undo','mceButtonDisabled',true);tinyMCE.switchClassSticky(editor_id+'_redo','mceButtonDisabled',true);}if(tinyMCE.getParentElement(node,"td")){tinyMCE.switchClassSticky(editor_id+'_row_before','mceButtonNormal',false);tinyMCE.switchClassSticky(editor_id+'_row_after','mceButtonNormal',false);tinyMCE.switchClassSticky(editor_id+'_delete_row','mceButtonNormal',false);tinyMCE.switchClassSticky(editor_id+'_col_before','mceButtonNormal',false);tinyMCE.switchClassSticky(editor_id+'_!
 col_after','mceButtonNormal',false);tinyMCE.switchClassSticky(editor_id+'_delete_col','mceButtonNormal',false);}if(tinyMCE.getParentElement(node,"table"))tinyMCE.switchClassSticky(editor_id+'_table','mceButtonSelected');if(tinyMCE.getParentElement(node,"li,blockquote"))tinyMCE.switchClassSticky(editor_id+'_outdent','mceButtonNormal',false);if(undo_index!=-1&&(undo_index<undo_levels-1&&undo_levels>0))tinyMCE.switchClassSticky(editor_id+'_redo','mceButtonNormal',false);if(undo_index!=-1&&(undo_index>0&&undo_levels>0))tinyMCE.switchClassSticky(editor_id+'_undo','mceButtonNormal',false);var selectElm=document.getElementById(editor_id+"_styleSelect");if(selectElm){TinyMCE_advanced_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=classNode.parentNode));selectElm.selecte!
 dIndex=index;}var selectElm=document.getElementById(editor_id+"_format
Select");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,"<p>");}var selectElm=document.getElementById(editor_id+"_fontNameSelect");if(selectElm){var elm=tinyMCE.getParentElement(node,"font","face");if(elm)selectByValue(selectElm,elm.getAttribute("face"));else selectByValue(selectElm,"");}var selectElm=document.getElementById(editor_id+"_fontSizeSelect");if(selectElm){var elm=tinyMCE.getParentElement(node,"font","size");if(elm)selectByValue(selectElm,elm.getAttribute("size"));else selectByValue(selectElm,"1");}alignNode=node;breakOut=false;do{if(!alignNode.getAttribute||!alignNode.getAttribute('align'))continue;switch(alignNode.getAttribute('align').toLowerCase()){case "left":tinyMCE.switchClassSticky(editor_id+'_justifyleft','mceButtonSelected');breakOut=true;break;case "right":tinyMCE.switchClassSticky(editor_id+'_justifyright','mceBu!
 ttonSelected');breakOut=true;break;case "middle":case "center":tinyMCE.switchClassSticky(editor_id+'_justifycenter','mceButtonSelected');breakOut=true;break;case "justify":tinyMCE.switchClassSticky(editor_id+'_justifyfull','mceButtonSelected');breakOut=true;break;}}while(!breakOut&&(alignNode=alignNode.parentNode));do{switch(node.nodeName.toLowerCase()){case "b":case "strong":tinyMCE.switchClassSticky(editor_id+'_bold','mceButtonSelected');break;case "i":case "em":tinyMCE.switchClassSticky(editor_id+'_italic','mceButtonSelected');break;case "u":tinyMCE.switchClassSticky(editor_id+'_underline','mceButtonSelected');break;case "strike":tinyMCE.switchClassSticky(editor_id+'_strikethrough','mceButtonSelected');break;case "ul":tinyMCE.switchClassSticky(editor_id+'_bullist','mceButtonSelected');break;case "ol":tinyMCE.switchClassSticky(editor_id+'_numlist','mceButtonSelected');break;case "sub":tinyMCE.switchClassSticky(editor_id+'_sub','mceButtonSelected');break;case "sup":tinyMCE!
 .switchClassSticky(editor_id+'_sup','mceButtonSelected');break;case "h
r":tinyMCE.switchClassSticky(editor_id+'_hr','mceButtonSelected');break;case "img":if(getAttrib(node,'name').indexOf('mce_')!=0)tinyMCE.switchClassSticky(editor_id+'_image','mceButtonSelected');break;}}while((node=node.parentNode));}function TinyMCE_advanced_setupCSSClasses(editor_id){if(!TinyMCE_advanced_autoImportCSSClasses)return;var selectElm=document.getElementById(editor_id+'_styleSelect');if(selectElm&&selectElm.getAttribute('cssImported')!='true'){var csses=tinyMCE.getCSSClasses(editor_id);if(csses&&selectElm){for(var i=0;i<csses.length;i++)selectElm.options[selectElm.length]=new Option(csses[i],csses[i]);}if(csses!=null&&csses.length>0)selectElm.setAttribute('cssImported','true');}}
\ No newline at end of file
+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','l!
 ang_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_t!
 heme_address}'],['pre','{$lang_theme_pre}'],['h1','{$lang_theme_h1}'],
['h2','{$lang_theme_h2}'],['h3','{$lang_theme_h3}'],['h4','{$lang_theme_h4}'],['h5','{$lang_theme_h5}'],['h6','{$lang_theme_h6}'],['div','{$lang_theme_div}'],['blockquote','{$lang_theme_blockquote}'],['code','{$lang_theme_code}'],['dt','{$lang_theme_dt}'],['dd','{$lang_theme_dd}'],['samp','{$lang_theme_samp}']];html+='<option value="">{$lang_theme_block}</option>';for(var i=0;i<formats.length;i++){for(var x=0;x<lookup.length;x++){if(formats[i]==lookup[x][0])html+='<option value="&lt;'+lookup[x][0]+'&gt;">'+lookup[x][1]+'</option>'}}html+='</select>';return html;case"styleselect":return'<select id="{$editor_id}_styleSelect" onmousedown="tinyMCE.themes.advanced._setupCSSClasses(\'{$editor_id}\');" name="{$editor_id}_styleSelect" onfocus="tinyMCE.addSelectAccessibility(event,this,window);" onchange="tinyMCE.execInstanceCommand(\'{$editor_id}\',\'mceSetCSSClass\',false,this.options[this.selectedIndex].value);" class="mceSelectList">{$style_select_options}</select>';case"fontsele!
 ct":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=term!
 inal,monaco;Times New Roman=times new roman,times;Trebuchet MS=trebuch
et 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"|":ca!
 se"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.to
LowerCase()=="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;templ!
 ate['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=im!
 g}if(img){if(tinyMCE.getAttrib(img,'name').indexOf('mce_')==0)return t
rue;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_callba!
 ck']+"(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:onmouseo!
 ut,action:action,inline:"yes"});return true;case"forecolor":var fcp=ne
w 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.exi!
 sts())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.getAb
sPosition(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";templat!
 e['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")+'">&#160;</div><div id="{$editor_id}_resize" class="mceStatusbarResize" style="display: '+(resizing?"block":"none")+'" onmousedown="tinyMCE.themes.advanced._setResizing(event,\'{$editor_id}\',true);"></div><br style="clear: both" />';var layoutManager=tinyMCE.getParam("theme_advanced_layout_manager","SimpleLayout");var styleSelectHTML='<option value="">{$lang_theme_style_select}</opt!
 ion>';if(settings['theme_advanced_styles']){var stylesAr=settings['the
me_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,visu!
 alaid,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" cellp
adding="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(t!
 oolbarHTML,{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_ali!
 gn","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){cur!
 ContainerHTML+="<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._res!
 izeTo(inst,w,h,tinyMCE.getParam("theme_advanced_resize_horizontal",tru
e))}}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.to!
 LowerCase().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.getA!
 ttrib(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");i!
 f(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+=" &raquo; "}}pathElm.innerHTML='<a href="#" accesskey="x"></a>'+tinyMCE.getLang('lang!
 _theme_path')+": "+html+'&#160;'}tinyMCE.switchClass(editor_id+'_justi
fyleft','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','mceButtonN!
 ormal');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=docume
nt.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.swi!
 tchClass(editor_id+'_justifyleft','mceButtonSelected');breakOut=true;b
reak;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":tin!
 yMCE.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+"="+esca!
 pe(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.getT
ime()+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(documen!
 t,"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="backgrou
nd-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.conten!
 tDocument.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);tiny!
 MCE.setAttrib(tinyMCE.imgElement,'border',border,true);tinyMCE.setAttr
ib(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 t!
 href=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.getElementsByA
ttributeValue(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.linkE!
 lement,'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);
\ No newline at end of file

Modified: labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/themes/advanced/editor_template_src.js
===================================================================
--- labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/themes/advanced/editor_template_src.js	2007-01-11 22:09:16 UTC (rev 8831)
+++ labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/themes/advanced/editor_template_src.js	2007-01-11 22:10:56 UTC (rev 8832)
@@ -1,591 +1,1534 @@
+/**
+ * $Id: editor_template_src.js 5756 2006-12-04 18:16:39Z roy.russo at jboss.com $
+ *
+ * @author Moxiecode
+ * @copyright Copyright © 2004-2006, Moxiecode Systems AB, All rights reserved.
+ */
+
 /* Import theme specific language pack */
-tinyMCE.importThemeLanguagePack();
+tinyMCE.importThemeLanguagePack('advanced');
 
-// Variable declarations
-var TinyMCE_advanced_autoImportCSSClasses = true;
-var TinyMCE_advanced_foreColor = "#000000";
-var TinyMCE_advanced_anchorName = "";
-var TinyMCE_advanced_buttons = [
+var TinyMCE_AdvancedTheme = {
+	// Private theme fields
+	_defColors : "000000,993300,333300,003300,003366,000080,333399,333333,800000,FF6600,808000,008000,008080,0000FF,666699,808080,FF0000,FF9900,99CC00,339966,33CCCC,3366FF,800080,999999,FF00FF,FFCC00,FFFF00,00FF00,00FFFF,00CCFF,993366,C0C0C0,FF99CC,FFCC99,FFFF99,CCFFCC,CCFFFF,99CCFF,CC99FF,FFFFFF",
+	_autoImportCSSClasses : true,
+	_resizer : {},
+	_buttons : [
 		// Control id, button img, button title, command, user_interface, value
-		['bold', '{$lang_bold_img}', '{$lang_bold_desc}', 'Bold'],
-		['italic', '{$lang_italic_img}', '{$lang_italic_desc}', 'Italic'],
-		['underline', '{$lang_underline_img}', '{$lang_underline_desc}', 'Underline'],
-		['strikethrough', 'strikethrough.gif', '{$lang_striketrough_desc}', 'Strikethrough'],
-		['justifyleft', 'left.gif', '{$lang_justifyleft_desc}', 'JustifyLeft'],
-		['justifycenter', 'center.gif', '{$lang_justifycenter_desc}', 'JustifyCenter'],
-		['justifyright', 'right.gif', '{$lang_justifyright_desc}', 'JustifyRight'],
-		['justifyfull', 'full.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'],
-		['table', 'table.gif', '{$lang_theme_table_desc}', 'mceInsertTable', true],
-		['row_before', 'table_insert_row_before.gif', '{$lang_theme_table_insert_row_before_desc}', 'mceTableInsertRowBefore'],
-		['row_after', 'table_insert_row_after.gif', '{$lang_theme_table_insert_row_after_desc}', 'mceTableInsertRowAfter'],
-		['delete_row', 'table_delete_row.gif', '{$lang_theme_table_delete_row_desc}', 'mceTableDeleteRow'],
-		['col_before', 'table_insert_col_before.gif', '{$lang_theme_table_insert_col_before_desc}', 'mceTableInsertColBefore'],
-		['col_after', 'table_insert_col_after.gif', '{$lang_theme_table_insert_col_after_desc}', 'mceTableInsertColAfter'],
-		['delete_col', 'table_delete_col.gif', '{$lang_theme_table_delete_col_desc}', 'mceTableDeleteCol'],
-		['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'],
-		['charmap', 'charmap.gif', '{$lang_theme_charmap_desc}', 'mceCharMap'],
-		['visualaid', 'visualaid.gif', '{$lang_theme_visualaid_desc}', 'mceToggleVisualAid'],
-		['anchor', 'anchor.gif', '{$lang_theme_anchor_desc}', 'mceInsertAnchor']
-	];
+		['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']
+	],
 
-/**
- * Returns HTML code for the specificed control.
- */
-function TinyMCE_advanced_getControlHTML(button_name) {
-	// Lookup button in button list
-	for (var i=0; i<TinyMCE_advanced_buttons.length; i++) {
-		var but = TinyMCE_advanced_buttons[i];
-		if (but[0] == button_name)
-			return '<img id="{$editor_id}_' + but[0] + '" src="{$themeurl}/images/' + but[1] + '" title="' + but[2] + '" width="20" height="20" class="mceButtonNormal" onmouseover="tinyMCE.switchClass(this,\'mceButtonOver\');" onmouseout="tinyMCE.restoreClass(this);" onmousedown="tinyMCE.restoreAndSwitchClass(this,\'mceButtonDown\');" onclick="tinyMCE.execInstanceCommand(\'{$editor_id}\',\'' + but[3] + '\', ' + (but.length > 4 ? but[4] : false) + (but.length > 5 ? ', \'' + but[5] + '\'' : '') + ')">';
-	}
+	_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',
 
-	// Custom controlls other than buttons
-	switch (button_name) {
-		case "formatselect":
-			var html = '<select id="{$editor_id}_formatSelect" name="{$editor_id}_formatSelect" 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}']
-			];
+	/**
+	 * Returns HTML code for the specificed control.
+	 */
+	getControlHTML : function(button_name) {
+		var i, x, but;
 
-			// Build format select
-			for (var i=0; i<formats.length; i++) {
-				for (var x=0; x<lookup.length; x++) {
-					if (formats[i] == lookup[x][0])
-						html += '<option value="<' + lookup[x][0] + '>">' + lookup[x][1] + '</option>';
-				}
-			}
+		// Lookup button in button list
+		for (i=0; i<TinyMCE_AdvancedTheme._buttons.length; i++) {
+			but = TinyMCE_AdvancedTheme._buttons[i];
 
-			html += '</select>';
+			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));
 
-			return html;
+			if (but[0] == button_name)
+				return tinyMCE.getButtonHTML(but[0], but[2], '{$themeurl}/images/' + but[1], but[3], (but.length > 4 ? but[4] : false), (but.length > 5 ? but[5] : null));
+		}
 
+		// Custom controlls other than buttons
+		switch (button_name) {
+			case "formatselect":
+				var html = '<select id="{$editor_id}_formatSelect" name="{$editor_id}_formatSelect" onfocus="tinyMCE.addSelectAccessibility(event, this, window);" onchange="tinyMCE.execInstanceCommand(\'{$editor_id}\',\'FormatBlock\',false,this.options[this.selectedIndex].value);" class="mceSelectList">';
+				var formats = tinyMCE.getParam("theme_advanced_blockformats", "p,address,pre,h1,h2,h3,h4,h5,h6", true).split(',');
+				var lookup = [
+					['p', '{$lang_theme_paragraph}'],
+					['address', '{$lang_theme_address}'],
+					['pre', '{$lang_theme_pre}'],
+					['h1', '{$lang_theme_h1}'],
+					['h2', '{$lang_theme_h2}'],
+					['h3', '{$lang_theme_h3}'],
+					['h4', '{$lang_theme_h4}'],
+					['h5', '{$lang_theme_h5}'],
+					['h6', '{$lang_theme_h6}'],
+					['div', '{$lang_theme_div}'],
+					['blockquote', '{$lang_theme_blockquote}'],
+					['code', '{$lang_theme_code}'],
+					['dt', '{$lang_theme_dt}'],
+					['dd', '{$lang_theme_dd}'],
+					['samp', '{$lang_theme_samp}']
+				];
 
-		case "styleselect":
-			return '<select id="{$editor_id}_styleSelect" onmousedown="TinyMCE_advanced_setupCSSClasses(\'{$editor_id}\');" name="{$editor_id}_styleSelect" onchange="tinyMCE.execInstanceCommand(\'{$editor_id}\',\'mceSetCSSClass\',false,this.options[this.selectedIndex].value);" class="mceSelectList">{$style_select_options}</select>';
+				html += '<option value="">{$lang_theme_block}</option>';
 
-		case "fontselect":
-			return '<select id="{$editor_id}_fontNameSelect" name="{$editor_id}_fontNameSelect" onchange="tinyMCE.execInstanceCommand(\'{$editor_id}\',\'FontName\',false,this.options[this.selectedIndex].value);" class="mceSelectList">\
-					<option value="">{$lang_theme_fontdefault}</option>\
-					<option value="arial,helvetica,sans-serif">Arial</option>\
-					<option value="times new roman,times,serif">Times New Roman</option>\
-					<option value="verdana,arial,helvetica,sans-serif">Verdana</option>\
-					<option value="courier new,courier,monospace">Courier</option>\
-					<option value="georgia,times new roman,times,serif">Georgia</option>\
-					<option value="tahoma,arial,helvetica,sans-serif">Tahoma</option>\
-					</select>';
+				// Build format select
+				for (var i=0; i<formats.length; i++) {
+					for (var x=0; x<lookup.length; x++) {
+						if (formats[i] == lookup[x][0])
+							html += '<option value="&lt;' + lookup[x][0] + '&gt;">' + lookup[x][1] + '</option>';
+					}
+				}
 
-		case "fontsizeselect":
-			return '<select id="{$editor_id}_fontSizeSelect" name="{$editor_id}_fontSizeSelect" onchange="tinyMCE.execInstanceCommand(\'{$editor_id}\',\'FontSize\',false,this.options[this.selectedIndex].value);" class="mceSelectList">\
-					<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>';
+				html += '</select>';
 
-		case "separator":
-			return '<img src="{$themeurl}/images/spacer.gif" width="1" height="15" class="mceSeparatorLine">';
+				return html;
 
-        case "spacer":
-			return '<img src="{$themeurl}/images/spacer.gif" width="1" height="15" border="0" class="mceSeparatorLine" style="vertical-align: middle" />';
+			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 "rowseparator":
-			return '<br />';
-	}
+			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>';
+					}
+				}
 
-	return "";
-}
+				fontHTML += '</select>';
+				return fontHTML;
 
-/**
- * Theme specific exec command handeling.
- */
-function TinyMCE_advanced_execCommand(editor_id, element, command, user_interface, value) {
-	switch (command) {
-		case "mceForeColor":
-			var template = new Array();
-			var inputColor = TinyMCE_advanced_foreColor;
+			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>';
 
-			if (!inputColor)
-				inputColor = "#000000";
+			case "|":
+			case "separator":
+				return '<img src="{$themeurl}/images/separator.gif" width="2" height="20" class="mceSeparatorLine" />';
 
-			template['file'] = 'color_picker.htm';
-			template['width'] = 210;
-			template['height'] = 200;
+			case "spacer":
+				return '<img src="{$themeurl}/images/separator.gif" width="2" height="15" border="0" class="mceSeparatorLine" style="vertical-align: middle" />';
 
-			tinyMCE.openWindow(template, {editor_id : editor_id, command : "forecolor", input_color : inputColor});
+			case "rowseparator":
+				return '<br />';
+		}
+
+		return "";
+	},
+
+	/**
+	 * Theme specific execcommand handling.
+	 */
+	execCommand : function(editor_id, element, command, user_interface, value) {
+		switch (command) {
+			case 'mceHelp':
+				tinyMCE.openWindow({
+					file : 'about.htm',
+					width : 480,
+					height : 380
+				}, {
+					tinymce_version : tinyMCE.majorVersion + "." + tinyMCE.minorVersion,
+					tinymce_releasedate : tinyMCE.releaseDate,
+					inline : "yes"
+				});
 			return true;
 
-		case "mceCodeEditor":
-			var template = new Array();
+			case "mceLink":
+				var inst = tinyMCE.getInstanceById(editor_id);
+				var doc = inst.getDoc();
+				var selectedText = "";
 
-			template['file'] = 'source_editor.htm';
-			template['width'] = tinyMCE.getParam("theme_advanced_source_editor_width", 500);
-			template['height'] = tinyMCE.getParam("theme_advanced_source_editor_height", 400);
+				if (tinyMCE.isMSIE) {
+					var rng = doc.selection.createRange();
+					selectedText = rng.text;
+				} else
+					selectedText = inst.getSel().toString();
 
-			tinyMCE.openWindow(template, {editor_id : editor_id, resizable : "yes", scrollbars : "no"});
+				if (!tinyMCE.linkElement) {
+					if ((tinyMCE.selectedElement.nodeName.toLowerCase() != "img") && (selectedText.length <= 0))
+						return true;
+				}
+
+				var href = "", target = "", title = "", onclick = "", action = "insert", style_class = "";
+
+				if (tinyMCE.selectedElement.nodeName.toLowerCase() == "a")
+					tinyMCE.linkElement = tinyMCE.selectedElement;
+
+				// Is anchor not a link
+				if (tinyMCE.linkElement != null && tinyMCE.getAttrib(tinyMCE.linkElement, 'href') == "")
+					tinyMCE.linkElement = null;
+
+				if (tinyMCE.linkElement) {
+					href = tinyMCE.getAttrib(tinyMCE.linkElement, 'href');
+					target = tinyMCE.getAttrib(tinyMCE.linkElement, 'target');
+					title = tinyMCE.getAttrib(tinyMCE.linkElement, 'title');
+					onclick = tinyMCE.getAttrib(tinyMCE.linkElement, 'onclick');
+					style_class = tinyMCE.getAttrib(tinyMCE.linkElement, 'class');
+
+					// Try old onclick to if copy/pasted content
+					if (onclick == "")
+						onclick = tinyMCE.getAttrib(tinyMCE.linkElement, 'onclick');
+
+					onclick = tinyMCE.cleanupEventStr(onclick);
+
+					href = eval(tinyMCE.settings['urlconverter_callback'] + "(href, tinyMCE.linkElement, true);");
+
+					// Use mce_href if defined
+					mceRealHref = tinyMCE.getAttrib(tinyMCE.linkElement, 'mce_href');
+					if (mceRealHref != "") {
+						href = mceRealHref;
+
+						if (tinyMCE.getParam('convert_urls'))
+							href = eval(tinyMCE.settings['urlconverter_callback'] + "(href, tinyMCE.linkElement, true);");
+					}
+
+					action = "update";
+				}
+
+				var template = new Array();
+
+				template['file'] = 'link.htm';
+				template['width'] = 310;
+				template['height'] = 200;
+
+				// Language specific width and height addons
+				template['width'] += tinyMCE.getLang('lang_insert_link_delta_width', 0);
+				template['height'] += tinyMCE.getLang('lang_insert_link_delta_height', 0);
+
+				if (inst.settings['insertlink_callback']) {
+					var returnVal = eval(inst.settings['insertlink_callback'] + "(href, target, title, onclick, action, style_class);");
+					if (returnVal && returnVal['href'])
+						TinyMCE_AdvancedTheme._insertLink(returnVal['href'], returnVal['target'], returnVal['title'], returnVal['onclick'], returnVal['style_class']);
+				} else {
+					tinyMCE.openWindow(template, {href : href, target : target, title : title, onclick : onclick, action : action, className : style_class, inline : "yes"});
+				}
+
+				return true;
+
+			case "mceImage":
+				var src = "", alt = "", border = "", hspace = "", vspace = "", width = "", height = "", align = "";
+				var title = "", onmouseover = "", onmouseout = "", action = "insert";
+				var img = tinyMCE.imgElement;
+				var inst = tinyMCE.getInstanceById(editor_id);
+
+				if (tinyMCE.selectedElement != null && tinyMCE.selectedElement.nodeName.toLowerCase() == "img") {
+					img = tinyMCE.selectedElement;
+					tinyMCE.imgElement = img;
+				}
+
+				if (img) {
+					// Is it a internal MCE visual aid image, then skip this one.
+					if (tinyMCE.getAttrib(img, 'name').indexOf('mce_') == 0)
+						return true;
+
+					src = tinyMCE.getAttrib(img, 'src');
+					alt = tinyMCE.getAttrib(img, 'alt');
+
+					// Try polling out the title
+					if (alt == "")
+						alt = tinyMCE.getAttrib(img, 'title');
+
+					// Fix width/height attributes if the styles is specified
+					if (tinyMCE.isGecko) {
+						var w = img.style.width;
+						if (w != null && w != "")
+							img.setAttribute("width", w);
+
+						var h = img.style.height;
+						if (h != null && h != "")
+							img.setAttribute("height", h);
+					}
+
+					border = tinyMCE.getAttrib(img, 'border');
+					hspace = tinyMCE.getAttrib(img, 'hspace');
+					vspace = tinyMCE.getAttrib(img, 'vspace');
+					width = tinyMCE.getAttrib(img, 'width');
+					height = tinyMCE.getAttrib(img, 'height');
+					align = tinyMCE.getAttrib(img, 'align');
+					onmouseover = tinyMCE.getAttrib(img, 'onmouseover');
+					onmouseout = tinyMCE.getAttrib(img, 'onmouseout');
+					title = tinyMCE.getAttrib(img, 'title');
+
+					// Is realy specified?
+					if (tinyMCE.isMSIE) {
+						width = img.attributes['width'].specified ? width : "";
+						height = img.attributes['height'].specified ? height : "";
+					}
+
+					//onmouseover = tinyMCE.getImageSrc(tinyMCE.cleanupEventStr(onmouseover));
+					//onmouseout = tinyMCE.getImageSrc(tinyMCE.cleanupEventStr(onmouseout));
+
+					src = eval(tinyMCE.settings['urlconverter_callback'] + "(src, img, true);");
+
+					// Use mce_src if defined
+					mceRealSrc = tinyMCE.getAttrib(img, 'mce_src');
+					if (mceRealSrc != "") {
+						src = mceRealSrc;
+
+						if (tinyMCE.getParam('convert_urls'))
+							src = eval(tinyMCE.settings['urlconverter_callback'] + "(src, img, true);");
+					}
+
+					//if (onmouseover != "")
+					//	onmouseover = eval(tinyMCE.settings['urlconverter_callback'] + "(onmouseover, img, true);");
+
+					//if (onmouseout != "")
+					//	onmouseout = eval(tinyMCE.settings['urlconverter_callback'] + "(onmouseout, img, true);");
+
+					action = "update";
+				}
+
+				var template = new Array();
+
+				template['file'] = 'image.htm?src={$src}';
+				template['width'] = 355;
+				template['height'] = 265 + (tinyMCE.isMSIE ? 25 : 0);
+
+				// Language specific width and height addons
+				template['width'] += tinyMCE.getLang('lang_insert_image_delta_width', 0);
+				template['height'] += tinyMCE.getLang('lang_insert_image_delta_height', 0);
+
+				if (inst.settings['insertimage_callback']) {
+					var returnVal = eval(inst.settings['insertimage_callback'] + "(src, alt, border, hspace, vspace, width, height, align, title, onmouseover, onmouseout, action);");
+					if (returnVal && returnVal['src'])
+						TinyMCE_AdvancedTheme._insertImage(returnVal['src'], returnVal['alt'], returnVal['border'], returnVal['hspace'], returnVal['vspace'], returnVal['width'], returnVal['height'], returnVal['align'], returnVal['title'], returnVal['onmouseover'], returnVal['onmouseout']);
+				} else
+					tinyMCE.openWindow(template, {src : src, alt : alt, border : border, hspace : hspace, vspace : vspace, width : width, height : height, align : align, title : title, onmouseover : onmouseover, onmouseout : onmouseout, action : action, inline : "yes"});
+
+				return true;
+
+			case "forecolor":
+				var fcp = new TinyMCE_Layer(editor_id + '_fcPreview', false), p, img, elm;
+
+				TinyMCE_AdvancedTheme._hideMenus(editor_id);
+
+				if (!fcp.exists()) {
+					fcp.create('div', 'mceColorPreview', document.getElementById(editor_id + '_toolbar'));
+					elm = fcp.getElement();
+					elm._editor_id = editor_id;
+					elm._command = "forecolor";
+					elm._switchId = editor_id + "_forecolor";
+					tinyMCE.addEvent(elm, 'click', TinyMCE_AdvancedTheme._handleMenuEvent);
+					tinyMCE.addEvent(elm, 'mouseover', TinyMCE_AdvancedTheme._handleMenuEvent);
+					tinyMCE.addEvent(elm, 'mouseout', TinyMCE_AdvancedTheme._handleMenuEvent);
+				}
+
+				img = tinyMCE.selectNodes(document.getElementById(editor_id + "_forecolor"), function(n) {return n.nodeName == "IMG";})[0];
+				p = tinyMCE.getAbsPosition(img, document.getElementById(editor_id + '_toolbar'));
+
+				fcp.moveTo(p.absLeft, p.absTop);
+				fcp.getElement().style.backgroundColor = value != null ? value : tinyMCE.getInstanceById(editor_id).foreColor;
+				fcp.show();
+
+				return false;
+
+			case "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 "mceCharMap":
-			var template = new Array();
+			case "HiliteColor":
+				var bcp = new TinyMCE_Layer(editor_id + '_bcPreview', false), p, img;
 
-			template['file'] = 'charmap.htm';
-			template['width'] = 550;
-			template['height'] = 280;
+				TinyMCE_AdvancedTheme._hideMenus(editor_id);
 
-			tinyMCE.openWindow(template, {editor_id : editor_id});
+				if (!bcp.exists()) {
+					bcp.create('div', 'mceColorPreview', document.getElementById(editor_id + '_toolbar'));
+					elm = bcp.getElement();
+					elm._editor_id = editor_id;
+					elm._command = "HiliteColor";
+					elm._switchId = editor_id + "_backcolor";
+					tinyMCE.addEvent(elm, 'click', TinyMCE_AdvancedTheme._handleMenuEvent);
+					tinyMCE.addEvent(elm, 'mouseover', TinyMCE_AdvancedTheme._handleMenuEvent);
+					tinyMCE.addEvent(elm, 'mouseout', TinyMCE_AdvancedTheme._handleMenuEvent);
+				}
+
+				img = tinyMCE.selectNodes(document.getElementById(editor_id + "_backcolor"), function(n) {return n.nodeName == "IMG";})[0];
+				p = tinyMCE.getAbsPosition(img, document.getElementById(editor_id + '_toolbar'));
+
+				bcp.moveTo(p.absLeft, p.absTop);
+				bcp.getElement().style.backgroundColor = value != null ? value : tinyMCE.getInstanceById(editor_id).backColor;
+				bcp.show();
+
+				return false;
+
+			case "HiliteColorMenu":
+				TinyMCE_AdvancedTheme._hideMenus(editor_id);
+
+				// Create color layer
+				var ml = new TinyMCE_Layer(editor_id + '_bcMenu');
+
+				if (!ml.exists())
+					ml.create('div', 'mceMenu', document.body, TinyMCE_AdvancedTheme._getColorHTML(editor_id, 'theme_advanced_background_colors', 'HiliteColor'));
+
+				tinyMCE.switchClass(editor_id + '_backcolor', 'mceMenuButtonFocus');
+				ml.moveRelativeTo(document.getElementById(editor_id + "_backcolor"), 'bl');
+
+				ml.moveBy(tinyMCE.isMSIE && !tinyMCE.isOpera ? -1 : 1, -1);
+
+				if (tinyMCE.isOpera)
+					ml.moveBy(0, -2);
+
+				ml.show();
 			return true;
 
-		case "mceInsertAnchor":
-			var template = new Array();
+			case "mceColorPicker":
+				if (user_interface) {
+					var template = new Array();
+					var inputColor = value['document'].getElementById(value['element_id']).value;
 
-			template['file'] = 'anchor.htm';
-			template['width'] = 320;
-			template['height'] = 130;
+					template['file'] = 'color_picker.htm';
+					template['width'] = 220;
+					template['height'] = 190;
+					template['close_previous'] = "no";
 
-			tinyMCE.openWindow(template, {editor_id : editor_id, name : TinyMCE_advanced_anchorName, action : (TinyMCE_advanced_anchorName == "" ? "insert" : "update")});
+					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;
-	}
 
-	// Default behavior
-	return false;
-}
+			case "mceCodeEditor":
+				var template = new Array();
 
-/**
- * Editor instance template function.
- */
-function TinyMCE_advanced_getEditorTemplate(settings) {
-	function removeFromArray(in_array, remove_array) {
-		var outArray = new Array();
-		for (var i=0; i<in_array.length; i++) {
-			skip = false;
+				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));
 
-			for (var j=0; j<remove_array.length; j++) {
-				if (in_array[i] == remove_array[j])
-					skip = true;
+				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;
+	},
+
+	/**
+	 * Editor instance template function.
+	 */
+	getEditorTemplate : function(settings, editorId) {
+		function removeFromArray(in_array, remove_array) {
+			var outArray = new Array(), skip;
+			
+			for (var i=0; i<in_array.length; i++) {
+				skip = false;
+
+				for (var j=0; j<remove_array.length; j++) {
+					if (in_array[i] == remove_array[j]) {
+						skip = true;
+					}
+				}
+
+				if (!skip) {
+					outArray[outArray.length] = in_array[i];
+				}
 			}
 
-			if (!skip)
-				outArray[outArray.length] = in_array[i];
+			return outArray;
 		}
 
-		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];
+			}
 
-	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;
+		}
 
-		return in_array; 
-	}
+		var template = new Array();
+		var deltaHeight = 0;
+		var resizing = tinyMCE.getParam("theme_advanced_resizing", false);
+		var path = tinyMCE.getParam("theme_advanced_path", true);
+		var statusbarHTML = '<div id="{$editor_id}_path" class="mceStatusbarPathText" style="display: ' + (path ? "block" : "none") + '">&#160;</div><div id="{$editor_id}_resize" class="mceStatusbarResize" style="display: ' + (resizing ? "block" : "none") + '" onmousedown="tinyMCE.themes.advanced._setResizing(event,\'{$editor_id}\',true);"></div><br style="clear: both" />';
+		var layoutManager = tinyMCE.getParam("theme_advanced_layout_manager", "SimpleLayout");
 
-	var template = new Array();
-	var toolbarHTML = "";
-	var toolbarLocation = tinyMCE.getParam("theme_advanced_toolbar_location", "bottom");
+		// Setup style select options -- MOVED UP FOR EXTERNAL TOOLBAR COMPATABILITY!
+		var styleSelectHTML = '<option value="">{$lang_theme_style_select}</option>';
+		if (settings['theme_advanced_styles']) {
+			var stylesAr = settings['theme_advanced_styles'].split(';');
+			
+			for (var i=0; i<stylesAr.length; i++) {
+				var key, value;
 
-	// Render row 1
-	var buttonNamesRow1 = tinyMCE.getParam("theme_advanced_buttons1", "bold,italic,underline,strikethrough,separator,justifyleft,justifycenter,justifyright,justifyfull,separator,styleselect,formatselect", true, ',');
-	buttonNamesRow1 = removeFromArray(buttonNamesRow1, tinyMCE.getParam("theme_advanced_disable", "", true, ','));
-	buttonNamesRow1 = addToArray(buttonNamesRow1, tinyMCE.getParam("theme_advanced_buttons1_add", "", true, ','));
-	buttonNamesRow1 = addToArray(tinyMCE.getParam("theme_advanced_buttons1_add_before", "", true, ','), buttonNamesRow1);
-	for (var i=0; i<buttonNamesRow1.length; i++)
-		toolbarHTML += tinyMCE.getControlHTML(buttonNamesRow1[i]);
+				key = stylesAr[i].split('=')[0];
+				value = stylesAr[i].split('=')[1];
 
-	if (buttonNamesRow1.length > 0)
-		toolbarHTML += "<br />";
+				styleSelectHTML += '<option value="' + value + '">' + key + '</option>';
+			}
 
-	// Render row 2
-	var buttonNamesRow2 = tinyMCE.getParam("theme_advanced_buttons2", "bullist,numlist,separator,outdent,indent,separator,undo,redo,separator,link,unlink,anchor,image,cleanup,help,code", true, ',');
-	buttonNamesRow2 = removeFromArray(buttonNamesRow2, tinyMCE.getParam("theme_advanced_disable", "", true, ','));
-	buttonNamesRow2 = addToArray(buttonNamesRow2, tinyMCE.getParam("theme_advanced_buttons2_add", "", true, ','));
-	buttonNamesRow2 = addToArray(tinyMCE.getParam("theme_advanced_buttons2_add_before", "", true, ','), buttonNamesRow2);
-	for (var i=0; i<buttonNamesRow2.length; i++)
-		toolbarHTML += tinyMCE.getControlHTML(buttonNamesRow2[i]);
+			TinyMCE_AdvancedTheme._autoImportCSSClasses = false;
+		}
 
-	if (buttonNamesRow2.length > 0)
-		toolbarHTML += "<br />";
+		switch(layoutManager) {
+			case "SimpleLayout" : //the default TinyMCE Layout (for backwards compatibility)...
+				var toolbarHTML = "";
+				var toolbarLocation = tinyMCE.getParam("theme_advanced_toolbar_location", "bottom");
+				var toolbarAlign = tinyMCE.getParam("theme_advanced_toolbar_align", "center");
+				var pathLocation = tinyMCE.getParam("theme_advanced_path_location", "none"); // Compatiblity
+				var statusbarLocation = tinyMCE.getParam("theme_advanced_statusbar_location", pathLocation);
+				var defVals = {
+					theme_advanced_buttons1 : "bold,italic,underline,strikethrough,separator,justifyleft,justifycenter,justifyright,justifyfull,separator,styleselect,formatselect",
+					theme_advanced_buttons2 : "bullist,numlist,separator,outdent,indent,separator,undo,redo,separator,link,unlink,anchor,image,cleanup,help,code",
+					theme_advanced_buttons3 : "hr,removeformat,visualaid,separator,sub,sup,separator,charmap"
+				};
 
-	// Render row 3
-	var buttonNamesRow3 = tinyMCE.getParam("theme_advanced_buttons3", "table,separator,row_before,row_after,delete_row,separator,col_before,col_after,delete_col,separator,hr,removeformat,visualaid,separator,sub,sup,separator,charmap", true, ',');
-	buttonNamesRow3 = removeFromArray(buttonNamesRow3, tinyMCE.getParam("theme_advanced_disable", "", true, ','));
-	buttonNamesRow3 = addToArray(buttonNamesRow3, tinyMCE.getParam("theme_advanced_buttons3_add", "", true, ','));
-	buttonNamesRow3 = addToArray(tinyMCE.getParam("theme_advanced_buttons3_add_before", "", true, ','), buttonNamesRow3);
-	for (var i=0; i<buttonNamesRow3.length; i++)
-		toolbarHTML += tinyMCE.getControlHTML(buttonNamesRow3[i]);
+				// Add accessibility control
+				toolbarHTML += '<a href="#" accesskey="q" title="' + tinyMCE.getLang("lang_toolbar_focus") + '"';
 
-	// Setup template html
-	template['html'] = '<table class="mceEditor" border="0" cellpadding="0" cellspacing="0" width="{$width}" height="{$height}">';
+				if (!tinyMCE.getParam("accessibility_focus"))
+					toolbarHTML += ' onfocus="tinyMCE.getInstanceById(\'' + editorId + '\').getWin().focus();"';
 
-	if (toolbarLocation == "top")
-		template['html'] += '<tr><td class="mceToolbarTop" align="center" height="1">' + toolbarHTML + '</td></tr>';
+				toolbarHTML += '></a>';
 
-/*	template['html'] += '<tr><td align="center">\
-		<iframe id="{$editor_id}" class="mceEditorArea" border="1" frameborder="0" src="{$default_document}" marginwidth="0" marginheight="0" leftmargin="0" topmargin="0" style="width:{$area_width};height:{$area_height}" width="{$area_width}" height="{$area_height}"></iframe>\
-		</td></tr>';*/
-	template['html'] += '<tr><td align="center">\
-		<span id="{$editor_id}"></span>\
-		</td></tr>';
+				// Render rows
+				for (var i=1; i<100; i++) {
+					var def = defVals["theme_advanced_buttons" + i];
 
-	if (toolbarLocation == "bottom")
-		template['html'] += '<tr><td class="mceToolbarBottom" align="center" height="1">' + toolbarHTML + '</td></tr>';
+					var buttons = tinyMCE.getParam("theme_advanced_buttons" + i, def == null ? '' : def, true, ',');
+					if (buttons.length == 0)
+						break;
 
-	template['html'] += '</table>';
+					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);
 
-	// Setup style select options
-	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;
+					for (var b=0; b<buttons.length; b++)
+						toolbarHTML += tinyMCE.getControlHTML(buttons[b]);
 
-			key = stylesAr[i].split('=')[0];
-			value = stylesAr[i].split('=')[1];
+					if (buttons.length > 0) {
+						toolbarHTML += "<br />";
+						deltaHeight -= 23;
+					}
+				}
 
-			styleSelectHTML += '<option value="' + value + '">' + key + '</option>';
+				// Add accessibility control
+				toolbarHTML += '<a href="#" accesskey="z" onfocus="tinyMCE.getInstanceById(\'' + editorId + '\').getWin().focus();"></a>';
+
+				// Setup template html
+				template['html'] = '<table class="mceEditor" border="0" cellpadding="0" cellspacing="0" width="{$width}" height="{$height}" style="width:{$width_style};height:{$height_style}"><tbody>';
+
+				if (toolbarLocation == "top") {
+					template['html'] += '<tr><td 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>';
+				}
+
+				// External toolbar changes
+				if (toolbarLocation == "external") {
+					var bod = document.body;
+					var elm = document.createElement ("div");
+
+					toolbarHTML = tinyMCE.replaceVar(toolbarHTML, 'style_select_options', styleSelectHTML);
+					toolbarHTML = tinyMCE.applyTemplate(toolbarHTML, {editor_id : editorId});
+
+					elm.className = "mceToolbarExternal";
+					elm.id = editorId+"_toolbar";
+					elm.innerHTML = '<table width="100%" border="0" align="center"><tr><td align="center">'+toolbarHTML+'</td></tr></table>';
+					bod.appendChild (elm);
+					// bod.style.marginTop = elm.offsetHeight + "px";
+
+					deltaHeight = 0;
+					tinyMCE.getInstanceById(editorId).toolbarElement = elm;
+
+					//template['html'] = '<div id="mceExternalToolbar" align="center" class="mceToolbarExternal"><table width="100%" border="0" align="center"><tr><td align="center">'+toolbarHTML+'</td></tr></table></div>' + template["html"];
+				} else {
+					tinyMCE.getInstanceById(editorId).toolbarElement = null;
+				}
+
+				if (statusbarLocation == "bottom") {
+					template['html'] += '<tr><td class="mceStatusbarBottom" height="1">' + statusbarHTML + '</td></tr>';
+					deltaHeight -= 23;
+				}
+
+				template['html'] += '</tbody></table>';
+				//"SimpleLayout"
+			break;
+
+			case "RowLayout" : //Container Layout - containers defined in "theme_advanced_containers" are rendered from top to bottom.
+				template['html'] = '<table class="mceEditor" border="0" cellpadding="0" cellspacing="0" width="{$width}" height="{$height}" style="width:{$width}px;height:{$height}px"><tbody>';
+
+				var containers = tinyMCE.getParam("theme_advanced_containers", "", true, ",");
+				var defaultContainerCSS = tinyMCE.getParam("theme_advanced_containers_default_class", "container");
+				var defaultContainerAlign = tinyMCE.getParam("theme_advanced_containers_default_align", "center");
+
+				//Render Containers:
+				for (var i = 0; i < containers.length; i++)
+				{
+					if (containers[i] == "mceEditor") //Exceptions for mceEditor and ...
+						template['html'] += '<tr><td align="center" class="mceEditor_border"><span id="{$editor_id}"></span></td></tr>';
+					else if (containers[i] == "mceElementpath" || containers[i] == "mceStatusbar") // ... mceElementpath:
+					{
+						var pathClass = "mceStatusbar";
+
+						if (i == containers.length-1)
+						{
+							pathClass = "mceStatusbarBottom";
+						}
+						else if (i == 0)
+						{
+							pathClass = "mceStatusbar";
+						}
+						else
+						{
+							deltaHeight-=2;
+						}
+
+						template['html'] += '<tr><td class="' + pathClass + '" height="1">' + statusbarHTML + '</td></tr>';
+						deltaHeight -= 22;
+					} else { // Render normal Container
+						var curContainer = tinyMCE.getParam("theme_advanced_container_"+containers[i], "", true, ',');
+						var curContainerHTML = "";
+						var curAlign = tinyMCE.getParam("theme_advanced_container_"+containers[i]+"_align", defaultContainerAlign);
+						var curCSS = tinyMCE.getParam("theme_advanced_container_"+containers[i]+"_class", defaultContainerCSS);
+
+						curContainer = removeFromArray(curContainer, tinyMCE.getParam("theme_advanced_disable", "", true, ','));
+
+						for (var j=0; j<curContainer.length; j++)
+							curContainerHTML += tinyMCE.getControlHTML(curContainer[j]);
+
+						if (curContainer.length > 0) {
+							curContainerHTML += "<br />";
+							deltaHeight -= 23;
+						}
+
+						template['html'] += '<tr><td class="' + curCSS + '" align="' + curAlign + '" height="1">' + curContainerHTML + '</td></tr>';
+					}
+				}
+
+				template['html'] += '</tbody></table>';
+				//RowLayout
+			break;
+
+			case "CustomLayout" : //User defined layout callback...
+				var customLayout = tinyMCE.getParam("theme_advanced_custom_layout","");
+
+				if (customLayout != "" && eval("typeof(" + customLayout + ")") != "undefined") {
+					template = eval(customLayout + "(template);");
+				}
+			break;
 		}
 
-		TinyMCE_advanced_autoImportCSSClasses = false;
-	}
+		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'] = -40;
+		template['html'] = tinyMCE.replaceVar(template['html'], 'style_select_options', styleSelectHTML);
+		template['delta_width'] = 0;
+		template['delta_height'] = deltaHeight;
 
-	return template;
-}
+		return template;
+	},
 
-/**
- * Insert link template function.
- */
-function TinyMCE_advanced_getInsertLinkTemplate() {
-	var template = new Array();
+	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");
 
-	template['file'] = 'link.htm';
-	template['width'] = 320;
-	template['height'] = 170;
+				TinyMCE_AdvancedTheme._resizeTo(inst, w, h, tinyMCE.getParam("theme_advanced_resize_horizontal", true));
+			}
+		}
 
-	// Language specific width and height addons
-	template['width'] += tinyMCE.getLang('lang_insert_link_delta_width', 0);
-	template['height'] += tinyMCE.getLang('lang_insert_link_delta_height', 0);
+		inst.addShortcut('ctrl', 'k', 'lang_link_desc', 'mceLink');
+	},
 
-	return template;
-}
+	_handleMenuEvent : function(e) {
+		var te = tinyMCE.isMSIE ? window.event.srcElement : e.target;
+		tinyMCE._menuButtonEvent(e.type == "mouseover" ? "over" : "out", document.getElementById(te._switchId));
 
-/**
- * Insert image template function.
- */
-function TinyMCE_advanced_getInsertImageTemplate() {
-	var template = new Array();
+		if (e.type == "click")
+			tinyMCE.execInstanceCommand(te._editor_id, te._command);
+	},
 
-	template['file'] = 'image.htm';
-	template['width'] = 340;
-	template['height'] = 280;
+	_hideMenus : function(id) {
+		var fcml = new TinyMCE_Layer(id + '_fcMenu'), bcml = new TinyMCE_Layer(id + '_bcMenu');
 
-	// Language specific width and height addons
-	template['width'] += tinyMCE.getLang('lang_insert_image_delta_width', 0);
-	template['height'] += tinyMCE.getLang('lang_insert_image_delta_height', 0);
+		if (fcml.exists() && fcml.isVisible()) {
+			tinyMCE.switchClass(id + '_forecolor', 'mceMenuButton');
+			fcml.hide();
+		}
 
-	return template;
-}
+		if (bcml.exists() && bcml.isVisible()) {
+			tinyMCE.switchClass(id + '_backcolor', 'mceMenuButton');
+			bcml.hide();
+		}
+	},
 
-/**
- * Insert table template function.
- */
-function TinyMCE_advanced_getInsertTableTemplate(settings) {
-	var template = new Array();
+	/**
+	 * Node change handler.
+	 */
+	handleNodeChange : function(editor_id, node, undo_index, undo_levels, visual_aid, any_selection, setup_content) {
+		var alignNode, breakOut, classNode;
 
-	template['file'] = 'table.htm';
-	template['width'] = 340;
-	template['height'] = 220;
+		function selectByValue(select_elm, value, first_index) {
+			first_index = typeof(first_index) == "undefined" ? false : true;
 
-	// Language specific width and height addons
-	template['width'] += tinyMCE.getLang('lang_insert_table_delta_width', 0);
-	template['height'] += tinyMCE.getLang('lang_insert_table_delta_height', 0);
+			if (select_elm) {
+				for (var i=0; i<select_elm.options.length; i++) {
+					var ov = "" + select_elm.options[i].value;
 
-	return template;
-}
+					if (first_index && ov.toLowerCase().indexOf(value.toLowerCase()) == 0) {
+						select_elm.selectedIndex = i;
+						return true;
+					}
 
-/**
- * Node change handler.
- */
-function TinyMCE_advanced_handleNodeChange(editor_id, node, undo_index, undo_levels, visual_aid, any_selection) {
-	function selectByValue(select_elm, value) {
-		if (select_elm) {
-			for (var i=0; i<select_elm.options.length; i++) {
-				if (select_elm.options[i].value == value) {
-					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) : "";
+		};
+
+		// No node provided
+		if (node == null)
+			return;
+
+		// Update path
+		var pathElm = document.getElementById(editor_id + "_path");
+		var inst = tinyMCE.getInstanceById(editor_id);
+		var doc = inst.getDoc();
+		TinyMCE_AdvancedTheme._hideMenus(editor_id);
+
+		if (pathElm) {
+			// Get node path
+			var parentNode = node;
+			var path = new Array();
+			
+			while (parentNode != null) {
+				if (parentNode.nodeName.toUpperCase() == "BODY") {
+					break;
+				}
+
+				// Only append element nodes to path
+				if (parentNode.nodeType == 1 && tinyMCE.getAttrib(parentNode, "class").indexOf('mceItemHidden') == -1) {
+					path[path.length] = parentNode;
+				}
+
+				parentNode = parentNode.parentNode;
+			}
+
+			// Setup HTML
+			var html = "";
+			for (var i=path.length-1; i>=0; i--) {
+				var nodeName = path[i].nodeName.toLowerCase();
+				var nodeData = "";
+
+				if (nodeName.indexOf("html:") == 0)
+					nodeName = nodeName.substring(5);
+
+				if (nodeName == "b") {
+					nodeName = "strong";
+				}
+
+				if (nodeName == "i") {
+					nodeName = "em";
+				}
+
+				if (nodeName == "span") {
+					var cn = tinyMCE.getAttrib(path[i], "class");
+					if (cn != "" && cn.indexOf('mceItem') == -1)
+						nodeData += "class: " + cn + " ";
+
+					var st = tinyMCE.getAttrib(path[i], "style");
+					if (st != "") {
+						st = tinyMCE.serializeStyle(tinyMCE.parseStyle(st));
+						nodeData += "style: " + 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 += " &raquo; ";
+				}
+			}
+
+			pathElm.innerHTML = '<a href="#" accesskey="x"></a>' + tinyMCE.getLang('lang_theme_path') + ": " + html + '&#160;';
 		}
 
-		return false;
-	}
+		// Reset old states
+		tinyMCE.switchClass(editor_id + '_justifyleft', 'mceButtonNormal');
+		tinyMCE.switchClass(editor_id + '_justifyright', 'mceButtonNormal');
+		tinyMCE.switchClass(editor_id + '_justifycenter', 'mceButtonNormal');
+		tinyMCE.switchClass(editor_id + '_justifyfull', 'mceButtonNormal');
+		tinyMCE.switchClass(editor_id + '_bold', 'mceButtonNormal');
+		tinyMCE.switchClass(editor_id + '_italic', 'mceButtonNormal');
+		tinyMCE.switchClass(editor_id + '_underline', 'mceButtonNormal');
+		tinyMCE.switchClass(editor_id + '_strikethrough', 'mceButtonNormal');
+		tinyMCE.switchClass(editor_id + '_bullist', 'mceButtonNormal');
+		tinyMCE.switchClass(editor_id + '_numlist', 'mceButtonNormal');
+		tinyMCE.switchClass(editor_id + '_sub', 'mceButtonNormal');
+		tinyMCE.switchClass(editor_id + '_sup', 'mceButtonNormal');
+		tinyMCE.switchClass(editor_id + '_anchor', 'mceButtonNormal');
+		tinyMCE.switchClass(editor_id + '_link', 'mceButtonDisabled');
+		tinyMCE.switchClass(editor_id + '_unlink', 'mceButtonDisabled');
+		tinyMCE.switchClass(editor_id + '_outdent', 'mceButtonDisabled');
+		tinyMCE.switchClass(editor_id + '_image', 'mceButtonNormal');
+		tinyMCE.switchClass(editor_id + '_hr', 'mceButtonNormal');
 
-	function getAttrib(elm, name) {
-		return elm.getAttribute(name) ? elm.getAttribute(name) : "";
-	}
+		if (node.nodeName == "A" && tinyMCE.getAttrib(node, "class").indexOf('mceItemAnchor') != -1)
+			tinyMCE.switchClass(editor_id + '_anchor', 'mceButtonSelected');
 
-	// Get element color
-	var colorElm = tinyMCE.getParentElement(node, "font", "color");
-	if (colorElm)
-		TinyMCE_advanced_foreColor = "" + colorElm.color.toUpperCase();
+		// Get link
+		var anchorLink = tinyMCE.getParentElement(node, "a", "href");
 
-	// Reset old states
-	tinyMCE.switchClassSticky(editor_id + '_justifyleft', 'mceButtonNormal');
-	tinyMCE.switchClassSticky(editor_id + '_justifyright', 'mceButtonNormal');
-	tinyMCE.switchClassSticky(editor_id + '_justifycenter', 'mceButtonNormal');
-	tinyMCE.switchClassSticky(editor_id + '_justifyfull', 'mceButtonNormal');
-	tinyMCE.switchClassSticky(editor_id + '_bold', 'mceButtonNormal');
-	tinyMCE.switchClassSticky(editor_id + '_italic', 'mceButtonNormal');
-	tinyMCE.switchClassSticky(editor_id + '_underline', 'mceButtonNormal');
-	tinyMCE.switchClassSticky(editor_id + '_strikethrough', 'mceButtonNormal');
-	tinyMCE.switchClassSticky(editor_id + '_bullist', 'mceButtonNormal');
-	tinyMCE.switchClassSticky(editor_id + '_numlist', 'mceButtonNormal');
-	tinyMCE.switchClassSticky(editor_id + '_sub', 'mceButtonNormal');
-	tinyMCE.switchClassSticky(editor_id + '_sup', 'mceButtonNormal');
-	tinyMCE.switchClassSticky(editor_id + '_table', 'mceButtonNormal');
-	tinyMCE.switchClassSticky(editor_id + '_anchor', 'mceButtonNormal');
-	tinyMCE.switchClassSticky(editor_id + '_link', 'mceButtonDisabled', true);
-	tinyMCE.switchClassSticky(editor_id + '_unlink', 'mceButtonDisabled', true);
-	tinyMCE.switchClassSticky(editor_id + '_row_before', 'mceButtonDisabled', true);
-	tinyMCE.switchClassSticky(editor_id + '_row_after', 'mceButtonDisabled', true);
-	tinyMCE.switchClassSticky(editor_id + '_delete_row', 'mceButtonDisabled', true);
-	tinyMCE.switchClassSticky(editor_id + '_col_before', 'mceButtonDisabled', true);
-	tinyMCE.switchClassSticky(editor_id + '_col_after', 'mceButtonDisabled', true);
-	tinyMCE.switchClassSticky(editor_id + '_delete_col', 'mceButtonDisabled', true);
-	tinyMCE.switchClassSticky(editor_id + '_outdent', 'mceButtonDisabled', true);
-    tinyMCE.switchClassSticky(editor_id + '_image', 'mceButtonNormal');
-    tinyMCE.switchClassSticky(editor_id + '_hr', 'mceButtonNormal');
+		if (anchorLink || any_selection) {
+			tinyMCE.switchClass(editor_id + '_link', anchorLink ? 'mceButtonSelected' : 'mceButtonNormal');
+			tinyMCE.switchClass(editor_id + '_unlink', anchorLink ? 'mceButtonSelected' : 'mceButtonNormal');
+		}
 
-	// Get anchor name
-	var anchorName = tinyMCE.getParentElement(node, "a", "name");
-	TinyMCE_advanced_anchorName = "";
-	if (anchorName) {
-		TinyMCE_advanced_anchorName = anchorName.getAttribute("name");
-		tinyMCE.switchClassSticky(editor_id + '_anchor', 'mceButtonSelected');
-	}
+		// Handle visual aid
+		tinyMCE.switchClass(editor_id + '_visualaid', visual_aid ? 'mceButtonSelected' : 'mceButtonNormal');
 
-	// Get link
-	var anchorLink = tinyMCE.getParentElement(node, "a", "href");
-	if (anchorLink || any_selection) {
-		tinyMCE.switchClassSticky(editor_id + '_link', anchorLink ? 'mceButtonSelected' : 'mceButtonNormal', false);
-		tinyMCE.switchClassSticky(editor_id + '_unlink', anchorLink ? 'mceButtonSelected' : 'mceButtonNormal', false);
-	}
+		if (undo_levels != -1) {
+			tinyMCE.switchClass(editor_id + '_undo', 'mceButtonDisabled');
+			tinyMCE.switchClass(editor_id + '_redo', 'mceButtonDisabled');
+		}
 
-	// Handle visual aid
-	tinyMCE.switchClassSticky(editor_id + '_visualaid', visual_aid ? 'mceButtonSelected' : 'mceButtonNormal', false);
+		// Within li, blockquote
+		if (tinyMCE.getParentElement(node, "li,blockquote"))
+			tinyMCE.switchClass(editor_id + '_outdent', 'mceButtonNormal');
 
-	if (undo_levels != -1) {
-		tinyMCE.switchClassSticky(editor_id + '_undo', 'mceButtonDisabled', true);
-		tinyMCE.switchClassSticky(editor_id + '_redo', 'mceButtonDisabled', true);
-	}
+		// Has redo levels
+		if (undo_index != -1 && (undo_index < undo_levels-1 && undo_levels > 0))
+			tinyMCE.switchClass(editor_id + '_redo', 'mceButtonNormal');
 
-	// Within a td element
-	if (tinyMCE.getParentElement(node, "td")) {
-		tinyMCE.switchClassSticky(editor_id + '_row_before', 'mceButtonNormal', false);
-		tinyMCE.switchClassSticky(editor_id + '_row_after', 'mceButtonNormal', false);
-		tinyMCE.switchClassSticky(editor_id + '_delete_row', 'mceButtonNormal', false);
-		tinyMCE.switchClassSticky(editor_id + '_col_before', 'mceButtonNormal', false);
-		tinyMCE.switchClassSticky(editor_id + '_col_after', 'mceButtonNormal', false);
-		tinyMCE.switchClassSticky(editor_id + '_delete_col', 'mceButtonNormal', false);
-	}
+		// Has undo levels
+		if (undo_index != -1 && (undo_index > 0 && undo_levels > 0))
+			tinyMCE.switchClass(editor_id + '_undo', 'mceButtonNormal');
 
-	// Within table
-	if (tinyMCE.getParentElement(node, "table"))
-		tinyMCE.switchClassSticky(editor_id + '_table', 'mceButtonSelected');
+		// Select class in select box
+		var selectElm = document.getElementById(editor_id + "_styleSelect");
+		
+		if (selectElm) {
+			TinyMCE_AdvancedTheme._setupCSSClasses(editor_id);
 
-	// Within li, blockquote
-	if (tinyMCE.getParentElement(node, "li,blockquote"))
-		tinyMCE.switchClassSticky(editor_id + '_outdent', 'mceButtonNormal', false);
+			classNode = node;
+			breakOut = false;
+			var index = 0;
 
-	// Has redo levels
-	if (undo_index != -1 && (undo_index < undo_levels-1 && undo_levels > 0))
-		tinyMCE.switchClassSticky(editor_id + '_redo', 'mceButtonNormal', false);
+			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);
 
-	// Has undo levels
-	if (undo_index != -1 && (undo_index > 0 && undo_levels > 0))
-		tinyMCE.switchClassSticky(editor_id + '_undo', 'mceButtonNormal', false);
+			selectElm.selectedIndex = index;
+		}
 
-	// Select class in select box
-	var selectElm = document.getElementById(editor_id + "_styleSelect");
-	if (selectElm) {
-		TinyMCE_advanced_setupCSSClasses(editor_id);
+		// Select formatblock
+		var selectElm = document.getElementById(editor_id + "_formatSelect");
+		if (selectElm) {
+			var elm = tinyMCE.getParentElement(node, "p,div,h1,h2,h3,h4,h5,h6,pre,address");
 
-		classNode = node;
+			if (elm)
+				selectByValue(selectElm, "<" + elm.nodeName.toLowerCase() + ">");
+			else
+				selectByValue(selectElm, "");
+		}
+
+		// Select fontselect
+		var selectElm = document.getElementById(editor_id + "_fontNameSelect");
+		if (selectElm) {
+			if (!tinyMCE.isSafari && !(tinyMCE.isMSIE && !tinyMCE.isOpera)) {
+				var face = inst.queryCommandValue('FontName');
+
+				face = face == null || face == "" ? "" : face;
+
+				selectByValue(selectElm, face, face != "");
+			} else {
+				var elm = tinyMCE.getParentElement(node, "font", "face");
+
+				if (elm) {
+					var family = tinyMCE.getAttrib(elm, "face");
+
+					if (family == '')
+						family = '' + elm.style.fontFamily;
+
+					if (!selectByValue(selectElm, family, family != ""))
+						selectByValue(selectElm, "");
+				} else
+					selectByValue(selectElm, "");
+			}
+		}
+
+		// Select fontsize
+		var selectElm = document.getElementById(editor_id + "_fontSizeSelect");
+		if (selectElm) {
+			if (!tinyMCE.isSafari && !tinyMCE.isOpera) {
+				var size = inst.queryCommandValue('FontSize');
+				selectByValue(selectElm, size == null || size == "" ? "0" : size);
+			} else {
+				var elm = tinyMCE.getParentElement(node, "font", "size");
+				if (elm) {
+					var size = tinyMCE.getAttrib(elm, "size");
+
+					if (size == '') {
+						var sizes = new Array('', '8px', '10px', '12px', '14px', '18px', '24px', '36px');
+
+						size = '' + elm.style.fontSize;
+
+						for (var i=0; i<sizes.length; i++) {
+							if (('' + sizes[i]) == size) {
+								size = i;
+								break;
+							}
+						}
+					}
+
+					if (!selectByValue(selectElm, size))
+						selectByValue(selectElm, "");
+				} else
+					selectByValue(selectElm, "0");
+			}
+		}
+
+		// Handle align attributes
+		alignNode = node;
 		breakOut = false;
-		var index = 0;
+		do {
+			if (!alignNode.getAttribute || !alignNode.getAttribute('align'))
+				continue;
 
+			switch (alignNode.getAttribute('align').toLowerCase()) {
+				case "left":
+					tinyMCE.switchClass(editor_id + '_justifyleft', 'mceButtonSelected');
+					breakOut = true;
+				break;
+
+				case "right":
+					tinyMCE.switchClass(editor_id + '_justifyright', 'mceButtonSelected');
+					breakOut = true;
+				break;
+
+				case "middle":
+				case "center":
+					tinyMCE.switchClass(editor_id + '_justifycenter', 'mceButtonSelected');
+					breakOut = true;
+				break;
+
+				case "justify":
+					tinyMCE.switchClass(editor_id + '_justifyfull', 'mceButtonSelected');
+					breakOut = true;
+				break;
+			}
+		} while (!breakOut && (alignNode = alignNode.parentNode) != null);
+
+		// Div justification
+		var div = tinyMCE.getParentElement(node, "div");
+		if (div && div.style.textAlign == "center")
+			tinyMCE.switchClass(editor_id + '_justifycenter', 'mceButtonSelected');
+
+		// Do special text
+		if (!setup_content) {
+			// , "JustifyLeft", "_justifyleft", "JustifyCenter", "justifycenter", "JustifyRight", "justifyright", "JustifyFull", "justifyfull", "InsertUnorderedList", "bullist", "InsertOrderedList", "numlist", "InsertUnorderedList", "bullist", "Outdent", "outdent", "Indent", "indent", "subscript", "sub"
+			var ar = new Array("Bold", "_bold", "Italic", "_italic", "Strikethrough", "_strikethrough", "superscript", "_sup", "subscript", "_sub");
+			for (var i=0; i<ar.length; i+=2) {
+				if (inst.queryCommandState(ar[i]))
+					tinyMCE.switchClass(editor_id + ar[i+1], 'mceButtonSelected');
+			}
+
+			if (inst.queryCommandState("Underline") && (node.parentNode == null || node.parentNode.nodeName != "A"))
+				tinyMCE.switchClass(editor_id + '_underline', 'mceButtonSelected');
+		}
+
+		// Handle elements
 		do {
-			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;
-					}
+			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 (!breakOut && (classNode = classNode.parentNode));
+		} while ((node = node.parentNode) != null);
+	},
 
-		selectElm.selectedIndex = index;
-	}
+	// Private theme internal functions
 
-	// Select formatblock
-	var selectElm = document.getElementById(editor_id + "_formatSelect");
-	if (selectElm) {
-		var elm = tinyMCE.getParentElement(node, "p,div,h1,h2,h3,h4,h5,h6,pre,address");
-		if (elm) {
-			selectByValue(selectElm, "<" + elm.nodeName.toLowerCase() + ">");
+	// This function auto imports CSS classes into the class selection droplist
+	_setupCSSClasses : function(editor_id) {
+		var i, selectElm;
+
+		if (!TinyMCE_AdvancedTheme._autoImportCSSClasses)
+			return;
+
+		selectElm = document.getElementById(editor_id + '_styleSelect');
+
+		if (selectElm && selectElm.getAttribute('cssImported') != 'true') {
+			var csses = tinyMCE.getCSSClasses(editor_id);
+			if (csses && selectElm)	{
+				for (i=0; i<csses.length; i++)
+					selectElm.options[selectElm.options.length] = new Option(csses[i], csses[i]);
+			}
+
+			// Only do this once
+			if (csses != null && csses.length > 0)
+				selectElm.setAttribute('cssImported', 'true');
+		}
+	},
+
+	_setCookie : function(name, value, expires, path, domain, secure) {
+		var curCookie = name + "=" + escape(value) +
+			((expires) ? "; expires=" + expires.toGMTString() : "") +
+			((path) ? "; path=" + escape(path) : "") +
+			((domain) ? "; domain=" + domain : "") +
+			((secure) ? "; secure" : "");
+
+		document.cookie = curCookie;
+	},
+
+	_getCookie : function(name) {
+		var dc = document.cookie;
+		var prefix = name + "=";
+		var begin = dc.indexOf("; " + prefix);
+
+		if (begin == -1) {
+			begin = dc.indexOf(prefix);
+
+			if (begin != 0)
+				return null;
 		} else
-			selectByValue(selectElm, "<p>");
-	}
+			begin += 2;
 
-	// Select fontselect
-	var selectElm = document.getElementById(editor_id + "_fontNameSelect");
-	if (selectElm) {
-		var elm = tinyMCE.getParentElement(node, "font", "face");
-		if (elm)
-			selectByValue(selectElm, elm.getAttribute("face"));
-		else
-			selectByValue(selectElm, "");
-	}
+		var end = document.cookie.indexOf(";", begin);
 
-	// Select fontsize
-	var selectElm = document.getElementById(editor_id + "_fontSizeSelect");
-	if (selectElm) {
-		var elm = tinyMCE.getParentElement(node, "font", "size");
-		if (elm)
-			selectByValue(selectElm, elm.getAttribute("size"));
-		else
-			selectByValue(selectElm, "1");
-	}
+		if (end == -1)
+			end = dc.length;
 
-	// Handle align attributes
-	alignNode = node;
-	breakOut = false;
-	do {
-		if (!alignNode.getAttribute || !alignNode.getAttribute('align'))
-			continue;
+		return unescape(dc.substring(begin + prefix.length, end));
+	},
 
-		switch (alignNode.getAttribute('align').toLowerCase()) {
-			case "left":
-				tinyMCE.switchClassSticky(editor_id + '_justifyleft', 'mceButtonSelected');
-				breakOut = true;
-			break;
+	_resizeTo : function(inst, w, h, set_w) {
+		var editorContainer = document.getElementById(inst.editorId + '_parent');
+		var tableElm = editorContainer.firstChild;
+		var iframe = inst.iframeElement;
 
-			case "right":
-				tinyMCE.switchClassSticky(editor_id + '_justifyright', 'mceButtonSelected');
-				breakOut = true;
-			break;
+		if (w == null || w == "null") {
+			set_w = false;
+			w = 0;
+		}
 
-			case "middle":
-			case "center":
-				tinyMCE.switchClassSticky(editor_id + '_justifycenter', 'mceButtonSelected');
-				breakOut = true;
-			break;
+		if (h == null || h == "null")
+			return;
 
-			case "justify":
-				tinyMCE.switchClassSticky(editor_id + '_justifyfull', 'mceButtonSelected');
-				breakOut = true;
-			break;
+		w = parseInt(w);
+		h = parseInt(h);
+
+		if (tinyMCE.isGecko) {
+			w += 2;
+			h += 2;
 		}
-	} while (!breakOut && (alignNode = alignNode.parentNode));
 
-	// Handle elements
-	do {
-		switch (node.nodeName.toLowerCase()) {
-			case "b":
-			case "strong":
-				tinyMCE.switchClassSticky(editor_id + '_bold', 'mceButtonSelected');
-			break;
+		var dx = w - tableElm.clientWidth;
+		var dy = h - tableElm.clientHeight;
 
-			case "i":
-			case "em":
-				tinyMCE.switchClassSticky(editor_id + '_italic', 'mceButtonSelected');
-			break;
+		w = w < 1 ? 30 : w;
+		h = h < 1 ? 30 : h;
 
-			case "u":
-				tinyMCE.switchClassSticky(editor_id + '_underline', 'mceButtonSelected');
-			break;
+		if (set_w)
+			tableElm.style.width = w + "px";
 
-			case "strike":
-				tinyMCE.switchClassSticky(editor_id + '_strikethrough', 'mceButtonSelected');
-			break;
-			
-			case "ul":
-				tinyMCE.switchClassSticky(editor_id + '_bullist', 'mceButtonSelected');
-			break;
+		tableElm.style.height = h + "px";
 
-			case "ol":
-				tinyMCE.switchClassSticky(editor_id + '_numlist', 'mceButtonSelected');
-			break;
+		iw = iframe.clientWidth + dx;
+		ih = iframe.clientHeight + dy;
 
-			case "sub":
-				tinyMCE.switchClassSticky(editor_id + '_sub', 'mceButtonSelected');
-			break;
+		iw = iw < 1 ? 30 : iw;
+		ih = ih < 1 ? 30 : ih;
 
-			case "sup":
-				tinyMCE.switchClassSticky(editor_id + '_sup', 'mceButtonSelected');
-			break;
+		if (tinyMCE.isGecko) {
+			iw -= 2;
+			ih -= 2;
+		}
 
-            case "hr":
-                tinyMCE.switchClassSticky(editor_id + '_hr', 'mceButtonSelected');
-            break;
+		if (set_w)
+			iframe.style.width = iw + "px";
 
-            case "img":
-				if (getAttrib(node, 'name').indexOf('mce_') != 0)
-					tinyMCE.switchClassSticky(editor_id + '_image', 'mceButtonSelected');
-            break;
+		iframe.style.height = ih + "px";
+
+		// Is it to small, make it bigger again
+		if (set_w) {
+			var tableBodyElm = tableElm.firstChild;
+			var minIframeWidth = tableBodyElm.scrollWidth;
+			if (inst.iframeElement.clientWidth < minIframeWidth) {
+				dx = minIframeWidth - inst.iframeElement.clientWidth;
+
+				inst.iframeElement.style.width = (iw + dx) + "px";
+			}
 		}
-	} while ((node = node.parentNode));
-}
 
-// This function auto imports CSS classes into the class selection droplist
-function TinyMCE_advanced_setupCSSClasses(editor_id) {
-	if (!TinyMCE_advanced_autoImportCSSClasses)
-		return;
+		// Remove pesky table controls
+		inst.useCSS = false;
+	},
 
-	var selectElm = document.getElementById(editor_id + '_styleSelect');
+	/**
+	 * Handles resizing events.
+	 */
+	_resizeEventHandler : function(e) {
+		var resizer = TinyMCE_AdvancedTheme._resizer;
 
-	if (selectElm && selectElm.getAttribute('cssImported') != 'true') {
-		var csses = tinyMCE.getCSSClasses(editor_id);
-		if (csses && selectElm) {
-			for (var i=0; i<csses.length; i++)
-				selectElm.options[selectElm.length] = new Option(csses[i], csses[i]);
+		// Do nothing
+		if (!resizer.resizing)
+			return;
+
+		e = typeof(e) == "undefined" ? window.event : e;
+
+		var dx = e.screenX - resizer.downX;
+		var dy = e.screenY - resizer.downY;
+		var resizeBox = resizer.resizeBox;
+		var editorId = resizer.editorId;
+
+		switch (e.type) {
+			case "mousemove":
+				var w, h;
+
+				w = resizer.width + dx;
+				h = resizer.height + dy;
+
+				w = w < 1 ? 1 : w;
+				h = h < 1 ? 1 : h;
+
+				if (resizer.horizontal)
+					resizeBox.style.width = w + "px";
+
+				resizeBox.style.height = h + "px";
+				break;
+
+			case "mouseup":
+				TinyMCE_AdvancedTheme._setResizing(e, editorId, false);
+				TinyMCE_AdvancedTheme._resizeTo(tinyMCE.getInstanceById(editorId), resizer.width + dx, resizer.height + dy, resizer.horizontal);
+
+				// Expire in a month
+				if (tinyMCE.getParam("theme_advanced_resizing_use_cookie", true)) {
+					var expires = new Date();
+					expires.setTime(expires.getTime() + 3600000 * 24 * 30);
+
+					// Set the cookies
+					TinyMCE_AdvancedTheme._setCookie("TinyMCE_" + editorId + "_width", "" + (resizer.horizontal ? resizer.width + dx : ""), expires);
+					TinyMCE_AdvancedTheme._setCookie("TinyMCE_" + editorId + "_height", "" + (resizer.height + dy), expires);
+				}
+				break;
 		}
+	},
 
-		// Only do this once
-		if (csses != null && csses.length > 0)
-			selectElm.setAttribute('cssImported', 'true');
+	/**
+	 * Starts/stops the editor resizing.
+	 */
+	_setResizing : function(e, editor_id, state) {
+		e = typeof(e) == "undefined" ? window.event : e;
+
+		var resizer = TinyMCE_AdvancedTheme._resizer;
+		var editorContainer = document.getElementById(editor_id + '_parent');
+		var editorArea = document.getElementById(editor_id + '_parent').firstChild;
+		var resizeBox = document.getElementById(editor_id + '_resize_box');
+		var inst = tinyMCE.getInstanceById(editor_id);
+
+		if (state) {
+			// Place box over editor area
+			var width = editorArea.clientWidth;
+			var height = editorArea.clientHeight;
+
+			resizeBox.style.width = width + "px";
+			resizeBox.style.height = height + "px";
+
+			resizer.iframeWidth = inst.iframeElement.clientWidth;
+			resizer.iframeHeight = inst.iframeElement.clientHeight;
+
+			// Hide editor and show resize box
+			editorArea.style.display = "none";
+			resizeBox.style.display = "block";
+
+			// Add event handlers, only once
+			if (!resizer.eventHandlers) {
+				if (tinyMCE.isMSIE)
+					tinyMCE.addEvent(document, "mousemove", TinyMCE_AdvancedTheme._resizeEventHandler);
+				else
+					tinyMCE.addEvent(window, "mousemove", TinyMCE_AdvancedTheme._resizeEventHandler);
+
+				tinyMCE.addEvent(document, "mouseup", TinyMCE_AdvancedTheme._resizeEventHandler);
+
+				resizer.eventHandlers = true;
+			}
+
+			resizer.resizing = true;
+			resizer.downX = e.screenX;
+			resizer.downY = e.screenY;
+			resizer.width = parseInt(resizeBox.style.width);
+			resizer.height = parseInt(resizeBox.style.height);
+			resizer.editorId = editor_id;
+			resizer.resizeBox = resizeBox;
+			resizer.horizontal = tinyMCE.getParam("theme_advanced_resize_horizontal", true);
+		} else {
+			resizer.resizing = false;
+			resizeBox.style.display = "none";
+			editorArea.style.display = tinyMCE.isMSIE && !tinyMCE.isOpera ? "block" : "table";
+			tinyMCE.execCommand('mceResetDesignMode');
+		}
+	},
+
+	_getColorHTML : function(id, n, cm) {
+		var i, h, cl;
+
+		h = '<span class="mceMenuLine"></span>';
+		cl = tinyMCE.getParam(n, TinyMCE_AdvancedTheme._defColors).split(',');
+
+		h += '<table class="mceColors"><tr>';
+		for (i=0; i<cl.length; i++) {
+			c = 'tinyMCE.execInstanceCommand(\'' + id + '\', \'' + cm + '\', false, \'#' + cl[i] + '\');';
+			h += '<td><a href="javascript:' + c + '" style="background-color: #' + cl[i] + '" onclick="' + c + ';return false;"></a></td>';
+
+			if ((i+1) % 8 == 0)
+				h += '</tr><tr>';
+		}
+
+		h += '</tr></table>';
+		/*
+		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');
+
+		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);") + "';";
+
+			// Use alt as title if it's undefined
+			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);
+
+			// Fix for bug #989846 - Image resize bug
+			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);
+
+// Add default buttons maps for advanced theme and all internal plugins
+tinyMCE.addButtonMap(TinyMCE_AdvancedTheme._buttonMap);

Modified: labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/themes/advanced/image.htm
===================================================================
--- labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/themes/advanced/image.htm	2007-01-11 22:09:16 UTC (rev 8831)
+++ labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/themes/advanced/image.htm	2007-01-11 22:10:56 UTC (rev 8832)
@@ -1,69 +1,57 @@
-<html>
+<html xmlns="http://www.w3.org/1999/xhtml">
 <head>
-<title>{$lang_insert_image_title}</title>
-<script language="javascript" src="../../tiny_mce_popup.js"></script>
-<script language="javascript">
-	function insertImage() {
-		if (window.opener) {
-			var src = document.forms[0].src.value;
-			var alt = document.forms[0].alt.value;
-			var border = document.forms[0].border.value;
-			var vspace = document.forms[0].vspace.value;
-			var hspace = document.forms[0].hspace.value;
-			var width = document.forms[0].width.value;
-			var height = document.forms[0].height.value;
-			var align = document.forms[0].align.options[document.forms[0].align.selectedIndex].value;
+	<title>{$lang_insert_image_title}</title>
+	<script language="javascript" type="text/javascript" src="../../tiny_mce_popup.js"></script>
+	<script language="javascript" type="text/javascript" src="../../utils/mctabs.js"></script>
+	<script language="javascript" type="text/javascript" src="../../utils/form_utils.js"></script>
+	<script language="javascript" type="text/javascript" src="jscripts/image.js"></script>
+	<base target="_self" />
+</head>
+<body id="image" onload="tinyMCEPopup.executeOnLoad('init();');" style="display: none">
+<form onsubmit="insertImage();return false;" action="#">
+	<div class="tabs">
+		<ul>
+			<li id="general_tab" class="current"><span><a href="javascript:mcTabs.displayTab('general_tab','general_panel');" onmousedown="return false;">{$lang_insert_image_title}</a></span></li>
+		</ul>
+	</div>
 
-			window.opener.tinyMCE.insertImage(src, alt, border, hspace, vspace, width, height, align);
-			top.close();
-		}
-	}
+	<div class="panel_wrapper">
+		<div id="general_panel" class="panel current">
+     <table border="0" cellpadding="4" cellspacing="0">
+          <tr>
+            <td nowrap="nowrap"><label for="src">{$lang_insert_image_src}</label></td>
+            <td><table border="0" cellspacing="0" cellpadding="0">
+                <tr>
+                  <td><input id="src" name="src" type="text" value="" style="width: 200px" onchange="getImageData();"></td>
+                  <td id="srcbrowsercontainer">&nbsp;</td>
+                </tr>
+              </table></td>
+          </tr>
+		  <!-- Image list -->
+		  <script language="javascript">
+			if (typeof(tinyMCEImageList) != "undefined" && tinyMCEImageList.length > 0) {
+				var html = "";
 
-	function init() {
-		var formObj = document.forms[0];
+				html += '<tr><td><label for="image_list">{$lang_image_list}</label></td>';
+				html += '<td><select id="image_list" name="image_list" style="width: 200px" onchange="this.form.src.value=this.options[this.selectedIndex].value;resetImageData();getImageData();">';
+				html += '<option value="">---</option>';
 
-		for (var i=0; i<document.forms[0].align.options.length; i++) {
-			if (document.forms[0].align.options[i].value == tinyMCE.getWindowArg('align'))
-				document.forms[0].align.options.selectedIndex = i;
-		}
+				for (var i=0; i<tinyMCEImageList.length; i++)
+					html += '<option value="' + tinyMCEImageList[i][1] + '">' + tinyMCEImageList[i][0] + '</option>';
 
-		formObj.src.value = tinyMCE.getWindowArg('src');
-		formObj.alt.value = tinyMCE.getWindowArg('alt');
-		formObj.border.value = tinyMCE.getWindowArg('border');
-		formObj.vspace.value = tinyMCE.getWindowArg('vspace');
-		formObj.hspace.value = tinyMCE.getWindowArg('hspace');
-		formObj.width.value = tinyMCE.getWindowArg('width');
-		formObj.height.value = tinyMCE.getWindowArg('height');
-		formObj.height.value = tinyMCE.getWindowArg('height');
-		formObj.insert.value = tinyMCE.getLang('lang_' + tinyMCE.getWindowArg('action')); 
+				html += '</select></td></tr>';
 
-		window.focus();
-	}
-
-	function cancelAction() {
-		top.close();
-	}
-</script>
-</head>
-<body onload="window.focus();init();">
-<form onsubmit="insertImage();return false;">
-  <table border="0" cellpadding="0" cellspacing="0" width="100%">
-    <tr>
-      <td align="center" valign="middle"><table border="0" cellpadding="4" cellspacing="0">
+				document.write(html);
+			}
+		  </script>
+		  <!-- /Image list -->
           <tr>
-            <td colspan="2" class="title">{$lang_insert_image_title}</td>
+            <td nowrap="nowrap"><label for="alt">{$lang_insert_image_alt}</label></td>
+            <td><input id="alt" name="alt" type="text" value="" style="width: 200px"></td>
           </tr>
           <tr>
-            <td>{$lang_insert_image_src}:</td>
-            <td><input name="src" type="text" id="src" value="" style="width: 200px"></td>
-          </tr>
-          <tr>
-            <td>{$lang_insert_image_alt}:</td>
-            <td><input name="alt" type="text" id="alt" value="" style="width: 200px"></td>
-          </tr>
-          <tr>
-            <td>{$lang_insert_image_align}:</td>
-            <td><select name="align">
+            <td nowrap="nowrap"><label for="align">{$lang_insert_image_align}</label></td>
+            <td><select id="align" name="align">
                 <option value="">{$lang_insert_image_align_default}</option>
                 <option value="baseline">{$lang_insert_image_align_baseline}</option>
                 <option value="top">{$lang_insert_image_align_top}</option>
@@ -77,31 +65,36 @@
               </select></td>
           </tr>
           <tr>
-            <td>{$lang_insert_image_dimensions}:</td>
-            <td><input name="width" type="text" id="width" value="" size="3" maxlength="3">
+            <td nowrap="nowrap"><label for="width">{$lang_insert_image_dimensions}</label></td>
+            <td><input id="width" name="width" type="text" value="" size="3" maxlength="3">
               x
-              <input name="height" type="text" id="height" value="" size="3" maxlength="3"></td>
+              <input id="height" name="height" type="text" value="" size="3" maxlength="3"></td>
           </tr>
           <tr>
-            <td>{$lang_insert_image_border}:</td>
-            <td><input name="border" type="text" id="border" value="" size="3" maxlength="3"></td>
+            <td nowrap="nowrap"><label for="border">{$lang_insert_image_border}</label></td>
+            <td><input id="border" name="border" type="text" value="" size="3" maxlength="3"></td>
           </tr>
           <tr>
-            <td>{$lang_insert_image_vspace}:</td>
-            <td><input name="vspace" type="text" id="vspace" value="" size="3" maxlength="3"></td>
+            <td nowrap="nowrap"><label for="vspace">{$lang_insert_image_vspace}</label></td>
+            <td><input id="vspace" name="vspace" type="text" value="" size="3" maxlength="3"></td>
           </tr>
           <tr>
-            <td>{$lang_insert_image_hspace}:</td>
-            <td><input name="hspace" type="text" id="hspace" value="" size="3" maxlength="3"></td>
+            <td nowrap="nowrap"><label for="hspace">{$lang_insert_image_hspace}</label></td>
+            <td><input id="hspace" name="hspace" type="text" value="" size="3" maxlength="3"></td>
           </tr>
-          <tr>
-            <td><input type="button" id="insert" name="insert" value="{$lang_insert}" onclick="insertImage();">
-            </td>
-            <td align="right"><input type="button" id="cancel" name="cancel" value="{$lang_cancel}" onclick="cancelAction();"></td>
-          </tr>
-        </table></td>
-    </tr>
-  </table>
+        </table>
+		</div>
+	</div>
+
+	<div class="mceActionPanel">
+		<div style="float: left">
+			<input type="button" id="insert" name="insert" value="{$lang_insert}" onclick="insertImage();" />
+		</div>
+
+		<div style="float: right">
+			<input type="button" id="cancel" name="cancel" value="{$lang_cancel}" onclick="tinyMCEPopup.close();" />
+		</div>
+	</div>
 </form>
 </body>
 </html>

Modified: labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/themes/advanced/images/anchor.gif
===================================================================
(Binary files differ)

Added: labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/themes/advanced/images/anchor_symbol.gif
===================================================================
(Binary files differ)


Property changes on: labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/themes/advanced/images/anchor_symbol.gif
___________________________________________________________________
Name: svn:mime-type
   + application/octet-stream

Added: labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/themes/advanced/images/backcolor.gif
===================================================================
(Binary files differ)


Property changes on: labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/themes/advanced/images/backcolor.gif
___________________________________________________________________
Name: svn:mime-type
   + application/octet-stream

Modified: labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/themes/advanced/images/bold.gif
===================================================================
(Binary files differ)

Modified: labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/themes/advanced/images/bold_de_se.gif
===================================================================
(Binary files differ)

Added: labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/themes/advanced/images/bold_es.gif
===================================================================
(Binary files differ)


Property changes on: labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/themes/advanced/images/bold_es.gif
___________________________________________________________________
Name: svn:mime-type
   + application/octet-stream

Modified: labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/themes/advanced/images/bold_fr.gif
===================================================================
(Binary files differ)

Modified: labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/themes/advanced/images/bold_ru.gif
===================================================================
(Binary files differ)

Added: labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/themes/advanced/images/bold_tw.gif
===================================================================
(Binary files differ)


Property changes on: labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/themes/advanced/images/bold_tw.gif
___________________________________________________________________
Name: svn:mime-type
   + application/octet-stream

Added: labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/themes/advanced/images/browse.gif
===================================================================
(Binary files differ)


Property changes on: labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/themes/advanced/images/browse.gif
___________________________________________________________________
Name: svn:mime-type
   + application/octet-stream

Modified: labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/themes/advanced/images/bullist.gif
===================================================================
(Binary files differ)

Added: labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/themes/advanced/images/button_menu.gif
===================================================================
(Binary files differ)


Property changes on: labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/themes/advanced/images/button_menu.gif
___________________________________________________________________
Name: svn:mime-type
   + application/octet-stream

Added: labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/themes/advanced/images/buttons.gif
===================================================================
(Binary files differ)


Property changes on: labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/themes/advanced/images/buttons.gif
___________________________________________________________________
Name: svn:mime-type
   + application/octet-stream

Added: labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/themes/advanced/images/cancel_button_bg.gif
===================================================================
(Binary files differ)


Property changes on: labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/themes/advanced/images/cancel_button_bg.gif
___________________________________________________________________
Name: svn:mime-type
   + application/octet-stream

Modified: labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/themes/advanced/images/charmap.gif
===================================================================
(Binary files differ)

Modified: labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/themes/advanced/images/cleanup.gif
===================================================================
(Binary files differ)

Added: labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/themes/advanced/images/close.gif
===================================================================
(Binary files differ)


Property changes on: labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/themes/advanced/images/close.gif
___________________________________________________________________
Name: svn:mime-type
   + application/octet-stream

Modified: labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/themes/advanced/images/code.gif
===================================================================
(Binary files differ)

Added: labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/themes/advanced/images/color.gif
===================================================================
(Binary files differ)


Property changes on: labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/themes/advanced/images/color.gif
___________________________________________________________________
Name: svn:mime-type
   + application/octet-stream

Modified: labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/themes/advanced/images/copy.gif
===================================================================
(Binary files differ)

Modified: labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/themes/advanced/images/custom_1.gif
===================================================================
(Binary files differ)

Modified: labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/themes/advanced/images/cut.gif
===================================================================
(Binary files differ)

Modified: labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/themes/advanced/images/forecolor.gif
===================================================================
(Binary files differ)

Modified: labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/themes/advanced/images/help.gif
===================================================================
(Binary files differ)

Modified: labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/themes/advanced/images/hr.gif
===================================================================
(Binary files differ)

Modified: labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/themes/advanced/images/image.gif
===================================================================
(Binary files differ)

Modified: labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/themes/advanced/images/indent.gif
===================================================================
(Binary files differ)

Added: labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/themes/advanced/images/insert_button_bg.gif
===================================================================
(Binary files differ)


Property changes on: labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/themes/advanced/images/insert_button_bg.gif
___________________________________________________________________
Name: svn:mime-type
   + application/octet-stream

Modified: labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/themes/advanced/images/italic.gif
===================================================================
(Binary files differ)

Modified: labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/themes/advanced/images/italic_de_se.gif
===================================================================
(Binary files differ)

Added: labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/themes/advanced/images/italic_es.gif
===================================================================
(Binary files differ)


Property changes on: labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/themes/advanced/images/italic_es.gif
___________________________________________________________________
Name: svn:mime-type
   + application/octet-stream

Modified: labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/themes/advanced/images/italic_ru.gif
===================================================================
(Binary files differ)

Added: labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/themes/advanced/images/italic_tw.gif
===================================================================
(Binary files differ)


Property changes on: labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/themes/advanced/images/italic_tw.gif
___________________________________________________________________
Name: svn:mime-type
   + application/octet-stream

Added: labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/themes/advanced/images/justifycenter.gif
===================================================================
(Binary files differ)


Property changes on: labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/themes/advanced/images/justifycenter.gif
___________________________________________________________________
Name: svn:mime-type
   + application/octet-stream

Added: labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/themes/advanced/images/justifyfull.gif
===================================================================
(Binary files differ)


Property changes on: labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/themes/advanced/images/justifyfull.gif
___________________________________________________________________
Name: svn:mime-type
   + application/octet-stream

Added: labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/themes/advanced/images/justifyleft.gif
===================================================================
(Binary files differ)


Property changes on: labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/themes/advanced/images/justifyleft.gif
___________________________________________________________________
Name: svn:mime-type
   + application/octet-stream

Added: labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/themes/advanced/images/justifyright.gif
===================================================================
(Binary files differ)


Property changes on: labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/themes/advanced/images/justifyright.gif
___________________________________________________________________
Name: svn:mime-type
   + application/octet-stream

Modified: labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/themes/advanced/images/link.gif
===================================================================
(Binary files differ)

Added: labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/themes/advanced/images/menu_check.gif
===================================================================
(Binary files differ)


Property changes on: labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/themes/advanced/images/menu_check.gif
___________________________________________________________________
Name: svn:mime-type
   + application/octet-stream

Added: labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/themes/advanced/images/newdocument.gif
===================================================================
(Binary files differ)


Property changes on: labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/themes/advanced/images/newdocument.gif
___________________________________________________________________
Name: svn:mime-type
   + application/octet-stream

Modified: labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/themes/advanced/images/numlist.gif
===================================================================
(Binary files differ)

Added: labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/themes/advanced/images/opacity.png
===================================================================
(Binary files differ)


Property changes on: labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/themes/advanced/images/opacity.png
___________________________________________________________________
Name: svn:mime-type
   + application/octet-stream

Modified: labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/themes/advanced/images/outdent.gif
===================================================================
(Binary files differ)

Modified: labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/themes/advanced/images/paste.gif
===================================================================
(Binary files differ)

Modified: labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/themes/advanced/images/redo.gif
===================================================================
(Binary files differ)

Modified: labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/themes/advanced/images/removeformat.gif
===================================================================
(Binary files differ)

Added: labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/themes/advanced/images/separator.gif
===================================================================
(Binary files differ)


Property changes on: labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/themes/advanced/images/separator.gif
___________________________________________________________________
Name: svn:mime-type
   + application/octet-stream

Modified: labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/themes/advanced/images/spacer.gif
===================================================================
(Binary files differ)

Added: labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/themes/advanced/images/statusbar_resize.gif
===================================================================
(Binary files differ)


Property changes on: labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/themes/advanced/images/statusbar_resize.gif
___________________________________________________________________
Name: svn:mime-type
   + application/octet-stream

Modified: labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/themes/advanced/images/strikethrough.gif
===================================================================
(Binary files differ)

Modified: labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/themes/advanced/images/sub.gif
===================================================================
(Binary files differ)

Modified: labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/themes/advanced/images/sup.gif
===================================================================
(Binary files differ)

Modified: labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/themes/advanced/images/underline.gif
===================================================================
(Binary files differ)

Added: labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/themes/advanced/images/underline_es.gif
===================================================================
(Binary files differ)


Property changes on: labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/themes/advanced/images/underline_es.gif
___________________________________________________________________
Name: svn:mime-type
   + application/octet-stream

Added: labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/themes/advanced/images/underline_fr.gif
===================================================================
(Binary files differ)


Property changes on: labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/themes/advanced/images/underline_fr.gif
___________________________________________________________________
Name: svn:mime-type
   + application/octet-stream

Modified: labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/themes/advanced/images/underline_ru.gif
===================================================================
(Binary files differ)

Added: labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/themes/advanced/images/underline_tw.gif
===================================================================
(Binary files differ)


Property changes on: labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/themes/advanced/images/underline_tw.gif
___________________________________________________________________
Name: svn:mime-type
   + application/octet-stream

Modified: labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/themes/advanced/images/undo.gif
===================================================================
(Binary files differ)

Modified: labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/themes/advanced/images/unlink.gif
===================================================================
(Binary files differ)

Modified: labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/themes/advanced/images/visualaid.gif
===================================================================
(Binary files differ)

Added: labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/themes/advanced/images/xp/tab_bg.gif
===================================================================
(Binary files differ)


Property changes on: labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/themes/advanced/images/xp/tab_bg.gif
___________________________________________________________________
Name: svn:mime-type
   + application/octet-stream

Added: labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/themes/advanced/images/xp/tab_end.gif
===================================================================
(Binary files differ)


Property changes on: labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/themes/advanced/images/xp/tab_end.gif
___________________________________________________________________
Name: svn:mime-type
   + application/octet-stream

Added: labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/themes/advanced/images/xp/tab_sel_bg.gif
===================================================================
(Binary files differ)


Property changes on: labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/themes/advanced/images/xp/tab_sel_bg.gif
___________________________________________________________________
Name: svn:mime-type
   + application/octet-stream

Added: labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/themes/advanced/images/xp/tab_sel_end.gif
===================================================================
(Binary files differ)


Property changes on: labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/themes/advanced/images/xp/tab_sel_end.gif
___________________________________________________________________
Name: svn:mime-type
   + application/octet-stream

Added: labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/themes/advanced/images/xp/tabs_bg.gif
===================================================================
(Binary files differ)


Property changes on: labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/themes/advanced/images/xp/tabs_bg.gif
___________________________________________________________________
Name: svn:mime-type
   + application/octet-stream

Added: labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/themes/advanced/jscripts/about.js
===================================================================
--- labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/themes/advanced/jscripts/about.js	2007-01-11 22:09:16 UTC (rev 8831)
+++ labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/themes/advanced/jscripts/about.js	2007-01-11 22:10:56 UTC (rev 8832)
@@ -0,0 +1,75 @@
+function init() {
+	var inst;
+
+	tinyMCEPopup.resizeToInnerSize();
+	inst = tinyMCE.selectedInstance;
+
+	// Give FF some time
+	window.setTimeout('insertHelpIFrame();', 10);
+
+	var tcont = document.getElementById('plugintablecontainer');
+	var plugins = tinyMCE.getParam('plugins', '', true, ',');
+	if (plugins.length == 0)
+		document.getElementById('plugins_tab').style.display = 'none';
+
+	var html = "";
+	html += '<table id="plugintable">';
+	html += '<thead>';
+	html += '<tr>';
+	html += '<td>' + tinyMCE.getLang('lang_plugin') + '</td>';
+	html += '<td>' + tinyMCE.getLang('lang_author') + '</td>';
+	html += '<td>' + tinyMCE.getLang('lang_version') + '</td>';
+	html += '</tr>';
+	html += '</thead>';
+	html += '<tbody>';
+
+	for (var i=0; i<inst.plugins.length; i++) {
+		var info = getPluginInfo(inst.plugins[i]);
+
+		html += '<tr>';
+
+		if (info.infourl != null && info.infourl != '')
+			html += '<td width="50%" title="' + plugins[i] + '"><a href="' + info.infourl + '" target="mceplugin">' + info.longname + '</a></td>';
+		else
+			html += '<td width="50%" title="' + plugins[i] + '">' + info.longname + '</td>';
+
+		if (info.authorurl != null && info.authorurl != '')
+			html += '<td width="35%"><a href="' + info.authorurl + '" target="mceplugin">' + info.author + '</a></td>';
+		else
+			html += '<td width="35%">' + info.author + '</td>';
+
+		html += '<td width="15%">' + info.version + '</td>';
+		html += '</tr>';
+	}
+
+	html += '</tbody>';
+	html += '</table>';
+
+	tcont.innerHTML = html;
+}
+
+function getPluginInfo(name) {
+	if (tinyMCE.plugins[name].getInfo)
+		return tinyMCE.plugins[name].getInfo();
+
+	return {
+		longname : name,
+		authorurl : '',
+		infourl : '',
+		author : '--',
+		version : '--'
+	};
+}
+
+function insertHelpIFrame() {
+	var html = '<iframe width="100%" height="300" src="' + tinyMCE.themeURL + "/docs/" + tinyMCE.settings['docs_language'] + "/index.htm" + '"></iframe>';
+
+	document.getElementById('iframecontainer').innerHTML = html;
+
+	html = '';
+	html += '<a href="http://www.moxiecode.com" target="_blank"><img src="http://tinymce.moxiecode.com/images/gotmoxie.png" alt="Got Moxie?" border="0" /></a> ';
+	html += '<a href="http://sourceforge.net/projects/tinymce/" target="_blank"><img src="http://sourceforge.net/sflogo.php?group_id=103281" alt="Hosted By Sourceforge" border="0" /></a> ';
+	html += '<a href="http://www.freshmeat.net/projects/tinymce" target="_blank"><img src="http://tinymce.moxiecode.com/images/fm.gif" alt="Also on freshmeat" border="0" /></a> ';
+
+	document.getElementById('buttoncontainer').innerHTML = html;
+}

Added: labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/themes/advanced/jscripts/anchor.js
===================================================================
--- labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/themes/advanced/jscripts/anchor.js	2007-01-11 22:09:16 UTC (rev 8831)
+++ labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/themes/advanced/jscripts/anchor.js	2007-01-11 22:10:56 UTC (rev 8832)
@@ -0,0 +1,74 @@
+var action, element;
+
+function init() {
+	tinyMCEPopup.resizeToInnerSize();
+
+	var inst = tinyMCE.getInstanceById(tinyMCE.getWindowArg('editor_id'));
+	var anchor = tinyMCE.getParentElement(inst.getFocusElement(), "a", "name");
+	var img = inst.getFocusElement();
+	action = 'insert';
+
+	if (anchor != null) {
+		element = anchor;
+		action = "update";
+	}
+
+	if (tinyMCE.getAttrib(img, "class") == "mceItemAnchor") {
+		element = img;
+		action = "update";
+	}
+
+	if (action == "update")
+		document.forms[0].anchorName.value = element.nodeName == "IMG" ? element.getAttribute("title") : element.getAttribute("name");
+
+	document.forms[0].insert.value = tinyMCE.getLang('lang_' + action, 'Insert', true);
+}
+
+function insertAnchor() {
+	var inst = tinyMCE.getInstanceById(tinyMCE.getWindowArg('editor_id'));
+	var name = document.forms[0].anchorName.value, e;
+
+	tinyMCEPopup.execCommand("mceBeginUndoLevel");
+
+	if (action == "update") {
+		if (element.nodeName == "IMG")
+			element.setAttribute("title", name);
+		else
+			element.setAttribute("name", name);
+	} else {
+		var rng = inst.getRng();
+
+		if (rng.collapse)
+			rng.collapse(false);
+
+		name = name.replace(/&/g, '&amp;');
+		name = name.replace(/\"/g, '&quot;');
+		name = name.replace(/</g, '&lt;');
+		name = name.replace(/>/g, '&gt;');
+
+		// Fix for bug #1447335
+		if (tinyMCE.isGecko)
+			html = '<a id="mceNewAnchor" name="' + name + '"></a>';
+		else
+			html = '<a name="' + name + '"></a>';
+
+		tinyMCEPopup.execCommand("mceInsertContent", false, html);
+
+		// Fix for bug #1447335 force cursor after the anchor element
+		if (tinyMCE.isGecko) {
+			e = inst.getDoc().getElementById('mceNewAnchor');
+
+			if (e) {
+				inst.selection.selectNode(e, true, false, false);
+				e.removeAttribute('id');
+			}
+		}
+
+		tinyMCE.handleVisualAid(inst.getBody(), true, inst.visualAid, inst);
+	}
+
+	tinyMCEPopup.execCommand("mceEndUndoLevel");
+
+	tinyMCE.triggerNodeChange();
+	tinyMCEPopup.close();
+}

Added: labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/themes/advanced/jscripts/charmap.js
===================================================================
--- labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/themes/advanced/jscripts/charmap.js	2007-01-11 22:09:16 UTC (rev 8831)
+++ labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/themes/advanced/jscripts/charmap.js	2007-01-11 22:10:56 UTC (rev 8832)
@@ -0,0 +1,326 @@
+function init() {
+	tinyMCEPopup.resizeToInnerSize();
+}
+
+var charmap = new Array();
+
+// for mor details please see w3c.org
+// now here is the complete list ;)
+
+charmap = [
+	['&nbsp;',    '&#160;',  true, 'no-break space'],
+	['&amp;',     '&#38;',   true, 'ampersand'],
+	['&quot;',    '&#34;',   true, 'quotation mark'],
+// finance
+	['&cent;',    '&#162;',  true, 'cent sign'],
+	['&euro;',    '&#8364;', true, 'euro sign'],
+	['&pound;',   '&#163;',  true, 'pound sign'],
+	['&yen;',     '&#165;',  true, 'yen sign'],
+// signs
+	['&copy;',    '&#169;',  true, 'copyright sign'],
+	['&reg;',     '&#174;',  true, 'registered sign'],
+	['&trade;',   '&#8482;', true, 'trade mark sign'],
+	['&permil;',  '&#8240;', true, 'per mille sign'],
+	['&micro;',   '&#181;',  true, 'micro sign'],
+	['&middot;',  '&#183;',  true, 'middle dot'],
+	['&bull;',    '&#8226;', true, 'bullet'],
+	['&hellip;',  '&#8230;', true, 'three dot leader'],
+	['&prime;',   '&#8242;', true, 'minutes / feet'],
+	['&Prime;',   '&#8243;', true, 'seconds / inches'],
+	['&sect;',    '&#167;',  true, 'section sign'],
+	['&para;',    '&#182;',  true, 'paragraph sign'],
+	['&szlig;',   '&#223;',  true, 'sharp s / ess-zed'],
+// quotations
+	['&lsaquo;',  '&#8249;', true, 'single left-pointing angle quotation mark'],
+	['&rsaquo;',  '&#8250;', true, 'single right-pointing angle quotation mark'],
+	['&laquo;',   '&#171;',  true, 'left pointing guillemet'],
+	['&raquo;',   '&#187;',  true, 'right pointing guillemet'],
+	['&lsquo;',   '&#8216;', true, 'left single quotation mark'],
+	['&rsquo;',   '&#8217;', true, 'right single quotation mark'],
+	['&ldquo;',   '&#8220;', true, 'left double quotation mark'],
+	['&rdquo;',   '&#8221;', true, 'right double quotation mark'],
+	['&sbquo;',   '&#8218;', true, 'single low-9 quotation mark'],
+	['&bdquo;',   '&#8222;', true, 'double low-9 quotation mark'],
+	['&lt;',      '&#60;',   true, 'less-than sign'],
+	['&gt;',      '&#62;',   true, 'greater-than sign'],
+	['&le;',      '&#8804;', true, 'less-than or equal to'],
+	['&ge;',      '&#8805;', true, 'greater-than or equal to'],
+	['&ndash;',   '&#8211;', true, 'en dash'],
+	['&mdash;',   '&#8212;', true, 'em dash'],
+	['&macr;',    '&#175;',  true, 'macron'],
+	['&oline;',   '&#8254;', true, 'overline'],
+	['&curren;',  '&#164;',  true, 'currency sign'],
+	['&brvbar;',  '&#166;',  true, 'broken bar'],
+	['&uml;',     '&#168;',  true, 'diaeresis'],
+	['&iexcl;',   '&#161;',  true, 'inverted exclamation mark'],
+	['&iquest;',  '&#191;',  true, 'turned question mark'],
+	['&circ;',    '&#710;',  true, 'circumflex accent'],
+	['&tilde;',   '&#732;',  true, 'small tilde'],
+	['&deg;',     '&#176;',  true, 'degree sign'],
+	['&minus;',   '&#8722;', true, 'minus sign'],
+	['&plusmn;',  '&#177;',  true, 'plus-minus sign'],
+	['&divide;',  '&#247;',  true, 'division sign'],
+	['&frasl;',   '&#8260;', true, 'fraction slash'],
+	['&times;',   '&#215;',  true, 'multiplication sign'],
+	['&sup1;',    '&#185;',  true, 'superscript one'],
+	['&sup2;',    '&#178;',  true, 'superscript two'],
+	['&sup3;',    '&#179;',  true, 'superscript three'],
+	['&frac14;',  '&#188;',  true, 'fraction one quarter'],
+	['&frac12;',  '&#189;',  true, 'fraction one half'],
+	['&frac34;',  '&#190;',  true, 'fraction three quarters'],
+// math / logical
+	['&fnof;',    '&#402;',  true, 'function / florin'],
+	['&int;',     '&#8747;', true, 'integral'],
+	['&sum;',     '&#8721;', true, 'n-ary sumation'],
+	['&infin;',   '&#8734;', true, 'infinity'],
+	['&radic;',   '&#8730;', true, 'square root'],
+	['&sim;',     '&#8764;', false,'similar to'],
+	['&cong;',    '&#8773;', false,'approximately equal to'],
+	['&asymp;',   '&#8776;', true, 'almost equal to'],
+	['&ne;',      '&#8800;', true, 'not equal to'],
+	['&equiv;',   '&#8801;', true, 'identical to'],
+	['&isin;',    '&#8712;', false,'element of'],
+	['&notin;',   '&#8713;', false,'not an element of'],
+	['&ni;',      '&#8715;', false,'contains as member'],
+	['&prod;',    '&#8719;', true, 'n-ary product'],
+	['&and;',     '&#8743;', false,'logical and'],
+	['&or;',      '&#8744;', false,'logical or'],
+	['&not;',     '&#172;',  true, 'not sign'],
+	['&cap;',     '&#8745;', true, 'intersection'],
+	['&cup;',     '&#8746;', false,'union'],
+	['&part;',    '&#8706;', true, 'partial differential'],
+	['&forall;',  '&#8704;', false,'for all'],
+	['&exist;',   '&#8707;', false,'there exists'],
+	['&empty;',   '&#8709;', false,'diameter'],
+	['&nabla;',   '&#8711;', false,'backward difference'],
+	['&lowast;',  '&#8727;', false,'asterisk operator'],
+	['&prop;',    '&#8733;', false,'proportional to'],
+	['&ang;',     '&#8736;', false,'angle'],
+// undefined
+	['&acute;',   '&#180;',  true, 'acute accent'],
+	['&cedil;',   '&#184;',  true, 'cedilla'],
+	['&ordf;',    '&#170;',  true, 'feminine ordinal indicator'],
+	['&ordm;',    '&#186;',  true, 'masculine ordinal indicator'],
+	['&dagger;',  '&#8224;', true, 'dagger'],
+	['&Dagger;',  '&#8225;', true, 'double dagger'],
+// alphabetical special chars
+	['&Agrave;',  '&#192;',  true, 'A - grave'],
+	['&Aacute;',  '&#193;',  true, 'A - acute'],
+	['&Acirc;',   '&#194;',  true, 'A - circumflex'],
+	['&Atilde;',  '&#195;',  true, 'A - tilde'],
+	['&Auml;',    '&#196;',  true, 'A - diaeresis'],
+	['&Aring;',   '&#197;',  true, 'A - ring above'],
+	['&AElig;',   '&#198;',  true, 'ligature AE'],
+	['&Ccedil;',  '&#199;',  true, 'C - cedilla'],
+	['&Egrave;',  '&#200;',  true, 'E - grave'],
+	['&Eacute;',  '&#201;',  true, 'E - acute'],
+	['&Ecirc;',   '&#202;',  true, 'E - circumflex'],
+	['&Euml;',    '&#203;',  true, 'E - diaeresis'],
+	['&Igrave;',  '&#204;',  true, 'I - grave'],
+	['&Iacute;',  '&#205;',  true, 'I - acute'],
+	['&Icirc;',   '&#206;',  true, 'I - circumflex'],
+	['&Iuml;',    '&#207;',  true, 'I - diaeresis'],
+	['&ETH;',     '&#208;',  true, 'ETH'],
+	['&Ntilde;',  '&#209;',  true, 'N - tilde'],
+	['&Ograve;',  '&#210;',  true, 'O - grave'],
+	['&Oacute;',  '&#211;',  true, 'O - acute'],
+	['&Ocirc;',   '&#212;',  true, 'O - circumflex'],
+	['&Otilde;',  '&#213;',  true, 'O - tilde'],
+	['&Ouml;',    '&#214;',  true, 'O - diaeresis'],
+	['&Oslash;',  '&#216;',  true, 'O - slash'],
+	['&OElig;',   '&#338;',  true, 'ligature OE'],
+	['&Scaron;',  '&#352;',  true, 'S - caron'],
+	['&Ugrave;',  '&#217;',  true, 'U - grave'],
+	['&Uacute;',  '&#218;',  true, 'U - acute'],
+	['&Ucirc;',   '&#219;',  true, 'U - circumflex'],
+	['&Uuml;',    '&#220;',  true, 'U - diaeresis'],
+	['&Yacute;',  '&#221;',  true, 'Y - acute'],
+	['&Yuml;',    '&#376;',  true, 'Y - diaeresis'],
+	['&THORN;',   '&#222;',  true, 'THORN'],
+	['&agrave;',  '&#224;',  true, 'a - grave'],
+	['&aacute;',  '&#225;',  true, 'a - acute'],
+	['&acirc;',   '&#226;',  true, 'a - circumflex'],
+	['&atilde;',  '&#227;',  true, 'a - tilde'],
+	['&auml;',    '&#228;',  true, 'a - diaeresis'],
+	['&aring;',   '&#229;',  true, 'a - ring above'],
+	['&aelig;',   '&#230;',  true, 'ligature ae'],
+	['&ccedil;',  '&#231;',  true, 'c - cedilla'],
+	['&egrave;',  '&#232;',  true, 'e - grave'],
+	['&eacute;',  '&#233;',  true, 'e - acute'],
+	['&ecirc;',   '&#234;',  true, 'e - circumflex'],
+	['&euml;',    '&#235;',  true, 'e - diaeresis'],
+	['&igrave;',  '&#236;',  true, 'i - grave'],
+	['&iacute;',  '&#237;',  true, 'i - acute'],
+	['&icirc;',   '&#238;',  true, 'i - circumflex'],
+	['&iuml;',    '&#239;',  true, 'i - diaeresis'],
+	['&eth;',     '&#240;',  true, 'eth'],
+	['&ntilde;',  '&#241;',  true, 'n - tilde'],
+	['&ograve;',  '&#242;',  true, 'o - grave'],
+	['&oacute;',  '&#243;',  true, 'o - acute'],
+	['&ocirc;',   '&#244;',  true, 'o - circumflex'],
+	['&otilde;',  '&#245;',  true, 'o - tilde'],
+	['&ouml;',    '&#246;',  true, 'o - diaeresis'],
+	['&oslash;',  '&#248;',  true, 'o slash'],
+	['&oelig;',   '&#339;',  true, 'ligature oe'],
+	['&scaron;',  '&#353;',  true, 's - caron'],
+	['&ugrave;',  '&#249;',  true, 'u - grave'],
+	['&uacute;',  '&#250;',  true, 'u - acute'],
+	['&ucirc;',   '&#251;',  true, 'u - circumflex'],
+	['&uuml;',    '&#252;',  true, 'u - diaeresis'],
+	['&yacute;',  '&#253;',  true, 'y - acute'],
+	['&thorn;',   '&#254;',  true, 'thorn'],
+	['&yuml;',    '&#255;',  true, 'y - diaeresis'],
+    ['&Alpha;',   '&#913;',  true, 'Alpha'],
+	['&Beta;',    '&#914;',  true, 'Beta'],
+	['&Gamma;',   '&#915;',  true, 'Gamma'],
+	['&Delta;',   '&#916;',  true, 'Delta'],
+	['&Epsilon;', '&#917;',  true, 'Epsilon'],
+	['&Zeta;',    '&#918;',  true, 'Zeta'],
+	['&Eta;',     '&#919;',  true, 'Eta'],
+	['&Theta;',   '&#920;',  true, 'Theta'],
+	['&Iota;',    '&#921;',  true, 'Iota'],
+	['&Kappa;',   '&#922;',  true, 'Kappa'],
+	['&Lambda;',  '&#923;',  true, 'Lambda'],
+	['&Mu;',      '&#924;',  true, 'Mu'],
+	['&Nu;',      '&#925;',  true, 'Nu'],
+	['&Xi;',      '&#926;',  true, 'Xi'],
+	['&Omicron;', '&#927;',  true, 'Omicron'],
+	['&Pi;',      '&#928;',  true, 'Pi'],
+	['&Rho;',     '&#929;',  true, 'Rho'],
+	['&Sigma;',   '&#931;',  true, 'Sigma'],
+	['&Tau;',     '&#932;',  true, 'Tau'],
+	['&Upsilon;', '&#933;',  true, 'Upsilon'],
+	['&Phi;',     '&#934;',  true, 'Phi'],
+	['&Chi;',     '&#935;',  true, 'Chi'],
+	['&Psi;',     '&#936;',  true, 'Psi'],
+	['&Omega;',   '&#937;',  true, 'Omega'],
+	['&alpha;',   '&#945;',  true, 'alpha'],
+	['&beta;',    '&#946;',  true, 'beta'],
+	['&gamma;',   '&#947;',  true, 'gamma'],
+	['&delta;',   '&#948;',  true, 'delta'],
+	['&epsilon;', '&#949;',  true, 'epsilon'],
+	['&zeta;',    '&#950;',  true, 'zeta'],
+	['&eta;',     '&#951;',  true, 'eta'],
+	['&theta;',   '&#952;',  true, 'theta'],
+	['&iota;',    '&#953;',  true, 'iota'],
+	['&kappa;',   '&#954;',  true, 'kappa'],
+	['&lambda;',  '&#955;',  true, 'lambda'],
+	['&mu;',      '&#956;',  true, 'mu'],
+	['&nu;',      '&#957;',  true, 'nu'],
+	['&xi;',      '&#958;',  true, 'xi'],
+	['&omicron;', '&#959;',  true, 'omicron'],
+	['&pi;',      '&#960;',  true, 'pi'],
+	['&rho;',     '&#961;',  true, 'rho'],
+	['&sigmaf;',  '&#962;',  true, 'final sigma'],
+	['&sigma;',   '&#963;',  true, 'sigma'],
+	['&tau;',     '&#964;',  true, 'tau'],
+	['&upsilon;', '&#965;',  true, 'upsilon'],
+	['&phi;',     '&#966;',  true, 'phi'],
+	['&chi;',     '&#967;',  true, 'chi'],
+	['&psi;',     '&#968;',  true, 'psi'],
+	['&omega;',   '&#969;',  true, 'omega'],
+// symbols
+	['&alefsym;', '&#8501;', false,'alef symbol'],
+	['&piv;',     '&#982;',  false,'pi symbol'],
+	['&real;',    '&#8476;', false,'real part symbol'],
+	['&thetasym;','&#977;',  false,'theta symbol'],
+	['&upsih;',   '&#978;',  false,'upsilon - hook symbol'],
+	['&weierp;',  '&#8472;', false,'Weierstrass p'],
+	['&image;',   '&#8465;', false,'imaginary part'],
+// arrows
+	['&larr;',    '&#8592;', true, 'leftwards arrow'],
+	['&uarr;',    '&#8593;', true, 'upwards arrow'],
+	['&rarr;',    '&#8594;', true, 'rightwards arrow'],
+	['&darr;',    '&#8595;', true, 'downwards arrow'],
+	['&harr;',    '&#8596;', true, 'left right arrow'],
+	['&crarr;',   '&#8629;', false,'carriage return'],
+	['&lArr;',    '&#8656;', false,'leftwards double arrow'],
+	['&uArr;',    '&#8657;', false,'upwards double arrow'],
+	['&rArr;',    '&#8658;', false,'rightwards double arrow'],
+	['&dArr;',    '&#8659;', false,'downwards double arrow'],
+	['&hArr;',    '&#8660;', false,'left right double arrow'],
+	['&there4;',  '&#8756;', false,'therefore'],
+	['&sub;',     '&#8834;', false,'subset of'],
+	['&sup;',     '&#8835;', false,'superset of'],
+	['&nsub;',    '&#8836;', false,'not a subset of'],
+	['&sube;',    '&#8838;', false,'subset of or equal to'],
+	['&supe;',    '&#8839;', false,'superset of or equal to'],
+	['&oplus;',   '&#8853;', false,'circled plus'],
+	['&otimes;',  '&#8855;', false,'circled times'],
+	['&perp;',    '&#8869;', false,'perpendicular'],
+	['&sdot;',    '&#8901;', false,'dot operator'],
+	['&lceil;',   '&#8968;', false,'left ceiling'],
+	['&rceil;',   '&#8969;', false,'right ceiling'],
+	['&lfloor;',  '&#8970;', false,'left floor'],
+	['&rfloor;',  '&#8971;', false,'right floor'],
+	['&lang;',    '&#9001;', false,'left-pointing angle bracket'],
+	['&rang;',    '&#9002;', false,'right-pointing angle bracket'],
+	['&loz;',     '&#9674;', true,'lozenge'],
+	['&spades;',  '&#9824;', false,'black spade suit'],
+	['&clubs;',   '&#9827;', true, 'black club suit'],
+	['&hearts;',  '&#9829;', true, 'black heart suit'],
+	['&diams;',   '&#9830;', true, 'black diamond suit'],
+	['&ensp;',    '&#8194;', false,'en space'],
+	['&emsp;',    '&#8195;', false,'em space'],
+	['&thinsp;',  '&#8201;', false,'thin space'],
+	['&zwnj;',    '&#8204;', false,'zero width non-joiner'],
+	['&zwj;',     '&#8205;', false,'zero width joiner'],
+	['&lrm;',     '&#8206;', false,'left-to-right mark'],
+	['&rlm;',     '&#8207;', false,'right-to-left mark'],
+	['&shy;',     '&#173;',  false,'soft hyphen']
+];
+
+function renderCharMapHTML() {
+	var charsPerRow = 20, tdWidth=20, tdHeight=20;
+	var html = '<table border="0" cellspacing="1" cellpadding="0" width="' + (tdWidth*charsPerRow) + '"><tr height="' + tdHeight + '">';
+	var cols=-1;
+	for (var i=0; i<charmap.length; i++) {
+		if (charmap[i][2]==true) {
+			cols++;
+			html += ''
+				+ '<td width="' + tdWidth + '" height="' + tdHeight + '" class="charmap"'
+				+ ' onmouseover="this.className=\'charmapOver\';'
+				+ 'previewChar(\'' + charmap[i][1].substring(1,charmap[i][1].length) + '\',\'' + charmap[i][0].substring(1,charmap[i][0].length) + '\',\'' + charmap[i][3] + '\');"'
+				+ ' onmouseout="this.className=\'charmap\';"'
+				+ ' nowrap="nowrap" onclick="insertChar(\'' + charmap[i][1].substring(2,charmap[i][1].length-1) + '\');"><a style="text-decoration: none;" onfocus="previewChar(\'' + charmap[i][1].substring(1,charmap[i][1].length) + '\',\'' + charmap[i][0].substring(1,charmap[i][0].length) + '\',\'' + charmap[i][3] + '\');" href="javascript:insertChar(\'' + charmap[i][1].substring(2,charmap[i][1].length-1) + '\');" onclick="return false;" onmousedown="return false;" title="' + charmap[i][3] + '">'
+				+ charmap[i][1]
+				+ '</a></td>';
+			if ((cols+1) % charsPerRow == 0)
+				html += '</tr><tr height="' + tdHeight + '">';
+		}
+	 }
+	if (cols % charsPerRow > 0) {
+		var padd = charsPerRow - (cols % charsPerRow);
+		for (var i=0; i<padd-1; i++)
+			html += '<td width="' + tdWidth + '" height="' + tdHeight + '" class="charmap">&nbsp;</td>';
+	}
+	html += '</tr></table>';
+	document.write(html);
+}
+
+function insertChar(chr) {
+	tinyMCEPopup.execCommand('mceInsertContent', false, '&#' + chr + ';');
+
+	// Refocus in window
+	if (tinyMCEPopup.isWindow)
+		window.focus();
+
+	tinyMCEPopup.close();
+}
+
+function previewChar(codeA, codeB, codeN) {
+	var elmA = document.getElementById('codeA');
+	var elmB = document.getElementById('codeB');
+	var elmV = document.getElementById('codeV');
+	var elmN = document.getElementById('codeN');
+
+	if (codeA=='#160;') {
+		elmV.innerHTML = '__';
+	} else {
+		elmV.innerHTML = '&' + codeA;
+	}
+
+	elmB.innerHTML = '&amp;' + codeA;
+	elmA.innerHTML = '&amp;' + codeB;
+	elmN.innerHTML = codeN;
+}

Added: labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/themes/advanced/jscripts/color_picker.js
===================================================================
--- labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/themes/advanced/jscripts/color_picker.js	2007-01-11 22:09:16 UTC (rev 8831)
+++ labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/themes/advanced/jscripts/color_picker.js	2007-01-11 22:10:56 UTC (rev 8832)
@@ -0,0 +1,108 @@
+function init() {
+	if (tinyMCE.isMSIE)
+		tinyMCEPopup.resizeToInnerSize();
+}
+
+function selectColor() {
+	var color = document.getElementById("selectedColorBox").value;
+
+	tinyMCEPopup.execCommand(tinyMCE.getWindowArg('command'), false, color);
+	tinyMCEPopup.close();
+}
+
+function showColor(color) {
+	document.getElementById("selectedColor").style.backgroundColor = color;
+	document.getElementById("selectedColorBox").value = color;
+}
+
+var colors = new Array(
+	"#000000","#000033","#000066","#000099","#0000cc","#0000ff","#330000","#330033",
+	"#330066","#330099","#3300cc","#3300ff","#660000","#660033","#660066","#660099",
+	"#6600cc","#6600ff","#990000","#990033","#990066","#990099","#9900cc","#9900ff",
+	"#cc0000","#cc0033","#cc0066","#cc0099","#cc00cc","#cc00ff","#ff0000","#ff0033",
+	"#ff0066","#ff0099","#ff00cc","#ff00ff","#003300","#003333","#003366","#003399",
+	"#0033cc","#0033ff","#333300","#333333","#333366","#333399","#3333cc","#3333ff",
+	"#663300","#663333","#663366","#663399","#6633cc","#6633ff","#993300","#993333",
+	"#993366","#993399","#9933cc","#9933ff","#cc3300","#cc3333","#cc3366","#cc3399",
+	"#cc33cc","#cc33ff","#ff3300","#ff3333","#ff3366","#ff3399","#ff33cc","#ff33ff",
+	"#006600","#006633","#006666","#006699","#0066cc","#0066ff","#336600","#336633",
+	"#336666","#336699","#3366cc","#3366ff","#666600","#666633","#666666","#666699",
+	"#6666cc","#6666ff","#996600","#996633","#996666","#996699","#9966cc","#9966ff",
+	"#cc6600","#cc6633","#cc6666","#cc6699","#cc66cc","#cc66ff","#ff6600","#ff6633",
+	"#ff6666","#ff6699","#ff66cc","#ff66ff","#009900","#009933","#009966","#009999",
+	"#0099cc","#0099ff","#339900","#339933","#339966","#339999","#3399cc","#3399ff",
+	"#669900","#669933","#669966","#669999","#6699cc","#6699ff","#999900","#999933",
+	"#999966","#999999","#9999cc","#9999ff","#cc9900","#cc9933","#cc9966","#cc9999",
+	"#cc99cc","#cc99ff","#ff9900","#ff9933","#ff9966","#ff9999","#ff99cc","#ff99ff",
+	"#00cc00","#00cc33","#00cc66","#00cc99","#00cccc","#00ccff","#33cc00","#33cc33",
+	"#33cc66","#33cc99","#33cccc","#33ccff","#66cc00","#66cc33","#66cc66","#66cc99",
+	"#66cccc","#66ccff","#99cc00","#99cc33","#99cc66","#99cc99","#99cccc","#99ccff",
+	"#cccc00","#cccc33","#cccc66","#cccc99","#cccccc","#ccccff","#ffcc00","#ffcc33",
+	"#ffcc66","#ffcc99","#ffcccc","#ffccff","#00ff00","#00ff33","#00ff66","#00ff99",
+	"#00ffcc","#00ffff","#33ff00","#33ff33","#33ff66","#33ff99","#33ffcc","#33ffff",
+	"#66ff00","#66ff33","#66ff66","#66ff99","#66ffcc","#66ffff","#99ff00","#99ff33",
+	"#99ff66","#99ff99","#99ffcc","#99ffff","#ccff00","#ccff33","#ccff66","#ccff99",
+	"#ccffcc","#ccffff","#ffff00","#ffff33","#ffff66","#ffff99","#ffffcc","#ffffff"
+);
+
+function convertRGBToHex(col) {
+	var re = new RegExp("rgb\\s*\\(\\s*([0-9]+).*,\\s*([0-9]+).*,\\s*([0-9]+).*\\)", "gi");
+
+	var rgb = col.replace(re, "$1,$2,$3").split(',');
+	if (rgb.length == 3) {
+		r = parseInt(rgb[0]).toString(16);
+		g = parseInt(rgb[1]).toString(16);
+		b = parseInt(rgb[2]).toString(16);
+
+		r = r.length == 1 ? '0' + r : r;
+		g = g.length == 1 ? '0' + g : g;
+		b = b.length == 1 ? '0' + b : b;
+
+		return "#" + r + g + b;
+	}
+
+	return col;
+}
+
+function convertHexToRGB(col) {
+	if (col.indexOf('#') != -1) {
+		col = col.replace(new RegExp('[^0-9A-F]', 'gi'), '');
+
+		r = parseInt(col.substring(0, 2), 16);
+		g = parseInt(col.substring(2, 4), 16);
+		b = parseInt(col.substring(4, 6), 16);
+
+		return "rgb(" + r + "," + g + "," + b + ")";
+	}
+
+	return col;
+}
+
+function renderColorMap() {
+	var html = "";
+	var inputColor = convertRGBToHex(tinyMCE.getWindowArg('input_color'));
+
+	html += '<table border="0" cellspacing="1" cellpadding="0">'
+		+ '<tr>';
+	for (var i=0; i<colors.length; i++) {
+		html += '<td bgcolor="' + colors[i] + '">'
+			+ '<a href="javascript:selectColor();" onfocus="showColor(\'' + colors[i] +  '\');" onmouseover="showColor(\'' + colors[i] +  '\');">'
+			+ '<img border="0" src="images/spacer.gif" width="10" height="10" title="' + colors[i] +  '" alt="' + colors[i] +  '" /></a></td>';
+		if ((i+1) % 18 == 0)
+			html += '</tr><tr>';
+	}
+	html += '<tr><td colspan="18">'
+		+ '<table width="100%" border="0" cellspacing="0" cellpadding="0">'
+		+ '<tr><td>'
+		+ '<img id="selectedColor" style="background-color:' + tinyMCE.getWindowArg('input_color') + '" border="0" src="images/spacer.gif" width="80" height="16" />'
+		+ '</td><td align="right">'
+		+ '<input id="selectedColorBox" name="selectedColorBox" type="text" size="7" maxlength="7" style="width:65px" value="' + inputColor + '" />'
+		+ '</td></tr>'
+		+ '</table>'
+		+ '<div style="float: left"><input type="button" id="insert" name="insert" value="{$lang_theme_colorpicker_apply}" style="margin-top:3px" onclick="selectColor();"></div>'
+		+ '<div style="float: right"><input type="button" name="cancel" value="{$lang_cancel}" style="margin-top:3px" onclick="tinyMCEPopup.close();" id="cancel" /></div>'
+		+ '</td></tr>'
+		+ '</table>';
+
+	document.write(html);
+}
\ No newline at end of file

Added: labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/themes/advanced/jscripts/image.js
===================================================================
--- labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/themes/advanced/jscripts/image.js	2007-01-11 22:09:16 UTC (rev 8831)
+++ labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/themes/advanced/jscripts/image.js	2007-01-11 22:10:56 UTC (rev 8832)
@@ -0,0 +1,81 @@
+var url = tinyMCE.getParam("external_image_list_url");
+if (url != null) {
+	// Fix relative
+	if (url.charAt(0) != '/' && url.indexOf('://') == -1)
+		url = tinyMCE.documentBasePath + "/" + url;
+
+	document.write('<sc'+'ript language="javascript" type="text/javascript" src="' + url + '"></sc'+'ript>');
+}
+
+function insertImage() {
+	var src = document.forms[0].src.value;
+	var alt = document.forms[0].alt.value;
+	var border = document.forms[0].border.value;
+	var vspace = document.forms[0].vspace.value;
+	var hspace = document.forms[0].hspace.value;
+	var width = document.forms[0].width.value;
+	var height = document.forms[0].height.value;
+	var align = document.forms[0].align.options[document.forms[0].align.selectedIndex].value;
+
+	tinyMCEPopup.restoreSelection();
+	tinyMCE.themes['advanced']._insertImage(src, alt, border, hspace, vspace, width, height, align);
+	tinyMCEPopup.close();
+}
+
+function init() {
+	tinyMCEPopup.resizeToInnerSize();
+
+	document.getElementById('srcbrowsercontainer').innerHTML = getBrowserHTML('srcbrowser','src','image','theme_advanced_image');
+
+	var formObj = document.forms[0];
+
+	for (var i=0; i<document.forms[0].align.options.length; i++) {
+		if (document.forms[0].align.options[i].value == tinyMCE.getWindowArg('align'))
+			document.forms[0].align.options.selectedIndex = i;
+	}
+
+	formObj.src.value = tinyMCE.getWindowArg('src');
+	formObj.alt.value = tinyMCE.getWindowArg('alt');
+	formObj.border.value = tinyMCE.getWindowArg('border');
+	formObj.vspace.value = tinyMCE.getWindowArg('vspace');
+	formObj.hspace.value = tinyMCE.getWindowArg('hspace');
+	formObj.width.value = tinyMCE.getWindowArg('width');
+	formObj.height.value = tinyMCE.getWindowArg('height');
+	formObj.insert.value = tinyMCE.getLang('lang_' + tinyMCE.getWindowArg('action'), 'Insert', true); 
+
+	// Handle file browser
+	if (isVisible('srcbrowser'))
+		document.getElementById('src').style.width = '180px';
+
+	// Auto select image in list
+	if (typeof(tinyMCEImageList) != "undefined" && tinyMCEImageList.length > 0) {
+		for (var i=0; i<formObj.image_list.length; i++) {
+			if (formObj.image_list.options[i].value == tinyMCE.getWindowArg('src'))
+				formObj.image_list.options[i].selected = true;
+		}
+	}
+}
+
+var preloadImg = new Image();
+
+function resetImageData() {
+	var formObj = document.forms[0];
+	formObj.width.value = formObj.height.value = "";	
+}
+
+function updateImageData() {
+	var formObj = document.forms[0];
+
+	if (formObj.width.value == "")
+		formObj.width.value = preloadImg.width;
+
+	if (formObj.height.value == "")
+		formObj.height.value = preloadImg.height;
+}
+
+function getImageData() {
+	preloadImg = new Image();
+	tinyMCE.addEvent(preloadImg, "load", updateImageData);
+	tinyMCE.addEvent(preloadImg, "error", function () {var formObj = document.forms[0];formObj.width.value = formObj.height.value = "";});
+	preloadImg.src = tinyMCE.convertRelativeToAbsoluteURL(tinyMCE.settings['base_href'], document.forms[0].src.value);
+}

Added: labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/themes/advanced/jscripts/link.js
===================================================================
--- labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/themes/advanced/jscripts/link.js	2007-01-11 22:09:16 UTC (rev 8831)
+++ labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/themes/advanced/jscripts/link.js	2007-01-11 22:10:56 UTC (rev 8832)
@@ -0,0 +1,70 @@
+var url = tinyMCE.getParam("external_link_list_url");
+if (url != null) {
+	// Fix relative
+	if (url.charAt(0) != '/' && url.indexOf('://') == -1)
+		url = tinyMCE.documentBasePath + "/" + url;
+
+	document.write('<sc'+'ript language="javascript" type="text/javascript" src="' + url + '"></sc'+'ript>');
+}
+
+function init() {
+	tinyMCEPopup.resizeToInnerSize();
+
+	document.getElementById('hrefbrowsercontainer').innerHTML = getBrowserHTML('hrefbrowser','href','file','theme_advanced_link');
+
+	// Handle file browser
+	if (isVisible('hrefbrowser'))
+		document.getElementById('href').style.width = '180px';
+
+	var formObj = document.forms[0];
+
+	for (var i=0; i<document.forms[0].target.options.length; i++) {
+		var option = document.forms[0].target.options[i];
+
+		if (option.value == tinyMCE.getWindowArg('target'))
+			option.selected = true;
+	}
+
+	document.forms[0].href.value = tinyMCE.getWindowArg('href');
+	document.forms[0].linktitle.value = tinyMCE.getWindowArg('title');
+	document.forms[0].insert.value = tinyMCE.getLang('lang_' + tinyMCE.getWindowArg('action'), 'Insert', true); 
+
+	addClassesToList('styleSelect', 'theme_advanced_link_styles');
+	selectByValue(formObj, 'styleSelect', tinyMCE.getWindowArg('className'), true);
+
+	// Hide css select row if no CSS classes
+	if (formObj.styleSelect && formObj.styleSelect.options.length <= 1) {
+		var sr = document.getElementById('styleSelectRow');
+		sr.style.display = 'none';
+		sr.parentNode.removeChild(sr);
+	}
+
+	// Auto select link in list
+	if (typeof(tinyMCELinkList) != "undefined" && tinyMCELinkList.length > 0) {
+		var formObj = document.forms[0];
+
+		for (var i=0; i<formObj.link_list.length; i++) {
+			if (formObj.link_list.options[i].value == tinyMCE.getWindowArg('href'))
+				formObj.link_list.options[i].selected = true;
+		}
+	}
+}
+
+function insertLink() {
+	var href = document.forms[0].href.value;
+	var target = document.forms[0].target.options[document.forms[0].target.selectedIndex].value;
+	var title = document.forms[0].linktitle.value;
+	var style_class = document.forms[0].styleSelect ? document.forms[0].styleSelect.value : "";
+	var dummy;
+
+	// Make anchors absolute
+	if (href.charAt(0) == '#')
+		href = tinyMCE.settings['document_base_url'] + href;
+
+	if (target == '_self')
+		target = '';
+
+	tinyMCEPopup.restoreSelection();
+	tinyMCE.themes['advanced']._insertLink(href, target, title, dummy, style_class);
+	tinyMCEPopup.close();
+}

Added: labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/themes/advanced/jscripts/source_editor.js
===================================================================
--- labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/themes/advanced/jscripts/source_editor.js	2007-01-11 22:09:16 UTC (rev 8831)
+++ labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/themes/advanced/jscripts/source_editor.js	2007-01-11 22:10:56 UTC (rev 8832)
@@ -0,0 +1,60 @@
+function saveContent() {
+	tinyMCE.setContent(document.getElementById('htmlSource').value);
+	tinyMCE.closeWindow(window);
+}
+
+function onLoadInit() {
+	tinyMCEPopup.resizeToInnerSize();
+
+	// Remove Gecko spellchecking
+	if (tinyMCE.isGecko)
+		document.body.spellcheck = tinyMCE.getParam("gecko_spellcheck");
+
+	document.getElementById('htmlSource').value = tinyMCE.getContent(tinyMCE.getWindowArg('editor_id'));
+
+	resizeInputs();
+
+	if (tinyMCE.getParam("theme_advanced_source_editor_wrap", true)) {
+		setWrap('soft');
+		document.getElementById('wraped').checked = true;
+	}
+}
+
+function setWrap(val) {
+	var s = document.getElementById('htmlSource');
+
+	s.wrap = val;
+
+	if (tinyMCE.isGecko) {
+		var v = s.value;
+		var n = s.cloneNode(false);
+		n.setAttribute("wrap", val);
+		s.parentNode.replaceChild(n, s);
+		n.value = v;
+	}
+}
+
+function toggleWordWrap(elm) {
+	if (elm.checked)
+		setWrap('soft');
+	else
+		setWrap('off');
+}
+
+var wHeight=0, wWidth=0, owHeight=0, owWidth=0;
+
+function resizeInputs() {
+	var el = document.getElementById('htmlSource');
+
+	if (!tinyMCE.isMSIE) {
+		 wHeight = self.innerHeight-80;
+		 wWidth = self.innerWidth-16;
+	} else {
+		 wHeight = document.body.clientHeight - 80;
+		 wWidth = document.body.clientWidth - 16;
+	}
+
+	el.style.height = Math.abs(wHeight) + 'px';
+	el.style.width  = Math.abs(wWidth) + 'px';
+}
+

Added: labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/themes/advanced/langs/en.js
===================================================================
--- labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/themes/advanced/langs/en.js	2007-01-11 22:09:16 UTC (rev 8831)
+++ labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/themes/advanced/langs/en.js	2007-01-11 22:10:56 UTC (rev 8832)
@@ -0,0 +1,82 @@
+// UK lang variables
+
+tinyMCE.addToLang('',{
+theme_style_select : '-- Styles --',
+theme_code_desc : 'Edit HTML Source',
+theme_code_title : 'HTML Source Editor',
+theme_code_wordwrap : 'Word wrap',
+theme_sub_desc : 'Subscript',
+theme_sup_desc : 'Superscript',
+theme_hr_desc : 'Insert horizontal ruler',
+theme_removeformat_desc : 'Remove formatting',
+theme_custom1_desc : 'Your custom description here',
+insert_image_border : 'Border',
+insert_image_dimensions : 'Dimensions',
+insert_image_vspace : 'Vertical space',
+insert_image_hspace : 'Horizontal space',
+insert_image_align : 'Alignment',
+insert_image_align_default : '-- Not set --',
+insert_image_align_baseline : 'Baseline',
+insert_image_align_top : 'Top',
+insert_image_align_middle : 'Middle',
+insert_image_align_bottom : 'Bottom',
+insert_image_align_texttop : 'TextTop',
+insert_image_align_absmiddle : 'Absolute Middle',
+insert_image_align_absbottom : 'Absolute Bottom',
+insert_image_align_left : 'Left',
+insert_image_align_right : 'Right',
+theme_font_size : '-- Font size --',
+theme_fontdefault : '-- Font family --',
+theme_block : '-- Format --',
+theme_paragraph : 'Paragraph',
+theme_div : 'Div',
+theme_address : 'Address',
+theme_pre : 'Preformatted',
+theme_h1 : 'Heading 1',
+theme_h2 : 'Heading 2',
+theme_h3 : 'Heading 3',
+theme_h4 : 'Heading 4',
+theme_h5 : 'Heading 5',
+theme_h6 : 'Heading 6',
+theme_blockquote : 'Blockquote',
+theme_code : 'Code',
+theme_samp : 'Code sample',
+theme_dt : 'Definition term ',
+theme_dd : 'Definition description',
+theme_colorpicker_title : 'Select a color',
+theme_colorpicker_apply : 'Apply',
+theme_forecolor_desc : 'Select text color',
+theme_backcolor_desc : 'Select background color',
+theme_charmap_title : 'Select custom character',
+theme_charmap_desc : 'Insert custom character',
+theme_visualaid_desc : 'Toggle guidelines/invisible elements',
+insert_anchor_title : 'Insert/edit anchor',
+insert_anchor_name : 'Anchor name',
+theme_anchor_desc : 'Insert/edit anchor',
+theme_insert_link_titlefield : 'Title',
+theme_clipboard_msg : 'Copy/Cut/Paste is not available in Mozilla and Firefox.\nDo you want more information about this issue?',
+theme_path : 'Path',
+cut_desc : 'Cut',
+copy_desc : 'Copy',
+paste_desc : 'Paste',
+link_list : 'Link list',
+image_list : 'Image list',
+browse : 'Browse',
+image_props_desc : 'Image properties',
+newdocument_desc : 'New document',
+class_name : 'Class',
+newdocument : 'Are you sure you want clear all contents?',
+about_title : 'About TinyMCE',
+about : 'About',
+license : 'License',
+plugins : 'Plugins',
+plugin : 'Plugin',
+author : 'Author',
+version : 'Version',
+loaded_plugins : 'Loaded plugins',
+help : 'Help',
+not_set : '-- Not set --',
+close : 'Close',
+toolbar_focus : 'Jump to tool buttons - Alt+Q, Jump to editor - Alt-Z, Jump to element path - Alt-X',
+invalid_data : 'Error: Invalid values entered, these are marked in red.'
+});

Modified: labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/themes/advanced/link.htm
===================================================================
--- labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/themes/advanced/link.htm	2007-01-11 22:09:16 UTC (rev 8831)
+++ labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/themes/advanced/link.htm	2007-01-11 22:10:56 UTC (rev 8832)
@@ -1,70 +1,100 @@
-<html>
+<html xmlns="http://www.w3.org/1999/xhtml">
 <head>
-<title>{$lang_insert_link_title}</title>
-<script language="javascript" src="../../tiny_mce_popup.js"></script>
-<script language="javascript">
-	function init() {
-		for (var i=0; i<document.forms[0].target.options.length; i++) {
-			var option = document.forms[0].target.options[i];
+	<title>{$lang_insert_link_title}</title>
+	<script language="javascript" type="text/javascript" src="../../tiny_mce_popup.js"></script>
+	<script language="javascript" type="text/javascript" src="../../utils/mctabs.js"></script>
+	<script language="javascript" type="text/javascript" src="../../utils/form_utils.js"></script>
+	<script language="javascript" type="text/javascript" src="jscripts/link.js"></script>
+	<base target="_self" />
+</head>
+<body id="link" onload="tinyMCEPopup.executeOnLoad('init();');" style="display: none">
+<form onsubmit="insertLink();return false;" action="#">
+	<div class="tabs">
+		<ul>
+			<li id="general_tab" class="current"><span><a href="javascript:mcTabs.displayTab('general_tab','general_panel');" onmousedown="return false;">{$lang_insert_link_title}</a></span></li>
+		</ul>
+	</div>
 
-			if (option.value == tinyMCE.getWindowArg('target'))
-				option.selected = true;
-		}
+	<div class="panel_wrapper">
+		<div id="general_panel" class="panel current">
 
-		document.forms[0].href.value = tinyMCE.getWindowArg('href');
-		document.forms[0].linktitle.value = tinyMCE.getWindowArg('title');
-		document.forms[0].insert.value = tinyMCE.getLang('lang_' + tinyMCE.getWindowArg('action')); 
+		<table border="0" cellpadding="4" cellspacing="0">
+          <tr>
+            <td nowrap="nowrap"><label for="href">{$lang_insert_link_url}</label></td>
+            <td><table border="0" cellspacing="0" cellpadding="0"> 
+				  <tr> 
+					<td><input id="href" name="href" type="text" value="" style="width: 200px" /></td> 
+					<td id="hrefbrowsercontainer">&nbsp;</td>
+				  </tr> 
+				</table></td>
+          </tr>
+		  <!-- Link list -->
+		  <script language="javascript">
+			if (typeof(tinyMCELinkList) != "undefined" && tinyMCELinkList.length > 0) {
+				var html = "";
 
-		window.focus();
-	}
+				html += '<tr><td><label for="link_list">{$lang_link_list}</label></td>';
+				html += '<td><select id="link_list" name="link_list" style="width: 200px" onchange="this.form.href.value=this.options[this.selectedIndex].value;">';
+				html += '<option value="">---</option>';
 
-	function insertLink() {
-		if (window.opener) {
-			var href = document.forms[0].href.value;
-			var target = document.forms[0].target.options[document.forms[0].target.selectedIndex].value;
-			var title = document.forms[0].linktitle.value;
+				for (var i=0; i<tinyMCELinkList.length; i++)
+					html += '<option value="' + tinyMCELinkList[i][1] + '">' + tinyMCELinkList[i][0] + '</option>';
 
-			window.opener.tinyMCE.insertLink(href, target, title);
-			top.close();
-		}
-	}
+				html += '</select></td></tr>';
 
-	function cancelAction() {
-		top.close();
-	}
-</script>
-</head>
-<body onload="init();">
-<form onsubmit="insertLink();return false;">
-  <table border="0" cellpadding="0" cellspacing="0" width="100%">
-    <tr>
-      <td align="center" valign="middle"><table border="0" cellpadding="4" cellspacing="0">
+				document.write(html);
+			}
+		  </script>
+		  <!-- /Link list -->
           <tr>
-            <td colspan="2" class="title">{$lang_insert_link_title}</td>
-          </tr>
-          <tr>
-            <td>{$lang_insert_link_url}:</td>
-            <td><input name="href" type="text" id="href" value="" style="width: 200px"></td>
-          </tr>
-          <tr>
-            <td>{$lang_insert_link_target}:</td>
-            <td><select name="target" style="width: 200px">
+            <td nowrap="nowrap"><label for="target">{$lang_insert_link_target}</label></td>
+            <td><select id="target" name="target" style="width: 200px">
                 <option value="_self">{$lang_insert_link_target_same}</option>
                 <option value="_blank">{$lang_insert_link_target_blank}</option>
+				<script language="javascript">
+					var html = "";
+					var targets = tinyMCE.getParam('theme_advanced_link_targets', '').split(';');
+
+					for (var i=0; i<targets.length; i++) {
+						var key, value;
+
+						if (targets[i] == "")
+							continue;
+
+						key = targets[i].split('=')[0];
+						value = targets[i].split('=')[1];
+
+						html += '<option value="' + value + '">' + key + '</option>';
+					}
+
+					document.write(html);
+				</script>
             </select></td>
           </tr>
           <tr>
-            <td>{$lang_theme_insert_link_titlefield}:</td>
-            <td><input name="linktitle" type="text" id="linktitle" value="" style="width: 200px"></td>
+            <td nowrap="nowrap"><label for="linktitle">{$lang_theme_insert_link_titlefield}</label></td>
+            <td><input id="linktitle" name="linktitle" type="text" value="" style="width: 200px"></td>
           </tr>
-          <tr>
-            <td><input type="button" id="insert" name="insert" value="{$lang_insert}" onclick="insertLink();">
-            </td>
-            <td align="right"><input type="button" id="cancel" name="cancel" value="{$lang_cancel}" onclick="cancelAction();"></td>
+          <tr id="styleSelectRow">
+            <td><label for="styleSelect">{$lang_class_name}</label></td>
+            <td>
+			 <select id="styleSelect" name="styleSelect">
+                <option value="" selected>{$lang_theme_style_select}</option>
+             </select></td>
           </tr>
-        </table></td>
-    </tr>
-  </table>
+        </table>
+		</div>
+	</div>
+
+	<div class="mceActionPanel">
+		<div style="float: left">
+			<input type="button" id="insert" name="insert" value="{$lang_insert}" onclick="insertLink();" />
+		</div>
+
+		<div style="float: right">
+			<input type="button" id="cancel" name="cancel" value="{$lang_cancel}" onclick="tinyMCEPopup.close();" />
+		</div>
+	</div>
 </form>
 </body>
 </html>

Modified: labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/themes/advanced/source_editor.htm
===================================================================
--- labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/themes/advanced/source_editor.htm	2007-01-11 22:09:16 UTC (rev 8831)
+++ labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/themes/advanced/source_editor.htm	2007-01-11 22:10:56 UTC (rev 8832)
@@ -1,88 +1,32 @@
-<?xml version="1.0" encoding="iso-8859-1"?>
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
 <html xmlns="http://www.w3.org/1999/xhtml">
 <head>
-<title>{$lang_theme_code_title}</title>
-<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
-<script language="javascript" type="text/javascript" src="../../tiny_mce_popup.js"></script>
-<script language="javascript" type="text/javascript">
-<!--
-    function saveContent() {
-        if (window.opener) {
-            window.opener.tinyMCE.setContent(document.getElementById('htmlSource').value);
-            window.close();
-        }
-    }
+	<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
+	<title>{$lang_theme_code_title}</title>
+	<script language="javascript" type="text/javascript" src="../../tiny_mce_popup.js"></script>
+	<script language="javascript" type="text/javascript" src="jscripts/source_editor.js"></script>
+	<base target="_self" />
+</head>
+<body onload="tinyMCEPopup.executeOnLoad('onLoadInit();');" onresize="resizeInputs();" style="display: none">
+	<form name="source" onsubmit="saveContent();" action="#">
+		<div style="float: left" class="title">{$lang_theme_code_title}</div>
 
-    // 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;
-    }
+		<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>
 
-    function onLoadInit() {
-        document.forms[0].htmlSource.value = fixContent(tinyMCE.getContent(tinyMCE.getWindowArg('editor_id')));
-        resizeInputs();
-        setWrap('off');
-    }
+		<br style="clear: both" />
 
-    function setWrap(val) {
-        // hard soft off
-        document.forms[0].htmlSource.wrap = val;
-    }
+		<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>
 
-	function toggleWordWrap(elm) {
-		if (elm.checked)
-			setWrap('soft');
-		else
-			setWrap('off');
-	}
+		<div class="mceActionPanel">
+			<div style="float: left">
+				<input type="button" name="insert" value="{$lang_update}" onclick="saveContent();" id="insert" />
+			</div>
 
-    var wHeight=0, wWidth=0, owHeight=0, owWidth=0;
-
-    function resizeInputs() {
-        if (!tinyMCE.isMSIE) {
-             wHeight = self.innerHeight-80;
-             wWidth = self.innerWidth-25;
-        } else {
-             wHeight = document.body.clientHeight-80;
-             wWidth = document.body.clientWidth-25;
-        }
-
-        document.forms[0].htmlSource.style.height = Math.abs(wHeight) + 'px';
-        document.forms[0].htmlSource.style.width  = Math.abs(wWidth) + 'px';
-            
-    }
-
-    window.focus();
-//-->
-</script>
-</head>
-<body scroll="no" onload="onLoadInit();" onresize="resizeInputs();">
-<form name="source" onsubmit="saveContent();">
-    <table border="0" cellpadding="0" cellspacing="2" align="center">
-        <tr>
-            <td class="title">{$lang_theme_code_title}</td>
-            <td align="right"><script language="javascript" type="text/javascript">
-<!--
-    if (tinyMCE.isMSIE) {
-        document.write('<input type="checkbox" name="wraped" id="wraped" onclick="toggleWordWrap(this);" class="wordWrapCode" /><label for="wraped">{$lang_theme_code_wordwrap}</label>');
-    }
-//-->
-            </script></td>
-        </tr>
-        <tr>
-            <td colspan="2" align="center">
-                <textarea name="htmlSource" id="htmlSource" rows="15" cols="100" style="width: 100%; height: 100%; font-family: 'Courier New',Courier,mono; font-size: 12px;" dir="ltr" wrap="soft"></textarea>
-            </td>
-        </tr>
-        <tr>
-            <td colspan="2" align="right"><input type="button" id="insert" name="insert" value="{$lang_update}" onclick="saveContent();" /></td>
-        </tr>
-    </table>
-</form>
+			<div style="float: right">
+				<input type="button" name="cancel" value="{$lang_cancel}" onclick="tinyMCEPopup.close();" id="cancel" />
+			</div>
+		</div>
+	</form>
 </body>
 </html>

Added: labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/themes/simple/css/editor_content.css
===================================================================
--- labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/themes/simple/css/editor_content.css	2007-01-11 22:09:16 UTC (rev 8831)
+++ labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/themes/simple/css/editor_content.css	2007-01-11 22:10:56 UTC (rev 8832)
@@ -0,0 +1,25 @@
+body, td, pre {
+	font-family: Verdana, Arial, Helvetica, sans-serif;
+	font-size: 10px;
+}
+
+body {
+	background-color: #FFFFFF;
+}
+
+.mceVisualAid {
+	border: 1px dashed #BBBBBB;
+}
+
+/* MSIE specific */
+
+* html body {
+	scrollbar-3dlight-color: #F0F0EE;
+	scrollbar-arrow-color: #676662;
+	scrollbar-base-color: #F0F0EE;
+	scrollbar-darkshadow-color: #DDDDDD;
+	scrollbar-face-color: #E0E0DD;
+	scrollbar-highlight-color: #F0F0EE;
+	scrollbar-shadow-color: #F0F0EE;
+	scrollbar-track-color: #F5F5F5;	
+}

Added: labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/themes/simple/css/editor_popup.css
===================================================================
--- labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/themes/simple/css/editor_popup.css	2007-01-11 22:09:16 UTC (rev 8831)
+++ labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/themes/simple/css/editor_popup.css	2007-01-11 22:10:56 UTC (rev 8832)
@@ -0,0 +1,41 @@
+body {
+	background-color: #F0F0EE;
+	font-family: Verdana, Arial, Helvetica, sans-serif;
+	font-size: 11px;
+	scrollbar-3dlight-color: #F0F0EE;
+	scrollbar-arrow-color: #676662;
+	scrollbar-base-color: #F0F0EE;
+	scrollbar-darkshadow-color: #DDDDDD;
+	scrollbar-face-color: #E0E0DD;
+	scrollbar-highlight-color: #F0F0EE;
+	scrollbar-shadow-color: #F0F0EE;
+	scrollbar-track-color: #F5F5F5;
+}
+
+td {
+	font-family: Verdana, Arial, Helvetica, sans-serif;
+	font-size: 11px;
+}
+
+input {
+	background: #FFFFFF;
+	border: 1px solid #cccccc;
+}
+
+td, input, select, textarea {
+	font-family: Verdana, Arial, Helvetica, sans-serif;
+	font-size: 10px;
+}
+
+input, select, textarea {
+	border: 1px solid #808080;
+}
+
+.input_noborder {
+	border: 0;
+}
+
+.title {
+	font-size: 12px;
+	font-weight: bold;
+}
\ No newline at end of file

Added: labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/themes/simple/css/editor_ui.css
===================================================================
--- labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/themes/simple/css/editor_ui.css	2007-01-11 22:09:16 UTC (rev 8831)
+++ labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/themes/simple/css/editor_ui.css	2007-01-11 22:10:56 UTC (rev 8832)
@@ -0,0 +1,125 @@
+.mceSeparatorLine {
+	border: 0;
+	padding: 0;
+	margin-left: 4px;
+	margin-right: 2px;
+}
+
+.mceSelectList {
+	font-family: "MS Sans Serif";
+	font-size: 7pt;
+	font-weight: normal;
+	margin-top: 2px;
+}
+
+.mceLabel, .mceLabelDisabled {
+	font-family: "MS Sans Serif";
+	font-size: 9pt;
+}
+
+.mceLabel {
+	color: #000000;
+}
+
+.mceLabelDisabled {
+	cursor: text;
+	color: #999999;
+}
+
+.mceEditor {
+	background: #F0F0EE;
+	border: 1px solid #cccccc;
+}
+
+.mceEditorArea {
+	font-family: "MS Sans Serif";
+	background: #FFFFFF;
+}
+
+.mceToolbar {
+	background: #F0F0EE;
+	border-top: 1px solid #cccccc;
+	line-height: 1px;
+	font-size: 1px;
+	padding-bottom: 1px;
+}
+
+.mceEditorIframe {
+	border: 0;
+}
+
+/* Button CSS rules */
+
+a.mceButtonDisabled img, a.mceButtonNormal img, a.mceButtonSelected img {
+	width: 20px;
+	height: 20px;
+	cursor: default;
+	margin-top: 1px;
+	margin-left: 1px;
+}
+
+a.mceButtonDisabled img {
+	border: 0 !important;
+}
+
+a.mceButtonNormal img, a.mceButtonSelected img {
+	border: 1px solid #F0F0EE !important;
+}
+
+a.mceButtonSelected img {
+	border: 1px solid #C0C0BB !important;
+}
+
+a.mceButtonNormal img:hover, a.mceButtonSelected img:hover {
+	border: 1px solid #0A246A !important;
+	cursor: default;
+	background-color: #B6BDD2;
+}
+
+a.mceButtonDisabled img {
+	-moz-opacity:0.3;
+	opacity: 0.3;
+	border: 1px solid #F0F0EE !important;
+	cursor: default;
+}
+
+a.mceTiledButton img {
+	background-image: url('../images/buttons.gif');
+	background-repeat: no-repeat;
+}
+
+/* MSIE specific rules */
+
+* html a.mceButtonNormal img, * html a.mceButtonSelected img, * html a.mceButtonDisabled img {
+	border: 0px !important;
+	margin-top: 2px;
+	margin-bottom: 1px;
+}
+
+* html a.mceButtonDisabled img {
+	filter:progid:DXImageTransform.Microsoft.Alpha(opacity=30);
+	border: 0px !important;
+}
+
+* html a.mceButtonDisabled {
+	border: 1px solid #F0F0EE !important;
+}
+
+* html a.mceButtonNormal, * html a.mceButtonSelected {
+	border: 1px solid #F0F0EE;
+	cursor: default;
+}
+
+* html a.mceButtonSelected {
+	border: 1px solid #C0C0BB;
+}
+
+* html a.mceButtonNormal:hover, * html a.mceButtonSelected:hover {
+	border: 1px solid #0A246A;
+	cursor: default;
+	background-color: #B6BDD2;
+}
+
+* html .mceSelectList {
+	margin-top: 2px;
+}

Modified: labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/themes/simple/editor_template.js
===================================================================
--- labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/themes/simple/editor_template.js	2007-01-11 22:09:16 UTC (rev 8831)
+++ labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/themes/simple/editor_template.js	2007-01-11 22:10:56 UTC (rev 8832)
@@ -1,70 +1 @@
-function TinyMCE_simple_getEditorTemplate() {
-	var template = new Array();
-
-	template['html'] = '\
-<table class="mceEditor" border="0" cellpadding="0" cellspacing="0" width="{$width}" height="{$height}">\
-<tr><td align="center">\
-<span id="{$editor_id}">IFRAME</span>\
-</td></tr>\
-<tr><td class="mceToolbar" align="center" height="1">\
-<img id="{$editor_id}_bold" src="{$themeurl}/images/{$lang_bold_img}" title="{$lang_bold_desc}" width="20" height="20" class="mceButtonNormal" onmouseover="tinyMCE.switchClass(this,\'mceButtonOver\');" onmouseout="tinyMCE.restoreClass(this);" onmousedown="tinyMCE.restoreAndSwitchClass(this,\'mceButtonDown\');" onclick="tinyMCE.execInstanceCommand(\'{$editor_id}\',\'Bold\')">\
-<img id="{$editor_id}_italic" src="{$themeurl}/images/{$lang_italic_img}" title="{$lang_italic_desc}" width="20" height="20" class="mceButtonNormal" onmouseover="tinyMCE.switchClass(this,\'mceButtonOver\');" onmouseout="tinyMCE.restoreClass(this);" onmousedown="tinyMCE.restoreAndSwitchClass(this,\'mceButtonDown\');" onclick="tinyMCE.execInstanceCommand(\'{$editor_id}\',\'Italic\')">\
-<img id="{$editor_id}_underline" src="{$themeurl}/images/{$lang_underline_img}" title="{$lang_underline_desc}" width="20" height="20" class="mceButtonNormal" onmouseover="tinyMCE.switchClass(this,\'mceButtonOver\');" onmouseout="tinyMCE.restoreClass(this);" onmousedown="tinyMCE.restoreAndSwitchClass(this,\'mceButtonDown\');" onclick="tinyMCE.execInstanceCommand(\'{$editor_id}\',\'Underline\')">\
-<img id="{$editor_id}_strikethrough" src="{$themeurl}/images/strikethrough.gif" title="{$lang_striketrough_desc}" width="20" height="20" class="mceButtonNormal" onmouseover="tinyMCE.switchClass(this,\'mceButtonOver\');" onmouseout="tinyMCE.restoreClass(this);" onmousedown="tinyMCE.restoreAndSwitchClass(this,\'mceButtonDown\');" onclick="tinyMCE.execInstanceCommand(\'{$editor_id}\',\'Strikethrough\')">\
-<img src="{$themeurl}/images/spacer.gif" width="1" height="15" class="mceSeparatorLine">\
-<img src="{$themeurl}/images/undo.gif" title="{$lang_undo_desc}" width="20" height="20" class="mceButtonNormal" onmouseover="tinyMCE.switchClass(this,\'mceButtonOver\');" onmouseout="tinyMCE.restoreClass(this);" onmousedown="tinyMCE.restoreAndSwitchClass(this,\'mceButtonDown\');" onclick="tinyMCE.execInstanceCommand(\'{$editor_id}\',\'Undo\')">\
-<img src="{$themeurl}/images/redo.gif" title="{$lang_redo_desc}" width="20" height="20" class="mceButtonNormal" onmouseover="tinyMCE.switchClass(this,\'mceButtonOver\');" onmouseout="tinyMCE.restoreClass(this);" onmousedown="tinyMCE.restoreAndSwitchClass(this,\'mceButtonDown\');" onclick="tinyMCE.execInstanceCommand(\'{$editor_id}\',\'Redo\')">\
-<img src="{$themeurl}/images/spacer.gif" width="1" height="15" class="mceSeparatorLine">\
-<img src="{$themeurl}/images/cleanup.gif" title="{$lang_cleanup_desc}" width="20" height="20" class="mceButtonNormal" onmouseover="tinyMCE.switchClass(this,\'mceButtonOver\');" onmouseout="tinyMCE.restoreClass(this);" onmousedown="tinyMCE.restoreAndSwitchClass(this,\'mceButtonDown\');" onclick="tinyMCE.execInstanceCommand(\'{$editor_id}\',\'mceCleanup\')">\
-<img src="{$themeurl}/images/spacer.gif" width="1" height="15" class="mceSeparatorLine">\
-<img id="{$editor_id}_bullist" src="{$themeurl}/images/bullist.gif" title="{$lang_bullist_desc}" width="20" height="20" class="mceButtonNormal" onmouseover="tinyMCE.switchClass(this,\'mceButtonOver\');" onmouseout="tinyMCE.restoreClass(this);" onmousedown="tinyMCE.restoreAndSwitchClass(this,\'mceButtonDown\');" onclick="tinyMCE.execInstanceCommand(\'{$editor_id}\',\'InsertUnorderedList\')">\
-<img id="{$editor_id}_numlist" src="{$themeurl}/images/numlist.gif" title="{$lang_numlist_desc}" width="20" height="20" class="mceButtonNormal" onmouseover="tinyMCE.switchClass(this,\'mceButtonOver\');" onmouseout="tinyMCE.restoreClass(this);" onmousedown="tinyMCE.restoreAndSwitchClass(this,\'mceButtonDown\');" onclick="tinyMCE.execInstanceCommand(\'{$editor_id}\',\'InsertOrderedList\')">\
-</td></tr>\
-</table>';
-
-	template['delta_width'] = 0;
-	template['delta_height'] = -20;
-
-	return template;
-}
-
-function TinyMCE_simple_handleNodeChange(editor_id, node) {
-	// Reset old states
-	tinyMCE.switchClassSticky(editor_id + '_bold', 'mceButtonNormal');
-	tinyMCE.switchClassSticky(editor_id + '_italic', 'mceButtonNormal');
-	tinyMCE.switchClassSticky(editor_id + '_underline', 'mceButtonNormal');
-	tinyMCE.switchClassSticky(editor_id + '_strikethrough', 'mceButtonNormal');
-	tinyMCE.switchClassSticky(editor_id + '_bullist', 'mceButtonNormal');
-	tinyMCE.switchClassSticky(editor_id + '_numlist', 'mceButtonNormal');
-
-	// Handle elements
-	do {
-		switch (node.nodeName.toLowerCase()) {
-			case "b":
-			case "strong":
-				tinyMCE.switchClassSticky(editor_id + '_bold', 'mceButtonSelected');
-			break;
-
-			case "i":
-			case "em":
-				tinyMCE.switchClassSticky(editor_id + '_italic', 'mceButtonSelected');
-			break;
-
-			case "u":
-				tinyMCE.switchClassSticky(editor_id + '_underline', 'mceButtonSelected');
-			break;
-
-			case "strike":
-				tinyMCE.switchClassSticky(editor_id + '_strikethrough', 'mceButtonSelected');
-			break;
-			
-			case "ul":
-				tinyMCE.switchClassSticky(editor_id + '_bullist', 'mceButtonSelected');
-			break;
-
-			case "ol":
-				tinyMCE.switchClassSticky(editor_id + '_numlist', 'mceButtonSelected');
-			break;
-		}
-	} while ((node = node.parentNode));
-}
+var TinyMCE_SimpleTheme={_buttonMap:'bold,bullist,cleanup,italic,numlist,redo,strikethrough,underline,undo',getEditorTemplate:function(){var html='';html+='<table class="mceEditor" border="0" cellpadding="0" cellspacing="0" width="{$width}" height="{$height}">';html+='<tr><td align="center">';html+='<span id="{$editor_id}">IFRAME</span>';html+='</td></tr>';html+='<tr><td class="mceToolbar" align="center" height="1">';html+=tinyMCE.getButtonHTML('bold','lang_bold_desc','{$themeurl}/images/{$lang_bold_img}','Bold');html+=tinyMCE.getButtonHTML('italic','lang_italic_desc','{$themeurl}/images/{$lang_italic_img}','Italic');html+=tinyMCE.getButtonHTML('underline','lang_underline_desc','{$themeurl}/images/{$lang_underline_img}','Underline');html+=tinyMCE.getButtonHTML('strikethrough','lang_striketrough_desc','{$themeurl}/images/strikethrough.gif','Strikethrough');html+='<img src="{$themeurl}/images/separator.gif" width="2" height="20" class="mceSeparatorLine" />';html+=tinyMCE.getB!
 uttonHTML('undo','lang_undo_desc','{$themeurl}/images/undo.gif','Undo');html+=tinyMCE.getButtonHTML('redo','lang_redo_desc','{$themeurl}/images/redo.gif','Redo');html+='<img src="{$themeurl}/images/separator.gif" width="2" height="20" class="mceSeparatorLine" />';html+=tinyMCE.getButtonHTML('cleanup','lang_cleanup_desc','{$themeurl}/images/cleanup.gif','mceCleanup');html+='<img src="{$themeurl}/images/separator.gif" width="2" height="20" class="mceSeparatorLine" />';html+=tinyMCE.getButtonHTML('bullist','lang_bullist_desc','{$themeurl}/images/bullist.gif','InsertUnorderedList');html+=tinyMCE.getButtonHTML('numlist','lang_numlist_desc','{$themeurl}/images/numlist.gif','InsertOrderedList');html+='</td></tr></table>';return{delta_width:0,delta_height:20,html:html}},handleNodeChange:function(editor_id,node){tinyMCE.switchClass(editor_id+'_bold','mceButtonNormal');tinyMCE.switchClass(editor_id+'_italic','mceButtonNormal');tinyMCE.switchClass(editor_id+'_underline','mceButtonNorm!
 al');tinyMCE.switchClass(editor_id+'_strikethrough','mceButtonNormal')
;tinyMCE.switchClass(editor_id+'_bullist','mceButtonNormal');tinyMCE.switchClass(editor_id+'_numlist','mceButtonNormal');do{switch(node.nodeName.toLowerCase()){case"b":case"strong":tinyMCE.switchClass(editor_id+'_bold','mceButtonSelected');break;case"i":case"em":tinyMCE.switchClass(editor_id+'_italic','mceButtonSelected');break;case"u":tinyMCE.switchClass(editor_id+'_underline','mceButtonSelected');break;case"strike":tinyMCE.switchClass(editor_id+'_strikethrough','mceButtonSelected');break;case"ul":tinyMCE.switchClass(editor_id+'_bullist','mceButtonSelected');break;case"ol":tinyMCE.switchClass(editor_id+'_numlist','mceButtonSelected');break}}while((node=node.parentNode)!=null)}};tinyMCE.addTheme("simple",TinyMCE_SimpleTheme);tinyMCE.addButtonMap(TinyMCE_SimpleTheme._buttonMap);
\ No newline at end of file

Added: labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/themes/simple/editor_template_src.js
===================================================================
--- labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/themes/simple/editor_template_src.js	2007-01-11 22:09:16 UTC (rev 8831)
+++ labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/themes/simple/editor_template_src.js	2007-01-11 22:10:56 UTC (rev 8832)
@@ -0,0 +1,84 @@
+/**
+ * $Id: editor_template_src.js 114 2006-10-17 09:29:32Z spocke $
+ *
+ * @author Moxiecode
+ * @copyright Copyright © 2004-2006, Moxiecode Systems AB, All rights reserved.
+ */
+
+var TinyMCE_SimpleTheme = {
+	// List of button ids in tile map
+	_buttonMap : 'bold,bullist,cleanup,italic,numlist,redo,strikethrough,underline,undo',
+
+	getEditorTemplate : function() {
+		var html = '';
+
+		html += '<table class="mceEditor" border="0" cellpadding="0" cellspacing="0" width="{$width}" height="{$height}">';
+		html += '<tr><td align="center">';
+		html += '<span id="{$editor_id}">IFRAME</span>';
+		html += '</td></tr>';
+		html += '<tr><td class="mceToolbar" align="center" height="1">';
+		html += tinyMCE.getButtonHTML('bold', 'lang_bold_desc', '{$themeurl}/images/{$lang_bold_img}', 'Bold');
+		html += tinyMCE.getButtonHTML('italic', 'lang_italic_desc', '{$themeurl}/images/{$lang_italic_img}', 'Italic');
+		html += tinyMCE.getButtonHTML('underline', 'lang_underline_desc', '{$themeurl}/images/{$lang_underline_img}', 'Underline');
+		html += tinyMCE.getButtonHTML('strikethrough', 'lang_striketrough_desc', '{$themeurl}/images/strikethrough.gif', 'Strikethrough');
+		html += '<img src="{$themeurl}/images/separator.gif" width="2" height="20" class="mceSeparatorLine" />';
+		html += tinyMCE.getButtonHTML('undo', 'lang_undo_desc', '{$themeurl}/images/undo.gif', 'Undo');
+		html += tinyMCE.getButtonHTML('redo', 'lang_redo_desc', '{$themeurl}/images/redo.gif', 'Redo');
+		html += '<img src="{$themeurl}/images/separator.gif" width="2" height="20" class="mceSeparatorLine" />';
+		html += tinyMCE.getButtonHTML('cleanup', 'lang_cleanup_desc', '{$themeurl}/images/cleanup.gif', 'mceCleanup');
+		html += '<img src="{$themeurl}/images/separator.gif" width="2" height="20" class="mceSeparatorLine" />';
+		html += tinyMCE.getButtonHTML('bullist', 'lang_bullist_desc', '{$themeurl}/images/bullist.gif', 'InsertUnorderedList');
+		html += tinyMCE.getButtonHTML('numlist', 'lang_numlist_desc', '{$themeurl}/images/numlist.gif', 'InsertOrderedList');
+		html += '</td></tr></table>';
+
+		return {
+			delta_width : 0,
+			delta_height : 20,
+			html : html
+		};
+	},
+
+	handleNodeChange : function(editor_id, node) {
+		// Reset old states
+		tinyMCE.switchClass(editor_id + '_bold', 'mceButtonNormal');
+		tinyMCE.switchClass(editor_id + '_italic', 'mceButtonNormal');
+		tinyMCE.switchClass(editor_id + '_underline', 'mceButtonNormal');
+		tinyMCE.switchClass(editor_id + '_strikethrough', 'mceButtonNormal');
+		tinyMCE.switchClass(editor_id + '_bullist', 'mceButtonNormal');
+		tinyMCE.switchClass(editor_id + '_numlist', 'mceButtonNormal');
+
+		// Handle elements
+		do {
+			switch (node.nodeName.toLowerCase()) {
+				case "b":
+				case "strong":
+					tinyMCE.switchClass(editor_id + '_bold', 'mceButtonSelected');
+				break;
+
+				case "i":
+				case "em":
+					tinyMCE.switchClass(editor_id + '_italic', 'mceButtonSelected');
+				break;
+
+				case "u":
+					tinyMCE.switchClass(editor_id + '_underline', 'mceButtonSelected');
+				break;
+
+				case "strike":
+					tinyMCE.switchClass(editor_id + '_strikethrough', 'mceButtonSelected');
+				break;
+				
+				case "ul":
+					tinyMCE.switchClass(editor_id + '_bullist', 'mceButtonSelected');
+				break;
+
+				case "ol":
+					tinyMCE.switchClass(editor_id + '_numlist', 'mceButtonSelected');
+				break;
+			}
+		} while ((node = node.parentNode) != null);
+	}
+};
+
+tinyMCE.addTheme("simple", TinyMCE_SimpleTheme);
+tinyMCE.addButtonMap(TinyMCE_SimpleTheme._buttonMap);

Modified: labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/themes/simple/images/bold.gif
===================================================================
(Binary files differ)

Modified: labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/themes/simple/images/bold_de_se.gif
===================================================================
(Binary files differ)

Added: labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/themes/simple/images/bold_fr.gif
===================================================================
(Binary files differ)


Property changes on: labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/themes/simple/images/bold_fr.gif
___________________________________________________________________
Name: svn:mime-type
   + application/octet-stream

Modified: labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/themes/simple/images/bold_ru.gif
===================================================================
(Binary files differ)

Added: labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/themes/simple/images/bold_tw.gif
===================================================================
(Binary files differ)


Property changes on: labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/themes/simple/images/bold_tw.gif
___________________________________________________________________
Name: svn:mime-type
   + application/octet-stream

Modified: labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/themes/simple/images/bullist.gif
===================================================================
(Binary files differ)

Added: labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/themes/simple/images/buttons.gif
===================================================================
(Binary files differ)


Property changes on: labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/themes/simple/images/buttons.gif
___________________________________________________________________
Name: svn:mime-type
   + application/octet-stream

Modified: labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/themes/simple/images/cleanup.gif
===================================================================
(Binary files differ)

Modified: labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/themes/simple/images/italic.gif
===================================================================
(Binary files differ)

Modified: labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/themes/simple/images/italic_de_se.gif
===================================================================
(Binary files differ)

Modified: labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/themes/simple/images/italic_ru.gif
===================================================================
(Binary files differ)

Added: labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/themes/simple/images/italic_tw.gif
===================================================================
(Binary files differ)


Property changes on: labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/themes/simple/images/italic_tw.gif
___________________________________________________________________
Name: svn:mime-type
   + application/octet-stream

Modified: labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/themes/simple/images/numlist.gif
===================================================================
(Binary files differ)

Modified: labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/themes/simple/images/redo.gif
===================================================================
(Binary files differ)

Added: labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/themes/simple/images/separator.gif
===================================================================
(Binary files differ)


Property changes on: labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/themes/simple/images/separator.gif
___________________________________________________________________
Name: svn:mime-type
   + application/octet-stream

Modified: labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/themes/simple/images/spacer.gif
===================================================================
(Binary files differ)

Modified: labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/themes/simple/images/strikethrough.gif
===================================================================
(Binary files differ)

Modified: labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/themes/simple/images/underline.gif
===================================================================
(Binary files differ)

Added: labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/themes/simple/images/underline_fr.gif
===================================================================
(Binary files differ)


Property changes on: labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/themes/simple/images/underline_fr.gif
___________________________________________________________________
Name: svn:mime-type
   + application/octet-stream

Modified: labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/themes/simple/images/underline_ru.gif
===================================================================
(Binary files differ)

Added: labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/themes/simple/images/underline_tw.gif
===================================================================
(Binary files differ)


Property changes on: labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/themes/simple/images/underline_tw.gif
___________________________________________________________________
Name: svn:mime-type
   + application/octet-stream

Modified: labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/themes/simple/images/undo.gif
===================================================================
(Binary files differ)

Modified: labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/tiny_mce.js
===================================================================
--- labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/tiny_mce.js	2007-01-11 22:09:16 UTC (rev 8831)
+++ labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/tiny_mce.js	2007-01-11 22:10:56 UTC (rev 8832)
@@ -1,10 +1 @@
-/**
- * $RCSfile$
- * $Revision: 2 $
- * $Date: 2005-01-14 18:01:32 -0500 (Fri, 14 Jan 2005) $
- *
- * @author Moxiecode
- * @copyright Copyright © 2004, Moxiecode Systems AB, All rights reserved.
- */
- function TinyMCE(){this.instances=new Array();this.stickyClassesLookup=new Array();this.windowArgs=new Array();this.isMSIE=(navigator.appName=="Microsoft Internet Explorer");this.isMSIE5=this.isMSIE&&(navigator.userAgent.indexOf('MSIE 5')!=-1);this.isGecko=navigator.userAgent.indexOf('Gecko')!=-1;this.idCounter=0;this.init=TinyMCE_init;this.addMCEControl=TinyMCE_addMCEControl;this.createMCEControl=TinyMCE_createMCEControl;this.triggerSave=TinyMCE_triggerSave;this._convertOnClick=TinyMCE__convertOnClick;this.resetForm=TinyMCE_resetForm;this.execCommand=TinyMCE_execCommand;this.execInstanceCommand=TinyMCE_execInstanceCommand;this._createIFrame=TinyMCE__createIFrame;this.setEditMode=TinyMCE_setEditMode;this.handleEvent=TinyMCE_handleEvent;this.setupContent=TinyMCE_setupContent;this.switchClass=TinyMCE_switchClass;this.restoreAndSwitchClass=TinyMCE_restoreAndSwitchClass;this.switchClassSticky=TinyMCE_switchClassSticky;this.restoreClass=TinyMCE_restoreClass;this.setClassLock=Ti!
 nyMCE_setClassLock;this.onLoad=TinyMCE_onLoad;this.removeMCEControl=TinyMCE_removeMCEControl;this._initCleanup=TinyMCE__initCleanup;this._cleanupHTML=TinyMCE__cleanupHTML;this._cleanupAttribute=TinyMCE__cleanupAttribute;this._fixInlineStyles=TinyMCE__fixInlineStyles;this._cleanupElementName=TinyMCE__cleanupElementName;this._verifyClass=TinyMCE__verifyClass;this.cleanupNode=TinyMCE_cleanupNode;this.convertStringToXML=TinyMCE_convertStringToXML;this.insertLink=TinyMCE_insertLink;this.insertImage=TinyMCE_insertImage;this.getElementByAttributeValue=TinyMCE_getElementByAttributeValue;this.getElementsByAttributeValue=TinyMCE_getElementsByAttributeValue;this.getParentElement=TinyMCE_getParentElement;this.getParam=TinyMCE_getParam;this.getLang=TinyMCE_getLang;this.replaceVar=TinyMCE_replaceVar;this.replaceVars=TinyMCE_replaceVars;this.triggerNodeChange=TinyMCE_triggerNodeChange;this.parseURL=TinyMCE_parseURL;this.convertAbsoluteURLToRelativeURL=TinyMCE_convertAbsoluteURLToRelativeU!
 RL;this.updateContent=TinyMCE_updateContent;this._customCleanup=TinyMC
E__customCleanup;this.getContent=TinyMCE_getContent;this.setContent=TinyMCE_setContent;this.importThemeLanguagePack=TinyMCE_importThemeLanguagePack;this.importPluginLanguagePack=TinyMCE_importPluginLanguagePack;this.applyTemplate=TinyMCE_applyTemplate;this.openWindow=TinyMCE_openWindow;this.handleVisualAid=TinyMCE_handleVisualAid;this.setAttrib=TinyMCE_setAttrib;this.getAttrib=TinyMCE_getAttrib;this._selectNode=TinyMCE__selectNode;this._getThemeFunction=TinyMCE__getThemeFunction;this._themeExecCommand=TinyMCE__themeExecCommand;this.getControlHTML=TinyMCE_getControlHTML;this._setHTML=TinyMCE__setHTML;this._getElementById=TinyMCE__getElementById;this._getInstanceById=TinyMCE__getInstanceById;this.getEditorId=TinyMCE_getEditorId;this.queryInstanceCommandValue=TinyMCE_queryInstanceCommandValue;this.queryInstanceCommandState=TinyMCE_queryInstanceCommandState;this.getWindowArg=TinyMCE_getWindowArg;this.getCSSClasses=TinyMCE_getCSSClasses;this.regexpReplace=TinyMCE_regexpReplace;th!
 is.cleanupEventStr=TinyMCE_cleanupEventStr;}function TinyMCE_init(settings){var theme;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_src.js")!=-1)){var src=elements[i].src;src=src.substring(0,src.lastIndexOf('/'));tinyMCE.baseURL=src;break;}}}this.documentBasePath=document.location.href;if(this.documentBasePath.indexOf('?')!=-1)this.documentBasePath=this.documentBasePath.substring(0,this.documentBasePath.indexOf('?'));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.settings=settings;this.settings['mode']=tinyMCE.getParam("mode","none");this.settings['theme']=tinyMCE.getParam("theme","d!
 efault");this.settings['plugins']=tinyMCE.getParam("plugins","",true);
this.settings['language']=tinyMCE.getParam("language","uk");this.settings['docs_language']=tinyMCE.getParam("docs_language",this.settings['language']);this.settings['elements']=tinyMCE.getParam("elements","");this.settings['textarea_trigger']=tinyMCE.getParam("textarea_trigger","mce_editable");this.settings['valid_elements']=tinyMCE.getParam("valid_elements","a[name|href|target|title],strong/b[class],em/i[class],strike[class],u[class],p[class|align],ol,ul,li,br,img[class|src|border=0|alt|title|hspace|vspace|width|height|align],sub,sup,blockquote[dir|style],table[border=0|cellspacing|cellpadding|width|height|class|align],tr[class|rowspan],td[class|colspan|rowspan|width|height],div[class|align],span[class|align],pre[class|align],address[class|align],h1[class|align],h2[class|align],h3[class|align],h4[class|align],h5[class|align],h6[class|align],hr");this.settings['extended_valid_elements']=tinyMCE.getParam("extended_valid_elements","");this.settings['invalid_elements']=tinyMCE.!
 getParam("invalid_elements","");this.settings['encoding']=tinyMCE.getParam("encoding","");this.settings['urlconvertor_callback']=tinyMCE.getParam("urlconvertor_callback","TinyMCE_convertURL");this.settings['save_callback']=tinyMCE.getParam("save_callback","");this.settings['debug']=tinyMCE.getParam("debug",false);this.settings['force_br_newlines']=tinyMCE.getParam("force_br_newlines",false);this.settings['add_form_submit_trigger']=tinyMCE.getParam("add_form_submit_trigger",true);this.settings['relative_urls']=tinyMCE.getParam("relative_urls",true);this.settings['remove_script_host']=tinyMCE.getParam("remove_script_host",true);this.settings['focus_alert']=tinyMCE.getParam("focus_alert",true);this.settings['document_base_url']=tinyMCE.getParam("document_base_url",""+document.location.href);this.settings['visual']=tinyMCE.getParam("visual",true);this.settings['visual_table_style']=tinyMCE.getParam("visual_table_style","border: 1px dashed #BBBBBB");this.settings['setupcontent_c!
 allback']=tinyMCE.getParam("setupcontent_callback","");this.settings['
fix_content_duplication']=tinyMCE.getParam("fix_content_duplication",true);this.settings['custom_undo_redo']=tinyMCE.getParam("custom_undo_redo",true);this.settings['custom_undo_redo_levels']=tinyMCE.getParam("custom_undo_redo_levels",-1);this.settings['custom_undo_redo_keyboard_shortcuts']=tinyMCE.getParam("custom_undo_redo_keyboard_shortcuts",true);this.settings['verify_css_classes']=tinyMCE.getParam("verify_css_classes",true);this.settings['trim_span_elements']=tinyMCE.getParam("trim_span_elements",true);this.settings['verify_html']=tinyMCE.getParam("verify_html",true);this.settings['apply_source_formatting']=tinyMCE.getParam("apply_source_formatting",false);this.settings['directionality']=tinyMCE.getParam("directionality","ltr");this.settings['auto_cleanup_word']=tinyMCE.getParam("auto_cleanup_word",true);this.settings['cleanup_on_startup']=tinyMCE.getParam("cleanup_on_startup",false);this.settings['inline_styles']=tinyMCE.getParam("inline_styles",false);this.settings['c!
 onvert_newlines_to_brs']=tinyMCE.getParam("convert_newlines_to_brs",false);this.settings['auto_reset_designmode']=tinyMCE.getParam("auto_reset_designmode",false);this.settings['entities']=tinyMCE.getParam("entities","160,nbsp,38,amp,34,quot,162,cent,8364,euro,163,pound,165,yen,169,copy,174,reg,8482,trade,8240,permil,181,micro,183,middot,8226,bull,8230,hellip,8242,prime,8243,Prime,167,sect,182,para,223,szlig,8249,lsaquo,8250,rsaquo,171,laquo,187,raquo,8216,lsquo,8217,rsquo,8220,ldquo,8221,rdquo,8218,sbquo,8222,bdquo,60,lt,62,gt,8804,le,8805,ge,8211,ndash,8212,mdash,175,macr,8254,oline,164,curren,166,brvbar,168,uml,161,iexcl,191,iquest,710,circ,732,tilde,176,deg,8722,minus,177,plusmn,247,divide,8260,frasl,215,times,185,sup1,178,sup2,179,sup3,188,frac14,189,frac12,190,frac34,402,fnof,8747,int,8721,sum,8734,infin,8730,radic,8764,sim,8773,cong,8776,asymp,8800,ne,8801,equiv,8712,isin,8713,notin,8715,ni,8719,prod,8743,and,8744,or,172,not,8745,cap,8746,cup,8706,part,8704,forall,870!
 7,exist,8709,empty,8711,nabla,8727,lowast,8733,prop,8736,ang,180,acute
,184,cedil,170,ordf,186,ordm,8224,dagger,8225,Dagger,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,216,Oslash,338,OElig,352,Scaron,217,Ugrave,218,Uacute,219,Ucirc,220,Uuml,221,Yacute,376,Yuml,222,THORN,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,248,oslash,339,oelig,353,scaron,249,ugrave,250,uacute,251,ucirc,252,uuml,253,yacute,254,thorn,255,yuml,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,epsil!
 on,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,8501,alefsym,982,piv,8476,real,977,thetasym,978,upsih,8472,weierp,8465,image,8592,larr,8593,uarr,8594,rarr,8595,darr,8596,harr,8629,crarr,8656,lArr,8657,uArr,8658,rArr,8659,dArr,8660,hArr,8756,there4,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,8194,ensp,8195,emsp,8201,thinsp,8204,zwnj,8205,zwj,8206,lrm,8207,rlm,173,shy");this.settings['cleanup_callback']=tinyMCE.getParam("cleanup_callback","");var baseHREF=tinyMCE.settings['document_base_url'];if(baseHREF.indexOf('?')!=-1)baseHREF=baseHREF.substring(0,baseHREF.indexOf('?'));this.settings['base_href']=baseHREF.substring(0,baseHREF.lastIndexOf('/'))+"/";theme=this.settings['theme']!
 ;this.settings['theme_href']=tinyMCE.baseURL+"/themes/"+theme;if(!tiny
MCE.isMSIE)this.settings['force_br_newlines']=false;if(tinyMCE.getParam("content_css",false)){var cssPath=tinyMCE.getParam("content_css","");if(cssPath.indexOf('://')==-1&&cssPath.charAt(0)!='/')this.settings['content_css']=this.documentBasePath+"/"+cssPath;else this.settings['content_css']=cssPath;}else this.settings['content_css']=tinyMCE.baseURL+"/themes/"+theme+"/editor_content.css";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+"/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['edi!
 tor_css']=tinyMCE.baseURL+"/themes/"+theme+"/editor_ui.css";this.settings['ask']=tinyMCE.getParam("ask",false);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);}this._initCleanup();if(this.isMSIE)attachEvent("onload",TinyMCE_onLoad);else addEventListener("load",TinyMCE_onLoad,false);document.write('<sc'+'ript language="javascript" type="text/javascript" src="'+tinyMCE.baseURL+'/themes/'+this.settings['theme']+'/editor_template.js"></script>');document.write('<sc'+'ript language="javascript" type="text/javascript" src="'+tinyMCE.baseURL+'/langs/'+this.settings['language']+'.js"></script>');document.write('<link href="'+this.settings['editor_css']+'" rel="stylesheet" type="text/css">');var themePlugins=tinyMCE.getParam(!
 'plugins','',true,',');if(this.settings['plugins']!=''){for(var i=0;i<
themePlugins.length;i++)document.write('<sc'+'ript language="javascript" type="text/javascript" src="'+tinyMCE.baseURL+'/plugins/'+themePlugins[i]+'/editor_plugin.js"></script>');}}function TinyMCE_confirmAdd(e){if(tinyMCE.isMSIE)var targetElement=event.srcElement;else var targetElement=e.target;var elementId=targetElement.name?targetElement.name:targetElement.id;if(!targetElement.getAttribute('mce_noask')&&confirm(tinyMCELang['lang_edit_confirm']))tinyMCE.addMCEControl(targetElement,elementId,tinyMCE.createMCEControl(tinyMCE.settings));else targetElement.setAttribute('mce_noask','true');}function TinyMCE_updateContent(form_element_name){var formElement=document.getElementById(form_element_name);for(var instanceName in tinyMCE.instances){var instance=tinyMCE.instances[instanceName];if(instance.formElement==formElement){tinyMCE._setHTML(instance.contentWindow.document,instance.formElement.value);if(!tinyMCE.isMSIE)instance.contentWindow.document.body.innerHTML=tinyMCE._cleanu!
 pHTML(instance.contentWindow.document,this.settings,instance.contentWindow.document.body,instance.visualAid);}}}function TinyMCE_addMCEControl(replace_element,form_element_name,mce_control){var editorId="mce_editor_"+tinyMCE.idCounter++;mce_control.editorId=editorId;this.instances[editorId]=mce_control;mce_control.onAdd(replace_element,form_element_name);}function TinyMCE_createMCEControl(settings){return new TinyMCEControl(settings);}function TinyMCE_triggerSave(skip_cleanup){for(var instanceName in tinyMCE.instances){var instance=tinyMCE.instances[instanceName];tinyMCE.settings['preformatted']=false;if(typeof(skip_cleanup)=="undefined")skip_cleanup=false;tinyMCE._setHTML(instance.contentWindow.document,instance.contentWindow.document.body.innerHTML);var cleanedHTML=skip_cleanup?instance.contentWindow.document.body.innerHTML:tinyMCE._cleanupHTML(instance.contentWindow.document,this.settings,instance.contentWindow.document.body,this.visualAid,true);if(tinyMCE.settings["enco!
 ding"]=="xml"||tinyMCE.settings["encoding"]=="html")cleanedHTML=tinyMC
E.convertStringToXML(cleanedHTML);if(tinyMCE.settings['save_callback']!="")var content=eval(tinyMCE.settings['save_callback']+"(instance.formTargetElementId,cleanedHTML,instance.contentWindow.document.body);");if((typeof(content)!="undefined")&&content!=null)cleanedHTML=content;cleanedHTML=tinyMCE.regexpReplace(cleanedHTML,"&#40;","(","gi");cleanedHTML=tinyMCE.regexpReplace(cleanedHTML,"&#41;",")","gi");cleanedHTML=tinyMCE.regexpReplace(cleanedHTML,"&#59;",";","gi");cleanedHTML=tinyMCE.regexpReplace(cleanedHTML,"&#34;","&quot;","gi");cleanedHTML=tinyMCE.regexpReplace(cleanedHTML,"&#94;","^","gi");instance.formElement.value=cleanedHTML;}}function TinyMCE__convertOnClick(node){if(tinyMCE.isMSIE5)return;var elms=node.getElementsByTagName("a");for(var i=0;i<elms.length;i++){var onclick=elms[i].getAttribute('onclick');if(onclick&&onclick!=""){elms[i].removeAttribute("onclick");elms[i].setAttribute("mce_onclick",tinyMCE.cleanupEventStr(""+onclick));elms[i].onclick=null;}}}function!
  TinyMCE_resetForm(e){var formObj=tinyMCE.isMSIE?window.event.srcElement:e.target;for(var instanceName in tinyMCE.instances){var instance=tinyMCE.instances[instanceName];for(var i=0;i<formObj.elements.length;i++){if(instance.formTargetElementId==formObj.elements[i].name){instance.contentWindow.document.body.innerHTML=instance.startContent;return;}}}}function TinyMCE_execInstanceCommand(editor_id,command,user_interface,value){var mceControl=tinyMCE._getInstanceById(editor_id);if(mceControl){mceControl.contentWindow.focus();mceControl.autoResetDesignMode();this.selectedElement=mceControl.getFocusElement();this.selectedInstance=mceControl;tinyMCE.execCommand(command,user_interface,value);}}function TinyMCE_execCommand(command,user_interface,value){user_interface=user_interface?user_interface:false;value=value?value:null;switch(command){case 'mceHelp':window.open(tinyMCE.themeURL+"/docs/"+this.settings['docs_language']+"/index.htm","mceHelp","menubar=yes,toolbar=yes,scrollbars=!
 yes,left=20,top=20,width=550,height=600");return;case 'mceFocus':var m
ceControl=tinyMCE._getInstanceById(value);if(mceControl)mceControl.contentWindow.focus();return;case "mceAddControl":case "mceAddEditor":tinyMCE.addMCEControl(tinyMCE._getElementById(value),value,tinyMCE.createMCEControl(tinyMCE.settings));return;case "mceRemoveControl":case "mceRemoveEditor":tinyMCE.removeMCEControl(value);return;case "mceResetDesignMode":if(!tinyMCE.isMSIE){for(var instanceName in tinyMCE.instances)tinyMCE.instances[instanceName].contentWindow.document.designMode="on";}return;}if(this.selectedInstance)this.selectedInstance.execCommand(command,user_interface,value);else if(tinyMCE.settings['focus_alert'])alert(tinyMCELang['lang_focus_alert']);}function TinyMCE_addEventHandlers(editor_id){if(tinyMCE.isMSIE){var patchFunc=function(){var event=document.frames[editor_id].event;event.target=event.srcElement;event.target.editor_id=editor_id;TinyMCE_handleEvent(event);};document.frames[editor_id].document.onkeypress=patchFunc;document.frames[editor_id].document.on!
 keyup=patchFunc;document.frames[editor_id].document.onkeydown=patchFunc;document.frames[editor_id].document.onmouseup=patchFunc;document.frames[editor_id].document.onclick=patchFunc;}else{var instance=tinyMCE.instances[editor_id];instance.contentWindow.document.editor_id=editor_id;instance.contentWindow.document.addEventListener("keypress",tinyMCE.handleEvent,false);instance.contentWindow.document.addEventListener("keydown",tinyMCE.handleEvent,false);instance.contentWindow.document.addEventListener("keyup",tinyMCE.handleEvent,false);instance.contentWindow.document.addEventListener("click",tinyMCE.handleEvent,false);instance.contentWindow.document.addEventListener("mouseup",tinyMCE.handleEvent,false);instance.contentWindow.document.addEventListener("mousedown",tinyMCE.handleEvent,false);instance.contentWindow.document.addEventListener("focus",tinyMCE.handleEvent,false);instance.contentWindow.document.designMode="on";}}function TinyMCE__createIFrame(replace_element){var ifram!
 e=document.createElement("iframe");var id=replace_element.getAttribute
("id");iframe.setAttribute("id",id);iframe.setAttribute("className","mceEditorArea");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",tinyMCE.settings['area_width']);iframe.setAttribute("height",tinyMCE.settings['area_height']);if(tinyMCE.isMSIE)iframe.setAttribute("src",this.settings['default_document']);iframe.style.width=tinyMCE.settings['area_width'];iframe.style.height=tinyMCE.settings['area_height'];if(tinyMCE.isMSIE)replace_element.outerHTML=iframe.outerHTML;else replace_element.parentNode.replaceChild(iframe,replace_element);if(tinyMCE.isMSIE)return window.frames[id];else return iframe;}function TinyMCE_setEditMode(editor_id,mode){var targetMCEControl=this.instances[editor_id];var dynamicIFrame=false;if(!this.isMSIE){var targetElement=document.getElementById(editor!
 _id);if(targetElement&&targetElement.nodeName.toLowerCase()=="span"){targetElement=tinyMCE._createIFrame(targetElement);dynamicIFrame=true;}targetMCEControl.targetElement=targetElement;targetMCEControl.contentDocument=targetElement.contentDocument;targetMCEControl.contentWindow=targetElement.contentWindow;}else{var targetElement=document.getElementById(editor_id);if(targetElement&&targetElement.nodeName.toLowerCase()=="span")targetElement=tinyMCE._createIFrame(targetElement);else targetElement=document.frames[editor_id];targetMCEControl.targetElement=targetElement;targetMCEControl.contentDocument=targetElement.window.document;targetMCEControl.contentWindow=targetElement.window;targetMCEControl.contentDocument.designMode=mode?"on":"off";}var doc=targetMCEControl.contentDocument;if(dynamicIFrame){var html=""+'<!doctype html public "-//w3c//dtd html 4.0 transitional//en">'+'<html>'+'<head>'+'<title>blank_page</title>'+'<meta http-equiv="Content-Type" content="text/html; charse!
 t=UTF-8">'+'</head>'+'<body>'+'</body>'+'</html>';try{targetMCEControl
.contentWindow.document.designMode="on";doc.open();doc.write(html);doc.close();}catch(e){targetMCEControl.contentWindow.document.location.href=tinyMCE.baseURL+"/blank.htm";}}if(tinyMCE.isMSIE)window.setTimeout("TinyMCE_addEventHandlers('"+editor_id+"');",1);tinyMCE.setupContent(editor_id);}function TinyMCE_setupContent(editor_id){var instance=tinyMCE.instances[editor_id];var doc=instance.contentWindow.document;var head=doc.getElementsByTagName('head').item(0);if(!tinyMCE.isMSIE&&doc.title!="blank_page"){doc.location.href=tinyMCE.baseURL+"/blank.htm";window.setTimeout("tinyMCE.setupContent('"+editor_id+"');",1000);return;}if(!head){window.setTimeout("tinyMCE.setupContent('"+editor_id+"');",10);return;}doc.body.dir=this.settings['directionality'];doc.editorId=editor_id;if(!tinyMCE.isMSIE)doc.documentElement.editorId=editor_id;base=doc.createElement("base");base.setAttribute('href',tinyMCE.settings['base_href']);head.appendChild(base);var oldElement=instance.oldTargetElement;if!
 (oldElement.nodeName.toLowerCase()=="textarea")var content=oldElement.value;else var content=instance.oldTargetElement.innerHTML;instance.startContent=content;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._customCleanup("insert_to_editor",content);if(tinyMCE.isMSIE){var styleSheet=document.frames[editor_id].document.createStyleSheet(instance.settings['content_css']);window.setInterval('try{tinyMCE.getCSSClasses(document.frames["'+editor_id+'"].document, "'+editor_id+'");}catch(e){}',500);if(tinyMCE.settings["force_br_newlines"])document.frames[editor_id].document.styleSheets[0].addRule("p","margin: 0px;");var patchFunc=function(){var event=document.frames[editor_id].event;event.target=document.frames[editor_id].document;TinyMCE_handleEvent(event);};document.frames[editor_id].documen!
 t.body.onbeforepaste=patchFunc;document.frames[editor_id].document.bod
y.onbeforecut=patchFunc;document.frames[editor_id].document.body.onpaste=patchFunc;document.frames[editor_id].document.body.editorId=editor_id;}else{var targetDocument=document.getElementById(editor_id).contentWindow.document;var cssImporter=targetDocument.createElement("link");cssImporter.rel="stylesheet";cssImporter.href=instance.settings['content_css'];if(headArr=targetDocument.getElementsByTagName("head"));headArr[0].appendChild(cssImporter);}if(!tinyMCE.isMSIE){if(tinyMCE.settings['cleanup_on_startup']){var contentElement=instance.contentWindow.document.createElement("body");contentElement.innerHTML=content;instance.contentWindow.document.body.innerHTML=tinyMCE._cleanupHTML(instance.contentWindow.document,this.settings,contentElement);}else{var contentElement=instance.contentWindow.document.createElement("body");var doc=instance.contentWindow.document;content=tinyMCE.regexpReplace(content,"<strong","<b","gi");content=tinyMCE.regexpReplace(content,"<em","<i","gi");conten!
 t=tinyMCE.regexpReplace(content,"</strong>","</b>","gi");content=tinyMCE.regexpReplace(content,"</em>","</i>","gi");contentElement.innerHTML=content;var elms=contentElement.getElementsByTagName("img");for(var i=0;i<elms.length;i++){var src=elms[i].getAttribute('src');if(src&&src!=""){src=eval(tinyMCE.cleanup_urlconvertor_callback+"(src, elms[i], tinyMCE.cleanup_on_save);");elms[i].setAttribute("src",src);elms[i].setAttribute("mce_real_src",src);}}elms=contentElement.getElementsByTagName("a");for(var i=0;i<elms.length;i++){var href=elms[i].getAttribute('href');if(href&&href!=""){href=eval(tinyMCE.cleanup_urlconvertor_callback+"(href, elms[i], tinyMCE.cleanup_on_save);");elms[i].setAttribute("href",href);elms[i].setAttribute("mce_real_href",href);}}instance.contentWindow.document.body.innerHTML=contentElement.innerHTML;}}else{if(tinyMCE.settings['cleanup_on_startup']){tinyMCE._setHTML(instance.contentWindow.document,content);eval('try {instance.contentWindow.document.body.inn!
 erHTML = tinyMCE._cleanupHTML(instance.contentDocument, this.settings,
 instance.contentDocument.body);} catch(e) {}');}else instance.contentWindow.document.body.innerHTML=content;}tinyMCE._convertOnClick(instance.contentWindow.document.body);var parentElm=document.getElementById(instance.editorId+'_parent');instance.formElement=parentElm.lastChild;if(tinyMCE.settings['handleNodeChangeCallback']){var undoIndex=-1;var undoLevels=-1;if(tinyMCE.settings['custom_undo_redo']){undoIndex=0;undoLevels=0;}eval(tinyMCE.settings['handleNodeChangeCallback']+'("'+editor_id+'", tinyMCE.instances["'+editor_id+'"].contentWindow.document.body,undoIndex,undoLevels,tinyMCE.instances["'+editor_id+'"].visualAid, false);');}tinyMCE.handleVisualAid(instance.contentWindow.document.body,true,tinyMCE.settings['visual']);if(tinyMCE.settings['setupcontent_callback']!="")eval(tinyMCE.settings['setupcontent_callback']+'(editor_id,instance.contentWindow.document.body);');if(!tinyMCE.isMSIE)TinyMCE_addEventHandlers(editor_id);}function TinyMCE_handleEvent(e){switch(e.type){ca!
 se "submit":var formObj=tinyMCE.isMSIE?window.event.srcElement:e.target;for(var i=0;i<formObj.elements.length;i++){var elementId=formObj.elements[i].name?formObj.elements[i].name:formObj.elements[i].id;if(elementId.indexOf('mce_editor_')==0)formObj.elements[i].disabled=true;}TinyMCE_triggerSave();return;case "reset":TinyMCE_resetForm(e);return;case "paste":if(tinyMCE.settings['auto_cleanup_word'])window.setTimeout("tinyMCE.execInstanceCommand('"+e.target.editorId+"', 'mceCleanupWord', false, null);",1);break;case "beforecut":case "beforepaste":if(tinyMCE.selectedInstance)tinyMCE.selectedInstance.execCommand("mceAddUndoLevel");break;case "keypress":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.isMSIE&&e.ctrlKey&&tinyMCE.settings['custom_undo_redo']){if(e.charCode==120||e.charCode==118){tinyMCE.selectedInstance!
 .execCommand("mceAddUndoLevel");return;}if(tinyMCE.settings['custom_un
do_redo_keyboard_shortcuts']){if(e.charCode==122){tinyMCE.selectedInstance.execCommand("Undo");e.preventDefault();return false;}if(e.charCode==121){tinyMCE.selectedInstance.execCommand("Redo");e.preventDefault();return false;}}if(e.charCode==98){tinyMCE.selectedInstance.execCommand("Bold");e.preventDefault();return false;}if(e.charCode==105){tinyMCE.selectedInstance.execCommand("Italic");e.preventDefault();return false;}if(e.charCode==117){tinyMCE.selectedInstance.execCommand("Underline");e.preventDefault();return false;}}if(tinyMCE.settings['custom_undo_redo']){var keys=new Array(13,45,36,35,33,34,37,38,39,40);var posKey=false;for(var i=0;i<keys.length;i++){if(keys[i]==e.keyCode){tinyMCE.selectedInstance.typing=false;posKey=true;break;}}if(!tinyMCE.selectedInstance.typing&&!posKey){tinyMCE.selectedInstance.execCommand("mceAddUndoLevel");tinyMCE.selectedInstance.typing=true;}}if(tinyMCE.isMSIE&&tinyMCE.settings['force_br_newlines']&&e.keyCode==13){if(e.target.editorId)tinyMC!
 E.selectedInstance=tinyMCE.instances[e.target.editorId];if(tinyMCE.selectedInstance){var sel=tinyMCE.selectedInstance.contentWindow.document.selection;var rng=sel.createRange();if(tinyMCE.getParentElement(rng.parentElement(),"li")!=null)return false;if(tinyMCE.getParentElement(rng.parentElement(),"div")==null)return false;e.returnValue=false;e.cancelBubble=true;rng.pasteHTML("<br>");rng.collapse(false);rng.select();}}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":if(e.target.editorId)tinyMCE.selectedInstance=tinyMCE.instances[e.target.editorId];else return;tinyMCE.selectedElement=null;var elm=tinyMCE.selectedInstance.getFocusElement();tinyMCE.linkElement=tinyMCE.getParentElement(elm,"a");tinyMCE.imgElement=tinyMCE.getParentElement(elm,"img");tinyMCE.selectedEl!
 ement=elm;if(tinyMCE.isMSIE&&tinyMCE.settings['custom_undo_redo']){var
 keys=new Array(13,45,36,35,33,34,37,38,39,40);var posKey=false;for(var i=0;i<keys.length;i++){if(keys[i]==e.keyCode){tinyMCE.selectedInstance.typing=false;posKey=true;break;}}if(!tinyMCE.selectedInstance.typing&&!posKey&&(e.keyCode<16||e.keyCode>18&&e.keyCode!=255)){tinyMCE.selectedInstance.execCommand("mceAddUndoLevel");tinyMCE.selectedInstance.typing=true;tinyMCE.triggerNodeChange(false);}if(posKey&&e.type=="keyup")tinyMCE.triggerNodeChange(false);var ctrlKeys=new Array(66,73,85,86,88);var keys=new Array(8,46);for(var i=0;i<keys.length;i++){if((ctrlKeys[i]==e.keyCode&&e.ctrlKey)||keys[i]==e.keyCode){tinyMCE.selectedInstance.execCommand("mceAddUndoLevel");tinyMCE.triggerNodeChange(false);return true;}}if(tinyMCE.settings['custom_undo_redo_keyboard_shortcuts']){if(e.keyCode==90&&e.ctrlKey&&e.type=="keydown"){tinyMCE.selectedInstance.execCommand("Undo");tinyMCE.triggerNodeChange(false);e.returnValue=false;e.cancelBubble=true;return false;}if(e.keyCode==89&&e.ctrlKey&&e.type=!
 ="keydown"){tinyMCE.selectedInstance.execCommand("Redo");tinyMCE.triggerNodeChange(false);e.returnValue=false;e.cancelBubble=true;return false;}}}if(e.type=="keyup")tinyMCE.triggerNodeChange();break;case "mousedown":case "mouseup":case "click":case "focus":var targetBody=tinyMCE.getParentElement(e.target,"body");for(var instanceName in tinyMCE.instances){var instance=tinyMCE.instances[instanceName];if(instance.contentWindow.document.body==targetBody){tinyMCE.selectedInstance=instance;tinyMCE.selectedElement=e.target;tinyMCE.linkElement=tinyMCE.getParentElement(tinyMCE.selectedElement,"a");tinyMCE.imgElement=tinyMCE.getParentElement(tinyMCE.selectedElement,"img");instance.autoResetDesignMode();tinyMCE.selectedInstance.typing=false;break;}}tinyMCE.triggerNodeChange(false);if(!tinyMCE.selectedInstance&&e.target.editorId)tinyMCE.selectedInstance=tinyMCE.instances[e.target.editorId];if(e.target.nodeName.toLowerCase()=="a"&&e.type=="click"&&e.altKey){var evalCode=""+tinyMCE.clean!
 upEventStr(e.target.getAttribute("mce_onclick"));eval(evalCode.replace
('return false;',''));}return false;break;}}function TinyMCE_switchClass(element,class_name,lock_state){var lockChanged=false;if(typeof(lock_state)!="undefined"&&element!=null){element.classLock=lock_state;lockChanged=true;}if(element!=null&&(lockChanged||!element.classLock)){element.oldClassName=element.className;element.className=class_name;}}function TinyMCE_restoreAndSwitchClass(element,class_name){if(element!=null&&!element.classLock){this.restoreClass(element);this.switchClass(element,class_name);}}function TinyMCE_switchClassSticky(element_name,class_name,lock_state){var element,lockChanged=false;if(!this.stickyClassesLookup[element_name])this.stickyClassesLookup[element_name]=document.getElementById(element_name);element=this.stickyClassesLookup[element_name];if(typeof(lock_state)!="undefined"&&element!=null){element.classLock=lock_state;lockChanged=true;}if(element!=null&&(lockChanged||!element.classLock)){element.className=class_name;element.oldClassName=class_name!
 ;}}function TinyMCE_restoreClass(element){if(element!=null&&element.oldClassName&&!element.classLock){element.className=element.oldClassName;element.oldClassName=null;}}function TinyMCE_setClassLock(element,lock_state){if(element!=null)element.classLock=lock_state;}function TinyMCE_onLoad(){if(tinyMCE.isMSIE){if(document.forms&&tinyMCE.settings['add_form_submit_trigger']){for(var i=0;i<document.forms.length;i++){document.forms[i].attachEvent("onsubmit",TinyMCE_handleEvent);document.forms[i].attachEvent("onreset",TinyMCE_handleEvent);}}}else{if(document.forms&&tinyMCE.settings['add_form_submit_trigger']){for(var i=0;i<document.forms.length;i++){document.forms[i].addEventListener("submit",TinyMCE_handleEvent,false);document.forms[i].addEventListener("reset",TinyMCE_handleEvent,false);}}}switch(tinyMCE.settings['mode']){case "exact":var elements=tinyMCE.getParam('elements','',true,',');for(var i=0;i<elements.length;i++){var element=tinyMCE._getElementById(elements[i]);if(eleme!
 nt)tinyMCE.addMCEControl(element,elements[i],tinyMCE.createMCEControl(
tinyMCE.settings));else alert("Error: Could not find element by id or name: "+elements[i]);}break;case "specific_textareas":case "textareas":var nodeList=document.getElementsByTagName("textarea");var elementRefAr=new Array();for(var i=0;i<nodeList.length;i++){if(tinyMCE.settings['mode']!="specific_textareas"||nodeList.item(i).getAttribute(tinyMCE.settings['textarea_trigger'])=="true")elementRefAr[elementRefAr.length]=nodeList.item(i);}for(var i=0;i<elementRefAr.length;i++){var element=elementRefAr[i];var elementId=element.name?element.name:element.id;if(tinyMCE.settings['ask']){if(tinyMCE.isMSIE)element.attachEvent("onmousedown",TinyMCE_confirmAdd);else element.addEventListener("mousedown",TinyMCE_confirmAdd,false);}else tinyMCE.addMCEControl(element,elementId,tinyMCE.createMCEControl(tinyMCE.settings));}break;}}function TinyMCE_removeMCEControl(editor_id){var mceControl=tinyMCE._getInstanceById(editor_id);if(mceControl){editor_id=mceControl.editorId;var html=tinyMCE.getCont!
 ent(editor_id);var tmpInstances=new Array();for(var instanceName in tinyMCE.instances){var instance=tinyMCE.instances[instanceName];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=mceControl.oldTargetElement;var targetName=oldTargetElement.nodeName.toLowerCase();if(targetName=="textarea"||targetName=="input")oldTargetElement.value=html;else oldTargetElement.innerHTML=html;replaceElement.parentNode.insertBefore(oldTargetElement,replaceElement);replaceElement.parentNode.removeChild(replaceElement);}}function TinyMCE__cleanupElementName(element_name,element){element_name=element_name.toLowerCase();if(element_name=="body")return null;if(tinyMCE.cleanup_verify_html){for(var i=0;i<tinyMCE.cleanup_invalidElements.length;i++){if(tinyMCE.cleanup_invalidElements[i]==element_name)return null;}var !
 validElement=false;var elementAttribs=null;for(var i=0;i<tinyMCE.clean
up_validElements.length&&!elementAttribs;i++){for(var x=0;x<tinyMCE.cleanup_validElements[i][0].length;x++){var elmMatch=tinyMCE.cleanup_validElements[i][0][x];if(elmMatch.match(new RegExp('\\*|\\?|\\+','g'))!=null){elmMatch=elmMatch.replace(new RegExp('\\?','g'),'(\\S?)');elmMatch=elmMatch.replace(new RegExp('\\+','g'),'(\\S+)');elmMatch=elmMatch.replace(new RegExp('\\*','g'),'(\\S*)');elmMatch="^"+elmMatch+"$";if(element_name.match(new RegExp(elmMatch,'g'))){elementAttribs=tinyMCE.cleanup_validElements[i];validElement=true;break;}}if(element_name==elmMatch){elementAttribs=tinyMCE.cleanup_validElements[i];validElement=true;element_name=elementAttribs[0][0];break;}}}if(!validElement)return null;}if(!tinyMCE.isMSIE){if(element_name=="strong"&&!tinyMCE.cleanup_on_save)element_name="b";else if(element_name=="em"&&!tinyMCE.cleanup_on_save)element_name="i";}if(tinyMCE.isMSIE){if(element_name=="table"){var attribValue=element.style.pixelWidth==0?element.getAttribute("width"):eleme!
 nt.style.pixelWidth;element.setAttribute("width",attribValue);attribValue=element.style.pixelHeight==0?element.getAttribute("height"):element.style.pixelHeight;element.setAttribute("height",attribValue);}}var elmData=new Object();elmData.element_name=element_name;elmData.valid_attribs=elementAttribs;return elmData;}function TinyMCE__fixInlineStyles(elm){if(elm.nodeName.toLowerCase()!="table"){var value;value=tinyMCE.isMSIE?elm.width:elm.getAttribute("width");if(value&&value!=""){if(typeof(value)!="string"||!value.indexOf("%"))value+="px";elm.style.width=value;}value=tinyMCE.isMSIE?elm.height:elm.getAttribute("height");if(value&&value!=""){if(typeof(value)!="string"||!value.indexOf("%"))value+="px";elm.style.height=value;}value=tinyMCE.isMSIE?elm.border:elm.getAttribute("border");if(value&&value!="")elm.style.borderWidth=value+"px";}value=elm.getAttribute("align");if(value&&value!=""){if(elm.nodeName.toLowerCase()=="img"){if(tinyMCE.isMSIE)elm.style.styleFloat=value;else elm!
 .style.cssFloat=value;}else elm.style.textAlign=value;}value=elm.getAt
tribute("vspace");if(value&&value!="")elm.style.marginTop=value+"px";value=elm.getAttribute("hspace");if(value&&value!="")elm.style.marginBottom=value+"px";}function TinyMCE__cleanupAttribute(valid_attributes,element_name,attribute_node,element_node){var attribName=attribute_node.nodeName.toLowerCase();var attribValue=attribute_node.nodeValue;var attribMustBeValue=null;var verified=false;if(tinyMCE.cleanup_inline_styles&&element_name!="table"&&element_name!="td"){if(attribName=="width"||attribName=="height"||attribName=="border"||attribName=="align"||attribName=="valign"||attribName=="hspace"||attribName=="vspace")return null;}if(attribName.indexOf('moz_')!=-1)return null;if(!tinyMCE.isMSIE&&(attribName=="mce_real_href"||attribName=="mce_real_src")){if(!tinyMCE.cleanup_on_save){var attrib=new Object();attrib.name=attribName;attrib.value=attribValue;return attrib;}else return null;}if(attribName=="mce_onclick")verified=true;if(tinyMCE.cleanup_verify_html&&!verified){for(var i!
 =1;i<valid_attributes.length;i++){var attribMatch=valid_attributes[i][0];var re=null;if(attribMatch.match(new RegExp('\\*|\\?|\\+','g'))!=null){attribMatch=attribMatch.replace(new RegExp('\\?','g'),'(\\S?)');attribMatch=attribMatch.replace(new RegExp('\\+','g'),'(\\S+)');attribMatch=attribMatch.replace(new RegExp('\\*','g'),'(\\S*)');attribMatch="^"+attribMatch+"$";re=new RegExp(attribMatch,'g');}if((re&&attribName.match(re)!=null)||attribName==attribMatch){verified=true;attribMustBeValue=valid_attributes[i][3];break;}}if((element_name=="table"||element_name=="td")&&attribName=="style")verified=true;if(!verified)return false;}else verified=true;switch(attribName){case "width":if(tinyMCE.isMSIE)attribValue=element_node.width;break;case "height":if(tinyMCE.isMSIE)attribValue=element_node.height;break;case "border":if(tinyMCE.isMSIE)attribValue=element_node.border;break;case "class":if(!tinyMCE._verifyClass(element_node))return null;break;case "style":if(element_name=="table"|!
 |element_name=="td"){if(tinyMCE.cleanup_visual_table_style!=""){var ta
bleElement=element_node;if(element_name=="td")tableElement=tinyMCE.getParentElement(tableElement,"table");if(tableElement&&tableElement.getAttribute("border")==0){if(tinyMCE.cleanup_visual_aid)attribValue=tinyMCE.cleanup_visual_table_style;else return null;}}}else attribValue=element_node.style.cssText.toLowerCase();if(tinyMCE.isMSIE){var border=element_node.style.border;var bt=element_node.style.borderTop;var bl=element_node.style.borderLeft;var br=element_node.style.borderRight;var bb=element_node.style.borderBottom;if(border!=""&&(bt==border&&bl==border&&br==border&&bb==border)){attribValue=tinyMCE.regexpReplace(attribValue,'border-top: '+border+'?; ?','');attribValue=tinyMCE.regexpReplace(attribValue,'border-left: '+border+'?; ?','');attribValue=tinyMCE.regexpReplace(attribValue,'border-right: '+border+'?; ?','');attribValue=tinyMCE.regexpReplace(attribValue,'border-bottom: '+border+'?;( ?)','border: '+border+';$1');}}break;case "onclick":case "mce_onclick":if(tinyMCE.is!
 MSIE5)break;if(tinyMCE.cleanup_on_save){if(element_node.getAttribute("mce_onclick")){attribName="onclick";attribValue=""+element_node.getAttribute("mce_onclick");}}else{if(attribName=="onclick"&&!tinyMCE.cleanup_on_save)return null;}break;case "href":case "src":if(!tinyMCE.isMSIE&&attribName=="href"&&element_node.getAttribute("mce_real_href"))attribValue=element_node.getAttribute("mce_real_href");if(!tinyMCE.isMSIE&&attribName=="src"&&element_node.getAttribute("mce_real_src"))attribValue=element_node.getAttribute("mce_real_src");attribValue=eval(tinyMCE.cleanup_urlconvertor_callback+"(attribValue, element_node, tinyMCE.cleanup_on_save);");break;case "colspan":case "rowspan":if(attribValue=="1")return null;break;case "_moz-userdefined":case "editorid":case "editor_id":case "mce_real_href":case "mce_real_src":return null;}if(attribMustBeValue!=null){var isCorrect=false;for(var i=0;i<attribMustBeValue.length;i++){if(attribValue==attribMustBeValue[i]){isCorrect=true;break;}}if(!
 !isCorrect)return null;}var attrib=new Object();attrib.name=attribName
;attrib.value=attribValue;return attrib;}function TinyMCE__verifyClass(node){var className=node.getAttribute('class');if(tinyMCE.isMSIE)var className=node.getAttribute('className');if(tinyMCE.cleanup_verify_css_classes&&tinyMCE.cleanup_on_save){var csses=tinyMCE.getCSSClasses();nonDefinedCSS=true;for(var c=0;c<csses.length;c++){if(csses[c]==className){nonDefinedCSS=false;break;}}if(nonDefinedCSS&&className.indexOf('mce_')!=0){node.removeAttribute('className');node.removeAttribute('class');return false;}}return true;}function TinyMCE_cleanupNode(node){var output="";switch(node.nodeType){case 1:var elementData=tinyMCE._cleanupElementName(node.nodeName,node);var elementName=elementData?elementData.element_name:null;var elementValidAttribs=elementData?elementData.valid_attribs:null;var elementAttribs="";if(tinyMCE.isMSIE&&tinyMCE.settings['fix_content_duplication']){var lookup=tinyMCE.cleanup_elementLookupTable;for(var i=0;i<lookup.length;i++){if(lookup[i]==node)return output;}l!
 ookup[lookup.length]=node;}if(!elementName){if(node.hasChildNodes()){for(var i=0;i<node.childNodes.length;i++)output+=this.cleanupNode(node.childNodes[i]);}return output;}if(node.style&&(node.style.cssText.indexOf('mso-')!=-1&&tinyMCE.settings['auto_cleanup_word'])||node.style.cssText==""){node.style.cssText="";node.removeAttribute("style");}if(tinyMCE.cleanup_inline_styles)tinyMCE._fixInlineStyles(node);if(elementValidAttribs){for(var a=1;a<elementValidAttribs.length;a++){var attribName,attribDefaultValue,attribForceValue,attribValue;attribName=elementValidAttribs[a][0];attribDefaultValue=elementValidAttribs[a][1];attribForceValue=elementValidAttribs[a][2];if(attribDefaultValue||attribForceValue){var attribValue=node.getAttribute(attribName);if(node.getAttribute(attribName)==null||node.getAttribute(attribName)=="")attribValue=attribDefaultValue;attribValue=attribForceValue?attribForceValue:attribValue;if(attribValue=="{$uid}")attribValue="uid_"+(tinyMCE.cleanup_idCount++);!
 node.setAttribute(attribName,attribValue);}}}if(elementName=="span"&&t
inyMCE.cleanup_trim_span_elements){var re=new RegExp('^[ \t]+','g');var onlyWhiteSpace=true;for(var a=0;a<node.childNodes.length;a++){var tmpNode=node.childNodes[a];if((tmpNode.nodeType==3&&!tmpNode.nodeValue.match(re))||tmpNode.nodeName.toLowerCase()!="span"){onlyWhiteSpace=false;break;}}tinyMCE._verifyClass(node);var numAttribs=0;for(var i=0;i<node.attributes.length;i++){if(node.attributes[i].specified)numAttribs++;}if(onlyWhiteSpace||numAttribs==0){if(node.hasChildNodes()){for(var i=0;i<node.childNodes.length;i++)output+=this.cleanupNode(node.childNodes[i]);}return output;}}if(elementName=="table"||elementName=="td"){if(tinyMCE.cleanup_visual_table_style!=""){var tableElement=node;if(elementName=="td")tableElement=tinyMCE.getParentElement(tableElement,"table");if(tableElement&&tableElement.getAttribute("border")==0){if(tinyMCE.cleanup_visual_aid)elementAttribs+=" style="+'"'+tinyMCE.cleanup_visual_table_style+'"';}}}if(node.attributes.length>0){for(var i=0;i<node.attribut!
 es.length;i++){if(node.attributes[i].specified){var attrib=tinyMCE._cleanupAttribute(elementValidAttribs,elementName,node.attributes[i],node);if(attrib)elementAttribs+=" "+attrib.name+"="+'"'+attrib.value+'"';}}}if((elementName=="p"||elementName=="td")&&(node.innerHTML==""||node.innerHTML=="&nbsp;"))return "<"+elementName+elementAttribs+">&nbsp;</"+elementName+">";if(tinyMCE.isMSIE&&elementName=="script")return "<"+elementName+elementAttribs+">"+node.text+"</"+elementName+">";if(node.hasChildNodes()){if(elementName=="p"&&tinyMCE.cleanup_force_br_newlines)output+="<div"+elementAttribs+">";else output+="<"+elementName+elementAttribs+">";for(var i=0;i<node.childNodes.length;i++)output+=this.cleanupNode(node.childNodes[i]);if(elementName=="p"&&tinyMCE.cleanup_force_br_newlines)output+="</div><br />";else output+="</"+elementName+">";}else output+="<"+elementName+elementAttribs+" />";return output;case 3:if(node.parentNode.nodeName.toLowerCase()=="script")return node.nodeValue;r!
 eturn this.convertStringToXML(node.nodeValue);case 8:return "<!--"+nod
e.nodeValue+"-->";default:return "[UNKNOWN NODETYPE "+node.nodeType+"]";}}function TinyMCE_convertStringToXML(html_data){var output="";for(var i=0;i<html_data.length;i++){var chr=html_data.charCodeAt(i);if(typeof(tinyMCE.cleanup_entities["c"+chr])!='undefined'&&tinyMCE.cleanup_entities["c"+chr]!='')output+='&'+tinyMCE.cleanup_entities["c"+chr]+';';else output+=''+String.fromCharCode(chr);}return output;}function TinyMCE__initCleanup(){function getElementName(chunk){var pos;if((pos=chunk.indexOf('/'))!=-1)chunk=chunk.substring(0,pos);if((pos=chunk.indexOf('['))!=-1)chunk=chunk.substring(0,pos);return chunk;}var validElements=tinyMCE.settings["valid_elements"];validElements=validElements.split(',');var extendedValidElements=tinyMCE.settings["extended_valid_elements"];extendedValidElements=extendedValidElements.split(',');for(var i=0;i<extendedValidElements.length;i++){var elementName=getElementName(extendedValidElements[i]);var skipAdd=false;for(var x=0;x<validElements.length;!
 x++){if(getElementName(validElements[x])==elementName){validElements[x]=extendedValidElements[i];skipAdd=true;break;}}if(!skipAdd)validElements[validElements.length]=extendedValidElements[i];}for(var i=0;i<validElements.length;i++){var item=validElements[i];item=item.replace('[','|');item=item.replace(']','');var attribs=item.split('|');for(var x=0;x<attribs.length;x++)attribs[x]=attribs[x].toLowerCase();attribs[0]=attribs[0].split('/');for(var x=1;x<attribs.length;x++){var attribName=attribs[x];var attribDefault=null;var attribForce=null;var attribMustBe=null;if((pos=attribName.indexOf('='))!=-1){attribDefault=attribName.substring(pos+1);attribName=attribName.substring(0,pos);}if((pos=attribName.indexOf(':'))!=-1){attribForce=attribName.substring(pos+1);attribName=attribName.substring(0,pos);}if((pos=attribName.indexOf('<'))!=-1){attribMustBe=attribName.substring(pos+1).split('?');attribName=attribName.substring(0,pos);}attribs[x]=new Array(attribName,attribDefault,attribF!
 orce,attribMustBe);}validElements[i]=attribs;}var invalidElements=tiny
MCE.settings['invalid_elements'].split(',');for(var i=0;i<invalidElements.length;i++)invalidElements[i]=invalidElements[i].toLowerCase();tinyMCE.cleanup_validElements=validElements;tinyMCE.cleanup_invalidElements=invalidElements;tinyMCE.cleanup_verify_html=tinyMCE.settings['verify_html'];tinyMCE.cleanup_force_br_newlines=tinyMCE.settings['force_br_newlines'];tinyMCE.cleanup_urlconvertor_callback=tinyMCE.settings['urlconvertor_callback'];tinyMCE.cleanup_verify_css_classes=tinyMCE.settings['verify_css_classes'];tinyMCE.cleanup_visual_table_style=tinyMCE.settings['visual_table_style'];tinyMCE.cleanup_apply_source_formatting=tinyMCE.settings['apply_source_formatting'];tinyMCE.cleanup_urlconvertor_callback=tinyMCE.settings['urlconvertor_callback'];tinyMCE.cleanup_trim_span_elements=tinyMCE.settings['trim_span_elements'];tinyMCE.cleanup_inline_styles=tinyMCE.settings['inline_styles'];tinyMCE.cleanup_entities=new Array();var entities=tinyMCE.getParam('entities','',true,',');for(var!
  i=0;i<entities.length;i+=2)tinyMCE.cleanup_entities['c'+entities[i]]=entities[i+1];}function TinyMCE__cleanupHTML(doc,config,element,visual,on_save){tinyMCE.cleanup_visual_aid=visual;tinyMCE.cleanup_on_save=on_save;tinyMCE.cleanup_idCount=0;tinyMCE.cleanup_elementLookupTable=new Array();var startTime=new Date().getTime();tinyMCE._convertOnClick(element);if(tinyMCE.isMSIE)element.innerHTML=tinyMCE.regexpReplace(element.innerHTML,'<!([^-(DOCTYPE)]* )|<!/[^-]*>','','gi');var html=this.cleanupNode(element);if(tinyMCE.settings['debug'])alert("Cleanup process executed in: "+(new Date().getTime()-startTime)+" ms.");html=tinyMCE.regexpReplace(html,'<p><hr /></p>','<hr />');html=tinyMCE.regexpReplace(html,'<p>&nbsp;</p><hr /><p>&nbsp;</p>','<hr />');if(!tinyMCE.isMSIE){html=html.replace(new RegExp('<o:p _moz-userdefined="" />','g'),"");}if(tinyMCE.settings['apply_source_formatting']){html=html.replace(new RegExp('<(p|div)([^>]*)>','g'),"\n<$1$2>\n");html=html.replace(new RegExp('<\!
 /(p|div)([^>]*)>','g'),"\n</$1$2>\n");html=html.replace(new RegExp('<b
r />','g'),"<br />\n");}if(tinyMCE.settings['force_br_newlines']){var re=new RegExp('<p>&nbsp;</p>','g');html=html.replace(re,"<br />");}if(html=="<br />"||html=="<p>&nbsp;</p>")html="";html=tinyMCE._customCleanup(on_save?"get_from_editor":"insert_to_editor",html);if(tinyMCE.settings["preformatted"])return "<pre>"+html+"</pre>";return html;}function TinyMCE_insertLink(href,target,title,onclick){function setAttrib(element,name,value){if(value!=null&&value!="")element.setAttribute(name,value);else element.removeAttribute(name);}this.execCommand("mceAddUndoLevel");if(this.selectedInstance&&this.selectedElement&&this.selectedElement.nodeName.toLowerCase()=="img"){var doc=this.selectedInstance.contentWindow.document;var linkElement=doc.createElement("a");href=eval(tinyMCE.settings['urlconvertor_callback']+"(href, linkElement);");setAttrib(linkElement,'href',href);setAttrib(linkElement,'target',target);setAttrib(linkElement,'title',title);setAttrib(linkElement,'mce_onclick',onclic!
 k);linkElement.appendChild(this.selectedElement.cloneNode(true));this.selectedElement.parentNode.replaceChild(linkElement,this.selectedElement);return;}if(!this.linkElement&&this.selectedInstance){this.selectedInstance.contentDocument.execCommand("createlink",false,"#mce_temp_url#");tinyMCE.linkElement=this.getElementByAttributeValue(this.selectedInstance.contentDocument.body,"a","href","#mce_temp_url#");var elementArray=this.getElementsByAttributeValue(this.selectedInstance.contentDocument.body,"a","href","#mce_temp_url#");for(var i=0;i<elementArray.length;i++){href=eval(tinyMCE.settings['urlconvertor_callback']+"(href, elementArray[i]);");setAttrib(elementArray[i],'href',href);setAttrib(elementArray[i],'mce_real_href',href);setAttrib(elementArray[i],'target',target);setAttrib(elementArray[i],'title',title);setAttrib(elementArray[i],'mce_onclick',onclick);}tinyMCE.linkElement=elementArray[0];}if(this.linkElement){href=eval(tinyMCE.settings['urlconvertor_callback']+"(href, !
 this.linkElement);");setAttrib(this.linkElement,'href',href);setAttrib
(this.linkElement,'mce_real_href',href);setAttrib(this.linkElement,'target',target);setAttrib(this.linkElement,'title',title);setAttrib(this.linkElement,'mce_onclick',onclick);}}function TinyMCE_insertImage(src,alt,border,hspace,vspace,width,height,align,title,onmouseover,onmouseout){this.execCommand("mceAddUndoLevel");function setAttrib(element,name,value,no_fix_value){if(!no_fix_value&&value!=null){var re=new RegExp('[^0-9%]','g');value=value.replace(re,'');}if(value!=null&&value!="")element.setAttribute(name,value);else element.removeAttribute(name);}if(!this.imgElement&&this.selectedInstance){this.selectedInstance.contentDocument.execCommand("insertimage",false,"#mce_temp_url#");tinyMCE.imgElement=this.getElementByAttributeValue(this.selectedInstance.contentDocument.body,"img","src","#mce_temp_url#");}if(this.imgElement){src=eval(tinyMCE.settings['urlconvertor_callback']+"(src, tinyMCE.imgElement);");if(typeof(title)=="undefined")title=alt;tinyMCE.setAttrib(this.imgEleme!
 nt,'src',src,true);tinyMCE.setAttrib(this.imgElement,'mce_real_src',src,true);tinyMCE.setAttrib(this.imgElement,'alt',alt,true);tinyMCE.setAttrib(this.imgElement,'title',title,true);tinyMCE.setAttrib(this.imgElement,'align',align,true);tinyMCE.setAttrib(this.imgElement,'border',border);tinyMCE.setAttrib(this.imgElement,'hspace',hspace);tinyMCE.setAttrib(this.imgElement,'vspace',vspace);tinyMCE.setAttrib(this.imgElement,'width',width);tinyMCE.setAttrib(this.imgElement,'height',height);tinyMCE.setAttrib(this.imgElement,'border',border);tinyMCE.setAttrib(this.imgElement,'onmouseover',onmouseover,true);tinyMCE.setAttrib(this.imgElement,'onmouseout',onmouseout,true);if(width&&width!="")this.imgElement.style.pixelWidth=width;if(height&&height!="")this.imgElement.style.pixelHeight=height;}}function TinyMCE_getElementByAttributeValue(node,element_name,attrib,value){var elements=this.getElementsByAttributeValue(node,element_name,attrib,value);if(elements.length==0)return null;return!
  elements[0];}function TinyMCE_getElementsByAttributeValue(node,elemen
t_name,attrib,value){var elements=new Array();if(node&&node.nodeName.toLowerCase()==element_name){if(node.getAttribute(attrib).indexOf(value)!=-1)elements[elements.length]=node;}if(node.hasChildNodes){for(var x=0;x<node.childNodes.length;x++){var childElements=this.getElementsByAttributeValue(node.childNodes[x],element_name,attrib,value);for(var i=0;i<childElements.length;i++)elements[elements.length]=childElements[i];}}return elements;}function TinyMCE_getParentElement(node,names,attrib_name,attrib_value){var namesAr=names.split(',');if(node==null)return null;do{for(var i=0;i<namesAr.length;i++){if(node.nodeName.toLowerCase()==namesAr[i].toLowerCase()||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);return null;}function TinyMCE_convertURL(!
 url,node,on_save){var fileProto=(document.location.protocol=="file:");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.settings['relative_urls']){var urlParts=tinyMCE.parseURL(url);if(!urlParts['protocol']&&!tinyMCE.isMSIE){var urlPrefix="http://";urlPrefix+=document.location.hostname;if(document.location.port!="")urlPrefix+=document.location.port;url=urlPrefix+url;urlParts=tinyMCE.parseURL(url);}var tmpUrlParts=tinyMCE.parseURL(tinyMCE.settings['document_base_url']);if(urlParts['host']==tmpUrlParts['host']&&(!urlParts['port']||urlParts['port']==tmpUrlParts['port']))return tinyMCE.convertAbsoluteURLToRelativeURL(tinyMCE.settings['document_base_url'],url);}if(!fileProto&&tinyMCE.settings['remove_script_h!
 ost']){var start=document.location.protocol+"//"+document.location.hos
tname+"/";if(url.indexOf(start)==0)url=url.substring(start.length-1);if(!tinyMCE.settings['relative_urls']&&url.indexOf('://')==-1&&url.charAt(0)!='/')url='/'+url;}return url;}function TinyMCE_parseURL(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);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.length;urlParts['path']=url_str.substring(lastPos,pos);lastPos=pos;if(url_str.charAt(pos)=='?'){pos=url_str.length;urlParts['query']=url_str.substring(lastPos+1,pos);}}return urlParts;}
- function TinyMCE_convertAbsoluteURLToRelativeURL(base_url,url_to_relative){var strTok1;var strTok2;var breakPoint=0;var outputString="";base_url=base_url.substring(0,base_url.lastIndexOf('/'));strTok1=base_url.split('/');strTok2=url_to_relative.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 url_to_relative;for(var i=0;i<(strTok1.length-(breakPoint-1));i++)outputString+="../";for(var i=breakPoint-1;i<strTok2.length;i++){if(i!=(breakPoint-1))outputString+="/"+strTok2[i];else outputString+=strTok2[i];}return outputString;}function TinyMCE_getParam(name,default_value,strip_whitespace,split_chr){var value=(typeof(this.settings[name])=="undefined")?default_value:this.settings[name];if(strip_whitespace)value=tinyMCE.reg!
 expReplace(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;}function TinyMCE_getLang(name,default_value,parse_entities){var value=(typeof(tinyMCELang[name])=="undefined")?default_value:tinyMCELang[name];if(parse_entities){var el=document.createElement("div");el.innerHTML=value;value=el.innerHTML;}return value;}function TinyMCE_replaceVar(replace_haystack,replace_var,replace_str){var re=new RegExp('{\\\$'+replace_var+'}','g');return replace_haystack.replace(re,replace_str);}function TinyMCE_replaceVars(replace_haystack,replace_vars){for(var key in replace_vars){var value=replace_vars[key];replace_haystack=tinyMCE.replaceVar(replace_haystack,key,value);}return replace_haystack;}function TinyMCE_triggerNodeChange(focus){if(tinyMCE.settings['handleNodeChangeCallback']){if(tinyMC!
 E.selectedInstance){var editorId=tinyMCE.selectedInstance.editorId;var
 elm=tinyMCE.selectedInstance.getFocusElement();var undoIndex=-1;var undoLevels=-1;var anySelection=false;var selectedText="";if(tinyMCE.isMSIE){var documentRef=tinyMCE.selectedInstance.contentWindow.document;var rng=documentRef.selection.createRange();selectedText=rng.text;}else selectedText=tinyMCE.selectedInstance.contentWindow.getSelection().toString();if(tinyMCE.selectedElement)anySelection=(tinyMCE.selectedElement.nodeName.toLowerCase()=="img")||(selectedText&&selectedText.length>0);if(tinyMCE.settings['custom_undo_redo']){undoIndex=tinyMCE.selectedInstance.undoIndex;undoLevels=tinyMCE.selectedInstance.undoLevels.length;}var plugins=tinyMCE.getParam('plugins','',true,',');for(var i=0;i<plugins.length;i++){if(eval("typeof(TinyMCE_"+plugins[i]+"_handleNodeChange)")!="undefined")eval("TinyMCE_"+plugins[i]+"_handleNodeChange(editorId, elm, undoIndex, undoLevels, tinyMCE.selectedInstance.visualAid, anySelection);");}eval(tinyMCE.settings['handleNodeChangeCallback']+"(editor!
 Id, elm, undoIndex, undoLevels, tinyMCE.selectedInstance.visualAid, anySelection);");}}if(tinyMCE.selectedInstance&&(typeof(focus)=="undefined"||focus))this.selectedInstance.contentWindow.focus();}function TinyMCE__customCleanup(type,content){var customCleanup=tinyMCE.settings['cleanup_callback'];if(customCleanup!=""&&eval("typeof("+customCleanup+")")!="undefined")content=eval(customCleanup+"(type, content);");var plugins=tinyMCE.getParam('plugins','',true,',');for(var i=0;i<plugins.length;i++){if(eval("typeof(TinyMCE_"+plugins[i]+"_cleanup)")!="undefined")content=eval("TinyMCE_"+plugins[i]+"_cleanup(type, content);");}return content;}function TinyMCE_getContent(editor_id){if(typeof(editor_id)!="undefined")tinyMCE.selectedInstance=tinyMCE._getInstanceById(editor_id);if(tinyMCE.selectedInstance){var cleanedHTML=tinyMCE._cleanupHTML(this.selectedInstance.contentWindow.document,tinyMCE.settings,this.selectedInstance.contentWindow.document.body,false,true);return cleanedHTML;}r!
 eturn null;}function TinyMCE_setContent(html_content){if(tinyMCE.selec
tedInstance){var doc=this.selectedInstance.contentWindow.document;html_content=tinyMCE._customCleanup("insert_to_editor",html_content);tinyMCE._setHTML(doc,html_content);doc.body.innerHTML=tinyMCE._cleanupHTML(doc,tinyMCE.settings,doc.body);tinyMCE.handleVisualAid(doc.body,true,tinyMCE.selectedInstance.visualAid);}}function TinyMCE_importThemeLanguagePack(theme_name){if(typeof(theme_name)=="undefined")theme_name=tinyMCE.settings['theme'];document.write('<script language="javascript" type="text/javascript" src="'+tinyMCE.baseURL+'/themes/'+theme_name+'/langs/'+tinyMCE.settings['language']+'.js"></script>');}function TinyMCE_importPluginLanguagePack(theme_name,valid_languages){var lang="uk";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'];}document.write('<script language="javascript" type="text/javascript" src="'+tinyMCE.baseURL+'/plugins/'+theme_name+'/la!
 ngs/'+lang+'.js"></script>');}function TinyMCE_applyTemplate(html,args){html=tinyMCE.replaceVar(html,"themeurl",tinyMCE.themeURL);if(typeof(args)!="undefined")html=tinyMCE.replaceVars(html,args);html=tinyMCE.replaceVars(html,tinyMCE.settings);html=tinyMCE.replaceVars(html,tinyMCELang);return html;}function TinyMCE_openWindow(template,args,skip_lang){var html,width,height,x,y,resizable,scrollbars,url;tinyMCE.windowArgs=args;html=template['html'];if(!(width=template['width']))width=320;if(!(height=template['height']))height=200;if(tinyMCE.isMSIE)height+=30;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";url=tinyMCE.baseURL+"/themes/"+tinyMCE.getParam("theme")+"/"+template['file'];if(html){html=tinyMCE.replaceVar(html,"css",this.settings['popups_css']);html=tinyMCE.applyTemplate(html,args,skip_lang);var win=window.open("",!
 "mcePopup","top="+y+",left="+x+",scrollbars="+scrollbars+",modal=yes,w
idth="+width+",height="+height+",resizable="+resizable);win.document.write(html);win.document.close();win.resizeTo(width,height);win.focus();}else{if(tinyMCE.isMSIE&&resizable!='yes'){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 win=window.open(url,"mcePopup","top="+y+",left="+x+",scrollbars="+scrollbars+",modal=yes,width="+width+",height="+height+",resizable="+resizable);win.resizeTo(width,height);win.focus();}}}function TinyMCE_handleVisualAid(element,deep,state){var tableElement=null;switch(element.nodeName.toLowerCase()){case "table":var cssText=element.getAttribute("border")==0?tinyMCE.settings['visual_table_style']:"";element.style.cssText=state?cssText:"";for(var y=0;y<element.rows.length;y++){for(var x=0;x<element.rows[y].cells.length;x++)element.rows[y].cells[x].style.cssText=state?cssText:"";}break;}if(deep&&element.!
 hasChildNodes()){for(var i=0;i<element.childNodes.length;i++)tinyMCE.handleVisualAid(element.childNodes[i],deep,state);}}function TinyMCE_getAttrib(elm,name,default_value){var v=elm.getAttribute(name);return(v&&v!="")?v:default_value;}function TinyMCE_setAttrib(element,name,value,no_fix_value){if(typeof(value)=="number")value=""+value;if(!no_fix_value&&value!=null&&value!=-1){var re=new RegExp('[^0-9%]','g');value=value.replace(re,'');}if(value!=null&&value!=""&&value!=-1)element.setAttribute(name,value);else element.removeAttribute(name);}function TinyMCE__setHTML(doc,html_content){if(tinyMCE.isMSIE){var re=new RegExp('<p><hr /></p>','g');html_content=html_content.replace(re,"<hr>");}doc.body.innerHTML=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.toLowerCase()=="p")node.outerHTML=node.innerHTML;}}var !
 html=doc.body.createTextRange().htmlText;if(html.indexOf('="mso')!=-1)
{for(var i=0;i<doc.body.all.length;i++){var el=doc.body.all[i];el.removeAttribute("className","",0);el.removeAttribute("style","",0);}html=doc.body.createTextRange().htmlText;html=tinyMCE.regexpReplace(html,"<o:p><\/o:p>","<br />");html=tinyMCE.regexpReplace(html,"<o:p>&nbsp;<\/o:p>","");html=tinyMCE.regexpReplace(html,"<st1:.*?>","");html=tinyMCE.regexpReplace(html,"<p><\/p>","");html=tinyMCE.regexpReplace(html,"<p><\/p>\r\n<p><\/p>","");html=tinyMCE.regexpReplace(html,"<p>&nbsp;<\/p>","<br />");html=tinyMCE.regexpReplace(html,"<p>\s*(<p>\s*)?","<p>");html=tinyMCE.regexpReplace(html,"<\/p>\s*(<\/p>\s*)?","</p>");}doc.body.innerHTML=html;}}function TinyMCE__getElementById(element_id){var elm=document.getElementById(element_id);if(!elm){for(var j=0;j<document.forms.length;j++){for(var k=0;k<document.forms[j].elements.length;k++){if(document.forms[j].elements[k].name==element_id){elm=document.forms[j].elements[k];break;}}}}return elm;}function TinyMCE_getEditorId(form_element)!
 {var mceControl=this._getInstanceById(form_element);if(!mceControl)return null;return mceControl.editorId;}function TinyMCE__getInstanceById(editor_id){var mceControl=this.instances[editor_id];if(!mceControl){for(var instanceName in tinyMCE.instances){var instance=tinyMCE.instances[instanceName];if(instance.formTargetElementId==editor_id){mceControl=instance;break;}}}return mceControl;}function TinyMCE_queryInstanceCommandValue(editor_id,command){var mceControl=tinyMCE._getInstanceById(editor_id);if(mceControl)return mceControl.queryCommandValue(command);return false;}function TinyMCE_queryInstanceCommandState(editor_id,command){var mceControl=tinyMCE._getInstanceById(editor_id);if(mceControl)return mceControl.queryCommandState(command);return null;}function TinyMCE_getWindowArg(name,default_value){return(typeof(this.windowArgs[name])=="undefined")?default_value:this.windowArgs[name];}function TinyMCE_getCSSClasses(editor_id,doc){var output=new Array();if(typeof(tinyMCE.css!
 Classes)!="undefined")return tinyMCE.cssClasses;if(typeof(editor_id)==
"undefined"&&typeof(doc)=="undefined"){var instance;for(var instanceName in tinyMCE.instances){instance=tinyMCE.instances[instanceName];break;}doc=instance.contentWindow.document;}if(typeof(doc)=="undefined"){var instance=tinyMCE._getInstanceById(editor_id);doc=instance.contentWindow.document;}if(doc){var styles=tinyMCE.isMSIE?doc.styleSheets:doc.styleSheets;if(styles&&styles.length>0){var csses=null;eval("try {var csses = tinyMCE.isMSIE ? doc.styleSheets(0).rules : doc.styleSheets[0].cssRules;} catch(e) {}");if(!csses)return null;for(var i=0;i<csses.length;i++){var selectorText=csses[i].selectorText;var rules=selectorText.split(',');for(var c=0;c<rules.length;c++){if(rules[c].indexOf(' ')!=-1||rules[c].indexOf(':')!=-1||rules[c].indexOf('mce_')==1)continue;if(rules[c].indexOf('.')!=-1){output[output.length]=rules[c].substring(rules[c].indexOf('.')+1);}}}}}if(output.length>0)tinyMCE.cssClasses=output;return output;}function TinyMCE_regexpReplace(in_str,reg_exp,replace_str,op!
 ts){if(typeof(opts)=="undefined")opts='g';var re=new RegExp(reg_exp,opts);return in_str.replace(re,replace_str);}function TinyMCE_cleanupEventStr(str){str=str.replace('function anonymous()\n{\n','');str=str.replace('\n}','');return str;}function TinyMCEControl(settings){this.undoLevels=new Array();this.undoIndex=0;this.settings=settings;this.settings['theme']=tinyMCE.getParam("theme","default");this.settings['width']=tinyMCE.getParam("width",-1);this.settings['height']=tinyMCE.getParam("height",-1);this.execCommand=TinyMCEControl_execCommand;this.queryCommandValue=TinyMCEControl_queryCommandValue;this.queryCommandState=TinyMCEControl_queryCommandState;this.onAdd=TinyMCEControl_onAdd;this.getFocusElement=TinyMCEControl_getFocusElement;this.autoResetDesignMode=TinyMCEControl_autoResetDesignMode;}function TinyMCEControl_autoResetDesignMode(){if(!tinyMCE.isMSIE&&tinyMCE.settings['auto_reset_designmode']){var sel=this.contentWindow.getSelection();if(sel.rangeCount==0)this.conten!
 tWindow.document.designMode="On";}}function TinyMCEControl_execCommand
(command,user_interface,value){function getAttrib(elm,name){return elm.getAttribute(name)?elm.getAttribute(name):"";}if(!tinyMCE.isMSIE&&!this.useCSS){this.contentWindow.document.execCommand("useCSS",false,true);this.useCSS=true;}this.contentDocument=this.contentWindow.document;if(tinyMCE._themeExecCommand(this.editorId,this.contentDocument.body,command,user_interface,value))return;if(command!="mceAddUndoLevel"&&command!="Undo"&&command!="Redo"&&command!="mceImage"&&command!="mceLink"&&command!="mceToggleVisualAid"&&(command!="mceInsertTable"&&!user_interface))this.execCommand("mceAddUndoLevel");if(this.getFocusElement()&&this.getFocusElement().nodeName.toLowerCase()=="img"){var align=this.getFocusElement().getAttribute('align');switch(command){case "JustifyLeft":if(align=='left')this.getFocusElement().removeAttribute('align');else this.getFocusElement().setAttribute('align','left');tinyMCE.triggerNodeChange();return;case "JustifyCenter":if(align=='middle')this.getFocusEleme!
 nt().removeAttribute('align');else this.getFocusElement().setAttribute('align','middle');tinyMCE.triggerNodeChange();return;case "JustifyRight":if(align=='right')this.getFocusElement().removeAttribute('align');else this.getFocusElement().setAttribute('align','right');tinyMCE.triggerNodeChange();return;}}if(tinyMCE.settings['force_br_newlines']){var documentRef=this.contentWindow.document;var alignValue="";if(documentRef.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=documentRef.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 "Cut":case "Copy":case "Paste":var cmdFailed=false;eval('try {th
is.contentDocument.execCommand(command, user_interface, value);} catch (e) {cmdFailed = true;}');if(tinyMCE.isGecko&&cmdFailed){if(confirm(tinyMCE.getLang('lang_clipboard_msg')))window.open('http://www.mozilla.org/editor/midasdemo/securityprefs.html','mceExternal');return;}else tinyMCE.triggerNodeChange();break;case "mceLink":var selectedText="";if(tinyMCE.isMSIE){var documentRef=this.contentWindow.document;var rng=documentRef.selection.createRange();selectedText=rng.text;}else selectedText=this.contentWindow.getSelection().toString();if(!tinyMCE.linkElement){if((tinyMCE.selectedElement.nodeName.toLowerCase()!="img")&&(selectedText.length<=0))return;}var href="",target="",title="",onclick="",action="insert";if(tinyMCE.selectedElement.nodeName.toLowerCase()=="a")tinyMCE.linkElement=tinyMCE.selectedElement;if(tinyMCE.linkElement!=null&&getAttrib(tinyMCE.linkElement,'href')=="")tinyMCE.linkElement=null;if(tinyMCE.linkElement){href=getAttrib(tinyMCE.linkElement,'href');target=ge!
 tAttrib(tinyMCE.linkElement,'target');title=getAttrib(tinyMCE.linkElement,'title');onclick=getAttrib(tinyMCE.linkElement,'mce_onclick');if(onclick=="")onclick=getAttrib(tinyMCE.linkElement,'onclick');onclick=tinyMCE.cleanupEventStr(onclick);mceRealHref=getAttrib(tinyMCE.linkElement,'mce_real_href');if(mceRealHref!="")href=mceRealHref;href=eval(tinyMCE.settings['urlconvertor_callback']+"(href, tinyMCE.linkElement, true);");action="update";}if(this.settings['insertlink_callback']){var returnVal=eval(this.settings['insertlink_callback']+"(href, target, title, onclick, action);");if(returnVal&&returnVal['href'])tinyMCE.insertLink(returnVal['href'],returnVal['target'],returnVal['title'],returnVal['onclick']);}else{tinyMCE.openWindow(this.insertLinkTemplate,{href:href,target:target,title:title,onclick:onclick,action:action});}break;case "mceImage":var src="",alt="",border="",hspace="",vspace="",width="",height="",align="";var title="",onmouseover="",onmouseout="",action="insert";!
 ;if(tinyMCE.selectedElement!=null&&tinyMCE.selectedElement.nodeName.to
LowerCase()=="img")tinyMCE.imgElement=tinyMCE.selectedElement;if(tinyMCE.imgElement){name=getAttrib(tinyMCE.imgElement,'name');if(name.substring(0,4)=='mce_')return;src=getAttrib(tinyMCE.imgElement,'src');alt=getAttrib(tinyMCE.imgElement,'alt');if(alt=="")alt=getAttrib(tinyMCE.imgElement,'title');border=getAttrib(tinyMCE.imgElement,'border');hspace=getAttrib(tinyMCE.imgElement,'hspace');vspace=getAttrib(tinyMCE.imgElement,'vspace');width=getAttrib(tinyMCE.imgElement,'width');height=getAttrib(tinyMCE.imgElement,'height');align=getAttrib(tinyMCE.imgElement,'align');onmouseover=getAttrib(tinyMCE.imgElement,'onmouseover');onmouseout=getAttrib(tinyMCE.imgElement,'onmouseout');title=getAttrib(tinyMCE.imgElement,'title');onmouseover=tinyMCE.cleanupEventStr(onmouseover);onmouseout=tinyMCE.cleanupEventStr(onmouseout);mceRealSrc=getAttrib(tinyMCE.imgElement,'mce_real_src');if(mceRealSrc!="")src=mceRealSrc;src=eval(tinyMCE.settings['urlconvertor_callback']+"(src, tinyMCE.imgElement, tr!
 ue);");action="update";}if(this.settings['insertimage_callback']){var returnVal=eval(this.settings['insertimage_callback']+"(src, alt, border, hspace, vspace, width, height, align, title, onmouseover, onmouseout, action);");if(returnVal&&returnVal['src'])tinyMCE.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(this.insertImageTemplate,{src:src,alt:alt,border:border,hspace:hspace,vspace:vspace,width:width,height:height,align:align,title:title,onmouseover:onmouseover,onmouseout:onmouseout,action:action});break;case "mceCleanupWord":if(tinyMCE.isMSIE){var html=this.contentDocument.body.createTextRange().htmlText;if(html.indexOf('="mso')!=-1){tinyMCE._setHTML(this.contentDocument,this.contentDocument.body.innerHTML);html=tinyMCE._cleanupHTML(this.contentDocument,this.setti!
 ngs,this.contentDocument.body,this.visualAid);}this.contentDocument.bo
dy.innerHTML=html;}break;case "mceCleanup":tinyMCE._setHTML(this.contentDocument,this.contentDocument.body.innerHTML);var cleanedHTML=tinyMCE._cleanupHTML(this.contentDocument,this.settings,this.contentDocument.body,this.visualAid);this.contentDocument.body.innerHTML=cleanedHTML;break;case "mceAnchor":if(!user_interface){var aElm=tinyMCE.getParentElement(this.getFocusElement(),"a","name");if(aElm)aElm.setAttribute('name',value);else{this.contentDocument.execCommand("fontname",false,"#mce_temp_font#");var elementArray=tinyMCE.getElementsByAttributeValue(this.contentDocument.body,"font","face","#mce_temp_font#");for(var x=0;x<elementArray.length;x++){elm=elementArray[x];var aElm=this.contentDocument.createElement("a");aElm.setAttribute('name',value);if(elm.hasChildNodes()){for(var i=0;i<elm.childNodes.length;i++)aElm.appendChild(elm.childNodes[i].cloneNode(true));}elm.parentNode.replaceChild(aElm,elm);}}tinyMCE.triggerNodeChange();}break;case "mceReplaceContent":var selectedTe!
 xt="";if(tinyMCE.isMSIE){var documentRef=this.contentWindow.document;var rng=documentRef.selection.createRange();selectedText=rng.text;}else selectedText=this.contentWindow.getSelection().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":var selectedText=false;if(tinyMCE.isMSIE){var documentRef=this.contentWindow.document;var rng=documentRef.selection.createRange();selectedText=(rng.text&&rng.text.length>0);}else selectedText=(this.contentWindow.getSelection().toString().length!
 >0);if(selectedText){this.contentDocument.execCommand("removeformat",f
alse,null);this.contentDocument.execCommand("fontname",false,"#mce_temp_font#");var elementArray=tinyMCE.getElementsByAttributeValue(this.contentDocument.body,"font","face","#mce_temp_font#");for(var x=0;x<elementArray.length;x++){elm=elementArray[x];if(elm){var spanElm=this.contentDocument.createElement("span");spanElm.className=value;if(elm.hasChildNodes()){for(var i=0;i<elm.childNodes.length;i++)spanElm.appendChild(elm.childNodes[i].cloneNode(true));}elm.parentNode.replaceChild(spanElm,elm);}}}else{var targetElm=this.getFocusElement();if(tinyMCE.selectedElement.nodeName.toLowerCase()=="img"||tinyMCE.selectedElement.nodeName.toLowerCase()=="table")targetElm=tinyMCE.selectedElement;var targetNode=tinyMCE.getParentElement(targetElm,"p,img,span,div,td,h1,h2,h3,h4,h5,h6,pre,address");if(!tinyMCE.isMSIE&&!targetNode)targetNode=tinyMCE.imgElement;if(targetNode){if(targetNode.nodeName.toLowerCase()=="span"&&(!value||value=="")){if(targetNode.hasChildNodes()){for(var i=0;i<targetN!
 ode.childNodes.length;i++)targetNode.parentNode.insertBefore(targetNode.childNodes[i].cloneNode(true),targetNode);}targetNode.parentNode.removeChild(targetNode);}else{if(value!=null&&value!="")targetNode.className=value;else{targetNode.removeAttribute("className");targetNode.removeAttribute("class");}}}}tinyMCE.triggerNodeChange();break;case "mceInsertContent":if(!tinyMCE.isMSIE){this.contentDocument.execCommand("insertimage",false,"#mce_temp_url#");elm=tinyMCE.getElementByAttributeValue(this.contentDocument.body,"img","src","#mce_temp_url#");if(elm){var rng=elm.ownerDocument.createRange();rng.setStartBefore(elm);var fragment=rng.createContextualFragment(value);elm.parentNode.replaceChild(fragment,elm);}}else{var rng=this.contentWindow.document.selection.createRange();if(rng.item)rng.item(0).outerHTML=value;else rng.pasteHTML(value);}tinyMCE.triggerNodeChange();break;case "mceInsertTable":if(user_interface){var cols=2,rows=2,border=0,cellpadding="",cellspacing="",align="",w!
 idth="",height="",action="insert",className="";tinyMCE.tableElement=ti
nyMCE.getParentElement(this.getFocusElement(),"table");if(tinyMCE.tableElement){var rowsAr=tinyMCE.tableElement.rows;var cols=0;for(var i=0;i<rowsAr.length;i++)if(rowsAr[i].cells.length>cols)cols=rowsAr[i].cells.length;cols=cols;rows=rowsAr.length;border=tinyMCE.getAttrib(tinyMCE.tableElement,'border',border);cellpadding=tinyMCE.getAttrib(tinyMCE.tableElement,'cellpadding',"");cellspacing=tinyMCE.getAttrib(tinyMCE.tableElement,'cellspacing',"");width=tinyMCE.getAttrib(tinyMCE.tableElement,'width',width);height=tinyMCE.getAttrib(tinyMCE.tableElement,'height',height);align=tinyMCE.getAttrib(tinyMCE.tableElement,'align',align);className=tinyMCE.getAttrib(tinyMCE.tableElement,tinyMCE.isMSIE?'className':"class","");if(tinyMCE.isMSIE){width=tinyMCE.tableElement.style.pixelWidth==0?tinyMCE.tableElement.getAttribute("width"):tinyMCE.tableElement.style.pixelWidth;height=tinyMCE.tableElement.style.pixelHeight==0?tinyMCE.tableElement.getAttribute("height"):tinyMCE.tableElement.style.pi!
 xelHeight;}action="update";}tinyMCE.openWindow(this.insertTableTemplate,{editor_id:this.editorId,cols:cols,rows:rows,border:border,cellpadding:cellpadding,cellspacing:cellspacing,align:align,width:width,height:height,action:action,className:className});}else{var html='';var cols=2,rows=2,border=0,cellpadding=-1,cellspacing=-1,align,width,height,className;if(typeof(value)=='object'){cols=value['cols'];rows=value['rows'];border=value['border']!=""?value['border']:0;cellpadding=value['cellpadding']!=""?value['cellpadding']:-1;cellspacing=value['cellspacing']!=""?value['cellspacing']:-1;align=value['align'];width=value['width'];height=value['height'];className=value['className'];}if(tinyMCE.tableElement){tinyMCE.setAttrib(tinyMCE.tableElement,'cellPadding',cellpadding);tinyMCE.setAttrib(tinyMCE.tableElement,'cellSpacing',cellspacing);tinyMCE.setAttrib(tinyMCE.tableElement,'border',border);tinyMCE.setAttrib(tinyMCE.tableElement,'width',width);tinyMCE.setAttrib(tinyMCE.tableEleme!
 nt,'height',height);tinyMCE.setAttrib(tinyMCE.tableElement,'align',ali
gn,true);tinyMCE.setAttrib(tinyMCE.tableElement,tinyMCE.isMSIE?'className':"class",className,true);if(tinyMCE.isMSIE){tinyMCE.tableElement.style.pixelWidth=(width==null||width=="")?0:width;tinyMCE.tableElement.style.pixelHeight=(height==null||height=="")?0:height;}tinyMCE.handleVisualAid(tinyMCE.tableElement,false,this.visualAid);tinyMCE.tableElement.outerHTML=tinyMCE.tableElement.outerHTML;tinyMCE.triggerNodeChange();return;}html+='<table border="'+border+'" ';var visualAidStyle=this.visualAid?tinyMCE.settings['visual_table_style']:"";if(cellpadding!=-1)html+='cellpadding="'+cellpadding+'" ';if(cellspacing!=-1)html+='cellspacing="'+cellspacing+'" ';if(width!=0&&width!="")html+='width="'+width+'" ';if(height!=0&&height!="")html+='height="'+height+'" ';if(align)html+='align="'+align+'" ';if(className)html+='class="'+className+'" ';if(border==0&&tinyMCE.settings['visual'])html+='style="'+visualAidStyle+'" ';html+='>';for(var y=0;y<rows;y++){html+="<tr>";for(var x=0;x<cols;x++)!
 {if(border==0&&tinyMCE.settings['visual'])html+='<td style="'+visualAidStyle+'">';else html+='<td>';html+="&nbsp;</td>";}html+="</tr>";}html+="</table>";this.execCommand('mceInsertContent',false,html);}break;case "mceTableInsertRowBefore":case "mceTableInsertRowAfter":case "mceTableDeleteRow":case "mceTableInsertColBefore":case "mceTableInsertColAfter":case "mceTableDeleteCol":var trElement=tinyMCE.getParentElement(this.getFocusElement(),"tr");var tdElement=tinyMCE.getParentElement(this.getFocusElement(),"td");var tableElement=tinyMCE.getParentElement(this.getFocusElement(),"table");if(!tableElement)return;var documentRef=this.contentWindow.document;var tableBorder=tableElement.getAttribute("border");var visualAidStyle=this.visualAid?tinyMCE.settings['visual_table_style']:"";if(tableElement.firstChild&&tableElement.firstChild.nodeName.toLowerCase()=="tbody")tableElement=tableElement.firstChild;if(tableElement&&trElement){switch(command){case "mceTableInsertRowBefore":var nu!
 mcells=trElement.cells.length;var rowCount=0;var tmpTR=trElement;while
(tmpTR){if(tmpTR.nodeName.toLowerCase()=="tr")rowCount++;tmpTR=tmpTR.previousSibling;}var r=tableElement.insertRow(rowCount==0?1:rowCount-1);for(var i=0;i<numcells;i++){var newTD=documentRef.createElement("td");newTD.innerHTML="&nbsp;";if(tableBorder==0)newTD.style.cssText=visualAidStyle;var c=r.appendChild(newTD);if(tdElement.parentNode.childNodes[i].colSpan)c.colSpan=tdElement.parentNode.childNodes[i].colSpan;}break;case "mceTableInsertRowAfter":var numcells=trElement.cells.length;var rowCount=0;var tmpTR=trElement;var documentRef=this.contentWindow.document;while(tmpTR){if(tmpTR.nodeName.toLowerCase()=="tr")rowCount++;tmpTR=tmpTR.previousSibling;}var r=tableElement.insertRow(rowCount==0?1:rowCount);for(var i=0;i<numcells;i++){var newTD=documentRef.createElement("td");newTD.innerHTML="&nbsp;";if(tableBorder==0)newTD.style.cssText=visualAidStyle;var c=r.appendChild(newTD);if(tdElement.parentNode.childNodes[i].colSpan)c.colSpan=tdElement.parentNode.childNodes[i].colSpan;}bre!
 ak;case "mceTableDeleteRow":if(tableElement.rows.length<=1){tableElement.parentNode.removeChild(tableElement);tinyMCE.triggerNodeChange();return;}var selElm=this.contentWindow.document.body;if(trElement.previousSibling)selElm=trElement.previousSibling.cells[0];trElement.parentNode.removeChild(trElement);tinyMCE._selectNode(this.contentWindow,selElm);break;case "mceTableInsertColBefore":var cellCount=tdElement.cellIndex;for(var y=0;y<tableElement.rows.length;y++){var cell=tableElement.rows[y].cells[cellCount];if(!cell)break;var newTD=documentRef.createElement("td");newTD.innerHTML="&nbsp;";if(tableBorder==0)newTD.style.cssText=visualAidStyle;cell.parentNode.insertBefore(newTD,cell);}break;case "mceTableInsertColAfter":var cellCount=tdElement.cellIndex;for(var y=0;y<tableElement.rows.length;y++){var append=false;var cell=tableElement.rows[y].cells[cellCount];if(cellCount==tableElement.rows[y].cells.length-1)append=true;else cell=tableElement.rows[y].cells[cellCount+1];var new!
 TD=documentRef.createElement("td");newTD.innerHTML="&nbsp;";if(tableBo
rder==0)newTD.style.cssText=visualAidStyle;if(append)cell.parentNode.appendChild(newTD);else cell.parentNode.insertBefore(newTD,cell);}break;case "mceTableDeleteCol":var index=tdElement.cellIndex;var selElm=this.contentWindow.document.body;var numCols=0;for(var y=0;y<tableElement.rows.length;y++){if(tableElement.rows[y].cells.length>numCols)numCols=tableElement.rows[y].cells.length;}if(numCols<=1){tinyMCE._selectNode(this.contentWindow,selElm);tableElement.parentNode.removeChild(tableElement);tinyMCE.triggerNodeChange();return;}for(var y=0;y<tableElement.rows.length;y++){var cell=tableElement.rows[y].cells[index];if(cell)cell.parentNode.removeChild(cell);}if(index>0)selElm=tableElement.rows[0].cells[index-1];tinyMCE._selectNode(this.contentWindow,selElm);break;}tinyMCE.triggerNodeChange();}break;case "mceAddUndoLevel":if(tinyMCE.settings['custom_undo_redo']){var customUndoLevels=tinyMCE.settings['custom_undo_redo_levels'];var newHTML=this.contentWindow.document.body.innerHTM!
 L;if(newHTML!=this.undoLevels[this.undoLevels.length-1]){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--;}this.undoLevels[this.undoIndex++]=newHTML;this.undoLevels.length=this.undoIndex;}tinyMCE.triggerNodeChange(false);}break;case "Undo":if(tinyMCE.settings['custom_undo_redo']){if(this.undoIndex==this.undoLevels.length){this.execCommand("mceAddUndoLevel");this.undoIndex--;}if(this.undoIndex>0){this.undoIndex--;this.contentWindow.document.body.innerHTML=this.undoLevels[this.undoIndex];}tinyMCE.triggerNodeChange();}else this.contentDocument.execCommand(command,user_interface,value);break;case "Redo":if(tinyMCE.settings['custom_undo_redo']){if(this.undoIndex<(this.undoLevels.length-1)){this.undoIndex++;this.contentWindow.document.body.innerHTML=this.undoLevels[this.undoIndex];}tinyMCE.triggerNodeChange();}else this.contentDocument.ex!
 ecCommand(command,user_interface,value);break;case "mceToggleVisualAid
":this.visualAid=!this.visualAid;tinyMCE.handleVisualAid(this.contentWindow.document.body,true,this.visualAid);tinyMCE.triggerNodeChange();break;default:this.contentDocument.execCommand(command,user_interface,value);tinyMCE.triggerNodeChange();}}function TinyMCE__selectNode(win,node,expand){if(!tinyMCE.isMSIE){var rng=win.document.createRange();rng.selectNode(node);sel=win.getSelection();sel.addRange(rng);if(expand)sel.extend(node,0);else sel.collapse(node,0);}}function TinyMCE_getControlHTML(control_name){var themePlugins=tinyMCE.getParam('plugins','',true,',');var templateFunction;for(var i=themePlugins.length;i>=0;i--){templateFunction='TinyMCE_'+themePlugins[i]+"_getControlHTML";if(eval("typeof("+templateFunction+")")!='undefined'){var html=eval(templateFunction+"('"+control_name+"');");if(html!="")return tinyMCE.replaceVar(html,"pluginurl",tinyMCE.baseURL+"/plugins/"+themePlugins[i]);}}return eval('TinyMCE_'+tinyMCE.settings['theme']+"_getControlHTML"+"('"+control_name+!
 "');");}function TinyMCE__themeExecCommand(editor_id,element,command,user_interface,value){var themePlugins=tinyMCE.getParam('plugins','',true,',');var templateFunction;for(var i=themePlugins.length;i>=0;i--){templateFunction='TinyMCE_'+themePlugins[i]+"_execCommand";if(eval("typeof("+templateFunction+")")!='undefined'){if(eval(templateFunction+"(editor_id, element, command, user_interface, value);"))return true;}}templateFunction='TinyMCE_'+tinyMCE.settings['theme']+"_execCommand";if(eval("typeof("+templateFunction+")")!='undefined')return eval(templateFunction+"(editor_id, element, command, user_interface, value);");return false;}function TinyMCE__getThemeFunction(suffix,skip_plugins){if(skip_plugins)return 'TinyMCE_'+tinyMCE.settings['theme']+suffix;var themePlugins=tinyMCE.getParam('plugins','',true,',');var templateFunction;for(var i=themePlugins.length;i>=0;i--){templateFunction='TinyMCE_'+themePlugins[i]+suffix;if(eval("typeof("+templateFunction+")")!='undefined')ret!
 urn templateFunction;}return 'TinyMCE_'+tinyMCE.settings['theme']+suff
ix;}function TinyMCEControl_queryCommandValue(command){return this.contentWindow.document.queryCommandValue(command);}function TinyMCEControl_queryCommandState(command){return this.contentWindow.document.queryCommandState(command);}function TinyMCEControl_onAdd(replace_element,form_element_name){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;}var templateFunction=tinyMCE._getThemeFunction('_getInsertTableTemplate');if(eval("typeof("+templateFunction+")")!='undefined')this.insertTableTemplate=eval(templateFunction+'(this.settings);');var templateFunction=tinyMCE._getThemeFunction('_getInsertLinkTemplate');if(eval("typeof("+templateFunction+")")!='undefined')this.insertLinkTemplate=eval(templateFunction+'(this.settings);');var templateFunction=tinyMCE._getThemeFunction('_getInsertImageTemplate');if(eval("typeof("+templateFunction+"!
 )")!='undefined')this.insertImageTemplate=eval(templateFunction+'(this.settings);');var templateFunction=tinyMCE._getThemeFunction('_getEditorTemplate');if(eval("typeof("+templateFunction+")")=='undefined'){alert("Error: Could not find the template function: "+templateFunction);return false;}var editorTemplate=eval(templateFunction+'(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">'+editorTemplate['html'];var templateFunction=tinyMCE._getThemeFunction('_handleNodeChange',true);if(eval("typeof("+templateFunction+")")!='undefined')this.settings['handleNodeChangeCallback']=templateFunction;html=tinyMCE.replaceVar(html,"editor_id",this.editorId);html=tinyMCE.replaceVar(html,"default_document",tinyMCE.baseURL+"/blank.htm");this.settings['default_document']=tinyMCE.baseURL+"/blank.htm";this.sett!
 ings['old_width']=this.settings['width'];this.settings['old_height']=t
his.settings['height'];if(this.settings['width']==-1)this.settings['width']=replace_element.offsetWidth;if(this.settings['height']==-1)this.settings['height']=replace_element.offsetHeight;this.settings['area_width']=this.settings['width'];this.settings['area_height']=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.settin!
 gs['visual'];this.oldTargetElement=replace_element.cloneNode(true);this.formTargetElementId=form_element_name;if(tinyMCE.settings['debug'])html+='<textarea wrap="off" id="'+form_element_name+'" name="'+form_element_name+'" cols="100" rows="15"></textarea>';else html+='<input type="hidden" type="text" id="'+form_element_name+'" name="'+form_element_name+'" />';html+='</span>';if(!tinyMCE.isMSIE){var rng=replace_element.ownerDocument.createRange();rng.setStartBefore(replace_element);var fragment=rng.createContextualFragment(html);replace_element.parentNode.replaceChild(fragment,replace_element);}else replace_element.outerHTML=html;tinyMCE.setEditMode(this.editorId,true);return true;}function TinyMCEControl_getFocusElement(){if(tinyMCE.isMSIE){var documentRef=this.contentWindow.document;var rng=documentRef.selection.createRange();var elm=rng.item?rng.item(0):rng.parentElement();}else{var sel=this.contentWindow.getSelection();var elm=sel.anchorNode;if(tinyMCE.selectedElement!=n!
 ull&&tinyMCE.selectedElement.nodeName.toLowerCase()=="img")elm=tinyMCE
.selectedElement;}return elm;}var tinyMCE=new TinyMCE();var tinyMCELang=new Array();
\ No newline at end of file
+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;s!
 rc=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|cha!
 rset|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|sc!
 ope],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_sub!
 mit_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,1!
 77,plusmn,178,sup2,179,sup3,180,acute,181,micro,182,para,183,middot,18
4,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,ci
rc,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 T!
 ransitional//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('o!
 pera')==-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=n!
 ew 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.d
ocumentBasePath+"/"+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.s!
 ettings['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);tinyM!
 CE.addEvent(window.document,"beforeunload",TinyMCE_Engine.prototype.un
loadHandler)}}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.getElementsByTagNa!
 me("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++;va!
 r inst=new TinyMCE_Control(tinyMCE.settings);inst.editorId=id;this.ins
tances[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(tiny!
 MCE.isIE&&window.event!=null)tinyMCE.cancelEvent(window.event)}},execC
ommand: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.s
etAttribute("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.g!
 etElementsByTagName('head').item(0);var content=inst.startContent;if(tinyMCE.settings.strict_loading_mode){content=content.replace(/&lt;/g,'<');content=content.replace(/&gt;/g,'>');content=content.replace(/&quot;/g,'"');content=content.replace(/&amp;/g,'&')}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('&lt;&gt;','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, ins
t.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;r!
 eturn;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("mce!
 AddUndoLevel");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.sel!
 ectedInstance;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="&nbsp;&nbsp;";
else elm.innerHTML="&nbsp;"}}}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.sele!
 ctedInstance&&e.target.editorId)tinyMCE.instances[e.target.editorId].s
elect();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" targ!
 et="_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 mceMe!
 nuButtonNormal" target="_self">';h+='<img src="{$themeurl}/images/spac
er.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},_m!
 enuButtonEvent: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("ed!
 itor_deselector");var elementRefAr=new Array();if(document.forms&&tiny
MCE.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,s
ettings)},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.s!
 electedInstance;var editorId=inst.editorId;var elm=(typeof(setup_conte
nt)!="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!=""&&ev!
 al("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,"mcePop
up"+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+=classNam!
 es[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.child!
 Nodes.length;i++)tinyMCE.handleVisualAid(el.childNodes[i],deep,state,i
nst,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_co!
 ntent);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){v!
 ar inst=tinyMCE.getInstanceById(editor_id);if(inst)return inst.queryCo
mmandValue(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:funct!
 ion(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'&amp;';case'"':return'&quot;';case'\'':return'&#39;';case'<':return'&lt;';case'>':return'&gt;'}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.isTi!
 nyMCE_Control=true;this.settings=s;this.settings['theme']=tinyMCE.getP
aram("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:func!
 tion(){if(tinyMCE.configs.length>1&&tinyMCE.currentConfig!=this.settin
gs['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.documentEl!
 ement;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},autoResetD
esignMode: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.se!
 tAttrib(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=focusE
lm.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(focusEl!
 m,'A');if(focusElm)this.selection.selectNode(focusElm,false)}this.getD
oc().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]/g!
 i,'');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.select!
 Node(parentNode,false);tinyMCE.triggerNodeChange();tinyMCE.selectedNod
e=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(s!
 cmd=="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(v
ar 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.removeAllRange!
 s();s.addRange(r)}}else this.getDoc().execCommand('FontName',false,val
ue);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.isOper!
 a&&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"mceClea!
 nup":var b=this.selection.getBookmark();tinyMCE._setHTML(this.contentD
ocument,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.indexO!
 f('<')==-1&&!value.match(/(&#38;|&#160;|&#60;|&#62;)/g)){var r=this.ge
tRng();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().ex
ecCommand(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 d!
 eltaWidth=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_w
idth']+=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_elemen!
 t_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.oldTarg!
 etElement.style.display="none";if(tinyMCE.isGecko){var rng=replace_ele
ment.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.c!
 ontentWindow=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.rem!
 oveChild(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(t!
 ypeof(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,"&#40;","(","gi");htm=tinyMCE.regexpReplace(htm,"&#41;",")","gi");htm=tinyMCE.regexpReplace(htm,"&#59;",";","gi");htm=tinyMCE.regexpReplace(htm,"&#34;","&quot;","gi");htm=tinyMCE.regexpReplace(htm,"&#94;","^"!
 ,"gi");if(this.formElement)this.formElement.value=htm;if(tinyMCE.isSaf
ari&&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>&nbsp;</p>');s=s.replace(new RegExp('<p>\\s*<\\/p>','gi'),'<p>&nbsp;</p>');s=s.replace(new RegExp('<br>\\s*<\\/br>','gi'),'<br />');s=s.replace(new RegExp('<(h[1-6]|p|div|address|pre|form|table|li|ol|ul|td|b|font|em|strong|i|strike|u|span|a|ul|ol|li|blockquote)([a-z]*)([^\\\\|>]*)\\/>','gi'),'<$1$2$3></$1$2>');s=s.replace(new RegExp('\\s+></','gi'),'></');s=s.replace(new RegExp('<(img|br|hr)([^>]*)><\\/(img|br|hr)>','gi'),'<$1$2 />');if(tinyMCE.isIE)s=s.replace(new RegExp('<p><hr \\/><\\/p>','gi'),"<hr>");if(tinyMCE.isIE)s=s.replace(/<!(\s*)\/>/g,'');return s};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 k!
 ey in ar){var val=ar[key];if(typeof(val)=='function')continue;if(key.i
ndexOf('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(fColo!
 r!=null&&fColor!=""){tinyMCE.setAttrib(s[i],'color',tinyMCE.convertRGB
ToHex(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='&nbsp;';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.getParentElem
ent(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.serializeNodeA!
 sXML(elm,inn);else h=c.serializeNodeAsHTML(elm,inn);if(d)t3=new Date().getTime();nb=tinyMCE.getParam('entity_encoding')=='numeric'?'&#160;':'&nbsp;';h=h.replace(/<\/?(body|head|html)[^>]*>/gi,'');h=h.replace(new RegExp(' (rowspan="1"|colspan="1")','g'),'');h=h.replace(/<p><hr \/><\/p>/g,'<hr />');h=h.replace(/<p>(&nbsp;|&#160;)<\/p><hr \/><p>(&nbsp;|&#160;)<\/p>/g,'<hr />');h=h.replace(/<td>\s*<br \/>\s*<\/td>/g,'<td>'+nb+'</td>');h=h.replace(/<p>\s*<br \/>\s*<\/p>/g,'<p>'+nb+'</p>');h=h.replace(/<br \/>$/,'');h=h.replace(/<br \/><\/p>/g,'</p>');h=h.replace(/<p>\s*(&nbsp;|&#160;)\s*<br \/>\s*(&nbsp;|&#160;)\s*<\/p>/g,'<p>'+nb+'</p>');h=h.replace(/<p>\s*(&nbsp;|&#160;)\s*<br \/>\s*<\/p>/g,'<p>'+nb+'</p>');h=h.replace(/<p>\s*<br \/>\s*&nbsp;\s*<\/p>/g,'<p>'+nb+'</p>');h=h.replace(new RegExp('<a>(.*?)<\\/a>','g'),'$1');h=h.replace(/<p([^>]*)>\s*<\/p>/g,'<p$1>'+nb+'</p>');if(/^\s*(<br \/>|<p>&nbsp;<\/p>|<p>&#160;<\/p>|<p><\/p>)\s*$/.test(h))h='';if(s.preformatted){h=h.replace(/!
 ^<pre>/,'');h=h.replace(/<\/pre>$/,'');h='<pre>'+h+'</pre>'}if(tinyMCE
.isGecko){h=h.replace(/<o:p _moz-userdefined="" \/>/g,'');h=h.replace(/<td([^>]*)>\s*<br \/>\s*<\/td>/g,'<td$1>'+nb+'</td>')}if(s.force_br_newlines)h=h.replace(/<p>(&nbsp;|&#160;)<\/p>/g,'<br />');h=tinyMCE._customCleanup(inst,on_save?"get_from_editor":"insert_to_editor",h);if(on_save){h=h.replace(new RegExp(' ?(mceItem[a-zA-Z0-9]*|'+s.visual_table_class+')','g'),'');h=h.replace(new RegExp(' ?class=""','g'),'')}if(s.remove_linebreaks&&!c.settings.indent)h=h.replace(/\n|\r/g,' ');if(d)t4=new Date().getTime();if(on_save&&c.settings.indent)h=c.formatHTML(h);if(on_submit&&(s.encoding=="xml"||s.encoding=="html"))h=c.xmlEncode(h);if(d)t5=new Date().getTime();if(c.settings.debug)tinyMCE.debug("Cleanup in ms: Pre="+(t2-t1)+", Serialize: "+(t3-t2)+", Post: "+(t4-t3)+", Format: "+(t5-t4)+", Sum: "+(t5-t1)+".");return h};function TinyMCE_Cleanup(){this.isIE=(navigator.appName=="Microsoft Internet Explorer");this.rules=tinyMCE.clearArray(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._arrayToR!
 e(s.indent_elements.split(','),'','^<\\/(',')[^>]*');this.nlBeforeRe=t
his._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"?"&nbsp;":"&#160;";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=ti!
 nyMCE.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(!thi
s.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,a!
 n);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.l
ength>=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.is!
 IE&&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(type!
 of(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.parentNo
de.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">&nbsp;</p>');h=h.replace(/<p([^>]*)>\s*&nbsp;\s*<\/p>/gi,'<p$1 mce_keep="true">&nbsp;</p>');h=h.replace(/<p([^>]*)>\s+<\/p>/gi,'<p$1 mce_keep="true">&nbsp;</p>');e.innerHTML=tinyMCE.uniqueTag+h;e.firstChild.removeNode(true);nl=e.getElementsByTagName("p");for(i=nl.length-1;i>=0;i--){n=nl[i];if(n.nodeName=='P'&&!n.hasChildNodes()&&!n.mce_keep)n.parentNode.removeChild(n)}}else{h=this.fixGeckoBaseHREFBug(1,e,h);e.innerHTML=h;this.fixGeckoBaseHREFBug(2,e,h)}};TinyMCE_Engine.prototype.getOuterHTML=function(e){if(tinyMCE.isIE)return e.outerHTML;var d=e.ownerDocument.createElement("body");d.appendChild(e.cloneNode(true));retu!
 rn 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 tin!
 yMCE.getAttrib(no,f)!=''});return this.getParentNode(n,function(n){ret
urn((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_Eng!
 ine.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=fu
nction(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=p
os;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)targ!
 etURL.path=fileName!=""?fileName:"/";return this.serializeURL(targetUR
L)};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.sli!
 ce(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.pa!
 rseURL(curl);var tmpUrlParts=tinyMCE.parseURL(tinyMCE.settings['docume
nt_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.convertRe!
 lativeToAbsoluteURL(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.getElementsB!
 yTagName(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.isFo
cused){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=functi!
 on(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 s!
 el=this.getSel();if(!bookmark)return false;if(tinyMCE.isSafari){sel.se
tBaseAndExtent(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,s!
 d.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=tr!
 ue;if(inst.settings.auto_resize)inst.resizeToContent();if(tinyMCE.isRe
alIE){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.inst!
 ance,doc,rng,sel,elm;if(tinyMCE.isRealIE){doc=inst.getDoc();rng=doc.se
lection.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]&&newHT!
 ML!=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.moveToBook
mark(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.getEle!
 mentsByTagName("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').te
st(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.previ!
 ousSibling?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 par!
 aAfter.appendChild(contents);if(isEmpty(paraBefore))paraBefore.innerHT
ML="&nbsp;";if(isEmpty(paraAfter))paraAfter.innerHTML="&nbsp;";rng.deleteContents();rngAfter.deleteContents();rngBefore.deleteContents();if(tinyMCE.isOpera){paraBefore.normalize();rngBefore.insertNode(paraBefore);paraAfter.normalize();rngBefore.insertNode(paraAfter)}else{paraAfter.normalize();rngBefore.insertNode(paraAfter);paraBefore.normalize();rngBefore.insertNode(paraBefore)}}else{body.innerHTML="<"+blockName+">&nbsp;</"+blockName+"><"+blockName+">&nbsp;</"+blockName+">";paraAfter=body.childNodes[1]}inst.selection.moveToBookmark(b);inst.selection.selectNode(paraAfter,true,true);return true}if(startChop.nodeName==blockName)rngBefore.setStart(startChop,0);else rngBefore.setStartBefore(startChop);rngBefore.setEnd(startNode,startOffset);paraBefore.appendChild(rngBefore.cloneContents());rngAfter.setEndAfter(endChop);rngAfter.setStart(endNode,endOffset);contents=rngAfter.cloneContents();if(contents.firstChild&&contents.firstChild.nodeName==blockName){paraAfter.innerHTML=conten!
 ts.firstChild.innerHTML}else paraAfter.appendChild(contents);if(isEmpty(paraBefore))paraBefore.innerHTML="&nbsp;";if(isEmpty(paraAfter))paraAfter.innerHTML="&nbsp;";rng=doc.createRange();if(!startChop.previousSibling&&startChop.parentNode.nodeName.toUpperCase()==blockName){rng.setStartBefore(startChop.parentNode)}else{if(rngBefore.startContainer.nodeName.toUpperCase()==blockName&&rngBefore.startOffset==0)rng.setStartBefore(rngBefore.startContainer);else rng.setStart(rngBefore.startContainer,rngBefore.startOffset)}if(!endChop.nextSibling&&endChop.parentNode.nodeName.toUpperCase()==blockName)rng.setEndAfter(endChop.parentNode);else rng.setEnd(rngAfter.endContainer,rngAfter.endOffset);rng.deleteContents();if(tinyMCE.isOpera){rng.insertNode(paraBefore);rng.insertNode(paraAfter)}else{rng.insertNode(paraAfter);rng.insertNode(paraBefore)}paraAfter.normalize();paraBefore.normalize();inst.selection.moveToBookmark(b);inst.selection.selectNode(paraAfter,true,true);return true},_handle!
 BackSpace: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.g!
 etElement();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.sty
le.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_Me!
 nu(){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"></spa!
 n>';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=a!
 rguments,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};
\ No newline at end of file

Modified: labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/tiny_mce_popup.js
===================================================================
--- labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/tiny_mce_popup.js	2007-01-11 22:09:16 UTC (rev 8831)
+++ labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/tiny_mce_popup.js	2007-01-11 22:10:56 UTC (rev 8832)
@@ -1,35 +1,288 @@
-// Get tinyMCE reference
-var win = window.opener ? window.opener : window.dialogArguments;
+// Some global instances, this will be filled later
+var tinyMCE = null, tinyMCELang = null;
 
-// Setup window openerer
-if (!window.opener)
-	window.opener = win;
+function TinyMCE_Popup() {
+};
 
-var tinyMCE = win.tinyMCE;
-var tinyMCELang = win.tinyMCELang;
+TinyMCE_Popup.prototype = {
+	findWin : function(w) {
+		var c;
 
-// 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;
-}
+		// Check parents
+		c = w;
+		while (c && (c = c.parent) != null) {
+			if (typeof(c.tinyMCE) != "undefined")
+				return c;
+		}
 
-// Setup dir
-if (tinyMCELang['lang_dir'])
-	document.dir = tinyMCELang['lang_dir'];
+		// Check openers
+		c = w;
+		while (c && (c = c.opener) != null) {
+			if (typeof(c.tinyMCE) != "undefined")
+				return c;
+		}
 
-function TinyMCEPlugin_onLoad() {
-	document.body.innerHTML = tinyMCE.applyTemplate(document.body.innerHTML, tinyMCE.windowArgs);
-}
+		// Try top
+		if (typeof(top.tinyMCE) != "undefined")
+			return top;
 
-// Add onload trigger
-if (tinyMCE.isMSIE)
-	attachEvent("onload", TinyMCEPlugin_onLoad);
-else
-	addEventListener("load", TinyMCEPlugin_onLoad, false);
+		return null;
+	},
 
-// Output Popup CSS class
-document.write('<link href="' + tinyMCE.getParam("popups_css") + '" rel="stylesheet" type="text/css">');
+	init : function() {
+		var win = window.opener ? window.opener : window.dialogArguments, c;
+		var inst;
+
+		if (!win)
+			win = this.findWin(window);
+
+		if (!win) {
+			alert("tinyMCE object reference not found from popup.");
+			return;
+		}
+
+		window.opener = win;
+		this.windowOpener = win;
+		this.onLoadEval = "";
+
+		// Setup parent references
+		tinyMCE = win.tinyMCE;
+		tinyMCELang = win.tinyMCELang;
+
+		inst = tinyMCE.selectedInstance;
+		this.isWindow = tinyMCE.getWindowArg('mce_inside_iframe', false) == false;
+		this.storeSelection = (tinyMCE.isRealIE) && !this.isWindow && tinyMCE.getWindowArg('mce_store_selection', true);
+
+		if (this.isWindow)
+			window.focus();
+
+		// Store selection
+		if (this.storeSelection)
+			inst.selectionBookmark = inst.selection.getBookmark(true);
+
+		// Setup dir
+		if (tinyMCELang['lang_dir'])
+			document.dir = tinyMCELang['lang_dir'];
+
+		// Setup title
+		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';
+
+		// Execute real onload (Opera fix)
+		if (tinyMCEPopup.onLoadEval != "")
+			eval(tinyMCEPopup.onLoadEval);
+	},
+
+	executeOnLoad : function(str) {
+		if (tinyMCE.isOpera)
+			this.onLoadEval = str;
+		else
+			eval(str);
+	},
+
+	resizeToInnerSize : function() {
+		// Netscape 7.1 workaround
+		if (this.isWindow && tinyMCE.isNS71) {
+			window.resizeBy(0, 10);
+			return;
+		}
+
+		if (this.isWindow) {
+			var doc = document;
+			var body = doc.body;
+			var oldMargin, wrapper, iframe, nodes, dx, dy;
+
+			if (body.style.display == 'none')
+				body.style.display = 'block';
+
+			// Remove margin
+			oldMargin = body.style.margin;
+			body.style.margin = '0';
+
+			// Create wrapper
+			wrapper = doc.createElement("div");
+			wrapper.id = 'mcBodyWrapper';
+			wrapper.style.display = 'none';
+			wrapper.style.margin = '0';
+
+			// Wrap body elements
+			nodes = doc.body.childNodes;
+			for (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]);
+			}
+
+			// Add wrapper
+			doc.body.appendChild(wrapper);
+
+			// Create iframe
+			iframe = document.createElement("iframe");
+			iframe.id = "mcWinIframe";
+			iframe.src = document.location.href.toLowerCase().indexOf('https') == -1 ? "about:blank" : tinyMCE.settings['default_document'];
+			iframe.width = "100%";
+			iframe.height = "100%";
+			iframe.style.margin = '0';
+
+			// Add iframe
+			doc.body.appendChild(iframe);
+
+			// Measure iframe
+			iframe = document.getElementById('mcWinIframe');
+			dx = tinyMCE.getWindowArg('mce_width') - iframe.clientWidth;
+			dy = tinyMCE.getWindowArg('mce_height') - iframe.clientHeight;
+
+			// Resize window
+			// tinyMCE.debug(tinyMCE.getWindowArg('mce_width') + "," + tinyMCE.getWindowArg('mce_height') + " - " + dx + "," + dy);
+			window.resizeBy(dx, dy);
+
+			// Hide iframe and show wrapper
+			body.style.margin = oldMargin;
+			iframe.style.display = 'none';
+			wrapper.style.display = 'block';
+		}
+	},
+
+	resizeToContent : function() {
+		var isMSIE = (navigator.appName == "Microsoft Internet Explorer");
+		var isOpera = (navigator.userAgent.indexOf("Opera") != -1);
+
+		if (isOpera)
+			return;
+
+		if (isMSIE) {
+			try { window.resizeTo(10, 10); } catch (e) {}
+
+			var elm = document.body;
+			var width = elm.offsetWidth;
+			var height = elm.offsetHeight;
+			var dx = (elm.scrollWidth - width) + 4;
+			var dy = elm.scrollHeight - height;
+
+			try { window.resizeBy(dx, dy); } catch (e) {}
+		} else {
+			window.scrollBy(1000, 1000);
+			if (window.scrollX > 0 || window.scrollY > 0) {
+				window.resizeBy(window.innerWidth * 2, window.innerHeight * 2);
+				window.sizeToContent();
+				window.scrollTo(0, 0);
+				var x = parseInt(screen.width / 2.0) - (window.outerWidth / 2.0);
+				var y = parseInt(screen.height / 2.0) - (window.outerHeight / 2.0);
+				window.moveTo(x, y);
+			}
+		}
+	},
+
+	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;
+
+		this.restoreSelection();
+		inst.execCommand(command, user_interface, value);
+
+		// Store selection
+		if (this.storeSelection)
+			inst.selectionBookmark = inst.selection.getBookmark(true);
+	},
+
+	close : function() {
+		tinyMCE.closeWindow(window);
+	},
+
+	pickColor : function(e, element_id) {
+		tinyMCE.selectedInstance.execCommand('mceColorPicker', true, {
+			element_id : element_id,
+			document : document,
+			window : window,
+			store_selection : false
+		});
+	},
+
+	openBrowser : function(element_id, type, option) {
+		var cb = tinyMCE.getParam(option, tinyMCE.getParam("file_browser_callback"));
+		var url = document.getElementById(element_id).value;
+
+		tinyMCE.setWindowArg("window", window);
+		tinyMCE.setWindowArg("document", document);
+
+		// Call to external callback
+		if (eval('typeof(tinyMCEPopup.windowOpener.' + cb + ')') == "undefined")
+			alert("Callback function: " + cb + " could not be found.");
+		else
+			eval("tinyMCEPopup.windowOpener." + cb + "(element_id, url, type, window);");
+	},
+
+	importClass : function(c) {
+		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();
+
+tinyMCEPopup.init();

Modified: labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/tiny_mce_src.js
===================================================================
--- labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/tiny_mce_src.js	2007-01-11 22:09:16 UTC (rev 8831)
+++ labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/tiny_mce_src.js	2007-01-11 22:10:56 UTC (rev 8832)
@@ -1,2051 +1,5419 @@
-/**
- * $RCSfile$
- * $Revision: 2 $
- * $Date: 2005-01-14 18:01:32 -0500 (Fri, 14 Jan 2005) $
- *
- * @author Moxiecode
- * @copyright Copyright © 2004, Moxiecode Systems AB, All rights reserved.
- */
 
-function TinyMCE() {
+/* file:jscripts/tiny_mce/classes/TinyMCE_Engine.class.js */
+
+function TinyMCE_Engine() {
+	var ua;
+
+	this.majorVersion = "2";
+	this.minorVersion = "0.8";
+	this.releaseDate = "2006-10-23";
+
 	this.instances = new Array();
-	this.stickyClassesLookup = 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;
 
 	// Browser check
+	ua = navigator.userAgent;
 	this.isMSIE = (navigator.appName == "Microsoft Internet Explorer");
-	this.isMSIE5 = this.isMSIE && (navigator.userAgent.indexOf('MSIE 5') != -1);
-	this.isGecko = navigator.userAgent.indexOf('Gecko') != -1;
+	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;
 
+	// Fake MSIE on Opera and if Opera fakes IE, Gecko or Safari cancel those
+	if (this.isOpera) {
+		this.isMSIE = true;
+		this.isGecko = false;
+		this.isSafari =  false;
+	}
+
+	this.isIE = this.isMSIE;
+	this.isRealIE = this.isMSIE && !this.isOpera;
+
 	// TinyMCE editor id instance counter
 	this.idCounter = 0;
+};
 
-	// Editor functions
-	this.init = TinyMCE_init;
-	this.addMCEControl = TinyMCE_addMCEControl;
-	this.createMCEControl = TinyMCE_createMCEControl;
-	this.triggerSave = TinyMCE_triggerSave;
-	this._convertOnClick = TinyMCE__convertOnClick;
-	this.resetForm = TinyMCE_resetForm;
-	this.execCommand = TinyMCE_execCommand;
-	this.execInstanceCommand = TinyMCE_execInstanceCommand;
-	this._createIFrame = TinyMCE__createIFrame;
-	this.setEditMode = TinyMCE_setEditMode;
-	this.handleEvent = TinyMCE_handleEvent;
-	this.setupContent = TinyMCE_setupContent;
-	this.switchClass = TinyMCE_switchClass;
-	this.restoreAndSwitchClass = TinyMCE_restoreAndSwitchClass;
-	this.switchClassSticky = TinyMCE_switchClassSticky;
-	this.restoreClass = TinyMCE_restoreClass;
-	this.setClassLock = TinyMCE_setClassLock;
-	this.onLoad = TinyMCE_onLoad;
-	this.removeMCEControl = TinyMCE_removeMCEControl;
-	this._initCleanup = TinyMCE__initCleanup;
-	this._cleanupHTML = TinyMCE__cleanupHTML;
-	this._cleanupAttribute = TinyMCE__cleanupAttribute;
-	this._fixInlineStyles = TinyMCE__fixInlineStyles;
-	this._cleanupElementName = TinyMCE__cleanupElementName;
-	this._verifyClass = TinyMCE__verifyClass;
-	this.cleanupNode = TinyMCE_cleanupNode;
-	this.convertStringToXML = TinyMCE_convertStringToXML;
-	this.insertLink = TinyMCE_insertLink;
-	this.insertImage = TinyMCE_insertImage;
-	this.getElementByAttributeValue = TinyMCE_getElementByAttributeValue;
-	this.getElementsByAttributeValue = TinyMCE_getElementsByAttributeValue;
-	this.getParentElement = TinyMCE_getParentElement;
-	this.getParam = TinyMCE_getParam;
-	this.getLang = TinyMCE_getLang;
-	this.replaceVar = TinyMCE_replaceVar;
-	this.replaceVars = TinyMCE_replaceVars;
-	this.triggerNodeChange = TinyMCE_triggerNodeChange;
-	this.parseURL = TinyMCE_parseURL;
-	this.convertAbsoluteURLToRelativeURL = TinyMCE_convertAbsoluteURLToRelativeURL;
-	this.updateContent = TinyMCE_updateContent;
-	this._customCleanup = TinyMCE__customCleanup;
-	this.getContent = TinyMCE_getContent;
-	this.setContent = TinyMCE_setContent;
-	this.importThemeLanguagePack = TinyMCE_importThemeLanguagePack;
-	this.importPluginLanguagePack = TinyMCE_importPluginLanguagePack;
-	this.applyTemplate = TinyMCE_applyTemplate;
-	this.openWindow = TinyMCE_openWindow;
-	this.handleVisualAid = TinyMCE_handleVisualAid;
-	this.setAttrib = TinyMCE_setAttrib;
-	this.getAttrib = TinyMCE_getAttrib;
-	this._selectNode = TinyMCE__selectNode;
-	this._getThemeFunction = TinyMCE__getThemeFunction;
-	this._themeExecCommand = TinyMCE__themeExecCommand;
-	this.getControlHTML = TinyMCE_getControlHTML;
-	this._setHTML = TinyMCE__setHTML;
-	this._getElementById = TinyMCE__getElementById;
-	this._getInstanceById = TinyMCE__getInstanceById;
-	this.getEditorId = TinyMCE_getEditorId;
-	this.queryInstanceCommandValue = TinyMCE_queryInstanceCommandValue;
-	this.queryInstanceCommandState = TinyMCE_queryInstanceCommandState;
-	this.getWindowArg = TinyMCE_getWindowArg;
-	this.getCSSClasses = TinyMCE_getCSSClasses;
-	this.regexpReplace = TinyMCE_regexpReplace;
-	this.cleanupEventStr = TinyMCE_cleanupEventStr;
-}
+TinyMCE_Engine.prototype = {
+	init : function(settings) {
+		var theme, nl, baseHREF = "", i;
 
-function TinyMCE_init(settings) {
-	var theme;
+		// 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;
 
-	// Check if valid browser has execcommand support
-	if (typeof(document.execCommand) == 'undefined')
-		return;
+		this.settings = settings;
 
-	// Get script base path
-	if (!tinyMCE.baseURL) {
-		var elements = document.getElementsByTagName('script');
+		// Check if valid browser has execcommand support
+		if (typeof(document.execCommand) == 'undefined')
+			return;
 
-		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_src.js") != -1)) {
-				var src = elements[i].src;
+		// Get script base path
+		if (!tinyMCE.baseURL) {
+			var elements = document.getElementsByTagName('script');
 
-				src = src.substring(0, src.lastIndexOf('/'));
+			// 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;
+			}
 
-				tinyMCE.baseURL = src;
-				break;
+			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' : '';
+
+					// Force it absolute if page has a base href
+					if (baseHREF != "" && src.indexOf('://') == -1)
+						tinyMCE.baseURL = baseHREF + src;
+					else
+						tinyMCE.baseURL = src;
+
+					break;
+				}
 			}
 		}
-	}
 
-	// Get document base path
-	this.documentBasePath = document.location.href;
-	if (this.documentBasePath.indexOf('?') != -1)
-		this.documentBasePath = this.documentBasePath.substring(0, this.documentBasePath.indexOf('?'));
-	this.documentBasePath = this.documentBasePath.substring(0, this.documentBasePath.lastIndexOf('/'));
+		// Get document base path
+		this.documentBasePath = document.location.href;
+		if (this.documentBasePath.indexOf('?') != -1)
+			this.documentBasePath = this.documentBasePath.substring(0, this.documentBasePath.indexOf('?'));
+		this.documentURL = this.documentBasePath;
+		this.documentBasePath = this.documentBasePath.substring(0, this.documentBasePath.lastIndexOf('/'));
 
-	// If not HTTP absolute
-	if (tinyMCE.baseURL.indexOf('://') == -1 && tinyMCE.baseURL.charAt(0) != '/') {
-		// If site absolute
-		tinyMCE.baseURL = this.documentBasePath + "/" + tinyMCE.baseURL;
-	}
+		// If not HTTP absolute
+		if (tinyMCE.baseURL.indexOf('://') == -1 && tinyMCE.baseURL.charAt(0) != '/') {
+			// If site absolute
+			tinyMCE.baseURL = this.documentBasePath + "/" + tinyMCE.baseURL;
+		}
 
-	this.settings = settings;
-	this.settings['mode'] = tinyMCE.getParam("mode", "none");
-	this.settings['theme'] = tinyMCE.getParam("theme", "default");
-	this.settings['plugins'] = tinyMCE.getParam("plugins", "", true);
-	this.settings['language'] = tinyMCE.getParam("language", "uk");
-	this.settings['docs_language'] = tinyMCE.getParam("docs_language", this.settings['language']);
-	this.settings['elements'] = tinyMCE.getParam("elements", "");
-	this.settings['textarea_trigger'] = tinyMCE.getParam("textarea_trigger", "mce_editable");
-	this.settings['valid_elements'] = tinyMCE.getParam("valid_elements", "a[name|href|target|title],strong/b[class],em/i[class],strike[class],u[class],p[class|align],ol,ul,li,br,img[class|src|border=0|alt|title|hspace|vspace|width|height|align],sub,sup,blockquote[dir|style],table[border=0|cellspacing|cellpadding|width|height|class|align],tr[class|rowspan],td[class|colspan|rowspan|width|height],div[class|align],span[class|align],pre[class|align],address[class|align],h1[class|align],h2[class|align],h3[class|align],h4[class|align],h5[class|align],h6[class|align],hr");
-	this.settings['extended_valid_elements'] =  tinyMCE.getParam("extended_valid_elements", "");
-	this.settings['invalid_elements'] = tinyMCE.getParam("invalid_elements", "");
-	this.settings['encoding'] = tinyMCE.getParam("encoding", "");
-	this.settings['urlconvertor_callback'] = tinyMCE.getParam("urlconvertor_callback", "TinyMCE_convertURL");
-	this.settings['save_callback'] = tinyMCE.getParam("save_callback", "");
-	this.settings['debug'] = tinyMCE.getParam("debug", false);
-	this.settings['force_br_newlines'] = tinyMCE.getParam("force_br_newlines", false);
-	this.settings['add_form_submit_trigger'] = tinyMCE.getParam("add_form_submit_trigger", true);
-	this.settings['relative_urls'] = tinyMCE.getParam("relative_urls", true);
-	this.settings['remove_script_host'] = tinyMCE.getParam("remove_script_host", true);
-	this.settings['focus_alert'] = tinyMCE.getParam("focus_alert", true);
-	this.settings['document_base_url'] = tinyMCE.getParam("document_base_url", "" + document.location.href);
-	this.settings['visual'] = tinyMCE.getParam("visual", true);
-	this.settings['visual_table_style'] = tinyMCE.getParam("visual_table_style", "border: 1px dashed #BBBBBB");
-	this.settings['setupcontent_callback'] = tinyMCE.getParam("setupcontent_callback", "");
-	this.settings['fix_content_duplication'] = tinyMCE.getParam("fix_content_duplication", true);
-	this.settings['custom_undo_redo'] = tinyMCE.getParam("custom_undo_redo", true);
-	this.settings['custom_undo_redo_levels'] = tinyMCE.getParam("custom_undo_redo_levels", -1);
-	this.settings['custom_undo_redo_keyboard_shortcuts'] = tinyMCE.getParam("custom_undo_redo_keyboard_shortcuts", true);
-	this.settings['verify_css_classes'] = tinyMCE.getParam("verify_css_classes", true);
-	this.settings['trim_span_elements'] = tinyMCE.getParam("trim_span_elements", true);
-	this.settings['verify_html'] = tinyMCE.getParam("verify_html", true);
-	this.settings['apply_source_formatting'] = tinyMCE.getParam("apply_source_formatting", false);
-	this.settings['directionality'] = tinyMCE.getParam("directionality", "ltr");
-	this.settings['auto_cleanup_word'] = tinyMCE.getParam("auto_cleanup_word", true);
-	this.settings['cleanup_on_startup'] = tinyMCE.getParam("cleanup_on_startup", false);
-	this.settings['inline_styles'] = tinyMCE.getParam("inline_styles", false);
-	this.settings['convert_newlines_to_brs'] = tinyMCE.getParam("convert_newlines_to_brs", false);
-	this.settings['auto_reset_designmode'] = tinyMCE.getParam("auto_reset_designmode", false);
-	this.settings['entities'] = tinyMCE.getParam("entities", "160,nbsp,38,amp,34,quot,162,cent,8364,euro,163,pound,165,yen,169,copy,174,reg,8482,trade,8240,permil,181,micro,183,middot,8226,bull,8230,hellip,8242,prime,8243,Prime,167,sect,182,para,223,szlig,8249,lsaquo,8250,rsaquo,171,laquo,187,raquo,8216,lsquo,8217,rsquo,8220,ldquo,8221,rdquo,8218,sbquo,8222,bdquo,60,lt,62,gt,8804,le,8805,ge,8211,ndash,8212,mdash,175,macr,8254,oline,164,curren,166,brvbar,168,uml,161,iexcl,191,iquest,710,circ,732,tilde,176,deg,8722,minus,177,plusmn,247,divide,8260,frasl,215,times,185,sup1,178,sup2,179,sup3,188,frac14,189,frac12,190,frac34,402,fnof,8747,int,8721,sum,8734,infin,8730,radic,8764,sim,8773,cong,8776,asymp,8800,ne,8801,equiv,8712,isin,8713,notin,8715,ni,8719,prod,8743,and,8744,or,172,not,8745,cap,8746,cup,8706,part,8704,forall,8707,exist,8709,empty,8711,nabla,8727,lowast,8733,prop,8736,ang,180,acute,184,cedil,170,ordf,186,ordm,8224,dagger,8225,Dagger,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,216,Oslash,338,OElig,352,Scaron,217,Ugrave,218,Uacute,219,Ucirc,220,Uuml,221,Yacute,376,Yuml,222,THORN,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,248,oslash,339,oelig,353,scaron,249,ugrave,250,uacute,251,ucirc,252,uuml,253,yacute,254,thorn,255,yuml,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,om!
 icron,960,pi,961,rho,962,sigmaf,963,sigma,964,tau,965,upsilon,966,phi,
967,chi,968,psi,969,omega,8501,alefsym,982,piv,8476,real,977,thetasym,978,upsih,8472,weierp,8465,image,8592,larr,8593,uarr,8594,rarr,8595,darr,8596,harr,8629,crarr,8656,lArr,8657,uArr,8658,rArr,8659,dArr,8660,hArr,8756,there4,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,8194,ensp,8195,emsp,8201,thinsp,8204,zwnj,8205,zwj,8206,lrm,8207,rlm,173,shy");
-	this.settings['cleanup_callback'] = tinyMCE.getParam("cleanup_callback", "");
+		// Set default values on settings
+		this._def("mode", "none");
+		this._def("theme", "advanced");
+		this._def("plugins", "", true);
+		this._def("language", "en");
+		this._def("docs_language", this.settings['language']);
+		this._def("elements", "");
+		this._def("textarea_trigger", "mce_editable");
+		this._def("editor_selector", "");
+		this._def("editor_deselector", "mceNoEditor");
+		this._def("valid_elements", "+a[id|style|rel|rev|charset|hreflang|dir|lang|tabindex|accesskey|type|name|href|target|title|class|onfocus|onblur|onclick|ondblclick|onmousedown|onmouseup|onmouseover|onmousemove|onmouseout|onkeypress|onkeydown|onkeyup],-strong/-b[class|style],-em/-i[class|style],-strike[class|style],-u[class|style],#p[id|style|dir|class|align],-ol[class|style],-ul[class|style],-li[class|style],br,img[id|dir|lang|longdesc|usemap|style|class|src|onmouseover|onmouseout|border|alt=|title|hspace|vspace|width|height|align],-sub[style|class],-sup[style|class],-blockquote[dir|style],-table[border=0|cellspacing|cellpadding|width|height|class|align|summary|style|dir|id|lang|bgcolor|background|bordercolor],-tr[id|lang|dir|class|rowspan|width|height|align|valign|style|bgcolor|background|bordercolor],tbody[id|class],thead[id|class],tfoot[id|class],#td[id|lang|dir|class|colspan|rowspan|width|height|align|valign|style|bgcolor|background|bordercolor|scope],-th[id|lang|dir|cl!
 ass|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,25!
 5,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,880!
 0,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);
 
-	// Setup baseHREF
-	var baseHREF = tinyMCE.settings['document_base_url'];
-	if (baseHREF.indexOf('?') != -1)
-		baseHREF = baseHREF.substring(0, baseHREF.indexOf('?'));
-	this.settings['base_href'] = baseHREF.substring(0, baseHREF.lastIndexOf('/')) + "/";
+		// Force strict loading mode to false on non Gecko browsers
+		if (this.isMSIE && !this.isOpera)
+			this.settings.strict_loading_mode = false;
 
-	theme = this.settings['theme'];
+		// Browser check IE
+		if (this.isMSIE && this.settings['browsers'].indexOf('msie') == -1)
+			return;
 
-	// Theme url
-	this.settings['theme_href'] = tinyMCE.baseURL + "/themes/" + theme;
+		// Browser check Gecko
+		if (this.isGecko && this.settings['browsers'].indexOf('gecko') == -1)
+			return;
 
-	if (!tinyMCE.isMSIE)
-		this.settings['force_br_newlines'] = false;
+		// Browser check Safari
+		if (this.isSafari && this.settings['browsers'].indexOf('safari') == -1)
+			return;
 
-	if (tinyMCE.getParam("content_css", false)) {
-		var cssPath = tinyMCE.getParam("content_css", "");
+		// Browser check Opera
+		if (this.isOpera && this.settings['browsers'].indexOf('opera') == -1)
+			return;
 
-		// Is relative
-		if (cssPath.indexOf('://') == -1 && cssPath.charAt(0) != '/')
-			this.settings['content_css'] = this.documentBasePath + "/" + cssPath;
-		else
-			this.settings['content_css'] = cssPath;
-	} else
-		this.settings['content_css'] = tinyMCE.baseURL + "/themes/" + theme + "/editor_content.css";
+		// If not super absolute make it so
+		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 (tinyMCE.getParam("popups_css", false)) {
-		var cssPath = tinyMCE.getParam("popups_css", "");
+			if (baseHREF.indexOf('://') == -1)
+				baseHREF = h + baseHREF;
 
-		// Is relative
-		if (cssPath.indexOf('://') == -1 && cssPath.charAt(0) != '/')
-			this.settings['popups_css'] = this.documentBasePath + "/" + cssPath;
-		else
-			this.settings['popups_css'] = cssPath;
-	} else
-		this.settings['popups_css'] = tinyMCE.baseURL + "/themes/" + theme + "/editor_popup.css";
+			tinyMCE.settings['document_base_url'] = baseHREF;
+			tinyMCE.settings['document_base_prefix'] = h;
+		}
 
-	if (tinyMCE.getParam("editor_css", false)) {
-		var cssPath = tinyMCE.getParam("editor_css", "");
+		// Trim away query part
+		if (baseHREF.indexOf('?') != -1)
+			baseHREF = baseHREF.substring(0, baseHREF.indexOf('?'));
 
-		// Is relative
-		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 + "/editor_ui.css";
+		this.settings['base_href'] = baseHREF.substring(0, baseHREF.lastIndexOf('/')) + "/";
 
-	this.settings['ask'] = tinyMCE.getParam("ask", false);
+		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();'; // Make unique URL non real URL
+		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');
 
-	if (tinyMCE.settings['debug']) {
-		var msg = "Debug: \n";
+		// Theme url
+		this.settings['theme_href'] = tinyMCE.baseURL + "/themes/" + theme;
 
-		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";
+		if (!tinyMCE.isIE || tinyMCE.isOpera)
+			this.settings['force_br_newlines'] = false;
 
-		alert(msg);
-	}
+		if (tinyMCE.getParam("popups_css", false)) {
+			var cssPath = tinyMCE.getParam("popups_css", "");
 
-	// Init HTML cleanup
-	this._initCleanup();
+			// Is relative
+			if (cssPath.indexOf('://') == -1 && cssPath.charAt(0) != '/')
+				this.settings['popups_css'] = this.documentBasePath + "/" + cssPath;
+			else
+				this.settings['popups_css'] = cssPath;
+		} else
+			this.settings['popups_css'] = tinyMCE.baseURL + "/themes/" + theme + "/css/editor_popup.css";
 
-	if (this.isMSIE)
-		attachEvent("onload", TinyMCE_onLoad);
-	else
-		addEventListener("load", TinyMCE_onLoad, false);
+		if (tinyMCE.getParam("editor_css", false)) {
+			var cssPath = tinyMCE.getParam("editor_css", "");
 
-	document.write('<sc'+'ript language="javascript" type="text/javascript" src="' + tinyMCE.baseURL + '/themes/' + this.settings['theme'] + '/editor_template.js"></script>');
-	document.write('<sc'+'ript language="javascript" type="text/javascript" src="' + tinyMCE.baseURL + '/langs/' + this.settings['language'] +  '.js"></script>');
-	document.write('<link href="' + this.settings['editor_css'] + '" rel="stylesheet" type="text/css">');
+			// Is relative
+			if (cssPath.indexOf('://') == -1 && cssPath.charAt(0) != '/')
+				this.settings['editor_css'] = this.documentBasePath + "/" + cssPath;
+			else
+				this.settings['editor_css'] = cssPath;
+		} else {
+			if (this.settings.editor_css != '')
+				this.settings['editor_css'] = tinyMCE.baseURL + "/themes/" + theme + "/css/editor_ui.css";
+		}
 
-	// Add theme plugins
-	var themePlugins = tinyMCE.getParam('plugins', '', true, ',');
-	if (this.settings['plugins'] != '') {
-		for (var i=0; i<themePlugins.length; i++)
-			document.write('<sc'+'ript language="javascript" type="text/javascript" src="' + tinyMCE.baseURL + '/plugins/' + themePlugins[i] + '/editor_plugin.js"></script>');
-	}
-}
+		if (tinyMCE.settings['debug']) {
+			var msg = "Debug: \n";
 
-function TinyMCE_confirmAdd(e) {
-	if (tinyMCE.isMSIE)
-		var targetElement = event.srcElement;
-	else
-		var targetElement = e.target;
+			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";
 
-	var elementId = targetElement.name ? targetElement.name : targetElement.id;
+			alert(msg);
+		}
 
-	if (!targetElement.getAttribute('mce_noask') && confirm(tinyMCELang['lang_edit_confirm']))
-		tinyMCE.addMCEControl(targetElement, elementId, tinyMCE.createMCEControl(tinyMCE.settings));
-	else
-		targetElement.setAttribute('mce_noask', 'true');
-}
+		// Only do this once
+		if (this.configs.length == 0) {
+			if (typeof(TinyMCECompressed) == "undefined") {
+				tinyMCE.addEvent(window, "DOMContentLoaded", TinyMCE_Engine.prototype.onLoad);
 
-function TinyMCE_updateContent(form_element_name) {
-	// find MCE instance linked to given form element and copy it's value
-	var formElement = document.getElementById(form_element_name);
-	for (var instanceName in tinyMCE.instances) {
-		var instance = tinyMCE.instances[instanceName];
-		if (instance.formElement == formElement) {
-			tinyMCE._setHTML(instance.contentWindow.document, instance.formElement.value);
+				if (tinyMCE.isRealIE) {
+					if (document.body)
+						tinyMCE.addEvent(document.body, "readystatechange", TinyMCE_Engine.prototype.onLoad);
+					else
+						tinyMCE.addEvent(document, "readystatechange", TinyMCE_Engine.prototype.onLoad);
+				}
 
-			if (!tinyMCE.isMSIE)
-				instance.contentWindow.document.body.innerHTML = tinyMCE._cleanupHTML(instance.contentWindow.document, this.settings, instance.contentWindow.document.body, instance.visualAid);
+				tinyMCE.addEvent(window, "load", TinyMCE_Engine.prototype.onLoad);
+				tinyMCE._addUnloadEvents();
+			}
 		}
-	}
-}
 
-function TinyMCE_addMCEControl(replace_element, form_element_name, mce_control) {
-	var editorId = "mce_editor_" + tinyMCE.idCounter++;
-	mce_control.editorId = editorId;
-	this.instances[editorId] = mce_control;
-	mce_control.onAdd(replace_element, form_element_name);
-}
+		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']);
 
-function TinyMCE_createMCEControl(settings) {
-	return new TinyMCEControl(settings);
-}
+		// Add plugins
+		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');
+			}
+		}
 
-function TinyMCE_triggerSave(skip_cleanup) {
-	// Cleanup and set all form fields
-	for (var instanceName in tinyMCE.instances) {
-		var instance = tinyMCE.instances[instanceName];
-		tinyMCE.settings['preformatted'] = false;
+		// Setup entities
+		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];
+		}
 
-		// Default to false
-		if (typeof(skip_cleanup) == "undefined")
-			skip_cleanup = false;
+		// Save away this config
+		settings['index'] = this.configs.length;
+		this.configs[this.configs.length] = settings;
 
-		tinyMCE._setHTML(instance.contentWindow.document, instance.contentWindow.document.body.innerHTML);
-		var cleanedHTML = skip_cleanup ? instance.contentWindow.document.body.innerHTML : tinyMCE._cleanupHTML(instance.contentWindow.document, this.settings, instance.contentWindow.document.body, this.visualAid, true);
+		// Start loading first one in chain
+		this.loadNextScript();
 
-		//var cleanedHTML = tinyMCE._cleanupHTML(instance.contentWindow.document, tinyMCE.settings, instance.contentWindow.document.body, false, true);
+		// Force flicker free CSS backgrounds in IE
+		if (this.isIE && !this.isOpera) {
+			try {
+				document.execCommand('BackgroundImageCache', false, true);
+			} catch (e) {
+			}
+		}
+	},
 
-		if (tinyMCE.settings["encoding"] == "xml" || tinyMCE.settings["encoding"] == "html")
-			cleanedHTML = tinyMCE.convertStringToXML(cleanedHTML);
+	_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);});
+		}
+	},
 
-		if (tinyMCE.settings['save_callback'] != "")
-			var content = eval(tinyMCE.settings['save_callback'] + "(instance.formTargetElementId,cleanedHTML,instance.contentWindow.document.body);");
+	_def : function(key, def_val, t) {
+		var v = tinyMCE.getParam(key, def_val);
 
-		// Use callback content if available
-		if ((typeof(content) != "undefined") && content != null)
-			cleanedHTML = content;
+		v = t ? v.replace(/\s+/g, "") : v;
 
-		// Replace some weird entities (Bug: #1056343)
-		cleanedHTML = tinyMCE.regexpReplace(cleanedHTML, "&#40;", "(", "gi");
-		cleanedHTML = tinyMCE.regexpReplace(cleanedHTML, "&#41;", ")", "gi");
-		cleanedHTML = tinyMCE.regexpReplace(cleanedHTML, "&#59;", ";", "gi");
-		cleanedHTML = tinyMCE.regexpReplace(cleanedHTML, "&#34;", "&quot;", "gi");
-		cleanedHTML = tinyMCE.regexpReplace(cleanedHTML, "&#94;", "^", "gi");
+		this.settings[key] = v;
+	},
 
-//alert(cleanedHTML);
-		instance.formElement.value = cleanedHTML;
-	}
-}
+	hasPlugin : function(n) {
+		return typeof(this.plugins[n]) != "undefined" && this.plugins[n] != null;
+	},
 
-function TinyMCE__convertOnClick(node) {
-	// Skip on MSIE < 6+
-	if (tinyMCE.isMSIE5)
-		return;
+	addPlugin : function(n, p) {
+		var op = this.plugins[n];
 
-	// Convert all onclick to mce_onclick
-	var elms = node.getElementsByTagName("a");
-	for (var i=0; i<elms.length; i++) {
-		var onclick = elms[i].getAttribute('onclick');
-		if (onclick && onclick != "") {
-			elms[i].removeAttribute("onclick");
-			elms[i].setAttribute("mce_onclick", tinyMCE.cleanupEventStr("" + onclick));
-			elms[i].onclick = null;
+		// Use the previous plugin object base URL used when loading external plugins
+		p.baseURL = op ? op.baseURL : tinyMCE.baseURL + "/plugins/" + n;
+		this.plugins[n] = p;
+
+		this.loadNextScript();
+	},
+
+	setPluginBaseURL : function(n, u) {
+		var op = this.plugins[n];
+
+		if (op)
+			op.baseURL = u;
+		else
+			this.plugins[n] = {baseURL : u};
+	},
+
+	loadPlugin : function(n, u) {
+		u = u.indexOf('.js') != -1 ? u.substring(0, u.lastIndexOf('/')) : u;
+		u = u.charAt(u.length-1) == '/' ? u.substring(0, u.length-1) : u;
+		this.plugins[n] = {baseURL : u};
+		this.loadScript(u + "/editor_plugin" + (tinyMCE.srcMode ? '_src' : '') + ".js");
+	},
+
+	hasTheme : function(n) {
+		return typeof(this.themes[n]) != "undefined" && this.themes[n] != null;
+	},
+
+	addTheme : function(n, t) {
+		this.themes[n] = t;
+
+		this.loadNextScript();
+	},
+
+	addMenu : function(n, m) {
+		this.menus[n] = m;
+	},
+
+	hasMenu : function(n) {
+		return typeof(this.plugins[n]) != "undefined" && this.plugins[n] != null;
+	},
+
+	loadScript : function(url) {
+		var i;
+
+		for (i=0; i<this.loadedFiles.length; i++) {
+			if (this.loadedFiles[i] == url)
+				return;
 		}
-	}
-}
 
-function TinyMCE_resetForm(e) {
-	var formObj = tinyMCE.isMSIE ? window.event.srcElement : e.target;
+		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>');
 
-	for (var instanceName in tinyMCE.instances) {
-		var instance = tinyMCE.instances[instanceName];
+		this.loadedFiles[this.loadedFiles.length] = url;
+	},
 
-		for (var i=0; i<formObj.elements.length; i++) {
-			if (instance.formTargetElementId == formObj.elements[i].name) {
-				instance.contentWindow.document.body.innerHTML = instance.startContent;
-				return;
+	loadNextScript : function() {
+		var d = document, se;
+
+		if (!tinyMCE.settings.strict_loading_mode)
+			return;
+
+		if (this.loadingIndex < this.pendingFiles.length) {
+			se = d.createElementNS('http://www.w3.org/1999/xhtml', 'script');
+			se.setAttribute('language', 'javascript');
+			se.setAttribute('type', 'text/javascript');
+			se.setAttribute('src', this.pendingFiles[this.loadingIndex++]);
+
+			d.getElementsByTagName("head")[0].appendChild(se);
+		} else
+			this.loadingIndex = -1; // Done with loading
+	},
+
+	loadCSS : function(url) {
+		var ar = url.replace(/\s+/, '').split(',');
+		var lflen = 0, csslen = 0;
+		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) {
+				/* Make sure it doesn't exist. */
+				for (i=0, lflen=this.loadedFiles.length; i<lflen; i++) {
+					if (this.loadedFiles[i] == ar[x]) {
+						skip = true;
+						break;
+					}
+				}
+
+				if (!skip) {
+					if (tinyMCE.settings.strict_loading_mode) {
+						nl = document.getElementsByTagName("head");
+
+						le = document.createElement('link');
+						le.setAttribute('href', ar[x]);
+						le.setAttribute('rel', 'stylesheet');
+						le.setAttribute('type', 'text/css');
+
+						nl[0].appendChild(le);			
+					} else
+						document.write('<link href="' + ar[x] + '" rel="stylesheet" type="text/css" />');
+
+					this.loadedFiles[this.loadedFiles.length] = ar[x];
+				}
 			}
 		}
-	}
-}
+	},
 
-function TinyMCE_execInstanceCommand(editor_id, command, user_interface, value) {
-	var mceControl = tinyMCE._getInstanceById(editor_id);
-	if (mceControl) {
-		mceControl.contentWindow.focus();
+	importCSS : function(doc, css) {
+		var css_ary = css.replace(/\s+/, '').split(',');
+		var csslen, elm, headArr, x, css_file;
 
-		// Reset design mode if lost
-		mceControl.autoResetDesignMode();
+		for (x = 0, csslen = css_ary.length; x<csslen; x++) {
+			css_file = css_ary[x];
 
-		this.selectedElement = mceControl.getFocusElement();
-		this.selectedInstance = mceControl;
-		tinyMCE.execCommand(command, user_interface, value);
-	}
-}
+			if (css_file != null && css_file != 'null' && css_file.length > 0) {
+				// Is relative, make absolute
+				if (css_file.indexOf('://') == -1 && css_file.charAt(0) != '/')
+					css_file = this.documentBasePath + "/" + css_file;
 
-function TinyMCE_execCommand(command, user_interface, value) {
-	// Command within editor instance?
-/*	if (this.selectedInstance && tinyMCE.isMSIE) {
-		var node = this.selectedInstance.getFocusElement();
-		while (node = node.parentNode) {
-			if (node.nodeName == "#document" && (node.location.href.indexOf('blank.htm') == -1)) {
-				this.selectedInstance = null;
-				break;
+				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);
 			}
 		}
-	}*/
+	},
 
-	// Default input
-	user_interface = user_interface ? user_interface : false;
-	value = value ? value : null;
+	confirmAdd : function(e, settings) {
+		var elm = tinyMCE.isIE ? event.srcElement : e.target;
+		var elementId = elm.name ? elm.name : elm.id;
 
-	switch (command) {
-		case 'mceHelp':
-			window.open(tinyMCE.themeURL + "/docs/" + this.settings['docs_language'] + "/index.htm", "mceHelp", "menubar=yes,toolbar=yes,scrollbars=yes,left=20,top=20,width=550,height=600");
-		return;
+		tinyMCE.settings = settings;
 
-		case 'mceFocus':
-			var mceControl = tinyMCE._getInstanceById(value);
-			if (mceControl)
-				mceControl.contentWindow.focus();
-		return;
+		if (tinyMCE.settings['convert_on_click'] || (!elm.getAttribute('mce_noask') && confirm(tinyMCELang['lang_edit_confirm'])))
+			tinyMCE.addMCEControl(elm, elementId);
 
-		case "mceAddControl":
-		case "mceAddEditor":
-			tinyMCE.addMCEControl(tinyMCE._getElementById(value), value, tinyMCE.createMCEControl(tinyMCE.settings));
-			return;
+		elm.setAttribute('mce_noask', 'true');
+	},
 
-		case "mceRemoveControl":
-		case "mceRemoveEditor":
-			tinyMCE.removeMCEControl(value);
-			return;
+	updateContent : function(form_element_name) {
+		// Find MCE instance linked to given form element and copy it's value
+		var formElement = document.getElementById(form_element_name);
+		for (var n in tinyMCE.instances) {
+			var inst = tinyMCE.instances[n];
+			if (!tinyMCE.isInstance(inst))
+				continue;
 
-		case "mceResetDesignMode":
-			// Resets the designmode state of the editors in Gecko
-			if (!tinyMCE.isMSIE) {
-				for (var instanceName in tinyMCE.instances)
-					tinyMCE.instances[instanceName].contentWindow.document.designMode = "on";
+			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);
 			}
+		}
+	},
 
-			return;
-	}
+	addMCEControl : function(replace_element, form_element_name, target_document) {
+		var id = "mce_editor_" + tinyMCE.idCounter++;
+		var inst = new TinyMCE_Control(tinyMCE.settings);
 
-	if (this.selectedInstance)
-		this.selectedInstance.execCommand(command, user_interface, value);
-	else if (tinyMCE.settings['focus_alert'])
-		alert(tinyMCELang['lang_focus_alert']);
-}
+		inst.editorId = id;
+		this.instances[id] = inst;
 
-function TinyMCE_addEventHandlers(editor_id) {
-	if (tinyMCE.isMSIE) {
-		var patchFunc = function() {
-			var event = document.frames[editor_id].event;
+		inst._onAdd(replace_element, form_element_name, target_document);
+	},
 
-			event.target = event.srcElement;
-			event.target.editor_id = editor_id;
+	removeInstance : function(ti) {
+		var t = [], n, i;
 
-			TinyMCE_handleEvent(event);
-		};
+		// Remove from instances
+		for (n in tinyMCE.instances) {
+			i = tinyMCE.instances[n];
 
-		// Event patch
-		document.frames[editor_id].document.onkeypress = patchFunc;
-		document.frames[editor_id].document.onkeyup = patchFunc;
-		document.frames[editor_id].document.onkeydown = patchFunc;
+			if (tinyMCE.isInstance(i) && ti != i)
+					t[n] = i;
+		}
 
-		// Due to stange focus bug in MSIE this line is disabled for now
-		//document.frames[editor_id].document.onmousedown = patchFunc;
-		document.frames[editor_id].document.onmouseup = patchFunc;
-		document.frames[editor_id].document.onclick = patchFunc;
-	} else {
-		var instance = tinyMCE.instances[editor_id];
+		tinyMCE.instances = t;
 
-		instance.contentWindow.document.editor_id = editor_id;
-		instance.contentWindow.document.addEventListener("keypress", tinyMCE.handleEvent, false);
-		instance.contentWindow.document.addEventListener("keydown", tinyMCE.handleEvent, false);
-		instance.contentWindow.document.addEventListener("keyup", tinyMCE.handleEvent, false);
-		instance.contentWindow.document.addEventListener("click", tinyMCE.handleEvent, false);
-		instance.contentWindow.document.addEventListener("mouseup", tinyMCE.handleEvent, false);
-		instance.contentWindow.document.addEventListener("mousedown", tinyMCE.handleEvent, false);
-		instance.contentWindow.document.addEventListener("focus", tinyMCE.handleEvent, false);
-		instance.contentWindow.document.designMode = "on";
-	}
-}
+		// Remove from global undo/redo
+		n = [];
+		t = tinyMCE.undoLevels;
 
+		for (i=0; i<t.length; i++) {
+			if (t[i] != ti)
+				n.push(t[i]);
+		}
 
-function TinyMCE__createIFrame(replace_element) {
-	var iframe = document.createElement("iframe");
-	var id = replace_element.getAttribute("id");
+		tinyMCE.undoLevels = n;
+		tinyMCE.undoIndex = n.length;
 
-	iframe.setAttribute("id", id);
-	iframe.setAttribute("className", "mceEditorArea");
-	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", tinyMCE.settings['area_width']);
-	iframe.setAttribute("height", tinyMCE.settings['area_height']);
+		return ti;
+	},
 
-	// Must have a src element in MSIE HTTPs breaks aswell as absoute URLs
-	if (tinyMCE.isMSIE)
-		iframe.setAttribute("src", this.settings['default_document']);
+	removeMCEControl : function(editor_id) {
+		var inst = tinyMCE.getInstanceById(editor_id), h, re, ot, tn;
 
-	iframe.style.width = tinyMCE.settings['area_width'];
-	iframe.style.height = tinyMCE.settings['area_height'];
+		if (inst) {
+			inst.switchSettings();
 
-	// MSIE 5.0 issue
-	if (tinyMCE.isMSIE)
-		replace_element.outerHTML = iframe.outerHTML;
-	else
-		replace_element.parentNode.replaceChild(iframe, replace_element);
+			editor_id = inst.editorId;
+			h = tinyMCE.getContent(editor_id);
 
-	if (tinyMCE.isMSIE)
-		return window.frames[id];
-	else
-		return iframe;
-}
+			this.removeInstance(inst);
 
-function TinyMCE_setEditMode(editor_id, mode) {
-	var targetMCEControl = this.instances[editor_id];
-	var dynamicIFrame = false;
+			tinyMCE.selectedElement = null;
+			tinyMCE.selectedInstance = null;
 
-	if (!this.isMSIE) {
-		var targetElement = document.getElementById(editor_id);
-		if (targetElement && targetElement.nodeName.toLowerCase() == "span") {
-			targetElement = tinyMCE._createIFrame(targetElement);
-			dynamicIFrame = true;
+			// Remove element
+			re = document.getElementById(editor_id + "_parent");
+			ot = inst.oldTargetElement;
+			tn = ot.nodeName.toLowerCase();
+
+			if (tn == "textarea" || tn == "input") {
+				re.parentNode.removeChild(re);
+				ot.style.display = "inline";
+				ot.value = h;
+			} else {
+				ot.innerHTML = h;
+				ot.style.display = 'block';
+				re.parentNode.insertBefore(ot, re);
+				re.parentNode.removeChild(re);
+			}
 		}
+	},
 
-		targetMCEControl.targetElement = targetElement;
-		targetMCEControl.contentDocument = targetElement.contentDocument;
-		targetMCEControl.contentWindow = targetElement.contentWindow;
+	triggerSave : function(skip_cleanup, skip_callback) {
+		var inst, n;
 
-		//targetMCEControl.contentWindow.document.designMode = mode ? "on" : "off";
-	} else {
-		var targetElement = document.getElementById(editor_id);
-		if (targetElement && targetElement.nodeName.toLowerCase() == "span")
-			targetElement = tinyMCE._createIFrame(targetElement);
-		else
-			targetElement = document.frames[editor_id];
+		// Default to false
+		if (typeof(skip_cleanup) == "undefined")
+			skip_cleanup = false;
 
-		targetMCEControl.targetElement = targetElement;
-		targetMCEControl.contentDocument = targetElement.window.document;
-		targetMCEControl.contentWindow = targetElement.window;
+		// Default to false
+		if (typeof(skip_callback) == "undefined")
+			skip_callback = false;
 
-		targetMCEControl.contentDocument.designMode = mode ? "on" : "off";
-	}
+		// Cleanup and set all form fields
+		for (n in tinyMCE.instances) {
+			inst = tinyMCE.instances[n];
 
-	// Setup base HTML
-	var doc = targetMCEControl.contentDocument;
-	if (dynamicIFrame) {
-        var html = ""
-            + '<!doctype html public "-//w3c//dtd html 4.0 transitional//en">'
-            + '<html>'
-            + '<head>'
-            + '<title>blank_page</title>'
-            + '<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">'
-            + '</head>'
-            + '<body>'
-            + '</body>'
-            + '</html>';
+			if (!tinyMCE.isInstance(inst))
+				continue;
 
-		try {
-			targetMCEControl.contentWindow.document.designMode = "on";
-			doc.open();
-			doc.write(html);
-			doc.close();
-		} catch (e) {
-			// Failed Mozilla 1.3
-			targetMCEControl.contentWindow.document.location.href = tinyMCE.baseURL + "/blank.htm";
+			inst.triggerSave(skip_cleanup, skip_callback);
 		}
-	}
+	},
 
-	// 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)
-		window.setTimeout("TinyMCE_addEventHandlers('" + editor_id + "');", 1);
+	resetForm : function(form_index) {
+		var i, inst, n, formObj = document.forms[form_index];
 
-	//window.setTimeout("tinyMCE.setupContent('" + editor_id + "');", (tinyMCE.isMSIE ? 1 : 1000));
-	tinyMCE.setupContent(editor_id);
-}
+		for (n in tinyMCE.instances) {
+			inst = tinyMCE.instances[n];
 
-function TinyMCE_setupContent(editor_id) {
-	var instance = tinyMCE.instances[editor_id];
-	var doc = instance.contentWindow.document;
-	var head = doc.getElementsByTagName('head').item(0);
+			if (!tinyMCE.isInstance(inst))
+				continue;
 
-	// Not loaded correctly hit it again, Mozilla bug #997860
-	if (!tinyMCE.isMSIE && doc.title != "blank_page") {
-		// This part will remove the designMode status
-		doc.location.href = tinyMCE.baseURL + "/blank.htm";
-		window.setTimeout("tinyMCE.setupContent('" + editor_id + "');", 1000);
-		return;
-	}
+			inst.switchSettings();
 
-	if (!head) {
-		window.setTimeout("tinyMCE.setupContent('" + editor_id + "');", 10);
-		return;
-	}
+			for (i=0; i<formObj.elements.length; i++) {
+				if (inst.formTargetElementId == formObj.elements[i].name)
+					inst.getBody().innerHTML = inst.startContent;
+			}
+		}
+	},
 
-	doc.body.dir = this.settings['directionality'];
-	doc.editorId = editor_id;
+	execInstanceCommand : function(editor_id, command, user_interface, value, focus) {
+		var inst = tinyMCE.getInstanceById(editor_id), r;
 
-	// Add on document element in Mozilla
-	if (!tinyMCE.isMSIE)
-		doc.documentElement.editorId = editor_id;
+		if (inst) {
+			r = inst.selection.getRng();
 
-	// Setup base element
-	base = doc.createElement("base");
-	base.setAttribute('href', tinyMCE.settings['base_href']);
-	head.appendChild(base);
+			if (typeof(focus) == "undefined")
+				focus = true;
 
-	var oldElement = instance.oldTargetElement;
-	if (oldElement.nodeName.toLowerCase() == "textarea")
-		var content = oldElement.value;
-	else
-		var content = instance.oldTargetElement.innerHTML;
+			// IE bug lost focus on images in absolute divs Bug #1534575
+			if (focus && (!r || !r.item))
+				inst.contentWindow.focus();
 
-	instance.startContent = content;
+			// Reset design mode if lost
+			inst.autoResetDesignMode();
 
-	// Replace new line characters to BRs
-	if (tinyMCE.settings['convert_newlines_to_brs']) {
-		content = tinyMCE.regexpReplace(content, "\r\n", "<br />", "gi");
-		content = tinyMCE.regexpReplace(content, "\r", "<br />", "gi");
-		content = tinyMCE.regexpReplace(content, "\n", "<br />", "gi");
-	}
+			this.selectedElement = inst.getFocusElement();
+			inst.select();
+			tinyMCE.execCommand(command, user_interface, value);
 
-	// Call custom cleanup code
-	content = tinyMCE._customCleanup("insert_to_editor", content);
+			// Cancel event so it doesn't call onbeforeonunlaod
+			if (tinyMCE.isIE && window.event != null)
+				tinyMCE.cancelEvent(window.event);
+		}
+	},
 
-	if (tinyMCE.isMSIE) {
-		var styleSheet = document.frames[editor_id].document.createStyleSheet(instance.settings['content_css']);
+	execCommand : function(command, user_interface, value) {
+		var inst = tinyMCE.selectedInstance;
 
-		// Ugly!!!
-		window.setInterval('try{tinyMCE.getCSSClasses(document.frames["' + editor_id + '"].document, "' + editor_id + '");}catch(e){}', 500);
+		// Default input
+		user_interface = user_interface ? user_interface : false;
+		value = value ? value : null;
 
-		if (tinyMCE.settings["force_br_newlines"])
-			document.frames[editor_id].document.styleSheets[0].addRule("p", "margin: 0px;");
+		if (inst)
+			inst.switchSettings();
 
-		var patchFunc = function() {
-			var event = document.frames[editor_id].event;
-			event.target = document.frames[editor_id].document;
+		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();
 
-			TinyMCE_handleEvent(event);
-		};
+						if (!tinyMCE.nextUndoRedoInstanceId)
+							inst.execCommand('Undo');
+					}
+				} else
+					inst.execCommand('Undo');
+				return true;
 
-		document.frames[editor_id].document.body.onbeforepaste = patchFunc;
-		document.frames[editor_id].document.body.onbeforecut = patchFunc;
-		document.frames[editor_id].document.body.onpaste = patchFunc;
+			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();
 
-		document.frames[editor_id].document.body.editorId = editor_id;
-	} else {
-		var targetDocument = document.getElementById(editor_id).contentWindow.document;
+						if (!tinyMCE.nextUndoRedoInstanceId)
+							inst.execCommand('Redo');
+					}
+				} else
+					inst.execCommand('Redo');
 
-		// Import editor css
-		var cssImporter = targetDocument.createElement("link");
-		cssImporter.rel = "stylesheet";
-		cssImporter.href = instance.settings['content_css'];
-		if (headArr = targetDocument.getElementsByTagName("head"));
-			headArr[0].appendChild(cssImporter);
-	}
+				return true;
 
-	// Fix for bug #958637
-	if (!tinyMCE.isMSIE) {
-		if (tinyMCE.settings['cleanup_on_startup']) {
-			var contentElement = instance.contentWindow.document.createElement("body");
-			contentElement.innerHTML = content;
-			instance.contentWindow.document.body.innerHTML = tinyMCE._cleanupHTML(instance.contentWindow.document, this.settings, contentElement);
-		} else {
-			var contentElement = instance.contentWindow.document.createElement("body");
-			var doc = instance.contentWindow.document;
+			case 'mceFocus':
+				var inst = tinyMCE.getInstanceById(value);
+				if (inst)
+					inst.getWin().focus();
+			return;
 
-			// Convert all strong/em to b/i
-			content = tinyMCE.regexpReplace(content, "<strong", "<b", "gi");
-			content = tinyMCE.regexpReplace(content, "<em", "<i", "gi");
-			content = tinyMCE.regexpReplace(content, "</strong>", "</b>", "gi");
-			content = tinyMCE.regexpReplace(content, "</em>", "</i>", "gi");
-			contentElement.innerHTML = content;
+			case "mceAddControl":
+			case "mceAddEditor":
+				tinyMCE.addMCEControl(tinyMCE._getElementById(value), value);
+				return;
 
-			// Convert img src nodes
-			var elms = contentElement.getElementsByTagName("img");
-			for (var i=0; i<elms.length; i++) {
-				var src = elms[i].getAttribute('src');
-				if (src && src != "") {
-					src = eval(tinyMCE.cleanup_urlconvertor_callback + "(src, elms[i], tinyMCE.cleanup_on_save);");
-					elms[i].setAttribute("src", src);
-					elms[i].setAttribute("mce_real_src", src);
-				}
-			}
+			case "mceAddFrameControl":
+				tinyMCE.addMCEControl(tinyMCE._getElementById(value['element'], value['document']), value['element'], value['document']);
+				return;
 
-			// Convert anchor hrefs
-			elms = contentElement.getElementsByTagName("a");
-			for (var i=0; i<elms.length; i++) {
-				var href = elms[i].getAttribute('href');
-				if (href && href != "") {
-					href = eval(tinyMCE.cleanup_urlconvertor_callback + "(href, elms[i], tinyMCE.cleanup_on_save);");
-					elms[i].setAttribute("href", href);
-					elms[i].setAttribute("mce_real_href", href);
+			case "mceRemoveControl":
+			case "mceRemoveEditor":
+				tinyMCE.removeMCEControl(value);
+				return;
+
+			case "mceResetDesignMode":
+				// Resets the designmode state of the editors in Gecko
+				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) {
+							// Ignore any errors
+						}
+					}
 				}
-			}
 
-			instance.contentWindow.document.body.innerHTML = contentElement.innerHTML;
+				return;
 		}
-	} else {
-		if (tinyMCE.settings['cleanup_on_startup']) {
-			tinyMCE._setHTML(instance.contentWindow.document, content);
-			// Produces permission denied error in MSIE 5.5
-			eval('try {instance.contentWindow.document.body.innerHTML = tinyMCE._cleanupHTML(instance.contentDocument, this.settings, instance.contentDocument.body);} catch(e) {}');
-		} else
-			instance.contentWindow.document.body.innerHTML = content;
-	}
 
-	tinyMCE._convertOnClick(instance.contentWindow.document.body);
+		if (inst) {
+			inst.execCommand(command, user_interface, value);
+		} else if (tinyMCE.settings['focus_alert'])
+			alert(tinyMCELang['lang_focus_alert']);
+	},
 
-	// Fix for bug #957681
-	//instance.contentWindow.document.designMode = instance.contentWindow.document.designMode;
+	_createIFrame : function(replace_element, doc, win) {
+		var iframe, id = replace_element.getAttribute("id");
+		var aw, ah;
 
-	// Setup element references
-	var parentElm = document.getElementById(instance.editorId + '_parent');
-	instance.formElement = parentElm.lastChild;
+		if (typeof(doc) == "undefined")
+			doc = document;
 
-	if (tinyMCE.settings['handleNodeChangeCallback']) {
-		var undoIndex = -1;
-		var undoLevels = -1;
+		if (typeof(win) == "undefined")
+			win = window;
 
-		if (tinyMCE.settings['custom_undo_redo']) {
-			undoIndex = 0;
-			undoLevels = 0;
+		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";
 		}
 
-		eval(tinyMCE.settings['handleNodeChangeCallback'] + '("' + editor_id + '", tinyMCE.instances["' + editor_id + '"].contentWindow.document.body,undoIndex,undoLevels,tinyMCE.instances["' + editor_id + '"].visualAid, false);');
-		//window.setTimeout(tinyMCE.settings['handleNodeChangeCallback'] + '("' + editor_id + '", tinyMCE.instances["' + editor_id + '"].contentWindow.document.body,undoIndex,undoLevels);', 10);
-	}
+		if (ah.indexOf('%') == -1) {
+			ah = parseInt(ah);
+			ah = (isNaN(ah) || ah < 0) ? 240 : ah;
+			ah = ah + "px";
+		}
 
-	tinyMCE.handleVisualAid(instance.contentWindow.document.body, true, tinyMCE.settings['visual']);
+		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';
 
-	// Trigger setup content
-	if (tinyMCE.settings['setupcontent_callback'] != "")
-		eval(tinyMCE.settings['setupcontent_callback'] + '(editor_id,instance.contentWindow.document.body);');
+		if (tinyMCE.settings["auto_resize"])
+			iframe.setAttribute("scrolling", "no");
 
-	// Re-add design mode on mozilla
-	if (!tinyMCE.isMSIE)
-		TinyMCE_addEventHandlers(editor_id);
-}
+		// Must have a src element in MSIE HTTPs breaks aswell as absoute URLs
+		if (tinyMCE.isRealIE)
+			iframe.setAttribute("src", this.settings['default_document']);
 
-function TinyMCE_handleEvent(e) {
-	//window.status = e.type + " " + e.target.nodeName + " " + (e.relatedTarget ? e.relatedTarget.nodeName : "");
+		iframe.style.width = aw;
+		iframe.style.height = ah;
 
-	switch (e.type) {
-		case "submit":
-			var formObj = tinyMCE.isMSIE ? window.event.srcElement : e.target;
+		// Ugly hack for Gecko problem in strict mode
+		if (tinyMCE.settings.strict_loading_mode)
+			iframe.style.marginBottom = '-5px';
 
-			// Disable all UI form elements that TinyMCE created
-			for (var i=0; i<formObj.elements.length; i++) {
-				var elementId = formObj.elements[i].name ? formObj.elements[i].name : formObj.elements[i].id;
+		// MSIE 5.0 issue
+		if (tinyMCE.isRealIE)
+			replace_element.outerHTML = iframe.outerHTML;
+		else
+			replace_element.parentNode.replaceChild(iframe, replace_element);
 
-				if (elementId.indexOf('mce_editor_') == 0)
-					formObj.elements[i].disabled = true;
-			}
+		if (tinyMCE.isRealIE)
+			return win.frames[id];
+		else
+			return iframe;
+	},
 
-			TinyMCE_triggerSave();
+	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;
+
+		// HTML values get XML encoded in strict mode
+		if (tinyMCE.settings.strict_loading_mode) {
+			content = content.replace(/&lt;/g, '<');
+			content = content.replace(/&gt;/g, '>');
+			content = content.replace(/&quot;/g, '"');
+			content = content.replace(/&amp;/g, '&');
+		}
+
+		inst.switchSettings();
+
+		// Not loaded correctly hit it again, Mozilla bug #997860
+		if (!tinyMCE.isIE && tinyMCE.getParam("setupcontent_reload", false) && doc.title != "blank_page") {
+			// This part will remove the designMode status
+			// Failes first time in Firefox 1.5b2 on Mac
+			try {doc.location.href = tinyMCE.baseURL + "/blank.htm";} catch (ex) {}
+			window.setTimeout("tinyMCE.setupContent('" + editor_id + "');", 1000);
 			return;
+		}
 
-		case "reset":
-			TinyMCE_resetForm(e);
+		if (!head) {
+			window.setTimeout("tinyMCE.setupContent('" + editor_id + "');", 10);
 			return;
+		}
 
-		case "paste":
-			if (tinyMCE.settings['auto_cleanup_word'])
-				window.setTimeout("tinyMCE.execInstanceCommand('" + e.target.editorId + "', 'mceCleanupWord', false, null);", 1);
-			break;
+		// Import theme specific content CSS the user specific
+		tinyMCE.importCSS(inst.getDoc(), tinyMCE.baseURL + "/themes/" + inst.settings['theme'] + "/css/editor_content.css");
+		tinyMCE.importCSS(inst.getDoc(), inst.settings['content_css']);
+		tinyMCE.dispatchCallback(inst, 'init_instance_callback', 'initInstance', inst);
 
-		case "beforecut":
-		case "beforepaste":
-			if (tinyMCE.selectedInstance)
-				tinyMCE.selectedInstance.execCommand("mceAddUndoLevel");
-			break;
+		// Setup keyboard shortcuts
+		if (tinyMCE.getParam('custom_undo_redo_keyboard_shortcuts')) {
+			inst.addShortcut('ctrl', 'z', 'lang_undo_desc', 'Undo');
+			inst.addShortcut('ctrl', 'y', 'lang_redo_desc', 'Redo');
+		}
 
-		case "keypress":
-			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];
+		// BlockFormat shortcuts keys
+		for (i=1; i<=6; i++)
+			inst.addShortcut('ctrl', '' + i, '', 'FormatBlock', false, '<h' + i + '>');
+
+		inst.addShortcut('ctrl', '7', '', 'FormatBlock', false, '<p>');
+		inst.addShortcut('ctrl', '8', '', 'FormatBlock', false, '<div>');
+		inst.addShortcut('ctrl', '9', '', 'FormatBlock', false, '<address>');
+
+		// Add default shortcuts for gecko
+		if (tinyMCE.isGecko) {
+			inst.addShortcut('ctrl', 'b', 'lang_bold_desc', 'Bold');
+			inst.addShortcut('ctrl', 'i', 'lang_italic_desc', 'Italic');
+			inst.addShortcut('ctrl', 'u', 'lang_underline_desc', 'Underline');
+		}
+
+		// Setup span styles
+		if (tinyMCE.getParam("convert_fonts_to_spans"))
+			inst.getBody().setAttribute('id', 'mceSpanFonts');
+
+		if (tinyMCE.settings['nowrap'])
+			doc.body.style.whiteSpace = "nowrap";
+
+		doc.body.dir = this.settings['directionality'];
+		doc.editorId = editor_id;
+
+		// Add on document element in Mozilla
+		if (!tinyMCE.isIE)
+			doc.documentElement.editorId = editor_id;
+
+		inst.setBaseHREF(tinyMCE.settings['base_href']);
+
+		// Replace new line characters to BRs
+		if (tinyMCE.settings['convert_newlines_to_brs']) {
+			content = tinyMCE.regexpReplace(content, "\r\n", "<br />", "gi");
+			content = tinyMCE.regexpReplace(content, "\r", "<br />", "gi");
+			content = tinyMCE.regexpReplace(content, "\n", "<br />", "gi");
+		}
+
+		// Open closed anchors
+	//	content = content.replace(new RegExp('<a(.*?)/>', 'gi'), '<a$1></a>');
+
+		// Call custom cleanup code
+		content = tinyMCE.storeAwayURLs(content);
+		content = tinyMCE._customCleanup(inst, "insert_to_editor", content);
+
+		if (tinyMCE.isIE) {
+			// Ugly!!!
+			window.setInterval('try{tinyMCE.getCSSClasses(tinyMCE.instances["' + editor_id + '"].getDoc(), "' + editor_id + '");}catch(e){}', 500);
+
+			if (tinyMCE.settings["force_br_newlines"])
+				doc.styleSheets[0].addRule("p", "margin: 0;");
+
+			var body = inst.getBody();
+			body.editorId = editor_id;
+		}
+
+		content = tinyMCE.cleanupHTMLCode(content);
+
+		// Fix for bug #958637
+		if (!tinyMCE.isIE) {
+			var contentElement = inst.getDoc().createElement("body");
+			var doc = inst.getDoc();
+
+			contentElement.innerHTML = content;
+
+			// Remove weridness!
+			if (tinyMCE.isGecko && tinyMCE.settings['remove_lt_gt'])
+				content = content.replace(new RegExp('&lt;&gt;', '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);
+
+				// Produces permission denied error in MSIE 5.5
+				eval('try {tinyMCE.setInnerHTML(inst.getBody(), tinyMCE._cleanupHTML(inst, inst.contentDocument, this.settings, inst.getBody()));} catch(e) {}');
+			} else
+				tinyMCE._setHTML(inst.getDoc(), content);
+		}
+
+		// Fix for bug #957681
+		//inst.getDoc().designMode = inst.getDoc().designMode;
+
+		// Setup element references
+		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());
+
+		// Re-add design mode on mozilla
+		if (!tinyMCE.isIE)
+			tinyMCE.addEventHandlers(inst);
+
+		// Add blur handler
+		if (tinyMCE.isIE) {
+			tinyMCE.addEvent(inst.getBody(), "blur", TinyMCE_Engine.prototype._eventPatch);
+			tinyMCE.addEvent(inst.getBody(), "beforedeactivate", TinyMCE_Engine.prototype._eventPatch); // Bug #1439953
+
+			// Workaround for drag drop/copy paste base href bug
+			if (!tinyMCE.isOpera) {
+				tinyMCE.addEvent(doc.body, "mousemove", TinyMCE_Engine.prototype.onMouseMove);
+				tinyMCE.addEvent(doc.body, "beforepaste", TinyMCE_Engine.prototype._eventPatch);
+				tinyMCE.addEvent(doc.body, "drop", TinyMCE_Engine.prototype._eventPatch);
 			}
+		}
 
-			// Mozilla custom key handling
-			if (!tinyMCE.isMSIE && e.ctrlKey && tinyMCE.settings['custom_undo_redo']) {
-				if (e.charCode == 120 || e.charCode == 118) { // Ctrl+X, Ctrl+V
-					tinyMCE.selectedInstance.execCommand("mceAddUndoLevel");
-					return;
+		// Trigger node change, this call locks buttons for tables and so forth
+		inst.select();
+		tinyMCE.selectedElement = inst.contentWindow.document.body;
+
+		// Call custom DOM cleanup
+		tinyMCE._customCleanup(inst, "insert_to_editor_dom", inst.getBody());
+		tinyMCE._customCleanup(inst, "setup_content_dom", inst.getBody());
+		tinyMCE._setEventsEnabled(inst.getBody(), false);
+		tinyMCE.cleanupAnchors(inst.getDoc());
+
+		if (tinyMCE.getParam("convert_fonts_to_spans"))
+			tinyMCE.convertSpansToFonts(inst.getDoc());
+
+		inst.startContent = tinyMCE.trim(inst.getBody().innerHTML);
+		inst.undoRedo.add({ content : inst.startContent });
+
+		// Cleanup any mess left from storyAwayURLs
+		if (tinyMCE.isGecko) {
+			// Remove mce_src from textnodes and comments
+			tinyMCE.selectNodes(inst.getBody(), function(n) {
+				if (n.nodeType == 3 || n.nodeType == 8)
+					n.nodeValue = n.nodeValue.replace(new RegExp('\\s(mce_src|mce_href)=\"[^\"]*\"', 'gi'), "");
+
+				return false;
+			});
+		}
+
+		// Remove Gecko spellchecking
+		if (tinyMCE.isGecko)
+			inst.getBody().spellcheck = tinyMCE.getParam("gecko_spellcheck");
+
+		// Cleanup any mess left from storyAwayURLs
+		tinyMCE._removeInternal(inst.getBody());
+
+		inst.select();
+		tinyMCE.triggerNodeChange(false, true);
+	},
+
+	storeAwayURLs : function(s) {
+		// Remove all mce_src, mce_href and replace them with new ones
+	//	s = s.replace(new RegExp('mce_src\\s*=\\s*\"[^ >\"]*\"', 'gi'), '');
+	//	s = s.replace(new RegExp('mce_href\\s*=\\s*\"[^ >\"]*\"', 'gi'), '');
+
+		if (!s.match(/(mce_src|mce_href)/gi, s)) {
+			s = s.replace(new RegExp('src\\s*=\\s*\"([^ >\"]*)\"', 'gi'), 'src="$1" mce_src="$1"');
+			s = s.replace(new RegExp('href\\s*=\\s*\"([^ >\"]*)\"', 'gi'), 'href="$1" mce_href="$1"');
+		}
+
+		return s;
+	},
+
+	_removeInternal : function(n) {
+		if (tinyMCE.isGecko) {
+			// Remove mce_src from textnodes and comments
+			tinyMCE.selectNodes(n, function(n) {
+				if (n.nodeType == 3 || n.nodeType == 8)
+					n.nodeValue = n.nodeValue.replace(new RegExp('\\s(mce_src|mce_href)=\"[^\"]*\"', 'gi'), "");
+
+				return false;
+			});
+		}
+	},
+
+	handleEvent : function(e) {
+		var inst = tinyMCE.selectedInstance;
+
+		// Remove odd, error
+		if (typeof(tinyMCE) == "undefined")
+			return true;
+
+		//tinyMCE.debug(e.type + " " + e.target.nodeName + " " + (e.relatedTarget ? e.relatedTarget.nodeName : ""));
+
+		if (tinyMCE.executeCallback(tinyMCE.selectedInstance, 'handle_event_callback', 'handleEvent', e))
+			return false;
+
+		switch (e.type) {
+			case "beforedeactivate": // Was added due to bug #1439953
+			case "blur":
+				if (tinyMCE.selectedInstance)
+					tinyMCE.selectedInstance.execCommand('mceEndTyping');
+
+				tinyMCE.hideMenus();
+
+				return;
+
+			// Workaround for drag drop/copy paste base href bug
+			case "drop":
+			case "beforepaste":
+				if (tinyMCE.selectedInstance)
+					tinyMCE.selectedInstance.setBaseHREF(null);
+
+				// Fixes odd MSIE bug where drag/droping elements in a iframe with height 100% breaks
+				// This logic forces the width/height to be in pixels while the user is drag/dropping
+				if (tinyMCE.isRealIE) {
+					var ife = tinyMCE.selectedInstance.iframeElement;
+
+					/*if (ife.style.width.indexOf('%') != -1) {
+						ife._oldWidth = ife.width.height;
+						ife.style.width = ife.clientWidth;
+					}*/
+
+					if (ife.style.height.indexOf('%') != -1) {
+						ife._oldHeight = ife.style.height;
+						ife.style.height = ife.clientHeight;
+					}
 				}
 
-				if (tinyMCE.settings['custom_undo_redo_keyboard_shortcuts']) {
-					if (e.charCode == 122) { // Ctrl+Z
-						tinyMCE.selectedInstance.execCommand("Undo");
+				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();
+
+				// Insert P element
+				if ((tinyMCE.isGecko || tinyMCE.isOpera || tinyMCE.isSafari) && tinyMCE.settings['force_p_newlines'] && e.keyCode == 13 && !e.shiftKey) {
+					// Insert P element instead of BR
+					if (TinyMCE_ForceParagraphs._insertPara(tinyMCE.selectedInstance, e)) {
 						// Cancel event
-						e.preventDefault();
-						return false;
+						tinyMCE.execCommand("mceAddUndoLevel");
+						return tinyMCE.cancelEvent(e);
 					}
+				}
 
-					if (e.charCode == 121) { // Ctrl+Y
-						tinyMCE.selectedInstance.execCommand("Redo");
+				// Handle backspace
+				if ((tinyMCE.isGecko && !tinyMCE.isSafari) && tinyMCE.settings['force_p_newlines'] && (e.keyCode == 8 || e.keyCode == 46) && !e.shiftKey) {
+					// Insert P element instead of BR
+					if (TinyMCE_ForceParagraphs._handleBackSpace(tinyMCE.selectedInstance, e.type)) {
+						// Cancel event
+						tinyMCE.execCommand("mceAddUndoLevel");
+						return tinyMCE.cancelEvent(e);
+					}
+				}
 
+				// Return key pressed
+				if (tinyMCE.isIE && tinyMCE.settings['force_br_newlines'] && e.keyCode == 13) {
+					if (e.target.editorId)
+						tinyMCE.instances[e.target.editorId].select();
+
+					if (tinyMCE.selectedInstance) {
+						var sel = tinyMCE.selectedInstance.getDoc().selection;
+						var rng = sel.createRange();
+
+						if (tinyMCE.getParentElement(rng.parentElement(), "li") != null)
+							return false;
+
 						// Cancel event
-						e.preventDefault();
+						e.returnValue = false;
+						e.cancelBubble = true;
+
+						// Insert BR element
+						rng.pasteHTML("<br />");
+						rng.collapse(false);
+						rng.select();
+
+						tinyMCE.execCommand("mceAddUndoLevel");
+						tinyMCE.triggerNodeChange(false);
 						return false;
 					}
 				}
 
-				if (e.charCode == 98) { // Ctrl+B
-					tinyMCE.selectedInstance.execCommand("Bold");
+				// Backspace or delete
+				if (e.keyCode == 8 || e.keyCode == 46) {
+					tinyMCE.selectedElement = e.target;
+					tinyMCE.linkElement = tinyMCE.getParentElement(e.target, "a");
+					tinyMCE.imgElement = tinyMCE.getParentElement(e.target, "img");
+					tinyMCE.triggerNodeChange(false);
+				}
 
-					// Cancel event
-					e.preventDefault();
+				return false;
+			break;
+
+			case "keyup":
+			case "keydown":
+				tinyMCE.hideMenus();
+				tinyMCE.hasMouseMoved = false;
+
+				if (inst && inst.handleShortcut(e))
 					return false;
-				}
 
-				if (e.charCode == 105) { // Ctrl+I
-					tinyMCE.selectedInstance.execCommand("Italic");
+				if (e.target.editorId)
+					tinyMCE.instances[e.target.editorId].select();
 
-					// Cancel event
-					e.preventDefault();
-					return false;
+				if (tinyMCE.selectedInstance)
+					tinyMCE.selectedInstance.switchSettings();
+
+				var inst = tinyMCE.selectedInstance;
+
+				// Handle backspace
+				if (tinyMCE.isGecko && tinyMCE.settings['force_p_newlines'] && (e.keyCode == 8 || e.keyCode == 46) && !e.shiftKey) {
+					// Insert P element instead of BR
+					if (TinyMCE_ForceParagraphs._handleBackSpace(tinyMCE.selectedInstance, e.type)) {
+						// Cancel event
+						tinyMCE.execCommand("mceAddUndoLevel");
+						e.preventDefault();
+						return false;
+					}
 				}
 
-				if (e.charCode == 117) { // Ctrl+U
-					tinyMCE.selectedInstance.execCommand("Underline");
+				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;
 
-					// Cancel event
-					e.preventDefault();
-					return false;
+				// Update visualaids on tabs
+				if (tinyMCE.isGecko && e.type == "keyup" && e.keyCode == 9)
+					tinyMCE.handleVisualAid(tinyMCE.selectedInstance.getBody(), true, tinyMCE.settings['visual'], tinyMCE.selectedInstance);
+
+				// Fix empty elements on return/enter, check where enter occured
+				if (tinyMCE.isIE && e.type == "keydown" && e.keyCode == 13)
+					tinyMCE.enterKeyElement = tinyMCE.selectedInstance.getFocusElement();
+
+				// Fix empty elements on return/enter
+				if (tinyMCE.isIE && e.type == "keyup" && e.keyCode == 13) {
+					var elm = tinyMCE.enterKeyElement;
+					if (elm) {
+						var re = new RegExp('^HR|IMG|BR$','g'); // Skip these
+						var dre = new RegExp('^H[1-6]$','g'); // Add double on these
+
+						if (!elm.hasChildNodes() && !re.test(elm.nodeName)) {
+							if (dre.test(elm.nodeName))
+								elm.innerHTML = "&nbsp;&nbsp;";
+							else
+								elm.innerHTML = "&nbsp;";
+						}
+					}
 				}
-			}
 
-			if (tinyMCE.settings['custom_undo_redo']) {
-				// Check if it's a position key press
-				var keys = new Array(13,45,36,35,33,34,37,38,39,40);
+				// Check if it's a position key
+				var keys = tinyMCE.posKeyCodes;
 				var posKey = false;
 				for (var i=0; i<keys.length; i++) {
 					if (keys[i] == e.keyCode) {
-						tinyMCE.selectedInstance.typing = false;
 						posKey = true;
 						break;
 					}
 				}
 
-				// Add typing undo level
-				if (!tinyMCE.selectedInstance.typing && !posKey) {
-					tinyMCE.selectedInstance.execCommand("mceAddUndoLevel");
-					tinyMCE.selectedInstance.typing = true;
+				// MSIE custom key handling
+				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")
+								tinyMCE.triggerNodeChange(false);
+						}
+					}
 				}
-			}
 
-			//window.status = e.keyCode;
-			//window.status = e.type + " " + e.target.nodeName;
+				// If Ctrl key
+				if (e.keyCode == 17)
+					return true;
 
-			// Return key pressed
-			if (tinyMCE.isMSIE && tinyMCE.settings['force_br_newlines'] && e.keyCode == 13) {
-				if (e.target.editorId)
-					tinyMCE.selectedInstance = tinyMCE.instances[e.target.editorId];
+				// Handle Undo/Redo when typing content
 
+				if (tinyMCE.isGecko) {
+					// Start typing (not a position key or ctrl key, but ctrl+x and ctrl+p is ok)
+					if (!posKey && e.type == "keyup" && !e.ctrlKey || (e.ctrlKey && (e.keyCode == 86 || e.keyCode == 88)))
+						tinyMCE.execCommand("mceStartTyping");
+				} else {
+					// IE seems to be working better with this setting
+					if (!posKey && e.type == "keyup")
+						tinyMCE.execCommand("mceStartTyping");
+				}
+
+				// Store undo bookmark
+				if (e.type == "keydown" && (posKey || e.ctrlKey) && inst)
+					inst.undoBookmark = inst.selection.getBookmark();
+
+				// End typing (position key) or some Ctrl event
+				if (e.type == "keyup" && (posKey || e.ctrlKey))
+					tinyMCE.execCommand("mceEndTyping");
+
+				if (posKey && e.type == "keyup")
+					tinyMCE.triggerNodeChange(false);
+
+				if (tinyMCE.isIE && e.ctrlKey)
+					window.setTimeout('tinyMCE.triggerNodeChange(false);', 1);
+			break;
+
+			case "mousedown":
+			case "mouseup":
+			case "click":
+			case "dblclick":
+			case "focus":
+				tinyMCE.hideMenus();
+
 				if (tinyMCE.selectedInstance) {
-					var sel = tinyMCE.selectedInstance.contentWindow.document.selection;
-					var rng = sel.createRange();
+					tinyMCE.selectedInstance.switchSettings();
+					tinyMCE.selectedInstance.isFocused = true;
+				}
 
-					if (tinyMCE.getParentElement(rng.parentElement(), "li") != null)
-						return false;
+				// Check instance event trigged on
+				var targetBody = tinyMCE.getParentElement(e.target, "html");
+				for (var instanceName in tinyMCE.instances) {
+					if (!tinyMCE.isInstance(tinyMCE.instances[instanceName]))
+						continue;
 
-					if (tinyMCE.getParentElement(rng.parentElement(), "div") == null)
-						return false;
+					var inst = tinyMCE.instances[instanceName];
 
-					// Cancel event
-					e.returnValue = false;
-					e.cancelBubble = true;
+					// Reset design mode if lost (on everything just in case)
+					inst.autoResetDesignMode();
 
-					// Insert BR element
-					rng.pasteHTML("<br>");
-					rng.collapse(false);
-					rng.select();
+					// Use HTML element since users might click outside of body element
+					if (inst.getBody().parentNode == targetBody) {
+						inst.select();
+						tinyMCE.selectedElement = e.target;
+						tinyMCE.linkElement = tinyMCE.getParentElement(tinyMCE.selectedElement, "a");
+						tinyMCE.imgElement = tinyMCE.getParentElement(tinyMCE.selectedElement, "img");
+						break;
+					}
 				}
-			}
 
-			// Backspace or delete
-			if (e.keyCode == 8 || e.keyCode == 46) {
-				tinyMCE.selectedElement = e.target;
-				tinyMCE.linkElement = tinyMCE.getParentElement(e.target, "a");
-				tinyMCE.imgElement = tinyMCE.getParentElement(e.target, "img");
+				// Add first bookmark location
+				if (!tinyMCE.selectedInstance.undoRedo.undoLevels[0].bookmark && (e.type == "mouseup" || e.type == "dblclick"))
+					tinyMCE.selectedInstance.undoRedo.undoLevels[0].bookmark = tinyMCE.selectedInstance.selection.getBookmark();
+
+				// Reset selected node
+				if (e.type != "focus")
+					tinyMCE.selectedNode = null;
+
 				tinyMCE.triggerNodeChange(false);
-			}
+				tinyMCE.execCommand("mceEndTyping");
 
-			return false;
-		break;
+				if (e.type == "mouseup")
+					tinyMCE.execCommand("mceAddUndoLevel");
 
-		case "keyup":
-		case "keydown":
-			if (e.target.editorId)
-				tinyMCE.selectedInstance = tinyMCE.instances[e.target.editorId];
+				// Just in case
+				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 += ');';
+
+		// Patch for IE7 bug with hover out not restoring correctly
+		if (tinyMCE.isRealIE)
+			io = 'onmouseover="tinyMCE.lastHover = this;"';
+
+		// Use tilemaps when enabled and found and never in MSIE since it loads the tile each time from cache if cahce is disabled
+		if (tinyMCE.getParam('button_tile_map') && (!tinyMCE.isIE || tinyMCE.isOpera) && (m = this.buttonMap[id]) != null && (tinyMCE.getParam("language") == "en" || img.indexOf('$lang') == -1)) {
+			// Tiled button
+			x = 0 - (m * 20) == 0 ? '0' : 0 - (m * 20);
+			h += '<a id="{$editor_id}_' + id + '" href="javascript:' + cmd + '" onclick="' + cmd + 'return false;" onmousedown="return false;" ' + io + ' class="mceTiledButton mceButtonNormal" target="_self">';
+			h += '<img src="{$themeurl}/images/spacer.gif" style="background-position: ' + x + 'px 0" title="{$' + lang + '}" />';
+			h += '</a>';
+		} else {
+			// Normal button
+			h += '<a id="{$editor_id}_' + id + '" href="javascript:' + cmd + '" onclick="' + cmd + 'return false;" onmousedown="return false;" ' + io + ' class="mceButtonNormal" target="_self">';
+			h += '<img src="' + img + '" 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
-				return;
+				h += '<span id="{$editor_id}_' + id + '" class="mceMenuButton">';
 
-			tinyMCE.selectedElement = null;
-			var elm = tinyMCE.selectedInstance.getFocusElement();
-			tinyMCE.linkElement = tinyMCE.getParentElement(elm, "a");
-			tinyMCE.imgElement = tinyMCE.getParentElement(elm, "img");
-			tinyMCE.selectedElement = elm;
+			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">';
 
-			// MSIE custom key handling
-			if (tinyMCE.isMSIE && tinyMCE.settings['custom_undo_redo']) {
-				// Check if it's a position key press
-				var keys = new Array(13,45,36,35,33,34,37,38,39,40);
-				var posKey = false;
-				for (var i=0; i<keys.length; i++) {
-					if (keys[i] == e.keyCode) {
-						tinyMCE.selectedInstance.typing = false;
-						posKey = true;
-						break;
-					}
-				}
+			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>';
+		}
 
-				// Add typing undo level (unless pos keys or shift, alt, ctrl, capslock)
-				if (!tinyMCE.selectedInstance.typing && !posKey && (e.keyCode < 16 || e.keyCode > 18 && e.keyCode != 255)) {
-					tinyMCE.selectedInstance.execCommand("mceAddUndoLevel");
-					tinyMCE.selectedInstance.typing = true;
-					tinyMCE.triggerNodeChange(false);
-				}
+		return h;
+	},
 
-				if (posKey && e.type == "keyup")
-					tinyMCE.triggerNodeChange(false);
+	_menuButtonEvent : function(e, o) {
+		if (o.className == 'mceMenuButtonFocus')
+			return;
 
-				var ctrlKeys = new Array(66,73,85,86,88); // B/I/U/V/X
-				var keys = new Array(8,46); // Backspace,Delete
-				for (var i=0; i<keys.length; i++) {
-					if ((ctrlKeys[i] == e.keyCode && e.ctrlKey) || keys[i] == e.keyCode) {
-						tinyMCE.selectedInstance.execCommand("mceAddUndoLevel");
-						tinyMCE.triggerNodeChange(false);
-						return true;
+		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;
+
+		// Wait for everything to be loaded first
+		if (tinyMCE.settings.strict_loading_mode && this.loadingIndex != -1) {
+			window.setTimeout('tinyMCE.onLoad();', 1);
+			return;
+		}
+
+		if (tinyMCE.isRealIE && window.event.type == "readystatechange" && document.readyState != "complete")
+			return true;
+
+		if (tinyMCE.isLoaded)
+			return true;
+
+		tinyMCE.isLoaded = true;
+
+		// IE produces JS error if TinyMCE is placed in a frame
+		// It seems to have something to do with the selection not beeing
+		// correctly initialized in IE so this hack solves the problem
+		if (tinyMCE.isRealIE && document.body) {
+			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();
+
+			// Add submit triggers
+			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; // Do it only once
+
+					// Patch the form.submit function
+					if (tinyMCE.settings['submit_patch']) {
+						try {
+							form.mceOldSubmit = form.submit;
+							form.submit = TinyMCE_Engine.prototype.submitPatch;
+						} catch (e) {
+							// Do nothing
+						}
 					}
 				}
+			}
 
-				if (tinyMCE.settings['custom_undo_redo_keyboard_shortcuts']) {
-					if (e.keyCode == 90 && e.ctrlKey && e.type == "keydown") { // Ctrl+Z
-						tinyMCE.selectedInstance.execCommand("Undo");
-						tinyMCE.triggerNodeChange(false);
+			// Add editor instances based on mode
+			var mode = tinyMCE.settings['mode'];
+			switch (mode) {
+				case "exact":
+					var elements = tinyMCE.getParam('elements', '', true, ',');
 
-						// Cancel event
-						e.returnValue = false;
-						e.cancelBubble = true;
-						return false;
+					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;
 
-					if (e.keyCode == 89 && e.ctrlKey && e.type == "keydown") { // Ctrl+Y
-						tinyMCE.selectedInstance.execCommand("Redo");
-						tinyMCE.triggerNodeChange(false);
+				case "specific_textareas":
+				case "textareas":
+					var nodeList = document.getElementsByTagName("textarea");
 
-						// Cancel event
-						e.returnValue = false;
-						e.cancelBubble = true;
-						return false;
+					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;
 			}
 
-			// Trigger some nodechange on keyup
-			if (e.type == "keyup")
-				tinyMCE.triggerNodeChange();
-		break;
+			for (var i=0; i<elementRefAr.length; i++) {
+				var element = elementRefAr[i];
+				var elementId = element.name ? element.name : element.id;
 
-		case "mousedown":
-		case "mouseup":
-		case "click":
-		case "focus":
-			// Check instance event trigged on
-			var targetBody = tinyMCE.getParentElement(e.target, "body");
-			for (var instanceName in tinyMCE.instances) {
-				var instance = tinyMCE.instances[instanceName];
-				if (instance.contentWindow.document.body == targetBody) {
-					tinyMCE.selectedInstance = instance;
-					tinyMCE.selectedElement = e.target;
-					tinyMCE.linkElement = tinyMCE.getParentElement(tinyMCE.selectedElement, "a");
-					tinyMCE.imgElement = tinyMCE.getParentElement(tinyMCE.selectedElement, "img");
+				if (tinyMCE.settings['ask'] || tinyMCE.settings['convert_on_click']) {
+					// Focus breaks in Mozilla
+					if (tinyMCE.isGecko) {
+						var settings = tinyMCE.settings;
 
-					// Reset design mode if lost
-					instance.autoResetDesignMode();
+						tinyMCE.addEvent(element, "focus", function (e) {window.setTimeout(function() {TinyMCE_Engine.prototype.confirmAdd(e, settings);}, 10);});
 
-					// Reset typing
-					tinyMCE.selectedInstance.typing = false;
-					break;
-				}
+						if (element.nodeName != "TEXTAREA" && element.nodeName != "INPUT")
+							tinyMCE.addEvent(element, "click", function (e) {window.setTimeout(function() {TinyMCE_Engine.prototype.confirmAdd(e, settings);}, 10);});
+						// tinyMCE.addEvent(element, "mouseover", function (e) {window.setTimeout(function() {TinyMCE_Engine.prototype.confirmAdd(e, settings);}, 10);});
+					} else {
+						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); });
+						// tinyMCE.addEvent(element, "mouseenter", function () { TinyMCE_Engine.prototype.confirmAdd(null, settings); });
+					}
+				} else
+					tinyMCE.addMCEControl(element, elementId);
 			}
 
-			tinyMCE.triggerNodeChange(false);
+			// Handle auto focus
+			if (tinyMCE.settings['auto_focus']) {
+				window.setTimeout(function () {
+					var inst = tinyMCE.getInstanceById(tinyMCE.settings['auto_focus']);
+					inst.selection.selectNode(inst.getBody(), true, true);
+					inst.contentWindow.focus();
+				}, 100);
+			}
 
-			// Just in case
-			if (!tinyMCE.selectedInstance && e.target.editorId)
-				tinyMCE.selectedInstance = tinyMCE.instances[e.target.editorId];
+			tinyMCE.dispatchCallback(null, 'oninit', 'onInit');
+		}
+	},
 
-			// Was it alt click on link
-			if (e.target.nodeName.toLowerCase() == "a" && e.type == "click" && e.altKey) {
-				var evalCode = "" + tinyMCE.cleanupEventStr(e.target.getAttribute("mce_onclick"));
+	isInstance : function(o) {
+		return o != null && typeof(o) == "object" && o.isTinyMCE_Control;
+	},
 
-				// Remove any return too
-				eval(evalCode.replace('return false;', ''));
+	getParam : function(name, default_value, strip_whitespace, split_chr) {
+		var value = (typeof(this.settings[name]) == "undefined") ? default_value : this.settings[name];
+
+		// Fix bool values
+		if (value == "true" || value == "false")
+			return (value == "true");
+
+		if (strip_whitespace)
+			value = tinyMCE.regexpReplace(value, "[ \t\r\n]", "");
+
+		if (typeof(split_chr) != "undefined" && split_chr != null) {
+			value = value.split(split_chr);
+			var outArray = new Array();
+
+			for (var i=0; i<value.length; i++) {
+				if (value[i] && value[i] != "")
+					outArray[outArray.length] = value[i];
 			}
 
-			return false;
-		break;
-    } // end switch
-} // end function
+			value = outArray;
+		}
 
-function TinyMCE_switchClass(element, class_name, lock_state) {
-	var lockChanged = false;
+		return value;
+	},
 
-	if (typeof(lock_state) != "undefined" && element != null) {
-		element.classLock = lock_state;
-		lockChanged = true;
-	}
+	getLang : function(name, default_value, parse_entities, va) {
+		var v = (typeof(tinyMCELang[name]) == "undefined") ? default_value : tinyMCELang[name], n;
 
-	if (element != null && (lockChanged || !element.classLock)) {
-		element.oldClassName = element.className;
-		element.className = class_name;
-	}
-}
+		if (parse_entities)
+			v = tinyMCE.entityDecode(v);
 
-function TinyMCE_restoreAndSwitchClass(element, class_name) {
-	if (element != null && !element.classLock) {
-		this.restoreClass(element);
-		this.switchClass(element, class_name);
-	}
-}
+		if (va) {
+			for (n in va)
+				v = this.replaceVar(v, n, va[n]);
+		}
 
-function TinyMCE_switchClassSticky(element_name, class_name, lock_state) {
-	var element, lockChanged = false;
+		return v;
+	},
 
-	// Performance issue
-	if (!this.stickyClassesLookup[element_name])
-		this.stickyClassesLookup[element_name] = document.getElementById(element_name);
+	entityDecode : function(s) {
+		var e = document.createElement("div");
 
-//	element = document.getElementById(element_name);
-	element = this.stickyClassesLookup[element_name];
+		e.innerHTML = s;
 
-	if (typeof(lock_state) != "undefined" && element != null) {
-		element.classLock = lock_state;
-		lockChanged = true;
-	}
+		return e.firstChild.nodeValue;
+	},
 
-	if (element != null && (lockChanged || !element.classLock)) {
-		element.className = class_name;
-		element.oldClassName = class_name;
-	}
-}
+	addToLang : function(prefix, ar) {
+		for (var key in ar) {
+			if (typeof(ar[key]) == 'function')
+				continue;
 
-function TinyMCE_restoreClass(element) {
-	if (element != null && element.oldClassName && !element.classLock) {
-		element.className = element.oldClassName;
-		element.oldClassName = null;
-	}
-}
+			tinyMCELang[(key.indexOf('lang_') == -1 ? 'lang_' : '') + (prefix != '' ? (prefix + "_") : '') + key] = ar[key];
+		}
 
-function TinyMCE_setClassLock(element, lock_state) {
-	if (element != null)
-		element.classLock = lock_state;
-}
+		this.loadNextScript();
 
-function TinyMCE_onLoad() {
-	// Add submit triggers
-	if (tinyMCE.isMSIE) {
-		if (document.forms && tinyMCE.settings['add_form_submit_trigger']) {
-			for (var i=0; i<document.forms.length; i++) {
-				document.forms[i].attachEvent("onsubmit", TinyMCE_handleEvent);
-				document.forms[i].attachEvent("onreset", TinyMCE_handleEvent);
+	//	for (var key in ar)
+	//		tinyMCELang[(key.indexOf('lang_') == -1 ? 'lang_' : '') + (prefix != '' ? (prefix + "_") : '') + key] = "|" + ar[key] + "|";
+	},
+
+	triggerNodeChange : function(focus, setup_content) {
+		if (tinyMCE.selectedInstance) {
+			var inst = tinyMCE.selectedInstance;
+			var editorId = inst.editorId;
+			var elm = (typeof(setup_content) != "undefined" && setup_content) ? tinyMCE.selectedElement : inst.getFocusElement();
+			var undoIndex = -1, 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);
 		}
-	} else {
-		if (document.forms && tinyMCE.settings['add_form_submit_trigger']) {
-			for (var i=0; i<document.forms.length; i++) {
-				document.forms[i].addEventListener("submit", TinyMCE_handleEvent, false);
-				document.forms[i].addEventListener("reset", TinyMCE_handleEvent, false);
-			}
+
+		if (this.selectedInstance && (typeof(focus) == "undefined" || focus))
+			this.selectedInstance.contentWindow.focus();
+	},
+
+	_customCleanup : function(inst, type, content) {
+		var pl, po, i;
+
+		// Call custom cleanup
+		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;
+		for (i=0; i<pl.length; i++) {
+			po = tinyMCE.plugins[pl[i]];
+
+			if (po && po.cleanup)
+				content = po.cleanup(type, content, inst);
 		}
-	}
 
-	// Add editor instances based on mode
-	switch (tinyMCE.settings['mode']) {
-		case "exact":
-			var elements = tinyMCE.getParam('elements', '', true, ',');
+		return content;
+	},
 
-			for (var i=0; i<elements.length; i++) {
-				var element = tinyMCE._getElementById(elements[i]);
+	setContent : function(h) {
+		if (tinyMCE.selectedInstance) {
+			tinyMCE.selectedInstance.execCommand('mceSetContent', false, h);
+			tinyMCE.selectedInstance.repaint();
+		}
+	},
 
-				if (element)
-					tinyMCE.addMCEControl(element, elements[i], tinyMCE.createMCEControl(tinyMCE.settings));
-				else
-					alert("Error: Could not find element by id or name: " + elements[i]);
-			}
-		break;
+	importThemeLanguagePack : function(name) {
+		if (typeof(name) == "undefined")
+			name = tinyMCE.settings['theme'];
 
-		case "specific_textareas":
-		case "textareas":
-			var nodeList = document.getElementsByTagName("textarea");
-			var elementRefAr = new Array();
+		tinyMCE.loadScript(tinyMCE.baseURL + '/themes/' + name + '/langs/' + tinyMCE.settings['language'] + '.js');
+	},
 
-			for (var i=0; i<nodeList.length; i++) {
-				if (tinyMCE.settings['mode'] != "specific_textareas" || nodeList.item(i).getAttribute(tinyMCE.settings['textarea_trigger']) == "true")
-					elementRefAr[elementRefAr.length] = nodeList.item(i);
+	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;
+
+		// Add to height in M$ due to SP2 WHY DON'T YOU GUYS IMPLEMENT innerWidth of windows!!
+		if (tinyMCE.isIE)
+			height += 40;
+		else
+			height += 20;
+
+		x = parseInt(screen.width / 2.0) - (width / 2.0);
+		y = parseInt(screen.height / 2.0) - (height / 2.0);
+
+		resizable = (args && args['resizable']) ? args['resizable'] : "no";
+		scrollbars = (args && args['scrollbars']) ? args['scrollbars'] : "no";
+
+		if (template['file'].charAt(0) != '/' && template['file'].indexOf('://') == -1)
+			url = tinyMCE.baseURL + "/themes/" + tinyMCE.getParam("theme") + "/" + template['file'];
+		else
+			url = template['file'];
+
+		// Replace all args as variables in URL
+		for (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;
 			}
 
-			for (var i=0; i<elementRefAr.length; i++) {
-				var element = elementRefAr[i];
-				var elementId = element.name ? element.name : element.id;
+			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;
 
-				if (tinyMCE.settings['ask']) {
-					if (tinyMCE.isMSIE)
-						element.attachEvent("onmousedown", TinyMCE_confirmAdd);
-					else
-						element.addEventListener("mousedown", TinyMCE_confirmAdd, false);
-				} else
-					tinyMCE.addMCEControl(element, elementId, tinyMCE.createMCEControl(tinyMCE.settings));
+				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) { }');
+
+				// Make it bigger if statusbar is forced
+				if (tinyMCE.isGecko) {
+					if (win.document.defaultView.statusbar.visible)
+						win.resizeBy(0, tinyMCE.isMac ? 10 : 24);
+				}
+
+				win.focus();
 			}
-		break;
-	}
-}
+		}
+	},
 
-function TinyMCE_removeMCEControl(editor_id) {
-	var mceControl = tinyMCE._getInstanceById(editor_id);
-	if (mceControl) {
-		editor_id = mceControl.editorId;
-		var html = tinyMCE.getContent(editor_id);
+	closeWindow : function(win) {
+		win.close();
+	},
 
-		// Remove editor instance from instances array
-		var tmpInstances = new Array();
-		for (var instanceName in tinyMCE.instances) {
-			var instance = tinyMCE.instances[instanceName];
-			if (instanceName != editor_id)
-					tmpInstances[instanceName] = instance;
+	getVisualAidClass : function(class_name, state) {
+		var aidClass = tinyMCE.settings['visual_table_class'];
+
+		if (typeof(state) == "undefined")
+			state = tinyMCE.settings['visual'];
+
+		// Split
+		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];
 		}
-		tinyMCE.instances = tmpInstances;
 
-		tinyMCE.selectedElement = null;
-		tinyMCE.selectedInstance = null;
+		if (state)
+			classNames[classNames.length] = aidClass;
 
-		// Remove element
-		var replaceElement = document.getElementById(editor_id + "_parent");
-		var oldTargetElement = mceControl.oldTargetElement;
-		var targetName = oldTargetElement.nodeName.toLowerCase();
-		if (targetName == "textarea" || targetName == "input")
-			oldTargetElement.value = html;
-		else
-			oldTargetElement.innerHTML = html;
+		// Glue
+		var className = "";
+		for (var i=0; i<classNames.length; i++) {
+			if (i > 0)
+				className += " ";
 
-		replaceElement.parentNode.insertBefore(oldTargetElement, replaceElement);
-		replaceElement.parentNode.removeChild(replaceElement);
-	}
-}
+			className += classNames[i];
+		}
 
-function TinyMCE__cleanupElementName(element_name, element) {
-	element_name = element_name.toLowerCase();
+		return className;
+	},
 
-	// Never include body
-	if (element_name == "body")
-		return null;
+	handleVisualAid : function(el, deep, state, inst, skip_dispatch) {
+		if (!el)
+			return;
 
-	// If verification mode
-	if (tinyMCE.cleanup_verify_html) {
-		// Check if invalid element
-		for (var i=0; i<tinyMCE.cleanup_invalidElements.length; i++) {
-			if (tinyMCE.cleanup_invalidElements[i] == element_name)
-				return null;
+		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;
 		}
 
-		// Check if valid element
-		var validElement = false;
-		var elementAttribs = null;
-		for (var i=0; i<tinyMCE.cleanup_validElements.length && !elementAttribs; i++) {
-			for (var x=0; x<tinyMCE.cleanup_validElements[i][0].length; x++) {
-				var elmMatch = tinyMCE.cleanup_validElements[i][0][x];
+		if (deep && el.hasChildNodes()) {
+			for (var i=0; i<el.childNodes.length; i++)
+				tinyMCE.handleVisualAid(el.childNodes[i], deep, state, inst, true);
+		}
+	},
 
-				// Handle wildcard/regexp
-				if (elmMatch.match(new RegExp('\\*|\\?|\\+', 'g')) != null) {
-					elmMatch = elmMatch.replace(new RegExp('\\?', 'g'), '(\\S?)');
-					elmMatch = elmMatch.replace(new RegExp('\\+', 'g'), '(\\S+)');
-					elmMatch = elmMatch.replace(new RegExp('\\*', 'g'), '(\\S*)');
-					elmMatch = "^" + elmMatch + "$";
-					if (element_name.match(new RegExp(elmMatch, 'g'))) {
-						elementAttribs = tinyMCE.cleanup_validElements[i];
-						validElement = true;
+	/*
+	applyClassesToFonts : function(doc, size) {
+		var f = doc.getElementsByTagName("font");
+		for (var i=0; i<f.length; i++) {
+			var s = tinyMCE.getAttrib(f[i], "size");
+
+			if (s != "")
+				tinyMCE.setAttrib(f[i], 'class', "mceItemFont" + s);
+		}
+
+		if (typeof(size) != "undefined") {
+			var css = "";
+
+			for (var x=0; x<doc.styleSheets.length; x++) {
+				for (var i=0; i<doc.styleSheets[x].rules.length; i++) {
+					if (doc.styleSheets[x].rules[i].selectorText == '#mceSpanFonts .mceItemFont' + size) {
+						css = doc.styleSheets[x].rules[i].style.cssText;
 						break;
 					}
 				}
 
-				// Handle non regexp
-				if (element_name == elmMatch) {
-					elementAttribs = tinyMCE.cleanup_validElements[i];
-					validElement = true;
-					element_name = elementAttribs[0][0];
+				if (css != "")
 					break;
-				}
 			}
+
+			if (doc.styleSheets[0].rules[0].selectorText == "FONT")
+				doc.styleSheets[0].removeRule(0);
+
+			doc.styleSheets[0].addRule("FONT", css, 0);
 		}
+	},
+	*/
 
-		if (!validElement)
-			return null;
-	}
+	fixGeckoBaseHREFBug : function(m, e, h) {
+		var xsrc, xhref;
 
-	// Special Mozilla stuff
-	if (!tinyMCE.isMSIE) {
-		// Fix for bug #958498
-		if (element_name == "strong" && !tinyMCE.cleanup_on_save)
-			element_name = "b";
-		else if (element_name == "em" && !tinyMCE.cleanup_on_save)
-			element_name = "i";
-	}
+		if (tinyMCE.isGecko) {
+			if (m == 1) {
+				h = h.replace(/\ssrc=/gi, " mce_tsrc=");
+				h = h.replace(/\shref=/gi, " mce_thref=");
 
-	// Special MSIE stuff
-	if (tinyMCE.isMSIE) {
-		if (element_name == "table") {
-			var attribValue = element.style.pixelWidth == 0 ? element.getAttribute("width") : element.style.pixelWidth;
-			element.setAttribute("width", attribValue);
+				return h;
+			} else {
+				// Why bother if there is no src or href broken
+				if (!new RegExp('(src|href)=', 'g').test(h))
+					return h;
 
-			attribValue = element.style.pixelHeight == 0 ? element.getAttribute("height") : element.style.pixelHeight;
-			element.setAttribute("height", attribValue);
-		}
-	}
+				// 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");
 
-	var elmData = new Object();
+					if (xsrc != "") {
+						try {
+							n.src = tinyMCE.convertRelativeToAbsoluteURL(tinyMCE.settings['base_href'], xsrc);
+						} catch (e) {
+							// Ignore, Firefox cast exception if local file wasn't found
+						}
 
-	elmData.element_name = element_name;
-	elmData.valid_attribs = elementAttribs;
+						n.removeAttribute("mce_tsrc");
+					}
 
-	return elmData;
-}
+					if (xhref != "") {
+						try {
+							n.href = tinyMCE.convertRelativeToAbsoluteURL(tinyMCE.settings['base_href'], xhref);
+						} catch (e) {
+							// Ignore, Firefox cast exception if local file wasn't found
+						}
 
-/**
- * Converts some element attributes to inline styles.
- */
-function TinyMCE__fixInlineStyles(elm) {
-	// Handle non table elements
-	if (elm.nodeName.toLowerCase() != "table") {
-		var value;
+						n.removeAttribute("mce_thref");
+					}
 
-		// Setup width
-		value = tinyMCE.isMSIE ? elm.width : elm.getAttribute("width");
-		if (value && value != "") {
-			if (typeof(value) != "string" || !value.indexOf("%"))
-				value += "px";
+					return false;
+				});
 
-			elm.style.width = value;
+				// Restore text/comment nodes
+				tinyMCE.selectNodes(e, function(n) {
+					if (n.nodeType == 3 || n.nodeType == 8) {
+						n.nodeValue = n.nodeValue.replace(/\smce_tsrc=/gi, " src=");
+						n.nodeValue = n.nodeValue.replace(/\smce_thref=/gi, " href=");
+					}
+
+					return false;
+				});
+			}
 		}
 
-		// Setup height
-		value = tinyMCE.isMSIE ? elm.height : elm.getAttribute("height");
-		if (value && value != "") {
-			if (typeof(value) != "string" || !value.indexOf("%"))
-				value += "px";
+		return h;
+	},
 
-			elm.style.height = value;
+	_setHTML : function(doc, html_content) {
+		// Force closed anchors open
+		//html_content = html_content.replace(new RegExp('<a(.*?)/>', 'gi'), '<a$1></a>');
+
+		html_content = tinyMCE.cleanupHTMLCode(html_content);
+
+		// Try innerHTML if it fails use pasteHTML in MSIE
+		try {
+			tinyMCE.setInnerHTML(doc.body, html_content);
+		} catch (e) {
+			if (this.isMSIE)
+				doc.body.createTextRange().pasteHTML(html_content);
 		}
 
-		// Setup border
-		value = tinyMCE.isMSIE ? elm.border : elm.getAttribute("border");
-		if (value && value != "")
-			elm.style.borderWidth = value + "px";
-	}
+		// Content duplication bug fix
+		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 node = paras[i];
+				while ((node = node.parentNode) != null) {
+					if (node.nodeName == "P")
+						node.outerHTML = node.innerHTML;
+				}
+			}
 
-	// Setup align
-	value = elm.getAttribute("align");
-	if (value && value != "") {
-		if (elm.nodeName.toLowerCase() == "img") {
-			if (tinyMCE.isMSIE)
-				elm.style.styleFloat = value;
-			else
-				elm.style.cssFloat = value;
-		} else
-			elm.style.textAlign = value;
-	}
+			// Content duplication bug fix (Seems to be word crap)
+			var html = doc.body.innerHTML;
+/*
+			if (html.indexOf('="mso') != -1) {
+				for (var i=0; i<doc.body.all.length; i++) {
+					var el = doc.body.all[i];
+					el.removeAttribute("className","",0);
+					el.removeAttribute("style","",0);
+				}
 
-	// Setup vspace
-	value = elm.getAttribute("vspace");
-	if (value && value != "")
-		elm.style.marginTop = value + "px";
+				html = doc.body.innerHTML;
+				html = tinyMCE.regexpReplace(html, "<o:p><\/o:p>", "<br />");
+				html = tinyMCE.regexpReplace(html, "<o:p>&nbsp;<\/o:p>", "");
+				html = tinyMCE.regexpReplace(html, "<st1:.*?>", "");
+				html = tinyMCE.regexpReplace(html, "<p><\/p>", "");
+				html = tinyMCE.regexpReplace(html, "<p><\/p>\r\n<p><\/p>", "");
+				html = tinyMCE.regexpReplace(html, "<p>&nbsp;<\/p>", "<br />");
+				html = tinyMCE.regexpReplace(html, "<p>\s*(<p>\s*)?", "<p>");
+				html = tinyMCE.regexpReplace(html, "<\/p>\s*(<\/p>\s*)?", "</p>");
+			}*/
 
-	// Setup hspace
-	value = elm.getAttribute("hspace");
-	if (value && value != "")
-		elm.style.marginBottom = value + "px";
-}
+			// Always set the htmlText output
+			tinyMCE.setInnerHTML(doc.body, html);
+		}
 
-function TinyMCE__cleanupAttribute(valid_attributes, element_name, attribute_node, element_node) {
-	var attribName = attribute_node.nodeName.toLowerCase();
-	var attribValue = attribute_node.nodeValue;
-	var attribMustBeValue = null;
-	var verified = false;
+		tinyMCE.cleanupAnchors(doc);
 
-	// Inline styling, skip them
-	if (tinyMCE.cleanup_inline_styles && element_name != "table" && element_name != "td") {
-		if (attribName == "width" || attribName == "height" || attribName == "border" || attribName == "align" || attribName == "valign" || attribName == "hspace" || attribName == "vspace")
+		if (tinyMCE.getParam("convert_fonts_to_spans"))
+			tinyMCE.convertSpansToFonts(doc);
+	},
+
+	getEditorId : function(form_element) {
+		var inst = this.getInstanceById(form_element);
+		if (!inst)
 			return null;
-	}
 
-	// Mozilla attibute, remove them
-	if (attribName.indexOf('moz_') != -1)
+		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;
+	},
 
-	// Mozilla fix for drag-drop/copy/paste images
-	if (!tinyMCE.isMSIE && (attribName == "mce_real_href" || attribName == "mce_real_src")) {
-		if (!tinyMCE.cleanup_on_save) {
-			var attrib = new Object();
+	setWindowArg : function(n, v) {
+		this.windowArgs[n] = v;
+	},
 
-			attrib.name = attribName;
-			attrib.value = attribValue;
+	getWindowArg : function(n, d) {
+		return (typeof(this.windowArgs[n]) == "undefined") ? d : this.windowArgs[n];
+	},
 
-			return attrib;
-		} else
-			return null;
-	}
+	getCSSClasses : function(editor_id, doc) {
+		var output = new Array();
 
-	// Auto verify 
-	if (attribName == "mce_onclick")
-		verified = true;
+		// Is cached, use that
+		if (typeof(tinyMCE.cssClasses) != "undefined")
+			return tinyMCE.cssClasses;
 
-	// Verify attrib
-	if (tinyMCE.cleanup_verify_html && !verified) {
-		for (var i=1; i<valid_attributes.length; i++) {
-			var attribMatch = valid_attributes[i][0];
-			var re = null;
+		if (typeof(editor_id) == "undefined" && typeof(doc) == "undefined") {
+			var instance;
 
-			// Build regexp from wildcard
-			if (attribMatch.match(new RegExp('\\*|\\?|\\+', 'g')) != null) {
-				attribMatch = attribMatch.replace(new RegExp('\\?', 'g'), '(\\S?)');
-				attribMatch = attribMatch.replace(new RegExp('\\+', 'g'), '(\\S+)');
-				attribMatch = attribMatch.replace(new RegExp('\\*', 'g'), '(\\S*)');
-				attribMatch = "^" + attribMatch + "$";
-				re = new RegExp(attribMatch, 'g');
-			}
+			for (var instanceName in tinyMCE.instances) {
+				instance = tinyMCE.instances[instanceName];
+				if (!tinyMCE.isInstance(instance))
+					continue;
 
-			if ((re && attribName.match(re) != null) || attribName == attribMatch) {
-				verified = true;
-				attribMustBeValue = valid_attributes[i][3];
 				break;
 			}
+
+			doc = instance.getDoc();
 		}
 
-		
-		// Allways pass styles on table and td elements if visual_aid
-		if ((element_name == "table" || element_name == "td") && attribName == "style")
-			verified = true;
+		if (typeof(doc) == "undefined") {
+			var instance = tinyMCE.getInstanceById(editor_id);
+			doc = instance.getDoc();
+		}
 
-		if (!verified)
-			return false;
-	} else
-		verified = true;
+		if (doc) {
+			var styles = doc.styleSheets;
 
-	// Treat some attribs diffrent
-	switch (attribName) {
-		case "width":
-			// MSIE 5.5 issue
-			if (tinyMCE.isMSIE)
-				attribValue = element_node.width;
-			break;
+			if (styles && styles.length > 0) {
+				for (var x=0; x<styles.length; x++) {
+					var csses = null;
 
-		case "height":
-			// MSIE 5.5 issue
-			if (tinyMCE.isMSIE)
-				attribValue = element_node.height;
-			break;
+					// Just ignore any errors
+					eval("try {var csses = tinyMCE.isIE ? doc.styleSheets(" + x + ").rules : styles[" + x + "].cssRules;} catch(e) {}");
+					if (!csses)
+						return new Array();
 
-		case "border":
-			// MSIE 5.5 issue
-			if (tinyMCE.isMSIE)
-				attribValue = element_node.border;
-			break;
+					for (var i=0; i<csses.length; i++) {
+						var selectorText = csses[i].selectorText;
 
-		case "class":
-			if (!tinyMCE._verifyClass(element_node))
-				return null;
-			break;
+						// Can be multiple rules per selector
+						if (selectorText) {
+							var rules = selectorText.split(',');
+							for (var c=0; c<rules.length; c++) {
+								var rule = rules[c];
 
-		case "style":
-			if (element_name == "table" || element_name == "td") {
-				// Handle visual aid
-				if (tinyMCE.cleanup_visual_table_style != "") {
-					// Find parent table
-					var tableElement = element_node;
-					if (element_name == "td")
-						tableElement = tinyMCE.getParentElement(tableElement, "table");
+								// Strip spaces between selectors
+								while (rule.indexOf(' ') == 0)
+									rule = rule.substring(1);
 
-					if (tableElement && tableElement.getAttribute("border") == 0) {
-						if (tinyMCE.cleanup_visual_aid)
-							attribValue = tinyMCE.cleanup_visual_table_style;
-						else
-							return null;
+								// Invalid rule
+								if (rule.indexOf(' ') != -1 || rule.indexOf(':') != -1 || rule.indexOf('mceItem') != -1)
+									continue;
+
+								if (rule.indexOf(tinyMCE.settings['visual_table_class']) != -1 || rule.indexOf('mceEditable') != -1 || rule.indexOf('mceNonEditable') != -1)
+									continue;
+
+								// Is class rule
+								if (rule.indexOf('.') != -1) {
+									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;
+								}
+							}
+						}
 					}
 				}
-			} else
-				attribValue = element_node.style.cssText.toLowerCase();
+			}
+		}
 
-			// Compress borders some
-			if (tinyMCE.isMSIE) {
-				var border = element_node.style.border;
-				var bt = element_node.style.borderTop;
-				var bl = element_node.style.borderLeft;
-				var br = element_node.style.borderRight;
-				var bb = element_node.style.borderBottom;
+		// Cache em
+		if (output.length > 0)
+			tinyMCE.cssClasses = output;
 
-				// All the same
-				if (border != "" && (bt == border && bl == border && br == border && bb == border)) {
-					attribValue = tinyMCE.regexpReplace(attribValue, 'border-top: ' + border + '?; ?', '');
-					attribValue = tinyMCE.regexpReplace(attribValue, 'border-left: ' + border  + '?; ?', '');
-					attribValue = tinyMCE.regexpReplace(attribValue, 'border-right: ' + border  + '?; ?', '');
-					attribValue = tinyMCE.regexpReplace(attribValue, 'border-bottom: ' + border + '?;( ?)', 'border: ' + border + ';$1');
-				}
+		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, ''); // Remove event blocker
+
+		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;
 			}
-			break;
+		}
 
-		// Handle onclick
-		case "onclick":
-		case "mce_onclick":
-			// Skip on MSIE < 6+
-			if (tinyMCE.isMSIE5)
-				break;
+		l = tinyMCE.themes;
+		for (on in l) {
+			o = l[on];
 
-			// Fix onclick attrib
-			if (tinyMCE.cleanup_on_save) {
-				if (element_node.getAttribute("mce_onclick")) {
-					attribName = "onclick";
-					attribValue = "" + element_node.getAttribute("mce_onclick");
-				}
-			} else {
-				if (attribName == "onclick" && !tinyMCE.cleanup_on_save)
-					return null;
+			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 '&amp;';
+
+				case '"':
+					return '&quot;';
+
+				case '\'':
+					return '&#39;'; // &apos; is not working in MSIE
+
+				case '<':
+					return '&lt;';
+
+				case '>':
+					return '&gt;';
 			}
 
-			break;
+			return c;
+		}) : s;
+	},
 
-		// Convert the URLs of these
-		case "href":
-		case "src":
-			// Fix for dragdrop/copy paste Mozilla issue
-			if (!tinyMCE.isMSIE && attribName == "href" && element_node.getAttribute("mce_real_href"))
-				attribValue = element_node.getAttribute("mce_real_href");
+	extend : function(p, np) {
+		var o = {};
 
-			// Fix for dragdrop/copy paste Mozilla issue
-			if (!tinyMCE.isMSIE && attribName == "src" && element_node.getAttribute("mce_real_src"))
-				attribValue = element_node.getAttribute("mce_real_src");
+		o.parent = p;
 
-			attribValue = eval(tinyMCE.cleanup_urlconvertor_callback + "(attribValue, element_node, tinyMCE.cleanup_on_save);");
-			break;
+		for (n in p)
+			o[n] = p[n];
 
-		case "colspan":
-		case "rowspan":
-			// Not needed
-			if (attribValue == "1")
-				return null;
-			break;
+		for (n in np)
+			o[n] = np[n];
 
-		// Skip these
-		case "_moz-userdefined":
-		case "editorid":
-		case "editor_id":
-		case "mce_real_href":
-		case "mce_real_src":
-			return null;
+		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;
+		}
 	}
 
-	// Not the must be value
-	if (attribMustBeValue != null) {
-		var isCorrect = false;
-		for (var i=0; i<attribMustBeValue.length; i++) {
-			if (attribValue == attribMustBeValue[i]) {
-				isCorrect = true;
-				break;
-			}
+	};
+
+// Global instances
+var TinyMCE = TinyMCE_Engine; // Compatiblity with gzip compressors
+var tinyMCE = new TinyMCE_Engine();
+var tinyMCELang = {};
+
+/* file:jscripts/tiny_mce/classes/TinyMCE_Control.class.js */
+
+function TinyMCE_Control(settings) {
+	var t, i, to, fu, p, x, fn, fu, pn, s = settings;
+
+	this.undoRedoLevel = true;
+	this.isTinyMCE_Control = true;
+
+	// Default settings
+	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
+	});
+
+	// Wrap old theme
+	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;
 		}
 
-		if (!isCorrect)
-			return null;
+		tinyMCE.addTheme(t, to);
 	}
 
-	var attrib = new Object();
+	// Wrap old plugins
+	this.plugins = new Array();
+	p = tinyMCE.getParam('plugins', '', true, ',');
+	if (p.length > 0) {
+		for (i=0; i<p.length; i++) {
+			pn = p[i];
 
-	attrib.name = attribName;
-	attrib.value = attribValue;
+			if (pn.charAt(0) == '-')
+				pn = pn.substring(1);
 
-	return attrib;
-}
+			if (!tinyMCE.hasPlugin(pn)) {
+				fn = tinyMCE.callbacks;
+				to = {};
 
-function TinyMCE__verifyClass(node) {
-	var className = node.getAttribute('class');
+				for (x=0; x<fn.length; x++) {
+					if ((fu = window['TinyMCE_' + pn + "_" + fn[x]]))
+						to[fn[x]] = fu;
+				}
 
-	// Trim CSS class
-	if (tinyMCE.isMSIE)
-		var className = node.getAttribute('className');
+				tinyMCE.addPlugin(pn, to);
+			}
 
-	if (tinyMCE.cleanup_verify_css_classes && tinyMCE.cleanup_on_save) {
-		var csses = tinyMCE.getCSSClasses();
-		nonDefinedCSS = true;
-		for (var c=0; c<csses.length; c++) {
-			if (csses[c] == className) {
-				nonDefinedCSS = false;
-				break;
-			}
+			this.plugins[this.plugins.length] = pn; 
 		}
+	}
+};
 
-		if (nonDefinedCSS && className.indexOf('mce_') != 0) {
-			node.removeAttribute('className');
-			node.removeAttribute('class');
+TinyMCE_Control.prototype = {
+	selection : null,
+
+	settings : null,
+
+	cleanup : null,
+
+	getData : function(na) {
+		var o = this.data[na];
+
+		if (!o)
+			o = this.data[na] = {};
+
+		return o;
+	},
+
+	hasPlugin : function(n) {
+		var i;
+
+		for (i=0; i<this.plugins.length; i++) {
+			if (this.plugins[i] == n)
+				return true;
+		}
+
+		return false;
+	},
+
+	addPlugin : function(n, p) {
+		if (!this.hasPlugin(n)) {
+			tinyMCE.addPlugin(n, p);
+			this.plugins[this.plugins.length] = n;
+		}
+	},
+
+	repaint : function() {
+		var s, b, ex;
+
+		if (tinyMCE.isRealIE)
+			return;
+
+		try {
+			s = this.selection;
+			b = s.getBookmark(true);
+			this.getBody().style.display = 'none';
+			this.getDoc().execCommand('selectall', false, null);
+			this.getSel().collapseToStart();
+			this.getBody().style.display = 'block';
+			s.moveToBookmark(b);
+		} catch (ex) {
+			// Ignore
+		}
+	},
+
+	switchSettings : function() {
+		if (tinyMCE.configs.length > 1 && tinyMCE.currentConfig != this.settings['index']) {
+			tinyMCE.settings = this.settings;
+			tinyMCE.currentConfig = this.settings['index'];
+		}
+	},
+
+	select : function() {
+		var oldInst = tinyMCE.selectedInstance;
+
+		if (oldInst != this) {
+			if (oldInst)
+				oldInst.execCommand('mceEndTyping');
+
+			tinyMCE.dispatchCallback(this, 'select_instance_callback', 'selectInstance', this, oldInst);
+			tinyMCE.selectedInstance = this;
+		}
+	},
+
+	getBody : function() {
+		return this.contentBody ? this.contentBody : this.getDoc().body;
+	},
+
+	getDoc : function() {
+//		return this.contentDocument ? this.contentDocument : this.contentWindow.document; // Removed due to IE 5.5 ?
+		return this.contentWindow.document;
+	},
+
+	getWin : function() {
+		return this.contentWindow;
+	},
+
+	getContainerWin : function() {
+		return this.containerWindow ? this.containerWindow : window;
+	},
+
+	getViewPort : function() {
+		return tinyMCE.getViewPort(this.getWin());
+	},
+
+	getParentNode : function(n, f) {
+		return tinyMCE.getParentNode(n, f, this.getBody());
+	},
+
+	getParentElement : function(n, na, f) {
+		return tinyMCE.getParentElement(n, na, f, this.getBody());
+	},
+
+	getParentBlockElement : function(n) {
+		return tinyMCE.getParentBlockElement(n, this.getBody());
+	},
+
+	resizeToContent : function() {
+		var d = this.getDoc(), b = d.body, de = d.documentElement;
+
+		this.iframeElement.style.height = (tinyMCE.isRealIE) ? b.scrollHeight : de.offsetHeight + 'px';
+	},
+
+	addShortcut : function(m, k, d, cmd, ui, va) {
+		var n = typeof(k) == "number", ie = tinyMCE.isIE, c, sc, i, scl = this.shortcuts;
+
+		if (!tinyMCE.getParam('custom_shortcuts'))
 			return false;
+
+		m = m.toLowerCase();
+		k = ie && !n ? k.toUpperCase() : k;
+		c = n ? null : k.charCodeAt(0);
+		d = d && d.indexOf('lang_') == 0 ? tinyMCE.getLang(d) : d;
+
+		sc = {
+			alt : m.indexOf('alt') != -1,
+			ctrl : m.indexOf('ctrl') != -1,
+			shift : m.indexOf('shift') != -1,
+			charCode : c,
+			keyCode : n ? k : (ie ? c : null),
+			desc : d,
+			cmd : cmd,
+			ui : ui,
+			val : va
+		};
+
+		for (i=0; i<scl.length; i++) {
+			if (sc.alt == scl[i].alt && sc.ctrl == scl[i].ctrl && sc.shift == scl[i].shift
+				&& sc.charCode == scl[i].charCode && sc.keyCode == scl[i].keyCode) {
+				return false;
+			}
 		}
-	}
 
-	return true;
-}
+		scl[scl.length] = sc;
 
-function TinyMCE_cleanupNode(node) {
-	var output = "";
+		return true;
+	},
 
-	switch (node.nodeType) {
-		case 1: // Element
-			var elementData = tinyMCE._cleanupElementName(node.nodeName, node);
-			var elementName = elementData ? elementData.element_name : null;
-			var elementValidAttribs = elementData ? elementData.valid_attribs : null;
-			var elementAttribs = "";
+	handleShortcut : function(e) {
+		var i, s = this.shortcuts, o;
 
-			// Checking DOM tree for MSIE weirdness!!
-			if (tinyMCE.isMSIE && tinyMCE.settings['fix_content_duplication']) {
-				var lookup = tinyMCE.cleanup_elementLookupTable;
+		for (i=0; i<s.length; i++) {
+			o = s[i];
 
-				for (var i=0; i<lookup.length; i++) {
-					// Found element reference else were, hmm?
-					if (lookup[i] == node)
-						return output;
-				}
+			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);
 
-				// Add element to lookup table
-				lookup[lookup.length] = node;
+				tinyMCE.cancelEvent(e);
+				return true;
 			}
+		}
 
-			// Element not valid (only render children)
-			if (!elementName) {
-				if (node.hasChildNodes()) {
-					for (var i=0; i<node.childNodes.length; i++)
-						output += this.cleanupNode(node.childNodes[i]);
-				}
+		return false;
+	},
 
-				return output;
+	autoResetDesignMode : function() {
+		// Add fix for tab/style.display none/block problems in Gecko
+		if (!tinyMCE.isIE && this.isHidden() && tinyMCE.getParam('auto_reset_designmode'))
+			eval('try { this.getDoc().designMode = "On"; this.useCSS = false; } catch(e) {}');
+	},
+
+	isHidden : function() {
+		var s;
+
+		if (tinyMCE.isIE)
+			return false;
+
+		s = this.getSel();
+
+		// Weird, wheres that cursor selection?
+		return (!s || !s.rangeCount || s.rangeCount == 0);
+	},
+
+	isDirty : function() {
+		// Is content modified and not in a submit procedure
+		return tinyMCE.trim(this.startContent) != tinyMCE.trim(this.getBody().innerHTML) && !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");
+
+		// Removed class adding due to bug #1478272
+		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;
 
-			// Has mso/microsuck crap or empty attrib
-			if (node.style && (node.style.cssText.indexOf('mso-') != -1 && tinyMCE.settings['auto_cleanup_word']) || node.style.cssText == "") {
-				node.style.cssText = "";
-				node.removeAttribute("style");
+				st[n] = stc[n];
 			}
+		}
 
-			// Handle inline styles
-			if (tinyMCE.cleanup_inline_styles)
-				tinyMCE._fixInlineStyles(node);
+		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");
+	},
 
-			// Set attrib data
-			if (elementValidAttribs) {
-				for (var a=1; a<elementValidAttribs.length; a++) {
-					var attribName, attribDefaultValue, attribForceValue, attribValue;
+	_setUseCSS : function(b) {
+		var d = this.getDoc();
 
-					attribName = elementValidAttribs[a][0];
-					attribDefaultValue = elementValidAttribs[a][1];
-					attribForceValue = elementValidAttribs[a][2];
+		try {d.execCommand("useCSS", false, !b);} catch (ex) {}
+		try {d.execCommand("styleWithCSS", false, b);} catch (ex) {}
 
-					if (attribDefaultValue || attribForceValue) {
-						var attribValue = node.getAttribute(attribName);
-						if (node.getAttribute(attribName) == null || node.getAttribute(attribName) == "")
-							attribValue = attribDefaultValue;
+		if (!tinyMCE.getParam("table_inline_editing"))
+			try {d.execCommand('enableInlineTableEditing', false, "false");} catch (ex) {}
 
-						attribValue = attribForceValue ? attribForceValue : attribValue;
+		if (!tinyMCE.getParam("object_resizing"))
+			try {d.execCommand('enableObjectResizing', false, "false");} catch (ex) {}
+	},
 
-						// Is to generate id
-						if (attribValue == "{$uid}")
-							attribValue = "uid_" + (tinyMCE.cleanup_idCount++);
+	execCommand : function(command, user_interface, value) {
+		var doc = this.getDoc(), win = this.getWin(), focusElm = this.getFocusElement();
 
-						node.setAttribute(attribName, attribValue);
-						//alert(attribName + "=" + attribValue);
+		// Is not a undo specific command
+		if (!new RegExp('mceStartTyping|mceEndTyping|mceBeginUndoLevel|mceEndUndoLevel|mceAddUndoLevel', 'gi').test(command))
+			this.undoBookmark = null;
+
+		// Mozilla issue
+		if (!tinyMCE.isIE && !this.useCSS) {
+			this._setUseCSS(false);
+			this.useCSS = true;
+		}
+
+		//debug("command: " + command + ", user_interface: " + user_interface + ", value: " + value);
+		this.contentDocument = doc; // <-- Strange, unless this is applied Mozilla 1.3 breaks
+
+		if (tinyMCE.execCommandCallback(this, 'execcommand_callback', 'execCommand', this.editorId, this.getBody(), command, user_interface, value))
+			return;
+
+		// Fix align on images
+		if (focusElm && focusElm.nodeName == "IMG") {
+			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');
+
+					// Remove the div
+					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');
+
+					// Is centered
+					var div = tinyMCE.getParentElement(focusElm, "div");
+					if (div && div.style.textAlign == "center") {
+						// Remove div
+						if (div.nodeName == "DIV" && div.childNodes.length == 1 && div.parentNode)
+							div.parentNode.replaceChild(img, div);
+					} else {
+						// Add div
+						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');
+
+					// Remove the div
+					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;
+				}
 			}
+		}
 
-			// Remove non needed span elements
-			if (elementName == "span" && tinyMCE.cleanup_trim_span_elements) {
-				var re = new RegExp('^[ \t]+', 'g');
-				var onlyWhiteSpace = true;
-				for (var a=0; a<node.childNodes.length; a++) {
-					var tmpNode = node.childNodes[a];
-					if ((tmpNode.nodeType == 3 && !tmpNode.nodeValue.match(re)) || tmpNode.nodeName.toLowerCase() != "span") {
-						onlyWhiteSpace = false;
+		switch (command) {
+			case "mceRepaint":
+				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":
+				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;
 				}
 
-				// Count attributes
-				tinyMCE._verifyClass(node);
-				var numAttribs = 0;
-				for (var i=0; i<node.attributes.length; i++) {
-					if (node.attributes[i].specified)
-						numAttribs++;
+				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 svalue = value['value'] == null ? '' : value['value'];
+				var wrapper = value['wrapper'] ? value['wrapper'] : "span";
+				var parentElm = null;
+				var invalidRe = new RegExp("^BODY|HTML$", "g");
+				var invalidParentsRe = tinyMCE.settings['merge_styles_invalid_parents'] != '' ? new RegExp(tinyMCE.settings['merge_styles_invalid_parents'], "gi") : null;
+
+				// Whole element selected check
+				if (tinyMCE.isIE) {
+					// Control range
+					if (rng.item)
+						parentElm = rng.item(0);
+					else {
+						var pelm = rng.parentElement();
+						var prng = doc.selection.createRange();
+						prng.moveToElementText(pelm);
+
+						if (rng.htmlText == prng.htmlText || rng.boundingWidth == 0) {
+							if (invalidParentsRe == null || !invalidParentsRe.test(pelm.nodeName))
+								parentElm = pelm;
+						}
+					}
+				} else {
+					var felm = this.getFocusElement();
+					if (sel.isCollapsed || (new RegExp('td|tr|tbody|table', 'gi').test(felm.nodeName) && sel.anchorNode == felm.parentNode))
+						parentElm = felm;
 				}
 
-				// Is not a valid span, remove it
-				if (onlyWhiteSpace || numAttribs == 0) {
-					if (node.hasChildNodes()) {
-						for (var i=0; i<node.childNodes.length; i++)
-							output += this.cleanupNode(node.childNodes[i]);
+				// Whole element selected
+				if (parentElm && !invalidRe.test(parentElm.nodeName)) {
+					if (scmd == "setstyle")
+						tinyMCE.setStyleAttrib(parentElm, sname, svalue);
+
+					if (scmd == "setattrib")
+						tinyMCE.setAttrib(parentElm, sname, svalue);
+
+					if (scmd == "removeformat") {
+						parentElm.style.cssText = '';
+						tinyMCE.setAttrib(parentElm, 'class', '');
 					}
 
-					return output;
+					// Remove style/attribs from all children
+					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); // Bug in FF when running in fullscreen
+					doc.execCommand("FontName", false, "#mce_temp_font#");
+					var elementArray = tinyMCE.getElementsByAttributeValue(this.getBody(), "font", "face", "#mce_temp_font#");
+
+					// Change them all
+					for (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);
+
+							// Remove style/attribs from all children
+							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', '');
+								}
+							}
+						}
+					}
 				}
-			}
 
-			// Add some visual aids
-			if (elementName == "table" || elementName == "td") {
-				// Handle visual aid
-				if (tinyMCE.cleanup_visual_table_style != "") {
-					// Find parent table
-					var tableElement = node;
-					if (elementName == "td")
-						tableElement = tinyMCE.getParentElement(tableElement, "table");
+				// Cleaup wrappers
+				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";
 
-					if (tableElement && tableElement.getAttribute("border") == 0) {
-						if (tinyMCE.cleanup_visual_aid)
-							elementAttribs += " style=" + '"' + tinyMCE.cleanup_visual_table_style + '"';
+					elm.removeAttribute("mce_new");
+
+					// Is only child a element
+					if (elm.childNodes && elm.childNodes.length == 1 && elm.childNodes[0].nodeType == 1) {
+						//tinyMCE.debug("merge1" + isNew);
+						this._mergeElements(scmd, elm, elm.childNodes[0], isNew);
+						continue;
 					}
+
+					// Is I the only child
+					if (elm.parentNode.childNodes.length == 1 && !invalidRe.test(elm.nodeName) && !invalidRe.test(elm.parentNode.nodeName)) {
+						//tinyMCE.debug("merge2" + isNew + "," + elm.nodeName + "," + elm.parentNode.nodeName);
+						if (invalidParentsRe == null || !invalidParentsRe.test(elm.parentNode.nodeName))
+							this._mergeElements(scmd, elm.parentNode, elm, false);
+					}
 				}
-			}
 
-			// Handle element attributes
-			if (node.attributes.length > 0) {
-				for (var i=0; i<node.attributes.length; i++) {
-					if (node.attributes[i].specified) {
-						var attrib = tinyMCE._cleanupAttribute(elementValidAttribs, elementName, node.attributes[i], node);
-						if (attrib)
-							elementAttribs += " " + attrib.name + "=" + '"' + attrib.value + '"';
+				// Remove empty wrappers
+				var nodes = doc.getElementsByTagName(wrapper);
+				for (var i=nodes.length-1; i>=0; i--) {
+					var elm = nodes[i];
+					var isEmpty = true;
+
+					// Check if it has any attribs
+					var tmp = doc.createElement("body");
+					tmp.appendChild(elm.cloneNode(false));
+
+					// Is empty span, remove it
+					tmp.innerHTML = tmp.innerHTML.replace(new RegExp('style=""|class=""', 'gi'), '');
+					//tinyMCE.debug(tmp.innerHTML);
+					if (new RegExp('<span>', 'gi').test(tmp.innerHTML)) {
+						for (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);
 					}
 				}
 
-				//alert(elementAttribs);
-			}
+				// Re add the visual aids
+				if (scmd == "removeformat")
+					tinyMCE.handleVisualAid(this.getBody(), true, this.visualAid, this);
 
-			// Add nbsp to some elements
-			if ((elementName == "p" || elementName == "td") && (node.innerHTML == "" || node.innerHTML == "&nbsp;"))
-				return "<" + elementName + elementAttribs + ">&nbsp;</" + elementName + ">";
+				tinyMCE.triggerNodeChange();
 
-			// Is MSIE script element
-			if (tinyMCE.isMSIE && elementName == "script")
-				return "<" + elementName + elementAttribs + ">" + node.text + "</" + elementName + ">";
+				break;
 
-			// Clean up children
-			if (node.hasChildNodes()) {
-				// Force BR
-				if (elementName == "p" && tinyMCE.cleanup_force_br_newlines)
-					output += "<div" + elementAttribs + ">";
+			case "FontName":
+				if (value == null) {
+					var s = this.getSel();
+
+					// Find font and select it
+					if (tinyMCE.isGecko && s.isCollapsed) {
+						var f = tinyMCE.getParentElement(this.getFocusElement(), "font");
+
+						if (f != null)
+							this.selection.selectNode(f, false);
+					}
+
+					// Remove format
+					this.getDoc().execCommand("RemoveFormat", false, null);
+
+					// Collapse range if font was found
+					if (f != null && tinyMCE.isGecko) {
+						var r = this.getRng().cloneRange();
+						r.collapse(true);
+						s.removeAllRanges();
+						s.addRange(r);
+					}
+				} else
+					this.getDoc().execCommand('FontName', false, value);
+
+				if (tinyMCE.isGecko)
+					window.setTimeout('tinyMCE.triggerNodeChange(false);', 1);
+
+				return;
+
+			case "FontSize":
+				this.getDoc().execCommand('FontSize', false, value);
+
+				if (tinyMCE.isGecko)
+					window.setTimeout('tinyMCE.triggerNodeChange(false);', 1);
+
+				return;
+
+			case "forecolor":
+				value = value == null ? this.foreColor : value;
+				value = tinyMCE.trim(value);
+				value = value.charAt(0) != '#' ? (isNaN('0x' + value) ? value : '#' + value) : value;
+
+				this.foreColor = value;
+				this.getDoc().execCommand('forecolor', false, value);
+				break;
+
+			case "HiliteColor":
+				value = value == null ? this.backColor : value;
+				value = tinyMCE.trim(value);
+				value = value.charAt(0) != '#' ? (isNaN('0x' + value) ? value : '#' + value) : value;
+				this.backColor = value;
+
+				if (tinyMCE.isGecko) {
+					this._setUseCSS(true);
+					this.getDoc().execCommand('hilitecolor', false, value);
+					this._setUseCSS(false);
+				} else
+					this.getDoc().execCommand('BackColor', false, value);
+				break;
+
+			case "Cut":
+			case "Copy":
+			case "Paste":
+				var cmdFailed = false;
+
+				// Try executing command
+				eval('try {this.getDoc().execCommand(command, user_interface, value);} catch (e) {cmdFailed = true;}');
+
+				if (tinyMCE.isOpera && cmdFailed)
+					alert('Currently not supported by your browser, use keyboard shortcuts instead.');
+
+				// Alert error in gecko if command failed
+				if (tinyMCE.isGecko && cmdFailed) {
+					// Confirm more info
+					if (confirm(tinyMCE.entityDecode(tinyMCE.getLang('lang_clipboard_msg'))))
+						window.open('http://www.mozilla.org/editor/midasdemo/securityprefs.html', 'mceExternal');
+
+					return;
+				} else
+					tinyMCE.triggerNodeChange();
+			break;
+
+			case "mceSetContent":
+				if (!value)
+					value = "";
+
+				// Call custom cleanup code
+				value = tinyMCE.storeAwayURLs(value);
+				value = tinyMCE._customCleanup(this, "insert_to_editor", value);
+
+				if (this.getBody().nodeName == 'BODY')
+					tinyMCE._setHTML(doc, value);
 				else
-					output += "<" + elementName + elementAttribs + ">";
+					this.getBody().innerHTML = value;
 
-				for (var i=0; i<node.childNodes.length; i++)
-					output += this.cleanupNode(node.childNodes[i]);
+				tinyMCE.setInnerHTML(this.getBody(), tinyMCE._cleanupHTML(this, doc, this.settings, this.getBody(), false, false, false, true));
+				tinyMCE.convertAllRelativeURLs(this.getBody());
 
-				// Force BR
-				if (elementName == "p" && tinyMCE.cleanup_force_br_newlines)
-					output += "</div><br />";
+				// Cleanup any mess left from storyAwayURLs
+				tinyMCE._removeInternal(this.getBody());
+
+				// When editing always use fonts internaly
+				if (tinyMCE.getParam("convert_fonts_to_spans"))
+					tinyMCE.convertSpansToFonts(doc);
+
+				tinyMCE.handleVisualAid(this.getBody(), true, this.visualAid, this);
+				tinyMCE._setEventsEnabled(this.getBody(), false);
+				return true;
+
+			case "mceCleanup":
+				var b = this.selection.getBookmark();
+				tinyMCE._setHTML(this.contentDocument, this.getBody().innerHTML);
+				tinyMCE.setInnerHTML(this.getBody(), tinyMCE._cleanupHTML(this, this.contentDocument, this.settings, this.getBody(), this.visualAid));
+				tinyMCE.convertAllRelativeURLs(doc.body);
+
+				// When editing always use fonts internaly
+				if (tinyMCE.getParam("convert_fonts_to_spans"))
+					tinyMCE.convertSpansToFonts(doc);
+
+				tinyMCE.handleVisualAid(this.getBody(), true, this.visualAid, this);
+				tinyMCE._setEventsEnabled(this.getBody(), false);
+				this.repaint();
+				this.selection.moveToBookmark(b);
+				tinyMCE.triggerNodeChange();
+			break;
+
+			case "mceReplaceContent":
+				// Force empty string
+				if (!value)
+					value = '';
+
+				this.getWin().focus();
+
+				var selectedText = "";
+
+				if (tinyMCE.isIE) {
+					var rng = doc.selection.createRange();
+					selectedText = rng.text;
+				} else
+					selectedText = this.getSel().toString();
+
+				if (selectedText.length > 0) {
+					value = tinyMCE.replaceVar(value, "selection", selectedText);
+					tinyMCE.execCommand('mceInsertContent', false, value);
+				}
+
+				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');
+
+				// Insert marker key
+				this.execCommand('mceInsertContent', false, key);
+
+				// Store away scroll pos
+				var scrollX = this.getBody().scrollLeft + this.getDoc().documentElement.scrollLeft;
+				var scrollY = this.getBody().scrollTop + this.getDoc().documentElement.scrollTop;
+
+				// Find marker and replace with RAW HTML
+				var html = this.getBody().innerHTML;
+				if ((pos = html.indexOf(key)) != -1)
+					tinyMCE.setInnerHTML(this.getBody(), html.substring(0, pos) + value + html.substring(pos + key.length));
+
+				// Restore scoll pos
+				this.contentWindow.scrollTo(scrollX, scrollY);
+
+				this.execCommand('mceEndUndoLevel');
+
+				break;
+
+			case "mceInsertContent":
+				// Force empty string
+				if (!value)
+					value = '';
+
+				var insertHTMLFailed = false;
+
+				// Removed since it produced problems in IE
+				// this.getWin().focus();
+
+				if (tinyMCE.isGecko || tinyMCE.isOpera) {
+					try {
+						// Is plain text or HTML, &amp;, &nbsp; etc will be encoded wrong in FF
+						if (value.indexOf('<') == -1 && !value.match(/(&#38;|&#160;|&#60;|&#62;)/g)) {
+							var r = this.getRng();
+							var n = this.getDoc().createTextNode(tinyMCE.entityDecode(value));
+							var s = this.getSel();
+							var r2 = r.cloneRange();
+
+							// Insert text at cursor position
+							s.removeAllRanges();
+							r.deleteContents();
+							r.insertNode(n);
+
+							// Move the cursor to the end of text
+							r2.selectNode(n);
+							r2.collapse(false);
+							s.removeAllRanges();
+							s.addRange(r2);
+						} else {
+							value = tinyMCE.fixGeckoBaseHREFBug(1, this.getDoc(), value);
+							this.getDoc().execCommand('inserthtml', false, value);
+							tinyMCE.fixGeckoBaseHREFBug(2, this.getDoc(), value);
+						}
+					} catch (ex) {
+						insertHTMLFailed = true;
+					}
+
+					if (!insertHTMLFailed) {
+						tinyMCE.triggerNodeChange();
+						return;
+					}
+				}
+
+				if (!tinyMCE.isIE) {
+					var isHTML = value.indexOf('<') != -1;
+					var sel = this.getSel();
+					var rng = this.getRng();
+
+					if (isHTML) {
+						if (tinyMCE.isSafari) {
+							var tmpRng = this.getDoc().createRange();
+
+							tmpRng.setStart(this.getBody(), 0);
+							tmpRng.setEnd(this.getBody(), 0);
+
+							value = tmpRng.createContextualFragment(value);
+						} else
+							value = rng.createContextualFragment(value);
+					} else {
+						// Setup text node
+						var el = document.createElement("div");
+						el.innerHTML = value;
+						value = el.firstChild.nodeValue;
+						value = doc.createTextNode(value);
+					}
+
+					// Insert plain text in Safari
+					if (tinyMCE.isSafari && !isHTML) {
+						this.execCommand('InsertText', false, value.nodeValue);
+						tinyMCE.triggerNodeChange();
+						return true;
+					} else if (tinyMCE.isSafari && isHTML) {
+						rng.deleteContents();
+						rng.insertNode(value);
+						tinyMCE.triggerNodeChange();
+						return true;
+					}
+
+					rng.deleteContents();
+
+					// If target node is text do special treatment, (Mozilla 1.3 fix)
+					if (rng.startContainer.nodeType == 3) {
+						var node = rng.startContainer.splitText(rng.startOffset);
+						node.parentNode.insertBefore(value, node); 
+					} else
+						rng.insertNode(value);
+
+					if (!isHTML) {
+						// Removes weird selection trails
+						sel.selectAllChildren(doc.body);
+						sel.removeAllRanges();
+
+						// Move cursor to end of content
+						var rng = doc.createRange();
+
+						rng.selectNode(value);
+						rng.collapse(false);
+
+						sel.addRange(rng);
+					} else
+						rng.collapse(false);
+
+					tinyMCE.fixGeckoBaseHREFBug(2, this.getDoc(), value);
+				} else {
+					var rng = doc.selection.createRange(), tmpRng = null;
+					var c = value.indexOf('<!--') != -1;
+
+					// Fix comment bug, add tag before comments
+					if (c)
+						value = tinyMCE.uniqueTag + value;
+
+					//	tmpRng = rng.duplicate(); // Store away range (Fixes Undo bookmark bug in IE)
+
+					if (rng.item)
+						rng.item(0).outerHTML = value;
+					else
+						rng.pasteHTML(value);
+
+					//if (tmpRng)
+					//	tmpRng.select(); // Restore range  (Fixes Undo bookmark bug in IE)
+
+					// Remove unique tag
+					if (c) {
+						var e = this.getDoc().getElementById('mceTMPElement');
+						e.parentNode.removeChild(e);
+					}
+				}
+
+				tinyMCE.execCommand("mceAddUndoLevel");
+				tinyMCE.triggerNodeChange();
+			break;
+
+			case "mceStartTyping":
+				if (tinyMCE.settings['custom_undo_redo'] && this.undoRedo.typingUndoIndex == -1) {
+					this.undoRedo.typingUndoIndex = this.undoRedo.undoIndex;
+					tinyMCE.typingUndoIndex = tinyMCE.undoIndex;
+					this.execCommand('mceAddUndoLevel');
+				}
+				break;
+
+			case "mceEndTyping":
+				if (tinyMCE.settings['custom_undo_redo'] && this.undoRedo.typingUndoIndex != -1) {
+					this.execCommand('mceAddUndoLevel');
+					this.undoRedo.typingUndoIndex = -1;
+				}
+
+				tinyMCE.typingUndoIndex = -1;
+				break;
+
+			case "mceBeginUndoLevel":
+				this.undoRedoLevel = false;
+				break;
+
+			case "mceEndUndoLevel":
+				this.undoRedoLevel = true;
+				this.execCommand('mceAddUndoLevel');
+				break;
+
+			case "mceAddUndoLevel":
+				if (tinyMCE.settings['custom_undo_redo'] && this.undoRedoLevel) {
+					if (this.undoRedo.add())
+						tinyMCE.triggerNodeChange(false);
+				}
+				break;
+
+			case "Undo":
+				if (tinyMCE.settings['custom_undo_redo']) {
+					tinyMCE.execCommand("mceEndTyping");
+					this.undoRedo.undo();
+					tinyMCE.triggerNodeChange();
+				} else
+					this.getDoc().execCommand(command, user_interface, value);
+				break;
+
+			case "Redo":
+				if (tinyMCE.settings['custom_undo_redo']) {
+					tinyMCE.execCommand("mceEndTyping");
+					this.undoRedo.redo();
+					tinyMCE.triggerNodeChange();
+				} else
+					this.getDoc().execCommand(command, user_interface, value);
+				break;
+
+			case "mceToggleVisualAid":
+				this.visualAid = !this.visualAid;
+				tinyMCE.handleVisualAid(this.getBody(), true, this.visualAid, this);
+				tinyMCE.triggerNodeChange();
+				break;
+
+			case "Indent":
+				this.getDoc().execCommand(command, user_interface, value);
+				tinyMCE.triggerNodeChange();
+
+				if (tinyMCE.isIE) {
+					var n = tinyMCE.getParentElement(this.getFocusElement(), "blockquote");
+					do {
+						if (n && n.nodeName == "BLOCKQUOTE") {
+							n.removeAttribute("dir");
+							n.removeAttribute("style");
+						}
+					} while (n != null && (n = n.parentNode) != null);
+				}
+				break;
+
+			case "removeformat":
+				var text = this.selection.getSelectedText();
+
+				if (tinyMCE.isOpera) {
+					this.getDoc().execCommand("RemoveFormat", false, null);
+					return;
+				}
+
+				if (tinyMCE.isIE) {
+					try {
+						var rng = doc.selection.createRange();
+						rng.execCommand("RemoveFormat", false, null);
+					} catch (e) {
+						// Do nothing
+					}
+
+					this.execCommand("SetStyleInfo", false, {command : "removeformat"});
+				} else {
+					this.getDoc().execCommand(command, user_interface, value);
+
+					this.execCommand("SetStyleInfo", false, {command : "removeformat"});
+				}
+
+				// Remove class
+				if (text.length == 0)
+					this.execCommand("mceSetCSSClass", false, "");
+
+				tinyMCE.triggerNodeChange();
+				break;
+
+			default:
+				this.getDoc().execCommand(command, user_interface, value);
+
+				if (tinyMCE.isGecko)
+					window.setTimeout('tinyMCE.triggerNodeChange(false);', 1);
 				else
-					output += "</" + elementName + ">";
-			} else // No children
-				output += "<" + elementName + elementAttribs + " />";
+					tinyMCE.triggerNodeChange();
+		}
 
-			return output;
+		// Add undo level after modification
+		if (command != "mceAddUndoLevel" && command != "Undo" && command != "Redo" && command != "mceStartTyping" && command != "mceEndTyping")
+			tinyMCE.execCommand("mceAddUndoLevel");
+	},
 
-		case 3: // Text
-			// Do not convert script elements
-			if (node.parentNode.nodeName.toLowerCase() == "script")
-				return node.nodeValue;
+	queryCommandValue : function(c) {
+		try {
+			return this.getDoc().queryCommandValue(c);
+		} catch (e) {
+			return null;
+		}
+	},
 
-			return this.convertStringToXML(node.nodeValue);
+	queryCommandState : function(c) {
+		return this.getDoc().queryCommandState(c);
+	},
 
-		case 8: // Comment
-			return "<!--" + node.nodeValue + "-->";
+	_onAdd : function(replace_element, form_element_name, target_document) {
+		var hc, th, to, editorTemplate;
 
-		default: // Unknown
-			return "[UNKNOWN NODETYPE " + node.nodeType + "]";
-	}
-}
+		th = this.settings['theme'];
+		to = tinyMCE.themes[th];
 
-function TinyMCE_convertStringToXML(html_data) {
-    var output = "";
+		var targetDoc = target_document ? target_document : document;
 
-	for (var i=0; i<html_data.length; i++) {
-		var chr = html_data.charCodeAt(i);
+		this.targetDoc = targetDoc;
 
-		// Check if a name exists in lookup table
-		if (typeof(tinyMCE.cleanup_entities["c" + chr]) != 'undefined' && tinyMCE.cleanup_entities["c" + chr] != '')
-			output += '&' + tinyMCE.cleanup_entities["c" + chr] + ';';
+		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'];
+
+		// Set default width, height
+		if (this.settings['width'] == -1)
+			this.settings['width'] = replace_element.offsetWidth;
+
+		if (this.settings['height'] == -1)
+			this.settings['height'] = replace_element.offsetHeight;
+
+		// Try the style width
+		if (this.settings['width'] == 0)
+			this.settings['width'] = replace_element.style.width;
+
+		// Try the style height
+		if (this.settings['height'] == 0)
+			this.settings['height'] = replace_element.style.height; 
+
+		// If no width/height then default to 320x240, better than nothing
+		if (this.settings['width'] == 0)
+			this.settings['width'] = 320;
+
+		if (this.settings['height'] == 0)
+			this.settings['height'] = 240;
+
+		this.settings['area_width'] = parseInt(this.settings['width']);
+		this.settings['area_height'] = parseInt(this.settings['height']);
+		this.settings['area_width'] += deltaWidth;
+		this.settings['area_height'] += deltaHeight;
+
+		this.settings['width_style'] = "" + this.settings['width'];
+		this.settings['height_style'] = "" + this.settings['height'];
+
+		// Special % handling
+		if (("" + this.settings['width']).indexOf('%') != -1)
+			this.settings['area_width'] = "100%";
 		else
-			output += '' + String.fromCharCode(chr);
-    }
+			this.settings['width_style'] += 'px';
 
-    return output;
-}
+		if (("" + this.settings['height']).indexOf('%') != -1)
+			this.settings['area_height'] = "100%";
+		else
+			this.settings['height_style'] += 'px';
 
-function TinyMCE__initCleanup() {
-	function getElementName(chunk) {
-		var pos;
+		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 ((pos = chunk.indexOf('/')) != -1)
-			chunk = chunk.substring(0, pos);
+		if (("" + replace_element.style.height).indexOf('%') != -1) {
+			this.settings['height'] = replace_element.style.height;
+			this.settings['area_height'] = "100%";
+			this.settings['height_style'] = "100%";
+		}
 
-		if ((pos = chunk.indexOf('[')) != -1)
-			chunk = chunk.substring(0, pos);
+		html = tinyMCE.applyTemplate(html);
 
-		return chunk;
-	}
+		this.settings['width'] = this.settings['old_width'];
+		this.settings['height'] = this.settings['old_height'];
 
-	// Parse valid elements and attributes
-	var validElements = tinyMCE.settings["valid_elements"];
-	validElements = validElements.split(',');
+		this.visualAid = this.settings['visual'];
+		this.formTargetElementId = form_element_name;
 
-	// Handle extended valid elements
-	var extendedValidElements = tinyMCE.settings["extended_valid_elements"];
-	extendedValidElements = extendedValidElements.split(',');
-	for (var i=0; i<extendedValidElements.length; i++) {
-		var elementName = getElementName(extendedValidElements[i]);
-		var skipAdd = false;
+		// Get replace_element contents
+		if (replace_element.nodeName == "TEXTAREA" || replace_element.nodeName == "INPUT")
+			this.startContent = replace_element.value;
+		else
+			this.startContent = replace_element.innerHTML;
 
-		// Check if it's defined before, if so override that one
-		for (var x=0; x<validElements.length; x++) {
-			if (getElementName(validElements[x]) == elementName) {
-				validElements[x] = extendedValidElements[i];
-				skipAdd = true;
-				break;
+		// If not text area or input
+		if (replace_element.nodeName != "TEXTAREA" && replace_element.nodeName != "INPUT") {
+			this.oldTargetElement = replace_element;
+
+			// Debug mode
+			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";
 			}
-		}
 
-		if (!skipAdd)
-			validElements[validElements.length] = extendedValidElements[i];
-	}
+			html += '</span>';
 
-	for (var i=0; i<validElements.length; i++) {
-		var item = validElements[i];
-		item = item.replace('[','|');
-		item = item.replace(']','');
+			if (tinyMCE.isGecko)
+				html = hc + html;
+			else
+				html += hc;
 
-		// Split and convert
-		var attribs = item.split('|');
-		for (var x=0; x<attribs.length; x++)
-			attribs[x] = attribs[x].toLowerCase();
+			// Output HTML and set editable
+			if (tinyMCE.isGecko) {
+				var rng = replace_element.ownerDocument.createRange();
+				rng.setStartBefore(replace_element);
 
-		// Handle change elements
-		attribs[0] = attribs[0].split('/');
+				var fragment = rng.createContextualFragment(html);
+				tinyMCE.insertAfter(fragment, replace_element);
+			} else
+				replace_element.insertAdjacentHTML("beforeBegin", html);
+		} else {
+			html += '</span>';
 
-		// Handle default attribute values
-		for (var x=1; x<attribs.length; x++) {
-			var attribName = attribs[x];
-			var attribDefault = null;
-			var attribForce = null;
-			var attribMustBe = null;
+			// Just hide the textarea element
+			this.oldTargetElement = replace_element;
 
-			// Default value
-			if ((pos = attribName.indexOf('=')) != -1) {
-				attribDefault = attribName.substring(pos+1);
-				attribName = attribName.substring(0, pos);
+			if (!tinyMCE.settings['debug'])
+				this.oldTargetElement.style.display = "none";
+
+			// Output HTML and set editable
+			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);
+		}
+
+		// Setup iframe
+		var dynamicIFrame = false;
+		var tElm = targetDoc.getElementById(this.editorId);
+
+		if (!tinyMCE.isIE) {
+			// Node case is preserved in XML strict mode
+			if (tElm && (tElm.nodeName == "SPAN" || tElm.nodeName == "span")) {
+				tElm = tinyMCE._createIFrame(tElm, targetDoc);
+				dynamicIFrame = true;
 			}
 
-			// Force check
-			if ((pos = attribName.indexOf(':')) != -1) {
-				attribForce = attribName.substring(pos+1);
-				attribName = attribName.substring(0, pos);
+			this.targetElement = tElm;
+			this.iframeElement = tElm;
+			this.contentDocument = tElm.contentDocument;
+			this.contentWindow = tElm.contentWindow;
+
+			//this.getDoc().designMode = "on";
+		} else {
+			if (tElm && tElm.nodeName == "SPAN")
+				tElm = tinyMCE._createIFrame(tElm, targetDoc, targetDoc.parentWindow);
+			else
+				tElm = targetDoc.frames[this.editorId];
+
+			this.targetElement = tElm;
+			this.iframeElement = targetDoc.getElementById(this.editorId);
+
+			if (tinyMCE.isOpera) {
+				this.contentDocument = this.iframeElement.contentDocument;
+				this.contentWindow = this.iframeElement.contentWindow;
+				dynamicIFrame = true;
+			} else {
+				this.contentDocument = tElm.window.document;
+				this.contentWindow = tElm.window;
 			}
 
-			// Force check
-			if ((pos = attribName.indexOf('<')) != -1) {
-				attribMustBe = attribName.substring(pos+1).split('?');
-				attribName = attribName.substring(0, pos);
+			this.getDoc().designMode = "on";
+		}
+
+		// Setup base HTML
+		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) {
+				// Failed Mozilla 1.3
+				this.getDoc().location.href = tinyMCE.baseURL + "/blank.htm";
 			}
+		}
 
-			attribs[x] = new Array(attribName, attribDefault, attribForce, attribMustBe);
+		// This timeout is needed in MSIE 5.5 for some odd reason
+		// it seems that the document.frames isn't initialized yet?
+		if (tinyMCE.isIE)
+			window.setTimeout("tinyMCE.addEventHandlers(tinyMCE.instances[\"" + this.editorId + "\"]);", 1);
+
+		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);
 		}
+	},
 
-		validElements[i] = attribs;
+	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;
+
+		// Force hidden tabs visible while serializing
+		if (tinyMCE.isRealIE) {
+			e = this.iframeElement;
+
+			do {
+				if (e.style && e.style.display == 'none') {
+					e.style.display = 'block';
+					nl[nl.length] = {elm : e, type : 'style'};
+				}
+
+				if (e.style && s.hidden_tab_class.length > 0 && e.className.indexOf(s.hidden_tab_class) != -1) {
+					e.className = s.display_tab_class;
+					nl[nl.length] = {elm : e, type : 'class'};
+				}
+			} while ((e = e.parentNode) != null)
+		}
+
+		tinyMCE.settings['preformatted'] = false;
+
+		// Default to false
+		if (typeof(skip_cleanup) == "undefined")
+			skip_cleanup = false;
+
+		// Default to false
+		if (typeof(skip_callback) == "undefined")
+			skip_callback = false;
+
+		tinyMCE._setHTML(this.getDoc(), this.getBody().innerHTML);
+
+		// Remove visual aids when cleanup is disabled
+		if (this.settings['cleanup'] == false) {
+			tinyMCE.handleVisualAid(this.getBody(), true, false, this);
+			tinyMCE._setEventsEnabled(this.getBody(), true);
+		}
+
+		tinyMCE._customCleanup(this, "submit_content_dom", this.contentWindow.document.body);
+		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());");
+
+		// Use callback content if available
+		if ((typeof(content) != "undefined") && content != null)
+			htm = content;
+
+		// Replace some weird entities (Bug: #1056343)
+		htm = tinyMCE.regexpReplace(htm, "&#40;", "(", "gi");
+		htm = tinyMCE.regexpReplace(htm, "&#41;", ")", "gi");
+		htm = tinyMCE.regexpReplace(htm, "&#59;", ";", "gi");
+		htm = tinyMCE.regexpReplace(htm, "&#34;", "&quot;", "gi");
+		htm = tinyMCE.regexpReplace(htm, "&#94;", "^", "gi");
+
+		if (this.formElement)
+			this.formElement.value = htm;
+
+		if (tinyMCE.isSafari && this.formElement)
+			this.formElement.innerText = htm;
+
+		// Hide them again (tabs in MSIE)
+		for (i=0; i<nl.length; i++) {
+			if (nl[i].type == 'style')
+				nl[i].elm.style.display = 'none';
+			else
+				nl[i].elm.className = s.hidden_tab_class;
+		}
 	}
 
-	var invalidElements = tinyMCE.settings['invalid_elements'].split(',');
-	for (var i=0; i<invalidElements.length; i++)
-		invalidElements[i] = invalidElements[i].toLowerCase();
+	};
 
-	// Set these for performance
-	tinyMCE.cleanup_validElements = validElements;
-	tinyMCE.cleanup_invalidElements = invalidElements;
-	tinyMCE.cleanup_verify_html = tinyMCE.settings['verify_html'];
-	tinyMCE.cleanup_force_br_newlines = tinyMCE.settings['force_br_newlines'];
-	tinyMCE.cleanup_urlconvertor_callback = tinyMCE.settings['urlconvertor_callback'];
-	tinyMCE.cleanup_verify_css_classes = tinyMCE.settings['verify_css_classes'];
-	tinyMCE.cleanup_visual_table_style = tinyMCE.settings['visual_table_style'];
-	tinyMCE.cleanup_apply_source_formatting = tinyMCE.settings['apply_source_formatting'];
-	tinyMCE.cleanup_urlconvertor_callback = tinyMCE.settings['urlconvertor_callback'];
-	tinyMCE.cleanup_trim_span_elements = tinyMCE.settings['trim_span_elements'];
-	tinyMCE.cleanup_inline_styles = tinyMCE.settings['inline_styles'];
+/* file:jscripts/tiny_mce/classes/TinyMCE_Cleanup.class.js */
 
-	// Setup entities
-	tinyMCE.cleanup_entities = new Array();
-	var entities = tinyMCE.getParam('entities', '', true, ',');
-	for (var i=0; i<entities.length; i+=2)
-		tinyMCE.cleanup_entities['c' + entities[i]] = entities[i+1];
-}
+TinyMCE_Engine.prototype.cleanupHTMLCode = function(s) {
+	s = s.replace(new RegExp('<p \\/>', 'gi'), '<p>&nbsp;</p>');
+	s = s.replace(new RegExp('<p>\\s*<\\/p>', 'gi'), '<p>&nbsp;</p>');
 
-function TinyMCE__cleanupHTML(doc, config, element, visual, on_save) {
-	// Set these for performance
-	tinyMCE.cleanup_visual_aid = visual;
-	tinyMCE.cleanup_on_save = on_save;
-	tinyMCE.cleanup_idCount = 0;
-	tinyMCE.cleanup_elementLookupTable = new Array();
+	// Fix close BR elements
+	s = s.replace(new RegExp('<br>\\s*<\\/br>', 'gi'), '<br />');
 
-	var startTime = new Date().getTime();
+	// Open closed tags like <b/> to <b></b>
+	s = s.replace(new RegExp('<(h[1-6]|p|div|address|pre|form|table|li|ol|ul|td|b|font|em|strong|i|strike|u|span|a|ul|ol|li|blockquote)([a-z]*)([^\\\\|>]*)\\/>', 'gi'), '<$1$2$3></$1$2>');
 
-	tinyMCE._convertOnClick(element);
+	// Remove trailing space <b > to <b>
+	s = s.replace(new RegExp('\\s+></', 'gi'), '></');
 
-	// Cleanup madness that breaks the editor in MSIE
-	if (tinyMCE.isMSIE)
-		element.innerHTML = tinyMCE.regexpReplace(element.innerHTML, '<!([^-(DOCTYPE)]* )|<!/[^-]*>', '', 'gi');
+	// Close tags <img></img> to <img/>
+	s = s.replace(new RegExp('<(img|br|hr)([^>]*)><\\/(img|br|hr)>', 'gi'), '<$1$2 />');
 
-	var html = this.cleanupNode(element);
+	// Weird MSIE bug, <p><hr /></p> breaks runtime?
+	if (tinyMCE.isIE)
+		s = s.replace(new RegExp('<p><hr \\/><\\/p>', 'gi'), "<hr>");
 
-	if (tinyMCE.settings['debug'])
-		alert("Cleanup process executed in: " + (new Date().getTime()-startTime) + " ms.");
+	// Weird tags will make IE error #bug: 1538495
+	if (tinyMCE.isIE)
+		s = s.replace(/<!(\s*)\/>/g, '');
 
-	// Remove pesky HR paragraphs
-	html = tinyMCE.regexpReplace(html, '<p><hr /></p>', '<hr />');
-	html = tinyMCE.regexpReplace(html, '<p>&nbsp;</p><hr /><p>&nbsp;</p>', '<hr />');
+	// Convert relative anchors to absolute URLs ex: #something to file.htm#something
+	// Removed: Since local document anchors should never be forced absolute example edit.php?id=something
+	//if (tinyMCE.getParam('convert_urls'))
+	//	s = s.replace(new RegExp('(href=\"{0,1})(\\s*#)', 'gi'), '$1' + tinyMCE.settings['document_base_url'] + "#");
 
-	// Remove some mozilla crap
-	if (!tinyMCE.isMSIE) {
-		html = html.replace(new RegExp('<o:p _moz-userdefined="" />', '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('||');
+//tinyMCE.debug(str, pa[0] + "=" + pa[1], st[i].replace(re, '$1||$2'));
+		if (pa.length == 2)
+			ar[pa[0].toLowerCase()] = pa[1];
 	}
 
-	if (tinyMCE.settings['apply_source_formatting']) {
-		html = html.replace(new RegExp('<(p|div)([^>]*)>', 'g'), "\n<$1$2>\n");
-		html = html.replace(new RegExp('<\/(p|div)([^>]*)>', 'g'), "\n</$1$2>\n");
-		html = html.replace(new RegExp('<br />', 'g'), "<br />\n");
+	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;
+		}
 	}
 
-	if (tinyMCE.settings['force_br_newlines']) {
-		var re = new RegExp('<p>&nbsp;</p>', 'g');
-		html = html.replace(re, "<br />");
+	// They are all the same
+	ar[res] = box[0];
+	ar[pr + '-top' + sf] = null;
+	ar[pr + '-left' + sf] = null;
+	ar[pr + '-right' + sf] = null;
+	ar[pr + '-bottom' + sf] = null;
+};
+
+TinyMCE_Engine.prototype.serializeStyle = function(ar) {
+	var str = "";
+
+	// Compress box
+	tinyMCE.compressStyle(ar, "border", "", "border");
+	tinyMCE.compressStyle(ar, "border", "-width", "border-width");
+	tinyMCE.compressStyle(ar, "border", "-color", "border-color");
+	tinyMCE.compressStyle(ar, "border", "-style", "border-style");
+	tinyMCE.compressStyle(ar, "padding", "", "padding");
+	tinyMCE.compressStyle(ar, "margin", "", "margin");
+
+	for (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; // Force string
+
+			// Fix style URL
+			val = val.replace(new RegExp("url\\(\\'?([^\\']*)\\'?\\)", 'gi'), "url('$1')");
+
+			// Convert URL
+			if (val.indexOf('url(') != -1 && tinyMCE.getParam('convert_urls')) {
+				var m = new RegExp("url\\('(.*?)'\\)").exec(val);
+
+				if (m.length > 1)
+					val = "url('" + eval(tinyMCE.getParam('urlconverter_callback') + "(m[1], null, true);") + "')";
+			}
+
+			// Force HEX colors
+			if (tinyMCE.getParam("force_hex_style_colors"))
+				val = tinyMCE.convertRGBToHex(val, true);
+
+			if (val != "url('')")
+				str += key.toLowerCase() + ": " + val + "; ";
+		}
 	}
 
-	// Emtpy node, return empty
-	if (html == "<br />" || html == "<p>&nbsp;</p>")
-		html = "";
+	if (new RegExp('; $').test(str))
+		str = str.substring(0, str.length - 2);
 
-	// Call custom cleanup code
-	html = tinyMCE._customCleanup(on_save ? "get_from_editor" : "insert_to_editor", html);
+	return str;
+};
 
-	if (tinyMCE.settings["preformatted"])
-		return "<pre>" + html + "</pre>";
+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);
 
-	return html;
-}
+			r = r.length == 1 ? '0' + r : r;
+			g = g.length == 1 ? '0' + g : g;
+			b = b.length == 1 ? '0' + b : b;
 
-function TinyMCE_insertLink(href, target, title, onclick) {
-	function setAttrib(element, name, value) {
-		if (value != null && value != "")
-			element.setAttribute(name, value);
-		else
-			element.removeAttribute(name);
+			s = "#" + r + g + b;
+
+			if (k)
+				s = rgb[0] + s + rgb[4];
+		}
 	}
 
-	this.execCommand("mceAddUndoLevel");
+	return s;
+};
 
-	if (this.selectedInstance && this.selectedElement && this.selectedElement.nodeName.toLowerCase() == "img") {
-		var doc = this.selectedInstance.contentWindow.document;
+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) + ")";
+	}
 
-		var linkElement = doc.createElement("a");
+	return s;
+};
 
-		href = eval(tinyMCE.settings['urlconvertor_callback'] + "(href, linkElement);");
-		setAttrib(linkElement, 'href', href);
-		setAttrib(linkElement, 'target', target);
-		setAttrib(linkElement, 'title', title);
-        setAttrib(linkElement, 'mce_onclick', onclick);
+TinyMCE_Engine.prototype.convertSpansToFonts = function(doc) {
+	var sizes = tinyMCE.getParam('font_size_style_values').replace(/\s+/, '').split(',');
 
-		linkElement.appendChild(this.selectedElement.cloneNode(true));
+	var h = doc.body.innerHTML;
+	h = h.replace(/<span/gi, '<font');
+	h = h.replace(/<\/span/gi, '</font');
+	tinyMCE.setInnerHTML(doc.body, h);
 
-		this.selectedElement.parentNode.replaceChild(linkElement, this.selectedElement);
+	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;
 
-		return;
+		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 = '';
+		}
 	}
+};
 
-	if (!this.linkElement && this.selectedInstance) {
-		this.selectedInstance.contentDocument.execCommand("createlink", false, "#mce_temp_url#");
-		tinyMCE.linkElement = this.getElementByAttributeValue(this.selectedInstance.contentDocument.body, "a", "href", "#mce_temp_url#");
+TinyMCE_Engine.prototype.convertFontsToSpans = function(doc) {
+	var sizes = tinyMCE.getParam('font_size_style_values').replace(/\s+/, '').split(',');
 
-		var elementArray = this.getElementsByAttributeValue(this.selectedInstance.contentDocument.body, "a", "href", "#mce_temp_url#");
+	var h = doc.body.innerHTML;
+	h = h.replace(/<font/gi, '<span');
+	h = h.replace(/<\/font/gi, '</span');
+	tinyMCE.setInnerHTML(doc.body, h);
 
-		for (var i=0; i<elementArray.length; i++) {
-			href = eval(tinyMCE.settings['urlconvertor_callback'] + "(href, elementArray[i]);");
-			setAttrib(elementArray[i], 'href', href);
-			setAttrib(elementArray[i], 'mce_real_href', href);
-			setAttrib(elementArray[i], 'target', target);
-			setAttrib(elementArray[i], 'title', title);
-            setAttrib(elementArray[i], 'mce_onclick', onclick);
+	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');
 		}
 
-		tinyMCE.linkElement = elementArray[0];
+		if (fFace != "") {
+			s[i].style.fontFamily = fFace;
+			s[i].removeAttribute('face');
+		}
+
+		if (fColor != "") {
+			s[i].style.color = fColor;
+			s[i].removeAttribute('color');
+		}
 	}
+};
 
-	if (this.linkElement) {
-		href = eval(tinyMCE.settings['urlconvertor_callback'] + "(href, this.linkElement);");
-		setAttrib(this.linkElement, 'href', href);
-		setAttrib(this.linkElement, 'mce_real_href', href);
-		setAttrib(this.linkElement, 'target', target);
-		setAttrib(this.linkElement, 'title', title);
-        setAttrib(this.linkElement, 'mce_onclick', onclick);
+TinyMCE_Engine.prototype.cleanupAnchors = function(doc) {
+	var i, cn, x, an = doc.getElementsByTagName("a");
+
+	// Loops backwards due to bug #1467987
+	for (i=an.length-1; i>=0; i--) {
+		if (tinyMCE.getAttrib(an[i], "name") != "" && tinyMCE.getAttrib(an[i], "href") == "") {
+			cn = an[i].childNodes;
+
+			for (x=cn.length-1; x>=0; x--)
+				tinyMCE.insertAfter(cn[x], an[i]);
+		}
 	}
+};
+
+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 = '&nbsp;';
+					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);
+
+	// Call custom cleanup code
+	tinyMCE._customCleanup(inst, on_save ? "get_from_editor_dom" : "insert_to_editor_dom", doc.body);
+
+	if (d)
+		t2 = new Date().getTime();
+
+	c.settings.on_save = on_save;
+	//for (var i=0; i<100; i++)
+
+	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();
+
+	// Post processing
+	nb = tinyMCE.getParam('entity_encoding') == 'numeric' ? '&#160;' : '&nbsp;';
+	h = h.replace(/<\/?(body|head|html)[^>]*>/gi, '');
+	h = h.replace(new RegExp(' (rowspan="1"|colspan="1")', 'g'), '');
+	h = h.replace(/<p><hr \/><\/p>/g, '<hr />');
+	h = h.replace(/<p>(&nbsp;|&#160;)<\/p><hr \/><p>(&nbsp;|&#160;)<\/p>/g, '<hr />');
+	h = h.replace(/<td>\s*<br \/>\s*<\/td>/g, '<td>' + nb + '</td>');
+	h = h.replace(/<p>\s*<br \/>\s*<\/p>/g, '<p>' + nb + '</p>');
+	h = h.replace(/<br \/>$/, ''); // Remove last BR for Gecko
+	h = h.replace(/<br \/><\/p>/g, '</p>'); // Remove last BR in P tags for Gecko
+	h = h.replace(/<p>\s*(&nbsp;|&#160;)\s*<br \/>\s*(&nbsp;|&#160;)\s*<\/p>/g, '<p>' + nb + '</p>');
+	h = h.replace(/<p>\s*(&nbsp;|&#160;)\s*<br \/>\s*<\/p>/g, '<p>' + nb + '</p>');
+	h = h.replace(/<p>\s*<br \/>\s*&nbsp;\s*<\/p>/g, '<p>' + nb + '</p>');
+	h = h.replace(new RegExp('<a>(.*?)<\\/a>', 'g'), '$1');
+	h = h.replace(/<p([^>]*)>\s*<\/p>/g, '<p$1>' + nb + '</p>');
+
+	// Clean body
+	if (/^\s*(<br \/>|<p>&nbsp;<\/p>|<p>&#160;<\/p>|<p><\/p>)\s*$/.test(h))
+		h = '';
+
+	// If preformatted
+	if (s.preformatted) {
+		h = h.replace(/^<pre>/, '');
+		h = h.replace(/<\/pre>$/, '');
+		h = '<pre>' + h + '</pre>';
+	}
+
+	// Gecko specific processing
+	if (tinyMCE.isGecko) {
+		h = h.replace(/<o:p _moz-userdefined="" \/>/g, '');
+		h = h.replace(/<td([^>]*)>\s*<br \/>\s*<\/td>/g, '<td$1>' + nb + '</td>');
+	}
+
+	if (s.force_br_newlines)
+		h = h.replace(/<p>(&nbsp;|&#160;)<\/p>/g, '<br />');
+
+	// Call custom cleanup code
+	h = tinyMCE._customCleanup(inst, on_save ? "get_from_editor" : "insert_to_editor", h);
+
+	// Remove internal classes
+	if (on_save) {
+		h = h.replace(new RegExp(' ?(mceItem[a-zA-Z0-9]*|' + s.visual_table_class + ')', 'g'), '');
+		h = h.replace(new RegExp(' ?class=""', 'g'), '');
+	}
+
+	if (s.remove_linebreaks && !c.settings.indent)
+		h = h.replace(/\n|\r/g, ' ');
+
+	if (d)
+		t4 = new Date().getTime();
+
+	if (on_save && c.settings.indent)
+		h = c.formatHTML(h);
+
+	// If encoding (not recommended option)
+	if (on_submit && (s.encoding == "xml" || s.encoding == "html"))
+		h = c.xmlEncode(h);
+
+	if (d)
+		t5 = new Date().getTime();
+
+	if (c.settings.debug)
+		tinyMCE.debug("Cleanup in ms: Pre=" + (t2-t1) + ", Serialize: " + (t3-t2) + ", Post: " + (t4-t3) + ", Format: " + (t5-t4) + ", Sum: " + (t5-t1) + ".");
+
+	return h;
+};
+
+function TinyMCE_Cleanup() {
+	this.isIE = (navigator.appName == "Microsoft Internet Explorer");
+	this.rules = tinyMCE.clearArray(new Array());
+
+	// Default config
+	this.settings = {
+		indent_elements : 'head,table,tbody,thead,tfoot,form,tr,ul,ol,blockquote,object',
+		newline_before_elements : 'h1,h2,h3,h4,h5,h6,pre,address,div,ul,ol,li,meta,option,area,title,link,base,script,td',
+		newline_after_elements : 'br,hr,p,pre,address,div,ul,ol,meta,option,area,link,base,script',
+		newline_before_after_elements : 'html,head,body,table,thead,tbody,tfoot,tr,form,ul,ol,blockquote,p,object,param,hr,div',
+		indent_char : '\t',
+		indent_levels : 1,
+		entity_encoding : 'raw',
+		valid_elements : '*[*]',
+		entities : '',
+		url_converter : '',
+		invalid_elements : '',
+		verify_html : false
+	};
+
+	this.vElements = tinyMCE.clearArray(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'
+	};
 }
 
-function TinyMCE_insertImage(src, alt, border, hspace, vspace, width, height, align, title, onmouseover, onmouseout) {
-	this.execCommand("mceAddUndoLevel");
+TinyMCE_Cleanup.prototype = {
+	init : function(s) {
+		var n, a, i, ir, or, st;
 
-	function setAttrib(element, name, value, no_fix_value) {
-		if (!no_fix_value && value != null) {
-			var re = new RegExp('[^0-9%]', 'g');
-			value = value.replace(re, '');
+		for (n in s)
+			this.settings[n] = s[n];
+
+		// Setup code formating
+		s = this.settings;
+
+		// Setup regexps
+		this.inRe = this._arrayToRe(s.indent_elements.split(','), '', '^<(', ')[^>]*');
+		this.ouRe = this._arrayToRe(s.indent_elements.split(','), '', '^<\\/(', ')[^>]*');
+		this.nlBeforeRe = this._arrayToRe(s.newline_before_elements.split(','), 'gi', '<(',  ')([^>]*)>');
+		this.nlAfterRe = this._arrayToRe(s.newline_after_elements.split(','), 'gi', '<(',  ')([^>]*)>');
+		this.nlBeforeAfterRe = this._arrayToRe(s.newline_before_after_elements.split(','), 'gi', '<(\\/?)(', ')([^>]*)>');
+		this.serializedNodes = [];
+
+		if (s.invalid_elements != '')
+			this.iveRe = this._arrayToRe(s.invalid_elements.toUpperCase().split(','), 'g', '^(', ')$');
+		else
+			this.iveRe = null;
+
+		// Setup separator
+		st = '';
+		for (i=0; i<s.indent_levels; i++)
+			st += s.indent_char;
+
+		this.inStr = st;
+
+		// If verify_html if false force *[*]
+		if (!s.verify_html) {
+			s.valid_elements = '*[*]';
+			s.extended_valid_elements = '';
 		}
 
-		if (value != null && value != "")
-			element.setAttribute(name, value);
+		this.fillStr = s.entity_encoding == "named" ? "&nbsp;" : "&#160;";
+		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(); // 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) {
+		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;
+
+			// Split tag/attrs
+			p = this.split(/\[|\]/, s);
+			if (p == null || p.length < 1)
+				t = s.toUpperCase();
+			else
+				t = p[0].toUpperCase();
+
+			// Handle all tag names
+			tn = this.split('/', t);
+			for (y=0; y<tn.length; y++) {
+				r = {};
+
+				r.tag = tn[y];
+				r.forceAttribs = null;
+				r.defaultAttribs = null;
+				r.validAttribValues = null;
+
+				// Handle prefixes
+				px = r.tag.charAt(0);
+				r.forceOpen = px == '+';
+				r.removeEmpty = px == '-';
+				r.fill = px == '#';
+				r.tag = r.tag.replace(/\+|-|#/g, '');
+				r.oTagName = tn[0].replace(/\+|-|#/g, '').toLowerCase();
+				r.isWild = new RegExp('\\*|\\?|\\+', 'g').test(r.tag);
+				r.validRe = new RegExp(this._wildcardToRe('^' + r.tag + '$'));
+
+				// Setup valid attributes
+				if (p.length > 1) {
+					r.vAttribsRe = '^(';
+					a = this.split(/\|/, p[1]);
+
+					for (i=0; i<a.length; i++) {
+						t = a[i];
+
+						if (t.charAt(0) == '!') {
+							a[i] = t = t.substring(1);
+
+							if (!r.reqAttribsRe)
+								r.reqAttribsRe = '\\s+(' + t;
+							else
+								r.reqAttribsRe += '|' + t;
+						}
+
+						av = new RegExp('(=|:|<)(.*?)$').exec(t);
+						t = t.replace(new RegExp('(=|:|<).*?$'), '');
+						if (av && av.length > 0) {
+							if (av[0].charAt(0) == ':') {
+								if (!r.forceAttribs)
+									r.forceAttribs = tinyMCE.clearArray(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();
+
+					//tinyMCE.debug(r.tag, r.oTagName, r.vAttribsRe, r.vAttribsReWC);
+				} 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
-			element.removeAttribute(name);
+			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: // Element
+				hc = n.hasChildNodes();
+
+				el = xd.createElement(n.nodeName.toLowerCase());
+
+				at = n.attributes;
+				for (i=at.length-1; i>-1; i--) {
+					no = at[i];
+
+					if (no.specified && no.nodeValue)
+						el.setAttribute(no.nodeName.toLowerCase(), no.nodeValue);
+				}
+
+				if (!hc && !this.closeElementsRe.test(n.nodeName))
+					el.appendChild(xd.createTextNode(""));
+
+				xn = xn.appendChild(el);
+				break;
+
+			case 3: // Text
+				xn.appendChild(xd.createTextNode(n.nodeValue));
+				return;
+
+			case 8: // Comment
+				xn.appendChild(xd.createComment(n.nodeValue));
+				return;
+		}
+
+		if (hc) {
+			cn = n.childNodes;
+
+			for (i=0, l=cn.length; i<l; i++)
+				this._convertToXML(cn[i], xn);
+		}
+	},
+
+	serializeNodeAsHTML : function(n, inn) {
+		var en, no, h = '', i, l, t, st, r, cn, va = false, f = false, at, hc, cr;
+
+		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();
+
+				if (st)
+					break;
+
+				// 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) {
+						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) {
+						// Serialize wildcard attributes
+						at = n.attributes;
+						for (i=at.length-1; i>-1; i--) {
+							no = at[i];
+							if (no.specified && r.vAttribsRe.test(no.nodeName))
+								t += this._serializeAttribute(n, r, no.nodeName);
+						}
+					} else {
+						// Serialize specific attributes
+						for (i=r.vAttribs.length-1; i>-1; i--)
+							t += this._serializeAttribute(n, r, r.vAttribs[i]);
+					}
+
+					// Serialize mce_ atts
+					if (!this.settings.on_save) {
+						at = this.mceAttribs;
+
+						for (no in at) {
+							if (at[no])
+								t += this._serializeAttribute(n, r, at[no]);
+						}
+					}
+
+					// Check for required attribs
+					if (r.reqAttribsRe && !t.match(r.reqAttribsRe))
+						t = null;
+
+					// Close these
+					if (t != null && this.closeElementsRe.test(n.nodeName))
+						return t + ' />';
+
+					if (t != null)
+						h += t + '>';
+
+					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.isIE ? '' : n.nodeValue;
+
+				return this.xmlEncode(n.nodeValue);
+
+			case 8: // Comment
+				if (st)
+					break;
+
+				return "<!--" + this._trimComment(n.nodeValue) + "-->";
+		}
+
+		if (hc) {
+			cn = n.childNodes;
+
+			for (i=0, l=cn.length; i<l; i++)
+				h += this.serializeNodeAsHTML(cn[i]);
+		}
+
+		// Fill empty nodes
+		if (f && !hc)
+			h += this.fillStr;
+
+		// End element
+		if (t != null && va)
+			h += '</' + en + '>';
+
+		return h;
+	},
+
+	_serializeAttribute : function(n, r, an) {
+		var av = '', t, os = this.settings.on_save;
+
+		if (os && (an.indexOf('mce_') == 0 || an.indexOf('_moz') == 0))
+			return '';
+
+		if (os && this.mceAttribs[an])
+			av = this._getAttrib(n, this.mceAttribs[an]);
+
+		if (av.length == 0)
+			av = this._getAttrib(n, an);
+
+		if (av.length == 0 && r.defaultAttribs && (t = r.defaultAttribs[an])) {
+			av = t;
+
+			if (av == "mce_empty")
+				return " " + an + '=""';
+		}
+
+		if (r.forceAttribs && (t = r.forceAttribs[an]))
+			av = t;
+
+		if (os && av.length != 0 && 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;
+
+		// Replace BR in pre elements to \n
+		h = h.replace(/<pre([^>]*)>(.*?)<\/pre>/gi, function (a, b, c) {
+			c = c.replace(/<br\s*\/>/gi, '\n');
+			return '<pre' + b + '>' + c + '</pre>';
+		});
+
+		h = h.replace(/\r/g, ''); // Windows sux, isn't carriage return a thing of the past :)
+		h = '\n' + h;
+		h = h.replace(new RegExp('\\n\\s+', 'gi'), '\n'); // Remove previous formatting
+		h = h.replace(this.nlBeforeRe, '\n<$1$2>');
+		h = h.replace(this.nlAfterRe, '<$1$2>\n');
+		h = h.replace(this.nlBeforeAfterRe, '\n<$1$2$3>\n');
+		h += '\n';
+
+		//tinyMCE.debug(h);
+
+		while ((i = h.indexOf('\n', i + 1)) != -1) {
+			if ((l = h.substring(li + 1, i)).length != 0) {
+				if (this.ouRe.test(l) && p.length >= s.indent_levels)
+					p = p.substring(s.indent_levels);
+
+				o += p + l + '\n';
+	
+				if (this.inRe.test(l))
+					p += this.inStr;
+			}
+
+			li = i;
+		}
+
+		//tinyMCE.debug(h);
+
+		return o;
+	},
+
+	xmlEncode : function(s) {
+		var cl = this;
+
+		this._setupEntities(); // Will intialize lookup table
+
+		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) {
+		// Remove mce_src, mce_href
+		s = s.replace(new RegExp('\\smce_src=\"[^\"]*\"', 'gi'), "");
+		s = s.replace(new RegExp('\\smce_href=\"[^\"]*\"', 'gi'), "");
+
+		return s;
+	},
+
+	_getAttrib : function(e, n, d) {
+		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;
+
+		// Setup entities
+		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;
+
+		// Setup default rule
+		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) {
+			// Mark elements
+			if (n.mce_serialized == this.serializationId)
+				return true;
+
+			n.setAttribute('mce_serialized', this.serializationId);
+		} else {
+			// Search lookup table for text nodes  and comments
+			for (i=0; i<this.serializedNodes.length; i++) {
+				if (this.serializedNodes[i] == n)
+					return true;
+			}
+
+			this.serializedNodes[this.serializedNodes.length] = n;
+		}
+
+		return false;
 	}
 
-	if (!this.imgElement && this.selectedInstance) {
-		this.selectedInstance.contentDocument.execCommand("insertimage", false, "#mce_temp_url#");
-		tinyMCE.imgElement = this.getElementByAttributeValue(this.selectedInstance.contentDocument.body, "img", "src", "#mce_temp_url#");
+	};
+
+/* 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]) + '"';
+		}
 	}
 
-	if (this.imgElement) {
-		src = eval(tinyMCE.settings['urlconvertor_callback'] + "(src, tinyMCE.imgElement);");
+	o += !h ? ' />' : '>' + h + '</' + tn + '>';
 
-		// Use alt as title if it's undefined
-		if (typeof(title) == "undefined")
-			title = alt;
+	return o;
+};
 
-		tinyMCE.setAttrib(this.imgElement, 'src', src, true);
-		tinyMCE.setAttrib(this.imgElement, 'mce_real_src', src, true);
-		tinyMCE.setAttrib(this.imgElement, 'alt', alt, true);
-		tinyMCE.setAttrib(this.imgElement, 'title', title, true);
-		tinyMCE.setAttrib(this.imgElement, 'align', align, true);
-		tinyMCE.setAttrib(this.imgElement, 'border', border);
-		tinyMCE.setAttrib(this.imgElement, 'hspace', hspace);
-		tinyMCE.setAttrib(this.imgElement, 'vspace', vspace);
-		tinyMCE.setAttrib(this.imgElement, 'width', width);
-		tinyMCE.setAttrib(this.imgElement, 'height', height);
-		tinyMCE.setAttrib(this.imgElement, 'border', border);
-        tinyMCE.setAttrib(this.imgElement, 'onmouseover', onmouseover, true);
-        tinyMCE.setAttrib(this.imgElement, 'onmouseout', onmouseout, true);
+TinyMCE_Engine.prototype.createTag = function(d, tn, a, h) {
+	var o = d.createElement(tn);
 
-		// Fix for bug #989846 - Image resize bug
-		if (width && width != "")
-			this.imgElement.style.pixelWidth = width;
+	if (a) {
+		for (n in a) {
+			if (typeof(a[n]) != 'function' && a[n] != null)
+				tinyMCE.setAttrib(o, n, a[n]);
+		}
+	}
 
-		if (height && height != "")
-			this.imgElement.style.pixelHeight = height;
+	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];
 	}
-}
 
-function TinyMCE_getElementByAttributeValue(node, element_name, attrib, value) {
-	var elements = this.getElementsByAttributeValue(node, element_name, attrib, value);
-	if (elements.length == 0)
-		return null;
+	return o;
+};
 
-	return elements[0];
-}
+TinyMCE_Engine.prototype.isBlockElement = function(n) {
+	return n != null && n.nodeType == 1 && this.blockRegExp.test(n.nodeName);
+};
 
-function TinyMCE_getElementsByAttributeValue(node, element_name, attrib, value) {
-	var elements = new Array();
+TinyMCE_Engine.prototype.getParentBlockElement = function(n, r) {
+	return this.getParentNode(n, function(n) {
+		return tinyMCE.isBlockElement(n);
+	}, r);
 
-	if (node && node.nodeName.toLowerCase() == element_name) {
-		if (node.getAttribute(attrib).indexOf(value) != -1)
-			elements[elements.length] = node;
+	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;
+
+	// 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 (node.hasChildNodes) {
-		for (var x=0; x<node.childNodes.length; x++) {
-			var childElements = this.getElementsByAttributeValue(node.childNodes[x], element_name, attrib, value);
-			for (var i=0; i<childElements.length; i++)
-				elements[elements.length] = childElements[i];
+	if (tinyMCE.isRealIE) {
+		// Since MSIE handles invalid HTML better that valid XHTML we
+		// need to make some things invalid. <hr /> gets converted to <hr>.
+		h = h.replace(/\s\/>/g, '>');
+
+		// Since MSIE auto generated emtpy P tags some times we must tell it to keep the real ones
+		h = h.replace(/<p([^>]*)>\u00A0?<\/p>/gi, '<p$1 mce_keep="true">&nbsp;</p>'); // Keep empty paragraphs
+		h = h.replace(/<p([^>]*)>\s*&nbsp;\s*<\/p>/gi, '<p$1 mce_keep="true">&nbsp;</p>'); // Keep empty paragraphs
+		h = h.replace(/<p([^>]*)>\s+<\/p>/gi, '<p$1 mce_keep="true">&nbsp;</p>'); // Keep empty paragraphs
+
+		// Remove first comment
+		e.innerHTML = tinyMCE.uniqueTag + h;
+		e.firstChild.removeNode(true);
+
+		// Remove weird auto generated empty paragraphs unless it's supposed to be there
+		nl = e.getElementsByTagName("p");
+		for (i=nl.length-1; i>=0; i--) {
+			n = nl[i];
+
+			if (n.nodeName == 'P' && !n.hasChildNodes() && !n.mce_keep)
+				n.parentNode.removeChild(n);
 		}
+	} else {
+		h = this.fixGeckoBaseHREFBug(1, e, h);
+		e.innerHTML = h;
+		this.fixGeckoBaseHREFBug(2, e, h);
 	}
+};
 
-	return elements;
-}
+TinyMCE_Engine.prototype.getOuterHTML = function(e) {
+	if (tinyMCE.isIE)
+		return e.outerHTML;
 
-function TinyMCE_getParentElement(node, names, attrib_name, attrib_value) {
-	var namesAr = names.split(',');
+	var d = e.ownerDocument.createElement("body");
+	d.appendChild(e.cloneNode(true));
+	return d.innerHTML;
+};
 
-	if (node == null)
-		return null;
+TinyMCE_Engine.prototype.setOuterHTML = function(e, h, d) {
+	var d = typeof(d) == "undefined" ? e.ownerDocument : d, i, nl, t;
 
-	do {
-		for (var i=0; i<namesAr.length; i++) {
-			if (node.nodeName.toLowerCase() == namesAr[i].toLowerCase() || 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;
+	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;
 				}
 			}
 		}
-	} while (node = node.parentNode);
+	}
 
+	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;
+
+	// Compatiblity with old scripts where f param was a attribute string
+	if (f && typeof(f) == 'string')
+		return this.getParentElement(n, na, function(no) {return tinyMCE.getAttrib(no, f) != '';});
+
+	return this.getParentNode(n, function(n) {
+		return ((n.nodeType == 1 && !re) || (re && re.test(n.nodeName))) && (!f || f(n));
+	}, r);
+};
+
+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;
-}
+};
 
-function TinyMCE_convertURL(url, node, on_save) {
-	var fileProto = (document.location.protocol == "file:");
+TinyMCE_Engine.prototype.getAttrib = function(elm, name, dv) {
+	var v;
 
-	// Something is wrong, remove weirdness
-	url = tinyMCE.regexpReplace(url, '(http|https):///', '/');
+	if (typeof(dv) == "undefined")
+		dv = "";
 
-	// Mailto link or anchor (Pass through)
-	if (url.indexOf('mailto:') != -1 || url.indexOf('javascript:') != -1 || tinyMCE.regexpReplace(url,'[ \t\r\n\+]|%20','').charAt(0) == "#")
-		return url;
+	// Not a element
+	if (!elm || elm.nodeType != 1)
+		return dv;
 
-	// Fix relative/Mozilla
-	if (!tinyMCE.isMSIE && !on_save && url.indexOf("://") == -1 && url.charAt(0) != '/')
-		return tinyMCE.settings['base_href'] + url;
+	v = elm.getAttribute(name);
 
-	// Convert to relative urls
-	if (on_save && tinyMCE.settings['relative_urls']) {
-		var urlParts = tinyMCE.parseURL(url);
+	// Try className for class attrib
+	if (name == "class" && !v)
+		v = elm.className;
 
-		// If not absolute url, do nothing (Mozilla)
-		if (!urlParts['protocol'] && !tinyMCE.isMSIE) {
-			var urlPrefix = "http://";
-			urlPrefix += document.location.hostname;
-			if (document.location.port != "")
-				urlPrefix += document.location.port;
+	// Workaround for a issue with Firefox 1.5rc2+
+	if (tinyMCE.isGecko && name == "src" && elm.src != null && elm.src != "")
+		v = elm.src;
 
-			url = urlPrefix + url;
-			urlParts = tinyMCE.parseURL(url);
+	// Workaround for a issue with Firefox 1.5rc2+
+	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;
+
+	// 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.switchClass = function(ei, c) {
+	var e;
+
+	if (tinyMCE.switchClassCache[ei])
+		e = tinyMCE.switchClassCache[ei];
+	else
+		e = tinyMCE.switchClassCache[ei] = document.getElementById(ei);
+
+	if (e) {
+		// Keep tile mode
+		if (tinyMCE.settings.button_tile_map && e.className && e.className.indexOf('mceTiledButton') == 0)
+			c = 'mceTiledButton ' + c;
+
+		e.className = c;
+	}
+};
+
+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;
 		}
+	}
 
-		var tmpUrlParts = tinyMCE.parseURL(tinyMCE.settings['document_base_url']);
+	return null;
+};
 
-		// Link is within this site
-		if (urlParts['host'] == tmpUrlParts['host'] && (!urlParts['port'] || urlParts['port'] == tmpUrlParts['port']))
-			return tinyMCE.convertAbsoluteURLToRelativeURL(tinyMCE.settings['document_base_url'], url);
+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;
+		}
 	}
 
-	// Remove current domain
-	if (!fileProto && tinyMCE.settings['remove_script_host']) {
-		var start = document.location.protocol + "//" + document.location.hostname + "/";
+	return null;
+};
 
-		if (url.indexOf(start) == 0)
-			url = url.substring(start.length-1);
+TinyMCE_Engine.prototype.selectElements = function(n, na, f) {
+	var i, a = [], nl, x;
 
-		// Add first slash if missing on a absolute URL
-		if (!tinyMCE.settings['relative_urls'] && url.indexOf('://') == -1 && url.charAt(0) != '/')
-			url = '/' + url;
+	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 url;
-}
+	return a;
+};
 
-/**
- * Parses a URL in to its diffrent components.
- */
-function TinyMCE_parseURL(url_str) {
+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)
+	};
+};
+
+/* file:jscripts/tiny_mce/classes/TinyMCE_URL.class.js */
+
+TinyMCE_Engine.prototype.parseURL = function(url_str) {
 	var urlParts = new Array();
 
 	if (url_str) {
@@ -2074,6 +5442,7 @@
 		urlParts['host'] = url_str.substring(lastPos, pos);
 
 		// Get port
+		urlParts['port'] = "";
 		lastPos = pos;
 		if (url_str.charAt(pos) == ':') {
 			pos = url_str.indexOf('/', lastPos);
@@ -2083,7 +5452,11 @@
 		// Get path
 		lastPos = pos;
 		pos = url_str.indexOf('?', lastPos);
+
 		if (pos == -1)
+			pos = url_str.indexOf('#', lastPos);
+
+		if (pos == -1)
 			pos = url_str.length;
 
 		urlParts['path'] = url_str.substring(lastPos, pos);
@@ -2091,27 +5464,64 @@
 		// Get query
 		lastPos = pos;
 		if (url_str.charAt(pos) == '?') {
-			pos = url_str.length;
+			pos = url_str.indexOf('#');
+			pos = (pos == -1) ? url_str.length : pos;
 			urlParts['query'] = url_str.substring(lastPos+1, pos);
 		}
+
+		// Get anchor
+		lastPos = pos;
+		if (url_str.charAt(pos) == '#') {
+			pos = url_str.length;
+			urlParts['anchor'] = url_str.substring(lastPos+1, pos);
+		}
 	}
 
 	return urlParts;
-}
+};
 
-/**
- * Converts an absolute path to relative path.
- */
-function TinyMCE_convertAbsoluteURLToRelativeURL(base_url, url_to_relative) {
+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 outputString = "";
+	var outPath = "";
+	var forceSlash = false;
 
+	if (targetURL.path == "")
+		targetURL.path = "/";
+	else
+		forceSlash = true;
+
 	// Crop away last path part
-	base_url = base_url.substring(0, base_url.lastIndexOf('/'));
+	base_url = baseURL.path.substring(0, baseURL.path.lastIndexOf('/'));
 	strTok1 = base_url.split('/');
-	strTok2 = url_to_relative.split('/');
+	strTok2 = targetURL.path.split('/');
 
 	if (strTok1.length >= strTok2.length) {
 		for (var i=0; i<strTok1.length; i++) {
@@ -2132,1502 +5542,1743 @@
 	}
 
 	if (breakPoint == 1)
-		return url_to_relative;
+		return targetURL.path;
 
 	for (var i=0; i<(strTok1.length-(breakPoint-1)); i++)
-		outputString += "../";
+		outPath += "../";
 
 	for (var i=breakPoint-1; i<strTok2.length; i++) {
 		if (i != (breakPoint-1))
-			outputString += "/" + strTok2[i];
+			outPath += "/" + strTok2[i];
 		else
-			outputString += strTok2[i];
+			outPath += strTok2[i];
 	}
 
-	return outputString;
-}
+	targetURL.protocol = null;
+	targetURL.host = null;
+	targetURL.port = null;
+	targetURL.path = outPath == "" && forceSlash ? "/" : outPath;
 
-function TinyMCE_getParam(name, default_value, strip_whitespace, split_chr) {
-	var value = (typeof(this.settings[name]) == "undefined") ? default_value : this.settings[name];
+	// Remove document prefix from local anchors
+	var fileName = baseURL.path;
+	var pos;
 
-	if (strip_whitespace)
-		value = tinyMCE.regexpReplace(value, "[ \t\r\n]", "");
+	if ((pos = fileName.lastIndexOf('/')) != -1)
+		fileName = fileName.substring(pos + 1);
 
-	if (typeof(split_chr) != "undefined" && split_chr != null) {
-		value = value.split(split_chr);
-		var outArray = new Array();
+	// Is local anchor
+	if (fileName == targetURL.path && targetURL.anchor != "")
+		targetURL.path = "";
 
-		for (var i=0; i<value.length; i++) {
-			if (value[i] && value[i] != "")
-				outArray[outArray.length] = value[i];
-		}
+	// If empty and not local anchor force filename or slash
+	if (targetURL.path == "" && !targetURL.anchor)
+		targetURL.path = fileName != "" ? fileName : "/";
 
-		value = outArray;
-	}
+	return this.serializeURL(targetURL);
+};
 
-	return value;
-}
+TinyMCE_Engine.prototype.convertRelativeToAbsoluteURL = function(base_url, relative_url) {
+	var baseURL = this.parseURL(base_url), baseURLParts, relURLParts;
+	var relURL = this.parseURL(relative_url);
 
-function TinyMCE_getLang(name, default_value, parse_entities) {
-	var value = (typeof(tinyMCELang[name]) == "undefined") ? default_value : tinyMCELang[name];
+	if (relative_url == "" || relative_url.indexOf('://') != -1 || /^(mailto:|javascript:|#|\/)/.test(relative_url))
+		return relative_url;
 
-	if (parse_entities) {
-		var el = document.createElement("div");
-		el.innerHTML = value;
-		value = el.innerHTML;
+	// Split parts
+	baseURLParts = baseURL['path'].split('/');
+	relURLParts = relURL['path'].split('/');
+
+	// Remove empty chunks
+	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();
 
-	return value;
-}
+	// Merge relURLParts chunks
+	var newRelURLParts = new Array();
+	var numBack = 0;
+	for (var i=relURLParts.length-1; i>=0; i--) {
+		if (relURLParts[i].length == 0 || relURLParts[i] == ".")
+			continue;
 
-function TinyMCE_replaceVar(replace_haystack, replace_var, replace_str) {
-	var re = new RegExp('{\\\$' + replace_var + '}', 'g');
-	return replace_haystack.replace(re, replace_str);
-}
+		if (relURLParts[i] == '..') {
+			numBack++;
+			continue;
+		}
 
-function TinyMCE_replaceVars(replace_haystack, replace_vars) {
-	for (var key in replace_vars) {
-		var value = replace_vars[key];
-		replace_haystack = tinyMCE.replaceVar(replace_haystack, key, value);
+		if (numBack > 0) {
+			numBack--;
+			continue;
+		}
+
+		newRelURLParts[newRelURLParts.length] = relURLParts[i];
 	}
 
-	return replace_haystack;
-}
+	relURLParts = newRelURLParts.reverse();
 
-function TinyMCE_triggerNodeChange(focus) {
-	if (tinyMCE.settings['handleNodeChangeCallback']) {
-		if (tinyMCE.selectedInstance) {
-			var editorId = tinyMCE.selectedInstance.editorId;
-			var elm = tinyMCE.selectedInstance.getFocusElement();
-			var undoIndex = -1;
-			var undoLevels = -1;
-			var anySelection = false;
-			var selectedText = "";
+	// Remove end from absolute path
+	var len = baseURLParts.length-numBack;
+	var absPath = (len <= 0 ? "" : "/") + baseURLParts.slice(0, len).join('/') + "/" + relURLParts.join('/');
+	var start = "", end = "";
 
-			if (tinyMCE.isMSIE) {
-				var documentRef = tinyMCE.selectedInstance.contentWindow.document;
-				var rng = documentRef.selection.createRange();
-				selectedText = rng.text;
-			} else
-				selectedText = tinyMCE.selectedInstance.contentWindow.getSelection().toString();
+	// Build output URL
+	relURL.protocol = baseURL.protocol;
+	relURL.host = baseURL.host;
+	relURL.port = baseURL.port;
 
-			if (tinyMCE.selectedElement)
-				anySelection = (tinyMCE.selectedElement.nodeName.toLowerCase() == "img") || (selectedText && selectedText.length > 0);
+	// Re-add trailing slash if it's removed
+	if (relURL.path.charAt(relURL.path.length-1) == "/")
+		absPath += "/";
 
-			if (tinyMCE.settings['custom_undo_redo']) {
-				undoIndex = tinyMCE.selectedInstance.undoIndex;
-				undoLevels = tinyMCE.selectedInstance.undoLevels.length;
-			}
+	relURL.path = absPath;
 
-			// Trigger plugin nodechanges
-			var plugins = tinyMCE.getParam('plugins', '', true, ',');
-			for (var i=0; i<plugins.length; i++) {
-				if (eval("typeof(TinyMCE_" + plugins[i] +  "_handleNodeChange)") != "undefined")
-					eval("TinyMCE_" + plugins[i] +  "_handleNodeChange(editorId, elm, undoIndex, undoLevels, tinyMCE.selectedInstance.visualAid, anySelection);");
-			}
+	return this.serializeURL(relURL);
+};
 
-			eval(tinyMCE.settings['handleNodeChangeCallback'] + "(editorId, elm, undoIndex, undoLevels, tinyMCE.selectedInstance.visualAid, anySelection);");
-		}
-	}
+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 (tinyMCE.selectedInstance && (typeof(focus) == "undefined" || focus))
-		this.selectedInstance.contentWindow.focus();
-}
+	// Pass through file protocol
+	if (prot == "file:")
+		return url;
 
-function TinyMCE__customCleanup(type, content) {
-	// Call custom cleanup
-	var customCleanup = tinyMCE.settings['cleanup_callback'];
-	if (customCleanup != "" && eval("typeof(" + customCleanup + ")") != "undefined")
-		content = eval(customCleanup + "(type, content);");
+	// Something is wrong, remove weirdness
+	url = tinyMCE.regexpReplace(url, '(http|https):///', '/');
 
-	// Trigger plugin cleanups
-	var plugins = tinyMCE.getParam('plugins', '', true, ',');
-	for (var i=0; i<plugins.length; i++) {
-		if (eval("typeof(TinyMCE_" + plugins[i] +  "_cleanup)") != "undefined")
-			content = eval("TinyMCE_" + plugins[i] +  "_cleanup(type, content);");
+	// Mailto link or anchor (Pass through)
+	if (url.indexOf('mailto:') != -1 || url.indexOf('javascript:') != -1 || tinyMCE.regexpReplace(url,'[ \t\r\n\+]|%20','').charAt(0) == "#")
+		return url;
+
+	// Fix relative/Mozilla
+	if (!tinyMCE.isIE && !on_save && url.indexOf("://") == -1 && url.charAt(0) != '/')
+		return tinyMCE.settings['base_href'] + url;
+
+	// Handle relative URLs
+	if (on_save && tinyMCE.getParam('relative_urls')) {
+		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']);
+
+		// Force relative
+		if (urlParts['host'] == tmpUrlParts['host'] && (urlParts['port'] == tmpUrlParts['port']))
+			return tinyMCE.convertAbsoluteURLToRelativeURL(tinyMCE.settings['document_base_url'], curl);
 	}
 
-	return content;
-}
+	// Handle absolute URLs
+	if (!tinyMCE.getParam('relative_urls')) {
+		var urlParts = tinyMCE.parseURL(url);
+		var baseUrlParts = tinyMCE.parseURL(tinyMCE.settings['base_href']);
 
-function TinyMCE_getContent(editor_id) {
-	if (typeof(editor_id) != "undefined")
-		tinyMCE.selectedInstance = tinyMCE._getInstanceById(editor_id);
+		// Force absolute URLs from relative URLs
+		url = tinyMCE.convertRelativeToAbsoluteURL(tinyMCE.settings['base_href'], url);
 
-	if (tinyMCE.selectedInstance) {
-		var cleanedHTML = tinyMCE._cleanupHTML(this.selectedInstance.contentWindow.document, tinyMCE.settings, this.selectedInstance.contentWindow.document.body, false, true);
-		return cleanedHTML;
+		// If anchor and path is the same page
+		if (urlParts['anchor'] && urlParts['path'] == baseUrlParts['path'])
+			return "#" + urlParts['anchor'];
 	}
 
-	return null;
-}
+	// Remove current domain
+	if (tinyMCE.getParam('remove_script_host')) {
+		var start = "", portPart = "";
 
-function TinyMCE_setContent(html_content) {
-	if (tinyMCE.selectedInstance) {
-		var doc = this.selectedInstance.contentWindow.document;
+		if (port != "")
+			portPart = ":" + port;
 
-		// Call custom cleanup code
-		html_content = tinyMCE._customCleanup("insert_to_editor", html_content);
+		start = prot + "//" + host + portPart + "/";
 
-		tinyMCE._setHTML(doc, html_content);
-		doc.body.innerHTML = tinyMCE._cleanupHTML(doc, tinyMCE.settings, doc.body);
-		tinyMCE.handleVisualAid(doc.body, true, tinyMCE.selectedInstance.visualAid);
+		if (url.indexOf(start) == 0)
+			url = url.substring(start.length-1);
 	}
-}
 
-function TinyMCE_importThemeLanguagePack(theme_name) {
-	if (typeof(theme_name) == "undefined")
-		theme_name = tinyMCE.settings['theme'];
+	return url;
+};
 
-	document.write('<script language="javascript" type="text/javascript" src="' + tinyMCE.baseURL + '/themes/' + theme_name + '/langs/' + tinyMCE.settings['language'] +  '.js"></script>');	
-}
+TinyMCE_Engine.prototype.convertAllRelativeURLs = function(body) {
+	var i, elms, src, href, mhref, msrc;
 
-function TinyMCE_importPluginLanguagePack(theme_name, valid_languages) {
-	var lang = "uk";
+	// 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');
 
-	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'];
+		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);
+		}
 	}
 
-	document.write('<script language="javascript" type="text/javascript" src="' + tinyMCE.baseURL + '/plugins/' + theme_name + '/langs/' + lang +  '.js"></script>');	
-}
+	// Convert all link URL:s to absolute URL
+	elms = body.getElementsByTagName("a");
+	for (i=0; i<elms.length; i++) {
+		href = tinyMCE.getAttrib(elms[i], 'href');
 
-/**
- * Adds themeurl, settings and lang to HTML code.
- */
-function TinyMCE_applyTemplate(html, args) {
-	html = tinyMCE.replaceVar(html, "themeurl", tinyMCE.themeURL);
+		mhref = tinyMCE.getAttrib(elms[i], 'mce_href');
+		if (mhref != "")
+			href = mhref;
 
-	if (typeof(args) != "undefined")
-		html = tinyMCE.replaceVars(html, args);
+		if (href && href != "") {
+			href = tinyMCE.convertRelativeToAbsoluteURL(tinyMCE.settings['base_href'], href);
+			elms[i].setAttribute("href", href);
+		}
+	}
+};
 
-	html = tinyMCE.replaceVars(html, tinyMCE.settings);
-	html = tinyMCE.replaceVars(html, tinyMCELang);
+/* file:jscripts/tiny_mce/classes/TinyMCE_Array.class.js */
 
-	return html;
-}
+TinyMCE_Engine.prototype.clearArray = function(a) {
+	var n;
 
-function TinyMCE_openWindow(template, args, skip_lang) {
-	var html, width, height, x, y, resizable, scrollbars, url;
+	for (n in a)
+		a[n] = null;
 
-	tinyMCE.windowArgs = args;
+	return a;
+};
 
-	html = template['html'];
-	if (!(width = template['width']))
-		width = 320;
+TinyMCE_Engine.prototype.explode = function(d, s) {
+	var ar = s.split(d), oar = new Array(), i;
 
-	if (!(height = template['height']))
-		height = 200;
+	for (i = 0; i<ar.length; i++) {
+		if (ar[i] != "")
+			oar[oar.length] = ar[i];
+	}
 
-	// Add to height in M$ due to SP2 WHY DON'T YOU GUYS IMPLEMENT innerWidth of windows!!
-	if (tinyMCE.isMSIE)
-		height += 30;
+	return oar;
+};
 
-	x = parseInt(screen.width / 2.0) - (width / 2.0);
-	y = parseInt(screen.height / 2.0) - (height / 2.0);
+/* file:jscripts/tiny_mce/classes/TinyMCE_Event.class.js */
 
-	resizable = (args && args['resizable']) ? args['resizable'] : "no";
-	scrollbars = (args && args['scrollbars']) ? args['scrollbars'] : "no";
-	url = tinyMCE.baseURL + "/themes/" + tinyMCE.getParam("theme") + "/" + template['file'];
+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'];
 
-	if (html) {
-		html = tinyMCE.replaceVar(html, "css", this.settings['popups_css']);
-		html = tinyMCE.applyTemplate(html, args, skip_lang);
+	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 = "";
 
-		var win = window.open("", "mcePopup", "top=" + y + ",left=" + x + ",scrollbars=" + scrollbars + ",modal=yes,width=" + width + ",height=" + height + ",resizable=" + resizable);
-		win.document.write(html);
-		win.document.close();
-		win.resizeTo(width, height);
-		win.focus();
-	} else {
-		if (tinyMCE.isMSIE && resizable != 'yes') {
-            var features = "resizable:" + resizable 
-                + ";scroll:"
-                + scrollbars + ";status:yes;center:yes;help:no;dialogWidth:"
-                + width + "px;dialogHeight:" + height + "px;";
+			for (x=0; x<events.length; x++) {
+				if ((event = tinyMCE.getAttrib(elms[i], events[x])) != '') {
+					event = tinyMCE.cleanupEventStr("" + event);
 
-			window.showModalDialog(url, window, features);
-		} else {
-			var win = window.open(url, "mcePopup", "top=" + y + ",left=" + x + ",scrollbars=" + scrollbars + ",modal=yes,width=" + width + ",height=" + height + ",resizable=" + resizable);
-			win.resizeTo(width, height);
-			win.focus();
+					if (!state)
+						event = "return true;" + event;
+					else
+						event = event.replace(/^return true;/gi, '');
+
+					elms[i].removeAttribute(events[x]);
+					elms[i].setAttribute(events[x], event);
+				}
+			}
 		}
 	}
-}
+};
 
-function TinyMCE_handleVisualAid(element, deep, state) {
-	var tableElement = null;
+TinyMCE_Engine.prototype._eventPatch = function(editor_id) {
+	var n, inst, win, e;
 
-	// Remove visual aid elements
-/*	if (!state && element.getAttribute && element.getAttribute('mceVisualAid') == "true") {
-		element.parentNode.removeChild(element);
-		return;
-	}*/
+	// Remove odd, error
+	if (typeof(tinyMCE) == "undefined")
+		return true;
 
-	switch (element.nodeName.toLowerCase()) {
-		case "table":
-			var cssText = element.getAttribute("border") == 0 ? tinyMCE.settings['visual_table_style'] : "";
+	try {
+		// Try selected instance first
+		if (tinyMCE.selectedInstance) {
+			win = tinyMCE.selectedInstance.getWin();
 
-			element.style.cssText = state ? cssText : "";
+			if (win && win.event) {
+				e = win.event;
 
-			for (var y=0; y<element.rows.length; y++) {
-				for (var x=0; x<element.rows[y].cells.length; x++)
-					element.rows[y].cells[x].style.cssText = state ? cssText : "";
-			}
+				if (!e.target)
+					e.target = e.srcElement;
 
-			break;
-
-/*		case "a":
-			var name = element.getAttribute("name");
-			if (name && name != "" && state) {
-				//element.innerHTML += '<img mceVisualAid="true" src="' + (tinyMCE.themeURL + "/images/anchor.gif") + '" />';
+				TinyMCE_Engine.prototype.handleEvent(e);
 				return;
 			}
+		}
 
-			break;*/
-	}
+		// Search for it
+		for (n in tinyMCE.instances) {
+			inst = tinyMCE.instances[n];
 
-	if (deep && element.hasChildNodes()) {
-		for (var i=0; i<element.childNodes.length; i++)
-			tinyMCE.handleVisualAid(element.childNodes[i], deep, state);
-	}
-}
+			if (!tinyMCE.isInstance(inst))
+				continue;
 
-function TinyMCE_getAttrib(elm, name, default_value) {
-	var v = elm.getAttribute(name);
-	return (v && v != "") ? v : default_value;
-}
+			inst.select();
+			win = inst.getWin();
 
-function TinyMCE_setAttrib(element, name, value, no_fix_value) {
-	if (typeof(value) == "number")
-		value = "" + value;
+			if (win && win.event) {
+				e = win.event;
 
-	if (!no_fix_value && value != null && value != -1) {
-		var re = new RegExp('[^0-9%]', 'g');
-		value = value.replace(re, '');
+				if (!e.target)
+					e.target = e.srcElement;
+
+				TinyMCE_Engine.prototype.handleEvent(e);
+				return;
+			}
+		}
+	} catch (ex) {
+		// Ignore error if iframe is pointing to external URL
 	}
+};
 
-	if (value != null && value != "" && value != -1)
-		element.setAttribute(name, value);
-	else
-		element.removeAttribute(name);
-}
+TinyMCE_Engine.prototype.findEvent = function(e) {
+	var n, inst;
 
-function TinyMCE__setHTML(doc, html_content) {
-	// Weird MSIE bug, <p><hr /></p> breaks runtime?
-	if (tinyMCE.isMSIE) {
-		var re = new RegExp('<p><hr /></p>', 'g');
-		html_content = html_content.replace(re, "<hr>");
+	if (e)
+		return e;
+
+	for (n in tinyMCE.instances) {
+		inst = tinyMCE.instances[n];
+
+		if (tinyMCE.isInstance(inst) && inst.getWin().event)
+			return inst.getWin().event;
 	}
 
-	doc.body.innerHTML = html_content;
+	return null;
+};
 
-	// *Content duplication bug fix
-	if (tinyMCE.isMSIE && 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 node = paras[i];
-			while ((node = node.parentNode) != null) {
-				if (node.nodeName.toLowerCase() == "p")
-					node.outerHTML = node.innerHTML;
-			}
-		}
+TinyMCE_Engine.prototype.unloadHandler = function() {
+	tinyMCE.triggerSave(true, true);
+};
 
-		// Content duplication bug fix (Seems to be word crap)
-		var html = doc.body.createTextRange().htmlText;
+TinyMCE_Engine.prototype.addEventHandlers = function(inst) {
+	this.setEventHandlers(inst, 1);
+};
 
-		if (html.indexOf('="mso') != -1) {
-			for (var i=0; i<doc.body.all.length; i++) {
-				var el = doc.body.all[i];
-				el.removeAttribute("className","",0);
-				el.removeAttribute("style","",0);
-			}
+TinyMCE_Engine.prototype.setEventHandlers = function(inst, s) {
+	var doc = inst.getDoc(), ie, ot, i, f = s ? tinyMCE.addEvent : tinyMCE.removeEvent;
 
-			html = doc.body.createTextRange().htmlText;
+	ie = ['keypress', 'keyup', 'keydown', 'click', 'mouseup', 'mousedown', 'controlselect', 'dblclick'];
+	ot = ['keypress', 'keyup', 'keydown', 'click', 'mouseup', 'mousedown', 'focus', 'blur', 'dragdrop'];
 
-			html = tinyMCE.regexpReplace(html, "<o:p><\/o:p>", "<br />");
-			html = tinyMCE.regexpReplace(html, "<o:p>&nbsp;<\/o:p>", "");
-			html = tinyMCE.regexpReplace(html, "<st1:.*?>", "");
-			html = tinyMCE.regexpReplace(html, "<p><\/p>", "");
-			html = tinyMCE.regexpReplace(html, "<p><\/p>\r\n<p><\/p>", "");
-			html = tinyMCE.regexpReplace(html, "<p>&nbsp;<\/p>", "<br />");
-			html = tinyMCE.regexpReplace(html, "<p>\s*(<p>\s*)?", "<p>");
-			html = tinyMCE.regexpReplace(html, "<\/p>\s*(<\/p>\s*)?", "</p>");
-		}
+	inst.switchSettings();
 
-		// Always set the htmlText output
-		doc.body.innerHTML = html;
-	}
-}
+	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);
 
-function TinyMCE__getElementById(element_id) {
-	var elm = document.getElementById(element_id);
-	if (!elm) {
-		// Check for element in forms
-		for (var j=0; j<document.forms.length; j++) {
-			for (var k=0; k<document.forms[j].elements.length; k++) {
-				if (document.forms[j].elements[k].name == element_id) {
-					elm = document.forms[j].elements[k];
-					break;
-				}
-			}
-		}
+		eval('try { doc.designMode = "On"; } catch(e) {}'); // Force designmode
 	}
+};
 
-	return elm;
-}
+TinyMCE_Engine.prototype.onMouseMove = function() {
+	var inst, lh;
 
-function TinyMCE_getEditorId(form_element) {
-	var mceControl = this._getInstanceById(form_element);
-	if (!mceControl)
-		return null;
+	// Fix for IE7 bug where it's not restoring hover on anchors correctly
+	if (tinyMCE.lastHover) {
+		lh = tinyMCE.lastHover;
 
-	return mceControl.editorId;
-}
+		// 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;
 
-function TinyMCE__getInstanceById(editor_id) {
-	var mceControl = this.instances[editor_id];
-	if (!mceControl) {
-		for (var instanceName in tinyMCE.instances) {
-			var instance = tinyMCE.instances[instanceName];
-			if (instance.formTargetElementId == editor_id) {
-				mceControl = instance;
-				break;
-			}
+		tinyMCE.lastHover = null;
+	}
+
+	if (!tinyMCE.hasMouseMoved) {
+		inst = tinyMCE.selectedInstance;
+
+		// Workaround for bug #1437457 (Odd MSIE bug)
+		if (inst.isFocused) {
+			inst.undoBookmark = inst.selection.getBookmark();
+			tinyMCE.hasMouseMoved = true;
 		}
 	}
 
-	return mceControl;
-}
+//	tinyMCE.cancelEvent(inst.getWin().event);
+//	return false;
+};
 
-function TinyMCE_queryInstanceCommandValue(editor_id, command) {
-	var mceControl = tinyMCE._getInstanceById(editor_id);
-	if (mceControl)
-		return mceControl.queryCommandValue(command);
+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;
-}
+};
 
-function TinyMCE_queryInstanceCommandState(editor_id, command) {
-	var mceControl = tinyMCE._getInstanceById(editor_id);
-	if (mceControl)
-		return mceControl.queryCommandState(command);
+TinyMCE_Engine.prototype.addEvent = function(o, n, h) {
+	// Add cleanup for all non unload events
+	if (n != 'unload') {
+		function clean() {
+			var ex;
 
-	return null;
-}
+			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
+			}
+		}
 
-function TinyMCE_getWindowArg(name, default_value) {
-	return (typeof(this.windowArgs[name]) == "undefined") ? default_value : this.windowArgs[name];
-}
+		// Add memory cleaner
+		tinyMCE.addEvent(window, 'unload', clean);
+	}
 
-function TinyMCE_getCSSClasses(editor_id, doc) {
-	var output = new Array();
+	if (o.attachEvent)
+		o.attachEvent("on" + n, h);
+	else
+		o.addEventListener(n, h, false);
+};
 
-	// Is cached, use that
-	if (typeof(tinyMCE.cssClasses) != "undefined")
-		return tinyMCE.cssClasses;
+TinyMCE_Engine.prototype.removeEvent = function(o, n, h) {
+	if (o.detachEvent)
+		o.detachEvent("on" + n, h);
+	else
+		o.removeEventListener(n, h, false);
+};
 
-	if (typeof(editor_id) == "undefined" && typeof(doc) == "undefined") {
-		var instance;
+TinyMCE_Engine.prototype.addSelectAccessibility = function(e, s, w) {
+	// Add event handlers 
+	if (!s._isAccessible) {
+		s.onkeydown = tinyMCE.accessibleEventHandler;
+		s.onblur = tinyMCE.accessibleEventHandler;
+		s._isAccessible = true;
+		s._win = w;
+	}
 
-		for (var instanceName in tinyMCE.instances) {
-			instance = tinyMCE.instances[instanceName];
-			break;
+	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;
+
+	// Unpiggyback onchange on blur
+	if (e.type == "blur") {
+		if (elm.oldonchange) {
+			elm.onchange = elm.oldonchange;
+			elm.oldonchange = null;
 		}
 
-		doc = instance.contentWindow.document;
+		return true;
 	}
 
-	if (typeof(doc) == "undefined") {
-		var instance = tinyMCE._getInstanceById(editor_id);
-		doc = instance.contentWindow.document;
+	// Piggyback onchange
+	if (elm.nodeName == "SELECT" && !elm.oldonchange) {
+		elm.oldonchange = elm.onchange;
+		elm.onchange = null;
 	}
 
-	if (doc) {
-		var styles = tinyMCE.isMSIE ? doc.styleSheets : doc.styleSheets;
+	// Execute onchange and remove piggyback
+	if (e.keyCode == 13 || e.keyCode == 32) {
+		elm.onchange = elm.oldonchange;
+		elm.onchange();
+		elm.oldonchange = null;
 
-		if (styles && styles.length > 0) {
-			var csses = null;
+		tinyMCE.cancelEvent(e);
+		return false;
+	}
 
-			// Just ignore any errors
-			eval("try {var csses = tinyMCE.isMSIE ? doc.styleSheets(0).rules : doc.styleSheets[0].cssRules;} catch(e) {}");
-			if (!csses)
-				return null;
+	return true;
+};
 
-			for (var i=0; i<csses.length; i++) {
-				var selectorText = csses[i].selectorText;
+TinyMCE_Engine.prototype._resetIframeHeight = function() {
+	var ife;
 
-				// Can be multiple rules per selector
-				var rules = selectorText.split(',');
-				for (var c=0; c<rules.length; c++) {
-					// Invalid rule
-					if (rules[c].indexOf(' ') != -1 || rules[c].indexOf(':') != -1 || rules[c].indexOf('mce_') == 1)
-						continue;
+	if (tinyMCE.isRealIE) {
+		ife = tinyMCE.selectedInstance.iframeElement;
 
-					// Is class rule
-					if (rules[c].indexOf('.') != -1) {
-						//alert(rules[c].substring(rules[c].indexOf('.')));
-						output[output.length] = rules[c].substring(rules[c].indexOf('.')+1);
-					}
-				}
-			}
+/*		if (ife._oldWidth) {
+			ife.style.width = ife._oldWidth;
+			ife.width = ife._oldWidth;
+		}*/
+
+		if (ife._oldHeight) {
+			ife.style.height = ife._oldHeight;
+			ife.height = ife._oldHeight;
 		}
 	}
+};
 
-	// Cache em
-	if (output.length > 0)
-		tinyMCE.cssClasses = output;
+/* file:jscripts/tiny_mce/classes/TinyMCE_Selection.class.js */
 
-	return output;
-}
+function TinyMCE_Selection(inst) {
+	this.instance = inst;
+};
 
-function TinyMCE_regexpReplace(in_str, reg_exp, replace_str, opts) {
-	if (typeof(opts) == "undefined")
-		opts = 'g';
+TinyMCE_Selection.prototype = {
+	getSelectedHTML : function() {
+		var inst = this.instance;
+		var e, r = this.getRng(), h;
 
-	var re = new RegExp(reg_exp, opts);
-	return in_str.replace(re, replace_str);
-}
+		if (!r)
+			return null;
 
-function TinyMCE_cleanupEventStr(str) {
-	str = str.replace('function anonymous()\n{\n', '');
-	str = str.replace('\n}', '');
+		e = document.createElement("body");
 
-	return str;
-}
+		if (r.cloneContents)
+			e.appendChild(r.cloneContents());
+		else if (typeof(r.item) != 'undefined' || typeof(r.htmlText) != 'undefined')
+			e.innerHTML = r.item ? r.item(0).outerHTML : r.htmlText;
+		else
+			e.innerHTML = r.toString(); // Failed, use text for now
 
-// TinyMCEControl
-function TinyMCEControl(settings) {
-	// Undo levels
-	this.undoLevels = new Array();
-	this.undoIndex = 0;
+		h = tinyMCE._cleanupHTML(inst, inst.contentDocument, inst.settings, e, e, false, true, false);
 
-	// Default settings
-	this.settings = settings;
-	this.settings['theme'] = tinyMCE.getParam("theme", "default");
-	this.settings['width'] = tinyMCE.getParam("width", -1);
-	this.settings['height'] = tinyMCE.getParam("height", -1);
+		// When editing always use fonts internaly
+		if (tinyMCE.getParam("convert_fonts_to_spans"))
+			tinyMCE.convertSpansToFonts(inst.getDoc());
 
-	// Functions
-	this.execCommand = TinyMCEControl_execCommand;
-	this.queryCommandValue = TinyMCEControl_queryCommandValue;
-	this.queryCommandState = TinyMCEControl_queryCommandState;
-	this.onAdd = TinyMCEControl_onAdd;
-	this.getFocusElement = TinyMCEControl_getFocusElement;
-	this.autoResetDesignMode = TinyMCEControl_autoResetDesignMode;
-}
+		return h;
+	},
 
-function TinyMCEControl_autoResetDesignMode() {
-	// Add fix for tab/style.display none/block problems in Gecko
-	if (!tinyMCE.isMSIE && tinyMCE.settings['auto_reset_designmode']) {
-		var sel = this.contentWindow.getSelection();
+	getSelectedText : function() {
+		var inst = this.instance;
+		var d, r, s, t;
 
-		// Werid, where that cursor selection
-		if (sel.rangeCount == 0)
-			this.contentWindow.document.designMode = "On";
-	}
-}
+		if (tinyMCE.isIE) {
+			d = inst.getDoc();
 
-function TinyMCEControl_execCommand(command, user_interface, value) {
-	function getAttrib(elm, name) {
-		return elm.getAttribute(name) ? elm.getAttribute(name) : "";
-	}
+			if (d.selection.type == "Text") {
+				r = d.selection.createRange();
+				t = r.text;
+			} else
+				t = '';
+		} else {
+			s = this.getSel();
 
-	// Mozilla issue
-	if (!tinyMCE.isMSIE && !this.useCSS) {
-		this.contentWindow.document.execCommand("useCSS", false, true);
-		this.useCSS = true;
-	}
+			if (s && s.toString)
+				t = s.toString();
+			else
+				t = '';
+		}
 
-	//alert("command: " + command + ", user_interface: " + user_interface + ", value: " + value);
-	this.contentDocument = this.contentWindow.document; // <-- Strange!!
+		return t;
+	},
 
-	// Call theme execcommand
-	if (tinyMCE._themeExecCommand(this.editorId, this.contentDocument.body, command, user_interface, value))
-		return;
+	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();
 
-	// Add undo level of operation
-	if (command != "mceAddUndoLevel" && command != "Undo" && command != "Redo" && command != "mceImage" && command != "mceLink" && command != "mceToggleVisualAid" && (command != "mceInsertTable" && !user_interface))
-		this.execCommand("mceAddUndoLevel");
+		sx = vp.left;
+		sy = vp.top;
 
-	// Fix align on images
-	if (this.getFocusElement() && this.getFocusElement().nodeName.toLowerCase() == "img") {
-		var align = this.getFocusElement().getAttribute('align');
+		if (tinyMCE.isSafari || tinyMCE.isOpera || simple)
+			return {rng : rng, scrollX : sx, scrollY : sy};
 
-		switch (command) {
-			case "JustifyLeft":
-				if (align == 'left')
-					this.getFocusElement().removeAttribute('align');
-				else
-					this.getFocusElement().setAttribute('align', 'left');
+		if (tinyMCE.isIE) {
+			if (rng.item) {
+				e = rng.item(0);
 
-				tinyMCE.triggerNodeChange();
-				return;
+				nl = b.getElementsByTagName(e.nodeName);
+				for (i=0; i<nl.length; i++) {
+					if (e == nl[i]) {
+						sp = i;
+						break;
+					}
+				}
 
-			case "JustifyCenter":
-				if (align == 'middle')
-					this.getFocusElement().removeAttribute('align');
-				else
-					this.getFocusElement().setAttribute('align', 'middle');
+				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));
 
-				tinyMCE.triggerNodeChange();
-				return;
+				trng = rng.duplicate();
+				trng.collapse(true);
+				sp = Math.abs(trng.move('character', xx));
 
-			case "JustifyRight":
-				if (align == 'right')
-					this.getFocusElement().removeAttribute('align');
-				else
-					this.getFocusElement().setAttribute('align', 'right');
+				trng = rng.duplicate();
+				trng.collapse(false);
+				le = Math.abs(trng.move('character', xx)) - sp;
 
-				tinyMCE.triggerNodeChange();
-				return;
+				return {
+					start : sp - bp,
+					length : le,
+					scrollX : sx,
+					scrollY : sy
+				};
+			}
 		}
-	}
 
-	if (tinyMCE.settings['force_br_newlines']) {
-		var documentRef = this.contentWindow.document;
-		var alignValue = "";
+		if (tinyMCE.isGecko) {
+			s = this.getSel();
+			e = this.getFocusElement();
 
-		if (documentRef.selection.type != "Control") {
-			switch (command) {
-					case "JustifyLeft":
-						alignValue = "left";
-						break;
+			if (!s)
+				return null;
 
-					case "JustifyCenter":
-						alignValue = "center";
+			if (e && e.nodeName == 'IMG') {
+				/*nl = b.getElementsByTagName('IMG');
+				for (i=0; i<nl.length; i++) {
+					if (e == nl[i]) {
+						sp = i;
 						break;
+					}
+				}*/
 
-					case "JustifyFull":
-						alignValue = "justify";
-						break;
-
-					case "JustifyRight":
-						alignValue = "right";
-						break;
+				return {
+					start : -1,
+					end : -1,
+					index : sp,
+					scrollX : sx,
+					scrollY : sy
+				};
 			}
 
-			if (alignValue != "") {
-				var rng = documentRef.selection.createRange();
+			// Caret or selection
+			if (s.anchorNode == s.focusNode && s.anchorOffset == s.focusOffset) {
+				e = this._getPosText(b, s.anchorNode, s.focusNode);
 
-				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>");
+				if (!e)
+					return {scrollX : sx, scrollY : sy};
 
-				tinyMCE.triggerNodeChange();
-				return;
+				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
+				};
 			}
 		}
-	}
 
-	switch (command) {
-		case "Cut":
-		case "Copy":
-		case "Paste":
-			var cmdFailed = false;
+		return null;
+	},
 
-			// Try executing command
-			eval('try {this.contentDocument.execCommand(command, user_interface, value);} catch (e) {cmdFailed = true;}');
+	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();
 
-			// Alert error in gecko if command failed
-			if (tinyMCE.isGecko && cmdFailed) {
-				// Confirm more info
-				if (confirm(tinyMCE.getLang('lang_clipboard_msg')))
-					window.open('http://www.mozilla.org/editor/midasdemo/securityprefs.html', 'mceExternal');
+		if (!bookmark)
+			return false;
 
-				return;
-			} else
-				tinyMCE.triggerNodeChange();
-		break;
+		if (tinyMCE.isSafari) {
+			sel.setBaseAndExtent(bookmark.rng.startContainer, bookmark.rng.startOffset, bookmark.rng.endContainer, bookmark.rng.endOffset);
+			return true;
+		}
 
-		case "mceLink":
-			var selectedText = "";
+		if (tinyMCE.isRealIE) {
+			if (bookmark.rng) {
+				try {
+					bookmark.rng.select();
+				} catch (ex) {
+					// Ignore
+				}
 
-			if (tinyMCE.isMSIE) {
-				var documentRef = this.contentWindow.document;
-				var rng = documentRef.selection.createRange();
-				selectedText = rng.text;
-			} else
-				selectedText = this.contentWindow.getSelection().toString();
-
-			if (!tinyMCE.linkElement) {
-				if ((tinyMCE.selectedElement.nodeName.toLowerCase() != "img") && (selectedText.length <= 0))
-					return;
+				return true;
 			}
 
-			var href = "", target = "", title = "", onclick = "", action = "insert";
+			win.focus();
 
-			if (tinyMCE.selectedElement.nodeName.toLowerCase() == "a")
-				tinyMCE.linkElement = tinyMCE.selectedElement;
+			if (bookmark.tag) {
+				rng = b.createControlRange();
 
-			// Is anchor not a link
-			if (tinyMCE.linkElement != null && getAttrib(tinyMCE.linkElement, 'href') == "")
-				tinyMCE.linkElement = null;
+				nl = b.getElementsByTagName(bookmark.tag);
 
-			if (tinyMCE.linkElement) {
-				href = getAttrib(tinyMCE.linkElement, 'href');
-				target = getAttrib(tinyMCE.linkElement, 'target');
-				title = getAttrib(tinyMCE.linkElement, 'title');
-                onclick = getAttrib(tinyMCE.linkElement, 'mce_onclick');
+				if (nl.length > bookmark.index) {
+					try {
+						rng.addElement(nl[bookmark.index]);
+					} catch (ex) {
+						// Might be thrown if the node no longer exists
+					}
+				}
+			} else {
+				// Try/catch needed since this operation breaks when TinyMCE is placed in hidden divs/tabs
+				try {
+					// Incorrect bookmark
+					if (bookmark.start < 0)
+						return true;
 
-				// Try old onclick to if copy/pasted content
-				if (onclick == "")
-					onclick = getAttrib(tinyMCE.linkElement, 'onclick');
+					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;
+				}
+			}
 
-				onclick = tinyMCE.cleanupEventStr(onclick);
+			rng.select();
 
-				// Fix for drag-drop/copy paste bug in Mozilla
-				mceRealHref = getAttrib(tinyMCE.linkElement, 'mce_real_href');
-				if (mceRealHref != "")
-					href = mceRealHref;
+			win.scrollTo(bookmark.scrollX, bookmark.scrollY);
+			return true;
+		}
 
-				href = eval(tinyMCE.settings['urlconvertor_callback'] + "(href, tinyMCE.linkElement, true);");
-				action = "update";
+		if (tinyMCE.isGecko || tinyMCE.isOpera) {
+			if (bookmark.rng) {
+				sel.removeAllRanges();
+				sel.addRange(bookmark.rng);
 			}
 
-			if (this.settings['insertlink_callback']) {
-				var returnVal = eval(this.settings['insertlink_callback'] + "(href, target, title, onclick, action);");
-				if (returnVal && returnVal['href'])
-					tinyMCE.insertLink(returnVal['href'], returnVal['target'], returnVal['title'], returnVal['onclick']);
-			} else {
-				tinyMCE.openWindow(this.insertLinkTemplate, {href : href, target : target, title : title, onclick : onclick, action : action});
+			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
+				}
 			}
-		break;
 
-		case "mceImage":
-			var src = "", alt = "", border = "", hspace = "", vspace = "", width = "", height = "", align = "";
-			var title = "", onmouseover = "", onmouseout = "", action = "insert";;
+			/*
+			if (typeof(bookmark.index) != 'undefined') {
+				tinyMCE.selectElements(b, 'IMG', function (n) {
+					if (bookmark.index-- == 0) {
+						// Select image in Gecko here
+					}
 
-			if (tinyMCE.selectedElement != null && tinyMCE.selectedElement.nodeName.toLowerCase() == "img")
-				tinyMCE.imgElement = tinyMCE.selectedElement;
+					return false;
+				});
+			}
+			*/
 
-			if (tinyMCE.imgElement) {
-				// Is it a internal MCE visual aid image, then skip this one.
-                name = getAttrib(tinyMCE.imgElement, 'name');
-                if (name.substring(0, 4)=='mce_')
-                    return;
+			win.scrollTo(bookmark.scrollX, bookmark.scrollY);
+			return true;
+		}
 
-				src = getAttrib(tinyMCE.imgElement, 'src');
-				alt = getAttrib(tinyMCE.imgElement, 'alt');
+		return false;
+	},
 
-				// Try polling out the title
-				if (alt == "")
-					alt = getAttrib(tinyMCE.imgElement, 'title');
+	_getPosText : function(r, sn, en) {
+		var w = document.createTreeWalker(r, NodeFilter.SHOW_TEXT, null, false), n, p = 0, d = {};
 
-				border = getAttrib(tinyMCE.imgElement, 'border');
-				hspace = getAttrib(tinyMCE.imgElement, 'hspace');
-				vspace = getAttrib(tinyMCE.imgElement, 'vspace');
-				width = getAttrib(tinyMCE.imgElement, 'width');
-				height = getAttrib(tinyMCE.imgElement, 'height');
-				align = getAttrib(tinyMCE.imgElement, 'align');
-                onmouseover = getAttrib(tinyMCE.imgElement, 'onmouseover');
-                onmouseout = getAttrib(tinyMCE.imgElement, 'onmouseout');
-                title = getAttrib(tinyMCE.imgElement, 'title');
+		while ((n = w.nextNode()) != null) {
+			if (n == sn)
+				d.start = p;
 
-				onmouseover = tinyMCE.cleanupEventStr(onmouseover);
-				onmouseout = tinyMCE.cleanupEventStr(onmouseout);
+			if (n == en) {
+				d.end = p;
+				return d;
+			}
 
-				// Fix for drag-drop/copy paste bug in Mozilla
-				mceRealSrc = getAttrib(tinyMCE.imgElement, 'mce_real_src');
-				if (mceRealSrc != "")
-					src = mceRealSrc;
+			p += n.nodeValue ? n.nodeValue.length : 0;
+		}
 
-				src = eval(tinyMCE.settings['urlconvertor_callback'] + "(src, tinyMCE.imgElement, true);");
-				action = "update";
-			}
+		return null;
+	},
 
-			if (this.settings['insertimage_callback']) {
-				var returnVal = eval(this.settings['insertimage_callback'] + "(src, alt, border, hspace, vspace, width, height, align, title, onmouseover, onmouseout, action);");
-				if (returnVal && returnVal['src'])
-					tinyMCE.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(this.insertImageTemplate, {src : src, alt : alt, border : border, hspace : hspace, vspace : vspace, width : width, height : height, align : align, title : title, onmouseover : onmouseover, onmouseout : onmouseout, action : action});
-		break;
+	_getTextPos : function(r, sp, ep) {
+		var w = document.createTreeWalker(r, NodeFilter.SHOW_TEXT, null, false), n, p = 0, d = {};
 
-		case "mceCleanupWord":
-			if (tinyMCE.isMSIE) {
-				var html = this.contentDocument.body.createTextRange().htmlText;
+		while ((n = w.nextNode()) != null) {
+			p += n.nodeValue ? n.nodeValue.length : 0;
 
-				if (html.indexOf('="mso') != -1) {
-					tinyMCE._setHTML(this.contentDocument, this.contentDocument.body.innerHTML);
-					html = tinyMCE._cleanupHTML(this.contentDocument, this.settings, this.contentDocument.body, this.visualAid);
-				}
+			if (p >= sp && !d.startNode) {
+				d.startNode = n;
+				d.startOffset = sp - (p - n.nodeValue.length);
+			}
 
-				this.contentDocument.body.innerHTML = html;
+			if (p >= ep) {
+				d.endNode = n;
+				d.endOffset = ep - (p - n.nodeValue.length);
+
+				return d;
 			}
-		break;
+		}
 
-		case "mceCleanup":
-			tinyMCE._setHTML(this.contentDocument, this.contentDocument.body.innerHTML);
-			var cleanedHTML = tinyMCE._cleanupHTML(this.contentDocument, this.settings, this.contentDocument.body, this.visualAid);
-			this.contentDocument.body.innerHTML = cleanedHTML;
-		break;
+		return null;
+	},
 
-		case "mceAnchor":
-			if (!user_interface) {
-				var aElm = tinyMCE.getParentElement(this.getFocusElement(), "a", "name");
-				if (aElm)
-					aElm.setAttribute('name', value);
-				else {
-					this.contentDocument.execCommand("fontname", false, "#mce_temp_font#");
-					var elementArray = tinyMCE.getElementsByAttributeValue(this.contentDocument.body, "font", "face", "#mce_temp_font#");
-					for (var x=0; x<elementArray.length; x++) {
-						elm = elementArray[x];
+	selectNode : function(node, collapse, select_text_node, to_start) {
+		var inst = this.instance, sel, rng, nodes;
 
-						var aElm = this.contentDocument.createElement("a");
-						aElm.setAttribute('name', value);
+		if (!node)
+			return;
 
-						if (elm.hasChildNodes()) {
-							for (var i=0; i<elm.childNodes.length; i++)
-								aElm.appendChild(elm.childNodes[i].cloneNode(true));
-						}
+		if (typeof(collapse) == "undefined")
+			collapse = true;
 
-						elm.parentNode.replaceChild(aElm, elm);
-					}
-				}
+		if (typeof(select_text_node) == "undefined")
+			select_text_node = false;
 
-				tinyMCE.triggerNodeChange();
-			}
-			break;
+		if (typeof(to_start) == "undefined")
+			to_start = true;
 
-		case "mceReplaceContent":
-			var selectedText = "";
+		if (inst.settings.auto_resize)
+			inst.resizeToContent();
 
-			if (tinyMCE.isMSIE) {
-				var documentRef = this.contentWindow.document;
-				var rng = documentRef.selection.createRange();
-				selectedText = rng.text;
-			} else
-				selectedText = this.contentWindow.getSelection().toString();
+		if (tinyMCE.isRealIE) {
+			rng = inst.getDoc().body.createTextRange();
 
-			if (selectedText.length > 0) {
-				value = tinyMCE.replaceVar(value, "selection", selectedText);
-				tinyMCE.execCommand('mceInsertContent',false,value);
+			try {
+				rng.moveToElementText(node);
+
+				if (collapse)
+					rng.collapse(to_start);
+
+				rng.select();
+			} catch (e) {
+				// Throws illigal agrument in MSIE some times
 			}
+		} else {
+			sel = this.getSel();
 
-			tinyMCE.triggerNodeChange();
-		break;
+			if (!sel)
+				return;
 
-		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 (tinyMCE.isSafari) {
+				sel.setBaseAndExtent(node, 0, node, node.innerText.length);
 
-				if (targetNode) {
-					targetNode.setAttribute(value['name'], value['value']);
-					tinyMCE.triggerNodeChange();
+				if (collapse) {
+					if (to_start)
+						sel.collapseToStart();
+					else
+						sel.collapseToEnd();
 				}
+
+				this.scrollToNode(node);
+
+				return;
 			}
-		break;
 
-		case "mceSetCSSClass":
-			var selectedText = false;
+			rng = inst.getDoc().createRange();
 
-			if (tinyMCE.isMSIE) {
-				var documentRef = this.contentWindow.document;
-				var rng = documentRef.selection.createRange();
-				selectedText = (rng.text && rng.text.length > 0);
+			if (select_text_node) {
+				// Find first textnode in tree
+				nodes = tinyMCE.getNodeTree(node, new Array(), 3);
+				if (nodes.length > 0)
+					rng.selectNodeContents(nodes[0]);
+				else
+					rng.selectNodeContents(node);
 			} else
-				selectedText = (this.contentWindow.getSelection().toString().length > 0);
+				rng.selectNode(node);
 
-			if (selectedText) {
-				this.contentDocument.execCommand("removeformat", false, null);
-				this.contentDocument.execCommand("fontname", false, "#mce_temp_font#");
-				var elementArray = tinyMCE.getElementsByAttributeValue(this.contentDocument.body, "font", "face", "#mce_temp_font#");
-/*				this.contentDocument.execCommand("createlink", false, "#mce_temp_url#");
-				var elementArray = tinyMCE.getElementsByAttributeValue(this.contentDocument.body, "a", "href", "#mce_temp_url#");
-*/
-				// Change them all
-				for (var x=0; x<elementArray.length; x++) {
-					elm = elementArray[x];
-					if (elm) {
-						var spanElm = this.contentDocument.createElement("span");
-						spanElm.className = value;
-						if (elm.hasChildNodes()) {
-							for (var i=0; i<elm.childNodes.length; i++)
-								spanElm.appendChild(elm.childNodes[i].cloneNode(true));
-						}
+			if (collapse) {
+				// Special treatment of textnode collapse
+				if (!to_start && node.nodeType == 3) {
+					rng.setStart(node, node.nodeValue.length);
+					rng.setEnd(node, node.nodeValue.length);
+				} else
+					rng.collapse(to_start);
+			}
 
-						elm.parentNode.replaceChild(spanElm, elm);
-					}
-				}
+			sel.removeAllRanges();
+			sel.addRange(rng);
+		}
 
-				//tinyMCE.setContent(this.contentDocument.body.innerHTML);
-			} else {
-				var targetElm = this.getFocusElement();
-				if (tinyMCE.selectedElement.nodeName.toLowerCase() == "img" || tinyMCE.selectedElement.nodeName.toLowerCase() == "table")
-					targetElm = tinyMCE.selectedElement;
+		this.scrollToNode(node);
 
-				var targetNode = tinyMCE.getParentElement(targetElm, "p,img,span,div,td,h1,h2,h3,h4,h5,h6,pre,address");
+		// Set selected element
+		tinyMCE.selectedElement = null;
+		if (node.nodeType == 1)
+			tinyMCE.selectedElement = node;
+	},
 
-				// Mozilla img patch
-				if (!tinyMCE.isMSIE && !targetNode)
-					targetNode = tinyMCE.imgElement;
+	scrollToNode : function(node) {
+		var inst = this.instance, w = inst.getWin(), vp = inst.getViewPort(), pos = tinyMCE.getAbsPosition(node), cvp, p, cwin;
 
-				if (targetNode) {
-					if (targetNode.nodeName.toLowerCase() == "span" && (!value || value == "")) {
-						if (targetNode.hasChildNodes()) {
-							for (var i=0; i<targetNode.childNodes.length; i++)
-								targetNode.parentNode.insertBefore(targetNode.childNodes[i].cloneNode(true), targetNode);
-						}
+		// Only scroll if out of visible area
+		if (pos.absLeft < vp.left || pos.absLeft > vp.left + vp.width || pos.absTop < vp.top || pos.absTop > vp.top + (vp.height-25))
+			w.scrollTo(pos.absLeft, pos.absTop - vp.height + 25);
 
-						targetNode.parentNode.removeChild(targetNode);
-					} else {
-						if (value != null && value != "")
-							targetNode.className = value;
-						else {
-							targetNode.removeAttribute("className");
-							targetNode.removeAttribute("class");
-						}
+		// Scroll container window
+		if (inst.settings.auto_resize) {
+			cwin = inst.getContainerWin();
+			cvp = tinyMCE.getViewPort(cwin);
+			p = this.getAbsPosition(node);
+
+			if (p.absLeft < cvp.left || p.absLeft > cvp.left + cvp.width || p.absTop < cvp.top || p.absTop > cvp.top + cvp.height)
+				cwin.scrollTo(p.absLeft, p.absTop - cvp.height + 25);
+		}
+	},
+
+	getAbsPosition : function(n) {
+		var pos = tinyMCE.getAbsPosition(n), ipos = tinyMCE.getAbsPosition(this.instance.iframeElement);
+
+		return {
+			absLeft : ipos.absLeft + pos.absLeft,
+			absTop : ipos.absTop + pos.absTop
+		};
+	},
+
+	getSel : function() {
+		var inst = this.instance;
+
+		if (tinyMCE.isRealIE)
+			return inst.getDoc().selection;
+
+		return inst.contentWindow.getSelection();
+	},
+
+	getRng : function() {
+		var s = this.getSel();
+
+		if (s == null)
+			return null;
+
+		if (tinyMCE.isRealIE)
+			return s.createRange();
+
+		if (tinyMCE.isSafari && !s.getRangeAt)
+			return '' + window.getSelection();
+
+		return s.getRangeAt(0);
+	},
+
+	getFocusElement : function() {
+		var inst = this.instance, doc, rng, sel, elm;
+
+		if (tinyMCE.isRealIE) {
+			doc = inst.getDoc();
+			rng = doc.selection.createRange();
+
+	//		if (rng.collapse)
+	//			rng.collapse(true);
+
+			elm = rng.item ? rng.item(0) : rng.parentElement();
+		} else {
+			if (!tinyMCE.isSafari && inst.isHidden())
+				return inst.getBody();
+
+			sel = this.getSel();
+			rng = this.getRng();
+
+			if (!sel || !rng)
+				return null;
+
+			elm = rng.commonAncestorContainer;
+			//elm = (sel && sel.anchorNode) ? sel.anchorNode : null;
+
+			// Handle selection a image or other control like element such as anchors
+			if (!rng.collapsed) {
+				// Is selection small
+				if (rng.startContainer == rng.endContainer) {
+					if (rng.startOffset - rng.endOffset < 2) {
+						if (rng.startContainer.hasChildNodes())
+							elm = rng.startContainer.childNodes[rng.startOffset];
 					}
 				}
 			}
 
-			tinyMCE.triggerNodeChange();
-		break;
+			// Get the element parent of the node
+			elm = tinyMCE.getParentElement(elm);
 
-		case "mceInsertContent":
-			if (!tinyMCE.isMSIE) {
-				this.contentDocument.execCommand("insertimage", false, "#mce_temp_url#");
-				elm = tinyMCE.getElementByAttributeValue(this.contentDocument.body, "img", "src", "#mce_temp_url#");
+			//if (tinyMCE.selectedElement != null && tinyMCE.selectedElement.nodeName.toLowerCase() == "img")
+			//	elm = tinyMCE.selectedElement;
+		}
 
-				if (elm) {
-					var rng = elm.ownerDocument.createRange();
-					rng.setStartBefore(elm);
-					var fragment = rng.createContextualFragment(value);
-					elm.parentNode.replaceChild(fragment, elm);
-				}
-			} else {
-				var rng = this.contentWindow.document.selection.createRange();
+		return elm;
+	}
 
-				if (rng.item)
-					rng.item(0).outerHTML = value;
-				else
-					rng.pasteHTML(value);
-			}
+	};
 
-			tinyMCE.triggerNodeChange();
-		break;
+/* file:jscripts/tiny_mce/classes/TinyMCE_UndoRedo.class.js */
 
-		case "mceInsertTable":
-			if (user_interface) {
-				var cols = 2, rows = 2, border = 0, cellpadding = "", cellspacing = "", align = "", width = "", height = "", action = "insert", className = "";
+function TinyMCE_UndoRedo(inst) {
+	this.instance = inst;
+	this.undoLevels = new Array();
+	this.undoIndex = 0;
+	this.typingUndoIndex = -1;
+	this.undoRedo = true;
+};
 
-				tinyMCE.tableElement = tinyMCE.getParentElement(this.getFocusElement(), "table");
+TinyMCE_UndoRedo.prototype = {
+	add : function(l) {
+		var b, customUndoLevels, newHTML, inst = this.instance, i, ul, ur;
 
-				if (tinyMCE.tableElement) {
-					var rowsAr = tinyMCE.tableElement.rows;
-					var cols = 0;
-					for (var i=0; i<rowsAr.length; i++)
-						if (rowsAr[i].cells.length > cols)
-							cols = rowsAr[i].cells.length;
+		if (l) {
+			this.undoLevels[this.undoLevels.length] = l;
+			return true;
+		}
 
-					cols = cols;
-					rows = rowsAr.length;
+		if (this.typingUndoIndex != -1) {
+			this.undoIndex = this.typingUndoIndex;
 
-					border = tinyMCE.getAttrib(tinyMCE.tableElement, 'border', border);
-					cellpadding = tinyMCE.getAttrib(tinyMCE.tableElement, 'cellpadding', "");
-					cellspacing = tinyMCE.getAttrib(tinyMCE.tableElement, 'cellspacing', "");
-					width = tinyMCE.getAttrib(tinyMCE.tableElement, 'width', width);
-					height = tinyMCE.getAttrib(tinyMCE.tableElement, 'height', height);
-					align = tinyMCE.getAttrib(tinyMCE.tableElement, 'align', align);
-					className = tinyMCE.getAttrib(tinyMCE.tableElement, tinyMCE.isMSIE ? 'className' : "class", "");
+			if (tinyMCE.typingUndoIndex != -1)
+				tinyMCE.undoIndex = tinyMCE.typingUndoIndex;
+		}
 
-					if (tinyMCE.isMSIE) {
-						width = tinyMCE.tableElement.style.pixelWidth == 0 ? tinyMCE.tableElement.getAttribute("width") : tinyMCE.tableElement.style.pixelWidth;
-						height = tinyMCE.tableElement.style.pixelHeight == 0 ? tinyMCE.tableElement.getAttribute("height") : tinyMCE.tableElement.style.pixelHeight;
-					}
+		newHTML = tinyMCE.trim(inst.getBody().innerHTML);
+		if (this.undoLevels[this.undoIndex] && newHTML != this.undoLevels[this.undoIndex].content) {
+			//tinyMCE.debug(newHTML, this.undoLevels[this.undoIndex].content);
 
-					action = "update";
-				}
+			tinyMCE.dispatchCallback(inst, 'onchange_callback', 'onChange', inst);
 
-				tinyMCE.openWindow(this.insertTableTemplate, {editor_id : this.editorId, cols : cols, rows : rows, border : border, cellpadding : cellpadding, cellspacing : cellspacing, align : align, width : width, height : height, action : action, className : className});
-			} else {
-				var html = '';
-				var cols = 2, rows = 2, border = 0, cellpadding = -1, cellspacing = -1, align, width, height, className;
+			// Time to compress
+			customUndoLevels = tinyMCE.settings['custom_undo_redo_levels'];
+			if (customUndoLevels != -1 && this.undoLevels.length > customUndoLevels) {
+				for (i=0; i<this.undoLevels.length-1; i++)
+					this.undoLevels[i] = this.undoLevels[i+1];
 
-				if (typeof(value) == 'object') {
-					cols = value['cols'];
-					rows = value['rows'];
-					border = value['border'] != "" ? value['border'] : 0;
-					cellpadding = value['cellpadding'] != "" ? value['cellpadding'] : -1;
-					cellspacing = value['cellspacing'] != "" ? value['cellspacing'] : -1;
-					align = value['align'];
-					width = value['width'];
-					height = value['height'];
-					className = value['className'];
-				}
+				this.undoLevels.length--;
+				this.undoIndex--;
 
-				// Update table
-				if (tinyMCE.tableElement) {
-					tinyMCE.setAttrib(tinyMCE.tableElement, 'cellPadding', cellpadding);
-					tinyMCE.setAttrib(tinyMCE.tableElement, 'cellSpacing', cellspacing);
-					tinyMCE.setAttrib(tinyMCE.tableElement, 'border', border);
-					tinyMCE.setAttrib(tinyMCE.tableElement, 'width', width);
-					tinyMCE.setAttrib(tinyMCE.tableElement, 'height', height);
-					tinyMCE.setAttrib(tinyMCE.tableElement, 'align', align, true);
-					tinyMCE.setAttrib(tinyMCE.tableElement, tinyMCE.isMSIE ? 'className' : "class", className, true);
+				// Todo: Implement global undo/redo logic here
+			}
 
-					if (tinyMCE.isMSIE) {
-						tinyMCE.tableElement.style.pixelWidth = (width == null || width == "") ? 0 : width;
-						tinyMCE.tableElement.style.pixelHeight = (height == null || height == "") ? 0 : height;
-					}
+			b = inst.undoBookmark;
 
-					tinyMCE.handleVisualAid(tinyMCE.tableElement, false, this.visualAid);
+			if (!b)
+				b = inst.selection.getBookmark();
 
-					// Fix for stange MSIE align bug
-					tinyMCE.tableElement.outerHTML = tinyMCE.tableElement.outerHTML;
+			this.undoIndex++;
+			this.undoLevels[this.undoIndex] = {
+				content : newHTML,
+				bookmark : b
+			};
 
-					//this.contentWindow.dispatchEvent(createEvent("click"));
+			// Remove all above from global undo/redo
+			ul = tinyMCE.undoLevels;
+			for (i=tinyMCE.undoIndex + 1; i<ul.length; i++) {
+				ur = ul[i].undoRedo;
 
-					tinyMCE.triggerNodeChange();
-					return;
-				}
+				if (ur.undoIndex == ur.undoLevels.length -1)
+					ur.undoIndex--;
 
-				// Create new table
-				html += '<table border="' + border + '" ';
-				var visualAidStyle = this.visualAid ? tinyMCE.settings['visual_table_style'] : "";
+				ur.undoLevels.length--;
+			}
 
-				if (cellpadding != -1)
-					html += 'cellpadding="' + cellpadding + '" ';
+			// Add global undo level
+			tinyMCE.undoLevels[tinyMCE.undoIndex++] = inst;
+			tinyMCE.undoLevels.length = tinyMCE.undoIndex;
 
-				if (cellspacing != -1)
-					html += 'cellspacing="' + cellspacing + '" ';
+			this.undoLevels.length = this.undoIndex + 1;
 
-				if (width != 0 && width != "")
-					html += 'width="' + width + '" ';
+			return true;
+		}
 
-				if (height != 0 && height != "")
-					html += 'height="' + height + '" ';
+		return false;
+	},
 
-				if (align)
-					html += 'align="' + align + '" ';
+	undo : function() {
+		var inst = this.instance;
 
-				if (className)
-					html += 'class="' + className + '" ';
+		// Do undo
+		if (this.undoIndex > 0) {
+			this.undoIndex--;
 
-				if (border == 0 && tinyMCE.settings['visual'])
-					html += 'style="' + visualAidStyle + '" ';
+			tinyMCE.setInnerHTML(inst.getBody(), this.undoLevels[this.undoIndex].content);
+			inst.repaint();
 
-				html += '>';
+			if (inst.settings.custom_undo_redo_restore_selection)
+				inst.selection.moveToBookmark(this.undoLevels[this.undoIndex].bookmark);
+		}
+	},
 
-				for (var y=0; y<rows; y++) {
-					html += "<tr>";
-					for (var x=0; x<cols; x++) {
-						if (border == 0 && tinyMCE.settings['visual'])
-							html += '<td style="' + visualAidStyle + '">';
-						else
-							html += '<td>';
+	redo : function() {
+		var inst = this.instance;
 
-						html += "&nbsp;</td>";
-					}
-					html += "</tr>";
-				}
+		tinyMCE.execCommand("mceEndTyping");
 
-				html += "</table>";
+		if (this.undoIndex < (this.undoLevels.length-1)) {
+			this.undoIndex++;
 
-				this.execCommand('mceInsertContent', false, html);
+			tinyMCE.setInnerHTML(inst.getBody(), this.undoLevels[this.undoIndex].content);
+			inst.repaint();
+
+			if (inst.settings.custom_undo_redo_restore_selection)
+				inst.selection.moveToBookmark(this.undoLevels[this.undoIndex].bookmark);
+		}
+
+		tinyMCE.triggerNodeChange();
+	}
+
+	};
+
+/* file:jscripts/tiny_mce/classes/TinyMCE_ForceParagraphs.class.js */
+
+var TinyMCE_ForceParagraphs = {
+	_insertPara : function(inst, e) {
+		var doc = inst.getDoc(), sel = inst.getSel(), body = inst.getBody(), win = inst.contentWindow, rng = sel.getRangeAt(0);
+		var rootElm = doc.documentElement, blockName = "P", startNode, endNode, startBlock, endBlock;
+		var rngBefore, rngAfter, direct, startNode, startOffset, endNode, endOffset, b = tinyMCE.isOpera ? inst.selection.getBookmark() : null;
+		var paraBefore, paraAfter, startChop, endChop, contents;
+
+		function isEmpty(para) {
+			function isEmptyHTML(html) {
+				return html.replace(new RegExp('[ \t\r\n]+', 'g'), '').toLowerCase() == "";
 			}
-			break;
 
-		case "mceTableInsertRowBefore":
-		case "mceTableInsertRowAfter":
-		case "mceTableDeleteRow":
-		case "mceTableInsertColBefore":
-		case "mceTableInsertColAfter":
-		case "mceTableDeleteCol":
-			var trElement = tinyMCE.getParentElement(this.getFocusElement(), "tr");
-			var tdElement = tinyMCE.getParentElement(this.getFocusElement(), "td");
-			var tableElement = tinyMCE.getParentElement(this.getFocusElement(), "table");
+			// Check for images
+			if (para.getElementsByTagName("img").length > 0)
+				return false;
 
-			// No table just return (invalid command)
-			if (!tableElement)
-				return;
+			// Check for tables
+			if (para.getElementsByTagName("table").length > 0)
+				return false;
 
-			var documentRef = this.contentWindow.document;
-			var tableBorder = tableElement.getAttribute("border");
-			var visualAidStyle = this.visualAid ? tinyMCE.settings['visual_table_style'] : "";
+			// Check for HRs
+			if (para.getElementsByTagName("hr").length > 0)
+				return false;
 
-			// Table has a tbody use that reference
-			if (tableElement.firstChild && tableElement.firstChild.nodeName.toLowerCase() == "tbody")
-				tableElement = tableElement.firstChild;
+			// Check all textnodes
+			var nodes = tinyMCE.getNodeTree(para, new Array(), 3);
+			for (var i=0; i<nodes.length; i++) {
+				if (!isEmptyHTML(nodes[i].nodeValue))
+					return false;
+			}
 
-			if (tableElement && trElement) {
-				switch (command) {
-					case "mceTableInsertRowBefore":
-						var numcells = trElement.cells.length;
-						var rowCount = 0;
-						var tmpTR = trElement;
+			// No images, no tables, no hrs, no text content then it's empty
+			return true;
+		}
 
-						// Count rows
-						while (tmpTR) {
-							if (tmpTR.nodeName.toLowerCase() == "tr")
-								rowCount++;
+	//	tinyMCE.debug(body.innerHTML);
 
-							tmpTR = tmpTR.previousSibling;
-						}
+	//	debug(e.target, sel.anchorNode.nodeName, sel.focusNode.nodeName, rng.startContainer, rng.endContainer, rng.commonAncestorContainer, sel.anchorOffset, sel.focusOffset, rng.toString());
 
-						var r = tableElement.insertRow(rowCount == 0 ? 1 : rowCount-1);
-						for (var i=0; i<numcells; i++) {
-							var newTD = documentRef.createElement("td");
-							newTD.innerHTML = "&nbsp;";
+		// Setup before range
+		rngBefore = doc.createRange();
+		rngBefore.setStart(sel.anchorNode, sel.anchorOffset);
+		rngBefore.collapse(true);
 
-							if (tableBorder == 0)
-								newTD.style.cssText = visualAidStyle;
+		// Setup after range
+		rngAfter = doc.createRange();
+		rngAfter.setStart(sel.focusNode, sel.focusOffset);
+		rngAfter.collapse(true);
 
-							var c = r.appendChild(newTD);
+		// Setup start/end points
+		direct = rngBefore.compareBoundaryPoints(rngBefore.START_TO_END, rngAfter) < 0;
+		startNode = direct ? sel.anchorNode : sel.focusNode;
+		startOffset = direct ? sel.anchorOffset : sel.focusOffset;
+		endNode = direct ? sel.focusNode : sel.anchorNode;
+		endOffset = direct ? sel.focusOffset : sel.anchorOffset;
 
-							if (tdElement.parentNode.childNodes[i].colSpan)
-								c.colSpan = tdElement.parentNode.childNodes[i].colSpan;
-						}
-					break;
+		startNode = startNode.nodeName == "BODY" ? startNode.firstChild : startNode;
+		endNode = endNode.nodeName == "BODY" ? endNode.firstChild : endNode;
 
-					case "mceTableInsertRowAfter":
-						var numcells = trElement.cells.length;
-						var rowCount = 0;
-						var tmpTR = trElement;
-						var documentRef = this.contentWindow.document;
+		// Get block elements
+		startBlock = inst.getParentBlockElement(startNode);
+		endBlock = inst.getParentBlockElement(endNode);
 
-						// Count rows
-						while (tmpTR) {
-							if (tmpTR.nodeName.toLowerCase() == "tr")
-								rowCount++;
+		// If absolute force paragraph generation within
+		if (startBlock && new RegExp('absolute|relative|static', 'gi').test(startBlock.style.position))
+			startBlock = null;
 
-							tmpTR = tmpTR.previousSibling;
-						}
+		if (endBlock && new RegExp('absolute|relative|static', 'gi').test(endBlock.style.position))
+			endBlock = null;
 
-						var r = tableElement.insertRow(rowCount == 0 ? 1 : rowCount);
-						for (var i=0; i<numcells; i++) {
-							var newTD = documentRef.createElement("td");
-							newTD.innerHTML = "&nbsp;";
+		// Use current block name
+		if (startBlock != null) {
+			blockName = startBlock.nodeName;
 
-							if (tableBorder == 0)
-								newTD.style.cssText = visualAidStyle;
+			// Use P instead
+			if (blockName == "TD" || blockName == "TABLE" || (blockName == "DIV" && new RegExp('left|right', 'gi').test(startBlock.style.cssFloat)))
+				blockName = "P";
+		}
 
-							var c = r.appendChild(newTD);
+		// Within a list use normal behaviour
+		if (tinyMCE.getParentElement(startBlock, "OL,UL", null, body) != null)
+			return false;
 
-							if (tdElement.parentNode.childNodes[i].colSpan)
-								c.colSpan = tdElement.parentNode.childNodes[i].colSpan;
-						}
-					break;
+		// Within a table create new paragraphs
+		if ((startBlock != null && startBlock.nodeName == "TABLE") || (endBlock != null && endBlock.nodeName == "TABLE"))
+			startBlock = endBlock = null;
 
-					case "mceTableDeleteRow":
-						// Remove whole table
-						if (tableElement.rows.length <= 1) {
-							tableElement.parentNode.removeChild(tableElement);
-							tinyMCE.triggerNodeChange();
-							return;
-						}
+		// Setup new paragraphs
+		paraBefore = (startBlock != null && startBlock.nodeName == blockName) ? startBlock.cloneNode(false) : doc.createElement(blockName);
+		paraAfter = (endBlock != null && endBlock.nodeName == blockName) ? endBlock.cloneNode(false) : doc.createElement(blockName);
 
-						var selElm = this.contentWindow.document.body;
-						if (trElement.previousSibling)
-							selElm = trElement.previousSibling.cells[0];
+		// Is header, then force paragraph under
+		if (/^(H[1-6])$/.test(blockName))
+			paraAfter = doc.createElement("p");
 
-						// Delete row
-						trElement.parentNode.removeChild(trElement);
+		// Setup chop nodes
+		startChop = startNode;
+		endChop = endNode;
 
-						tinyMCE._selectNode(this.contentWindow, selElm);
-					break;
+		// Get startChop node
+		node = startChop;
+		do {
+			if (node == body || node.nodeType == 9 || tinyMCE.isBlockElement(node))
+				break;
 
-					case "mceTableInsertColBefore":
-						var cellCount = tdElement.cellIndex;
+			startChop = node;
+		} while ((node = node.previousSibling ? node.previousSibling : node.parentNode));
 
-						// Add columns
-						for (var y=0; y<tableElement.rows.length; y++) {
-							var cell = tableElement.rows[y].cells[cellCount];
+		// Get endChop node
+		node = endChop;
+		do {
+			if (node == body || node.nodeType == 9 || tinyMCE.isBlockElement(node))
+				break;
 
-							// Can't add cell after cell that doesn't exist
-							if (!cell)
-								break;
+			endChop = node;
+		} while ((node = node.nextSibling ? node.nextSibling : node.parentNode));
 
-							var newTD = documentRef.createElement("td");
-							newTD.innerHTML = "&nbsp;";
+		// Fix when only a image is within the TD
+		if (startChop.nodeName == "TD")
+			startChop = startChop.firstChild;
 
-							if (tableBorder == 0)
-								newTD.style.cssText = visualAidStyle;
+		if (endChop.nodeName == "TD")
+			endChop = endChop.lastChild;
 
-							cell.parentNode.insertBefore(newTD, cell);
-						}
-					break;
+		// If not in a block element
+		if (startBlock == null) {
+			// Delete selection
+			rng.deleteContents();
 
-					case "mceTableInsertColAfter":
-						var cellCount = tdElement.cellIndex;
+			if (!tinyMCE.isSafari)
+				sel.removeAllRanges();
 
-						// Add columns
-						for (var y=0; y<tableElement.rows.length; y++) {
-							var append = false;
-							var cell = tableElement.rows[y].cells[cellCount];
-							if (cellCount == tableElement.rows[y].cells.length-1)
-								append = true;
-							else
-								cell = tableElement.rows[y].cells[cellCount+1];
+			if (startChop != rootElm && endChop != rootElm) {
+				// Insert paragraph before
+				rngBefore = rng.cloneRange();
 
-							var newTD = documentRef.createElement("td");
-							newTD.innerHTML = "&nbsp;";
+				if (startChop == body)
+					rngBefore.setStart(startChop, 0);
+				else
+					rngBefore.setStartBefore(startChop);
 
-							if (tableBorder == 0)
-								newTD.style.cssText = visualAidStyle;
+				paraBefore.appendChild(rngBefore.cloneContents());
 
-							if (append)
-								cell.parentNode.appendChild(newTD);
-							else
-								cell.parentNode.insertBefore(newTD, cell);
-						}
-					break;
+				// Insert paragraph after
+				if (endChop.parentNode.nodeName == blockName)
+					endChop = endChop.parentNode;
 
-					case "mceTableDeleteCol":
-						var index = tdElement.cellIndex;
-						var selElm = this.contentWindow.document.body;
+				// If not after image
+				//if (rng.startContainer.nodeName != "BODY" && rng.endContainer.nodeName != "BODY")
+					rng.setEndAfter(endChop);
 
-						var numCols = 0;
-						for (var y=0; y<tableElement.rows.length; y++) {
-							if (tableElement.rows[y].cells.length > numCols)
-								numCols = tableElement.rows[y].cells.length;
-						}
+				if (endChop.nodeName != "#text" && endChop.nodeName != "BODY")
+					rngBefore.setEndAfter(endChop);
 
-						// Remove whole table
-						if (numCols <= 1) {
-							tinyMCE._selectNode(this.contentWindow, selElm);
-							tableElement.parentNode.removeChild(tableElement);
-							tinyMCE.triggerNodeChange();
-							return;
-						}
+				contents = rng.cloneContents();
+				if (contents.firstChild && (contents.firstChild.nodeName == blockName || contents.firstChild.nodeName == "BODY"))
+					paraAfter.innerHTML = contents.firstChild.innerHTML;
+				else
+					paraAfter.appendChild(contents);
 
-						// Remove columns
-						for (var y=0; y<tableElement.rows.length; y++) {
-							var cell = tableElement.rows[y].cells[index];
-							if (cell)
-								cell.parentNode.removeChild(cell);
-						}
+				// Check if it's a empty paragraph
+				if (isEmpty(paraBefore))
+					paraBefore.innerHTML = "&nbsp;";
 
-						if (index > 0)
-							selElm = tableElement.rows[0].cells[index-1];
+				// Check if it's a empty paragraph
+				if (isEmpty(paraAfter))
+					paraAfter.innerHTML = "&nbsp;";
 
-						tinyMCE._selectNode(this.contentWindow, selElm);
-					break;
+				// Delete old contents
+				rng.deleteContents();
+				rngAfter.deleteContents();
+				rngBefore.deleteContents();
+
+				// Insert new paragraphs
+				if (tinyMCE.isOpera) {
+					paraBefore.normalize();
+					rngBefore.insertNode(paraBefore);
+					paraAfter.normalize();
+					rngBefore.insertNode(paraAfter);
+				} else {
+					paraAfter.normalize();
+					rngBefore.insertNode(paraAfter);
+					paraBefore.normalize();
+					rngBefore.insertNode(paraBefore);
 				}
 
-				tinyMCE.triggerNodeChange();
+				//tinyMCE.debug("1: ", paraBefore.innerHTML, paraAfter.innerHTML);
+			} else {
+				body.innerHTML = "<" + blockName + ">&nbsp;</" + blockName + "><" + blockName + ">&nbsp;</" + blockName + ">";
+				paraAfter = body.childNodes[1];
 			}
-		break;
 
-		case "mceAddUndoLevel":
-			if (tinyMCE.settings['custom_undo_redo']) {
-				var customUndoLevels = tinyMCE.settings['custom_undo_redo_levels'];
+			inst.selection.moveToBookmark(b);
+			inst.selection.selectNode(paraAfter, true, true);
 
-				var newHTML = this.contentWindow.document.body.innerHTML;
-				if (newHTML != this.undoLevels[this.undoLevels.length-1]) {
-					// Time to compress
-					if (customUndoLevels != -1 && this.undoLevels.length > customUndoLevels) {
-						for (var i=0; i<this.undoLevels.length-1; i++) {
-							//alert(this.undoLevels[i] + "=" + this.undoLevels[i+1]);
-							this.undoLevels[i] = this.undoLevels[i+1];
-						}
+			return true;
+		}
 
-						this.undoLevels.length--;
-						this.undoIndex--;
-					}
+		// Place first part within new paragraph
+		if (startChop.nodeName == blockName)
+			rngBefore.setStart(startChop, 0);
+		else
+			rngBefore.setStartBefore(startChop);
 
-					//alert(newHTML + "=" + this.undoLevels[this.undoIndex]);
-					// Add new level
-					this.undoLevels[this.undoIndex++] = newHTML;
-					this.undoLevels.length = this.undoIndex;
-					//window.status = "mceAddUndoLevel - undo levels:" + this.undoLevels.length + ", undo index: " + this.undoIndex;
-				}
+		rngBefore.setEnd(startNode, startOffset);
+		paraBefore.appendChild(rngBefore.cloneContents());
 
-				tinyMCE.triggerNodeChange(false);
+		// Place secound part within new paragraph
+		rngAfter.setEndAfter(endChop);
+		rngAfter.setStart(endNode, endOffset);
+		contents = rngAfter.cloneContents();
+
+		if (contents.firstChild && contents.firstChild.nodeName == blockName) {
+	/*		var nodes = contents.firstChild.childNodes;
+			for (var i=0; i<nodes.length; i++) {
+				//tinyMCE.debug(nodes[i].nodeName);
+				if (nodes[i].nodeName != "BODY")
+					paraAfter.appendChild(nodes[i]);
 			}
-			break;
+	*/
+			paraAfter.innerHTML = contents.firstChild.innerHTML;
+		} else
+			paraAfter.appendChild(contents);
 
-		case "Undo":
-			if (tinyMCE.settings['custom_undo_redo']) {
-				// Is first level
-				if (this.undoIndex == this.undoLevels.length) {
-					this.execCommand("mceAddUndoLevel");
-					this.undoIndex--;
-				}
+		// Check if it's a empty paragraph
+		if (isEmpty(paraBefore))
+			paraBefore.innerHTML = "&nbsp;";
 
-				// Do undo
-				if (this.undoIndex > 0) {
-					this.undoIndex--;
-					this.contentWindow.document.body.innerHTML = this.undoLevels[this.undoIndex];
-				}
+		// Check if it's a empty paragraph
+		if (isEmpty(paraAfter))
+			paraAfter.innerHTML = "&nbsp;";
 
-				//window.status = "Undo - undo levels:" + this.undoLevels.length + ", undo index: " + this.undoIndex;
-				tinyMCE.triggerNodeChange();
-			} else
-				this.contentDocument.execCommand(command, user_interface, value);
-			break;
+		// Create a range around everything
+		rng = doc.createRange();
 
-		case "Redo":
-			if (tinyMCE.settings['custom_undo_redo']) {
-				if (this.undoIndex < (this.undoLevels.length-1)) {
-					this.undoIndex++;
-					this.contentWindow.document.body.innerHTML = this.undoLevels[this.undoIndex];
-					//window.status = "Redo - undo levels:" + this.undoLevels.length + ", undo index: " + this.undoIndex;
-				}
+		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);
+		}
 
-				tinyMCE.triggerNodeChange();
-			} else
-				this.contentDocument.execCommand(command, user_interface, value);
-			break;
+		if (!endChop.nextSibling && endChop.parentNode.nodeName.toUpperCase() == blockName)
+			rng.setEndAfter(endChop.parentNode);
+		else
+			rng.setEnd(rngAfter.endContainer, rngAfter.endOffset);
 
-		case "mceToggleVisualAid":
-			this.visualAid = !this.visualAid;
-			tinyMCE.handleVisualAid(this.contentWindow.document.body, true, this.visualAid);
-			tinyMCE.triggerNodeChange();
-			break;
-/*
-		case "removeformat":
-			//this.contentDocument.execCommand('FormatBlock', user_interface, '<span>');
-			var documentRef = this.contentWindow.document;
-			var rng = documentRef.selection.createRange();
-			var elm = rng.item ? rng.item(0) : rng.parentElement();
+		// Delete all contents and insert new paragraphs
+		rng.deleteContents();
 
-			html = "</" + elm.nodeName + ">" + rng.text + "<" + elm.nodeName + ">";
+		if (tinyMCE.isOpera) {
+			rng.insertNode(paraBefore);
+			rng.insertNode(paraAfter);
+		} else {
+			rng.insertNode(paraAfter);
+			rng.insertNode(paraBefore);
+		}
 
-			this.contentDocument.execCommand('FontName', user_interface, '#mce_temp_name#');
-			var html = this.contentDocument.innerHTML;
-			html.replace('<font face=');
+		//tinyMCE.debug("2", paraBefore.innerHTML, paraAfter.innerHTML);
 
-			rng.pasteHTML(html);
+		// Normalize
+		paraAfter.normalize();
+		paraBefore.normalize();
 
-			alert(html);
-	
-			if (tinyMCE.isMSIE) {
-				var documentRef = this.contentWindow.document;
-				var rngs = documentRef.selection.createRangeCollection();
+		inst.selection.moveToBookmark(b);
+		inst.selection.selectNode(paraAfter, true, true);
 
-				for (var i=0; i<rngs.length; i++)
-					alert(rngs[i].htmlText);
+		return true;
+	},
 
-				var html = rng.htmlText;
-				var tmpElm = documentRef.createElement("div");
-				tmpElm.innerHTML = html;
-				for (var i=0; i<tmpElm.all.length; i++) {
-					tmpElm.all[i].removeAttribute("style");
-					tmpElm.all[i].removeAttribute("className");
-				}
-//alert(tmpElm.innerHTML);
-				rng.pasteHTML(tmpElm.innerHTML);
-				//rng.pasteHTML(rng.text);
+	_handleBackSpace : function(inst) {
+		var r = inst.getRng(), sn = r.startContainer, nv, s = false;
 
-				this.contentDocument.execCommand('FontName', user_interface, 'arial,helvetica,sans-serif');
-			} else
-				this.contentDocument.execCommand(command, user_interface, value);
+		// Added body check for bug #1527787
+		if (sn && sn.nextSibling && sn.nextSibling.nodeName == "BR" && sn.parentNode.nodeName != "BODY") {
+			nv = sn.nodeValue;
 
-			tinyMCE.triggerNodeChange();
-			break;
-*/
-		default:
-			this.contentDocument.execCommand(command, user_interface, value);
-			tinyMCE.triggerNodeChange();
-	}
-}
+			// 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;*/
 
-function TinyMCE__selectNode(win, node, expand) {
-	if (!tinyMCE.isMSIE) {
-		var rng = win.document.createRange(); 
-		rng.selectNode(node); 
-		sel = win.getSelection(); 
-		sel.addRange(rng);
-		if (expand)
-			sel.extend(node, 0);
-		else
-			sel.collapse(node, 0);
+			// 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;
 	}
-}
 
-function TinyMCE_getControlHTML(control_name) {
-	var themePlugins = tinyMCE.getParam('plugins', '', true, ',');
-	var templateFunction;
+	};
 
-	// Is it defined in any plugins
-	for (var i=themePlugins.length; i>=0; i--) {
-		templateFunction = 'TinyMCE_' + themePlugins[i] + "_getControlHTML";
-		if (eval("typeof(" + templateFunction + ")") != 'undefined') {
-			var html = eval(templateFunction + "('" + control_name + "');");
-			if (html != "")
-				return tinyMCE.replaceVar(html, "pluginurl", tinyMCE.baseURL + "/plugins/" + themePlugins[i]);
+/* file:jscripts/tiny_mce/classes/TinyMCE_Layer.class.js */
+
+function TinyMCE_Layer(id, bm) {
+	this.id = id;
+	this.blockerElement = null;
+	this.events = false;
+	this.element = null;
+	this.blockMode = typeof(bm) != 'undefined' ? bm : true;
+	this.doc = document;
+};
+
+TinyMCE_Layer.prototype = {
+	moveRelativeTo : function(re, p) {
+		var rep = this.getAbsPosition(re);
+		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;
 		}
-	}
 
-	return eval('TinyMCE_' + tinyMCE.settings['theme'] + "_getControlHTML" + "('" + control_name + "');");
-}
+		this.moveTo(x, y);
+	},
 
-function TinyMCE__themeExecCommand(editor_id, element, command, user_interface, value) {
-	var themePlugins = tinyMCE.getParam('plugins', '', true, ',');
-	var templateFunction;
+	moveBy : function(x, y) {
+		var e = this.getElement();
+		this.moveTo(parseInt(e.style.left) + x, parseInt(e.style.top) + y);
+	},
 
-	// Is it defined in any plugins
-	for (var i=themePlugins.length; i>=0; i--) {
-		templateFunction = 'TinyMCE_' + themePlugins[i] + "_execCommand";
-		if (eval("typeof(" + templateFunction + ")") != 'undefined') {
-			if (eval(templateFunction + "(editor_id, element, command, user_interface, value);"))
-				return true;
+	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';
 		}
-	}
+	},
 
-	// Theme funtion
-	templateFunction = 'TinyMCE_' + tinyMCE.settings['theme'] + "_execCommand";
-	if (eval("typeof(" + templateFunction + ")") != 'undefined')
-		return eval(templateFunction + "(editor_id, element, command, user_interface, value);");
+	getBlocker : function() {
+		var d, b;
 
-	// Pass to normal
-	return false;
-}
+		if (!this.blockerElement && this.blockMode) {
+			d = this.doc;
+			b = d.getElementById(this.id + "_blocker");
 
-function TinyMCE__getThemeFunction(suffix, skip_plugins) {
-	if (skip_plugins)
-		return 'TinyMCE_' + tinyMCE.settings['theme'] + suffix;
+			if (!b) {
+				b = d.createElement("iframe");
 
-	var themePlugins = tinyMCE.getParam('plugins', '', true, ',');
-	var templateFunction;
+				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);
+			}
 
-	// Is it defined in any plugins
-	for (var i=themePlugins.length; i>=0; i--) {
-		templateFunction = 'TinyMCE_' + themePlugins[i] + suffix;
-		if (eval("typeof(" + templateFunction + ")") != 'undefined')
-			return templateFunction;
-	}
+			this.blockerElement = b;
+		}
 
-	return 'TinyMCE_' + tinyMCE.settings['theme'] + suffix;
-}
+		return this.blockerElement;
+	},
 
-function TinyMCEControl_queryCommandValue(command) {
-	return this.contentWindow.document.queryCommandValue(command);
-}
+	getAbsPosition : function(n) {
+		var p = {absLeft : 0, absTop : 0};
 
-function TinyMCEControl_queryCommandState(command) {
-	return this.contentWindow.document.queryCommandState(command);
-}
+		while (n) {
+			p.absLeft += n.offsetLeft;
+			p.absTop += n.offsetTop;
+			n = n.offsetParent;
+		}
 
-function TinyMCEControl_onAdd(replace_element, form_element_name) {
-	tinyMCE.themeURL = tinyMCE.baseURL + "/themes/" + this.settings['theme'];
-	this.settings['themeurl'] = tinyMCE.themeURL;
+		return p;
+	},
 
-	if (!replace_element) {
-		alert("Error: Could not find the target element.");
-		return false;
-	}
+	create : function(n, c, p, h) {
+		var d = this.doc, e = d.createElement(n);
 
-	var templateFunction = tinyMCE._getThemeFunction('_getInsertTableTemplate');
-	if (eval("typeof(" + templateFunction + ")") != 'undefined')
-		this.insertTableTemplate = eval(templateFunction + '(this.settings);');
+		e.setAttribute('id', this.id);
 
-	var templateFunction = tinyMCE._getThemeFunction('_getInsertLinkTemplate');
-	if (eval("typeof(" + templateFunction + ")") != 'undefined')
-		this.insertLinkTemplate = eval(templateFunction + '(this.settings);');
+		if (c)
+			e.className = c;
 
-	var templateFunction = tinyMCE._getThemeFunction('_getInsertImageTemplate');
-	if (eval("typeof(" + templateFunction + ")") != 'undefined')
-		this.insertImageTemplate = eval(templateFunction + '(this.settings);');
+		if (!p)
+			p = d.body;
 
-	var templateFunction = tinyMCE._getThemeFunction('_getEditorTemplate');
-	if (eval("typeof(" + templateFunction + ")") == 'undefined') {
-		alert("Error: Could not find the template function: " + templateFunction);
-		return false;
+		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);
 	}
 
-	var editorTemplate = eval(templateFunction + '(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">' + editorTemplate['html'];
+/* file:jscripts/tiny_mce/classes/TinyMCE_Menu.class.js */
 
-	var templateFunction = tinyMCE._getThemeFunction('_handleNodeChange', true);
-	if (eval("typeof(" + templateFunction + ")") != 'undefined')
-		this.settings['handleNodeChangeCallback'] = templateFunction;
+function TinyMCE_Menu() {
+	var id;
 
-	html = tinyMCE.replaceVar(html, "editor_id", this.editorId);
-	html = tinyMCE.replaceVar(html, "default_document", tinyMCE.baseURL + "/blank.htm");
-	this.settings['default_document'] = tinyMCE.baseURL + "/blank.htm";
+	if (typeof(tinyMCE.menuCounter) == "undefined")
+		tinyMCE.menuCounter = 0;
 
-	this.settings['old_width'] = this.settings['width'];
-	this.settings['old_height'] = this.settings['height'];
+	id = "mc_menu_" + tinyMCE.menuCounter++;
 
-	// Set default width, height
-	if (this.settings['width'] == -1)
-		this.settings['width'] = replace_element.offsetWidth;
+	TinyMCE_Layer.call(this, id, true);
 
-	if (this.settings['height'] == -1)
-		this.settings['height'] = replace_element.offsetHeight;
+	this.id = id;
+	this.items = new Array();
+	this.needsUpdate = true;
+};
 
-	this.settings['area_width'] = this.settings['width'];
-	this.settings['area_height'] = this.settings['height'];
-	this.settings['area_width'] += deltaWidth;
-	this.settings['area_height'] += deltaHeight;
+TinyMCE_Menu.prototype = tinyMCE.extend(TinyMCE_Layer.prototype, {
+	init : function(s) {
+		var n;
 
-	// Special % handling
-	if (("" + this.settings['width']).indexOf('%') != -1)
-		this.settings['area_width'] = "100%";
+		// Default params
+		this.settings = {
+			separator_class : 'mceMenuSeparator',
+			title_class : 'mceMenuTitle',
+			disabled_class : 'mceMenuDisabled',
+			menu_class : 'mceMenu',
+			drop_menu : true
+		};
 
-	if (("" + this.settings['height']).indexOf('%') != -1)
-		this.settings['area_height'] = "100%";
+		for (n in s)
+			this.settings[n] = s[n];
 
-	if (("" + replace_element.style.width).indexOf('%') != -1) {
-		this.settings['width'] = replace_element.style.width;
-		this.settings['area_width'] = "100%";
-	}
+		this.create('div', this.settings.menu_class);
+	},
 
-	if (("" + replace_element.style.height).indexOf('%') != -1) {
-		this.settings['height'] = replace_element.style.height;
-		this.settings['area_height'] = "100%";
-	}
+	clear : function() {
+		this.items = new Array();
+	},
 
-	html = tinyMCE.applyTemplate(html);
+	addTitle : function(t) {
+		this.add({type : 'title', text : t});
+	},
 
-	this.settings['width'] = this.settings['old_width'];
-	this.settings['height'] = this.settings['old_height'];
+	addDisabled : function(t) {
+		this.add({type : 'disabled', text : t});
+	},
 
-	this.visualAid = this.settings['visual'];
-	this.oldTargetElement = replace_element.cloneNode(true);
-	this.formTargetElementId = form_element_name;
+	addSeparator : function() {
+		this.add({type : 'separator'});
+	},
 
-	// Debug mode
-    if (tinyMCE.settings['debug'])
-        html += '<textarea wrap="off" id="' + form_element_name + '" name="' + form_element_name + '" cols="100" rows="15"></textarea>';
-    else
-        html += '<input type="hidden" type="text" id="' + form_element_name + '" name="' + form_element_name + '" />';
+	addItem : function(t, js) {
+		this.add({text : t, js : js});
+	},
 
-    html += '</span>';
+	add : function(mi) {
+		this.items[this.items.length] = mi;
+		this.needsUpdate = true;
+	},
 
-	// Output HTML and set editable
-	if (!tinyMCE.isMSIE) {
-		var rng = replace_element.ownerDocument.createRange();
-		rng.setStartBefore(replace_element);
+	update : function() {
+		var e = this.getElement(), h = '', i, t, m = this.items, s = this.settings;
 
-		var fragment = rng.createContextualFragment(html);
-		replace_element.parentNode.replaceChild(fragment, replace_element);
-	} else
-		replace_element.outerHTML = html;
+		if (this.settings.drop_menu)
+			h += '<span class="mceMenuLine"></span>';
 
-	//window.setTimeout("tinyMCE.setEditMode('" + this.editorId + "', true)", 1);
-	tinyMCE.setEditMode(this.editorId, true);
+		h += '<table border="0" cellpadding="0" cellspacing="0">';
 
-	return true;
-}
+		for (i=0; i<m.length; i++) {
+			t = tinyMCE.xmlEncode(m[i].text);
+			c = m[i].class_name ? ' class="' + m[i].class_name + '"' : '';
 
-function TinyMCEControl_getFocusElement() {
-	if (tinyMCE.isMSIE) {
-		var documentRef = this.contentWindow.document;
-		var rng = documentRef.selection.createRange();
-		var elm = rng.item ? rng.item(0) : rng.parentElement();
-	} else {
-		var sel = this.contentWindow.getSelection();
-		var elm = sel.anchorNode;
+			switch (m[i].type) {
+				case 'separator':
+					h += '<tr class="' + s.separator_class + '"><td>';
+					break;
 
-		if (tinyMCE.selectedElement != null && tinyMCE.selectedElement.nodeName.toLowerCase() == "img")
-			elm = tinyMCE.selectedElement;
+				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) {
+			// Accessibility stuff
+/*			nl = this.getElement().getElementsByTagName("a");
+			if (nl.length > 0)
+				nl[0].focus();*/
+		}
+
+		tinyMCE.lastMenu = this;
 	}
 
-	return elm;
-}
+	});
 
-// Global instances
-var tinyMCE = new TinyMCE();
-var tinyMCELang = new Array();
+/* 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 = "", 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;
+};
+

Added: labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/utils/editable_selects.js
===================================================================
--- labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/utils/editable_selects.js	2007-01-11 22:09:16 UTC (rev 8831)
+++ labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/utils/editable_selects.js	2007-01-11 22:10:56 UTC (rev 8832)
@@ -0,0 +1,61 @@
+/**
+ * $Id: editable_selects.js 18 2006-06-29 14:11:23Z spocke $
+ *
+ * Makes select boxes editable.
+ *
+ * @author Moxiecode
+ * @copyright Copyright © 2004-2006, Moxiecode Systems AB, All rights reserved.
+ */
+
+var TinyMCE_EditableSelects = {
+	editSelectElm : null,
+
+	init : function() {
+		var nl = document.getElementsByTagName("select"), i, d = document, o;
+
+		for (i=0; i<nl.length; i++) {
+			if (nl[i].className.indexOf('mceEditableSelect') != -1) {
+				o = new Option('(value)', '__mce_add_custom__');
+
+				o.className = 'mceAddSelectValue';
+
+				nl[i].options[nl[i].options.length] = o;
+				nl[i].setAttribute('onchange', 'TinyMCE_EditableSelects.onChangeEditableSelect(this);');
+			}
+		}
+	},
+
+	onChangeEditableSelect : function(se) {
+		var d = document, ne;
+
+		if (se.options[se.selectedIndex].value == '__mce_add_custom__') {
+			ne = d.createElement("input");
+			ne.id = se.id + "_custom";
+			ne.name = se.name + "_custom";
+			ne.type = "text";
+
+			ne.style.width = se.clientWidth;
+			se.parentNode.insertBefore(ne, se);
+			se.style.display = 'none';
+			ne.focus();
+			ne.onblur = TinyMCE_EditableSelects.onBlurEditableSelectInput;
+			TinyMCE_EditableSelects.editSelectElm = se;
+		}
+	},
+
+	onBlurEditableSelectInput : function() {
+		var se = TinyMCE_EditableSelects.editSelectElm;
+
+		if (se) {
+			if (se.previousSibling.value != '') {
+				addSelectValue(document.forms[0], se.id, se.previousSibling.value, se.previousSibling.value);
+				selectByValue(document.forms[0], se.id, se.previousSibling.value);
+			} else
+				selectByValue(document.forms[0], se.id, '');
+
+			se.style.display = 'inline';
+			se.parentNode.removeChild(se.previousSibling);
+			TinyMCE_EditableSelects.editSelectElm = null;
+		}
+	}
+};

Added: labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/utils/form_utils.js
===================================================================
--- labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/utils/form_utils.js	2007-01-11 22:09:16 UTC (rev 8831)
+++ labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/utils/form_utils.js	2007-01-11 22:10:56 UTC (rev 8832)
@@ -0,0 +1,210 @@
+/**
+ * $Id: form_utils.js 43 2006-08-08 16:10:07Z spocke $
+ *
+ * Various form utilitiy functions.
+ *
+ * @author Moxiecode
+ * @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 h = "";
+
+	h += '<a id="' + id + '_link" href="javascript:void(0);" onkeydown="pickColor(event,\'' + target_form_element +'\');" onmousedown="pickColor(event,\'' + target_form_element +'\');return false;">';
+	h += '<img id="' + id + '" src="' + themeBaseURL + '/images/color.gif"';
+	h += ' onmouseover="this.className=\'mceButtonOver\'"';
+	h += ' onmouseout="this.className=\'mceButtonNormal\'"';
+	h += ' onmousedown="this.className=\'mceButtonDown\'"';
+	h += ' width="20" height="16" border="0" title="' + tinyMCE.getLang('lang_browse') + '"';
+	h += ' class="mceButtonNormal" alt="' + tinyMCE.getLang('lang_browse') + '" /></a>';
+
+	return h;
+}
+
+function pickColor(e, target_form_element) {
+	if ((e.keyCode == 32 || e.keyCode == 13) || e.type == "mousedown")
+		tinyMCEPopup.pickColor(e, target_form_element);
+}
+
+function updateColor(img_id, form_element_id) {
+	document.getElementById(img_id).style.backgroundColor = document.forms[0].elements[form_element_id].value;
+}
+
+function setBrowserDisabled(id, state) {
+	var img = document.getElementById(id);
+	var lnk = document.getElementById(id + "_link");
+
+	if (lnk) {
+		if (state) {
+			lnk.setAttribute("realhref", lnk.getAttribute("href"));
+			lnk.removeAttribute("href");
+			tinyMCE.switchClass(img, 'mceButtonDisabled', true);
+		} else {
+			lnk.setAttribute("href", lnk.getAttribute("realhref"));
+			tinyMCE.switchClass(img, 'mceButtonNormal', false);
+		}
+	}
+}
+
+function getBrowserHTML(id, target_form_element, type, prefix) {
+	var option = prefix + "_" + type + "_browser_callback";
+	var cb = tinyMCE.getParam(option, tinyMCE.getParam("file_browser_callback"));
+	if (cb == null)
+		return "";
+
+	var html = "";
+
+	html += '<a id="' + id + '_link" href="javascript:openBrower(\'' + id + '\',\'' + target_form_element + '\', \'' + type + '\',\'' + option + '\');" onmousedown="return false;">';
+	html += '<img id="' + id + '" src="' + themeBaseURL + '/images/browse.gif"';
+	html += ' onmouseover="this.className=\'mceButtonOver\';"';
+	html += ' onmouseout="this.className=\'mceButtonNormal\';"';
+	html += ' onmousedown="this.className=\'mceButtonDown\';"';
+	html += ' width="20" height="18" border="0" title="' + tinyMCE.getLang('lang_browse') + '"';
+	html += ' class="mceButtonNormal" alt="' + tinyMCE.getLang('lang_browse') + '" /></a>';
+
+	return html;
+}
+
+function openBrower(img_id, target_form_element, type, option) {
+	var img = document.getElementById(img_id);
+
+	if (img.className != "mceButtonDisabled")
+		tinyMCEPopup.openBrowser(target_form_element, type, option);
+}
+
+function selectByValue(form_obj, field_name, value, add_custom, ignore_case) {
+	if (!form_obj || !form_obj.elements[field_name])
+		return;
+
+	var sel = form_obj.elements[field_name];
+
+	var found = false;
+	for (var i=0; i<sel.options.length; i++) {
+		var option = sel.options[i];
+
+		if (option.value == value || (ignore_case && option.value.toLowerCase() == value.toLowerCase())) {
+			option.selected = true;
+			found = true;
+		} else
+			option.selected = false;
+	}
+
+	if (!found && add_custom && value != '') {
+		var option = new Option(value, value);
+		option.selected = true;
+		sel.options[sel.options.length] = option;
+		sel.selectedIndex = sel.options.length - 1;
+	}
+
+	return found;
+}
+
+function getSelectValue(form_obj, field_name) {
+	var elm = form_obj.elements[field_name];
+
+	if (elm == null || elm.options == null)
+		return "";
+
+	return elm.options[elm.selectedIndex].value;
+}
+
+function addSelectValue(form_obj, field_name, name, value) {
+	var s = form_obj.elements[field_name];
+	var o = new Option(name, value);
+	s.options[s.options.length] = o;
+}
+
+function addClassesToList(list_id, specific_option) {
+	// Setup class droplist
+	var styleSelectElm = document.getElementById(list_id);
+	var styles = tinyMCE.getParam('theme_advanced_styles', false);
+	styles = tinyMCE.getParam(specific_option, styles);
+
+	if (styles) {
+		var stylesAr = styles.split(';');
+
+		for (var i=0; i<stylesAr.length; i++) {
+			if (stylesAr != "") {
+				var key, value;
+
+				key = stylesAr[i].split('=')[0];
+				value = stylesAr[i].split('=')[1];
+
+				styleSelectElm.options[styleSelectElm.length] = new Option(key, value);
+			}
+		}
+	} else {
+		// Use auto impored classes
+		var csses = tinyMCE.getCSSClasses(tinyMCE.getWindowArg('editor_id'));
+		for (var i=0; i<csses.length; i++)
+			styleSelectElm.options[styleSelectElm.length] = new Option(csses[i], csses[i]);
+	}
+}
+
+function isVisible(element_id) {
+	var elm = document.getElementById(element_id);
+
+	return elm && elm.style.display != "none";
+}
+
+function convertRGBToHex(col) {
+	var re = new RegExp("rgb\\s*\\(\\s*([0-9]+).*,\\s*([0-9]+).*,\\s*([0-9]+).*\\)", "gi");
+
+	var rgb = col.replace(re, "$1,$2,$3").split(',');
+	if (rgb.length == 3) {
+		r = parseInt(rgb[0]).toString(16);
+		g = parseInt(rgb[1]).toString(16);
+		b = parseInt(rgb[2]).toString(16);
+
+		r = r.length == 1 ? '0' + r : r;
+		g = g.length == 1 ? '0' + g : g;
+		b = b.length == 1 ? '0' + b : b;
+
+		return "#" + r + g + b;
+	}
+
+	return col;
+}
+
+function convertHexToRGB(col) {
+	if (col.indexOf('#') != -1) {
+		col = col.replace(new RegExp('[^0-9A-F]', 'gi'), '');
+
+		r = parseInt(col.substring(0, 2), 16);
+		g = parseInt(col.substring(2, 4), 16);
+		b = parseInt(col.substring(4, 6), 16);
+
+		return "rgb(" + r + "," + g + "," + b + ")";
+	}
+
+	return col;
+}
+
+function trimSize(size) {
+	return size.replace(new RegExp('[^0-9%]', 'gi'), '');
+}
+
+function getCSSSize(size) {
+	size = trimSize(size);
+
+	if (size == "")
+		return "";
+
+	return size.indexOf('%') != -1 ? size : size + "px";
+}
+
+function getStyle(elm, attrib, style) {
+	var val = tinyMCE.getAttrib(elm, attrib);
+
+	if (val != '')
+		return '' + val;
+
+	if (typeof(style) == 'undefined')
+		style = attrib;
+
+	val = eval('elm.style.' + style);
+
+	return val == null ? '' : '' + val;
+}

Added: labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/utils/mclayer.js
===================================================================
--- labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/utils/mclayer.js	2007-01-11 22:09:16 UTC (rev 8831)
+++ labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/utils/mclayer.js	2007-01-11 22:10:56 UTC (rev 8832)
@@ -0,0 +1,210 @@
+/**
+ * $Id: mclayer.js 18 2006-06-29 14:11:23Z spocke $
+ *
+ * Moxiecode floating layer script.
+ *
+ * @author Moxiecode
+ * @copyright Copyright © 2004-2006, Moxiecode Systems AB, All rights reserved.
+ */
+
+function MCLayer(id) {
+	this.id = id;
+	this.settings = new Array();
+	this.blockerElement = null;
+	this.isMSIE = navigator.appName == "Microsoft Internet Explorer";
+	this.events = false;
+	this.autoHideCallback = null;
+}
+
+MCLayer.prototype = {
+	moveRelativeTo : function(re, p, a) {
+		var rep = this.getAbsPosition(re);
+		var w = parseInt(re.offsetWidth);
+		var h = parseInt(re.offsetHeight);
+		var x, y;
+
+		switch (p) {
+			case "tl":
+				break;
+
+			case "tr":
+				x = rep.absLeft + w;
+				y = rep.absTop;
+				break;
+
+			case "bl":
+				break;
+
+			case "br":
+				break;
+		}
+
+		this.moveTo(x, y);
+	},
+
+	moveBy : function(dx, dy) {
+		var e = this.getElement();
+		var x = parseInt(e.style.left);
+		var y = parseInt(e.style.top);
+
+		e.style.left = (x + dx) + "px";
+		e.style.top = (y + dy) + "px";
+
+		this.updateBlocker();
+	},
+
+	moveTo : function(x, y) {
+		var e = this.getElement();
+
+		e.style.left = x + "px";
+		e.style.top = y + "px";
+
+		this.updateBlocker();
+	},
+
+	show : function() {
+		MCLayer.visibleLayer = this;
+
+		this.getElement().style.display = 'block';
+		this.updateBlocker();
+	},
+
+	hide : function() {
+		this.getElement().style.display = 'none';
+		this.updateBlocker();
+	},
+
+	setAutoHide : function(s, cb) {
+		this.autoHideCallback = cb;
+		this.registerEventHandlers();
+	},
+
+	getElement : function() {
+		return document.getElementById(this.id);
+	},
+
+	updateBlocker : function() {
+		if (!this.isMSIE)
+			return;
+
+		var e = this.getElement();
+		var b = this.getBlocker();
+		var x = this.parseInt(e.style.left);
+		var y = this.parseInt(e.style.top);
+		var w = this.parseInt(e.offsetWidth);
+		var h = this.parseInt(e.offsetHeight);
+
+		b.style.left = x + 'px';
+		b.style.top = y + 'px';
+		b.style.width = w + 'px';
+		b.style.height = h + 'px';
+		b.style.display = e.style.display;
+	},
+
+	getBlocker : function() {
+		if (!this.blockerElement) {
+			var d = document, b = d.createElement("iframe");
+
+			b.style.cssText = 'display: none; left: 0px; position: absolute; top: 0';
+			b.src = 'javascript:false;';
+			b.frameBorder = '0';
+			b.scrolling = 'no';
+
+			d.body.appendChild(b);
+			this.blockerElement = b;
+		}
+
+		return this.blockerElement;
+	},
+
+	getAbsPosition : function(n) {
+		var p = {absLeft : 0, absTop : 0};
+
+		while (n) {
+			p.absLeft += n.offsetLeft;
+			p.absTop += n.offsetTop;
+			n = n.offsetParent;
+		}
+
+		return p;
+	},
+
+	registerEventHandlers : function() {
+		if (!this.events) {
+			var d = document;
+
+			this.addEvent(d, 'mousedown', MCLayer.prototype.onMouseDown);
+
+			this.events = true;
+		}
+	},
+
+	addEvent : function(o, n, h) {
+		if (o.attachEvent)
+			o.attachEvent("on" + n, h);
+		else
+			o.addEventListener(n, h, false);
+	},
+
+	onMouseDown : function(e) {
+		e = typeof(e) == "undefined" ? window.event : e;
+		var b = document.body;
+		var l = MCLayer.visibleLayer;
+
+		if (l) {
+			var mx = l.isMSIE ? e.clientX + b.scrollLeft : e.pageX;
+			var my = l.isMSIE ? e.clientY + b.scrollTop : e.pageY;
+			var el = l.getElement();
+			var x = parseInt(el.style.left);
+			var y = parseInt(el.style.top);
+			var w = parseInt(el.offsetWidth);
+			var h = parseInt(el.offsetHeight);
+
+			if (!(mx > x && mx < x + w && my > y && my < y + h)) {
+				MCLayer.visibleLayer = null;
+
+				if (l.autoHideCallback && l.autoHideCallback(l, e, mx, my))
+					return true;
+
+				l.hide();
+			}
+		}
+	},
+
+	addCSSClass : function(e, c) {
+		this.removeCSSClass(e, c);
+		var a = this.explode(' ', e.className);
+		a[a.length] = c;
+		e.className = a.join(' ');
+	},
+
+	removeCSSClass : function(e, c) {
+		var a = this.explode(' ', e.className), i;
+
+		for (i=0; i<a.length; i++) {
+			if (a[i] == c)
+				a[i] = '';
+		}
+
+		e.className = a.join(' ');
+	},
+
+	explode : function(d, s) {
+		var ar = s.split(d);
+		var oar = new Array();
+
+		for (var i = 0; i<ar.length; i++) {
+			if (ar[i] != "")
+				oar[oar.length] = ar[i];
+		}
+
+		return oar;
+	},
+
+	parseInt : function(s) {
+		if (s == null || s == '')
+			return 0;
+
+		return parseInt(s);
+	}
+}

Added: labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/utils/mctabs.js
===================================================================
--- labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/utils/mctabs.js	2007-01-11 22:09:16 UTC (rev 8831)
+++ labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/utils/mctabs.js	2007-01-11 22:10:56 UTC (rev 8832)
@@ -0,0 +1,74 @@
+/**
+ * $Id: mctabs.js 18 2006-06-29 14:11:23Z spocke $
+ *
+ * Moxiecode DHTML Tabs script.
+ *
+ * @author Moxiecode
+ * @copyright Copyright © 2004-2006, Moxiecode Systems AB, All rights reserved.
+ */
+
+function MCTabs() {
+	this.settings = new Array();
+};
+
+MCTabs.prototype.init = function(settings) {
+	this.settings = settings;
+};
+
+MCTabs.prototype.getParam = function(name, default_value) {
+	var value = null;
+
+	value = (typeof(this.settings[name]) == "undefined") ? default_value : this.settings[name];
+
+	// Fix bool values
+	if (value == "true" || value == "false")
+		return (value == "true");
+
+	return value;
+};
+
+MCTabs.prototype.displayTab = function(tab_id, panel_id) {
+	var panelElm = document.getElementById(panel_id);
+	var panelContainerElm = panelElm ? panelElm.parentNode : null;
+	var tabElm = document.getElementById(tab_id);
+	var tabContainerElm = tabElm ? tabElm.parentNode : null;
+	var selectionClass = this.getParam('selection_class', 'current');
+
+	if (tabElm && tabContainerElm) {
+		var nodes = tabContainerElm.childNodes;
+
+		// Hide all other tabs
+		for (var i=0; i<nodes.length; i++) {
+			if (nodes[i].nodeName == "LI")
+				nodes[i].className = '';
+		}
+
+		// Show selected tab
+		tabElm.className = 'current';
+	}
+
+	if (panelElm && panelContainerElm) {
+		var nodes = panelContainerElm.childNodes;
+
+		// Hide all other panels
+		for (var i=0; i<nodes.length; i++) {
+			if (nodes[i].nodeName == "DIV")
+				nodes[i].className = 'panel';
+		}
+
+		// Show selected panel
+		panelElm.className = 'current';
+	}
+};
+
+MCTabs.prototype.getAnchor = function() {
+	var pos, url = document.location.href;
+
+	if ((pos = url.lastIndexOf('#')) != -1)
+		return url.substring(pos + 1);
+
+	return "";
+};
+
+// Global instance
+var mcTabs = new MCTabs();

Added: labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/utils/validate.js
===================================================================
--- labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/utils/validate.js	2007-01-11 22:09:16 UTC (rev 8831)
+++ labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/images/cms/admin/tiny_mce/utils/validate.js	2007-01-11 22:10:56 UTC (rev 8832)
@@ -0,0 +1,219 @@
+/**
+ * $Id: validate.js 65 2006-08-24 15:54:55Z spocke $
+ *
+ * Various form validation methods.
+ *
+ * @author Moxiecode
+ * @copyright Copyright © 2004-2006, Moxiecode Systems AB, All rights reserved.
+ */
+
+/**
+	// String validation:
+
+	if (!Validator.isEmail('myemail'))
+		alert('Invalid email.');
+
+	// Form validation:
+
+	var f = document.forms['myform'];
+
+	if (!Validator.isEmail(f.myemail))
+		alert('Invalid email.');
+*/
+
+var Validator = {
+	isEmail : function(s) {
+		return this.test(s, '^[-!#$%&\'*+\\./0-9=?A-Z^_`a-z{|}~]+@[-!#$%&\'*+\\/0-9=?A-Z^_`a-z{|}~]+\.[-!#$%&\'*+\\./0-9=?A-Z^_`a-z{|}~]+$');
+	},
+
+	isAbsUrl : function(s) {
+		return this.test(s, '^(news|telnet|nttp|file|http|ftp|https)://[-A-Za-z0-9\\.]+\\/?.*$');
+	},
+
+	isSize : function(s) {
+		return this.test(s, '^[0-9]+(px|%)?$');
+	},
+
+	isId : function(s) {
+		return this.test(s, '^[A-Za-z_]([A-Za-z0-9_])*$');
+	},
+
+	isEmpty : function(s) {
+		var nl, i;
+
+		if (s.nodeName == 'SELECT' && s.selectedIndex < 1)
+			return true;
+
+		if (s.type == 'checkbox' && !s.checked)
+			return true;
+
+		if (s.type == 'radio') {
+			for (i=0, nl = s.form.elements; i<nl.length; i++) {
+				if (nl[i].type == "radio" && nl[i].name == s.name && nl[i].checked)
+					return false;
+			}
+
+			return true;
+		}
+
+		return new RegExp('^\\s*$').test(s.nodeType == 1 ? s.value : s);
+	},
+
+	isNumber : function(s, d) {
+		return !isNaN(s.nodeType == 1 ? s.value : s) && (!d || !this.test(s, '^-?[0-9]*\\.[0-9]*$'));
+	},
+
+	test : function(s, p) {
+		s = s.nodeType == 1 ? s.value : s;
+
+		return s == '' || new RegExp(p).test(s);
+	}
+};
+
+var AutoValidator = {
+	settings : {
+		id_cls : 'id',
+		int_cls : 'int',
+		url_cls : 'url',
+		number_cls : 'number',
+		email_cls : 'email',
+		size_cls : 'size',
+		required_cls : 'required',
+		invalid_cls : 'invalid',
+		min_cls : 'min',
+		max_cls : 'max'
+	},
+
+	init : function(s) {
+		var n;
+
+		for (n in s)
+			this.settings[n] = s[n];
+	},
+
+	validate : function(f) {
+		var i, nl, s = this.settings, c = 0;
+
+		nl = this.tags(f, 'label');
+		for (i=0; i<nl.length; i++)
+			this.removeClass(nl[i], s.invalid_cls);
+
+		c += this.validateElms(f, 'input');
+		c += this.validateElms(f, 'select');
+		c += this.validateElms(f, 'textarea');
+
+		return c == 3;
+	},
+
+	invalidate : function(n) {
+		this.mark(n.form, n);
+	},
+
+	reset : function(e) {
+		var t = new Array('label', 'input', 'select', 'textarea');
+		var i, j, nl, s = this.settings;
+
+		if (e == null)
+			return;
+
+		for (i=0; i<t.length; i++) {
+			nl = this.tags(e.form ? e.form : e, t[i]);
+			for (j=0; j<nl.length; j++)
+				this.removeClass(nl[j], s.invalid_cls);
+		}
+	},
+
+	validateElms : function(f, e) {
+		var nl, i, n, s = this.settings, st = true, va = Validator, v;
+
+		nl = this.tags(f, e);
+		for (i=0; i<nl.length; i++) {
+			n = nl[i];
+
+			this.removeClass(n, s.invalid_cls);
+
+			if (this.hasClass(n, s.required_cls) && va.isEmpty(n))
+				st = this.mark(f, n);
+
+			if (this.hasClass(n, s.number_cls) && !va.isNumber(n))
+				st = this.mark(f, n);
+
+			if (this.hasClass(n, s.int_cls) && !va.isNumber(n, true))
+				st = this.mark(f, n);
+
+			if (this.hasClass(n, s.url_cls) && !va.isAbsUrl(n))
+				st = this.mark(f, n);
+
+			if (this.hasClass(n, s.email_cls) && !va.isEmail(n))
+				st = this.mark(f, n);
+
+			if (this.hasClass(n, s.size_cls) && !va.isSize(n))
+				st = this.mark(f, n);
+
+			if (this.hasClass(n, s.id_cls) && !va.isId(n))
+				st = this.mark(f, n);
+
+			if (this.hasClass(n, s.min_cls, true)) {
+				v = this.getNum(n, s.min_cls);
+
+				if (isNaN(v) || parseInt(n.value) < parseInt(v))
+					st = this.mark(f, n);
+			}
+
+			if (this.hasClass(n, s.max_cls, true)) {
+				v = this.getNum(n, s.max_cls);
+
+				if (isNaN(v) || parseInt(n.value) > parseInt(v))
+					st = this.mark(f, n);
+			}
+		}
+
+		return st;
+	},
+
+	hasClass : function(n, c, d) {
+		return new RegExp('\\b' + c + (d ? '[0-9]+' : '') + '\\b', 'g').test(n.className);
+	},
+
+	getNum : function(n, c) {
+		c = n.className.match(new RegExp('\\b' + c + '([0-9]+)\\b', 'g'))[0];
+		c = c.replace(/[^0-9]/g, '');
+
+		return c;
+	},
+
+	addClass : function(n, c, b) {
+		var o = this.removeClass(n, c);
+		n.className = b ? c + (o != '' ? (' ' + o) : '') : (o != '' ? (o + ' ') : '') + c;
+	},
+
+	removeClass : function(n, c) {
+		c = n.className.replace(new RegExp("(^|\\s+)" + c + "(\\s+|$)"), ' ');
+		return n.className = c != ' ' ? c : '';
+	},
+
+	tags : function(f, s) {
+		return f.getElementsByTagName(s);
+	},
+
+	mark : function(f, n) {
+		var s = this.settings;
+
+		this.addClass(n, s.invalid_cls);
+		this.markLabels(f, n, s.invalid_cls);
+
+		return false;
+	},
+
+	markLabels : function(f, n, ic) {
+		var nl, i;
+
+		nl = this.tags(f, "label");
+		for (i=0; i<nl.length; i++) {
+			if (nl[i].getAttribute("for") == n.id || nl[i].htmlFor == n.id)
+				this.addClass(nl[i], ic);
+		}
+
+		return null;
+	}
+};

Modified: labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/nodesk/index.jsp
===================================================================
--- labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/nodesk/index.jsp	2007-01-11 22:09:16 UTC (rev 8831)
+++ labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/nodesk/index.jsp	2007-01-11 22:10:56 UTC (rev 8832)
@@ -78,7 +78,7 @@
 //-->
 </script>
 <link href="<%= contextPath %>/nodesk/css/portal_style.css" rel="stylesheet" type="text/css" />
-<link href="/portal-forums/subSilver/styles.css" rel="stylesheet" type="text/css" />
+<!--<link href="/portal-forums/subSilver/styles.css" rel="stylesheet" type="text/css" />-->
 <link rel="shortcut icon" href="<%= contextPath %>/images/favicon.ico" />
 </head>
 <body>

Modified: labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/phalanx/index.jsp
===================================================================
--- labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/phalanx/index.jsp	2007-01-11 22:09:16 UTC (rev 8831)
+++ labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/phalanx/index.jsp	2007-01-11 22:10:56 UTC (rev 8832)
@@ -46,7 +46,7 @@
    <meta http-equiv="Content-Type" content="<%= response.getContentType() %>"/>
    <link rel="shortcut icon" href="<%= contextPath %>/phalanx/images/favicon.ico"/>
    <link href="<%= contextPath %>/phalanx/css/portal_style.css" rel="stylesheet" type="text/css" />
-   <link href="/portal-forums/subSilver/styles.css" rel="stylesheet" type="text/css" />
+   <!--<link href="/portal-forums/subSilver/styles.css" rel="stylesheet" type="text/css" />-->
 </head>
 
 <body bgcolor="#E7E7E7">

Modified: labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/themes/industrial/portal_style.css
===================================================================
--- labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/themes/industrial/portal_style.css	2007-01-11 22:09:16 UTC (rev 8831)
+++ labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/themes/industrial/portal_style.css	2007-01-11 22:10:56 UTC (rev 8832)
@@ -236,6 +236,8 @@
    margin: 0;
    padding-left: 300px;
    min-width: 550px;
+   z-index: 100; /* added for submenu hover */
+   position: relative; /* added for submenu hover */
 }
 
 UL#tabsHeader li {
@@ -288,6 +290,68 @@
    background-repeat: repeat-x;
 }
 
+/* Begin Submenu selectors */
+
+/* hide the sub levels and give them a positon absolute so that they take up no room */
+UL#tabsHeader ul {
+   visibility: hidden;
+   position: absolute;
+   height: 0;
+   top: 0px;
+   left: 0;
+   width: 150px;
+   text-align: left;
+   margin: 0px;
+   padding: 0px;
+   margin-top: 22px;
+}
+
+UL#tabsHeader ul a {
+   font: 11px;
+   font-family: Verdana, Arial, Helvetica, Sans-Serif, sans-serif;
+   font-weight: normal;
+   color: #5078aa;
+
+}
+
+UL#tabsHeader ul a:hover {
+   font: 11px;
+   font-family: Verdana, Arial, Helvetica, Sans-Serif, sans-serif;
+   font-weight: normal;
+   color: #5078aa;
+}
+
+UL#tabsHeader #current ul a {
+   font: 11px;
+   font-family: Verdana, Arial, Helvetica, Sans-Serif, sans-serif;
+   font-weight: normal;
+   color: #5078aa;
+}
+
+UL#tabsHeader li:hover ul {
+   visibility: visible;
+}
+
+UL#tabsHeader ul li {
+   background: #EDECEC;
+   color: #5078aa;
+   padding: 3px;
+   width: 120px;
+
+   border: 1px solid #FFFFFF;
+   border-width: 1px 1px 0 0;
+
+   margin-left: 0px;
+   margin-top: 0px;
+   margin-right: 0px;
+}
+
+UL#tabsHeader ul li:hover {
+   background: #E2E2E2;
+}
+
+/* End Submenu selectors */
+
 /* used for sub navigation if applicable
 UL#tabsHeader #currentSubNav, UL#tabsHeader #currentSubNav a {
   color: #000;

Modified: labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/themes/maple/portal_style.css
===================================================================
--- labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/themes/maple/portal_style.css	2007-01-11 22:09:16 UTC (rev 8831)
+++ labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/themes/maple/portal_style.css	2007-01-11 22:10:56 UTC (rev 8832)
@@ -235,6 +235,8 @@
    margin: 0;
    padding-left: 10px;
    min-width: 550px;
+   z-index: 100; /* added for submenu hover */
+   position: relative; /* added for submenu hover */
 }
 
 UL#tabsHeader li {
@@ -297,6 +299,68 @@
    background-repeat: no-repeat;
 }
 
+/* Begin Submenu selectors */
+
+/* hide the sub levels and give them a positon absolute so that they take up no room */
+UL#tabsHeader ul {
+   visibility: hidden;
+   position: absolute;
+   height: 0;
+   top: 0px;
+   left: 0;
+   width: 150px;
+   text-align: left;
+   margin: 0px;
+   padding: 0px;
+   margin-top: 22px;
+}
+
+UL#tabsHeader ul a {
+   font: 11px;
+   font-family: Verdana, Arial, Helvetica, Sans-Serif, sans-serif;
+   font-weight: normal;
+   color: #5078aa;
+
+}
+
+UL#tabsHeader ul a:hover {
+   font: 11px;
+   font-family: Verdana, Arial, Helvetica, Sans-Serif, sans-serif;
+   font-weight: normal;
+   color: #5078aa;
+}
+
+UL#tabsHeader #current ul a {
+   font: 11px;
+   font-family: Verdana, Arial, Helvetica, Sans-Serif, sans-serif;
+   font-weight: normal;
+   color: #5078aa;
+}
+
+UL#tabsHeader li:hover ul {
+   visibility: visible;
+}
+
+UL#tabsHeader ul li {
+   background: #EDECEC;
+   color: #5078aa;
+   padding: 3px;
+   width: 120px;
+
+   border: 1px solid #FFFFFF;
+   border-width: 1px 1px 0 0;
+
+   margin-left: 0px;
+   margin-top: 0px;
+   margin-right: 0px;
+}
+
+UL#tabsHeader ul li:hover {
+   background: #E2E2E2;
+}
+
+/* End Submenu selectors */
+
 /* Tab background color for selected global nav item */
 li.currentTabBackground {
    background: #fff;

Modified: labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/themes/mission-critical/portal_style.css
===================================================================
--- labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/themes/mission-critical/portal_style.css	2007-01-11 22:09:16 UTC (rev 8831)
+++ labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/themes/mission-critical/portal_style.css	2007-01-11 22:10:56 UTC (rev 8832)
@@ -231,6 +231,8 @@
    margin: 0;
    padding-left: 440px;
    min-width: 550px;
+   z-index: 100; /* added for submenu hover */
+   position: relative; /* added for submenu hover */
 }
 
 UL#tabsHeader li {
@@ -284,6 +286,68 @@
    background-repeat: repeat-x;
 }
 
+/* Begin Submenu selectors */
+
+/* hide the sub levels and give them a positon absolute so that they take up no room */
+UL#tabsHeader ul {
+   visibility: hidden;
+   position: absolute;
+   height: 0;
+   top: 0px;
+   left: 0;
+   width: 150px;
+   text-align: left;
+   margin: 0px;
+   padding: 0px;
+   margin-top: 22px;
+}
+
+UL#tabsHeader ul a {
+   font: 11px;
+   font-family: Verdana, Arial, Helvetica, Sans-Serif, sans-serif;
+   font-weight: normal;
+   color: #5078aa;
+
+}
+
+UL#tabsHeader ul a:hover {
+   font: 11px;
+   font-family: Verdana, Arial, Helvetica, Sans-Serif, sans-serif;
+   font-weight: normal;
+   color: #5078aa;
+}
+
+UL#tabsHeader #current ul a {
+   font: 11px;
+   font-family: Verdana, Arial, Helvetica, Sans-Serif, sans-serif;
+   font-weight: normal;
+   color: #5078aa;
+}
+
+UL#tabsHeader li:hover ul {
+   visibility: visible;
+}
+
+UL#tabsHeader ul li {
+   background: #EDECEC;
+   color: #5078aa;
+   padding: 3px;
+   width: 120px;
+
+   border: 1px solid #FFFFFF;
+   border-width: 1px 1px 0 0;
+
+   margin-left: 0px;
+   margin-top: 0px;
+   margin-right: 0px;
+}
+
+UL#tabsHeader ul li:hover {
+   background: #E2E2E2;
+}
+
+/* End Submenu selectors */
+
 /* used for sub navigation if applicable
 UL#tabsHeader #currentSubNav, UL#tabsHeader #currentSubNav a {
   color: #000;

Modified: labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/themes/phalanx/portal_style.css
===================================================================
--- labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/themes/phalanx/portal_style.css	2007-01-11 22:09:16 UTC (rev 8831)
+++ labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/themes/phalanx/portal_style.css	2007-01-11 22:10:56 UTC (rev 8832)
@@ -238,6 +238,8 @@
    margin: 0;
    padding-left: 300px;
    min-width: 550px;
+   z-index: 100; /* added for submenu hover */
+   position: relative; /* added for submenu hover */
 }
 
 UL#tabsHeader li {
@@ -325,6 +327,68 @@
    line-height: 26px;
 }
 
+/* Begin Submenu selectors */
+
+/* hide the sub levels and give them a positon absolute so that they take up no room */
+UL#tabsHeader ul {
+   visibility: hidden;
+   position: absolute;
+   height: 0;
+   top: 0px;
+   left: 0;
+   width: 150px;
+   text-align: left;
+   margin: 0px;
+   padding: 0px;
+   margin-top: 22px;
+}
+
+UL#tabsHeader ul a {
+   font: 11px;
+   font-family: Verdana, Arial, Helvetica, Sans-Serif, sans-serif;
+   font-weight: normal;
+   color: #5078aa;
+
+}
+
+UL#tabsHeader ul a:hover {
+   font: 11px;
+   font-family: Verdana, Arial, Helvetica, Sans-Serif, sans-serif;
+   font-weight: normal;
+   color: #5078aa;
+}
+
+UL#tabsHeader #current ul a {
+   font: 11px;
+   font-family: Verdana, Arial, Helvetica, Sans-Serif, sans-serif;
+   font-weight: normal;
+   color: #5078aa;
+}
+
+UL#tabsHeader li:hover ul {
+   visibility: visible;
+}
+
+UL#tabsHeader ul li {
+   background: #EDECEC;
+   color: #5078aa;
+   padding: 3px;
+   width: 120px;
+
+   border: 1px solid #FFFFFF;
+   border-width: 1px 1px 0 0;
+
+   margin-left: 0px;
+   margin-top: 0px;
+   margin-right: 0px;
+}
+
+UL#tabsHeader ul li:hover {
+   background: #E2E2E2;
+}
+
+/* End Submenu selectors */
+
 UL#tabsHeader #current a:hover {
    text-decoration: none;
 }

Modified: labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/themes/renaissance/images/ico_16_normal.gif
===================================================================
(Binary files differ)

Modified: labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/themes/renaissance/portal_style.css
===================================================================
--- labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/themes/renaissance/portal_style.css	2007-01-11 22:09:16 UTC (rev 8831)
+++ labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-core.war/themes/renaissance/portal_style.css	2007-01-11 22:10:56 UTC (rev 8832)
@@ -225,6 +225,8 @@
    margin: 0;
    padding-left: 0px;
    min-width: 550px;
+   z-index: 100; /* added for submenu hover */
+   position: relative; /* added for submenu hover */
 }
 
 UL#tabsHeader li {
@@ -305,6 +307,66 @@
    background-position: top left;
 }
 
+/* Begin Submenu selectors */
+UL#tabsHeader ul {
+   visibility: hidden;
+   position: absolute;
+   height: 0;
+   top: 0px;
+   left: 0;
+   width: 150px;
+   text-align: left;
+   margin: 0px;
+   padding: 0px;
+   margin-top: 22px;
+}
+
+UL#tabsHeader ul a {
+   font: 11px;
+   font-family: Verdana, Arial, Helvetica, Sans-Serif, sans-serif;
+   font-weight: normal;
+   color: #5078aa;
+
+}
+
+UL#tabsHeader ul a:hover {
+   font: 11px;
+   font-family: Verdana, Arial, Helvetica, Sans-Serif, sans-serif;
+   font-weight: normal;
+   color: #5078aa;
+}
+
+UL#tabsHeader #current ul a {
+   font: 11px;
+   font-family: Verdana, Arial, Helvetica, Sans-Serif, sans-serif;
+   font-weight: normal;
+   color: #5078aa;
+}
+
+UL#tabsHeader li:hover ul {
+   visibility: visible;
+}
+
+UL#tabsHeader ul li {
+   background: #DFE8ED;
+   color: #5078aa;
+   padding: 3px;
+   width: 120px;
+
+   border: 1px solid #98b7c6;
+   border-width: 0px 1px 1px 1px;
+
+   margin-left: 0px;
+   margin-top: 0px;
+   margin-right: 0px;
+}
+
+UL#tabsHeader ul li:hover {
+   background: #C0D3DC;
+}
+
+/* End Submenu selectors */
+
 /* -------- These are new selectors for the admin and add page styles ------- */
 
 UL#tabsHeader #admin {
@@ -800,8 +862,10 @@
    font-weight: bold;
    color: #FFFFFF;
    background-color: #5078aa;
-   border: 1px solid #175877;
-
+   border-top: 1px solid #97B7C6;
+   border-left: 1px solid #97B7C6;
+   border-bottom: 1px solid #254869;
+   border-right: 1px solid #254869;
 }
 
 /* Text that appears beside a context dependent action icon */
@@ -927,16 +991,13 @@
 
 .portlet-section-body {
    color: #656565;
-   padding: 0px 10px 0px 5px;
 }
 
 .portlet-section-alternate {
-   font-size: 12px;
    background-color: #E6E8E5;
 }
 
 .portlet-section-selected {
-   font-size: 12px;
    background-color: #CBD4E6;
 }
 

Modified: labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-samples.war/WEB-INF/default-object.xml
===================================================================
--- labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-samples.war/WEB-INF/default-object.xml	2007-01-11 22:09:16 UTC (rev 8831)
+++ labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-samples.war/WEB-INF/default-object.xml	2007-01-11 22:10:56 UTC (rev 8832)
@@ -34,6 +34,10 @@
                <name>theme.ajax.object_disabled</name>
                <value>true</value>
             </property>
+            <property>
+               <name>order</name>
+               <value>3</value>
+            </property>
          </properties>
          <window>
             <window-name>TestPortletWindow</window-name>

Modified: labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-samples.war/WEB-INF/jboss-portlet.xml
===================================================================
--- labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-samples.war/WEB-INF/jboss-portlet.xml	2007-01-11 22:09:16 UTC (rev 8831)
+++ labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-samples.war/WEB-INF/jboss-portlet.xml	2007-01-11 22:10:56 UTC (rev 8832)
@@ -134,6 +134,16 @@
       <service-ref>:service=Module,type=Role</service-ref>
    </service>
    <service>
+      <service-name>UserProfileModule</service-name>
+      <service-class>org.jboss.portal.identity.UserProfileModule</service-class>
+      <service-ref>:service=Module,type=UserProfile</service-ref>
+   </service>
+   <service>
+      <service-name>MembershipModule</service-name>
+      <service-class>org.jboss.portal.identity.MembershipModule</service-class>
+      <service-ref>:service=Module,type=Membership</service-ref>
+   </service>
+   <service>
       <service-name>MailModule</service-name>
       <service-class>org.jboss.portal.core.modules.MailModule</service-class>
       <service-ref>:service=Module,type=Mail</service-ref>

Modified: labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-samples.war/WEB-INF/jsp/info/view.jsp
===================================================================
--- labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-samples.war/WEB-INF/jsp/info/view.jsp	2007-01-11 22:09:16 UTC (rev 8831)
+++ labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-samples.war/WEB-INF/jsp/info/view.jsp	2007-01-11 22:10:56 UTC (rev 8832)
@@ -1,25 +1,26 @@
+<%@ page import="org.jboss.portal.server.PortalConstants" %>
 <%--~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-  ~ JBoss, a division of Red Hat                                             ~
-  ~ Copyright 2006, Red Hat Middleware, LLC, and individual                  ~
-  ~ contributors as indicated by the @authors tag. See the                   ~
-  ~ copyright.txt in the distribution for a full listing of                  ~
-  ~ individual contributors.                                                 ~
-  ~                                                                          ~
-  ~ This 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 software 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 software; if not, write to the Free              ~
-  ~ Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA       ~
-  ~ 02110-1301 USA, or see the FSF site: http://www.fsf.org.                 ~
-  ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~--%>
+~ JBoss, a division of Red Hat                                             ~
+~ Copyright 2006, Red Hat Middleware, LLC, and individual                  ~
+~ contributors as indicated by the @authors tag. See the                   ~
+~ copyright.txt in the distribution for a full listing of                  ~
+~ individual contributors.                                                 ~
+~                                                                          ~
+~ This 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 software 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 software; if not, write to the Free              ~
+~ Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA       ~
+~ 02110-1301 USA, or see the FSF site: http://www.fsf.org.                 ~
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~--%>
 
 <%@ taglib uri="http://java.sun.com/portlet" prefix="portlet" %>
 <%@ page isELIgnored="false" %>
@@ -28,7 +29,7 @@
 
 <table border="0" cellspacing="2" cellpadding="2">
    <tr>
-      <td align="center"><a href="http://portal.demo.jboss.com"><img
+      <td align="center"><a href="http://portal.demo.jboss.com" target="_blank"><img
          src="<%= renderRequest.getContextPath() %>/images/dodemo.gif" border="0"
          alt="Try the latest release of JBoss Portal, live and online."></a>
          <a href="http://labs.jboss.com/portal/jbossportal/download/index.html" target="_blank"><img
@@ -43,8 +44,9 @@
    </tr>
    <tr>
       <td class="portlet-section-alternate">
-         <font class="portlet-font">This is a basic installation of JBoss Portal's most recent release. You may log in
-            at any time, using the User Portlet below with the following credentials:</font>
+         <font class="portlet-font">This is a basic installation of <b><%= PortalConstants.VERSION %></b>. You may
+            log in at any time, using the <i>Login</i> link at the top-right of this page, with the following
+            credentials:</font>
       </td>
    </tr>
    <tr>
@@ -52,4 +54,10 @@
          <b>user/user</b> or <b>admin/admin</b>
       </td>
    </tr>
+   <tr>
+      <td align="center">
+         If you are in need of guidance with regards to navigating, configuring, or operating the portal, please view
+         our <a href="http://labs.jboss.com/portal/jbossportal/docs/index.html" target="_blank">online documentation</a>.
+      </td>
+   </tr>
 </table>

Modified: labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-samples.war/WEB-INF/portlet-instances.xml
===================================================================
--- labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-samples.war/WEB-INF/portlet-instances.xml	2007-01-11 22:09:16 UTC (rev 8831)
+++ labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-samples.war/WEB-INF/portlet-instances.xml	2007-01-11 22:10:56 UTC (rev 8832)
@@ -54,6 +54,7 @@
       </instance>
    </deployment>
    <deployment>
+      <if-exists>overwrite</if-exists>
       <instance>
          <instance-id>NewsPortletInstance2</instance-id>
          <portlet-ref>NewsPortlet</portlet-ref>

Modified: labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-server.war/WEB-INF/jboss-web.xml
===================================================================
--- labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-server.war/WEB-INF/jboss-web.xml	2007-01-11 22:09:16 UTC (rev 8831)
+++ labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-server.war/WEB-INF/jboss-web.xml	2007-01-11 22:10:56 UTC (rev 8832)
@@ -26,8 +26,7 @@
    <security-domain>java:jaas/portal</security-domain>
    <context-root>/portal</context-root>
    <replication-config>
-      <replication-trigger>SET_AND_GET</replication-trigger>
-      <replication-type>SYNC</replication-type>
+      <replication-trigger>SET</replication-trigger>
    </replication-config>
    <resource-ref>
       <res-ref-name>jdbc/PortalDS</res-ref-name>

Deleted: labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-server.war/WEB-INF/server-layouts.xml
===================================================================
--- labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-server.war/WEB-INF/server-layouts.xml	2007-01-11 22:09:16 UTC (rev 8831)
+++ labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-server.war/WEB-INF/server-layouts.xml	2007-01-11 22:10:56 UTC (rev 8832)
@@ -1,25 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-  ~ JBoss, a division of Red Hat                                              ~
-  ~ Copyright 2006, Red Hat Middleware, LLC, and individual                   ~
-  ~ contributors as indicated by the @authors tag. See the                    ~
-  ~ copyright.txt in the distribution for a full listing of                   ~
-  ~ individual contributors.                                                  ~
-  ~                                                                           ~
-  ~ This 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 software 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 software; if not, write to the Free               ~
-  ~ Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA        ~
-  ~ 02110-1301 USA, or see the FSF site: http://www.fsf.org.                  ~
-  ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~-->
-
-<layouts/>

Modified: labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-server.war/WEB-INF/web.xml
===================================================================
--- labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-server.war/WEB-INF/web.xml	2007-01-11 22:09:16 UTC (rev 8831)
+++ labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-server.war/WEB-INF/web.xml	2007-01-11 22:10:56 UTC (rev 8832)
@@ -97,7 +97,7 @@
       <url-pattern>/authsec/*</url-pattern>
    </servlet-mapping>
 
-   <!-- Force the mapping of the index.jsp because of the default servlet replacement -->
+   <!-- Force the mapping of the jsp and images because of the default servlet replacement -->
    <servlet-mapping>
       <servlet-name>jsp</servlet-name>
       <url-pattern>/login.jsp</url-pattern>
@@ -106,6 +106,38 @@
       <servlet-name>jsp</servlet-name>
       <url-pattern>/error.jsp</url-pattern>
    </servlet-mapping>
+   <servlet-mapping>
+      <servlet-name>default</servlet-name>
+      <url-pattern>/images/login_bottom.png</url-pattern>
+   </servlet-mapping>
+   <servlet-mapping>
+      <servlet-name>default</servlet-name>
+      <url-pattern>/images/login_bottom_left.png</url-pattern>
+   </servlet-mapping>
+   <servlet-mapping>
+      <servlet-name>default</servlet-name>
+      <url-pattern>/images/login_bottom_right.png</url-pattern>
+   </servlet-mapping>
+   <servlet-mapping>
+      <servlet-name>default</servlet-name>
+      <url-pattern>/images/login_left.png</url-pattern>
+   </servlet-mapping>
+   <servlet-mapping>
+      <servlet-name>default</servlet-name>
+      <url-pattern>/images/login_right.png</url-pattern>
+   </servlet-mapping>
+   <servlet-mapping>
+      <servlet-name>default</servlet-name>
+      <url-pattern>/images/login_top.png</url-pattern>
+   </servlet-mapping>
+   <servlet-mapping>
+      <servlet-name>default</servlet-name>
+      <url-pattern>/images/login_top_left.png</url-pattern>
+   </servlet-mapping>
+   <servlet-mapping>
+      <servlet-name>default</servlet-name>
+      <url-pattern>/images/login_top_right.png</url-pattern>
+   </servlet-mapping>
 
    <session-config>
       <session-timeout>15</session-timeout>

Modified: labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-server.war/error.jsp
===================================================================
--- labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-server.war/error.jsp	2007-01-11 22:09:16 UTC (rev 8831)
+++ labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-server.war/error.jsp	2007-01-11 22:10:56 UTC (rev 8832)
@@ -21,12 +21,10 @@
   ~ 02110-1301 USA, or see the FSF site: http://www.fsf.org.                 ~
   ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~--%>
 
-<%@ taglib uri="/WEB-INF/theme/portal-layout.tld" prefix="p" %>
 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
 "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
 <html>
 <head>
-   <p:theme themeName='Nphalanx'/>
 </head>
 
 <body id="body">

Added: labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-server.war/images/login_bottom.png
===================================================================
(Binary files differ)


Property changes on: labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-server.war/images/login_bottom.png
___________________________________________________________________
Name: svn:mime-type
   + application/octet-stream

Added: labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-server.war/images/login_bottom_left.png
===================================================================
(Binary files differ)


Property changes on: labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-server.war/images/login_bottom_left.png
___________________________________________________________________
Name: svn:mime-type
   + application/octet-stream

Added: labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-server.war/images/login_bottom_right.png
===================================================================
(Binary files differ)


Property changes on: labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-server.war/images/login_bottom_right.png
___________________________________________________________________
Name: svn:mime-type
   + application/octet-stream

Added: labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-server.war/images/login_left.png
===================================================================
(Binary files differ)


Property changes on: labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-server.war/images/login_left.png
___________________________________________________________________
Name: svn:mime-type
   + application/octet-stream

Added: labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-server.war/images/login_right.png
===================================================================
(Binary files differ)


Property changes on: labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-server.war/images/login_right.png
___________________________________________________________________
Name: svn:mime-type
   + application/octet-stream

Added: labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-server.war/images/login_top.png
===================================================================
(Binary files differ)


Property changes on: labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-server.war/images/login_top.png
___________________________________________________________________
Name: svn:mime-type
   + application/octet-stream

Added: labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-server.war/images/login_top_left.png
===================================================================
(Binary files differ)


Property changes on: labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-server.war/images/login_top_left.png
___________________________________________________________________
Name: svn:mime-type
   + application/octet-stream

Added: labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-server.war/images/login_top_right.png
===================================================================
(Binary files differ)


Property changes on: labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-server.war/images/login_top_right.png
___________________________________________________________________
Name: svn:mime-type
   + application/octet-stream

Modified: labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-server.war/login.jsp
===================================================================
--- labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-server.war/login.jsp	2007-01-11 22:09:16 UTC (rev 8831)
+++ labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-server.war/login.jsp	2007-01-11 22:10:56 UTC (rev 8832)
@@ -21,64 +21,80 @@
   ~ 02110-1301 USA, or see the FSF site: http://www.fsf.org.                 ~
   ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~--%>
 
-<%@ taglib uri="/WEB-INF/theme/portal-layout.tld" prefix="p" %>
 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
 "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+
 <html>
 <head>
    <style>
       body {
          background-color: #FFFFFF;
       }
-
       td {
          color: #000000;
          font-family: verdana, arial, sans-serif;
          font-size: 12px;
          line-height: 130%;
       }
-
-      table.form {
-         background-color: #DFE8ED;
-         border-style: dashed;
-         border-color: #98B7C6;
-         border-width: 1px;
-
-      }
    </style>
 </head>
 
 <body OnLoad="document.loginform.j_username.focus();">
 
-<table width="100%" height="100%" cellpadding="0" cellspacing="1">
+<table width="100%" height="600" cellpadding="0" cellspacing="1" >
    <tr>
       <td valign="middle" align="center">
+         <form method="POST" action="<%= response.encodeURL("j_security_check") %>" name="loginform" id="loginForm">
 
-         <form method="POST" action="<%= response.encodeURL("j_security_check") %>" name="loginform" id="loginForm">
-            <b>JBoss Portal Login</b><br><br>
-            <table width="350" height="200" cellpadding="0" cellspacing="0" class="form">
-               <tr>
-                  <td align="right" width="100">
-                     Username:&nbsp;
-                  </td>
-                  <td align="left">
-                     <input type="text" name="j_username" value=""/>
-                  </td>
-               </tr>
-               <tr>
-                  <td align="right" width="100">
-                     Password:&nbsp;
-                  </td>
-                  <td align="left">
-                     <input type="password" name="j_password" value=""/>
-                  </td>
-               </tr>
-               <tr>
-                  <td colspan="2" align="center">
-                     <input type="submit" name="login" value="Login"/>
-                  </td>
-               </tr>
-            </table>
+            <% String prefix = request.getContextPath(); %>
+
+		  <table  cellspacing="0" cellpadding="0">
+		  <tr>
+		  <td ><img src="<%= prefix %>/images/login_top_left.png" /></td>
+		  <td style="background-image:url('<%= prefix %>/images/login_top.png')"></td>
+		  <td><img src="<%= prefix %>/images/login_top_right.png" /></td>
+		  </tr>
+		  <tr>
+		  <td style="background-image:url('<%= prefix %>/images/login_left.png')"></td>
+				<!-- REAL CONTENT CELL : begin -->
+				<td style="background-color:#b4b4b4" align="center">
+					<b>JBoss Portal Login</b><br/><br/>
+					<table>
+				       <tr>
+					  <td align="right" width="50">
+					     Username:&nbsp;
+					  </td>
+					  <td align="left">
+					     <input type="text" name="j_username" value=""/>
+					  </td>
+				       </tr>
+				       <tr>
+					  <td align="right" width="50">
+					     Password:&nbsp;
+					  </td>
+					  <td align="left">
+					     <input type="password" name="j_password" value=""/>
+					  </td>
+				       </tr>
+					<tr>
+					  <td colspan="2" align="right">
+					     <input type="submit" name="login" value="Login"/>
+					  </td>
+				       </tr>
+				    </table>
+
+				</td>
+				<!-- REAL CONTENT CELL : end -->
+		  <td style="background-image:url('<%= prefix %>/images/login_right.png')"></td>
+		  </tr>
+		  <tr>
+		  <td><img src="<%= prefix %>/images/login_bottom_left.png" /></td>
+		  <td style="background-image:url('<%= prefix %>/images/login_bottom.png')"></td>
+		  <td><img src="<%= prefix %>/images/login_bottom_right.png" /></td>
+		  </tr>
+		  </table>
+
+
          </form>
 
       </td>
@@ -87,4 +103,3 @@
 
 </body>
 </html>
-

Added: labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-workflow.sar/META-INF/jboss-service.xml
===================================================================
--- labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-workflow.sar/META-INF/jboss-service.xml	2007-01-11 22:09:16 UTC (rev 8831)
+++ labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-workflow.sar/META-INF/jboss-service.xml	2007-01-11 22:10:56 UTC (rev 8832)
@@ -0,0 +1,147 @@
+<!--~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+  ~ JBoss, a division of Red Hat                                              ~
+  ~ Copyright 2006, Red Hat Middleware, LLC, and individual                   ~
+  ~ contributors as indicated by the @authors tag. See the                    ~
+  ~ copyright.txt in the distribution for a full listing of                   ~
+  ~ individual contributors.                                                  ~
+  ~                                                                           ~
+  ~ This 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 software 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 software; if not, write to the Free               ~
+  ~ Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA        ~
+  ~ 02110-1301 USA, or see the FSF site: http://www.fsf.org.                  ~
+  ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~-->
+
+<server>
+    <!-- Hibernate service -->   
+	<mbean
+      code="org.jboss.portal.jems.hibernate.SessionFactoryBinder"
+      name="portal:service=Hibernate,type=Workflow"
+      xmbean-dd=""
+      xmbean-code="org.jboss.portal.jems.as.system.JBossServiceModelMBean">
+      <xmbean/>
+      <depends>jboss.jca:service=DataSourceBinding,name=PortalDS</depends>
+      <attribute name="DoChecking">true</attribute>
+      <attribute name="ConfigLocation">conf/hibernate/workflow/hibernate.cfg.xml</attribute>
+      <attribute name="JNDIName">java:/portal/workflow/WorkFlowSessionFactory</attribute>
+   </mbean>
+   
+    <!-- Workflow service -->   
+	<mbean
+      code="org.jboss.portal.workflow.service.WorkflowServiceImpl"
+      name="portal:service=Workflow,type=WorkflowService"
+      xmbean-dd=""
+      xmbean-code="org.jboss.portal.jems.as.system.JBossServiceModelMBean">
+      <xmbean/>
+      <depends>portal:service=Hibernate,type=Workflow</depends>  
+      <attribute name="JbpmConfigurationXml">
+      	<![CDATA[
+      	 <jbpm-configuration>	      	      
+	      	<jbpm-context>
+	      		<service name="persistence" factory="org.jbpm.persistence.db.DbPersistenceServiceFactory"/> 
+	        </jbpm-context>	      	      	      
+	        <string name="resource.hibernate.cfg.xml" value="conf/hibernate/workflow/hibernate.cfg.xml"/>
+	        <string name="resource.business.calendar" value="org/jbpm/calendar/jbpm.business.calendar.properties"/>
+	        <string name="resource.default.modules" value="org/jbpm/graph/def/jbpm.default.modules.properties"/>
+	        <string name="resource.converter" value="org/jbpm/db/hibernate/jbpm.converter.properties"/>
+	        <string name="resource.action.types" value="org/jbpm/graph/action/action.types.xml"/>
+	        <string name="resource.node.types" value="org/jbpm/graph/node/node.types.xml"/>
+	        <string name="resource.varmapping" value="org/jbpm/context/exe/jbpm.varmapping.xml"/>
+	     </jbpm-configuration>
+      	]]>
+      </attribute>                
+   </mbean>
+   
+   <!-- ApprovePublish workflow service -->   
+	<mbean
+      code="org.jboss.portal.workflow.cms.ApprovePublishImpl"
+      name="portal:service=ApprovePublish,type=Workflow"
+      xmbean-dd=""
+      xmbean-code="org.jboss.portal.jems.as.system.JBossServiceModelMBean">
+      <xmbean/>
+      <depends optional-attribute-name="WorkflowService" proxy-type="attribute">
+      	portal:service=Workflow,type=WorkflowService
+      </depends>
+      <!-- JBPM process definition -->
+      <attribute name="Process">
+      	<![CDATA[      	     
+  	         <!-- cms approval workflow -->
+  	   		 <process-definition name="approval_workflow">
+		      <start-state>
+		      	<transition to="request_approval"/>			      		
+		        </start-state>
+		        <task-node name="request_approval" signal="first">
+		          <task name="approve_publish">
+		            <assignment class="org.jboss.portal.core.workflow.cms.PublishAssignmentHandler"/>
+		            <event type="task-start">
+		            	<action class="org.jboss.portal.cms.workflow.FinalizePublish"/>	
+		            </event>
+		            <exception-handler>
+		            	<action class="org.jboss.portal.workflow.cms.TaskExceptionHandler"/>	
+		            </exception-handler>
+		          </task>		          
+		          <transition name="approval" to="end"/>		          		      	  
+	              <transition name="rejection" to="end"/>	                       
+		        </task-node>			      
+		        <end-state name="end"/>		          
+		     </process-definition>		      		      			      
+      	]]>
+      </attribute>
+      <!-- 
+      		  overwrite = false creates the process first time if does not exist, for
+      	      subsequent server restarts, this process definition remains in tact
+      	          
+  	          overwrite = true creates the process first time if does not exist,
+  	          for subsequent server restarts, it creates a new version of the process definition
+  	          which will be used for processes created from then onwards. Old processes created
+  	          for an older version of the definition remain in tact and use their corresponding
+  	          process definition.
+  	          
+  	          Typically use overwrite=false and overwrite=true only when a new process definition
+  	          related to this workflow needs to be deployed
+      -->
+      <attribute name="Overwrite">false</attribute>
+      <!-- 
+      		a comma separated list email addresses of managers that can 
+      		approve/reject content publish requests 
+      		
+      		TODO: once a GUI is fully integrated with the workflow
+      		this will be modified to be a list of roles and then
+      		the corresponding users will be treated as managers
+      -->
+      <attribute name="ManagerEmails">sohil.shah at jboss.com,sshah at redhat.com</attribute>  
+      <attribute name="From">do-not-reply at jboss.com</attribute>
+      <attribute name="Subject">Content Approval Requested</attribute>
+      <attribute name="Body">
+      	<![CDATA[      	     
+  	         Approval is needed to publish the following Content:
+  	          	        
+  	         Content Location : {0}
+  	         
+  	         Content Type : {1}
+  	         
+  	         Content Size : {2}
+  	         
+  	         Creation Date : {3}
+  	         
+  	         User : {4}
+  	         
+  	         
+  	         <a href="http://localhost/workflow/approve?pId={5}&manager={6}">Approve</a>
+  	         
+  	         
+  	         <a href="http://localhost/workflow/reject?pId={7}&manager={8}">Reject</a>
+      	]]>
+      </attribute>
+      <attribute name="JNDIName">java:portal/ApprovePublishWorkflow</attribute>  
+   </mbean>     
+</server>

Added: labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-workflow.sar/conf/hibernate/workflow/ehcache.xml
===================================================================
--- labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-workflow.sar/conf/hibernate/workflow/ehcache.xml	2007-01-11 22:09:16 UTC (rev 8831)
+++ labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-workflow.sar/conf/hibernate/workflow/ehcache.xml	2007-01-11 22:10:56 UTC (rev 8832)
@@ -0,0 +1,61 @@
+<!--~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+  ~ JBoss, a division of Red Hat                                              ~
+  ~ Copyright 2006, Red Hat Middleware, LLC, and individual                   ~
+  ~ contributors as indicated by the @authors tag. See the                    ~
+  ~ copyright.txt in the distribution for a full listing of                   ~
+  ~ individual contributors.                                                  ~
+  ~                                                                           ~
+  ~ This 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 software 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 software; if not, write to the Free               ~
+  ~ Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA        ~
+  ~ 02110-1301 USA, or see the FSF site: http://www.fsf.org.                  ~
+  ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~-->
+
+<ehcache>
+
+    <!-- Sets the path to the directory where cache .data files are created.
+
+         If the path is a Java System Property it is replaced by
+         its value in the running VM.
+
+         The following properties are translated:
+         user.home - User's home directory
+         user.dir - User's current working directory
+         java.io.tmpdir - Default temp file path -->
+   <diskStore path="java.io.tmpdir/workflow"/>
+
+
+   <!--Default Cache configuration. These will applied to caches programmatically created through
+   the CacheManager.
+
+   The following attributes are required for defaultCache:
+
+   maxInMemory       - Sets the maximum number of objects that will be created in memory
+   eternal           - Sets whether elements are eternal. If eternal,  timeouts are ignored and the element
+                       is never expired.
+   timeToIdleSeconds - Sets the time to idle for an element before it expires. Is only used
+                       if the element is not eternal. Idle time is now - last accessed time
+   timeToLiveSeconds - Sets the time to live for an element before it expires. Is only used
+                       if the element is not eternal. TTL is now - creation time
+   overflowToDisk    - Sets whether elements can overflow to disk when the in-memory cache
+                       has reached the maxInMemory limit.
+
+   -->
+   <defaultCache
+      maxElementsInMemory="10000"
+      eternal="false"
+      timeToIdleSeconds="120"
+      timeToLiveSeconds="120"
+      overflowToDisk="false"
+      />
+</ehcache>

Added: labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-workflow.sar/conf/hibernate/workflow/hibernate.cfg.xml
===================================================================
--- labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-workflow.sar/conf/hibernate/workflow/hibernate.cfg.xml	2007-01-11 22:09:16 UTC (rev 8831)
+++ labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-workflow.sar/conf/hibernate/workflow/hibernate.cfg.xml	2007-01-11 22:10:56 UTC (rev 8832)
@@ -0,0 +1,170 @@
+<?xml version='1.0' encoding='utf-8'?>
+
+<!DOCTYPE hibernate-configuration PUBLIC
+          "-//Hibernate/Hibernate Configuration DTD 3.0//EN"
+          "http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd">
+
+<hibernate-configuration>
+  <session-factory>
+    <!-- jdbc connection properties -->
+    <property name="connection.datasource">java:PortalDS</property>
+
+    <!-- other hibernate properties -->
+    <property name="show_sql">false</property>
+    <property name="hibernate.format_sql">true</property>
+    <property name="hibernate.use_sql_comments">true</property>
+
+    <!--  caching properties -->
+    <property name="cache.use_second_level_cache">true</property>
+    <property name="cache.use_query_cache">true</property>
+    <property name="cache.provider_configuration_file_resource_path">conf/hibernate/cms/ehcache.xml</property>
+    <property name="cache.provider_class">org.hibernate.cache.EhCacheProvider</property>
+
+    <!-- managed environment transaction configuration -->
+    <property name="hibernate.transaction.manager_lookup_class">org.hibernate.transaction.JBossTransactionManagerLookup</property>
+    <property name="hibernate.transaction.factory_class">org.hibernate.transaction.JTATransactionFactory</property>
+
+    <!-- ############################################ -->
+    <!-- # mapping files with external dependencies # -->
+    <!-- ############################################ -->
+
+    <!-- following mapping file has a dependendy on   -->
+    <!-- 'bsh-{version}.jar'.                         -->
+    <!-- uncomment this if you don't have bsh on your -->
+    <!-- classpath.  you won't be able to use the     -->
+    <!-- script element in process definition files   -->
+    <mapping resource="org/jbpm/graph/action/Script.hbm.xml"/>
+
+    <!-- following mapping files have a dependendy on  -->
+    <!-- 'jbpm-identity-{version}.jar', mapping files  -->
+    <!-- of the pluggable jbpm identity component.     -->
+    <!-- comment out the following 3 lines if you don't-->
+    <!-- want to use the default jBPM identity mgmgt   -->
+    <!-- component                                     -->
+    <mapping resource="org/jbpm/identity/User.hbm.xml"/>
+    <mapping resource="org/jbpm/identity/Group.hbm.xml"/>
+    <mapping resource="org/jbpm/identity/Membership.hbm.xml"/>
+
+    <!-- ###################### -->
+    <!-- # jbpm mapping files # -->
+    <!-- ###################### -->
+
+    <!-- hql queries and type defs -->
+    <mapping resource="org/jbpm/db/hibernate.queries.hbm.xml"/>
+
+    <!-- graph.def mapping files -->
+    <mapping resource="org/jbpm/graph/def/ProcessDefinition.hbm.xml"/>
+    <mapping resource="org/jbpm/graph/def/Node.hbm.xml"/>
+    <mapping resource="org/jbpm/graph/def/Transition.hbm.xml"/>
+    <mapping resource="org/jbpm/graph/def/Event.hbm.xml"/>
+    <mapping resource="org/jbpm/graph/def/Action.hbm.xml"/>
+    <mapping resource="org/jbpm/graph/def/SuperState.hbm.xml"/>
+    <mapping resource="org/jbpm/graph/def/ExceptionHandler.hbm.xml"/>
+    <mapping resource="org/jbpm/instantiation/Delegation.hbm.xml"/>
+
+    <!-- graph.node mapping files -->
+    <mapping resource="org/jbpm/graph/node/StartState.hbm.xml"/>
+    <mapping resource="org/jbpm/graph/node/EndState.hbm.xml"/>
+    <mapping resource="org/jbpm/graph/node/ProcessState.hbm.xml"/>
+    <mapping resource="org/jbpm/graph/node/Decision.hbm.xml"/>
+    <mapping resource="org/jbpm/graph/node/Fork.hbm.xml"/>
+    <mapping resource="org/jbpm/graph/node/Join.hbm.xml"/>
+    <mapping resource="org/jbpm/graph/node/State.hbm.xml"/>
+    <mapping resource="org/jbpm/graph/node/TaskNode.hbm.xml"/>
+
+    <!-- context.def mapping files -->
+    <mapping resource="org/jbpm/context/def/ContextDefinition.hbm.xml"/>
+    <mapping resource="org/jbpm/context/def/VariableAccess.hbm.xml"/>
+
+    <!-- taskmgmt.def mapping files -->
+    <mapping resource="org/jbpm/taskmgmt/def/TaskMgmtDefinition.hbm.xml"/>
+    <mapping resource="org/jbpm/taskmgmt/def/Swimlane.hbm.xml"/>
+    <mapping resource="org/jbpm/taskmgmt/def/Task.hbm.xml"/>
+    <mapping resource="org/jbpm/taskmgmt/def/TaskController.hbm.xml"/>
+
+    <!-- module.def mapping files -->
+    <mapping resource="org/jbpm/module/def/ModuleDefinition.hbm.xml"/>
+
+    <!-- bytes mapping files -->
+    <mapping resource="org/jbpm/bytes/ByteArray.hbm.xml"/>
+
+    <!-- file.def mapping files -->
+    <mapping resource="org/jbpm/file/def/FileDefinition.hbm.xml"/>
+
+    <!-- scheduler.def mapping files -->
+    <mapping resource="org/jbpm/scheduler/def/CreateTimerAction.hbm.xml"/>
+    <mapping resource="org/jbpm/scheduler/def/CancelTimerAction.hbm.xml"/>
+
+    <!-- graph.exe mapping files -->
+    <mapping resource="org/jbpm/graph/exe/Comment.hbm.xml"/>
+    <mapping resource="org/jbpm/graph/exe/ProcessInstance.hbm.xml"/>
+    <mapping resource="org/jbpm/graph/exe/Token.hbm.xml"/>
+    <mapping resource="org/jbpm/graph/exe/RuntimeAction.hbm.xml"/>
+
+    <!-- module.exe mapping files -->
+    <mapping resource="org/jbpm/module/exe/ModuleInstance.hbm.xml"/>
+
+    <!-- context.exe mapping files -->
+    <mapping resource="org/jbpm/context/exe/ContextInstance.hbm.xml"/>
+    <mapping resource="org/jbpm/context/exe/TokenVariableMap.hbm.xml"/>
+    <mapping resource="org/jbpm/context/exe/VariableInstance.hbm.xml"/>
+    <mapping resource="org/jbpm/context/exe/variableinstance/ByteArrayInstance.hbm.xml"/>
+    <mapping resource="org/jbpm/context/exe/variableinstance/DateInstance.hbm.xml"/>
+    <mapping resource="org/jbpm/context/exe/variableinstance/DoubleInstance.hbm.xml"/>
+    <mapping resource="org/jbpm/context/exe/variableinstance/HibernateLongInstance.hbm.xml"/>
+    <mapping resource="org/jbpm/context/exe/variableinstance/HibernateStringInstance.hbm.xml"/>
+    <mapping resource="org/jbpm/context/exe/variableinstance/LongInstance.hbm.xml"/>
+    <mapping resource="org/jbpm/context/exe/variableinstance/NullInstance.hbm.xml"/>
+    <mapping resource="org/jbpm/context/exe/variableinstance/StringInstance.hbm.xml"/>
+
+    <!-- msg.db mapping files -->
+    <mapping resource="org/jbpm/msg/Message.hbm.xml"/>
+    <mapping resource="org/jbpm/msg/db/TextMessage.hbm.xml"/>
+    <mapping resource="org/jbpm/command/ExecuteActionCommand.hbm.xml"/>
+    <mapping resource="org/jbpm/command/ExecuteNodeCommand.hbm.xml"/>
+    <mapping resource="org/jbpm/command/SignalCommand.hbm.xml"/>
+    <mapping resource="org/jbpm/command/TaskInstanceEndCommand.hbm.xml"/>
+
+    <!-- taskmgmt.exe mapping files -->
+    <mapping resource="org/jbpm/taskmgmt/exe/TaskMgmtInstance.hbm.xml"/>
+    <mapping resource="org/jbpm/taskmgmt/exe/TaskInstance.hbm.xml"/>
+    <mapping resource="org/jbpm/taskmgmt/exe/PooledActor.hbm.xml"/>
+    <mapping resource="org/jbpm/taskmgmt/exe/SwimlaneInstance.hbm.xml"/>
+
+    <!-- scheduler.exe mapping files -->
+    <mapping resource="org/jbpm/scheduler/exe/Timer.hbm.xml"/>
+
+    <!-- logging mapping files -->
+    <mapping resource="org/jbpm/logging/log/ProcessLog.hbm.xml"/>
+    <mapping resource="org/jbpm/logging/log/MessageLog.hbm.xml"/>
+    <mapping resource="org/jbpm/logging/log/CompositeLog.hbm.xml"/>
+    <mapping resource="org/jbpm/graph/log/ActionLog.hbm.xml"/>
+    <mapping resource="org/jbpm/graph/log/NodeLog.hbm.xml"/>
+    <mapping resource="org/jbpm/graph/log/ProcessInstanceCreateLog.hbm.xml"/>
+    <mapping resource="org/jbpm/graph/log/ProcessInstanceEndLog.hbm.xml"/>
+    <mapping resource="org/jbpm/graph/log/ProcessStateLog.hbm.xml"/>
+    <mapping resource="org/jbpm/graph/log/SignalLog.hbm.xml"/>
+    <mapping resource="org/jbpm/graph/log/TokenCreateLog.hbm.xml"/>
+    <mapping resource="org/jbpm/graph/log/TokenEndLog.hbm.xml"/>
+    <mapping resource="org/jbpm/graph/log/TransitionLog.hbm.xml"/>
+    <mapping resource="org/jbpm/context/log/VariableLog.hbm.xml"/>
+    <mapping resource="org/jbpm/context/log/VariableCreateLog.hbm.xml"/>
+    <mapping resource="org/jbpm/context/log/VariableDeleteLog.hbm.xml"/>
+    <mapping resource="org/jbpm/context/log/VariableUpdateLog.hbm.xml"/>
+    <mapping resource="org/jbpm/context/log/variableinstance/ByteArrayUpdateLog.hbm.xml"/>
+    <mapping resource="org/jbpm/context/log/variableinstance/DateUpdateLog.hbm.xml"/>
+    <mapping resource="org/jbpm/context/log/variableinstance/DoubleUpdateLog.hbm.xml"/>
+    <mapping resource="org/jbpm/context/log/variableinstance/HibernateLongUpdateLog.hbm.xml"/>
+    <mapping resource="org/jbpm/context/log/variableinstance/HibernateStringUpdateLog.hbm.xml"/>
+    <mapping resource="org/jbpm/context/log/variableinstance/LongUpdateLog.hbm.xml"/>
+    <mapping resource="org/jbpm/context/log/variableinstance/StringUpdateLog.hbm.xml"/>
+    <mapping resource="org/jbpm/taskmgmt/log/TaskLog.hbm.xml"/>
+    <mapping resource="org/jbpm/taskmgmt/log/TaskCreateLog.hbm.xml"/>
+    <mapping resource="org/jbpm/taskmgmt/log/TaskAssignLog.hbm.xml"/>
+    <mapping resource="org/jbpm/taskmgmt/log/TaskEndLog.hbm.xml"/>
+    <mapping resource="org/jbpm/taskmgmt/log/SwimlaneLog.hbm.xml"/>
+    <mapping resource="org/jbpm/taskmgmt/log/SwimlaneCreateLog.hbm.xml"/>
+    <mapping resource="org/jbpm/taskmgmt/log/SwimlaneAssignLog.hbm.xml"/>
+    
+  </session-factory>
+</hibernate-configuration>

Added: labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-workflow.sar/jbpm-3.1.2.jar
===================================================================
(Binary files differ)


Property changes on: labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-workflow.sar/jbpm-3.1.2.jar
___________________________________________________________________
Name: svn:mime-type
   + application/octet-stream

Added: labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-workflow.sar/jbpm-identity-3.1.2.jar
===================================================================
(Binary files differ)


Property changes on: labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-workflow.sar/jbpm-identity-3.1.2.jar
___________________________________________________________________
Name: svn:mime-type
   + application/octet-stream

Added: labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-workflow.sar/portal-workflow-lib.jar
===================================================================
(Binary files differ)


Property changes on: labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-workflow.sar/portal-workflow-lib.jar
___________________________________________________________________
Name: svn:mime-type
   + application/octet-stream

Added: labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-workflow.sar/portal-workflow.war
===================================================================
(Binary files differ)


Property changes on: labs/jbosslabs/trunk/portal-extensions-2.6/portal-binaries/to-copy/jboss-portal.sar/portal-workflow.sar/portal-workflow.war
___________________________________________________________________
Name: svn:mime-type
   + application/octet-stream

Modified: labs/jbosslabs/trunk/portal-extensions-2.6/portal-default/maven.xml
===================================================================
--- labs/jbosslabs/trunk/portal-extensions-2.6/portal-default/maven.xml	2007-01-11 22:09:16 UTC (rev 8831)
+++ labs/jbosslabs/trunk/portal-extensions-2.6/portal-default/maven.xml	2007-01-11 22:10:56 UTC (rev 8832)
@@ -9,7 +9,7 @@
     </goal>
 
     <goal name="build">
-	<attainGoal name="war" />
+	<attainGoal name="prj-war-build" />
     </goal>
     
     <goal name="clean">

Modified: labs/jbosslabs/trunk/portal-extensions-2.6/portal-default/project.properties
===================================================================
--- labs/jbosslabs/trunk/portal-extensions-2.6/portal-default/project.properties	2007-01-11 22:09:16 UTC (rev 8831)
+++ labs/jbosslabs/trunk/portal-extensions-2.6/portal-default/project.properties	2007-01-11 22:10:56 UTC (rev 8832)
@@ -1,3 +1,5 @@
 maven.repo.remote=http://repo1.maven.org/maven
 maven.junit.fork=yes
 maven.war.src=${basedir}/src/web
+
+maven.final.name=${pom.artifactId}

Modified: labs/jbosslabs/trunk/portal-extensions-2.6/project.properties
===================================================================
--- labs/jbosslabs/trunk/portal-extensions-2.6/project.properties	2007-01-11 22:09:16 UTC (rev 8831)
+++ labs/jbosslabs/trunk/portal-extensions-2.6/project.properties	2007-01-11 22:10:56 UTC (rev 8832)
@@ -24,3 +24,6 @@
 maven.jar.shotoku-tags=${ext.root.dir}/shotoku/shotoku-tags/target/shotoku-tags.jar
 
 maven.multiproject.excludes=shotoku/project.xml
+
+maven.war.classes.excludes=**/*
+maven.jar.includes=**/*.class
\ No newline at end of file




More information about the jboss-svn-commits mailing list