[pal-cvs 3379] [1113] re-factoring..

Back to archive index

svnno****@sourc***** svnno****@sourc*****
2008年 9月 4日 (木) 11:44:24 JST


Revision: 1113
          http://svn.sourceforge.jp/cgi-bin/viewcvs.cgi?root=pal&view=rev&rev=1113
Author:   shinsuke
Date:     2008-09-04 11:44:24 +0900 (Thu, 04 Sep 2008)

Log Message:
-----------
re-factoring..

Modified Paths:
--------------
    pal-wcm/trunk/.classpath
    pal-wcm/trunk/.project
    pal-wcm/trunk/.settings/org.eclipse.jdt.core.prefs
    pal-wcm/trunk/pom.xml
    pal-wcm/trunk/src/main/java/jp/sf/pal/wcm/servlet/FileconnectorServlet.java
    pal-wcm/trunk/src/main/java/jp/sf/pal/wcm/servlet/FileuploadServlet.java
    pal-wcm/trunk/src/main/java/jp/sf/pal/wcm/servlet/FileviewServlet.java
    pal-wcm/trunk/src/main/java/jp/sf/pal/wcm/util/PALWcmUtil.java
    pal-wcm/trunk/src/main/webapp/WEB-INF/jetspeed-portlet.xml
    pal-wcm/trunk/src/main/webapp/WEB-INF/portlet.xml
    pal-wcm/trunk/src/main/webapp/WEB-INF/web.xml
    pal-wcm/trunk/src/main/webapp/fckeditor/editor/css/fck_editorarea.css
    pal-wcm/trunk/src/main/webapp/fckeditor/editor/dialog/common/fck_dialog_common.js
    pal-wcm/trunk/src/main/webapp/fckeditor/editor/dialog/fck_about.html
    pal-wcm/trunk/src/main/webapp/fckeditor/editor/dialog/fck_anchor.html
    pal-wcm/trunk/src/main/webapp/fckeditor/editor/dialog/fck_flash/fck_flash.js
    pal-wcm/trunk/src/main/webapp/fckeditor/editor/dialog/fck_flash.html
    pal-wcm/trunk/src/main/webapp/fckeditor/editor/dialog/fck_image/fck_image.js
    pal-wcm/trunk/src/main/webapp/fckeditor/editor/dialog/fck_image/fck_image_preview.html
    pal-wcm/trunk/src/main/webapp/fckeditor/editor/dialog/fck_image.html
    pal-wcm/trunk/src/main/webapp/fckeditor/editor/dialog/fck_link/fck_link.js
    pal-wcm/trunk/src/main/webapp/fckeditor/editor/dialog/fck_link.html
    pal-wcm/trunk/src/main/webapp/fckeditor/editor/dialog/fck_listprop.html
    pal-wcm/trunk/src/main/webapp/fckeditor/editor/dialog/fck_paste.html
    pal-wcm/trunk/src/main/webapp/fckeditor/editor/dialog/fck_replace.html
    pal-wcm/trunk/src/main/webapp/fckeditor/editor/dialog/fck_spellerpages.html
    pal-wcm/trunk/src/main/webapp/fckeditor/editor/fckdialog.html
    pal-wcm/trunk/src/main/webapp/fckeditor/editor/fckeditor.html
    pal-wcm/trunk/src/main/webapp/fckeditor/editor/fckeditor.original.html
    pal-wcm/trunk/src/main/webapp/fckeditor/editor/filemanager/browser/default/browser.css
    pal-wcm/trunk/src/main/webapp/fckeditor/editor/filemanager/browser/default/browser.html
    pal-wcm/trunk/src/main/webapp/fckeditor/editor/filemanager/browser/default/frmactualfolder.html
    pal-wcm/trunk/src/main/webapp/fckeditor/editor/filemanager/browser/default/frmcreatefolder.html
    pal-wcm/trunk/src/main/webapp/fckeditor/editor/filemanager/browser/default/frmfolders.html
    pal-wcm/trunk/src/main/webapp/fckeditor/editor/filemanager/browser/default/frmresourceslist.html
    pal-wcm/trunk/src/main/webapp/fckeditor/editor/filemanager/browser/default/frmresourcetype.html
    pal-wcm/trunk/src/main/webapp/fckeditor/editor/filemanager/browser/default/frmupload.html
    pal-wcm/trunk/src/main/webapp/fckeditor/editor/filemanager/browser/default/js/common.js
    pal-wcm/trunk/src/main/webapp/fckeditor/editor/filemanager/browser/default/js/fckxml.js
    pal-wcm/trunk/src/main/webapp/fckeditor/editor/filemanager/connectors/asp/basexml.asp
    pal-wcm/trunk/src/main/webapp/fckeditor/editor/filemanager/connectors/asp/commands.asp
    pal-wcm/trunk/src/main/webapp/fckeditor/editor/filemanager/connectors/asp/io.asp
    pal-wcm/trunk/src/main/webapp/fckeditor/editor/filemanager/connectors/cfm/cf5_upload.cfm
    pal-wcm/trunk/src/main/webapp/fckeditor/editor/filemanager/connectors/cfm/cf_io.cfm
    pal-wcm/trunk/src/main/webapp/fckeditor/editor/filemanager/connectors/lasso/upload.lasso
    pal-wcm/trunk/src/main/webapp/fckeditor/editor/filemanager/connectors/perl/commands.pl
    pal-wcm/trunk/src/main/webapp/fckeditor/editor/filemanager/connectors/php/config.php
    pal-wcm/trunk/src/main/webapp/fckeditor/editor/filemanager/connectors/php/connector.php
    pal-wcm/trunk/src/main/webapp/fckeditor/editor/filemanager/connectors/php/io.php
    pal-wcm/trunk/src/main/webapp/fckeditor/editor/filemanager/connectors/py/fckoutput.py
    pal-wcm/trunk/src/main/webapp/fckeditor/editor/js/fckadobeair.js
    pal-wcm/trunk/src/main/webapp/fckeditor/editor/js/fckeditorcode_gecko.js
    pal-wcm/trunk/src/main/webapp/fckeditor/editor/js/fckeditorcode_ie.js
    pal-wcm/trunk/src/main/webapp/fckeditor/editor/lang/af.js
    pal-wcm/trunk/src/main/webapp/fckeditor/editor/lang/ar.js
    pal-wcm/trunk/src/main/webapp/fckeditor/editor/lang/bg.js
    pal-wcm/trunk/src/main/webapp/fckeditor/editor/lang/bn.js
    pal-wcm/trunk/src/main/webapp/fckeditor/editor/lang/bs.js
    pal-wcm/trunk/src/main/webapp/fckeditor/editor/lang/ca.js
    pal-wcm/trunk/src/main/webapp/fckeditor/editor/lang/cs.js
    pal-wcm/trunk/src/main/webapp/fckeditor/editor/lang/da.js
    pal-wcm/trunk/src/main/webapp/fckeditor/editor/lang/de.js
    pal-wcm/trunk/src/main/webapp/fckeditor/editor/lang/el.js
    pal-wcm/trunk/src/main/webapp/fckeditor/editor/lang/en-au.js
    pal-wcm/trunk/src/main/webapp/fckeditor/editor/lang/en-ca.js
    pal-wcm/trunk/src/main/webapp/fckeditor/editor/lang/en-uk.js
    pal-wcm/trunk/src/main/webapp/fckeditor/editor/lang/en.js
    pal-wcm/trunk/src/main/webapp/fckeditor/editor/lang/eo.js
    pal-wcm/trunk/src/main/webapp/fckeditor/editor/lang/es.js
    pal-wcm/trunk/src/main/webapp/fckeditor/editor/lang/et.js
    pal-wcm/trunk/src/main/webapp/fckeditor/editor/lang/eu.js
    pal-wcm/trunk/src/main/webapp/fckeditor/editor/lang/fa.js
    pal-wcm/trunk/src/main/webapp/fckeditor/editor/lang/fi.js
    pal-wcm/trunk/src/main/webapp/fckeditor/editor/lang/fo.js
    pal-wcm/trunk/src/main/webapp/fckeditor/editor/lang/fr-ca.js
    pal-wcm/trunk/src/main/webapp/fckeditor/editor/lang/fr.js
    pal-wcm/trunk/src/main/webapp/fckeditor/editor/lang/gl.js
    pal-wcm/trunk/src/main/webapp/fckeditor/editor/lang/he.js
    pal-wcm/trunk/src/main/webapp/fckeditor/editor/lang/hi.js
    pal-wcm/trunk/src/main/webapp/fckeditor/editor/lang/hr.js
    pal-wcm/trunk/src/main/webapp/fckeditor/editor/lang/hu.js
    pal-wcm/trunk/src/main/webapp/fckeditor/editor/lang/it.js
    pal-wcm/trunk/src/main/webapp/fckeditor/editor/lang/ja.js
    pal-wcm/trunk/src/main/webapp/fckeditor/editor/lang/km.js
    pal-wcm/trunk/src/main/webapp/fckeditor/editor/lang/ko.js
    pal-wcm/trunk/src/main/webapp/fckeditor/editor/lang/lt.js
    pal-wcm/trunk/src/main/webapp/fckeditor/editor/lang/lv.js
    pal-wcm/trunk/src/main/webapp/fckeditor/editor/lang/mn.js
    pal-wcm/trunk/src/main/webapp/fckeditor/editor/lang/ms.js
    pal-wcm/trunk/src/main/webapp/fckeditor/editor/lang/nb.js
    pal-wcm/trunk/src/main/webapp/fckeditor/editor/lang/nl.js
    pal-wcm/trunk/src/main/webapp/fckeditor/editor/lang/no.js
    pal-wcm/trunk/src/main/webapp/fckeditor/editor/lang/pl.js
    pal-wcm/trunk/src/main/webapp/fckeditor/editor/lang/pt-br.js
    pal-wcm/trunk/src/main/webapp/fckeditor/editor/lang/pt.js
    pal-wcm/trunk/src/main/webapp/fckeditor/editor/lang/ro.js
    pal-wcm/trunk/src/main/webapp/fckeditor/editor/lang/ru.js
    pal-wcm/trunk/src/main/webapp/fckeditor/editor/lang/sk.js
    pal-wcm/trunk/src/main/webapp/fckeditor/editor/lang/sl.js
    pal-wcm/trunk/src/main/webapp/fckeditor/editor/lang/sr-latn.js
    pal-wcm/trunk/src/main/webapp/fckeditor/editor/lang/sr.js
    pal-wcm/trunk/src/main/webapp/fckeditor/editor/lang/sv.js
    pal-wcm/trunk/src/main/webapp/fckeditor/editor/lang/th.js
    pal-wcm/trunk/src/main/webapp/fckeditor/editor/lang/tr.js
    pal-wcm/trunk/src/main/webapp/fckeditor/editor/lang/uk.js
    pal-wcm/trunk/src/main/webapp/fckeditor/editor/lang/vi.js
    pal-wcm/trunk/src/main/webapp/fckeditor/editor/lang/zh-cn.js
    pal-wcm/trunk/src/main/webapp/fckeditor/editor/lang/zh.js
    pal-wcm/trunk/src/main/webapp/fckeditor/editor/plugins/dragresizetable/fckplugin.js
    pal-wcm/trunk/src/main/webapp/fckeditor/editor/skins/default/fck_strip.gif
    pal-wcm/trunk/src/main/webapp/fckeditor/editor/skins/office2003/fck_strip.gif
    pal-wcm/trunk/src/main/webapp/fckeditor/editor/skins/silver/fck_strip.gif
    pal-wcm/trunk/src/main/webapp/fckeditor/fckconfig.js
    pal-wcm/trunk/src/main/webapp/fckeditor/fckeditor.cfc
    pal-wcm/trunk/src/main/webapp/fckeditor/fckeditor.cfm
    pal-wcm/trunk/src/main/webapp/fckeditor/fckeditor.js
    pal-wcm/trunk/src/main/webapp/fckeditor/fckeditor.php
    pal-wcm/trunk/src/main/webapp/fckeditor/fckeditor.py
    pal-wcm/trunk/src/main/webapp/fckeditor/fckeditor_php4.php
    pal-wcm/trunk/src/main/webapp/fckeditor/fckeditor_php5.php
    pal-wcm/trunk/src/main/webapp/fckeditor/fckpackager.xml

Added Paths:
-----------
    pal-wcm/trunk/.settings/org.seasar.sastrutsplugin.prefs
    pal-wcm/trunk/src/main/java/jp/sf/pal/wcm/WcmConstants.java
    pal-wcm/trunk/src/main/java/jp/sf/pal/wcm/WcmException.java
    pal-wcm/trunk/src/main/java/jp/sf/pal/wcm/action/
    pal-wcm/trunk/src/main/java/jp/sf/pal/wcm/action/EditorAction.java
    pal-wcm/trunk/src/main/java/jp/sf/pal/wcm/action/IndexAction.java
    pal-wcm/trunk/src/main/java/jp/sf/pal/wcm/entity/
    pal-wcm/trunk/src/main/java/jp/sf/pal/wcm/entity/Content.java
    pal-wcm/trunk/src/main/java/jp/sf/pal/wcm/entity/Folder.java
    pal-wcm/trunk/src/main/java/jp/sf/pal/wcm/entity/Node.java
    pal-wcm/trunk/src/main/java/jp/sf/pal/wcm/entity/Page.java
    pal-wcm/trunk/src/main/java/jp/sf/pal/wcm/form/
    pal-wcm/trunk/src/main/java/jp/sf/pal/wcm/form/EditorForm.java
    pal-wcm/trunk/src/main/java/jp/sf/pal/wcm/portlet/WcmEditorPortlet.java
    pal-wcm/trunk/src/main/java/jp/sf/pal/wcm/portlet/WcmViewerPortlet.java
    pal-wcm/trunk/src/main/java/jp/sf/pal/wcm/service/
    pal-wcm/trunk/src/main/java/jp/sf/pal/wcm/service/ContentService.java
    pal-wcm/trunk/src/main/resources/app.dicon
    pal-wcm/trunk/src/main/resources/application.properties
    pal-wcm/trunk/src/main/resources/application_ja.properties
    pal-wcm/trunk/src/main/resources/convention.dicon
    pal-wcm/trunk/src/main/resources/creator.dicon
    pal-wcm/trunk/src/main/resources/customizer.dicon
    pal-wcm/trunk/src/main/resources/env.txt
    pal-wcm/trunk/src/main/resources/env_ut.txt
    pal-wcm/trunk/src/main/resources/jdbc.dicon
    pal-wcm/trunk/src/main/resources/s2container.dicon
    pal-wcm/trunk/src/main/webapp/WEB-INF/struts-config.xml
    pal-wcm/trunk/src/main/webapp/WEB-INF/validator-rules.xml
    pal-wcm/trunk/src/main/webapp/WEB-INF/view/
    pal-wcm/trunk/src/main/webapp/WEB-INF/view/common/
    pal-wcm/trunk/src/main/webapp/WEB-INF/view/common/common.jsp
    pal-wcm/trunk/src/main/webapp/WEB-INF/view/editor/
    pal-wcm/trunk/src/main/webapp/WEB-INF/view/editor/edit.jsp
    pal-wcm/trunk/src/main/webapp/WEB-INF/view/editor/index.jsp
    pal-wcm/trunk/src/main/webapp/WEB-INF/view/editor/prefs.jsp
    pal-wcm/trunk/src/main/webapp/WEB-INF/view/error/
    pal-wcm/trunk/src/main/webapp/WEB-INF/view/error/editor.jsp
    pal-wcm/trunk/src/main/webapp/WEB-INF/view/viewer/
    pal-wcm/trunk/src/main/webapp/WEB-INF/view/viewer/edit.jsp
    pal-wcm/trunk/src/main/webapp/WEB-INF/view/viewer/view.jsp
    pal-wcm/trunk/src/main/webapp/fckeditor/editor/dialog/fck_div.html
    pal-wcm/trunk/src/main/webapp/fckeditor/editor/lang/gu.js
    pal-wcm/trunk/src/main/webapp/images/icons/arrow_undo.png
    pal-wcm/trunk/src/main/webapp/images/icons/content.png
    pal-wcm/trunk/src/main/webapp/images/icons/folder.png
    pal-wcm/trunk/src/main/webapp/images/icons/page.png
    pal-wcm/trunk/src/main/webapp/images/icons/page_save.png

Removed Paths:
-------------
    pal-wcm/trunk/src/main/java/jp/sf/pal/wcm/FCKeditor.java
    pal-wcm/trunk/src/main/java/jp/sf/pal/wcm/FCKeditorConfigurations.java
    pal-wcm/trunk/src/main/java/jp/sf/pal/wcm/PALWcmConstants.java
    pal-wcm/trunk/src/main/java/jp/sf/pal/wcm/connector/
    pal-wcm/trunk/src/main/java/jp/sf/pal/wcm/portlet/PALWcmPortlet.java
    pal-wcm/trunk/src/main/java/jp/sf/pal/wcm/servlet/FilesaveServlet.java
    pal-wcm/trunk/src/main/java/jp/sf/pal/wcm/tags/
    pal-wcm/trunk/src/main/java/jp/sf/pal/wcm/uploader/
    pal-wcm/trunk/src/main/webapp/WEB-INF/lib/FCKeditor-2.3.jar
    pal-wcm/trunk/src/main/webapp/WEB-INF/lib/commons-fileupload-1.2.1.jar
    pal-wcm/trunk/src/main/webapp/WEB-INF/tld/
    pal-wcm/trunk/src/main/webapp/fckeditor/editor/_source/
    pal-wcm/trunk/src/main/webapp/fckeditor/editor/dialog/common/fcknumericfield.htc
    pal-wcm/trunk/src/main/webapp/fckeditor/editor/dialog/common/moz-bindings.xml
    pal-wcm/trunk/src/main/webapp/fckeditor/editor/dialog/fck_find.html
    pal-wcm/trunk/src/main/webapp/fckeditor/editor/filemanager/browser/default/connectors/asp/basexml.asp
    pal-wcm/trunk/src/main/webapp/fckeditor/editor/filemanager/browser/default/connectors/asp/class_upload.asp
    pal-wcm/trunk/src/main/webapp/fckeditor/editor/filemanager/browser/default/connectors/asp/commands.asp
    pal-wcm/trunk/src/main/webapp/fckeditor/editor/filemanager/browser/default/connectors/asp/config.asp
    pal-wcm/trunk/src/main/webapp/fckeditor/editor/filemanager/browser/default/connectors/asp/connector.asp
    pal-wcm/trunk/src/main/webapp/fckeditor/editor/filemanager/browser/default/connectors/asp/io.asp
    pal-wcm/trunk/src/main/webapp/fckeditor/editor/filemanager/browser/default/connectors/asp/util.asp
    pal-wcm/trunk/src/main/webapp/fckeditor/editor/filemanager/browser/default/connectors/aspx/connector.aspx
    pal-wcm/trunk/src/main/webapp/fckeditor/editor/filemanager/browser/default/connectors/cfm/config.cfm
    pal-wcm/trunk/src/main/webapp/fckeditor/editor/filemanager/browser/default/connectors/cfm/connector.cfm
    pal-wcm/trunk/src/main/webapp/fckeditor/editor/filemanager/browser/default/connectors/lasso/config.lasso
    pal-wcm/trunk/src/main/webapp/fckeditor/editor/filemanager/browser/default/connectors/lasso/connector.lasso
    pal-wcm/trunk/src/main/webapp/fckeditor/editor/filemanager/browser/default/connectors/perl/basexml.pl
    pal-wcm/trunk/src/main/webapp/fckeditor/editor/filemanager/browser/default/connectors/perl/commands.pl
    pal-wcm/trunk/src/main/webapp/fckeditor/editor/filemanager/browser/default/connectors/perl/connector.cgi
    pal-wcm/trunk/src/main/webapp/fckeditor/editor/filemanager/browser/default/connectors/perl/io.pl
    pal-wcm/trunk/src/main/webapp/fckeditor/editor/filemanager/browser/default/connectors/perl/upload_fck.pl
    pal-wcm/trunk/src/main/webapp/fckeditor/editor/filemanager/browser/default/connectors/perl/util.pl
    pal-wcm/trunk/src/main/webapp/fckeditor/editor/filemanager/browser/default/connectors/php/basexml.php
    pal-wcm/trunk/src/main/webapp/fckeditor/editor/filemanager/browser/default/connectors/php/commands.php
    pal-wcm/trunk/src/main/webapp/fckeditor/editor/filemanager/browser/default/connectors/php/config.php
    pal-wcm/trunk/src/main/webapp/fckeditor/editor/filemanager/browser/default/connectors/php/connector.php
    pal-wcm/trunk/src/main/webapp/fckeditor/editor/filemanager/browser/default/connectors/php/io.php
    pal-wcm/trunk/src/main/webapp/fckeditor/editor/filemanager/browser/default/connectors/php/util.php
    pal-wcm/trunk/src/main/webapp/fckeditor/editor/filemanager/browser/default/connectors/py/connector.py
    pal-wcm/trunk/src/main/webapp/fckeditor/editor/filemanager/browser/default/connectors/test.html
    pal-wcm/trunk/src/main/webapp/fckeditor/editor/filemanager/upload/asp/class_upload.asp
    pal-wcm/trunk/src/main/webapp/fckeditor/editor/filemanager/upload/asp/config.asp
    pal-wcm/trunk/src/main/webapp/fckeditor/editor/filemanager/upload/asp/io.asp
    pal-wcm/trunk/src/main/webapp/fckeditor/editor/filemanager/upload/asp/upload.asp
    pal-wcm/trunk/src/main/webapp/fckeditor/editor/filemanager/upload/aspx/upload.aspx
    pal-wcm/trunk/src/main/webapp/fckeditor/editor/filemanager/upload/cfm/config.cfm
    pal-wcm/trunk/src/main/webapp/fckeditor/editor/filemanager/upload/cfm/upload.cfm
    pal-wcm/trunk/src/main/webapp/fckeditor/editor/filemanager/upload/lasso/config.lasso
    pal-wcm/trunk/src/main/webapp/fckeditor/editor/filemanager/upload/lasso/upload.lasso
    pal-wcm/trunk/src/main/webapp/fckeditor/editor/filemanager/upload/php/config.php
    pal-wcm/trunk/src/main/webapp/fckeditor/editor/filemanager/upload/php/upload.php
    pal-wcm/trunk/src/main/webapp/fckeditor/editor/filemanager/upload/php/util.php
    pal-wcm/trunk/src/main/webapp/fckeditor/editor/filemanager/upload/test.html
    pal-wcm/trunk/src/main/webapp/fckeditor/editor/lang/_getfontformat.html
    pal-wcm/trunk/src/main/webapp/fckeditor/editor/lang/_translationstatus.txt
    pal-wcm/trunk/src/main/webapp/fckeditor/editor/plugins/bbcode/_sample/sample.config.js
    pal-wcm/trunk/src/main/webapp/fckeditor/editor/plugins/bbcode/_sample/sample.html
    pal-wcm/trunk/src/main/webapp/fckeditor/editor/skins/_fckviewstrips.html
    pal-wcm/trunk/src/main/webapp/fckeditor/htaccess.txt
    pal-wcm/trunk/src/main/webapp/index.jsp
    pal-wcm/trunk/src/main/webapp/view/


-------------- next part --------------
Modified: pal-wcm/trunk/.classpath
===================================================================
--- pal-wcm/trunk/.classpath	2008-09-03 08:05:44 UTC (rev 1112)
+++ pal-wcm/trunk/.classpath	2008-09-04 02:44:24 UTC (rev 1113)
@@ -1,20 +1,43 @@
 <classpath>
-  <classpathentry kind="src" path="src/main/java"/>
-  <classpathentry kind="src" path="src/main/resources" excluding="**/*.java"/>
-  <classpathentry kind="output" path="target/classes"/>
-  <classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER"/>
-  <classpathentry kind="var" path="M2_REPO/javax/activation/activation/1.1/activation-1.1.jar"/>
-  <classpathentry kind="var" path="M2_REPO/jp/sf/pal/common-utils/0.2/common-utils-0.2.jar"/>
-  <classpathentry kind="var" path="M2_REPO/commons-fileupload/commons-fileupload/1.2/commons-fileupload-1.2.jar"/>
+    <classpathentry kind="src" output="src/main/webapp/WEB-INF/classes" path="src/main/java"/>
+    <classpathentry kind="src" output="src/main/webapp/WEB-INF/classes" path="src/main/resources"/>
+    <classpathentry kind="src" path="src/main/webapp/WEB-INF/view"/>
+    <classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER"/>
+
+  <classpathentry kind="var" path="M2_REPO/jp/sf/pal/common-utils/0.2/common-utils-0.2.jar" sourcepath="M2_REPO/jp/sf/pal/common-utils/0.2/common-utils-0.2-sources.jar"/>
+  <classpathentry kind="var" path="M2_REPO/portlet-api/portlet-api/1.0/portlet-api-1.0.jar"/>
+  <classpathentry kind="var" path="M2_REPO/javax/servlet/jstl/1.1.2/jstl-1.1.2.jar" sourcepath="M2_REPO/javax/servlet/jstl/1.1.2/jstl-1.1.2-sources.jar"/>
+  <classpathentry kind="var" path="M2_REPO/taglibs/standard/1.1.2/standard-1.1.2.jar"/>
+  <classpathentry kind="var" path="M2_REPO/commons-el/commons-el/1.0/commons-el-1.0.jar" sourcepath="M2_REPO/commons-el/commons-el/1.0/commons-el-1.0-sources.jar"/>
+  <classpathentry kind="var" path="M2_REPO/commons-logging/commons-logging/1.0.4/commons-logging-1.0.4.jar" sourcepath="M2_REPO/commons-logging/commons-logging/1.0.4/commons-logging-1.0.4-sources.jar"/>
+  <classpathentry kind="var" path="M2_REPO/commons-fileupload/commons-fileupload/1.2.1/commons-fileupload-1.2.1.jar"/>
   <classpathentry kind="var" path="M2_REPO/commons-io/commons-io/1.3/commons-io-1.3.jar"/>
   <classpathentry kind="var" path="M2_REPO/commons-lang/commons-lang/2.3/commons-lang-2.3.jar"/>
-  <classpathentry kind="var" path="M2_REPO/commons-logging/commons-logging/1.0.4/commons-logging-1.0.4.jar"/>
-  <classpathentry kind="var" path="M2_REPO/org/apache/portals/jetspeed-2/jetspeed-api/2.1.2/jetspeed-api-2.1.2.jar"/>
-  <classpathentry kind="var" path="M2_REPO/javax/servlet/jstl/1.1.2/jstl-1.1.2.jar"/>
-  <classpathentry kind="var" path="M2_REPO/log4j/log4j/1.2.13/log4j-1.2.13.jar"/>
+  <classpathentry kind="var" path="M2_REPO/commons-validator/commons-validator/1.2.0/commons-validator-1.2.0.jar" sourcepath="M2_REPO/commons-validator/commons-validator/1.2.0/commons-validator-1.2.0-sources.jar"/>
+  <classpathentry kind="var" path="M2_REPO/commons-beanutils/commons-beanutils/1.7.0/commons-beanutils-1.7.0.jar" sourcepath="M2_REPO/commons-beanutils/commons-beanutils/1.7.0/commons-beanutils-1.7.0-sources.jar"/>
+  <classpathentry kind="var" path="M2_REPO/commons-digester/commons-digester/1.6/commons-digester-1.6.jar" sourcepath="M2_REPO/commons-digester/commons-digester/1.6/commons-digester-1.6-sources.jar"/>
+  <classpathentry kind="var" path="M2_REPO/commons-collections/commons-collections/2.1/commons-collections-2.1.jar"/>
+  <classpathentry kind="var" path="M2_REPO/xml-apis/xml-apis/1.0.b2/xml-apis-1.0.b2.jar" sourcepath="M2_REPO/xml-apis/xml-apis/1.0.b2/xml-apis-1.0.b2-sources.jar"/>
+  <classpathentry kind="var" path="M2_REPO/oro/oro/2.0.8/oro-2.0.8.jar" sourcepath="M2_REPO/oro/oro/2.0.8/oro-2.0.8-sources.jar"/>
+  <classpathentry kind="var" path="M2_REPO/log4j/log4j/1.2.13/log4j-1.2.13.jar" sourcepath="M2_REPO/log4j/log4j/1.2.13/log4j-1.2.13-sources.jar"/>
   <classpathentry kind="var" path="M2_REPO/javax/mail/mail/1.4/mail-1.4.jar"/>
-  <classpathentry kind="var" path="M2_REPO/org/apache/pluto/pluto/1.0.1/pluto-1.0.1.jar"/>
-  <classpathentry kind="var" path="M2_REPO/portlet-api/portlet-api/1.0/portlet-api-1.0.jar"/>
-  <classpathentry kind="var" path="M2_REPO/javax/servlet/servlet-api/2.3/servlet-api-2.3.jar"/>
-  <classpathentry kind="var" path="M2_REPO/taglibs/standard/1.1.2/standard-1.1.2.jar"/>
-</classpath>
\ No newline at end of file
+  <classpathentry kind="var" path="M2_REPO/javax/activation/activation/1.1/activation-1.1.jar"/>
+  <classpathentry kind="var" path="M2_REPO/org/apache/portals/jetspeed-2/jetspeed-api/2.1.3/jetspeed-api-2.1.3.jar"/>
+  <classpathentry kind="var" path="M2_REPO/javax/servlet/servlet-api/2.3/servlet-api-2.3.jar" sourcepath="M2_REPO/javax/servlet/servlet-api/2.3/servlet-api-2.3-sources.jar"/>
+  <classpathentry kind="var" path="M2_REPO/org/seasar/sastruts/sa-struts-portlet/1.0.0-rc1/sa-struts-portlet-1.0.0-rc1.jar" sourcepath="M2_REPO/org/seasar/sastruts/sa-struts-portlet/1.0.0-rc1/sa-struts-portlet-1.0.0-rc1-sources.jar"/>
+  <classpathentry kind="var" path="M2_REPO/struts/struts/1.2.9/struts-1.2.9.jar"/>
+  <classpathentry kind="var" path="M2_REPO/antlr/antlr/2.7.2/antlr-2.7.2.jar" sourcepath="M2_REPO/antlr/antlr/2.7.2/antlr-2.7.2-sources.jar"/>
+  <classpathentry kind="var" path="M2_REPO/xalan/xalan/2.5.1/xalan-2.5.1.jar" sourcepath="M2_REPO/xalan/xalan/2.5.1/xalan-2.5.1-sources.jar"/>
+  <classpathentry kind="var" path="M2_REPO/org/seasar/sastruts/sa-struts/1.0.4/sa-struts-1.0.4.jar"/>
+  <classpathentry kind="var" path="M2_REPO/org/seasar/container/s2-tiger/2.4.27/s2-tiger-2.4.27.jar"/>
+  <classpathentry kind="var" path="M2_REPO/org/seasar/container/s2-extension/2.4.27/s2-extension-2.4.27.jar"/>
+  <classpathentry kind="var" path="M2_REPO/org/seasar/container/s2-framework/2.4.27/s2-framework-2.4.27.jar"/>
+  <classpathentry kind="var" path="M2_REPO/aopalliance/aopalliance/1.0/aopalliance-1.0.jar" sourcepath="M2_REPO/aopalliance/aopalliance/1.0/aopalliance-1.0-sources.jar"/>
+  <classpathentry kind="var" path="M2_REPO/jboss/javassist/3.4.ga/javassist-3.4.ga.jar"/>
+  <classpathentry kind="var" path="M2_REPO/ognl/ognl/2.6.9-patch-20070908/ognl-2.6.9-patch-20070908.jar"/>
+  <classpathentry kind="var" path="M2_REPO/org/apache/poi/poi/3.0-FINAL/poi-3.0-FINAL.jar"/>
+  <classpathentry kind="var" path="M2_REPO/org/apache/geronimo/specs/geronimo-annotation_1.0_spec/1.0/geronimo-annotation_1.0_spec-1.0.jar"/>
+  <classpathentry kind="var" path="M2_REPO/org/apache/geronimo/specs/geronimo-ejb_3.0_spec/1.0/geronimo-ejb_3.0_spec-1.0.jar"/>
+  <classpathentry kind="var" path="M2_REPO/org/apache/geronimo/specs/geronimo-interceptor_3.0_spec/1.0/geronimo-interceptor_3.0_spec-1.0.jar"/>
+  <classpathentry kind="var" path="M2_REPO/org/apache/geronimo/specs/geronimo-jta_1.1_spec/1.0/geronimo-jta_1.1_spec-1.0.jar"/>
+</classpath>

Modified: pal-wcm/trunk/.project
===================================================================
--- pal-wcm/trunk/.project	2008-09-03 08:05:44 UTC (rev 1112)
+++ pal-wcm/trunk/.project	2008-09-04 02:44:24 UTC (rev 1113)
@@ -5,6 +5,7 @@
   <buildSpec>
     <buildCommand>
       <name>org.eclipse.jdt.core.javabuilder</name>
+      <arguments/>
     </buildCommand>
   </buildSpec>
   <natures>

Modified: pal-wcm/trunk/.settings/org.eclipse.jdt.core.prefs
===================================================================
--- pal-wcm/trunk/.settings/org.eclipse.jdt.core.prefs	2008-09-03 08:05:44 UTC (rev 1112)
+++ pal-wcm/trunk/.settings/org.eclipse.jdt.core.prefs	2008-09-04 02:44:24 UTC (rev 1113)
@@ -1,4 +1,4 @@
-#Tue Jul 03 11:50:19 JST 2007
+#Mon Sep 01 10:11:43 JST 2008
 eclipse.preferences.version=1
 org.eclipse.jdt.core.codeComplete.argumentPrefixes=
 org.eclipse.jdt.core.codeComplete.argumentSuffixes=
@@ -92,6 +92,9 @@
 org.eclipse.jdt.core.formatter.indent_switchstatements_compare_to_switch=false
 org.eclipse.jdt.core.formatter.indentation.size=4
 org.eclipse.jdt.core.formatter.insert_new_line_after_annotation=insert
+org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_local_variable=insert
+org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_member=insert
+org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_parameter=do not insert
 org.eclipse.jdt.core.formatter.insert_new_line_after_opening_brace_in_array_initializer=do not insert
 org.eclipse.jdt.core.formatter.insert_new_line_at_end_of_file_if_missing=do not insert
 org.eclipse.jdt.core.formatter.insert_new_line_before_catch_in_try_statement=do not insert

Added: pal-wcm/trunk/.settings/org.seasar.sastrutsplugin.prefs
===================================================================
--- pal-wcm/trunk/.settings/org.seasar.sastrutsplugin.prefs	                        (rev 0)
+++ pal-wcm/trunk/.settings/org.seasar.sastrutsplugin.prefs	2008-09-04 02:44:24 UTC (rev 1113)
@@ -0,0 +1,3 @@
+#Mon Sep 01 10:11:43 JST 2008
+WebContentsRoot=/src/main/webapp
+eclipse.preferences.version=1

Modified: pal-wcm/trunk/pom.xml
===================================================================
--- pal-wcm/trunk/pom.xml	2008-09-03 08:05:44 UTC (rev 1112)
+++ pal-wcm/trunk/pom.xml	2008-09-04 02:44:24 UTC (rev 1113)
@@ -3,7 +3,7 @@
   <modelVersion>4.0.0</modelVersion>
   <groupId>jp.sf.pal</groupId>
   <artifactId>pal-wcm</artifactId>
-  <version>0.4-SNAPSHOT</version>
+  <version>1.0-SNAPSHOT</version>
   <packaging>war</packaging>
   <name>Web Content Management tools for PAL Portal</name>
   <description/>
@@ -55,21 +55,7 @@
             <updateReleaseInfo>true</updateReleaseInfo>
           </configuration>
         </plugin>
-<!--
         <plugin>
-          <artifactId>maven-site-plugin</artifactId>
-          <configuration>
-            <outputEncodinf>UTF-8</outputEncodinf>
-          </configuration>
-        </plugin>
-        <plugin>
-          <artifactId>maven-surefire-plugin</artifactId>
-          <configuration>
-            <forkMode>none</forkMode>
-          </configuration>
-        </plugin>
-                -->
-        <plugin>
           <groupId>org.codehaus.mojo</groupId>
           <artifactId>cobertura-maven-plugin</artifactId>
           <version>2.0-SNAPSHOT</version>
@@ -96,23 +82,6 @@
           </execution>
         </executions>
       </plugin>
-<!--
-                <plugin>
-                <artifactId>maven-javadoc-plugin</artifactId>
-                <executions>
-                <execution>
-                <id>javadoc-jar</id>
-                <phase>package</phase>
-                <goals>
-                <goal>jar</goal>
-                </goals>
-                </execution>
-                </executions>
-                <configuration>
-                <charset>UTF-8</charset>
-                </configuration>
-                </plugin>
--->
     </plugins>
   </build>
   <repositories>
@@ -150,9 +119,14 @@
       <version>1.1.2</version>
     </dependency>
     <dependency>
+      <groupId>commons-el</groupId>
+      <artifactId>commons-el</artifactId>
+      <version>1.0</version>
+    </dependency>
+    <dependency>
       <groupId>commons-fileupload</groupId>
       <artifactId>commons-fileupload</artifactId>
-      <version>1.2</version>
+      <version>1.2.1</version>
     </dependency>
     <dependency>
       <groupId>commons-io</groupId>
@@ -165,6 +139,11 @@
       <version>2.3</version>
     </dependency>
     <dependency>
+      <groupId>commons-validator</groupId>
+      <artifactId>commons-validator</artifactId>
+      <version>1.2.0</version>
+    </dependency>
+    <dependency>
       <groupId>commons-logging</groupId>
       <artifactId>commons-logging</artifactId>
       <version>1.0.4</version>
@@ -184,33 +163,67 @@
     <dependency>
       <groupId>org.apache.portals.jetspeed-2</groupId>
       <artifactId>jetspeed-api</artifactId>
-      <version>2.1.2</version>
+      <version>2.1.3</version>
       <scope>provided</scope>
+      <exclusions>
+        <exclusion>
+          <groupId>junit</groupId>
+          <artifactId>junit</artifactId>
+        </exclusion>
+      </exclusions>
     </dependency>
     <dependency>
-      <groupId>org.apache.pluto</groupId>
-      <artifactId>pluto</artifactId>
-      <version>1.0.1</version>
-      <scope>provided</scope>
-    </dependency>
-    <dependency>
       <groupId>javax.servlet</groupId>
       <artifactId>servlet-api</artifactId>
       <version>2.3</version>
       <scope>provided</scope>
     </dependency>
+<!-- SAStruts -->
+    <dependency>
+      <groupId>org.seasar.sastruts</groupId>
+      <artifactId>sa-struts-portlet</artifactId>
+      <version>1.0.0-rc1</version>
+      <exclusions>
+        <exclusion>
+          <groupId>org.easymock</groupId>
+          <artifactId>easymock</artifactId>
+        </exclusion>
+        <exclusion>
+          <groupId>commons-logging</groupId>
+          <artifactId>commons-logging</artifactId>
+        </exclusion>
+        <exclusion>
+          <groupId>junit</groupId>
+          <artifactId>junit</artifactId>
+        </exclusion>
+      </exclusions>
+    </dependency>
+    <dependency>
+      <groupId>org.apache.geronimo.specs</groupId>
+      <artifactId>geronimo-annotation_1.0_spec</artifactId>
+      <version>1.0</version>
+    </dependency>
+    <dependency>
+      <groupId>org.apache.geronimo.specs</groupId>
+      <artifactId>geronimo-ejb_3.0_spec</artifactId>
+      <version>1.0</version>
+    </dependency>
+    <dependency>
+      <groupId>org.apache.geronimo.specs</groupId>
+      <artifactId>geronimo-interceptor_3.0_spec</artifactId>
+      <version>1.0</version>
+    </dependency>
+    <dependency>
+      <groupId>org.apache.geronimo.specs</groupId>
+      <artifactId>geronimo-jta_1.1_spec</artifactId>
+      <version>1.0</version>
+    </dependency>
   </dependencies>
   <reporting>
     <plugins>
       <plugin>
         <artifactId>maven-project-info-reports-plugin</artifactId>
       </plugin>
-<!--
-                <plugin>
-                <groupId>org.codehaus.mojo</groupId>
-                <artifactId>surefire-report-maven-plugin</artifactId>
-                </plugin>
-            -->
       <plugin>
         <groupId>org.codehaus.mojo</groupId>
         <artifactId>changelog-maven-plugin</artifactId>
@@ -230,26 +243,7 @@
         <groupId>org.codehaus.mojo</groupId>
         <artifactId>cobertura-maven-plugin</artifactId>
         <version>2.0-SNAPSHOT</version>
-<!--
-                    <configuration>
-                    <outputDirectory>${project.build.directory}/site/cobertura</outputDirectory>
-                    </configuration>
-                -->
       </plugin>
-<!--
-                <plugin>
-                <artifactId>maven-javadoc-plugin</artifactId>
-                </plugin>
-                <plugin>
-                <artifactId>maven-clover-plugin</artifactId>
-                </plugin>
-                <plugin>
-                <artifactId>maven-pmd-plugin</artifactId>
-                </plugin>
-                <plugin>
-                <artifactId>maven-checkstyle-plugin</artifactId>
-                </plugin>
-            -->
     </plugins>
   </reporting>
 </project>

Deleted: pal-wcm/trunk/src/main/java/jp/sf/pal/wcm/FCKeditor.java
===================================================================
--- pal-wcm/trunk/src/main/java/jp/sf/pal/wcm/FCKeditor.java	2008-09-03 08:05:44 UTC (rev 1112)
+++ pal-wcm/trunk/src/main/java/jp/sf/pal/wcm/FCKeditor.java	2008-09-04 02:44:24 UTC (rev 1113)
@@ -1,338 +0,0 @@
-/*
- * FCKeditor - The text editor for internet
- * Copyright (C) 2003-2005 Frederico Caldeira Knabben
- * 
- * Licensed under the terms of the GNU Lesser General Public License:
- * 		http://www.opensource.org/licenses/lgpl-license.php
- * 
- * For further information visit:
- * 		http://www.fckeditor.net/
- * 
- * File Name: FCKeditor.java
- * 	FCKeditor control class.
- * 
- * Version:  2.3
- * Modified: 2005-08-11 16:29:00
- * 
- * File Authors:
- * 		Simone Chiaretta (simo****@users*****)
- */
- 
- 
-//package com.fredck.FCKeditor;
-package jp.sf.pal.wcm;
-
-import javax.servlet.http.HttpServletRequest;
-
-/**
- * The main class of the class lib.<br>
- * It's the container for all properties and the class that generate the output based on browser capabilities and configurations passed by the developer.
- *
- * @author Simone Chiaretta (simo****@users*****)
- */
-public class FCKeditor {
-	
-	private FCKeditorConfigurations oConfig;
-	private String instanceName;
-	private String value = "";
-	private String basePath;
-	private String toolbarSet = "Default";
-	private String width = "100%";
-	private String height = "200";
-	
-	HttpServletRequest request;
-	
-    /**
-     * Get the unique name of the editor
-     *
-     * @return name
-     */
-	public String getInstanceName() {
-		return instanceName;
-	}
-
-    /**
-     * Set the unique name of the editor
-     *
-     * @param value name
-     */	
-	public void setInstanceName(String value) {
-		instanceName=value;
-	}
-
-    /**
-     * Get the initial value to be edited.<br>
-     * In HTML code
-     *
-     * @return value
-     */	
-	public String getValue() {
-		return value;
-	}
-	
-    /**
-     * Set the initial value to be edited.<br>
-     * In HTML code
-     *
-     * @param value value
-     */		
-	public void setValue(String value) {
-		this.value=value;
-	}
-
-    /**
-     * Get the dir where the FCKeditor files reside on the server
-     *
-     * @return path
-     */		
-	public String getBasePath() {
-		return basePath;
-	}
-	
-    /**
-     * Set the dir where the FCKeditor files reside on the server.<br>
-	 *<b>Remarks</b>:<br>
-	 *Avoid using relative paths. It is preferable to set the base path starting from the root (/).<br>
-	 *Always finish the path with a slash (/).
-	 *
-     * @param value path
-     */		
-	public void setBasePath(String value) {
-		basePath=value;
-	}
-
-    /**
-     * Get the name of the toolbar to display
-     *
-     * @return toolbar name
-     */	
-	public String getToolbarSet() {
-		return toolbarSet;
-	}
-
-    /**
-     * Set the name of the toolbar to display
-     *
-     * @param value toolbar name
-     */		
-	public void setToolbarSet(String value) {
-		toolbarSet=value;
-	}
-
-    /**
-     * Get the width of the textarea
-     *
-     * @return width
-     */	
-	public String getWidth() {
-		return width;
-	}
-
-    /**
-     * Set the width of the textarea
-     *
-     * @param value width
-     */		
-	public void setWidth(String value) {
-		width=value;
-	}
-
-    /**
-     * Get the height of the textarea
-     *
-     * @return height
-     */	
-	public String getHeight() {
-		return height;
-	}
-
-    /**
-     * Set the height of the textarea
-     *
-     * @param value height
-     */		
-	public void setHeight(String value) {
-		height=value;
-	}
-
-
-    /**
-     * Get the advanced configuation set.<br>
-     * Adding element to this collection you can override the settings specified in the config.js file.
-     *
-     * @return configuration collection
-     */		
-	public FCKeditorConfigurations getConfig() {
-		return oConfig;
-	}
-
-    /**
-     * Set the advanced configuation set.
-     *
-     * @param value configuration collection
-     */		
-	public void setConfig(FCKeditorConfigurations value) {
-		oConfig=value;
-	}
-
-    /**
-     * Initialize the object setting all value to the default ones.
-     * <p>
-     * <ul>
-     * <li>width: 100%</li>
-     * <li>height: 200</li>
-     * <li>toolbar name: Default</li>
-     * <li>basePath: context root + "/FCKeditor/"</li>
-     * </ul>
-     * </p>
-     *
-     * @param req request object
-     */	
-	public FCKeditor(HttpServletRequest req){
-		request=req;
-		basePath = request.getContextPath() + "/FCKeditor/";
-		oConfig = new FCKeditorConfigurations() ;
-	}
-
-    /**
-     * Initialize the object setting the unique name and then all value to the default ones.
-     * <p>
-     * <ul>
-     * <li>width: 100%</li>
-     * <li>height: 200</li>
-     * <li>toolbar name: Default</li>
-     * <li>basePath: context root + "/FCKeditor/"</li>
-     * </ul>
-     * </p>
-     *
-     * @param req request object
-     * @param parInstanceName unique name
-     */		
-	public FCKeditor(HttpServletRequest req, String parInstanceName){
-		request=req;
-		basePath = request.getContextPath() + "/FCKeditor/";
-		instanceName=parInstanceName;
-		oConfig = new FCKeditorConfigurations() ;
-	}
-
-    /**
-     * Initialize the object setting all basic configurations.<br>
-     *
-     * The basePath is context root + "/FCKeditor/"
-     *
-     * @param req request object
-     * @param parInstanceName unique name
-     * @param parWidth width
-     * @param parHeight height
-     * @param parToolbarSet toolbarSet name
-     * @param parValue initial value
-     */		
-	public FCKeditor(HttpServletRequest req, String parInstanceName, String parWidth, String parHeight, String parToolbarSet, String parValue){
-		request=req;
-		basePath = request.getContextPath() + "/FCKeditor/";
-		instanceName=parInstanceName;
-		width=parWidth;
-		height=parHeight;
-		toolbarSet=parToolbarSet;
-		value=parValue;
-		oConfig = new FCKeditorConfigurations() ;
-	}
-	
-	
-	private boolean isCompatible() {
-		String userAgent=request.getHeader("user-agent");
-		if(userAgent==null)
-			return false;
-		userAgent=userAgent.toLowerCase();
-		if ((userAgent.indexOf("msie") !=-1) && (userAgent.indexOf("mac") == -1) && (userAgent.indexOf("opera") == -1)) {
-			if(retrieveBrowserVersion(userAgent)>=5.5)
-				return true;
-		}
-		else if (userAgent.indexOf("applewebkit") != -1){ // safari
-			if(retrieveBrowserVersion(userAgent) >= 522)
-				return true;
-		}
-		else if (userAgent.indexOf("gecko") !=-1){
-			if(retrieveBrowserVersion(userAgent)>=20030210)
-				return true;
-		}
-		return false;
-	}
-	
-	private double retrieveBrowserVersion(String userAgent) {
-		if(userAgent.indexOf("msie")>-1) {
-			String str = userAgent.substring(userAgent.indexOf("msie") + 5);
-			return Double.parseDouble(str.substring(0, str.indexOf(";")));
-		}
-		else if(userAgent.indexOf("applewebkit") != -1){ // safari
-			String str = userAgent.substring(userAgent.indexOf("applewebkit") + 12);
-			return Double.parseDouble(str.substring(0,3));
-		}
-		else {
-			String str = userAgent.substring(userAgent.indexOf("gecko") + 6);
-			return Double.parseDouble(str.substring(0, 8));
-		}
-	}
-	
-	private String HTMLEncode(String txt) {
-		txt=txt.replaceAll("&","&amp;");
-		txt=txt.replaceAll("<","&lt;");
-		txt=txt.replaceAll(">","&gt;");
-		txt=txt.replaceAll("\"","&quot;");
-		txt=txt.replaceAll("'","&#146;");
-		return txt;
-	}
-	
-
-    /**
-     * Generate the HTML Code for the editor.
-     * <br>
-     * Evalute the browser capabilities and generate the editor if IE 5.5 or Gecko 20030210 or greater,
-     * or a simple textarea otherwise. 
-     *
-     * @return html code
-     */	
-	public String create() {
-		StringBuffer strEditor=new StringBuffer();
-		
-		strEditor.append("<div>");
-		String encodedValue=HTMLEncode(value);
-		
-		if(isCompatible()) {
-		
-			strEditor.append("<input type=\"hidden\" id=\"" + instanceName + "\" name=\"" + instanceName + "\" value=\"" + encodedValue + "\">");
-		
-			strEditor.append(createConfigHTML());
-			strEditor.append(createIFrameHTML());
-		
-		}
-		else{
-			strEditor.append("<TEXTAREA name=\"" + instanceName + "\" rows=\"4\" cols=\"40\" style=\"WIDTH: " + width + "; HEIGHT: " + height + "\" wrap=\"virtual\">"+encodedValue+"</TEXTAREA>");
-		}
-		strEditor.append("</div>");
-		return strEditor.toString();
-	}
-	
-	private String createConfigHTML() {
-		String configStr=oConfig.getUrlParams();
-		
-		
-		if(!configStr.equals(""))
-			configStr=configStr.substring(1);			
-			
-		return "<input type=\"hidden\" id=\"" + instanceName + "___Config\" value=\"" + configStr + "\">" ;
-	}
-
-	private String createIFrameHTML() {
-	
-		String sLink=basePath + "editor/fckeditor.html?InstanceName=" + instanceName;
-		
-		if (!toolbarSet.equals(""))
-			sLink+="&Toolbar=" + toolbarSet;
-		
-		 return "<iframe id=\"" + instanceName + "___Frame\" src=\"" + sLink + "\" width=\"" + width + "\" height=\"" + height + "\" frameborder=\"no\" scrolling=\"no\"></iframe>";
-		
-	}
-	
-	
-}

Deleted: pal-wcm/trunk/src/main/java/jp/sf/pal/wcm/FCKeditorConfigurations.java
===================================================================
--- pal-wcm/trunk/src/main/java/jp/sf/pal/wcm/FCKeditorConfigurations.java	2008-09-03 08:05:44 UTC (rev 1112)
+++ pal-wcm/trunk/src/main/java/jp/sf/pal/wcm/FCKeditorConfigurations.java	2008-09-04 02:44:24 UTC (rev 1113)
@@ -1,66 +0,0 @@
-/*
- * FCKeditor - The text editor for internet
- * Copyright (C) 2003-2005 Frederico Caldeira Knabben
- * 
- * Licensed under the terms of the GNU Lesser General Public License:
- * 		http://www.opensource.org/licenses/lgpl-license.php
- * 
- * For further information visit:
- * 		http://www.fckeditor.net/
- * 
- * File Name: FCKeditorConfigurations.java
- * 	FCKeditor configurations container.
- * 
- * Version:  2.3
- * Modified: 2005-08-11 16:29:00
- * 
- * File Authors:
- * 		Simone Chiaretta (simo****@users*****)
- */
-
-
-package jp.sf.pal.wcm;
-//package com.fredck.FCKeditor;
-
-import java.util.*;
-
-/**
- * Contains the configuration settings for the FCKEditor.<br>
- * Adding element to this collection you can override the settings specified in the config.js file.
- *
- * @author Simone Chiaretta (simo****@users*****)
- */
-public class FCKeditorConfigurations extends HashMap{
-	
-	/**
-     * Initialize the configuration collection
-     */
-	public FCKeditorConfigurations() {
-		super();
-	}
-
-	/**
-     * Generate the url parameter sequence used to pass this configuration to the editor.
-     *
-     *
-     *@return html endocode sequence of configuration parameters
-     */	
-	public String getUrlParams() {
-		StringBuffer osParams = new StringBuffer();
-		
-		for(Iterator i=this.entrySet().iterator();i.hasNext();) {
-			Map.Entry entry = (Map.Entry) i.next();
-			if(entry.getValue()!=null)
-				osParams.append("&"+encodeConfig(entry.getKey().toString())+"="+encodeConfig(entry.getValue().toString()));
-		}
-		return osParams.toString();
-	}
-	
-	private String encodeConfig(String txt) {
-		txt=txt.replaceAll("&","%26");
-		txt=txt.replaceAll("=","%3D");
-		txt=txt.replaceAll("\"","%22");
-		return txt;
-	}
-	
-}

Deleted: pal-wcm/trunk/src/main/java/jp/sf/pal/wcm/PALWcmConstants.java
===================================================================
--- pal-wcm/trunk/src/main/java/jp/sf/pal/wcm/PALWcmConstants.java	2008-09-03 08:05:44 UTC (rev 1112)
+++ pal-wcm/trunk/src/main/java/jp/sf/pal/wcm/PALWcmConstants.java	2008-09-04 02:44:24 UTC (rev 1113)
@@ -1,77 +0,0 @@
-package jp.sf.pal.wcm;
-
-/**
- * @author shinsuke
- *
- */
-public class PALWcmConstants
-{
-    public static final String PREFIX = "jp.sf.pal.wcm.";
-
-    public static final String TITLE = PREFIX + "Title";
-
-    public static final String CONTENT = PREFIX + "Content";
-
-    public static final String FRAGMENT_ID = PREFIX + "FragmentId";
-
-    public static final String PORTAL_CONTEXT_PATH = PREFIX
-            + "PortalContextPath";
-
-    public static final String NAME_SERVLET_PARAM = "name";
-
-    public static final String TYPE_SERVLET_PARAM = "type";
-
-    public static final String NAMESPACE_SERVLET_PARAM = "namespace";
-
-    public static final String DEFAULT_UPLOAD_DIR = "/WEB-INF/upload";
-
-    public static final String UPLOAD_DIRECTORY_PARAM = "upload-directory";
-
-    public static final String LOGIN_USER_NAME = PREFIX + "LoginUserName";
-
-    public static final String FILE_UPLOAD_FCKEDITOR_ACTION = "FileUpload";
-
-    public static final String GET_FOLDERS_FCKEDITOR_ACTION = "GetFolders";
-
-    public static final String GET_FOLDERS_AND_FILES_FCKEDITOR_ACTION = "GetFoldersAndFiles";
-
-    public static final String CREATE_FOLDER_FCKEDITOR_ACTION = "CreateFolder";
-
-    public static final String CURRENT_FOLDER_FCKEDITOR_PARAM = "CurrentFolder";
-
-    public static final String TYPE_FCKEDITOR_PARAM = "Type";
-
-    public static final String COMMAND_FCKEDITOR_PARAM = "Command";
-
-    public static final String NEW_FOLDER_NAME_FCKEDITOR_PARAM = "NewFolderName";
-
-    public static final String ADD_LOCALE = PREFIX + "AddLocale";
-
-    public static final String DELETE_LOCALE = PREFIX + "DeleteLocale";
-
-    public static final String CHANGE_LOCALE = PREFIX + "ChangeLocale";
-
-    public static final String EDIT_LOCALE = PREFIX + "EditLocale";
-
-    public static final String TARGET_LOCALE = PREFIX + "TargetLocale";
-
-    public static final String SELECTED_LOCALE = PREFIX + "SelectedLocale";
-
-    public static final String EDIT_TYPE = PREFIX + "EditType";
-
-    public static final String CONTENT_EDIT_TYPE = PREFIX + "ContentEditType";
-
-    public static final String PREFERENCES_EDIT_TYPE = PREFIX
-            + "PreferencesEditType";
-
-    public static final String LOCALE_LIST = PREFIX + "LocaleList";
-
-    public static final String LOCALE_SEPARETER = "-";
-
-    public static final String MESSAGE = PREFIX + "Message";
-
-    public static final String ACTION_TYPE = PREFIX + "ActionType";
-    
-    public static final String CONTENT_FILE_NAME = "content_jp.html";
-
-}

Added: pal-wcm/trunk/src/main/java/jp/sf/pal/wcm/WcmConstants.java
===================================================================
--- pal-wcm/trunk/src/main/java/jp/sf/pal/wcm/WcmConstants.java	                        (rev 0)
+++ pal-wcm/trunk/src/main/java/jp/sf/pal/wcm/WcmConstants.java	2008-09-04 02:44:24 UTC (rev 1113)
@@ -0,0 +1,83 @@
+package jp.sf.pal.wcm;
+
+/**
+ * @author shinsuke
+ *
+ */
+public class WcmConstants {
+    public static final String PREFIX = "jp.sf.pal.wcm.";
+
+    public static final String TITLE = PREFIX + "Title";
+
+    public static final String CONTENT = PREFIX + "Content";
+
+    public static final String FRAGMENT_ID = PREFIX + "FragmentId";
+
+    public static final String PORTAL_CONTEXT_PATH = PREFIX +
+            "PortalContextPath";
+
+    public static final String NAME_SERVLET_PARAM = "name";
+
+    public static final String TYPE_SERVLET_PARAM = "type";
+
+    public static final String NAMESPACE_SERVLET_PARAM = "namespace";
+
+    public static final String DEFAULT_UPLOAD_DIR = "/WEB-INF/upload";
+
+    public static final String UPLOAD_DIRECTORY_PARAM = "upload-directory";
+
+    public static final String LOGIN_USER_NAME = PREFIX + "LoginUserName";
+
+    public static final String FILE_UPLOAD_FCKEDITOR_ACTION = "FileUpload";
+
+    public static final String GET_FOLDERS_FCKEDITOR_ACTION = "GetFolders";
+
+    public static final String GET_FOLDERS_AND_FILES_FCKEDITOR_ACTION = "GetFoldersAndFiles";
+
+    public static final String CREATE_FOLDER_FCKEDITOR_ACTION = "CreateFolder";
+
+    public static final String CURRENT_FOLDER_FCKEDITOR_PARAM = "CurrentFolder";
+
+    public static final String TYPE_FCKEDITOR_PARAM = "Type";
+
+    public static final String COMMAND_FCKEDITOR_PARAM = "Command";
+
+    public static final String NEW_FOLDER_NAME_FCKEDITOR_PARAM = "NewFolderName";
+
+    public static final String ADD_LOCALE = PREFIX + "AddLocale";
+
+    public static final String DELETE_LOCALE = PREFIX + "DeleteLocale";
+
+    public static final String CHANGE_LOCALE = PREFIX + "ChangeLocale";
+
+    public static final String EDIT_LOCALE = PREFIX + "EditLocale";
+
+    public static final String TARGET_LOCALE = PREFIX + "TargetLocale";
+
+    public static final String SELECTED_LOCALE = PREFIX + "SelectedLocale";
+
+    public static final String EDIT_TYPE = PREFIX + "EditType";
+
+    public static final String CONTENT_EDIT_TYPE = PREFIX + "ContentEditType";
+
+    public static final String PREFERENCES_EDIT_TYPE = PREFIX +
+            "PreferencesEditType";
+
+    public static final String LOCALE_LIST = PREFIX + "LocaleList";
+
+    public static final String LOCALE_SEPARETER = "-";
+
+    public static final String MESSAGE = PREFIX + "Message";
+
+    public static final String ACTION_TYPE = PREFIX + "ActionType";
+
+    public static final String PAGE_MANAGER = PREFIX + "PageManager";
+
+    public static final String PORTLET_REGISTRY = PREFIX + "PortletRegistry";
+
+    public static final String PSML_EXTENTION = ".psml";
+
+    public static final String FRAGMENT_SEPARATOR = "::";
+
+    public static final String ENCODED_PATH = "encodedPath";
+}


Property changes on: pal-wcm/trunk/src/main/java/jp/sf/pal/wcm/WcmConstants.java
___________________________________________________________________
Name: svn:eol-style
   + native

Added: pal-wcm/trunk/src/main/java/jp/sf/pal/wcm/WcmException.java
===================================================================
--- pal-wcm/trunk/src/main/java/jp/sf/pal/wcm/WcmException.java	                        (rev 0)
+++ pal-wcm/trunk/src/main/java/jp/sf/pal/wcm/WcmException.java	2008-09-04 02:44:24 UTC (rev 1113)
@@ -0,0 +1,104 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ * 
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package jp.sf.pal.wcm;
+
+/**
+ * @author shinsuke
+ * 
+ */
+public class WcmException extends Exception {
+
+    private String messageId;
+
+    private Object[] args;
+
+    /**
+     * @return Returns the messageId.
+     */
+    public String getMessageId() {
+        return messageId;
+    }
+
+    /**
+     * @param messageId
+     *            The messageId to set.
+     */
+    public void setMessageId(String messageId) {
+        this.messageId = messageId;
+    }
+
+    /**
+     * @return Returns the args.
+     */
+    public Object[] getArgs() {
+        return args;
+    }
+
+    /**
+     * @param args
+     *            The args to set.
+     */
+    public void setArgs(Object[] args) {
+        this.args = args;
+    }
+
+    public WcmException(String messageId) {
+        super(messageId);
+        this.messageId = messageId;
+    }
+
+    public WcmException(String messageId, Object[] args) {
+        super(messageId);
+        this.messageId = messageId;
+        this.args = args;
+    }
+
+    public WcmException(String messageId, String message, Throwable cause) {
+        super(message, cause);
+        this.messageId = messageId;
+    }
+
+    public WcmException(String messageId, Object[] args, String message,
+            Throwable cause) {
+        super(message, cause);
+        this.messageId = messageId;
+        this.args = args;
+    }
+
+    public WcmException(String messageId, String message) {
+        super(message);
+        this.messageId = messageId;
+    }
+
+    public WcmException(String messageId, Object[] args, String message) {
+        super(message);
+        this.messageId = messageId;
+        this.args = args;
+    }
+
+    public WcmException(String messageId, Throwable cause) {
+        super(cause);
+        this.messageId = messageId;
+    }
+
+    public WcmException(String messageId, Object[] args, Throwable cause) {
+        super(cause);
+        this.messageId = messageId;
+        this.args = args;
+    }
+
+}


Property changes on: pal-wcm/trunk/src/main/java/jp/sf/pal/wcm/WcmException.java
___________________________________________________________________
Name: svn:eol-style
   + native

Added: pal-wcm/trunk/src/main/java/jp/sf/pal/wcm/action/EditorAction.java
===================================================================
--- pal-wcm/trunk/src/main/java/jp/sf/pal/wcm/action/EditorAction.java	                        (rev 0)
+++ pal-wcm/trunk/src/main/java/jp/sf/pal/wcm/action/EditorAction.java	2008-09-04 02:44:24 UTC (rev 1113)
@@ -0,0 +1,301 @@
+/*
+ * Copyright 2005-2007 Portal Application Laboratory Project and the Others.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, 
+ * either express or implied. See the License for the specific language
+ * governing permissions and limitations under the License.
+ */
+package jp.sf.pal.wcm.action;
+
+import java.util.ArrayList;
+import java.util.List;
+
+import javax.portlet.PortletRequest;
+import javax.servlet.http.HttpServletRequest;
+
+import jp.sf.pal.wcm.WcmConstants;
+import jp.sf.pal.wcm.WcmException;
+import jp.sf.pal.wcm.entity.Node;
+import jp.sf.pal.wcm.form.EditorForm;
+import jp.sf.pal.wcm.service.ContentService;
+import jp.sf.pal.wcm.util.PALWcmUtil;
+
+import org.apache.commons.lang.StringEscapeUtils;
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
+import org.apache.struts.action.ActionMessage;
+import org.apache.struts.action.ActionMessages;
+import org.seasar.framework.util.StringUtil;
+import org.seasar.struts.annotation.ActionForm;
+import org.seasar.struts.annotation.Execute;
+import org.seasar.struts.exception.ActionMessagesException;
+import org.seasar.struts.portlet.util.PortletUtil;
+import org.seasar.struts.util.ActionMessagesUtil;
+
+/**
+ * @author shinsuke
+ * 
+ */
+public class EditorAction {
+    private static final Log log = LogFactory.getLog(EditorAction.class);
+
+    public List<Node> nodeItems;
+
+    public List<String> localeItems;
+
+    @ActionForm
+    private EditorForm editorForm;
+
+    private ContentService contentService;
+
+    private HttpServletRequest request;
+
+    private String getReceivedPath() {
+        PortletRequest portletRequest = (PortletRequest) request
+                .getAttribute(PortletUtil.PORTLET_REQUEST);
+        if (portletRequest != null) {
+            return portletRequest.getParameter(WcmConstants.ENCODED_PATH);
+        }
+        return null;
+    }
+
+    @Execute(validator = false, input = "/error/editor.jsp")
+    public String index() {
+        String path = getReceivedPath();
+        if (path != null) {
+            editorForm.currentPath = PALWcmUtil.urlDecodePath(path);
+        } else if (editorForm.encodedPath != null) {
+            editorForm.currentPath = PALWcmUtil
+                    .urlDecodePath(editorForm.encodedPath);
+        }
+
+        if (editorForm.currentPath == null) {
+            editorForm.currentPath = "/";
+        }
+
+        // check if :: is included in path
+        if (editorForm.currentPath != null &&
+                editorForm.currentPath.indexOf(WcmConstants.FRAGMENT_SEPARATOR) != -1) {
+            return edit();
+        } else {
+            nodeItems = new ArrayList<Node>();
+            try {
+                nodeItems.addAll(contentService
+                        .getNodes(editorForm.currentPath));
+            } catch (WcmException e) {
+                // TODO log
+                log.error(e.getMessage(), e);
+                throw new ActionMessagesException(e.getMessageId(), e.getArgs());
+            }
+
+            return "index.jsp";
+        }
+    }
+
+    @Execute(validator = false, input = "/error/editor.jsp", urlPattern = "list/{encodedPath}")
+    public String list() {
+        if (editorForm.encodedPath != null) {
+            editorForm.currentPath = PALWcmUtil
+                    .urlDecodePath(editorForm.encodedPath);
+        }
+
+        if (editorForm.currentPath == null) {
+            editorForm.currentPath = "/";
+        }
+
+        // check if :: is included in path
+        if (editorForm.currentPath != null &&
+                editorForm.currentPath.indexOf(WcmConstants.FRAGMENT_SEPARATOR) != -1) {
+            return edit();
+        } else {
+            nodeItems = new ArrayList<Node>();
+            try {
+                nodeItems.addAll(contentService
+                        .getNodes(editorForm.currentPath));
+            } catch (WcmException e) {
+                // TODO log
+                log.error(e.getMessage(), e);
+                throw new ActionMessagesException(e.getMessageId(), e.getArgs());
+            }
+
+            return "index.jsp";
+        }
+    }
+
+    @Execute(validator = false, input = "/error/editor.jsp")
+    public String parent() {
+        if (editorForm.currentPath != null) {
+            editorForm.currentPath = editorForm.currentPath.replaceFirst("/+$",
+                    "");
+            int pos = editorForm.currentPath.lastIndexOf("/");
+            if (pos > 0) {
+                editorForm.currentPath = editorForm.currentPath.substring(0,
+                        pos);
+            } else {
+                editorForm.currentPath = "/";
+            }
+        }
+        return list();
+    }
+
+    @Execute(validator = false, input = "prefs.jsp", urlPattern = "prefs/{encodedPath}")
+    public String prefs() {
+        if (editorForm.encodedPath != null) {
+            editorForm.currentPath = PALWcmUtil
+                    .urlDecodePath(editorForm.encodedPath);
+        }
+        prerenderForPrefs();
+        return "prefs.jsp";
+    }
+
+    @Execute(validator = false, input = "prefs.jsp")
+    public String addLocale() {
+        try {
+            if (StringUtil.isEmpty(editorForm.locale)) {
+                throw new ActionMessagesException("errors.locale_is_null");
+            }
+            contentService.addLocale(editorForm.getPagePath(), editorForm
+                    .getFragmentId(), editorForm.locale);
+            editorForm.locale = null;
+            ActionMessages msgs = new ActionMessages();
+            msgs.add(ActionMessages.GLOBAL_MESSAGE, new ActionMessage(
+                    "success.add_locale"));
+            ActionMessagesUtil.saveMessages(request, msgs);
+        } catch (WcmException e) {
+            // TODO log
+            log.error(e.getMessage(), e);
+            throw new ActionMessagesException(e.getMessageId(), e.getArgs());
+        } finally {
+            prerenderForPrefs();
+        }
+        return "prefs.jsp";
+    }
+
+    @Execute(validator = false, input = "prefs.jsp")
+    public String deleteLocale() {
+        try {
+            if (StringUtil.isEmpty(editorForm.locale)) {
+                throw new ActionMessagesException("errors.locale_is_null");
+            }
+            contentService.deleteLocale(editorForm.getPagePath(), editorForm
+                    .getFragmentId(), editorForm.locale);
+            editorForm.locale = null;
+            ActionMessages msgs = new ActionMessages();
+            msgs.add(ActionMessages.GLOBAL_MESSAGE, new ActionMessage(
+                    "success.delete_locale"));
+            ActionMessagesUtil.saveMessages(request, msgs);
+        } catch (WcmException e) {
+            // TODO log
+            log.error(e.getMessage(), e);
+            throw new ActionMessagesException(e.getMessageId(), e.getArgs());
+        } finally {
+            prerenderForPrefs();
+        }
+        return "prefs.jsp";
+    }
+
+    @Execute(validator = false, input = "edit.jsp", urlPattern = "edit/{encodedPath}")
+    public String edit() {
+        if (editorForm.encodedPath != null) {
+            editorForm.currentPath = PALWcmUtil
+                    .urlDecodePath(editorForm.encodedPath);
+        }
+
+        if (editorForm.locale == null) {
+            editorForm.locale = "";
+        }
+        String localeName = editorForm.locale;
+        if (!localeName.equals("")) {
+            localeName = WcmConstants.LOCALE_SEPARETER + localeName;
+        }
+
+        try {
+            editorForm.title = contentService.getValue(
+                    editorForm.getPagePath(), editorForm.getFragmentId(),
+                    WcmConstants.TITLE + localeName, "");
+            editorForm.content = StringEscapeUtils
+                    .escapeJavaScript(contentService.getValue(editorForm
+                            .getPagePath(), editorForm.getFragmentId(),
+                            WcmConstants.CONTENT + localeName, ""));
+            localeItems = contentService.getLocaleList(
+                    editorForm.getPagePath(), editorForm.getFragmentId());
+        } catch (WcmException e) {
+            // TODO log
+            log.error(e.getMessage(), e);
+            throw new ActionMessagesException(e.getMessageId(), e.getArgs());
+        } finally {
+            prerenderForEdit();
+        }
+
+        return "edit.jsp";
+    }
+
+    @Execute(validator = true, input = "/error/editor.jsp")
+    public String store() {
+        try {
+            contentService.storeContent(editorForm.getPagePath(), editorForm
+                    .getFragmentId(), editorForm.title, editorForm.content,
+                    editorForm.locale);
+            ActionMessages msgs = new ActionMessages();
+            msgs.add(ActionMessages.GLOBAL_MESSAGE, new ActionMessage(
+                    "success.store_content"));
+            ActionMessagesUtil.saveMessages(request, msgs);
+        } catch (WcmException e) {
+            // TODO log
+            log.error(e.getMessage(), e);
+            throw new ActionMessagesException(e.getMessageId(), e.getArgs());
+        }
+        return edit();
+    }
+
+    public EditorForm getEditorForm() {
+        return editorForm;
+    }
+
+    public void setEditorForm(EditorForm editorForm) {
+        this.editorForm = editorForm;
+    }
+
+    public ContentService getContentService() {
+        return contentService;
+    }
+
+    public void setContentService(ContentService contentService) {
+        this.contentService = contentService;
+    }
+
+    public HttpServletRequest getRequest() {
+        return request;
+    }
+
+    public void setRequest(HttpServletRequest request) {
+        this.request = request;
+    }
+
+    private void prerenderForEdit() {
+        editorForm.encodedPath = PALWcmUtil.encodePath(editorForm.currentPath);
+        editorForm.encodedPagePath = PALWcmUtil.encodePath(editorForm
+                .getPagePath());
+    }
+
+    private void prerenderForPrefs() {
+        editorForm.encodedPath = PALWcmUtil.encodePath(editorForm.currentPath);
+        editorForm.encodedPagePath = PALWcmUtil.encodePath(editorForm
+                .getPagePath());
+        try {
+            localeItems = contentService.getLocaleList(
+                    editorForm.getPagePath(), editorForm.getFragmentId());
+        } catch (WcmException e) {
+            // TODO log
+            log.error(e.getMessage(), e);
+        }
+    }
+}


Property changes on: pal-wcm/trunk/src/main/java/jp/sf/pal/wcm/action/EditorAction.java
___________________________________________________________________
Name: svn:eol-style
   + native

Added: pal-wcm/trunk/src/main/java/jp/sf/pal/wcm/action/IndexAction.java
===================================================================
--- pal-wcm/trunk/src/main/java/jp/sf/pal/wcm/action/IndexAction.java	                        (rev 0)
+++ pal-wcm/trunk/src/main/java/jp/sf/pal/wcm/action/IndexAction.java	2008-09-04 02:44:24 UTC (rev 1113)
@@ -0,0 +1,30 @@
+/*
+ * Copyright 2005-2007 Portal Application Laboratory Project and the Others.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, 
+ * either express or implied. See the License for the specific language
+ * governing permissions and limitations under the License.
+ */
+package jp.sf.pal.wcm.action;
+
+import org.seasar.struts.annotation.Execute;
+
+/**
+ * @author shinsuke
+ * 
+ */
+public class IndexAction {
+    @Execute(validator = false)
+    public String index() {
+        return "/editor/";
+    }
+
+}


Property changes on: pal-wcm/trunk/src/main/java/jp/sf/pal/wcm/action/IndexAction.java
___________________________________________________________________
Name: svn:eol-style
   + native

Added: pal-wcm/trunk/src/main/java/jp/sf/pal/wcm/entity/Content.java
===================================================================
--- pal-wcm/trunk/src/main/java/jp/sf/pal/wcm/entity/Content.java	                        (rev 0)
+++ pal-wcm/trunk/src/main/java/jp/sf/pal/wcm/entity/Content.java	2008-09-04 02:44:24 UTC (rev 1113)
@@ -0,0 +1,90 @@
+/*
+ * Copyright 2005-2007 Portal Application Laboratory Project and the Others.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, 
+ * either express or implied. See the License for the specific language
+ * governing permissions and limitations under the License.
+ */
+package jp.sf.pal.wcm.entity;
+
+/**
+ * @author shinsuke
+ * 
+ */
+public class Content extends Node {
+    private String id;
+
+    private String title;
+
+    private String body;
+
+    private String language;
+
+    private String country;
+
+    public String getName() {
+        String path = getPath();
+        if (path == null) {
+            return null;
+        }
+        int pos = path.lastIndexOf("::");
+        if (pos != -1 && pos + 1 < path.length()) {
+            return path.substring(pos + 2);
+        } else {
+            return path;
+        }
+    }
+
+    public String getId() {
+        return id;
+    }
+
+    public void setId(String id) {
+        this.id = id;
+    }
+
+    public String getType() {
+        return CONTENT;
+    }
+
+    public String getTitle() {
+        return title;
+    }
+
+    public void setTitle(String title) {
+        this.title = title;
+    }
+
+    public String getBody() {
+        return body;
+    }
+
+    public void setBody(String body) {
+        this.body = body;
+    }
+
+    public String getLanguage() {
+        return language;
+    }
+
+    public void setLanguage(String language) {
+        this.language = language;
+    }
+
+    public String getCountry() {
+        return country;
+    }
+
+    public void setCountry(String country) {
+        this.country = country;
+    }
+
+}


Property changes on: pal-wcm/trunk/src/main/java/jp/sf/pal/wcm/entity/Content.java
___________________________________________________________________
Name: svn:eol-style
   + native

Added: pal-wcm/trunk/src/main/java/jp/sf/pal/wcm/entity/Folder.java
===================================================================
--- pal-wcm/trunk/src/main/java/jp/sf/pal/wcm/entity/Folder.java	                        (rev 0)
+++ pal-wcm/trunk/src/main/java/jp/sf/pal/wcm/entity/Folder.java	2008-09-04 02:44:24 UTC (rev 1113)
@@ -0,0 +1,31 @@
+/*
+ * Copyright 2005-2007 Portal Application Laboratory Project and the Others.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, 
+ * either express or implied. See the License for the specific language
+ * governing permissions and limitations under the License.
+ */
+package jp.sf.pal.wcm.entity;
+
+/**
+ * @author shinsuke
+ * 
+ */
+public class Folder extends Node {
+    public Folder(String path) {
+        setPath(path);
+    }
+
+    public String getType() {
+        return FOLDER;
+    }
+
+}


Property changes on: pal-wcm/trunk/src/main/java/jp/sf/pal/wcm/entity/Folder.java
___________________________________________________________________
Name: svn:eol-style
   + native

Added: pal-wcm/trunk/src/main/java/jp/sf/pal/wcm/entity/Node.java
===================================================================
--- pal-wcm/trunk/src/main/java/jp/sf/pal/wcm/entity/Node.java	                        (rev 0)
+++ pal-wcm/trunk/src/main/java/jp/sf/pal/wcm/entity/Node.java	2008-09-04 02:44:24 UTC (rev 1113)
@@ -0,0 +1,70 @@
+/*
+ * Copyright 2005-2007 Portal Application Laboratory Project and the Others.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, 
+ * either express or implied. See the License for the specific language
+ * governing permissions and limitations under the License.
+ */
+package jp.sf.pal.wcm.entity;
+
+import jp.sf.pal.wcm.util.PALWcmUtil;
+
+/**
+ * @author shinsuke
+ * 
+ */
+public abstract class Node {
+
+    public static final String FOLDER = "folder";
+
+    public static final String PAGE = "page";
+
+    public static final String CONTENT = "content";
+
+    private String path;
+
+    private String title;
+
+    public String getPath() {
+        return path;
+    }
+
+    public void setPath(String path) {
+        this.path = path;
+    }
+
+    public String getTitle() {
+        return title;
+    }
+
+    public void setTitle(String title) {
+        this.title = title;
+    }
+
+    public String getName() {
+        if (path == null) {
+            return null;
+        }
+        path = path.replaceFirst("/+$", "");
+        int pos = path.lastIndexOf("/");
+        if (pos != -1 && pos < path.length()) {
+            return path.substring(pos + 1);
+        } else {
+            return path;
+        }
+    }
+
+    public String getEncodedPath() {
+        return PALWcmUtil.encodePath(path);
+    }
+
+    public abstract String getType();
+}


Property changes on: pal-wcm/trunk/src/main/java/jp/sf/pal/wcm/entity/Node.java
___________________________________________________________________
Name: svn:eol-style
   + native

Added: pal-wcm/trunk/src/main/java/jp/sf/pal/wcm/entity/Page.java
===================================================================
--- pal-wcm/trunk/src/main/java/jp/sf/pal/wcm/entity/Page.java	                        (rev 0)
+++ pal-wcm/trunk/src/main/java/jp/sf/pal/wcm/entity/Page.java	2008-09-04 02:44:24 UTC (rev 1113)
@@ -0,0 +1,31 @@
+/*
+ * Copyright 2005-2007 Portal Application Laboratory Project and the Others.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, 
+ * either express or implied. See the License for the specific language
+ * governing permissions and limitations under the License.
+ */
+package jp.sf.pal.wcm.entity;
+
+/**
+ * @author shinsuke
+ * 
+ */
+public class Page extends Node {
+    public Page(String path) {
+        setPath(path);
+    }
+
+    public String getType() {
+        return PAGE;
+    }
+
+}


Property changes on: pal-wcm/trunk/src/main/java/jp/sf/pal/wcm/entity/Page.java
___________________________________________________________________
Name: svn:eol-style
   + native

Added: pal-wcm/trunk/src/main/java/jp/sf/pal/wcm/form/EditorForm.java
===================================================================
--- pal-wcm/trunk/src/main/java/jp/sf/pal/wcm/form/EditorForm.java	                        (rev 0)
+++ pal-wcm/trunk/src/main/java/jp/sf/pal/wcm/form/EditorForm.java	2008-09-04 02:44:24 UTC (rev 1113)
@@ -0,0 +1,64 @@
+/*
+ * Copyright 2005-2007 Portal Application Laboratory Project and the Others.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, 
+ * either express or implied. See the License for the specific language
+ * governing permissions and limitations under the License.
+ */
+package jp.sf.pal.wcm.form;
+
+import jp.sf.pal.wcm.WcmConstants;
+
+import org.seasar.struts.annotation.Required;
+
+/**
+ * @author shinsuke
+ * 
+ */
+public class EditorForm {
+    public String currentPath;
+
+    public String encodedPath;
+
+    public String encodedPagePath;
+
+    public String fragmentId;
+
+    public String title;
+
+    public String content;
+
+    @Required(target = "addLocale,deleteLocale")
+    public String locale;
+
+    public String getFragmentId() {
+        if (currentPath != null) {
+            int pos = currentPath.indexOf(WcmConstants.FRAGMENT_SEPARATOR);
+            if (pos != -1) {
+                return currentPath.substring(pos + 2);
+            }
+        }
+        return null;
+    }
+
+    public String getPagePath() {
+        if (currentPath != null) {
+            int pos = currentPath.indexOf(WcmConstants.FRAGMENT_SEPARATOR);
+            if (pos != -1) {
+                return currentPath.substring(0, pos);
+            } else {
+                return currentPath;
+            }
+        }
+        return null;
+    }
+
+}


Property changes on: pal-wcm/trunk/src/main/java/jp/sf/pal/wcm/form/EditorForm.java
___________________________________________________________________
Name: svn:eol-style
   + native

Deleted: pal-wcm/trunk/src/main/java/jp/sf/pal/wcm/portlet/PALWcmPortlet.java
===================================================================
--- pal-wcm/trunk/src/main/java/jp/sf/pal/wcm/portlet/PALWcmPortlet.java	2008-09-03 08:05:44 UTC (rev 1112)
+++ pal-wcm/trunk/src/main/java/jp/sf/pal/wcm/portlet/PALWcmPortlet.java	2008-09-04 02:44:24 UTC (rev 1113)
@@ -1,607 +0,0 @@
-/*
- * Copyright 2000-2004 The Apache Software Foundation.
- * 
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- * 
- *      http://www.apache.org/licenses/LICENSE-2.0
- * 
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package jp.sf.pal.wcm.portlet;
-
-import java.io.BufferedReader;
-import java.io.File;
-import java.io.FileReader;
-import java.io.IOException;
-import java.util.ArrayList;
-import java.util.Arrays;
-import java.util.Iterator;
-import java.util.List;
-import java.util.Locale;
-import java.util.StringTokenizer;
-
-import javax.portlet.ActionRequest;
-import javax.portlet.ActionResponse;
-import javax.portlet.GenericPortlet;
-import javax.portlet.PortletConfig;
-import javax.portlet.PortletException;
-import javax.portlet.PortletMode;
-import javax.portlet.PortletRequest;
-import javax.portlet.PortletRequestDispatcher;
-import javax.portlet.PortletSession;
-import javax.portlet.RenderRequest;
-import javax.portlet.RenderResponse;
-
-import jp.sf.pal.wcm.PALWcmConstants;
-
-import org.apache.commons.lang.StringEscapeUtils;
-import org.apache.commons.logging.Log;
-import org.apache.commons.logging.LogFactory;
-import org.apache.jetspeed.CommonPortletServices;
-import org.apache.jetspeed.PortalReservedParameters;
-import org.apache.jetspeed.om.page.ContentFragment;
-import org.apache.jetspeed.om.page.ContentPage;
-import org.apache.jetspeed.om.page.Fragment;
-import org.apache.jetspeed.om.preference.FragmentPreference;
-import org.apache.jetspeed.page.PageManager;
-import org.apache.jetspeed.page.PageNotUpdatedException;
-import org.apache.jetspeed.page.document.NodeException;
-import org.apache.jetspeed.request.RequestContext;
-
-/**
- * HelloWorldPortlet is a portlet to say "Hello!"
- * 
- * @author <a href="mailto:shins****@yahoo*****">Shinsuke Sugaya</a>
- */
-public class PALWcmPortlet extends GenericPortlet {
-    /**
-     * Logger for this class
-     */
-    private static final Log log = LogFactory.getLog(PALWcmPortlet.class);
-
-    private PageManager pageManager;
-
-    /* (non-Javadoc)
-     * @see javax.portlet.Portlet#init(javax.portlet.PortletConfig)
-     */
-    public void init(PortletConfig config) throws PortletException {
-        super.init(config);
-
-        // pageManager
-        pageManager = (PageManager) getPortletContext().getAttribute(
-                CommonPortletServices.CPS_PAGE_MANAGER_COMPONENT);
-        if (null == pageManager) {
-            throw new PortletException(
-                    "Failed to find the Page Manager on portlet initialization");
-        }
-    }
-
-    
-    /* (non-Javadoc)
-     * @see javax.portlet.GenericPortlet#doDispatch(javax.portlet.RenderRequest, javax.portlet.RenderResponse)
-     */
-    @Override
-    protected void doDispatch(RenderRequest request, RenderResponse response)
-            throws PortletException, IOException {
-        super.doDispatch(request, response);
-        PortletMode mode = request.getPortletMode();
-        if (mode.equals(PortletMode.VIEW)) {
-            String title = (String) request.getAttribute(PALWcmConstants.TITLE);
-            if (title != null) {
-                response.setTitle(title);
-            } else {
-                Fragment fragment = getCurrentFragment(request);
-
-                Locale currentLocale = request.getLocale();
-                List localeList = getLocaleList(fragment);
-                String localeName = "";
-                String language = currentLocale.getLanguage();
-                String country = currentLocale.getCountry();
-                String variant = currentLocale.getVariant();
-                if (localeList.contains(language + "_" + country + "_" +
-                        variant)) {
-                    localeName = PALWcmConstants.LOCALE_SEPARETER + language +
-                            "_" + country + "_" + variant;
-                } else if (localeList.contains(language + "_" + country)) {
-                    localeName = PALWcmConstants.LOCALE_SEPARETER + language +
-                            "_" + country;
-                } else if (localeList.contains(language)) {
-                    localeName = PALWcmConstants.LOCALE_SEPARETER + language;
-                }
-
-                response.setTitle(getFragmentPreferenceValue(fragment,
-                        PALWcmConstants.TITLE + localeName, ""));
-            }
-        }
-        //TODO doHelp
-    }
-
-    /* (non-Javadoc)
-     * @see javax.portlet.GenericPortlet#doView(javax.portlet.RenderRequest, javax.portlet.RenderResponse)
-     */
-    protected void doView(RenderRequest request, RenderResponse response)
-            throws PortletException, IOException {
-        response.setContentType("text/html");
-
-        Fragment fragment = getCurrentFragment(request);
-
-        Locale currentLocale = request.getLocale();
-        List localeList = getLocaleList(fragment);
-        String localeName = "";
-        String language = currentLocale.getLanguage();
-        String country = currentLocale.getCountry();
-        String variant = currentLocale.getVariant();
-        if (localeList.contains(language + "_" + country + "_" + variant)) {
-            localeName = PALWcmConstants.LOCALE_SEPARETER + language + "_" +
-                    country + "_" + variant;
-        } else if (localeList.contains(language + "_" + country)) {
-            localeName = PALWcmConstants.LOCALE_SEPARETER + language + "_" +
-                    country;
-        } else if (localeList.contains(language)) {
-            localeName = PALWcmConstants.LOCALE_SEPARETER + language;
-        }
-
-        String title = getFragmentPreferenceValue(fragment,
-                PALWcmConstants.TITLE + localeName, "");
-        String content = getFragmentPreferenceValue(fragment,
-                PALWcmConstants.CONTENT + localeName, "");
-
-        request.setAttribute(PALWcmConstants.TITLE, title);
-        //request.setAttribute(PALWcmConstants.CONTENT, content);
-        request.setAttribute(PALWcmConstants.CONTENT,
-                getContentByFlagId(fragment.getId()));
-        
-        PortletRequestDispatcher rd = getPortletContext().getRequestDispatcher(
-                "/view/wcm/wcmView.jsp");
-        rd.include(request, response);
-    }
-
-    /* (non-Javadoc)
-     * @see javax.portlet.GenericPortlet#doEdit(javax.portlet.RenderRequest, javax.portlet.RenderResponse)
-     */
-    protected void doEdit(RenderRequest request, RenderResponse response)
-            throws PortletException, IOException {
-        response.setContentType("text/html");
-
-        String msg = request.getParameter(PALWcmConstants.MESSAGE);
-        if (msg != null) {
-            request.setAttribute(PALWcmConstants.MESSAGE, msg);
-        } else {
-            request.setAttribute(PALWcmConstants.MESSAGE, "");
-        }
-
-        storeLoginStatus(request);
-
-        String editType = request.getParameter(PALWcmConstants.EDIT_TYPE);
-        if (PALWcmConstants.CONTENT_EDIT_TYPE.equals(editType)) {
-            doContentEdit(request, response);
-        } else if (PALWcmConstants.PREFERENCES_EDIT_TYPE.equals(editType)) {
-            doPreferencesEdit(request, response);
-        } else {
-            doContentEdit(request, response);
-        }
-    }
-
-    protected void doContentEdit(RenderRequest request, RenderResponse response)
-            throws PortletException, IOException {
-
-        String localeName = getEditLocaleName(request);
-        String selectedLocale = localeName;
-        if (!localeName.equals("")) {
-            localeName = PALWcmConstants.LOCALE_SEPARETER + localeName;
-        }
-
-        Fragment fragment = getCurrentFragment(request);
-        String title = getFragmentPreferenceValue(fragment,
-                PALWcmConstants.TITLE + localeName, "");
-        //String content = getFragmentPreferenceValue(fragment,
-        //PALWcmConstants.CONTENT + localeName, "");
-
-        String localeOptions = getLocaleOptionString(fragment, selectedLocale);
-        String fragmentId = fragment.getId();
-        String content = getContentByFlagId(fragmentId);
-        response.setTitle(title);
-        request.setAttribute(PALWcmConstants.TITLE, title);
-        request.setAttribute(PALWcmConstants.CONTENT, StringEscapeUtils
-                .escapeJavaScript(content));
-        request.setAttribute(PALWcmConstants.LOCALE_LIST, localeOptions);
-        request.setAttribute(PALWcmConstants.FRAGMENT_ID, fragmentId);
-        request.setAttribute(PALWcmConstants.PORTAL_CONTEXT_PATH,
-                getPortalContextPath(request));
-        
-        PortletRequestDispatcher rd = getPortletContext().getRequestDispatcher(
-                "/view/wcm/wcmViewAndEdit.jsp");
-        rd.include(request, response);        
-        
-
-    }
-
-    protected String getEditLocaleName(PortletRequest request) {
-        PortletSession portletSession = request.getPortletSession();
-        Object locale = portletSession
-                .getAttribute(PALWcmConstants.EDIT_LOCALE);
-        if (locale != null) {
-            return locale.toString();
-        }
-        return "";
-    }
-
-    protected void setEditLocaleName(PortletRequest request, String localeName) {
-        PortletSession portletSession = request.getPortletSession();
-        portletSession.setAttribute(PALWcmConstants.EDIT_LOCALE, localeName);
-    }
-
-    protected void doPreferencesEdit(RenderRequest request,
-            RenderResponse response) throws PortletException, IOException {
-        Fragment fragment = getCurrentFragment(request);
-        String fragmentId = fragment.getId();
-
-        request.setAttribute(PALWcmConstants.FRAGMENT_ID, fragmentId);
-        request.setAttribute(PALWcmConstants.LOCALE_LIST,
-                getLocaleOptionString(fragment, null));
-
-        PortletRequestDispatcher rd = getPortletContext().getRequestDispatcher(
-                "/view/wcm/wcmPreferences.jsp");
-        rd.include(request, response);
-
-    }
-
-    private String getLocaleOptionString(Fragment fragment, String localeName) {
-        List locales = getLocaleList(fragment);
-        StringBuffer localesStr = new StringBuffer();
-        for (Iterator ite = locales.iterator(); ite.hasNext();) {
-            String lc = ite.next().toString();
-            localesStr.append("<option value=\"").append(lc).append("\"");
-            if (lc.equals(localeName)) {
-                localesStr.append(" selected");
-            }
-            localesStr.append(">").append(lc).append("</option>");
-        }
-        return localesStr.toString();
-    }
-
-    private List getLocaleList(Fragment fragment) {
-        List locales = new ArrayList();
-        //        List preferences = fragment.getPreferences();
-        //        for (Iterator ite = preferences.iterator(); ite.hasNext();)
-        //        {
-        //            FragmentPreference fp = (FragmentPreference) ite.next();
-        //            if (fp.getName() != null
-        //                    && fp.getName().startsWith(PALWcmConstants.TITLE))
-        //            {
-        //                locales.add(fp.getName().substring(
-        //                        PALWcmConstants.TITLE.length() + 1));
-        //            }
-        //        }
-
-        String localeNames = getFragmentPreferenceValue(fragment,
-                PALWcmConstants.LOCALE_LIST, null);
-        if (localeNames != null) {
-            StringTokenizer st = new StringTokenizer(localeNames, ",");
-            while (st.hasMoreTokens()) {
-                locales.add(st.nextToken());
-            }
-        }
-        return locales;
-    }
-
-    /* (non-Javadoc)
-     * @see javax.portlet.Portlet#processAction(javax.portlet.ActionRequest, javax.portlet.ActionResponse)
-     */
-    public void processAction(ActionRequest request, ActionResponse response)
-            throws PortletException, IOException {
-        if (PortletMode.VIEW.equals(request.getPortletMode())) {
-            processView(request, response);
-        } else if (PortletMode.EDIT.equals(request.getPortletMode())) {
-            processEdit(request, response);
-        } else {
-            log.warn("Invalid action prcess.");
-        }
-    }
-
-    protected void processView(ActionRequest request, ActionResponse response)
-            throws PortletException, IOException {
-        //nothing
-    }
-
-    protected void processEdit(ActionRequest request, ActionResponse response)
-            throws PortletException, IOException {
-        String editType = request.getParameter(PALWcmConstants.EDIT_TYPE);
-        if (PALWcmConstants.CONTENT_EDIT_TYPE.equals(editType)) {
-            processContentEdit(request, response);
-            response.setRenderParameter(PALWcmConstants.EDIT_TYPE,
-                    PALWcmConstants.CONTENT_EDIT_TYPE);
-        } else if (PALWcmConstants.PREFERENCES_EDIT_TYPE.equals(editType)) {
-            processPreferencesEdit(request, response);
-            response.setRenderParameter(PALWcmConstants.EDIT_TYPE,
-                    PALWcmConstants.PREFERENCES_EDIT_TYPE);
-        } else {
-            //TODO print error
-            processContentEdit(request, response);
-            response.setRenderParameter(PALWcmConstants.EDIT_TYPE,
-                    PALWcmConstants.CONTENT_EDIT_TYPE);
-        }
-    }
-
-    protected void processContentEdit(ActionRequest request,
-            ActionResponse response) throws PortletException, IOException {
-        String localeName = request.getParameter(PALWcmConstants.EDIT_LOCALE);
-        setEditLocaleName(request, localeName);
-        String actionType = request.getParameter(PALWcmConstants.ACTION_TYPE);
-        if (PALWcmConstants.CHANGE_LOCALE.equals(actionType)) {
-            // no save 
-            return;
-        }
-
-        String title = request.getParameter(PALWcmConstants.TITLE);
-        String content = request.getParameter(PALWcmConstants.CONTENT);
-        String fragmentId = request.getParameter(PALWcmConstants.FRAGMENT_ID);
-
-        if (localeName == null) {
-            localeName = "";
-        } else if (!localeName.equals("")) {
-            localeName = PALWcmConstants.LOCALE_SEPARETER + localeName;
-        }
-
-        // TODO check above
-
-        ContentPage page = getCurrentPage(request);
-        Fragment fragment = page.getFragmentById(fragmentId);
-
-        setFragmentPreferenceValue(fragment,
-                PALWcmConstants.TITLE + localeName, title);
-        setFragmentPreferenceValue(fragment, PALWcmConstants.CONTENT +
-                localeName, content);
-
-        try {
-            pageManager.updatePage(page);
-            request.setAttribute(PALWcmConstants.MESSAGE,
-                    "Failed to update data. ");
-        } catch (PageNotUpdatedException e) {
-            log.error("Failed to update data. ", e);
-            //TODO i18n
-            request.setAttribute(PALWcmConstants.MESSAGE,
-                    "Failed to update data. ");
-        } catch (NodeException e) {
-            log.error("Failed to update data. ", e);
-            //TODO i18n
-            request.setAttribute(PALWcmConstants.MESSAGE,
-                    "Failed to update data. ");
-        }
-    }
-
-    protected void processPreferencesEdit(ActionRequest request,
-            ActionResponse response) throws PortletException, IOException {
-        String actionType = request.getParameter(PALWcmConstants.ACTION_TYPE);
-        if (PALWcmConstants.ADD_LOCALE.equals(actionType)) {
-            // add locale
-            String fragmentId = request
-                    .getParameter(PALWcmConstants.FRAGMENT_ID);
-            ContentPage page = getCurrentPage(request);
-            Fragment fragment = page.getFragmentById(fragmentId);
-
-            // TODO check above
-
-            String targetLocale = request
-                    .getParameter(PALWcmConstants.TARGET_LOCALE);
-            if (targetLocale == null || targetLocale.equals("")) {
-                //TODO i18n
-                request
-                        .setAttribute(PALWcmConstants.MESSAGE,
-                                "Failed to add a locale. The specified locale is empty. ");
-                return;
-            }
-
-            List locales = getLocaleList(fragment);
-            if (locales.contains(targetLocale)) {
-                //TODO i18n
-                request
-                        .setAttribute(PALWcmConstants.MESSAGE,
-                                "Failed to add the locale. The specified locale has been already added. ");
-                return;
-            }
-
-            locales.add(targetLocale);
-            Object[] objs = locales.toArray();
-            Arrays.sort(objs);
-            StringBuffer localeNames = new StringBuffer();
-            for (int i = 0; i < objs.length; i++) {
-                if (i != 0) {
-                    localeNames.append(",");
-                }
-                localeNames.append(objs[i].toString());
-            }
-            setFragmentPreferenceValue(fragment, PALWcmConstants.LOCALE_LIST,
-                    localeNames.toString());
-
-            try {
-                pageManager.updatePage(page);
-                //TODO i18n
-                request.setAttribute(PALWcmConstants.MESSAGE,
-                        "Added the locale. ");
-            } catch (PageNotUpdatedException e) {
-                log.error("Failed to add the locale. ", e);
-                //TODO i18n
-                request.setAttribute(PALWcmConstants.MESSAGE,
-                        "Failed to add the locale. ");
-            } catch (NodeException e) {
-                log.error("Failed to add the locale. ", e);
-                //TODO i18n
-                request.setAttribute(PALWcmConstants.MESSAGE,
-                        "Failed to add the locale. ");
-            }
-        } else if (PALWcmConstants.DELETE_LOCALE.equals(actionType)) {
-            // delete locale
-            String fragmentId = request
-                    .getParameter(PALWcmConstants.FRAGMENT_ID);
-            ContentPage page = getCurrentPage(request);
-            Fragment fragment = page.getFragmentById(fragmentId);
-
-            // TODO check above
-
-            String selectedLocale = request
-                    .getParameter(PALWcmConstants.SELECTED_LOCALE);
-            if (selectedLocale == null || selectedLocale.equals("")) {
-                //TODO i18n
-                request
-                        .setAttribute(PALWcmConstants.MESSAGE,
-                                "Failed to delete a locale. The specified locale is empty. ");
-                return;
-            }
-
-            List locales = getLocaleList(fragment);
-            if (!locales.contains(selectedLocale)) {
-                //TODO i18n
-                request
-                        .setAttribute(PALWcmConstants.MESSAGE,
-                                "Failed to delete the locale. The specified locale is not included. ");
-                return;
-            }
-
-            locales.remove(selectedLocale);
-            Object[] objs = locales.toArray();
-            StringBuffer localeNames = new StringBuffer();
-            for (int i = 0; i < objs.length; i++) {
-                if (i != 0) {
-                    localeNames.append(",");
-                }
-                localeNames.append(objs[i].toString());
-            }
-            setFragmentPreferenceValue(fragment, PALWcmConstants.LOCALE_LIST,
-                    localeNames.toString());
-            removeFragmentPreferenceValue(fragment, PALWcmConstants.TITLE +
-                    PALWcmConstants.LOCALE_SEPARETER + selectedLocale);
-            removeFragmentPreferenceValue(fragment, PALWcmConstants.CONTENT +
-                    PALWcmConstants.LOCALE_SEPARETER + selectedLocale);
-
-            try {
-                pageManager.updatePage(page);
-                //TODO i18n
-                request.setAttribute(PALWcmConstants.MESSAGE,
-                        "Deleted the locale. ");
-            } catch (PageNotUpdatedException e) {
-                log.error("Failed to delete the locale. ", e);
-                //TODO i18n
-                request.setAttribute(PALWcmConstants.MESSAGE,
-                        "Failed to delete the locale. ");
-            } catch (NodeException e) {
-                log.error("Failed to delete the locale. ", e);
-                //TODO i18n
-                request.setAttribute(PALWcmConstants.MESSAGE,
-                        "Failed to delete the locale. ");
-            }
-        }
-    }
-
-    private String getPortalContextPath(PortletRequest request) {
-        RequestContext requestContext = (RequestContext) request
-                .getAttribute(PortalReservedParameters.REQUEST_CONTEXT_ATTRIBUTE);
-        return requestContext.getRequest().getContextPath();
-    }
-
-    private ContentPage getCurrentPage(PortletRequest request) {
-        RequestContext requestContext = (RequestContext) request
-                .getAttribute(PortalReservedParameters.REQUEST_CONTEXT_ATTRIBUTE);
-        return requestContext.getPage();
-    }
-
-    private ContentFragment getCurrentFragment(RenderRequest request) {
-        return (ContentFragment) request
-                .getAttribute(PortalReservedParameters.FRAGMENT_ATTRIBUTE);
-    }
-
-    private FragmentPreference getFragmentPreferenceByName(Fragment fragment,
-            String name) {
-        if (name == null) {
-            return null;
-        }
-        List preferences = fragment.getPreferences();
-        for (Iterator ite = preferences.iterator(); ite.hasNext();) {
-            FragmentPreference fp = (FragmentPreference) ite.next();
-            if (fp.getName() != null && fp.getName().equals(name)) {
-                return fp;
-            }
-        }
-        return null;
-    }
-
-    private void setFragmentPreferenceValue(Fragment fragment, String name,
-            String value) {
-        FragmentPreference fp = getFragmentPreferenceByName(fragment, name);
-        if (fp == null) {
-            fp = pageManager.newFragmentPreference();
-            fp.setName(name);
-            fp.setReadOnly(false);
-            List list = new ArrayList();
-            list.add(StringEscapeUtils.escapeXml(value));
-            fp.setValueList(list);
-            fragment.getPreferences().add(fp);
-        } else {
-            fp.getValueList().set(0, StringEscapeUtils.escapeXml(value));
-        }
-    }
-
-    private void removeFragmentPreferenceValue(Fragment fragment, String name) {
-        FragmentPreference fp = getFragmentPreferenceByName(fragment, name);
-        fragment.getPreferences().remove(fp);
-    }
-
-    private String getFragmentPreferenceValue(Fragment fragment, String name,
-            String defaultValue) {
-        FragmentPreference fp = getFragmentPreferenceByName(fragment, name);
-        if (fp != null) {
-            if (fp.getValueList().size() > 0) {
-                return StringEscapeUtils.unescapeXml((String) fp.getValueList()
-                        .get(0));
-            }
-        }
-        return defaultValue;
-    }
-
-    protected void storeLoginStatus(PortletRequest request) {
-        PortletSession portletSession = request.getPortletSession();
-        if (request.getRemoteUser() != null) {
-            portletSession.setAttribute(PALWcmConstants.LOGIN_USER_NAME,
-                    request.getRemoteUser(), PortletSession.APPLICATION_SCOPE);
-        } else {
-            portletSession.removeAttribute(PALWcmConstants.LOGIN_USER_NAME,
-                    PortletSession.APPLICATION_SCOPE);
-        }
-    }
-
-    private String getContentByFlagId(String flagId) {
-        String contents = "";
-        String filePath = getPortletContext().getRealPath(
-                "/WEB-INF/data/" + flagId + "/" +
-                        PALWcmConstants.CONTENT_FILE_NAME);
-        File contentsFile = new File(filePath);
-        if (contentsFile.exists()) {
-            try {
-                String line = "";
-                FileReader fr = new FileReader(filePath);
-                BufferedReader reader = new BufferedReader(fr);
-                while ((line = reader.readLine()) != null) {
-                    contents += line;
-                }
-                fr.close();
-                return contents;
-            } catch (Exception e) {
-                // TODO: handle exception
-                log.error(e);
-                return "error";
-            }
-        } else {
-            // TODO: change message
-            //return "portlet:" + flagId + ":" + filePath;
-            return "portlet";
-        }
-
-    }
-
-}

Added: pal-wcm/trunk/src/main/java/jp/sf/pal/wcm/portlet/WcmEditorPortlet.java
===================================================================
--- pal-wcm/trunk/src/main/java/jp/sf/pal/wcm/portlet/WcmEditorPortlet.java	                        (rev 0)
+++ pal-wcm/trunk/src/main/java/jp/sf/pal/wcm/portlet/WcmEditorPortlet.java	2008-09-04 02:44:24 UTC (rev 1113)
@@ -0,0 +1,82 @@
+/*
+ * Copyright 2005-2007 Portal Application Laboratory Project and the Others.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, 
+ * either express or implied. See the License for the specific language
+ * governing permissions and limitations under the License.
+ */
+package jp.sf.pal.wcm.portlet;
+
+import java.io.IOException;
+
+import javax.portlet.ActionRequest;
+import javax.portlet.ActionResponse;
+import javax.portlet.PortletException;
+import javax.portlet.RenderRequest;
+import javax.portlet.RenderResponse;
+
+import jp.sf.pal.wcm.WcmConstants;
+
+import org.apache.jetspeed.CommonPortletServices;
+import org.apache.jetspeed.components.portletregistry.PortletRegistry;
+import org.apache.jetspeed.page.PageManager;
+import org.seasar.struts.portlet.SAStrutsPortlet;
+
+/**
+ * @author shinsuke
+ * 
+ */
+public class WcmEditorPortlet extends SAStrutsPortlet {
+    private PageManager pageManager;
+
+    private PortletRegistry portletRegistry;
+
+    public void init() throws PortletException {
+        super.init();
+
+        // pageManager
+        pageManager = (PageManager) getPortletContext().getAttribute(
+                CommonPortletServices.CPS_PAGE_MANAGER_COMPONENT);
+        if (null == pageManager) {
+            throw new PortletException(
+                    "Failed to find the Page Manager on portlet initialization");
+        }
+
+        // portletRegistry
+        portletRegistry = (PortletRegistry) getPortletContext().getAttribute(
+                CommonPortletServices.CPS_REGISTRY_COMPONENT);
+        if (null == portletRegistry) {
+            throw new PortletException(
+                    "Failed to find the portletRegistry on portlet initialization");
+        }
+    }
+
+    public void destroy() {
+        super.destroy();
+        pageManager = null;
+        portletRegistry = null;
+    }
+
+    public void processAction(ActionRequest request, ActionResponse response)
+            throws PortletException, IOException {
+        request.setAttribute(WcmConstants.PAGE_MANAGER, pageManager);
+        request.setAttribute(WcmConstants.PORTLET_REGISTRY, portletRegistry);
+        super.processAction(request, response);
+    }
+
+    public void render(RenderRequest request, RenderResponse response)
+            throws PortletException, IOException {
+        request.setAttribute(WcmConstants.PAGE_MANAGER, pageManager);
+        request.setAttribute(WcmConstants.PORTLET_REGISTRY, portletRegistry);
+        super.render(request, response);
+    }
+
+}


Property changes on: pal-wcm/trunk/src/main/java/jp/sf/pal/wcm/portlet/WcmEditorPortlet.java
___________________________________________________________________
Name: svn:eol-style
   + native

Added: pal-wcm/trunk/src/main/java/jp/sf/pal/wcm/portlet/WcmViewerPortlet.java
===================================================================
--- pal-wcm/trunk/src/main/java/jp/sf/pal/wcm/portlet/WcmViewerPortlet.java	                        (rev 0)
+++ pal-wcm/trunk/src/main/java/jp/sf/pal/wcm/portlet/WcmViewerPortlet.java	2008-09-04 02:44:24 UTC (rev 1113)
@@ -0,0 +1,196 @@
+/*
+ * Copyright 2000-2004 The Apache Software Foundation.
+ * 
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ * 
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package jp.sf.pal.wcm.portlet;
+
+import java.io.IOException;
+import java.util.ArrayList;
+import java.util.Iterator;
+import java.util.List;
+import java.util.Locale;
+
+import javax.portlet.ActionRequest;
+import javax.portlet.ActionResponse;
+import javax.portlet.GenericPortlet;
+import javax.portlet.PortletConfig;
+import javax.portlet.PortletException;
+import javax.portlet.PortletMode;
+import javax.portlet.PortletRequest;
+import javax.portlet.PortletRequestDispatcher;
+import javax.portlet.RenderRequest;
+import javax.portlet.RenderResponse;
+
+import jp.sf.pal.wcm.WcmConstants;
+import jp.sf.pal.wcm.util.PALWcmUtil;
+
+import org.apache.commons.lang.StringEscapeUtils;
+import org.apache.jetspeed.CommonPortletServices;
+import org.apache.jetspeed.PortalReservedParameters;
+import org.apache.jetspeed.om.page.ContentFragment;
+import org.apache.jetspeed.om.page.ContentPage;
+import org.apache.jetspeed.om.page.Fragment;
+import org.apache.jetspeed.om.preference.FragmentPreference;
+import org.apache.jetspeed.page.PageManager;
+import org.apache.jetspeed.request.RequestContext;
+
+/**
+ * 
+ * @author <a href="mailto:shins****@yahoo*****">Shinsuke Sugaya</a>
+ */
+public class WcmViewerPortlet extends GenericPortlet {
+
+    private PageManager pageManager;
+
+    /* (non-Javadoc)
+     * @see javax.portlet.Portlet#init(javax.portlet.PortletConfig)
+     */
+    public void init(PortletConfig config) throws PortletException {
+        super.init(config);
+
+        // pageManager
+        pageManager = (PageManager) getPortletContext().getAttribute(
+                CommonPortletServices.CPS_PAGE_MANAGER_COMPONENT);
+        if (null == pageManager) {
+            throw new PortletException(
+                    "Failed to find the Page Manager on portlet initialization");
+        }
+    }
+
+    public void processAction(ActionRequest request, ActionResponse response)
+            throws PortletException, IOException {
+        PortletMode mode = request.getPortletMode();
+        if (PortletMode.EDIT.equals(mode)) {
+            response.setPortletMode(PortletMode.VIEW);
+        }
+    }
+
+    protected void doEdit(RenderRequest request, RenderResponse response)
+            throws PortletException, IOException {
+        response.setContentType("text/html");
+        request.setAttribute(WcmConstants.PORTAL_CONTEXT_PATH,
+                getPortalContextPath(request));
+        request.setAttribute(WcmConstants.ENCODED_PATH,
+                getEncodedPath(request));
+
+        PortletRequestDispatcher rd = getPortletContext().getRequestDispatcher(
+                "/WEB-INF/view/viewer/edit.jsp");
+        rd.include(request, response);
+    }
+
+    /* (non-Javadoc)
+     * @see javax.portlet.GenericPortlet#doView(javax.portlet.RenderRequest, javax.portlet.RenderResponse)
+     */
+    protected void doView(RenderRequest request, RenderResponse response)
+            throws PortletException, IOException {
+        response.setContentType("text/html");
+
+        Fragment fragment = getCurrentFragment(request);
+
+        Locale currentLocale = request.getLocale();
+        List<String> localeList = getLocaleList(fragment);
+        String localeName = "";
+        String language = currentLocale.getLanguage();
+        String country = currentLocale.getCountry();
+        String variant = currentLocale.getVariant();
+        if (localeList.contains(language + "_" + country + "_" + variant)) {
+            localeName = WcmConstants.LOCALE_SEPARETER + language + "_" +
+                    country + "_" + variant;
+        } else if (localeList.contains(language + "_" + country)) {
+            localeName = WcmConstants.LOCALE_SEPARETER + language + "_" +
+                    country;
+        } else if (localeList.contains(language)) {
+            localeName = WcmConstants.LOCALE_SEPARETER + language;
+        }
+
+        String title = getFragmentPreferenceValue(fragment, WcmConstants.TITLE +
+                localeName, "");
+        String content = getFragmentPreferenceValue(fragment,
+                WcmConstants.CONTENT + localeName, "");
+
+        response.setTitle(title);
+        request.setAttribute(WcmConstants.TITLE, title);
+        request.setAttribute(WcmConstants.CONTENT, content);
+
+        PortletRequestDispatcher rd = getPortletContext().getRequestDispatcher(
+                "/WEB-INF/view/viewer/view.jsp");
+        rd.include(request, response);
+    }
+
+    private List<String> getLocaleList(Fragment fragment) {
+        List<String> localeList = new ArrayList<String>();
+
+        String localeNames = getFragmentPreferenceValue(fragment,
+                WcmConstants.LOCALE_LIST, null);
+        if (localeNames != null) {
+            String[] locales = localeNames.split(",");
+            for (int i = 0; i < locales.length; i++) {
+                localeList.add(locales[i]);
+            }
+        }
+        return localeList;
+    }
+
+    private ContentFragment getCurrentFragment(RenderRequest request) {
+        return (ContentFragment) request
+                .getAttribute(PortalReservedParameters.FRAGMENT_ATTRIBUTE);
+    }
+
+    private FragmentPreference getFragmentPreferenceByName(Fragment fragment,
+            String name) {
+        if (name == null) {
+            return null;
+        }
+        List preferences = fragment.getPreferences();
+        for (Iterator ite = preferences.iterator(); ite.hasNext();) {
+            FragmentPreference fp = (FragmentPreference) ite.next();
+            if (fp.getName() != null && fp.getName().equals(name)) {
+                return fp;
+            }
+        }
+        return null;
+    }
+
+    private String getFragmentPreferenceValue(Fragment fragment, String name,
+            String defaultValue) {
+        FragmentPreference fp = getFragmentPreferenceByName(fragment, name);
+        if (fp != null) {
+            if (fp.getValueList().size() > 0) {
+                return StringEscapeUtils.unescapeXml((String) fp.getValueList()
+                        .get(0));
+            }
+        }
+        return defaultValue;
+    }
+
+    private String getPortalContextPath(PortletRequest request) {
+        RequestContext requestContext = (RequestContext) request
+                .getAttribute(PortalReservedParameters.REQUEST_CONTEXT_ATTRIBUTE);
+        return requestContext.getRequest().getContextPath();
+    }
+
+    private ContentPage getCurrentPage(PortletRequest request) {
+        RequestContext requestContext = (RequestContext) request
+                .getAttribute(PortalReservedParameters.REQUEST_CONTEXT_ATTRIBUTE);
+        return requestContext.getPage();
+    }
+
+    private String getEncodedPath(RenderRequest request) {
+        ContentPage page = getCurrentPage(request);
+        Fragment fragment = getCurrentFragment(request);
+        return PALWcmUtil.urlEncodePath(page.getPath() +
+                WcmConstants.FRAGMENT_SEPARATOR + fragment.getId());
+    }
+
+}


Property changes on: pal-wcm/trunk/src/main/java/jp/sf/pal/wcm/portlet/WcmViewerPortlet.java
___________________________________________________________________
Name: svn:eol-style
   + native

Added: pal-wcm/trunk/src/main/java/jp/sf/pal/wcm/service/ContentService.java
===================================================================
--- pal-wcm/trunk/src/main/java/jp/sf/pal/wcm/service/ContentService.java	                        (rev 0)
+++ pal-wcm/trunk/src/main/java/jp/sf/pal/wcm/service/ContentService.java	2008-09-04 02:44:24 UTC (rev 1113)
@@ -0,0 +1,403 @@
+/*
+ * Copyright 2005-2007 Portal Application Laboratory Project and the Others.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, 
+ * either express or implied. See the License for the specific language
+ * governing permissions and limitations under the License.
+ */
+package jp.sf.pal.wcm.service;
+
+import java.io.Serializable;
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.HashMap;
+import java.util.Iterator;
+import java.util.List;
+import java.util.Map;
+
+import javax.servlet.http.HttpServletRequest;
+
+import jp.sf.pal.wcm.WcmConstants;
+import jp.sf.pal.wcm.WcmException;
+import jp.sf.pal.wcm.entity.Content;
+import jp.sf.pal.wcm.entity.Folder;
+import jp.sf.pal.wcm.entity.Node;
+import jp.sf.pal.wcm.entity.Page;
+
+import org.apache.commons.lang.StringEscapeUtils;
+import org.apache.jetspeed.JetspeedActions;
+import org.apache.jetspeed.om.common.SecuredResource;
+import org.apache.jetspeed.om.page.ContentPage;
+import org.apache.jetspeed.om.page.Fragment;
+import org.apache.jetspeed.om.preference.FragmentPreference;
+import org.apache.jetspeed.page.PageManager;
+import org.apache.jetspeed.page.document.DocumentException;
+import org.apache.jetspeed.page.document.NodeException;
+import org.seasar.framework.util.StringUtil;
+import org.seasar.struts.exception.ActionMessagesException;
+
+/**
+ * @author shinsuke
+ * 
+ */
+public class ContentService implements Serializable {
+
+    private HttpServletRequest request;
+
+    private transient PageManager pageManager = null;
+
+    private transient Map<String, Fragment> fragmentCache = new HashMap<String, Fragment>();
+
+    /**
+      * @return the pageManager
+      */
+    public PageManager getPageManager() {
+        if (pageManager == null) {
+            pageManager = (PageManager) request
+                    .getAttribute(WcmConstants.PAGE_MANAGER);
+        }
+        return pageManager;
+    }
+
+    private List<Node> parseFragment(Fragment fragment, String path) {
+        List<Node> contentList = new ArrayList<Node>();
+        for (Iterator<Fragment> itr = fragment.getFragments().iterator(); itr
+                .hasNext();) {
+            Fragment f = itr.next();
+            if ("layout".equals(f.getType())) {
+                contentList.addAll(parseFragment(f, path));
+            } else {
+                // portlet
+                if ("pal-wcm::PALWcmViewer".equals(f.getName())) {
+                    Content content = new Content();
+                    content.setPath(path + WcmConstants.FRAGMENT_SEPARATOR +
+                            f.getId());
+                    content.setId(f.getId());
+                    String title = f.getName();
+                    FragmentPreference fp = getFragmentPreferenceByName(f,
+                            WcmConstants.TITLE);// TODO locale
+                    if (fp != null) {
+                        if (fp.getValueList().size() > 0) {
+                            title = StringEscapeUtils.unescapeXml((String) fp
+                                    .getValueList().get(0));
+                        }
+                    }
+                    content.setTitle(title);
+                    // TODO values from fragment preferences
+                    contentList.add(content);
+                }
+            }
+        }
+        return contentList;
+    }
+
+    public List<Node> getNodes(String path) throws WcmException {
+        if (path.indexOf(WcmConstants.FRAGMENT_SEPARATOR) != -1) {
+            throw new WcmException("errors.invalid_access",
+                    new Object[] { path }, "The path contains a fragment id: " +
+                            path);
+        } else if (path.endsWith(WcmConstants.PSML_EXTENTION)) {
+            // page
+            org.apache.jetspeed.om.page.Page parent;
+            try {
+                parent = getPageManager().getPage(path); // TODO correct path?
+            } catch (Exception e) {
+                throw new WcmException("errors.could_not_load_page",
+                        new Object[] { path }, e);
+            }
+
+            Fragment rootFragment = parent.getRootFragment();
+
+            return parseFragment(rootFragment, path);
+        } else {
+            // folder
+            org.apache.jetspeed.om.folder.Folder parent;
+            try {
+                parent = getPageManager().getFolder(path); // TODO correct path?
+            } catch (Exception e) {
+                throw new WcmException("errors.could_not_load_folder",
+                        new Object[] { path }, e);
+            }
+
+            List<Node> treeList = new ArrayList<Node>();
+            try {
+                // child folders
+                for (Iterator<org.apache.jetspeed.om.folder.Folder> ite = parent
+                        .getFolders().iterator(); ite.hasNext();) {
+                    org.apache.jetspeed.om.folder.Folder child = ite.next();
+                    if (checkFolderName(child.getName()) &&
+                            checkAccess(child, JetspeedActions.VIEW)) {
+                        Folder folder = new Folder(child.getPath());
+                        folder.setTitle(child.getTitle());// TODO locale
+                        treeList.add(folder);
+                    }
+                }
+            } catch (DocumentException e) {
+                throw new WcmException("errors.could_not_load_folder",
+                        new Object[] { path }, e);
+            }
+
+            try {
+                // child pages
+                for (Iterator<org.apache.jetspeed.om.page.Page> ite = parent
+                        .getPages().iterator(); ite.hasNext();) {
+                    org.apache.jetspeed.om.page.Page child = ite.next();
+                    if (checkAccess(child, JetspeedActions.VIEW)) {
+                        Page page = new Page(child.getPath());
+                        page.setTitle(child.getTitle());// TODO locale
+                        treeList.add(page);
+                    }
+                }
+            } catch (NodeException e) {
+                throw new WcmException("errors.could_not_load_page",
+                        new Object[] { path }, e);
+            }
+            return treeList;
+        }
+
+    }
+
+    private boolean checkFolderName(String nodeName) {
+        return true;
+    }
+
+    private boolean checkAccess(SecuredResource securedResource, String actions) {
+        try {
+            securedResource.checkAccess(actions);
+            return true;
+        } catch (SecurityException e) {
+            return false;
+        }
+    }
+
+    protected Fragment getFragmentFromCache(String path, String fragmentId)
+            throws WcmException {
+        String key = path + WcmConstants.FRAGMENT_SEPARATOR + fragmentId;
+        Fragment fragment = fragmentCache.get(key);
+        if (fragment == null) {
+            ContentPage page = null;
+            try {
+                page = getPageManager().getContentPage(path); // TODO correct path?
+            } catch (Exception e) {
+                throw new WcmException("errors.could_not_load_page",
+                        new Object[] { path }, e);
+            }
+            fragment = page.getFragmentById(fragmentId);
+            fragmentCache.put(key, fragment);
+        }
+        return fragment;
+    }
+
+    public void storeContent(String path, String fragmentId, String title,
+            String content, String localeName) throws WcmException {
+
+        if (localeName == null) {
+            localeName = "";
+        } else if (!localeName.equals("")) {
+            localeName = WcmConstants.LOCALE_SEPARETER + localeName;
+        }
+
+        // TODO check above
+
+        ContentPage page = null;
+        try {
+            page = getPageManager().getContentPage(path); // TODO correct path?
+        } catch (Exception e) {
+            throw new WcmException("errors.could_not_load_page",
+                    new Object[] { path }, e);
+        }
+        Fragment fragment = page.getFragmentById(fragmentId);
+        // cache
+        String key = path + WcmConstants.FRAGMENT_SEPARATOR + fragmentId;
+        fragmentCache.put(key, fragment);
+
+        setFragmentPreferenceValue(fragment, WcmConstants.TITLE + localeName,
+                title);
+        setFragmentPreferenceValue(fragment, WcmConstants.CONTENT + localeName,
+                content);
+
+        try {
+            pageManager.updatePage(page);
+        } catch (Exception e) {
+            throw new WcmException("errors.failed_to_update_data",
+                    new Object[] { path, fragment }, e);
+        }
+
+    }
+
+    private void setFragmentPreferenceValue(Fragment fragment, String name,
+            String value) {
+        FragmentPreference fp = getFragmentPreferenceByName(fragment, name);
+        if (fp == null) {
+            fp = pageManager.newFragmentPreference();
+            fp.setName(name);
+            fp.setReadOnly(false);
+            List list = new ArrayList();
+            list.add(StringEscapeUtils.escapeXml(value));
+            fp.setValueList(list);
+            fragment.getPreferences().add(fp);
+        } else {
+            fp.getValueList().set(0, StringEscapeUtils.escapeXml(value));
+        }
+    }
+
+    private FragmentPreference getFragmentPreferenceByName(Fragment fragment,
+            String name) {
+        if (name == null) {
+            return null;
+        }
+        List preferences = fragment.getPreferences();
+        for (Iterator ite = preferences.iterator(); ite.hasNext();) {
+            FragmentPreference fp = (FragmentPreference) ite.next();
+            if (fp.getName() != null && fp.getName().equals(name)) {
+                return fp;
+            }
+        }
+        return null;
+    }
+
+    private void removeFragmentPreferenceValue(Fragment fragment, String name) {
+        FragmentPreference fp = getFragmentPreferenceByName(fragment, name);
+        fragment.getPreferences().remove(fp);
+    }
+
+    public String getValue(String path, String fragmentId, String key,
+            String defaultValue) throws WcmException {
+        Fragment fragment = getFragmentFromCache(path, fragmentId);
+        FragmentPreference fp = getFragmentPreferenceByName(fragment, key);
+        if (fp != null) {
+            if (fp.getValueList().size() > 0) {
+                return StringEscapeUtils.unescapeXml((String) fp.getValueList()
+                        .get(0));
+            }
+        }
+        return defaultValue;
+    }
+
+    public List<String> getLocaleList(String path, String fragmentId)
+            throws WcmException {
+        List<String> localeList = new ArrayList<String>();
+
+        String localeNames = getValue(path, fragmentId,
+                WcmConstants.LOCALE_LIST, null);
+        if (localeNames != null) {
+            String[] locales = localeNames.split(",");
+            for (int i = 0; i < locales.length; i++) {
+                localeList.add(locales[i]);
+            }
+        }
+        return localeList;
+    }
+
+    public void addLocale(String path, String fragmentId, String locale)
+            throws WcmException {
+        // add locale
+        ContentPage page = null;
+        try {
+            page = getPageManager().getContentPage(path); // TODO correct path?
+        } catch (Exception e) {
+            throw new WcmException("errors.could_not_load_page",
+                    new Object[] { path }, e);
+        }
+        Fragment fragment = page.getFragmentById(fragmentId);
+        // cache
+        String key = path + WcmConstants.FRAGMENT_SEPARATOR + fragmentId;
+        fragmentCache.put(key, fragment);
+
+        // TODO check above
+
+        List<String> locales = getLocaleList(path, fragmentId);
+        if (locales.contains(locale)) {
+            throw new ActionMessagesException("errors.locale_already_exists",
+                    new Object[] { locale });
+        }
+
+        locales.add(locale);
+        Object[] objs = locales.toArray();
+        Arrays.sort(objs);
+        StringBuffer localeNames = new StringBuffer();
+        for (int i = 0; i < objs.length; i++) {
+            if (!StringUtil.isEmpty(objs[i].toString())) {
+                if (localeNames.length() > 0) {
+                    localeNames.append(",");
+                }
+                localeNames.append(objs[i].toString());
+            }
+        }
+        setFragmentPreferenceValue(fragment, WcmConstants.LOCALE_LIST,
+                localeNames.toString());
+
+        try {
+            pageManager.updatePage(page);
+        } catch (Exception e) {
+            throw new WcmException("errors.failed_to_update_data",
+                    new Object[] { path, fragment }, e);
+        }
+    }
+
+    public void deleteLocale(String path, String fragmentId, String locale)
+            throws WcmException {
+        // delete locale
+        ContentPage page = null;
+        try {
+            page = getPageManager().getContentPage(path); // TODO correct path?
+        } catch (Exception e) {
+            throw new WcmException("errors.could_not_load_page",
+                    new Object[] { path }, e);
+        }
+        Fragment fragment = page.getFragmentById(fragmentId);
+        // cache
+        String key = path + WcmConstants.FRAGMENT_SEPARATOR + fragmentId;
+        fragmentCache.put(key, fragment);
+
+        // TODO check above
+
+        List<String> locales = getLocaleList(path, fragmentId);
+        if (!locales.contains(locale)) {
+            throw new ActionMessagesException("errors.locale_does_no_exist",
+                    new Object[] { locale });
+        }
+
+        locales.remove(locale);
+        Object[] objs = locales.toArray();
+        StringBuffer localeNames = new StringBuffer();
+        for (int i = 0; i < objs.length; i++) {
+            if (i != 0) {
+                localeNames.append(",");
+            }
+            localeNames.append(objs[i].toString());
+        }
+        setFragmentPreferenceValue(fragment, WcmConstants.LOCALE_LIST,
+                localeNames.toString());
+        removeFragmentPreferenceValue(fragment, WcmConstants.TITLE +
+                WcmConstants.LOCALE_SEPARETER + locale);
+        removeFragmentPreferenceValue(fragment, WcmConstants.CONTENT +
+                WcmConstants.LOCALE_SEPARETER + locale);
+
+        try {
+            pageManager.updatePage(page);
+            //TODO i18n
+            request.setAttribute(WcmConstants.MESSAGE, "Deleted the locale. ");
+        } catch (Exception e) {
+            throw new WcmException("errors.failed_to_update_data",
+                    new Object[] { path, fragment }, e);
+        }
+    }
+
+    public HttpServletRequest getRequest() {
+        return request;
+    }
+
+    public void setRequest(HttpServletRequest request) {
+        this.request = request;
+    }
+
+}


Property changes on: pal-wcm/trunk/src/main/java/jp/sf/pal/wcm/service/ContentService.java
___________________________________________________________________
Name: svn:eol-style
   + native

Modified: pal-wcm/trunk/src/main/java/jp/sf/pal/wcm/servlet/FileconnectorServlet.java
===================================================================
--- pal-wcm/trunk/src/main/java/jp/sf/pal/wcm/servlet/FileconnectorServlet.java	2008-09-03 08:05:44 UTC (rev 1112)
+++ pal-wcm/trunk/src/main/java/jp/sf/pal/wcm/servlet/FileconnectorServlet.java	2008-09-04 02:44:24 UTC (rev 1113)
@@ -26,7 +26,7 @@
 import javax.servlet.http.HttpServletRequest;
 import javax.servlet.http.HttpServletResponse;
 
-import jp.sf.pal.wcm.PALWcmConstants;
+import jp.sf.pal.wcm.WcmConstants;
 import jp.sf.pal.wcm.util.PALWcmUtil;
 
 import org.apache.commons.fileupload.FileItem;
@@ -41,8 +41,7 @@
  * @author shinsuke
  *
  */
-public class FileconnectorServlet extends HttpServlet
-{
+public class FileconnectorServlet extends HttpServlet {
 
     /**
      * Logger for this class
@@ -60,34 +59,24 @@
      */
     @Override
     protected void doGet(HttpServletRequest req, HttpServletResponse resp)
-            throws ServletException, IOException
-    {
+            throws ServletException, IOException {
         // check login
         //        if (req.getRemoteUser() == null)
-        if (req.getSession().getAttribute(PALWcmConstants.LOGIN_USER_NAME) == null)
-        {
+        if (req.getSession().getAttribute(WcmConstants.LOGIN_USER_NAME) == null) {
             resp.sendError(HttpServletResponse.SC_FORBIDDEN,
                     "Please login to Portal.");
             return;
         }
 
-        String command = req
-                .getParameter(PALWcmConstants.COMMAND_FCKEDITOR_PARAM);
-        if (PALWcmConstants.GET_FOLDERS_FCKEDITOR_ACTION.equals(command))
-        {
+        String command = req.getParameter(WcmConstants.COMMAND_FCKEDITOR_PARAM);
+        if (WcmConstants.GET_FOLDERS_FCKEDITOR_ACTION.equals(command)) {
             doGetFolders(req, resp);
-        }
-        else if (PALWcmConstants.GET_FOLDERS_AND_FILES_FCKEDITOR_ACTION
-                .equals(command))
-        {
+        } else if (WcmConstants.GET_FOLDERS_AND_FILES_FCKEDITOR_ACTION
+                .equals(command)) {
             doGetFoldersAndFiles(req, resp);
-        }
-        else if (PALWcmConstants.CREATE_FOLDER_FCKEDITOR_ACTION.equals(command))
-        {
+        } else if (WcmConstants.CREATE_FOLDER_FCKEDITOR_ACTION.equals(command)) {
             doCreateFolder(req, resp);
-        }
-        else
-        {
+        } else {
             resp.sendError(HttpServletResponse.SC_BAD_REQUEST,
                     "Unknown action command. The command is " + command + ".");
             return;
@@ -100,26 +89,20 @@
      */
     @Override
     protected void doPost(HttpServletRequest req, HttpServletResponse resp)
-            throws ServletException, IOException
-    {
+            throws ServletException, IOException {
         // check login
         //        if (req.getRemoteUser() == null)
-        if (req.getSession().getAttribute(PALWcmConstants.LOGIN_USER_NAME) == null)
-        {
+        if (req.getSession().getAttribute(WcmConstants.LOGIN_USER_NAME) == null) {
             resp.sendError(HttpServletResponse.SC_FORBIDDEN,
                     "Please login to Portal.");
             return;
         }
 
-        String command = req
-                .getParameter(PALWcmConstants.COMMAND_FCKEDITOR_PARAM);
-        if (PALWcmConstants.FILE_UPLOAD_FCKEDITOR_ACTION.equals(command))
-        {
+        String command = req.getParameter(WcmConstants.COMMAND_FCKEDITOR_PARAM);
+        if (WcmConstants.FILE_UPLOAD_FCKEDITOR_ACTION.equals(command)) {
             // Fileupload
             doFileUpload(req, resp);
-        }
-        else
-        {
+        } else {
             doGet(req, resp);
             return;
         }
@@ -127,14 +110,12 @@
     }
 
     protected void doFileUpload(HttpServletRequest req, HttpServletResponse resp)
-            throws ServletException, IOException
-    {
+            throws ServletException, IOException {
         //      setHeader(resp);
 
         // check login
         //        if (req.getRemoteUser() == null)
-        if (req.getSession().getAttribute(PALWcmConstants.LOGIN_USER_NAME) == null)
-        {
+        if (req.getSession().getAttribute(WcmConstants.LOGIN_USER_NAME) == null) {
             printFileUploadResponse(resp.getWriter(),
                     HttpServletResponse.SC_FORBIDDEN, "", "",
                     "Please login to Portal.");
@@ -143,18 +124,16 @@
 
         // check namespace
         String namespace = req
-                .getParameter(PALWcmConstants.NAMESPACE_SERVLET_PARAM);
-        if (namespace == null)
-        {
+                .getParameter(WcmConstants.NAMESPACE_SERVLET_PARAM);
+        if (namespace == null) {
             printFileUploadResponse(resp.getWriter(),
                     HttpServletResponse.SC_BAD_REQUEST, "", "",
                     "Invalid parameters. You needs to specify a namespace.");
             return;
         }
 
-        String type = req.getParameter(PALWcmConstants.TYPE_FCKEDITOR_PARAM);
-        if (type == null)
-        {
+        String type = req.getParameter(WcmConstants.TYPE_FCKEDITOR_PARAM);
+        if (type == null) {
             printFileUploadResponse(resp.getWriter(),
                     HttpServletResponse.SC_BAD_REQUEST, "", "",
                     "Invalid parameters. You needs to specify a Type.");
@@ -162,17 +141,15 @@
         }
 
         String currentFolder = req
-                .getParameter(PALWcmConstants.CURRENT_FOLDER_FCKEDITOR_PARAM);
-        if (currentFolder == null)
-        {
+                .getParameter(WcmConstants.CURRENT_FOLDER_FCKEDITOR_PARAM);
+        if (currentFolder == null) {
             printFileUploadResponse(resp.getWriter(),
                     HttpServletResponse.SC_BAD_REQUEST, "", "",
                     "Invalid parameters. You needs to specify a CurrentFolder.");
             return;
         }
 
-        try
-        {
+        try {
             //          Create a factory for disk-based file items
             FileItemFactory factory = new DiskFileItemFactory();
 
@@ -183,11 +160,9 @@
             List /* FileItem */items = upload.parseRequest(req);
 
             Iterator ite = items.iterator();
-            while (ite.hasNext())
-            {
+            while (ite.hasNext()) {
                 FileItem item = (FileItem) ite.next();
-                if (!item.isFormField())
-                {
+                if (!item.isFormField()) {
                     String clientFullFileName = item.getName();
                     clientFullFileName = clientFullFileName.replace('\\', '/');
                     String[] pathParts = clientFullFileName.split("/");
@@ -197,25 +172,22 @@
                             .getBaseUploadDir(getServletContext());
                     PALWcmUtil.checkUploadDir(baseUploadDir, namespace, type);
 
-                    String storeFileName = baseUploadDir + "/" + namespace
-                            + "/" + type + "/" + currentFolder + "/" + fileName;
+                    String storeFileName = baseUploadDir + "/" + namespace +
+                            "/" + type + "/" + currentFolder + "/" + fileName;
                     item.write(new File(storeFileName));
 
-                    String fileUrl = req.getContextPath() + "/fileview?"
-                            + PALWcmConstants.NAMESPACE_SERVLET_PARAM + "="
-                            + namespace + "&"
-                            + PALWcmConstants.TYPE_SERVLET_PARAM + "=" + type
-                            + "&" + PALWcmConstants.NAME_SERVLET_PARAM + "="
-                            + currentFolder + "/" + fileName;
+                    String fileUrl = req.getContextPath() + "/fileview?" +
+                            WcmConstants.NAMESPACE_SERVLET_PARAM + "=" +
+                            namespace + "&" + WcmConstants.TYPE_SERVLET_PARAM +
+                            "=" + type + "&" + WcmConstants.NAME_SERVLET_PARAM +
+                            "=" + currentFolder + "/" + fileName;
 
                     printFileUploadResponse(resp.getWriter(), /*HttpServletResponse.SC_OK*/
                     0, fileUrl, fileName, "");
                     return;
                 }
             }
-        }
-        catch (Exception e)
-        {
+        } catch (Exception e) {
             printFileUploadResponse(resp.getWriter(),
                     HttpServletResponse.SC_INTERNAL_SERVER_ERROR, "", "",
                     "Internal server error. ");
@@ -230,12 +202,11 @@
     }
 
     protected void printFileUploadResponse(PrintWriter writer, int retVal,
-            String fileUrl, String fileName, String errorMessage)
-    {
-        writer.print("<script type=\"text/javascript\">\n"
-                + //
-                "window.parent.frames['frmUpload'].OnUploadCompleted( "
-                + retVal + ", '" + fileName + "') ;\n" + //
+            String fileUrl, String fileName, String errorMessage) {
+        writer.print("<script type=\"text/javascript\">\n" +
+                //
+                "window.parent.frames['frmUpload'].OnUploadCompleted( " +
+                retVal + ", '" + fileName + "') ;\n" + //
                 "</script>\n");
         //        writer.print("<script type=\"text/javascript\">\n"
         //                + //
@@ -246,49 +217,42 @@
     }
 
     protected void doGetFolders(HttpServletRequest req, HttpServletResponse resp)
-            throws ServletException, IOException
-    {
+            throws ServletException, IOException {
         setHeader(resp);
 
-        String command = req
-                .getParameter(PALWcmConstants.COMMAND_FCKEDITOR_PARAM);
+        String command = req.getParameter(WcmConstants.COMMAND_FCKEDITOR_PARAM);
         String resourceType = req
-                .getParameter(PALWcmConstants.TYPE_FCKEDITOR_PARAM);
+                .getParameter(WcmConstants.TYPE_FCKEDITOR_PARAM);
         String currentFolder = req
-                .getParameter(PALWcmConstants.CURRENT_FOLDER_FCKEDITOR_PARAM);
+                .getParameter(WcmConstants.CURRENT_FOLDER_FCKEDITOR_PARAM);
         String namespace = req
-                .getParameter(PALWcmConstants.NAMESPACE_SERVLET_PARAM);
-        if (resourceType == null || currentFolder == null || namespace == null)
-        {
+                .getParameter(WcmConstants.NAMESPACE_SERVLET_PARAM);
+        if (resourceType == null || currentFolder == null || namespace == null) {
             printError(resp, HttpServletResponse.SC_BAD_REQUEST,
                     "Type, CurrentFolder or namespace are null.");
             return;
         }
 
-        String folderUrl = req.getContextPath() + "/fileview?"
-                + PALWcmConstants.NAMESPACE_SERVLET_PARAM + "=" + namespace
-                + "&" + PALWcmConstants.TYPE_SERVLET_PARAM + "=" + resourceType
-                + "&" + PALWcmConstants.NAME_SERVLET_PARAM + "="
-                + currentFolder;
+        String folderUrl = req.getContextPath() + "/fileview?" +
+                WcmConstants.NAMESPACE_SERVLET_PARAM + "=" + namespace + "&" +
+                WcmConstants.TYPE_SERVLET_PARAM + "=" + resourceType + "&" +
+                WcmConstants.NAME_SERVLET_PARAM + "=" + currentFolder;
 
         printXMLHeader(resp, command, resourceType, currentFolder, folderUrl);
 
-        String targetDir = PALWcmUtil.getBaseUploadDir(getServletContext())
-                + "/" + namespace + "/" + resourceType + "/" + currentFolder;
+        String targetDir = PALWcmUtil.getBaseUploadDir(getServletContext()) +
+                "/" + namespace + "/" + resourceType + "/" + currentFolder;
         PrintWriter writer = resp.getWriter();
         writer.print("<Folders>");
         File dir = new File(targetDir.replaceAll("\\.\\.", "").replaceAll("/+",
                 "/"));
-        if (dir.exists())
-        {
+        if (dir.exists()) {
             File[] files = dir.listFiles();
-            for (int i = 0; i < files.length; i++)
-            {
-                if (files[i].isDirectory())
-                {
-                    writer.print("<Folder name=\""
-                            + StringEscapeUtils.escapeXml(files[i].getName())
-                            + "\" />");
+            for (int i = 0; i < files.length; i++) {
+                if (files[i].isDirectory()) {
+                    writer.print("<Folder name=\"" +
+                            StringEscapeUtils.escapeXml(files[i].getName()) +
+                            "\" />");
                 }
             }
         }
@@ -298,49 +262,42 @@
     }
 
     protected void doGetFoldersAndFiles(HttpServletRequest req,
-            HttpServletResponse resp) throws ServletException, IOException
-    {
+            HttpServletResponse resp) throws ServletException, IOException {
         setHeader(resp);
 
-        String command = req
-                .getParameter(PALWcmConstants.COMMAND_FCKEDITOR_PARAM);
+        String command = req.getParameter(WcmConstants.COMMAND_FCKEDITOR_PARAM);
         String resourceType = req
-                .getParameter(PALWcmConstants.TYPE_FCKEDITOR_PARAM);
+                .getParameter(WcmConstants.TYPE_FCKEDITOR_PARAM);
         String currentFolder = req
-                .getParameter(PALWcmConstants.CURRENT_FOLDER_FCKEDITOR_PARAM);
+                .getParameter(WcmConstants.CURRENT_FOLDER_FCKEDITOR_PARAM);
         String namespace = req
-                .getParameter(PALWcmConstants.NAMESPACE_SERVLET_PARAM);
-        if (resourceType == null || currentFolder == null || namespace == null)
-        {
+                .getParameter(WcmConstants.NAMESPACE_SERVLET_PARAM);
+        if (resourceType == null || currentFolder == null || namespace == null) {
             printError(resp, HttpServletResponse.SC_BAD_REQUEST,
                     "Type, CurrentFolder or namespace are null.");
             return;
         }
 
-        String folderUrl = req.getContextPath() + "/fileview?"
-                + PALWcmConstants.NAMESPACE_SERVLET_PARAM + "=" + namespace
-                + "&" + PALWcmConstants.TYPE_SERVLET_PARAM + "=" + resourceType
-                + "&" + PALWcmConstants.NAME_SERVLET_PARAM + "="
-                + currentFolder;
+        String folderUrl = req.getContextPath() + "/fileview?" +
+                WcmConstants.NAMESPACE_SERVLET_PARAM + "=" + namespace + "&" +
+                WcmConstants.TYPE_SERVLET_PARAM + "=" + resourceType + "&" +
+                WcmConstants.NAME_SERVLET_PARAM + "=" + currentFolder;
 
         printXMLHeader(resp, command, resourceType, currentFolder, folderUrl);
 
-        String targetDir = PALWcmUtil.getBaseUploadDir(getServletContext())
-                + "/" + namespace + "/" + resourceType + "/" + currentFolder;
+        String targetDir = PALWcmUtil.getBaseUploadDir(getServletContext()) +
+                "/" + namespace + "/" + resourceType + "/" + currentFolder;
         PrintWriter writer = resp.getWriter();
         writer.print("<Folders>");
         File dir = new File(targetDir.replaceAll("\\.\\.", "").replaceAll("/+",
                 "/"));
-        if (dir.exists())
-        {
+        if (dir.exists()) {
             File[] files = dir.listFiles();
-            for (int i = 0; i < files.length; i++)
-            {
-                if (files[i].isDirectory())
-                {
-                    writer.print("<Folder name=\""
-                            + StringEscapeUtils.escapeXml(files[i].getName())
-                            + "\" />");
+            for (int i = 0; i < files.length; i++) {
+                if (files[i].isDirectory()) {
+                    writer.print("<Folder name=\"" +
+                            StringEscapeUtils.escapeXml(files[i].getName()) +
+                            "\" />");
                 }
             }
         }
@@ -348,16 +305,13 @@
 
         //TODO refactor
         writer.print("<Files>");
-        if (dir.exists())
-        {
+        if (dir.exists()) {
             File[] files = dir.listFiles();
-            for (int i = 0; i < files.length; i++)
-            {
-                if (files[i].isFile())
-                {
-                    writer.print("<File name=\""
-                            + StringEscapeUtils.escapeXml(files[i].getName())
-                            + "\" size=\"" + files[i].length() + "\"/>");
+            for (int i = 0; i < files.length; i++) {
+                if (files[i].isFile()) {
+                    writer.print("<File name=\"" +
+                            StringEscapeUtils.escapeXml(files[i].getName()) +
+                            "\" size=\"" + files[i].length() + "\"/>");
                 }
             }
         }
@@ -368,23 +322,20 @@
     }
 
     protected void doCreateFolder(HttpServletRequest req,
-            HttpServletResponse resp) throws ServletException, IOException
-    {
+            HttpServletResponse resp) throws ServletException, IOException {
         setHeader(resp);
 
-        String command = req
-                .getParameter(PALWcmConstants.COMMAND_FCKEDITOR_PARAM);
+        String command = req.getParameter(WcmConstants.COMMAND_FCKEDITOR_PARAM);
         String resourceType = req
-                .getParameter(PALWcmConstants.TYPE_FCKEDITOR_PARAM);
+                .getParameter(WcmConstants.TYPE_FCKEDITOR_PARAM);
         String currentFolder = req
-                .getParameter(PALWcmConstants.CURRENT_FOLDER_FCKEDITOR_PARAM);
+                .getParameter(WcmConstants.CURRENT_FOLDER_FCKEDITOR_PARAM);
         String namespace = req
-                .getParameter(PALWcmConstants.NAMESPACE_SERVLET_PARAM);
+                .getParameter(WcmConstants.NAMESPACE_SERVLET_PARAM);
         String newFolderName = req
-                .getParameter(PALWcmConstants.NEW_FOLDER_NAME_FCKEDITOR_PARAM);
-        if (resourceType == null || currentFolder == null || namespace == null
-                || newFolderName == null)
-        {
+                .getParameter(WcmConstants.NEW_FOLDER_NAME_FCKEDITOR_PARAM);
+        if (resourceType == null || currentFolder == null ||
+                namespace == null || newFolderName == null) {
             printError(resp, HttpServletResponse.SC_BAD_REQUEST,
                     "Type, CurrentFolder, namespace or NewFolderName are null.");
             return;
@@ -392,38 +343,30 @@
 
         String baseUploadDir = PALWcmUtil.getBaseUploadDir(getServletContext());
         PALWcmUtil.checkUploadDir(baseUploadDir, namespace, resourceType);
-        String targetDir = baseUploadDir + "/" + namespace + "/" + resourceType
-                + "/" + currentFolder;
+        String targetDir = baseUploadDir + "/" + namespace + "/" +
+                resourceType + "/" + currentFolder;
         File dir = new File(targetDir.replaceAll("\\.\\.", "").replaceAll("/+",
                 "/"));
-        if (dir.exists())
-        {
+        if (dir.exists()) {
             File newFolder = new File(dir, newFolderName);
-            if (!newFolder.exists())
-            {
-                if (newFolder.mkdir())
-                {
-                    String folderUrl = req.getContextPath() + "/fileview?"
-                            + PALWcmConstants.NAMESPACE_SERVLET_PARAM + "="
-                            + namespace + "&"
-                            + PALWcmConstants.TYPE_SERVLET_PARAM + "="
-                            + resourceType + "&"
-                            + PALWcmConstants.NAME_SERVLET_PARAM + "="
-                            + currentFolder;
+            if (!newFolder.exists()) {
+                if (newFolder.mkdir()) {
+                    String folderUrl = req.getContextPath() + "/fileview?" +
+                            WcmConstants.NAMESPACE_SERVLET_PARAM + "=" +
+                            namespace + "&" + WcmConstants.TYPE_SERVLET_PARAM +
+                            "=" + resourceType + "&" +
+                            WcmConstants.NAME_SERVLET_PARAM + "=" +
+                            currentFolder;
 
                     printXMLHeader(resp, command, resourceType, currentFolder,
                             folderUrl);
                     printXMLFooter(resp);
-                }
-                else
-                {
+                } else {
                     printError(resp,
                             HttpServletResponse.SC_INTERNAL_SERVER_ERROR,
                             "Could not create " + targetDir + ".");
                 }
-            }
-            else
-            {
+            } else {
                 printError(resp, HttpServletResponse.SC_INTERNAL_SERVER_ERROR,
                         targetDir + " exists.");
             }
@@ -432,38 +375,34 @@
     }
 
     protected void setHeader(HttpServletResponse resp) throws ServletException,
-            IOException
-    {
+            IOException {
         resp.setContentType("text/xml;charset=UTF-8");
         resp.setHeader("progma", "no-cache");
     }
 
     protected void printXMLHeader(HttpServletResponse resp, String command,
             String resourceType, String currentFolder, String folderUrl)
-            throws ServletException, IOException
-    {
+            throws ServletException, IOException {
         PrintWriter writer = resp.getWriter();
         writer.print("<?xml version=\"1.0\" encoding=\"UTF-8\" ?>");
-        writer.print("<Connector command=\"" + command + "\" resourceType=\""
-                + resourceType + "\">");
-        writer.print("<CurrentFolder path=\"" + currentFolder + "\" url=\""
-                + StringEscapeUtils.escapeXml(folderUrl) + "\"/>");
+        writer.print("<Connector command=\"" + command + "\" resourceType=\"" +
+                resourceType + "\">");
+        writer.print("<CurrentFolder path=\"" + currentFolder + "\" url=\"" +
+                StringEscapeUtils.escapeXml(folderUrl) + "\"/>");
     }
 
     protected void printXMLFooter(HttpServletResponse resp)
-            throws ServletException, IOException
-    {
+            throws ServletException, IOException {
         PrintWriter writer = resp.getWriter();
         writer.print("</Connector>");
     }
 
     protected void printError(HttpServletResponse resp, int number, String text)
-            throws ServletException, IOException
-    {
+            throws ServletException, IOException {
         PrintWriter writer = resp.getWriter();
         writer.print("<?xml version=\"1.0\" encoding=\"UTF-8\" ?>");
-        writer.print("<Connector><Error number=\"" + number + "\" text\""
-                + StringEscapeUtils.escapeXml(text) + "\" /></Connector>");
+        writer.print("<Connector><Error number=\"" + number + "\" text\"" +
+                StringEscapeUtils.escapeXml(text) + "\" /></Connector>");
     }
 
 }

Deleted: pal-wcm/trunk/src/main/java/jp/sf/pal/wcm/servlet/FilesaveServlet.java
===================================================================
--- pal-wcm/trunk/src/main/java/jp/sf/pal/wcm/servlet/FilesaveServlet.java	2008-09-03 08:05:44 UTC (rev 1112)
+++ pal-wcm/trunk/src/main/java/jp/sf/pal/wcm/servlet/FilesaveServlet.java	2008-09-04 02:44:24 UTC (rev 1113)
@@ -1,83 +0,0 @@
-/*
- * Copyright 2005-2007 Portal Application Laboratory Project and the Others.
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *     http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, 
- * either express or implied. See the License for the specific language
- * governing permissions and limitations under the License.
- */
-package jp.sf.pal.wcm.servlet;
-
-import java.io.File;
-import java.io.FileWriter;
-import java.io.IOException;
-import java.io.PrintWriter;
-import java.util.Enumeration;
-
-import javax.servlet.ServletContext;
-import javax.servlet.ServletException;
-import javax.servlet.http.HttpServlet;
-import javax.servlet.http.HttpServletRequest;
-import javax.servlet.http.HttpServletResponse;
-
-import jp.sf.pal.wcm.PALWcmConstants;
-
-import org.apache.commons.logging.Log;
-import org.apache.commons.logging.LogFactory;
-
-/**
- * @author takaaki
- * 
- */
-public class FilesaveServlet extends HttpServlet {
-
-    private static final Log log = LogFactory.getLog(FilesaveServlet.class);
-
-    @Override
-    protected void doGet(HttpServletRequest request,
-            HttpServletResponse response) throws ServletException, IOException {
-        Enumeration params = request.getParameterNames();
-        String parameter = null;
-        String reqParam = null;
-        while (params.hasMoreElements()) {
-            parameter = (String) params.nextElement();
-            reqParam = request.getParameter(parameter);
-            ServletContext servletContext = getServletContext();           
-            String fragID = (String)servletContext.getAttribute(PALWcmConstants.FRAGMENT_ID);            
-            String outputFileName = "/content_jp.html";
-            String outputFilePath = servletContext
-                    .getRealPath("/WEB-INF/data/" + fragID);
-            File fragIdDir = new File(outputFilePath);
-            try {
-                if (!fragIdDir.exists()) {
-                    if (!fragIdDir.mkdirs()) {
-                        // fail to mkdir
-                        log.error("cannot mkdir : " + outputFilePath);
-                    }
-                }
-                FileWriter fw = new FileWriter(outputFilePath + outputFileName);
-                PrintWriter writer = new PrintWriter(fw);
-                writer.println(reqParam);
-                fw.close();
-            } catch (Exception e) {
-                log.error(e);
-                e.printStackTrace();
-            }
-        }
-        //destroy();
-        response.sendRedirect("/palportal");
-        
-    }
-
-    protected void doPost(HttpServletRequest request,
-            HttpServletResponse response) throws ServletException, IOException {
-        doGet(request, response);
-    }
-}

Modified: pal-wcm/trunk/src/main/java/jp/sf/pal/wcm/servlet/FileuploadServlet.java
===================================================================
--- pal-wcm/trunk/src/main/java/jp/sf/pal/wcm/servlet/FileuploadServlet.java	2008-09-03 08:05:44 UTC (rev 1112)
+++ pal-wcm/trunk/src/main/java/jp/sf/pal/wcm/servlet/FileuploadServlet.java	2008-09-04 02:44:24 UTC (rev 1113)
@@ -26,7 +26,7 @@
 import javax.servlet.http.HttpServletRequest;
 import javax.servlet.http.HttpServletResponse;
 
-import jp.sf.pal.wcm.PALWcmConstants;
+import jp.sf.pal.wcm.WcmConstants;
 import jp.sf.pal.wcm.util.PALWcmUtil;
 
 import org.apache.commons.fileupload.FileItem;
@@ -40,8 +40,7 @@
  * @author shinsuke
  *
  */
-public class FileuploadServlet extends HttpServlet
-{
+public class FileuploadServlet extends HttpServlet {
 
     /**
      * Logger for this class
@@ -58,8 +57,7 @@
      */
     @Override
     protected void doGet(HttpServletRequest req, HttpServletResponse resp)
-            throws ServletException, IOException
-    {
+            throws ServletException, IOException {
         printResponse(resp.getWriter(), HttpServletResponse.SC_NOT_IMPLEMENTED,
                 "", "", "GET method is not supported.");
     }
@@ -69,12 +67,10 @@
      */
     @Override
     protected void doPost(HttpServletRequest req, HttpServletResponse resp)
-            throws ServletException, IOException
-    {
+            throws ServletException, IOException {
         // check login
         //        if (req.getRemoteUser() == null)
-        if (req.getSession().getAttribute(PALWcmConstants.LOGIN_USER_NAME) == null)
-        {
+        if (req.getSession().getAttribute(WcmConstants.LOGIN_USER_NAME) == null) {
             printResponse(resp.getWriter(), HttpServletResponse.SC_FORBIDDEN,
                     "", "", "Please login to Portal.");
             return;
@@ -82,25 +78,22 @@
 
         // check namespace
         String namespace = req
-                .getParameter(PALWcmConstants.NAMESPACE_SERVLET_PARAM);
-        if (namespace == null)
-        {
+                .getParameter(WcmConstants.NAMESPACE_SERVLET_PARAM);
+        if (namespace == null) {
             printResponse(resp.getWriter(), HttpServletResponse.SC_BAD_REQUEST,
                     "", "",
                     "Invalid parameters. You needs to specify a namespace.");
             return;
         }
 
-        String type = req.getParameter(PALWcmConstants.TYPE_SERVLET_PARAM);
-        if (type == null)
-        {
+        String type = req.getParameter(WcmConstants.TYPE_SERVLET_PARAM);
+        if (type == null) {
             printResponse(resp.getWriter(), HttpServletResponse.SC_BAD_REQUEST,
                     "", "", "Invalid parameters. You needs to specify a type.");
             return;
         }
 
-        try
-        {
+        try {
             //          Create a factory for disk-based file items
             FileItemFactory factory = new DiskFileItemFactory();
 
@@ -111,11 +104,9 @@
             List /* FileItem */items = upload.parseRequest(req);
 
             Iterator ite = items.iterator();
-            while (ite.hasNext())
-            {
+            while (ite.hasNext()) {
                 FileItem item = (FileItem) ite.next();
-                if (!item.isFormField())
-                {
+                if (!item.isFormField()) {
                     String clientFullFileName = item.getName();
                     clientFullFileName = clientFullFileName.replace('\\', '/');
                     String[] pathParts = clientFullFileName.split("/");
@@ -125,25 +116,22 @@
                             .getBaseUploadDir(getServletContext());
                     PALWcmUtil.checkUploadDir(baseUploadDir, namespace, type);
 
-                    String storeFileName = baseUploadDir + "/" + namespace
-                            + "/" + type + "/" + fileName;
+                    String storeFileName = baseUploadDir + "/" + namespace +
+                            "/" + type + "/" + fileName;
                     item.write(new File(storeFileName));
 
-                    String fileUrl = req.getContextPath() + "/fileview?"
-                            + PALWcmConstants.NAMESPACE_SERVLET_PARAM + "="
-                            + namespace + "&"
-                            + PALWcmConstants.TYPE_SERVLET_PARAM + "=" + type
-                            + "&" + PALWcmConstants.NAME_SERVLET_PARAM + "="
-                            + fileName;
+                    String fileUrl = req.getContextPath() + "/fileview?" +
+                            WcmConstants.NAMESPACE_SERVLET_PARAM + "=" +
+                            namespace + "&" + WcmConstants.TYPE_SERVLET_PARAM +
+                            "=" + type + "&" + WcmConstants.NAME_SERVLET_PARAM +
+                            "=" + fileName;
 
                     printResponse(resp.getWriter(), /*HttpServletResponse.SC_OK*/
                     0, fileUrl, fileName, "");
                     return;
                 }
             }
-        }
-        catch (Exception e)
-        {
+        } catch (Exception e) {
             printResponse(resp.getWriter(),
                     HttpServletResponse.SC_INTERNAL_SERVER_ERROR, "", "",
                     "Internal server error. ");
@@ -157,12 +145,11 @@
     }
 
     protected void printResponse(PrintWriter writer, int retVal,
-            String fileUrl, String fileName, String errorMessage)
-    {
-        writer.print("<script type=\"text/javascript\">\n"
-                + "window.parent.OnUploadCompleted( " + retVal + ", '"
-                + fileUrl + "', '" + fileName + "','" + errorMessage + "') ;\n"
-                + "</script>");
+            String fileUrl, String fileName, String errorMessage) {
+        writer.print("<script type=\"text/javascript\">\n" +
+                "window.parent.OnUploadCompleted( " + retVal + ", '" + fileUrl +
+                "', '" + fileName + "','" + errorMessage + "') ;\n" +
+                "</script>");
     }
 
 }

Modified: pal-wcm/trunk/src/main/java/jp/sf/pal/wcm/servlet/FileviewServlet.java
===================================================================
--- pal-wcm/trunk/src/main/java/jp/sf/pal/wcm/servlet/FileviewServlet.java	2008-09-03 08:05:44 UTC (rev 1112)
+++ pal-wcm/trunk/src/main/java/jp/sf/pal/wcm/servlet/FileviewServlet.java	2008-09-04 02:44:24 UTC (rev 1113)
@@ -26,7 +26,7 @@
 import javax.servlet.http.HttpServletResponse;
 
 import jp.sf.pal.common.util.DownloadUtil;
-import jp.sf.pal.wcm.PALWcmConstants;
+import jp.sf.pal.wcm.WcmConstants;
 import jp.sf.pal.wcm.util.PALWcmUtil;
 
 import org.apache.commons.logging.Log;
@@ -36,8 +36,7 @@
  * @author shinsuke
  *
  */
-public class FileviewServlet extends HttpServlet
-{
+public class FileviewServlet extends HttpServlet {
     /**
      * Logger for this class
      */
@@ -53,57 +52,45 @@
      */
     @Override
     protected void doGet(HttpServletRequest req, HttpServletResponse resp)
-            throws ServletException, IOException
-    {
+            throws ServletException, IOException {
         String namespace = req
-                .getParameter(PALWcmConstants.NAMESPACE_SERVLET_PARAM);
-        String type = req.getParameter(PALWcmConstants.TYPE_SERVLET_PARAM);
-        String name = req.getParameter(PALWcmConstants.NAME_SERVLET_PARAM);
-        if (namespace == null || type == null || name == null)
-        {
+                .getParameter(WcmConstants.NAMESPACE_SERVLET_PARAM);
+        String type = req.getParameter(WcmConstants.TYPE_SERVLET_PARAM);
+        String name = req.getParameter(WcmConstants.NAME_SERVLET_PARAM);
+        if (namespace == null || type == null || name == null) {
             resp.sendError(HttpServletResponse.SC_NOT_FOUND,
                     "namespace or path are null.");
             return;
         }
 
-        String targetPath = PALWcmUtil.getBaseUploadDir(getServletContext())
-                + "/" + namespace + "/" + type + "/" + name;
+        String targetPath = PALWcmUtil.getBaseUploadDir(getServletContext()) +
+                "/" + namespace + "/" + type + "/" + name;
         File targetFile = new File(targetPath.replaceAll("\\.\\.", "")
                 .replaceAll("/+", "/"));
 
-        if (targetFile.exists())
-        {
+        if (targetFile.exists()) {
             // mime type
             String mimeType = DownloadUtil.getMimeType(getServletContext(),
                     name);
-            if (mimeType == null)
-            {
+            if (mimeType == null) {
                 mimeType = DownloadUtil.OCTET_STREAM;
             }
             // store
             InputStream is = null;
-            try
-            {
+            try {
                 is = new FileInputStream(targetFile);
                 DownloadUtil.writeResponse(req, resp, mimeType, name, is);
-            }
-            catch (IOException e)
-            {
+            } catch (IOException e) {
                 throw e;
-            }
-            finally
-            {
-                if (is != null)
-                {
+            } finally {
+                if (is != null) {
                     is.close();
                 }
             }
+        } else {
+            resp.sendError(HttpServletResponse.SC_NOT_FOUND, targetPath +
+                    " was not found.");
         }
-        else
-        {
-            resp.sendError(HttpServletResponse.SC_NOT_FOUND, targetPath
-                    + " was not found.");
-        }
     }
 
     /* (non-Javadoc)
@@ -111,8 +98,7 @@
      */
     @Override
     protected void doPost(HttpServletRequest req, HttpServletResponse resp)
-            throws ServletException, IOException
-    {
+            throws ServletException, IOException {
         doGet(req, resp);
     }
 

Modified: pal-wcm/trunk/src/main/java/jp/sf/pal/wcm/util/PALWcmUtil.java
===================================================================
--- pal-wcm/trunk/src/main/java/jp/sf/pal/wcm/util/PALWcmUtil.java	2008-09-03 08:05:44 UTC (rev 1112)
+++ pal-wcm/trunk/src/main/java/jp/sf/pal/wcm/util/PALWcmUtil.java	2008-09-04 02:44:24 UTC (rev 1113)
@@ -16,75 +16,97 @@
 package jp.sf.pal.wcm.util;
 
 import java.io.File;
+import java.io.UnsupportedEncodingException;
+import java.net.URLDecoder;
+import java.net.URLEncoder;
 
 import javax.portlet.PortletContext;
 import javax.servlet.ServletContext;
 
-import jp.sf.pal.wcm.PALWcmConstants;
+import jp.sf.pal.wcm.WcmConstants;
 
 /**
  * @author shinsuke
  *
  */
-public class PALWcmUtil
-{
-    public static String getMimeType(Object context, String filename)
-    {
-        if (context instanceof ServletContext)
-        {
+public class PALWcmUtil {
+    public static String getMimeType(Object context, String filename) {
+        if (context instanceof ServletContext) {
             ServletContext servletContext = (ServletContext) context;
             return servletContext.getMimeType(filename);
-        }
-        else if (context instanceof PortletContext)
-        {
+        } else if (context instanceof PortletContext) {
             PortletContext portletContext = (PortletContext) context;
             return portletContext.getMimeType(filename);
         }
         return null;
     }
 
-    public static String getBaseUploadDir(ServletContext servletContext)
-    {
+    public static String getBaseUploadDir(ServletContext servletContext) {
         String uploadDir = servletContext
-                .getInitParameter(PALWcmConstants.UPLOAD_DIRECTORY_PARAM);
-        if (uploadDir == null)
-        {
+                .getInitParameter(WcmConstants.UPLOAD_DIRECTORY_PARAM);
+        if (uploadDir == null) {
             uploadDir = servletContext
-                    .getRealPath(PALWcmConstants.DEFAULT_UPLOAD_DIR);
+                    .getRealPath(WcmConstants.DEFAULT_UPLOAD_DIR);
         }
         return uploadDir;
     }
 
     public static boolean checkUploadDir(String baseDir, String namespace,
-            String type)
-    {
+            String type) {
         File baseUploadDir = new File(baseDir);
-        if (!baseUploadDir.exists())
-        {
-            if (!baseUploadDir.mkdir())
-            {
+        if (!baseUploadDir.exists()) {
+            if (!baseUploadDir.mkdir()) {
                 return false;
             }
         }
 
         File namespaceDir = new File(baseDir + "/" + namespace);
-        if (!namespaceDir.exists())
-        {
-            if (!namespaceDir.mkdir())
-            {
+        if (!namespaceDir.exists()) {
+            if (!namespaceDir.mkdir()) {
                 return false;
             }
         }
 
         File typeDir = new File(namespaceDir, type);
-        if (!typeDir.exists())
-        {
-            if (!typeDir.mkdir())
-            {
+        if (!typeDir.exists()) {
+            if (!typeDir.mkdir()) {
                 return false;
             }
         }
 
         return true;
     }
+
+    public static String urlEncodePath(String path) {
+        try {
+            return URLEncoder.encode(encodePath(path), "UTF-8");
+        } catch (UnsupportedEncodingException e) {
+            throw new IllegalStateException(e);
+        }
+    }
+
+    public static String encodePath(String path) {
+//        try {
+//            return URLEncoder.encode(path, "UTF-8");
+//        } catch (UnsupportedEncodingException e) {
+//            throw new IllegalStateException(e);
+//        }
+        if (path != null) {
+            return path.replaceFirst(WcmConstants.PSML_EXTENTION, "__PSML__");//.replaceFirst(PALWcmConstants.FRAGMENT_SEPARATOR, "__F_SEPA__");
+        }
+        return null;
+    }
+
+    public static String urlDecodePath(String path) {
+        try {
+            path = URLDecoder.decode(path, "UTF-8");
+            if (path != null) {
+                return path.replaceFirst("__PSML__",
+                        WcmConstants.PSML_EXTENTION);//.replaceFirst("__F_SEPA__", PALWcmConstants.FRAGMENT_SEPARATOR);
+            }
+            return null;
+        } catch (UnsupportedEncodingException e) {
+            throw new IllegalStateException(e);
+        }
+    }
 }

Added: pal-wcm/trunk/src/main/resources/app.dicon
===================================================================
--- pal-wcm/trunk/src/main/resources/app.dicon	                        (rev 0)
+++ pal-wcm/trunk/src/main/resources/app.dicon	2008-09-04 02:44:24 UTC (rev 1113)
@@ -0,0 +1,10 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE components PUBLIC "-//SEASAR//DTD S2Container 2.4//EN"
+	"http://www.seasar.org/dtd/components24.dtd">
+<components>
+	<include path="convention.dicon"/>
+	<include path="aop.dicon"/>
+    <include path="j2ee.dicon"/>
+
+    <component name="actionMessagesThrowsInterceptor" class="org.seasar.struts.interceptor.ActionMessagesThrowsInterceptor"/>
+</components>

Added: pal-wcm/trunk/src/main/resources/application.properties
===================================================================
--- pal-wcm/trunk/src/main/resources/application.properties	                        (rev 0)
+++ pal-wcm/trunk/src/main/resources/application.properties	2008-09-04 02:44:24 UTC (rev 1113)
@@ -0,0 +1,37 @@
+errors.header=<ul>
+errors.footer=</ul>
+errors.prefix=<li style="portlet-msg-error">
+errors.suffix=</li>
+msg.header=<ul>
+msg.footer=</ul>
+
+errors.invalid={0} is invalid.
+errors.maxlength={0} can not be greater than {1} characters.
+errors.minlength={0} can not be less than {1} characters.
+errors.maxbytelength={0} can not be greater than {1} bytes.
+errors.minbytelength={0} can not be less than {1} bytes.
+errors.range={0} is not in the range {1} through {2}.
+errors.required={0} is required.
+errors.required.other={0} is required ({1}). 
+errors.byte={0} must be an byte.
+errors.date={0} is not a date.
+errors.double={0} must be an double.
+errors.float={0} must be an float.
+errors.integer={0} must be an integer.
+errors.long={0} must be an long.
+errors.short={0} must be an short.
+errors.creditcard={0} is not a valid credit card number.
+errors.email={0} is an invalid e-mail address.
+errors.url={0} is an invalid url (web address).
+labels.name=Name
+
+success.store_content=Saved the content.
+success.add_locale=Added the locale.
+success.delete_locale=Deleted the locale.
+
+errors.could_not_load_folder=Could not load folders: {0}
+errors.could_not_load_page=Could not load pages: {0}
+errors.failed_to_update_data=Failed to update data: {1} on {0}
+errors.locale_already_exists=Locale({0}) already exists.
+errors.locale_does_no_exist=Locale({0}) does not exist.
+errors.locale_is_null=Locale is required.
\ No newline at end of file


Property changes on: pal-wcm/trunk/src/main/resources/application.properties
___________________________________________________________________
Name: svn:eol-style
   + native

Added: pal-wcm/trunk/src/main/resources/application_ja.properties
===================================================================
--- pal-wcm/trunk/src/main/resources/application_ja.properties	                        (rev 0)
+++ pal-wcm/trunk/src/main/resources/application_ja.properties	2008-09-04 02:44:24 UTC (rev 1113)
@@ -0,0 +1,28 @@
+
+errors.invalid={0}\u304c\u4e0d\u6b63\u3067\u3059\u3002
+errors.maxlength={0}\u306e\u9577\u3055\u304c\u6700\u5927\u5024({1})\u3092\u8d85\u3048\u3066\u3044\u307e\u3059\u3002
+errors.minlength={0}\u306e\u9577\u3055\u304c\u6700\u5c0f\u5024({1})\u672a\u6e80\u3067\u3059\u3002
+errors.maxbytelength={0}\u306e\u30d0\u30a4\u30c8\u9577\u304c\u6700\u5927\u5024({1})\u3092\u8d85\u3048\u3066\u3044\u307e\u3059\u3002
+errors.minbytelength={0}\u306e\u30d0\u30a4\u30c8\u9577\u304c\u6700\u5c0f\u5024({1})\u672a\u6e80\u3067\u3059\u3002
+errors.range={0}\u306f{1}\u3068{2}\u306e\u9593\u3067\u306a\u3051\u308c\u3070\u3044\u3051\u307e\u305b\u3093\u3002
+errors.required={0}\u306f\u5fc5\u9808\u3067\u3059\u3002
+errors.byte={0}\u306f\u30d0\u30a4\u30c8\u3067\u306a\u3051\u308c\u3070\u3044\u3051\u307e\u305b\u3093\u3002
+errors.date={0}\u306f\u65e5\u4ed8\u3067\u306a\u3051\u308c\u3070\u3044\u3051\u307e\u305b\u3093
+errors.double={0}\u306f\u500d\u7cbe\u5ea6\u5b9f\u6570\u3067\u306a\u3051\u308c\u3070\u3044\u3051\u307e\u305b\u3093\u3002
+errors.float={0}\u306f\u5358\u7cbe\u5ea6\u5b9f\u6570\u3067\u306a\u3051\u308c\u3070\u3044\u3051\u307e\u305b\u3093\u3002
+errors.integer={0}\u306f\u6574\u6570\u3067\u306a\u3051\u308c\u3070\u3044\u3051\u307e\u305b\u3093\u3002
+errors.long={0}\u306f\u9577\u6574\u6570\u3067\u306a\u3051\u308c\u3070\u3044\u3051\u307e\u305b\u3093\u3002
+errors.short={0}\u306f\u77ed\u6574\u6570\u3067\u306a\u3051\u308c\u3070\u3044\u3051\u307e\u305b\u3093\u3002
+errors.creditcard={0}\u306f\u30af\u30ec\u30b8\u30c3\u30c8\u30ab\u30fc\u30c9\u756a\u53f7\u3068\u3057\u3066\u4e0d\u6b63\u3067\u3059\u3002
+errors.email={0}\u306f\u30e1\u30fc\u30eb\u30a2\u30c9\u30ec\u30b9\u3068\u3057\u3066\u4e0d\u6b63\u3067\u3059\u3002
+errors.url={0}\u306fURL\u3068\u3057\u3066\u4e0d\u6b63\u3067\u3059\u3002
+
+errors.required.other={0}\u306f{1}\u304c\u5165\u529b\u3055\u308c\u305f\u3068\u304d\u306f\u5fc5\u9808\u3067\u3059\u3002 
+errors.phone={0}\u306f\u96fb\u8a71\u756a\u53f7({1})\u3068\u3057\u3066\u4e0d\u6b63\u3067\u3059\u3002
+errors.norole=\u9069\u5207\u306a\u30ed\u30fc\u30eb\u304c\u3042\u308a\u307e\u305b\u3093\u3002
+errors.debug=\u4f8b\u5916\u306e\u30c7\u30d0\u30c3\u30b0\u7528\u3002
+errors.upload.size=\u4e0a\u9650\u304c{0}\u30d0\u30a4\u30c8\u306a\u306e\u306b\u5b9f\u969b\u306f{1}\u30d0\u30a4\u30c8\u3060\u3063\u305f\u306e\u3067\u30a2\u30c3\u30d7\u30ed\u30fc\u30c9\u3067\u304d\u307e\u305b\u3093\u3067\u3057\u305f\u3002
+
+messages.upload.complete={0}\u306b\u30a2\u30c3\u30d7\u30ed\u30fc\u30c9\u3057\u307e\u3057\u305f\u3002
+
+#labels.byteText=\u30d0\u30a4\u30c8\u30c6\u30ad\u30b9\u30c8


Property changes on: pal-wcm/trunk/src/main/resources/application_ja.properties
___________________________________________________________________
Name: svn:eol-style
   + native

Added: pal-wcm/trunk/src/main/resources/convention.dicon
===================================================================
--- pal-wcm/trunk/src/main/resources/convention.dicon	                        (rev 0)
+++ pal-wcm/trunk/src/main/resources/convention.dicon	2008-09-04 02:44:24 UTC (rev 1113)
@@ -0,0 +1,11 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE components PUBLIC "-//SEASAR//DTD S2Container 2.4//EN" 
+	"http://www.seasar.org/dtd/components24.dtd">
+<components>
+	<component class="org.seasar.framework.convention.impl.NamingConventionImpl">
+		<initMethod name="addRootPackageName">
+			<arg>"jp.sf.pal.wcm"</arg>
+		</initMethod>
+	</component>
+	<component class="org.seasar.framework.convention.impl.PersistenceConventionImpl"/>
+</components>

Added: pal-wcm/trunk/src/main/resources/creator.dicon
===================================================================
--- pal-wcm/trunk/src/main/resources/creator.dicon	                        (rev 0)
+++ pal-wcm/trunk/src/main/resources/creator.dicon	2008-09-04 02:44:24 UTC (rev 1113)
@@ -0,0 +1,13 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE components PUBLIC "-//SEASAR//DTD S2Container 2.4//EN" 
+    "http://www.seasar.org/dtd/components24.dtd">
+<components>
+    <include path="convention.dicon"/>
+    <include path="customizer.dicon"/>
+	
+    <component class="org.seasar.framework.container.creator.ActionCreator"/>
+    <component class="org.seasar.struts.creator.FormCreator"/>
+    <component class="org.seasar.framework.container.creator.ServiceCreator"/>
+    <!--component class="org.seasar.framework.container.creator.DtoCreator"/-->
+    <component class="org.seasar.framework.container.creator.InterceptorCreator"/>
+</components>

Added: pal-wcm/trunk/src/main/resources/customizer.dicon
===================================================================
--- pal-wcm/trunk/src/main/resources/customizer.dicon	                        (rev 0)
+++ pal-wcm/trunk/src/main/resources/customizer.dicon	2008-09-04 02:44:24 UTC (rev 1113)
@@ -0,0 +1,46 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE components PUBLIC "-//SEASAR//DTD S2Container 2.4//EN" 
+    "http://www.seasar.org/dtd/components24.dtd">
+<components>
+    <include path="default-customizer.dicon"/>
+	
+    <component name="actionCustomizer"
+        class="org.seasar.framework.container.customizer.CustomizerChain">
+        <initMethod name="addAspectCustomizer">
+            <arg>"aop.traceInterceptor"</arg>
+        </initMethod>
+        <initMethod name="addAspectCustomizer">
+            <arg>"actionMessagesThrowsInterceptor"</arg>
+        </initMethod>
+        <initMethod name="addCustomizer">
+            <arg>
+                <component
+                    class="org.seasar.framework.container.customizer.TxAttributeCustomizer"/>
+            </arg>
+        </initMethod>
+        <initMethod name="addCustomizer">
+            <arg>
+                <component
+                    class="org.seasar.struts.customizer.ActionCustomizer"/>
+            </arg>
+        </initMethod>
+    </component>
+    
+    <component name="formCustomizer"
+        class="org.seasar.framework.container.customizer.CustomizerChain">
+    </component>
+	
+    <component name="serviceCustomizer"
+        class="org.seasar.framework.container.customizer.CustomizerChain">
+        <initMethod name="addAspectCustomizer">
+            <arg>"aop.traceInterceptor"</arg>
+        </initMethod>
+        <initMethod name="addCustomizer">
+            <arg>
+                <component
+                    class="org.seasar.framework.container.customizer.TxAttributeCustomizer"/>
+            </arg>
+        </initMethod>
+    </component>
+
+</components>

Added: pal-wcm/trunk/src/main/resources/env.txt
===================================================================
--- pal-wcm/trunk/src/main/resources/env.txt	                        (rev 0)
+++ pal-wcm/trunk/src/main/resources/env.txt	2008-09-04 02:44:24 UTC (rev 1113)
@@ -0,0 +1 @@
+ct
\ No newline at end of file


Property changes on: pal-wcm/trunk/src/main/resources/env.txt
___________________________________________________________________
Name: svn:eol-style
   + native

Added: pal-wcm/trunk/src/main/resources/env_ut.txt
===================================================================
--- pal-wcm/trunk/src/main/resources/env_ut.txt	                        (rev 0)
+++ pal-wcm/trunk/src/main/resources/env_ut.txt	2008-09-04 02:44:24 UTC (rev 1113)
@@ -0,0 +1 @@
+ut
\ No newline at end of file


Property changes on: pal-wcm/trunk/src/main/resources/env_ut.txt
___________________________________________________________________
Name: svn:eol-style
   + native

Added: pal-wcm/trunk/src/main/resources/jdbc.dicon
===================================================================
--- pal-wcm/trunk/src/main/resources/jdbc.dicon	                        (rev 0)
+++ pal-wcm/trunk/src/main/resources/jdbc.dicon	2008-09-04 02:44:24 UTC (rev 1113)
@@ -0,0 +1,171 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE components PUBLIC "-//SEASAR2.1//DTD S2Container//EN"
+	"http://www.seasar.org/dtd/components21.dtd">
+<components namespace="jdbc">
+	<include path="jta.dicon"/>
+
+	<!-- for HSQLDB -->
+	<!--
+	<component name="xaDataSource"
+		class="org.seasar.extension.dbcp.impl.XADataSourceImpl">
+		<property name="driverClassName">
+			"org.hsqldb.jdbcDriver"
+		</property>
+		<property name="URL">
+			"jdbc:hsqldb:file:"
+				+ @org.seasar.framework.util.ResourceUtil @ getBuildDir('app.dicon').getCanonicalPath()
+				+ "/data/test"
+		</property>
+		<property name="user">"sa"</property>
+		<property name="password">""</property>
+	</component>
+	-->
+	
+	<!-- for H2 -->
+	<!--
+	<component name="xaDataSource"
+		class="org.seasar.extension.dbcp.impl.XADataSourceImpl">
+		<property name="driverClassName">
+			"org.h2.Driver"
+		</property>
+		<property name="URL">
+			"jdbc:h2:file:"
+				+ @org.seasar.framework.util.ResourceUtil @ getBuildDir(@examples.entity.JdbcManagerTest @ class).getCanonicalPath()
+				+ "/data/demo;DB_CLOSE_ON_EXIT=FALSE"
+		</property>
+		<property name="user">"sa"</property>
+		<property name="password"></property>
+	</component>
+	-->
+	
+	<!-- for Oracle -->
+	<!--
+	<component name="xaDataSource"
+		class="org.seasar.extension.dbcp.impl.XADataSourceImpl">
+		<property name="driverClassName">
+			"oracle.jdbc.driver.OracleDriver"
+		</property>
+		<property name="URL">
+			"jdbc:oracle:thin:@xxx:1521:xxx"
+		</property>
+		<property name="user">"xxx"</property>
+		<property name="password">"xxx"</property>
+	</component>
+	-->
+
+	<!-- for DB2 -->
+	<!--
+	<component name="xaDataSource"
+		class="org.seasar.extension.dbcp.impl.XADataSourceImpl">
+		<property name="driverClassName">
+			"com.ibm.db2.jcc.DB2Driver"
+		</property>
+		<property name="URL">
+			"jdbc:db2://foo.bar.com:50000/SAMPLE"
+		</property>
+		<property name="user">"db2user"</property>
+		<property name="password">"db2password"</property>
+		<initMethod name="addProperty">
+			<arg>"currentSchema"</arg>
+			<arg>"SCHEMA"</arg>
+		</initMethod>
+	</component>
+	-->
+	
+	<!-- for PostgreSQL -->
+	<!--
+	<component name="xaDataSource"
+		class="org.seasar.extension.dbcp.impl.XADataSourceImpl">
+		<property name="driverClassName">
+			"org.postgresql.Driver"
+        </property>
+        <property name="URL">
+          "jdbc:postgresql://localhost/TEST"
+        </property>
+        <property name="user">"xxxx"</property>
+        <property name="password">"xxxx"</property>
+    </component>
+    -->
+
+	<!-- MySQL
+	- MySQL4.0以下でマルチバイト文字を扱う場合には,URL指定の後に,
+		以下の接続パラメータを追加で指定してください.
+		useUnicode=true
+		characterEncoding=[MySQLのエンコーディングに対応した
+		Javaのエンコーディング名]
+		例:"jdbc:mysql://localhost:3306/test?useUnicode=true" +
+		"&amp;characterEncoding=Windows-31J"
+		
+	- MySQL5.0以降で,エンコーディングがeucjpmsの列を扱う場合には,
+		URL指定の後に,以下の接続パラメータを追加で指定してください.
+		characterEncoding=UTF-8またはWindows-31J
+		characterSetResults=UTF-8またはWindows-31J
+		例:"jdbc:mysql://localhost:3306/test?characterEncoding=UTF-8" +
+		"&amp;characterSetResults=UTF-8"
+		この指定をしない場合,Java側でUCS-2⇔EUC_JP_Solarisの変換が
+		行なわれるため,ユーザー定義外字などの一部の文字が化けます.
+		この指定をすることで,MySQL側でeucjpms⇔ucs2⇔utf8(cp932)の
+		変換が行なわれ,Java側でUCS-2⇔UTF-8(Windows-31J)の変換が
+		行なわれるようになります.この結果,文字化けを防げます.
+		なおJIS X 0212(補助漢字)を使用する場合は,Windows-31Jではなく
+		UTF-8を指定する必要があります.
+		
+	- 上記以外の場合は,my.cnfでdefault-character-setの設定を適切に
+		(cp932やutf8など.デフォルトのlatin1は不可)行なっていれば,
+		文字化けは防げます.
+	<component name="xaDataSource"
+		class="org.seasar.extension.dbcp.impl.XADataSourceImpl">
+		<property name="driverClassName">
+			"com.mysql.jdbc.Driver"
+		</property>
+		<property name="URL">
+			"jdbc:mysql://localhost:3306/test"
+		</property>
+		<property name="user">"xxx"</property>
+		<property name="password">"xxx"</property>
+	</component>
+	-->
+
+	<!-- for SQLServer -->
+	<!--
+	<component name="xaDataSource"
+		class="org.seasar.extension.dbcp.impl.XADataSourceImpl">
+		<property name="driverClassName">
+			"net.sourceforge.jtds.jdbc.Driver"
+        </property>
+        <property name="URL">
+            "jdbc:jtds:sqlserver://localhost/TEST;instance=SQLEXPRESS"
+        </property>
+        <property name="user">"xxxx"</property>
+        <property name="password">"xxxx"</property>
+    </component>
+	-->
+
+	<!--
+	<component name="connectionPool"
+		class="org.seasar.extension.dbcp.impl.ConnectionPoolImpl">
+		<property name="timeout">600</property>
+		<property name="maxPoolSize">10</property>
+		<property name="allowLocalTx">true</property>
+		<destroyMethod name="close"/>
+	</component>
+
+	<component name="DataSource"
+		class="org.seasar.extension.dbcp.impl.DataSourceImpl"
+	/>
+	-->
+
+	<!-- from JNDI -->
+	<!--
+	<component name="DataSource"
+		class="javax.sql.DataSource">
+		@org.seasar.extension.j2ee.JndiResourceLocator @ lookup("java:comp/env/jdbc/DataSource")
+	</component>
+	-->
+
+	<!--
+	<component name="dataSource"
+		class="org.seasar.extension.datasource.impl.SelectableDataSourceProxy"/>
+	-->
+
+</components>

Added: pal-wcm/trunk/src/main/resources/s2container.dicon
===================================================================
--- pal-wcm/trunk/src/main/resources/s2container.dicon	                        (rev 0)
+++ pal-wcm/trunk/src/main/resources/s2container.dicon	2008-09-04 02:44:24 UTC (rev 1113)
@@ -0,0 +1,8 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE components PUBLIC "-//SEASAR//DTD S2Container 2.4//EN" 
+	"http://www.seasar.org/dtd/components24.dtd">
+<components>
+    <include condition="#ENV == 'ut'" path="warmdeploy.dicon"/>
+    <include condition="#ENV == 'ct'" path="hotdeploy.dicon"/>
+    <include condition="#ENV != 'ut' and #ENV != 'ct'" path="cooldeploy.dicon"/>
+</components>
\ No newline at end of file

Modified: pal-wcm/trunk/src/main/webapp/WEB-INF/jetspeed-portlet.xml
===================================================================
--- pal-wcm/trunk/src/main/webapp/WEB-INF/jetspeed-portlet.xml	2008-09-03 08:05:44 UTC (rev 1112)
+++ pal-wcm/trunk/src/main/webapp/WEB-INF/jetspeed-portlet.xml	2008-09-04 02:44:24 UTC (rev 1113)
@@ -1,19 +1,18 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <!--
-Licensed to the Apache Software Foundation (ASF) under one or more
-contributor license agreements.  See the NOTICE file distributed with
-this work for additional information regarding copyright ownership.
-The ASF licenses this file to You under the Apache License, Version 2.0
-(the "License"); you may not use this file except in compliance with
-the License.  You may obtain a copy of the License at
-
-    http://www.apache.org/licenses/LICENSE-2.0
-
-Unless required by applicable law or agreed to in writing, software
-distributed under the License is distributed on an "AS IS" BASIS,
-WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-See the License for the specific language governing permissions and
-limitations under the License.
+ * Copyright 2004-2008 PAL Project and the Others.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND,
+ * either express or implied. See the License for the specific language
+ * governing permissions and limitations under the License.
 -->
 <portlet-app id="pal-wcm" version="1.0" 
     xmlns="http://portals.apache.org/jetspeed" 
@@ -26,8 +25,16 @@
     <dc:title xml:lang="ja">PALポータル用 WCM ポートレット</dc:title>
     <dc:creator>PAL Team</dc:creator>
 
+    <portlet>
+        <portlet-name>PALWcmEditor</portlet-name>
+        <js:security-constraint-ref>AEUV</js:security-constraint-ref>
+        <js:metadata name="merge.portal.parameters.with.portlet.parameters">true</js:metadata>
+        <js:metadata name="merge.portal.parameters.before.portlet.parameters">true</js:metadata>
+    </portlet>
+
 	<js:services>
         <js:service name='PageManager'/>
+        <js:service name="PortletRegistryComponent"/>
 	</js:services>
 	
 </portlet-app>

Deleted: pal-wcm/trunk/src/main/webapp/WEB-INF/lib/FCKeditor-2.3.jar
===================================================================
(Binary files differ)

Deleted: pal-wcm/trunk/src/main/webapp/WEB-INF/lib/commons-fileupload-1.2.1.jar
===================================================================
(Binary files differ)

Modified: pal-wcm/trunk/src/main/webapp/WEB-INF/portlet.xml
===================================================================
--- pal-wcm/trunk/src/main/webapp/WEB-INF/portlet.xml	2008-09-03 08:05:44 UTC (rev 1112)
+++ pal-wcm/trunk/src/main/webapp/WEB-INF/portlet.xml	2008-09-04 02:44:24 UTC (rev 1113)
@@ -1,32 +1,31 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <!--
-Licensed to the Apache Software Foundation (ASF) under one or more
-contributor license agreements.  See the NOTICE file distributed with
-this work for additional information regarding copyright ownership.
-The ASF licenses this file to You under the Apache License, Version 2.0
-(the "License"); you may not use this file except in compliance with
-the License.  You may obtain a copy of the License at
-
-    http://www.apache.org/licenses/LICENSE-2.0
-
-Unless required by applicable law or agreed to in writing, software
-distributed under the License is distributed on an "AS IS" BASIS,
-WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-See the License for the specific language governing permissions and
-limitations under the License.
+ * Copyright 2004-2008 PAL Project and the Others.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND,
+ * either express or implied. See the License for the specific language
+ * governing permissions and limitations under the License.
 -->
 <portlet-app id="pal-wcm" version="1.0" 
     xmlns="http://java.sun.com/xml/ns/portlet/portlet-app_1_0.xsd" 
     xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
     xsi:schemaLocation="http://java.sun.com/xml/ns/portlet/portlet-app_1_0.xsd http://java.sun.com/xml/ns/portlet/portlet-app_1_0.xsd">
 
-  <portlet id="PALWcmPortlet">
-    <description>Web Content Management for PAL Portal</description>
-    <description xml:lang="ja">PALポータル用 Web コンテンツ管理</description>
-    <portlet-name>PALWcmPortlet</portlet-name>
-    <display-name>WCM for PALPortal</display-name>
-    <display-name xml:lang="ja">PALポータル用 WCM</display-name>
-    <portlet-class>jp.sf.pal.wcm.portlet.PALWcmPortlet</portlet-class>
+  <portlet>
+    <description>Web Content Management Viewer</description>
+    <description xml:lang="ja">Web コンテンツ管理ビューアー</description>
+    <portlet-name>PALWcmViewer</portlet-name>
+    <display-name>WCMビューアー</display-name>
+    <display-name xml:lang="ja"></display-name>
+    <portlet-class>jp.sf.pal.wcm.portlet.WcmViewerPortlet</portlet-class>
     <expiration-cache>0</expiration-cache>
     <supports>
       <mime-type>text/html</mime-type>
@@ -36,11 +35,36 @@
     <supported-locale>en</supported-locale>
     <supported-locale>ja</supported-locale>
     <portlet-info>
-      <title>WCM</title>
+      <title>WCM Viewer</title>
       <short-title>WCM</short-title>
       <keywords>WCM,CMS</keywords>
     </portlet-info>
   </portlet>
 
+  <portlet>
+    <description>Web Content Management Editor</description>
+    <description xml:lang="ja">Web コンテンツ管理エディター</description>
+    <portlet-name>PALWcmEditor</portlet-name>
+    <display-name>WCM Editor</display-name>
+    <display-name xml:lang="ja">WCMエディター</display-name>
+    <portlet-class>jp.sf.pal.wcm.portlet.WcmEditorPortlet</portlet-class>
+    <init-param>
+      <name>viewPage</name>
+      <value>/editor/</value>
+    </init-param>
+    <expiration-cache>0</expiration-cache>
+    <supports>
+      <mime-type>text/html</mime-type>
+      <portlet-mode>VIEW</portlet-mode>
+    </supports>
+    <supported-locale>en</supported-locale>
+    <supported-locale>ja</supported-locale>
+    <portlet-info>
+      <title>WCM Editor</title>
+      <short-title>WCM</short-title>
+      <keywords>WCM,CMS</keywords>
+    </portlet-info>
+  </portlet>
+
 </portlet-app>
 

Added: pal-wcm/trunk/src/main/webapp/WEB-INF/struts-config.xml
===================================================================
--- pal-wcm/trunk/src/main/webapp/WEB-INF/struts-config.xml	                        (rev 0)
+++ pal-wcm/trunk/src/main/webapp/WEB-INF/struts-config.xml	2008-09-04 02:44:24 UTC (rev 1113)
@@ -0,0 +1,56 @@
+<?xml version="1.0"?>
+
+<!DOCTYPE struts-config PUBLIC
+          "-//Apache Software Foundation//DTD Struts Configuration 1.2//EN"
+          "http://jakarta.apache.org/struts/dtds/struts-config_1_2.dtd">
+
+<struts-config>
+
+<!-- ======================================== Form Bean Definitions -->
+
+    <form-beans>
+    </form-beans>
+
+<!-- ================================= Global Exception Definitions -->
+
+    <global-exceptions>
+    	<exception path="/WEB-INF/view/error/norole.jsp" key="errors.norole" type="org.seasar.struts.exception.NoRoleRuntimeException"/>
+    </global-exceptions>
+
+<!-- =================================== Global Forward Definitions -->
+
+    <global-forwards>
+    </global-forwards>
+
+<!-- =================================== Action Mapping Definitions -->
+
+    <action-mappings>
+    </action-mappings>
+    
+
+<!-- ===================================== Controller Configuration -->
+
+    <controller
+        maxFileSize="1024K"
+        bufferSize="1024"
+        processorClass="org.seasar.struts.portlet.action.S2RequestProcessor"
+        multipartClass="org.seasar.struts.upload.S2MultipartRequestHandler"/>
+<!-- REPLACED:
+        processorClass="org.seasar.struts.action.S2RequestProcessor"
+-->
+
+
+<!-- ================================ Message Resources Definitions -->
+
+    <message-resources parameter="application"
+        factory="org.seasar.struts.util.S2PropertyMessageResourcesFactory"/>
+
+<!-- ======================================= Plug Ins Configuration -->
+
+    <plug-in className="org.seasar.struts.validator.S2ValidatorPlugIn">
+        <set-property
+          property="pathnames"
+          value="/WEB-INF/validator-rules.xml"/>
+    </plug-in>
+</struts-config>
+


Property changes on: pal-wcm/trunk/src/main/webapp/WEB-INF/struts-config.xml
___________________________________________________________________
Name: svn:eol-style
   + native

Added: pal-wcm/trunk/src/main/webapp/WEB-INF/validator-rules.xml
===================================================================
--- pal-wcm/trunk/src/main/webapp/WEB-INF/validator-rules.xml	                        (rev 0)
+++ pal-wcm/trunk/src/main/webapp/WEB-INF/validator-rules.xml	2008-09-04 02:44:24 UTC (rev 1113)
@@ -0,0 +1,352 @@
+<!DOCTYPE form-validation PUBLIC
+          "-//Apache Software Foundation//DTD Commons Validator Rules Configuration 1.1.3//EN"
+          "http://jakarta.apache.org/commons/dtds/validator_1_1_3.dtd">
+<!--
+
+   This file contains the default Struts Validator pluggable validator
+   definitions.  It should be placed somewhere under /WEB-INF and
+   referenced in the struts-config.xml under the plug-in element
+   for the ValidatorPlugIn.
+
+      <plug-in className="org.apache.struts.validator.ValidatorPlugIn">
+        <set-property property="pathnames" value="/WEB-INF/validator-rules.xml,
+                                                  /WEB-INF/validation.xml"/>
+      </plug-in>
+
+   These are the default error messages associated with
+   each validator defined in this file.  They should be
+   added to your projects ApplicationResources.properties
+   file or you can associate new ones by modifying the
+   pluggable validators msg attributes in this file.
+
+   # Struts Validator Error Messages
+   errors.required={0} is required.
+   errors.minlength={0} can not be less than {1} characters.
+   errors.maxlength={0} can not be greater than {1} characters.
+   errors.invalid={0} is invalid.
+
+   errors.byte={0} must be a byte.
+   errors.short={0} must be a short.
+   errors.integer={0} must be an integer.
+   errors.long={0} must be a long.
+   errors.float={0} must be a float.
+   errors.double={0} must be a double.
+
+   errors.date={0} is not a date.
+   errors.range={0} is not in the range {1} through {2}.
+   errors.creditcard={0} is an invalid credit card number.
+   errors.email={0} is an invalid e-mail address.
+   errors.url={0} is an invalid url (web address).
+
+   errors.minbytelength={0} can not be less than {1} bytes.
+   errors.maxbytelength={0} can not be greater than {1} bytes.
+   
+   Note: Starting in Struts 1.2.0 the default javascript definitions have
+         been consolidated to commons-validator. The default can be overridden
+         by supplying a <javascript> element with a CDATA section, just as
+         in struts 1.1.
+
+-->
+
+<form-validation>
+
+   <global>
+
+      <validator name="required"
+            classname="org.apache.struts.validator.FieldChecks"
+               method="validateRequired"
+         methodParams="java.lang.Object,
+                       org.apache.commons.validator.ValidatorAction,
+                       org.apache.commons.validator.Field,
+                       org.apache.struts.action.ActionMessages,
+                       org.apache.commons.validator.Validator,
+                       javax.servlet.http.HttpServletRequest"
+                  msg="errors.required"/>
+
+      <validator name="requiredif"
+                 classname="org.apache.struts.validator.FieldChecks"
+                 method="validateRequiredIf"
+                 methodParams="java.lang.Object,
+                               org.apache.commons.validator.ValidatorAction,
+                               org.apache.commons.validator.Field,
+                               org.apache.struts.action.ActionMessages,
+                               org.apache.commons.validator.Validator,
+                               javax.servlet.http.HttpServletRequest"
+                 msg="errors.required"/>
+
+      <validator name="validwhen"
+          msg="errors.required"
+                 classname="org.apache.struts.validator.validwhen.ValidWhen"
+                 method="validateValidWhen"
+                 methodParams="java.lang.Object,
+                       org.apache.commons.validator.ValidatorAction,
+                       org.apache.commons.validator.Field,
+                       org.apache.struts.action.ActionMessages,
+                       org.apache.commons.validator.Validator,
+                       javax.servlet.http.HttpServletRequest"/>
+
+
+      <validator name="minlength"
+            classname="org.apache.struts.validator.FieldChecks"
+               method="validateMinLength"
+         methodParams="java.lang.Object,
+                       org.apache.commons.validator.ValidatorAction,
+                       org.apache.commons.validator.Field,
+                       org.apache.struts.action.ActionMessages,
+                       org.apache.commons.validator.Validator,
+                       javax.servlet.http.HttpServletRequest"
+              depends=""
+                  msg="errors.minlength"
+           jsFunction="org.apache.commons.validator.javascript.validateMinLength"/>
+
+
+      <validator name="maxlength"
+            classname="org.apache.struts.validator.FieldChecks"
+               method="validateMaxLength"
+         methodParams="java.lang.Object,
+                       org.apache.commons.validator.ValidatorAction,
+                       org.apache.commons.validator.Field,
+                       org.apache.struts.action.ActionMessages,
+                       org.apache.commons.validator.Validator,
+                       javax.servlet.http.HttpServletRequest"
+              depends=""
+                  msg="errors.maxlength"
+           jsFunction="org.apache.commons.validator.javascript.validateMaxLength"/>
+
+
+
+      <validator name="mask"
+            classname="org.apache.struts.validator.FieldChecks"
+               method="validateMask"
+         methodParams="java.lang.Object,
+                       org.apache.commons.validator.ValidatorAction,
+                       org.apache.commons.validator.Field,
+                       org.apache.struts.action.ActionMessages,
+                       org.apache.commons.validator.Validator,
+                       javax.servlet.http.HttpServletRequest"
+              depends=""
+                  msg="errors.invalid"/>
+
+
+      <validator name="byte"
+            classname="org.apache.struts.validator.FieldChecks"
+               method="validateByte"
+         methodParams="java.lang.Object,
+                       org.apache.commons.validator.ValidatorAction,
+                       org.apache.commons.validator.Field,
+                       org.apache.struts.action.ActionMessages,
+                       org.apache.commons.validator.Validator,
+                       javax.servlet.http.HttpServletRequest"
+              depends=""
+                  msg="errors.byte"
+       jsFunctionName="ByteValidations"/>
+
+
+      <validator name="short"
+            classname="org.apache.struts.validator.FieldChecks"
+               method="validateShort"
+         methodParams="java.lang.Object,
+                       org.apache.commons.validator.ValidatorAction,
+                       org.apache.commons.validator.Field,
+                       org.apache.struts.action.ActionMessages,
+                       org.apache.commons.validator.Validator,
+                       javax.servlet.http.HttpServletRequest"
+              depends=""
+                  msg="errors.short"
+       jsFunctionName="ShortValidations"/>
+
+
+      <validator name="integer"
+            classname="org.apache.struts.validator.FieldChecks"
+               method="validateInteger"
+         methodParams="java.lang.Object,
+                       org.apache.commons.validator.ValidatorAction,
+                       org.apache.commons.validator.Field,
+                       org.apache.struts.action.ActionMessages,
+                       org.apache.commons.validator.Validator,
+                       javax.servlet.http.HttpServletRequest"
+              depends=""
+                  msg="errors.integer"
+       jsFunctionName="IntegerValidations"/>
+
+
+
+      <validator name="long"
+            classname="org.apache.struts.validator.FieldChecks"
+               method="validateLong"
+         methodParams="java.lang.Object,
+                       org.apache.commons.validator.ValidatorAction,
+                       org.apache.commons.validator.Field,
+                       org.apache.struts.action.ActionMessages,
+                       org.apache.commons.validator.Validator,
+                       javax.servlet.http.HttpServletRequest"
+              depends=""
+                  msg="errors.long"/>
+
+
+      <validator name="float"
+            classname="org.apache.struts.validator.FieldChecks"
+               method="validateFloat"
+         methodParams="java.lang.Object,
+                       org.apache.commons.validator.ValidatorAction,
+                       org.apache.commons.validator.Field,
+                       org.apache.struts.action.ActionMessages,
+                       org.apache.commons.validator.Validator,
+                       javax.servlet.http.HttpServletRequest"
+              depends=""
+                  msg="errors.float"
+       jsFunctionName="FloatValidations"/>
+
+      <validator name="double"
+            classname="org.apache.struts.validator.FieldChecks"
+               method="validateDouble"
+         methodParams="java.lang.Object,
+                       org.apache.commons.validator.ValidatorAction,
+                       org.apache.commons.validator.Field,
+                       org.apache.struts.action.ActionMessages,
+                       org.apache.commons.validator.Validator,
+                       javax.servlet.http.HttpServletRequest"
+              depends=""
+                  msg="errors.double"/>
+
+
+      <validator name="date"
+            classname="org.apache.struts.validator.FieldChecks"
+               method="validateDate"
+         methodParams="java.lang.Object,
+                       org.apache.commons.validator.ValidatorAction,
+                       org.apache.commons.validator.Field,
+                       org.apache.struts.action.ActionMessages,
+                       org.apache.commons.validator.Validator,
+                       javax.servlet.http.HttpServletRequest"
+              depends=""
+                  msg="errors.date"
+       jsFunctionName="DateValidations"/>
+
+
+      <validator name="intRange"
+            classname="org.apache.struts.validator.FieldChecks"
+               method="validateIntRange"
+         methodParams="java.lang.Object,
+                       org.apache.commons.validator.ValidatorAction,
+                       org.apache.commons.validator.Field,
+                       org.apache.struts.action.ActionMessages,
+                       org.apache.commons.validator.Validator,
+                       javax.servlet.http.HttpServletRequest"
+              depends="integer"
+                  msg="errors.range"/>
+
+
+      <validator name="floatRange"
+            classname="org.apache.struts.validator.FieldChecks"
+               method="validateFloatRange"
+         methodParams="java.lang.Object,
+                       org.apache.commons.validator.ValidatorAction,
+                       org.apache.commons.validator.Field,
+                       org.apache.struts.action.ActionMessages,
+                       org.apache.commons.validator.Validator,
+                       javax.servlet.http.HttpServletRequest"
+              depends="float"
+                  msg="errors.range"/>
+
+      <validator name="doubleRange"
+            classname="org.apache.struts.validator.FieldChecks"
+               method="validateDoubleRange"
+         methodParams="java.lang.Object,
+                       org.apache.commons.validator.ValidatorAction,
+                       org.apache.commons.validator.Field,
+                       org.apache.struts.action.ActionMessages,
+                       org.apache.commons.validator.Validator,
+                       javax.servlet.http.HttpServletRequest"
+              depends="double"
+                  msg="errors.range"/>
+
+      <validator name="creditCard"
+            classname="org.apache.struts.validator.FieldChecks"
+               method="validateCreditCard"
+         methodParams="java.lang.Object,
+                       org.apache.commons.validator.ValidatorAction,
+                       org.apache.commons.validator.Field,
+                       org.apache.struts.action.ActionMessages,
+                       org.apache.commons.validator.Validator,
+                       javax.servlet.http.HttpServletRequest"
+              depends=""
+                  msg="errors.creditcard"/>
+
+
+      <validator name="email"
+            classname="org.apache.struts.validator.FieldChecks"
+               method="validateEmail"
+         methodParams="java.lang.Object,
+                       org.apache.commons.validator.ValidatorAction,
+                       org.apache.commons.validator.Field,
+                       org.apache.struts.action.ActionMessages,
+                       org.apache.commons.validator.Validator,
+                       javax.servlet.http.HttpServletRequest"
+              depends=""
+                  msg="errors.email"/>
+
+      <validator name="url"
+            classname="org.apache.struts.validator.FieldChecks"
+               method="validateUrl"
+         methodParams="java.lang.Object,
+                       org.apache.commons.validator.ValidatorAction,
+                       org.apache.commons.validator.Field,
+                       org.apache.struts.action.ActionMessages,
+                       org.apache.commons.validator.Validator,
+                       javax.servlet.http.HttpServletRequest"
+              depends=""
+                  msg="errors.url"/>
+
+      <validator name="minbytelength"
+            classname="org.seasar.struts.validator.S2FieldChecks"
+               method="validateMinByteLength"
+         methodParams="java.lang.Object,
+                       org.apache.commons.validator.ValidatorAction,
+                       org.apache.commons.validator.Field,
+                       org.apache.struts.action.ActionMessages,
+                       org.apache.commons.validator.Validator,
+                       javax.servlet.http.HttpServletRequest"
+              depends=""
+                  msg="errors.minbytelength"/>
+
+
+      <validator name="maxbytelength"
+            classname="org.seasar.struts.validator.S2FieldChecks"
+               method="validateMaxByteLength"
+         methodParams="java.lang.Object,
+                       org.apache.commons.validator.ValidatorAction,
+                       org.apache.commons.validator.Field,
+                       org.apache.struts.action.ActionMessages,
+                       org.apache.commons.validator.Validator,
+                       javax.servlet.http.HttpServletRequest"
+              depends=""
+                  msg="errors.maxbytelength"/>
+                  
+     <validator name="longRange"
+            classname="org.seasar.struts.validator.S2FieldChecks"
+               method="validateLongRange"
+         methodParams="java.lang.Object,
+                       org.apache.commons.validator.ValidatorAction,
+                       org.apache.commons.validator.Field,
+                       org.apache.struts.action.ActionMessages,
+                       org.apache.commons.validator.Validator,
+                       javax.servlet.http.HttpServletRequest"
+              depends="long"
+                  msg="errors.range"/>
+
+     <!--
+       This simply allows struts to include the validateUtilities into a page, it should
+       not be used as a validation rule.
+     -->
+     <validator name="includeJavaScriptUtilities"
+            classname=""
+               method=""
+         methodParams=""
+              depends=""
+                  msg=""
+           jsFunction="org.apache.commons.validator.javascript.validateUtilities"/>
+
+   </global>
+
+</form-validation>


Property changes on: pal-wcm/trunk/src/main/webapp/WEB-INF/validator-rules.xml
___________________________________________________________________
Name: svn:eol-style
   + native

Added: pal-wcm/trunk/src/main/webapp/WEB-INF/view/common/common.jsp
===================================================================
--- pal-wcm/trunk/src/main/webapp/WEB-INF/view/common/common.jsp	                        (rev 0)
+++ pal-wcm/trunk/src/main/webapp/WEB-INF/view/common/common.jsp	2008-09-04 02:44:24 UTC (rev 1113)
@@ -0,0 +1,9 @@
+<%@taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>
+<%@taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt"%>
+<%@taglib prefix="fn" uri="http://java.sun.com/jsp/jstl/functions"%>
+<%@taglib prefix="html" uri="http://struts.apache.org/tags-html"%>  
+<%@taglib prefix="bean" uri="http://struts.apache.org/tags-bean"%>  
+<%@taglib prefix="tiles" uri="http://jakarta.apache.org/struts/tags-tiles"%>
+<!-- %@taglib prefix="s" uri="http://sastruts.seasar.org"% -->
+<%@taglib prefix="f" uri="http://sastruts.seasar.org/functions"%>
+<%@taglib prefix="s" uri="http://sastruts.seasar.org/portlet"%>


Property changes on: pal-wcm/trunk/src/main/webapp/WEB-INF/view/common/common.jsp
___________________________________________________________________
Name: svn:eol-style
   + native

Added: pal-wcm/trunk/src/main/webapp/WEB-INF/view/editor/edit.jsp
===================================================================
--- pal-wcm/trunk/src/main/webapp/WEB-INF/view/editor/edit.jsp	                        (rev 0)
+++ pal-wcm/trunk/src/main/webapp/WEB-INF/view/editor/edit.jsp	2008-09-04 02:44:24 UTC (rev 1113)
@@ -0,0 +1,57 @@
+<%@page pageEncoding="UTF-8" %>
+
+<div>
+  <div style="float:right;height:25px">
+    <s:link href="prefs/${f:u(encodedPath)}"><img src="<%= request.getContextPath() %>/images/icons/cog.png" alt="Preferences" style="border: 0px;"/></s:link>
+    <s:link href="list/${f:u(encodedPagePath)}"><img src="<%= request.getContextPath() %>/images/icons/folder.png" alt="List" style="border: 0px;"/></s:link>
+  </div>
+
+  <s:form>
+    <html:hidden property="currentPath"/>
+
+    <span><html:messages id="msg" message="true"><bean:write name="msg" ignore="true"/></html:messages><html:errors/></span>
+
+    <div>
+      <div>
+        Title:
+        <html:text property="title"/>
+        <html:select property="locale">
+          <html:option value="">DEFAULT</html:option>
+          <c:forEach var="l" items="${localeItems}">
+            <html:option value="${f:h(l)}">${f:h(l)}</html:option>
+          </c:forEach>
+        </html:select>
+        <button type="submit" style="height:22px;font-size:9px;" name="edit" value="Change">
+          <img style="vertical-align:middle;" src="<%= request.getContextPath() %>/images/icons/arrow_refresh.png"/>Reload
+        </button>
+      </div>
+    </div>
+  
+    <div style="clear:both;">
+<script type="text/javascript" src="<%= request.getContextPath() %>/fckeditor/fckeditor.js"></script>
+<script type="text/javascript">
+<!--
+var FCKeditor = new FCKeditor("content");
+FCKeditor.BasePath = "<%= request.getContextPath() %>/fckeditor/";
+FCKeditor.Value = "${content}";
+FCKeditor.Height = 475;
+var url = '<%= request.getContextPath() %>/fckeditor/editor/filemanager/browser/default/browser.html';
+var connector = '<%= request.getContextPath() %>/fileconnector%3fnamespace=';
+FCKeditor.Config['LinkBrowserURL'] = url + '?Connector=' + connector + '&Type=Link';
+FCKeditor.Config['ImageBrowserURL'] = url + '?Connector=' + connector + '&Type=Image';
+FCKeditor.Config['FlashBrowserURL'] = url + '?Connector=' + connector + '&Type=Flash';
+url = '<%= request.getContextPath() %>/fileupload?namespace=';
+FCKeditor.Config['LinkUploadURL'] = url + '&type=Link';
+FCKeditor.Config['ImageUploadURL'] = url + '&type=Image';
+FCKeditor.Config['FlashUploadURL'] = url + '&type=Flash';
+FCKeditor.Create();
+//-->
+</script>
+    </div>
+
+    <button type="submit" name="store" value="Save" style="margin-top:5px;">
+      <img style="vertical-align:middle;" src="<%= request.getContextPath() %>/images/icons/page_save.png"/>Save
+    </button>
+
+  </s:form>
+</div>


Property changes on: pal-wcm/trunk/src/main/webapp/WEB-INF/view/editor/edit.jsp
___________________________________________________________________
Name: svn:eol-style
   + native

Added: pal-wcm/trunk/src/main/webapp/WEB-INF/view/editor/index.jsp
===================================================================
--- pal-wcm/trunk/src/main/webapp/WEB-INF/view/editor/index.jsp	                        (rev 0)
+++ pal-wcm/trunk/src/main/webapp/WEB-INF/view/editor/index.jsp	2008-09-04 02:44:24 UTC (rev 1113)
@@ -0,0 +1,36 @@
+<%@page pageEncoding="UTF-8" %>
+<div style="padding: 3px;">
+  <s:form>
+    Path: <html:text property="currentPath" style="width: 300px;"/>
+    <input type="submit" name="list" value="Go"/>
+    <input type="submit" name="parent" value="Up"/>
+  </s:form>
+</div>
+
+<div style="padding: 3px;">
+  <div class="portlet-msg">
+    <html:messages id="msg" message="true" header="msg.header" footer="msg.footer">
+      <li style="portlet-msg-info"><bean:write name="msg" ignore="true"/></li>
+    </html:messages>
+    <html:errors />
+  </div>
+</div>
+
+<div style="padding: 3px;">
+  <table>
+    <thead class="portlet-section-subheader">
+      <tr>
+        <th style="width: 250px;">Name</th>
+        <th style="width: 200px;">Title</th>
+        <th style="width: 100px;">Type</th>
+      </tr>
+    </thead>
+    <tbody><c:forEach var="e" varStatus="s" items="${nodeItems}">
+      <tr style="background-color:${s.index %2 == 0 ? 'eeeeee' : 'e0e0e0'}">
+        <td><s:link href="list/${f:u(e.encodedPath)}">${f:h(e.name)}</s:link></td>
+        <td>${f:h(e.title)}</td>
+        <td align="center">${f:h(e.type)}</td>
+      </tr>
+    </c:forEach></tbody>
+  </table>
+</div>
\ No newline at end of file


Property changes on: pal-wcm/trunk/src/main/webapp/WEB-INF/view/editor/index.jsp
___________________________________________________________________
Name: svn:eol-style
   + native

Added: pal-wcm/trunk/src/main/webapp/WEB-INF/view/editor/prefs.jsp
===================================================================
--- pal-wcm/trunk/src/main/webapp/WEB-INF/view/editor/prefs.jsp	                        (rev 0)
+++ pal-wcm/trunk/src/main/webapp/WEB-INF/view/editor/prefs.jsp	2008-09-04 02:44:24 UTC (rev 1113)
@@ -0,0 +1,55 @@
+<%@page pageEncoding="UTF-8" %>
+
+<div style="padding: 3px;">
+  <div style="float:right;height:20px">
+    <s:link href="edit/${f:u(encodedPath)}"><img src="<%= request.getContextPath() %>/images/icons/page_edit.png" alt="Edit" style="border: 0px;"/></s:link>
+    <s:link href="list/${f:u(encodedPagePath)}"><img src="<%= request.getContextPath() %>/images/icons/folder.png" alt="List" style="border: 0px;"/></s:link>
+  </div>
+
+  <div>
+    <div style="float:left;height:20px;font-size:10pt;font-family:sans-serif;color:#666666;padding-left:5px;">
+      Preferences
+    </div>
+  </div>
+</div>
+
+<div style="padding: 3px;clear: both;">
+  <div class="portlet-section-header">
+    Language
+  </div>
+
+  <div class="portlet-msg">
+    <html:messages id="msg" message="true" header="msg.header" footer="msg.footer">
+      <li style="portlet-msg-info"><bean:write name="msg" ignore="true"/></li>
+    </html:messages>
+    <html:errors />
+  </div>
+
+  <s:form>
+    <html:hidden property="currentPath"/>
+    <div style="margin-top:5px;">
+      <label>Locale: </label>
+      <html:text property="locale" size="10"/>
+      <button type="submit" name="addLocale" value="addLocale">
+        <img style="vertical-align:middle;" src="<%= request.getContextPath() %>/images/icons/add.png"/>Add
+      </button>
+      <br/>
+      <span style="color:#999999;">The format of Locale is xx_XX(ex. ja_JP).</span>
+    </div>
+  </s:form>
+  <br/>
+  <s:form>
+    <html:hidden property="currentPath"/>
+    <div>
+      <label>Locale List</label><br/>
+      <html:select property="locale" size="5" style="width:150px;">
+        <c:forEach var="l" items="${localeItems}">
+          <html:option value="${f:h(l)}">${f:h(l)}</html:option>
+        </c:forEach>
+      </html:select>
+      <button type="submit" name="deleteLocale" value="deleteLocale">
+        <img style="vertical-align:middle;" src="<%= request.getContextPath() %>/images/icons/delete.png"/>Delete
+      </button>
+    </div>
+  </s:form>
+</div>


Property changes on: pal-wcm/trunk/src/main/webapp/WEB-INF/view/editor/prefs.jsp
___________________________________________________________________
Name: svn:eol-style
   + native

Added: pal-wcm/trunk/src/main/webapp/WEB-INF/view/error/editor.jsp
===================================================================
--- pal-wcm/trunk/src/main/webapp/WEB-INF/view/error/editor.jsp	                        (rev 0)
+++ pal-wcm/trunk/src/main/webapp/WEB-INF/view/error/editor.jsp	2008-09-04 02:44:24 UTC (rev 1113)
@@ -0,0 +1,11 @@
+<%@page pageEncoding="UTF-8" %>
+<html>
+<head>
+<title></title>
+</head>
+<body>
+<html:errors/>
+<br>
+<s:link href="/editor/">Back</s:link>
+</body>
+</html>


Property changes on: pal-wcm/trunk/src/main/webapp/WEB-INF/view/error/editor.jsp
___________________________________________________________________
Name: svn:eol-style
   + native

Added: pal-wcm/trunk/src/main/webapp/WEB-INF/view/viewer/edit.jsp
===================================================================
--- pal-wcm/trunk/src/main/webapp/WEB-INF/view/viewer/edit.jsp	                        (rev 0)
+++ pal-wcm/trunk/src/main/webapp/WEB-INF/view/viewer/edit.jsp	2008-09-04 02:44:24 UTC (rev 1113)
@@ -0,0 +1,24 @@
+<%@ taglib uri="http://java.sun.com/portlet" prefix="portlet" %>
+<%@ page import="jp.sf.pal.wcm.WcmConstants"%>
+<portlet:defineObjects/>
+<form id="<portlet:namespace/>ViewerForm" action="<portlet:actionURL />" method="POST">
+  <button type="submit" name="edit" value="Edit" style="margin:5px;" onclick="return openWcmEditor();">
+    <img style="vertical-align:middle;" src="<%= request.getContextPath() %>/images/icons/page_edit.png"/>Edit this Content
+  </button>
+  <button type="submit" name="view" value="Back" style="margin:5px;">
+    <img style="vertical-align:middle;" src="<%= request.getContextPath() %>/images/icons/arrow_undo.png"/>Back
+  </button>
+
+<script type="text/javascript">
+<!--
+function openWcmEditor() {
+  var url = '<%= request.getAttribute(WcmConstants.PORTAL_CONTEXT_PATH) %>/portal/system/customizer/wcm-editor.psml';
+  url = url + '?encodedPath=<%= request.getAttribute(WcmConstants.ENCODED_PATH) %>';
+  window.open(url, 'wcmEditor', 'width=700, height=550, menubar=no, toolbar=no, scrollbars=yes, location=no, resizable=yes');
+  return true;
+}
+//-->
+</script>
+<noscript>
+</noscript>
+</form>


Property changes on: pal-wcm/trunk/src/main/webapp/WEB-INF/view/viewer/edit.jsp
___________________________________________________________________
Name: svn:eol-style
   + native

Added: pal-wcm/trunk/src/main/webapp/WEB-INF/view/viewer/view.jsp
===================================================================
--- pal-wcm/trunk/src/main/webapp/WEB-INF/view/viewer/view.jsp	                        (rev 0)
+++ pal-wcm/trunk/src/main/webapp/WEB-INF/view/viewer/view.jsp	2008-09-04 02:44:24 UTC (rev 1113)
@@ -0,0 +1 @@
+<%= request.getAttribute(jp.sf.pal.wcm.WcmConstants.CONTENT) %>


Property changes on: pal-wcm/trunk/src/main/webapp/WEB-INF/view/viewer/view.jsp
___________________________________________________________________
Name: svn:eol-style
   + native

Modified: pal-wcm/trunk/src/main/webapp/WEB-INF/web.xml
===================================================================
--- pal-wcm/trunk/src/main/webapp/WEB-INF/web.xml	2008-09-03 08:05:44 UTC (rev 1112)
+++ pal-wcm/trunk/src/main/webapp/WEB-INF/web.xml	2008-09-04 02:44:24 UTC (rev 1113)
@@ -1,125 +1,170 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <!--
-Licensed to the Apache Software Foundation (ASF) under one or more
-contributor license agreements.  See the NOTICE file distributed with
-this work for additional information regarding copyright ownership.
-The ASF licenses this file to You under the Apache License, Version 2.0
-(the "License"); you may not use this file except in compliance with
-the License.  You may obtain a copy of the License at
-
-    http://www.apache.org/licenses/LICENSE-2.0
-
-Unless required by applicable law or agreed to in writing, software
-distributed under the License is distributed on an "AS IS" BASIS,
-WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-See the License for the specific language governing permissions and
-limitations under the License.
+ * Copyright 2004-2008 PAL Project and the Others.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND,
+ * either express or implied. See the License for the specific language
+ * governing permissions and limitations under the License.
 -->
-<!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 xmlns="http://java.sun.com/xml/ns/j2ee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd" version="2.4">
   <display-name>WCM Portlet</display-name>
   <description>Web Content Management for PAL Portal.</description>
-<!--
+  <context-param>
+    <param-name>sastruts.VIEW_PREFIX</param-name>
+    <param-value>/WEB-INF/view</param-value>
+  </context-param>
+  <filter>
+    <filter-name>encodingfilter</filter-name>
+    <filter-class>org.seasar.extension.filter.EncodingFilter</filter-class>
+    <init-param>
+      <param-name>encoding</param-name>
+      <param-value>UTF-8</param-value>
+    </init-param>
+  </filter>
+  <filter>
+    <filter-name>portletRequestFilter</filter-name>
+    <filter-class>org.seasar.struts.portlet.filter.PortletRequestFilter</filter-class>
+  </filter>
+  <filter>
+    <filter-name>requestDumpFilter</filter-name>
+    <filter-class>org.seasar.extension.filter.RequestDumpFilter</filter-class>
+  </filter>
+  <filter>
+    <filter-name>s2filter</filter-name>
+<!-- REPLACED: filter-class>org.seasar.framework.container.filter.S2ContainerFilter</filter-class -->
+    <filter-class>org.seasar.struts.portlet.filter.S2ContainerFilter</filter-class>
+  </filter>
+  <filter>
+    <filter-name>hotdeployfilter</filter-name>
+<!-- REPLACED: filter-class>org.seasar.framework.container.hotdeploy.HotdeployFilter</filter-class -->
+    <filter-class>org.seasar.struts.portlet.filter.HotdeployFilter</filter-class>
+  </filter>
+  <filter>
+    <filter-name>routingfilter</filter-name>
+    <filter-class>org.seasar.struts.filter.RoutingFilter</filter-class>
+    <init-param>
+      <param-name>jspDirectAccess</param-name>
+      <param-value>false</param-value>
+    </init-param>
+  </filter>
+  <filter>
+    <filter-name>portletRoutingfilter</filter-name>
+    <filter-class>org.seasar.struts.portlet.filter.PortletRoutingFilter</filter-class>
+    <init-param>
+      <param-name>jspDirectAccess</param-name>
+      <param-value>false</param-value>
+    </init-param>
+  </filter>
+  <filter-mapping>
+    <filter-name>encodingfilter</filter-name>
+    <url-pattern>/*</url-pattern>
+  </filter-mapping>
+  <filter-mapping>
+    <filter-name>portletRequestFilter</filter-name>
+    <url-pattern>/*</url-pattern>
+    <dispatcher>INCLUDE</dispatcher>
+  </filter-mapping>
+  <filter-mapping>
+    <filter-name>s2filter</filter-name>
+    <url-pattern>/*</url-pattern>
+    <dispatcher>REQUEST</dispatcher>
+    <dispatcher>FORWARD</dispatcher>
+    <dispatcher>INCLUDE</dispatcher>
+  </filter-mapping>
+  <filter-mapping>
+    <filter-name>hotdeployfilter</filter-name>
+    <url-pattern>/*</url-pattern>
+    <dispatcher>REQUEST</dispatcher>
+    <dispatcher>FORWARD</dispatcher>
+    <dispatcher>INCLUDE</dispatcher>
+  </filter-mapping>
+  <filter-mapping>
+    <filter-name>routingfilter</filter-name>
+    <url-pattern>/*</url-pattern>
+    <dispatcher>REQUEST</dispatcher>
+  </filter-mapping>
+  <filter-mapping>
+    <filter-name>portletRoutingfilter</filter-name>
+    <url-pattern>/*</url-pattern>
+    <dispatcher>INCLUDE</dispatcher>
+  </filter-mapping>
+  <filter-mapping>
+    <filter-name>requestDumpFilter</filter-name>
+    <url-pattern>*.do</url-pattern>
+    <dispatcher>REQUEST</dispatcher>
+    <dispatcher>FORWARD</dispatcher>
+    <dispatcher>INCLUDE</dispatcher>
+  </filter-mapping>
   <servlet>
-      <servlet-name>FileuploadServlet</servlet-name>
-      <servlet-class>jp.sf.pal.wcm.servlet.FileuploadServlet</servlet-class>
+    <servlet-name>action</servlet-name>
+    <servlet-class>org.apache.struts.action.ActionServlet</servlet-class>
+    <init-param>
+      <param-name>config</param-name>
+      <param-value>/WEB-INF/struts-config.xml</param-value>
+    </init-param>
+    <init-param>
+      <param-name>configFactory</param-name>
+      <param-value>org.seasar.struts.config.S2ModuleConfigFactory</param-value>
+    </init-param>
+    <load-on-startup>1</load-on-startup>
   </servlet>
   <servlet>
-      <servlet-name>FileviewServlet</servlet-name>
-      <servlet-class>jp.sf.pal.wcm.servlet.FileviewServlet</servlet-class>
+    <servlet-name>s2container</servlet-name>
+    <servlet-class>org.seasar.framework.container.servlet.S2ContainerServlet</servlet-class>
+    <load-on-startup>2</load-on-startup>
   </servlet>
   <servlet>
-      <servlet-name>FileconnectorServlet</servlet-name>
-      <servlet-class>jp.sf.pal.wcm.servlet.FileconnectorServlet</servlet-class>
+    <servlet-name>FileuploadServlet</servlet-name>
+    <servlet-class>jp.sf.pal.wcm.servlet.FileuploadServlet</servlet-class>
   </servlet>
+  <servlet>
+    <servlet-name>FileviewServlet</servlet-name>
+    <servlet-class>jp.sf.pal.wcm.servlet.FileviewServlet</servlet-class>
+  </servlet>
+  <servlet>
+    <servlet-name>FileconnectorServlet</servlet-name>
+    <servlet-class>jp.sf.pal.wcm.servlet.FileconnectorServlet</servlet-class>
+  </servlet>
   <servlet-mapping>
-      <servlet-name>FileuploadServlet</servlet-name>
-      <url-pattern>/fileupload</url-pattern>
+    <servlet-name>action</servlet-name>
+    <url-pattern>*.do</url-pattern>
   </servlet-mapping>
   <servlet-mapping>
-      <servlet-name>FileviewServlet</servlet-name>
-      <url-pattern>/fileview</url-pattern>
+    <servlet-name>s2container</servlet-name>
+    <url-pattern>/s2container</url-pattern>
   </servlet-mapping>
   <servlet-mapping>
-      <servlet-name>FileconnectorServlet</servlet-name>
-      <url-pattern>/fileconnector</url-pattern>
+    <servlet-name>FileuploadServlet</servlet-name>
+    <url-pattern>/fileupload</url-pattern>
   </servlet-mapping>
--->
-  <servlet>
-      <servlet-name>FilesaveServlet</servlet-name>
-      <servlet-class>jp.sf.pal.wcm.servlet.FilesaveServlet</servlet-class>
-  </servlet>
-
-	<servlet>
-		<servlet-name>Connector</servlet-name>
-		<servlet-class>jp.sf.pal.wcm.connector.ConnectorServlet</servlet-class>
-		<init-param>
-			<param-name>baseDir</param-name>
-			<param-value>/UserFiles/</param-value>
-		</init-param>
-		<init-param>
-			<param-name>debug</param-name>
-			<param-value>false</param-value>
-		</init-param>
-		<load-on-startup>1</load-on-startup>
-	</servlet>
-
-	<servlet>
-		<servlet-name>SimpleUploader</servlet-name>
-		<servlet-class>jp.sf.pal.wcm.uploader.SimpleUploaderServlet</servlet-class>
-		<init-param>
-			<param-name>baseDir</param-name>
-			<param-value>/UserFiles/</param-value>
-		</init-param>
-		<init-param>
-			<param-name>debug</param-name>
-			<param-value>false</param-value>
-		</init-param>
-		<init-param>
-			<param-name>enabled</param-name>
-			<param-value>true</param-value>
-		</init-param>
-		<init-param>
-			<param-name>AllowedExtensionsFile</param-name>
-			<param-value></param-value>
-		</init-param>
-		<init-param>
-			<param-name>DeniedExtensionsFile</param-name>
-			<param-value>php|php3|php5|phtml|asp|aspx|ascx|jsp|cfm|cfc|pl|bat|exe|dll|reg|cgi</param-value>
-		</init-param>
-		<init-param>
-			<param-name>AllowedExtensionsImage</param-name>
-			<param-value>jpg|gif|jpeg|png|bmp</param-value>
-		</init-param>
-		<init-param>
-			<param-name>DeniedExtensionsImage</param-name>
-			<param-value></param-value>
-		</init-param>
-		<init-param>
-			<param-name>AllowedExtensionsFlash</param-name>
-			<param-value>swf|fla</param-value>
-		</init-param>
-		<init-param>
-			<param-name>DeniedExtensionsFlash</param-name>
-			<param-value></param-value>
-		</init-param>
-		<load-on-startup>1</load-on-startup>
-	</servlet>
-
   <servlet-mapping>
-      <servlet-name>FilesaveServlet</servlet-name>
-      <url-pattern>/filesave</url-pattern>
+    <servlet-name>FileviewServlet</servlet-name>
+    <url-pattern>/fileview</url-pattern>
   </servlet-mapping>
-
   <servlet-mapping>
-    <servlet-name>Connector</servlet-name>
-    <url-pattern>/fckeditor/editor/filemanager/browser/default/connectors/jsp/connector</url-pattern>
+    <servlet-name>FileconnectorServlet</servlet-name>
+    <url-pattern>/fileconnector</url-pattern>
   </servlet-mapping>
-  
-  <servlet-mapping>
-    <servlet-name>SimpleUploader</servlet-name>
-    <url-pattern>/fckeditor/editor/filemanager/upload/simpleuploader</url-pattern>
-  </servlet-mapping>  
-
+  <welcome-file-list>
+    <welcome-file>index.html</welcome-file>
+    <welcome-file>index.htm</welcome-file>
+    <welcome-file>index.jsp</welcome-file>
+  </welcome-file-list>
+  <jsp-config>
+    <jsp-property-group>
+      <url-pattern>*.jsp</url-pattern>
+      <el-ignored>false</el-ignored>
+      <page-encoding>UTF-8</page-encoding>
+      <scripting-invalid>false</scripting-invalid>
+      <include-prelude>/WEB-INF/view/common/common.jsp</include-prelude>
+    </jsp-property-group>
+  </jsp-config>
 </web-app>

Modified: pal-wcm/trunk/src/main/webapp/fckeditor/editor/css/fck_editorarea.css
===================================================================
--- pal-wcm/trunk/src/main/webapp/fckeditor/editor/css/fck_editorarea.css	2008-09-03 08:05:44 UTC (rev 1112)
+++ pal-wcm/trunk/src/main/webapp/fckeditor/editor/css/fck_editorarea.css	2008-09-04 02:44:24 UTC (rev 1113)
@@ -26,10 +26,10 @@
  * file.
  */
 
-/*
-    The "body" styles should match your editor web site, mainly regarding
-    background color and font family and size.
-*/
+/**
+ * The "body" styles should match your editor web site, mainly regarding
+ * background color and font family and size.
+ */
 
 body
 {
@@ -50,10 +50,10 @@
 	text-decoration: -moz-anchor-decoration;	/* For Firefox 3, otherwise no underline will be used */
 }
 
-/*
-	Just uncomment the following block if you want to avoid spaces between
-	paragraphs. Remember to apply the same style in your output front end page.
-*/
+/**
+ * Just uncomment the following block if you want to avoid spaces between
+ * paragraphs. Remember to apply the same style in your output front end page.
+ */
 
 /*
 p, ul, li
@@ -63,12 +63,30 @@
 }
 */
 
+/**
+ * Uncomment the following block, or only selected lines if appropriate,
+ * if you have some style items that would break the styles combo box.
+ * You can also write other CSS overrides inside the style block below
+ * as needed and they will be applied to inside the style combo only.
+ */
+
 /*
-    The following are some sample styles used in the "Styles" toolbar command.
-    You should instead remove them, and include the styles used by the site
-    you are using the editor in.
+.SC_Item *, .SC_ItemSelected *
+{
+	margin: 0px !important;
+	padding: 0px !important;
+	text-indent: 0px !important;
+	clip: auto !important;
+	position: static !important;
+}
 */
 
+/**
+ * The following are some sample styles used in the "Styles" toolbar command.
+ * You should instead remove them, and include the styles used by the site
+ * you are using the editor in.
+ */
+
 .Bold
 {
 	font-weight: bold;

Modified: pal-wcm/trunk/src/main/webapp/fckeditor/editor/dialog/common/fck_dialog_common.js
===================================================================
--- pal-wcm/trunk/src/main/webapp/fckeditor/editor/dialog/common/fck_dialog_common.js	2008-09-03 08:05:44 UTC (rev 1112)
+++ pal-wcm/trunk/src/main/webapp/fckeditor/editor/dialog/common/fck_dialog_common.js	2008-09-04 02:44:24 UTC (rev 1113)
@@ -57,7 +57,7 @@
 // Attention: FCKConfig must be available in the page.
 function GetCommonDialogCss( prefix )
 {
-	// CSS minified by http://iceyboard.no-ip.org/projects/css_compressor
+	// CSS minified by http://iceyboard.no-ip.org/projects/css_compressor (see _dev/css_compression.txt).
 	return FCKConfig.BasePath + 'dialog/common/' + '|.ImagePreviewArea{border:#000 1px solid;overflow:auto;width:100%;height:170px;background-color:#fff}.FlashPreviewArea{border:#000 1px solid;padding:5px;overflow:auto;width:100%;height:170px;background-color:#fff}.BtnReset{float:left;background-position:center center;background-image:url(images/reset.gif);width:16px;height:16px;background-repeat:no-repeat;border:1px none;font-size:1px}.BtnLocked,.BtnUnlocked{float:left;background-position:center center;background-image:url(images/locked.gif);width:16px;height:16px;background-repeat:no-repeat;border:none 1px;font-size:1px}.BtnUnlocked{background-image:url(images/unlocked.gif)}.BtnOver{border:outset 1px;cursor:pointer;cursor:hand}' ;
 }
 
@@ -187,34 +187,7 @@
 	sOptions += ",left=" + iLeft ;
 	sOptions += ",top=" + iTop ;
 
-	// The "PreserveSessionOnFileBrowser" because the above code could be
-	// blocked by popup blockers.
-	if ( oEditor.FCKConfig.PreserveSessionOnFileBrowser && oEditor.FCKBrowserInfo.IsIE )
-	{
-		// The following change has been made otherwise IE will open the file
-		// browser on a different server session (on some cases):
-		// http://support.microsoft.com/default.aspx?scid=kb;en-us;831678
-		// by Simone Chiaretta.
-		var oWindow = oEditor.window.open( url, 'FCKBrowseWindow', sOptions ) ;
-
-		if ( oWindow )
-		{
-			// Detect Yahoo popup blocker.
-			try
-			{
-				var sTest = oWindow.name ; // Yahoo returns "something", but we can't access it, so detect that and avoid strange errors for the user.
-				oWindow.opener = window ;
-			}
-			catch(e)
-			{
-				alert( oEditor.FCKLang.BrowseServerBlocked ) ;
-			}
-		}
-		else
-			alert( oEditor.FCKLang.BrowseServerBlocked ) ;
-    }
-    else
-		window.open( url, 'FCKBrowseWindow', sOptions ) ;
+	window.open( url, 'FCKBrowseWindow', sOptions ) ;
 }
 
 /**

Deleted: pal-wcm/trunk/src/main/webapp/fckeditor/editor/dialog/common/fcknumericfield.htc
===================================================================
--- pal-wcm/trunk/src/main/webapp/fckeditor/editor/dialog/common/fcknumericfield.htc	2008-09-03 08:05:44 UTC (rev 1112)
+++ pal-wcm/trunk/src/main/webapp/fckeditor/editor/dialog/common/fcknumericfield.htc	2008-09-04 02:44:24 UTC (rev 1113)
@@ -1,24 +0,0 @@
-<public:component lightweight="true">
-
-<script language="javascript">
-
-function CheckIsDigit()
-{
-	var iCode = event.keyCode ;
-
-	event.returnValue =
-		(
-			( iCode >= 48 && iCode <= 57 )		// Numbers
-			|| (iCode >= 37 && iCode <= 40)		// Arrows
-			|| iCode == 8						// Backspace
-			|| iCode == 46						// Delete
-		) ;
-
-	return event.returnValue ;
-}
-
-this.onkeypress = CheckIsDigit ;
-
-</script>
-
-</public:component>

Deleted: pal-wcm/trunk/src/main/webapp/fckeditor/editor/dialog/common/moz-bindings.xml
===================================================================
--- pal-wcm/trunk/src/main/webapp/fckeditor/editor/dialog/common/moz-bindings.xml	2008-09-03 08:05:44 UTC (rev 1112)
+++ pal-wcm/trunk/src/main/webapp/fckeditor/editor/dialog/common/moz-bindings.xml	2008-09-04 02:44:24 UTC (rev 1113)
@@ -1,30 +0,0 @@
-<?xml version="1.0" encoding="utf-8" ?>
-<bindings xmlns="http://www.mozilla.org/xbl">
-	<binding id="numericfield">
-		<implementation>
-			<constructor>
-				this.keypress = CheckIsDigit ;
-			</constructor>
-			<method name="CheckIsDigit">
-				<body>
-					<![CDATA[
-					var iCode = keyCode ;
-
-					var bAccepted =
-						(
-							( iCode >= 48 && iCode <= 57 )		// Numbers
-							|| (iCode >= 37 && iCode <= 40)		// Arrows
-							|| iCode == 8						// Backspace
-							|| iCode == 46						// Delete
-						) ;
-
-					return bAccepted ;
-					]]>
-				</body>
-			</method>
-		</implementation>
-		<events>
-			<event type="keypress" value="CheckIsDigit()" />
-		</events>
-	</binding>
-</bindings>
\ No newline at end of file

Modified: pal-wcm/trunk/src/main/webapp/fckeditor/editor/dialog/fck_about.html
===================================================================
--- pal-wcm/trunk/src/main/webapp/fckeditor/editor/dialog/fck_about.html	2008-09-03 08:05:44 UTC (rev 1112)
+++ pal-wcm/trunk/src/main/webapp/fckeditor/editor/dialog/fck_about.html	2008-09-04 02:44:24 UTC (rev 1113)
@@ -78,8 +78,8 @@
 								border-left: #000000 1px solid; border-bottom: #000000 1px solid">
 								<span fcklang="DlgAboutVersion">version</span>
 								<br />
-								<b>2.6</b><br />
-								Build 18638</td>
+								<b>2.6.3</b><br />
+								Build 19836</td>
 						</tr>
 					</table>
 				</td>

Modified: pal-wcm/trunk/src/main/webapp/fckeditor/editor/dialog/fck_anchor.html
===================================================================
--- pal-wcm/trunk/src/main/webapp/fckeditor/editor/dialog/fck_anchor.html	2008-09-03 08:05:44 UTC (rev 1112)
+++ pal-wcm/trunk/src/main/webapp/fckeditor/editor/dialog/fck_anchor.html	2008-09-04 02:44:24 UTC (rev 1113)
@@ -119,10 +119,7 @@
 	var aNewAnchors = oEditor.FCK.CreateLink( '#' ) ;
 
 	if ( aNewAnchors.length == 0 )
-	{
-		// Nothing was selected, so now just create a normal A
-		aNewAnchors.push( oEditor.FCK.InsertElement( 'a' ) ) ;
-	}
+			aNewAnchors.push( oEditor.FCK.InsertElement( 'a' ) ) ;
 	else
 	{
 		// Remove the fake href
@@ -136,7 +133,18 @@
 		oAnchor = aNewAnchors[i] ;
 
 		// Set the name
-		oAnchor.name = sNewName ;
+		if ( FCKBrowserInfo.IsIE )
+		{
+			// Setting anchor names directly in IE will trash the HTML code stored
+			// in FCKTempBin after undos. See #2263.
+			var replaceAnchor = oEditor.FCK.EditorDocument.createElement( '<a name="' +
+					FCKTools.HTMLEncode( sNewName ).replace( '"', '&quot;' ) + '">' ) ;
+			oEditor.FCKDomTools.MoveChildren( oAnchor, replaceAnchor ) ;
+			oAnchor.parentNode.replaceChild( replaceAnchor, oAnchor ) ;
+			oAnchor = replaceAnchor ;
+		}
+		else
+			oAnchor.name = sNewName ;
 
 		// IE does require special processing to show the Anchor's image
 		// Opera doesn't allow to select empty anchors

Added: pal-wcm/trunk/src/main/webapp/fckeditor/editor/dialog/fck_div.html
===================================================================
--- pal-wcm/trunk/src/main/webapp/fckeditor/editor/dialog/fck_div.html	                        (rev 0)
+++ pal-wcm/trunk/src/main/webapp/fckeditor/editor/dialog/fck_div.html	2008-09-04 02:44:24 UTC (rev 1113)
@@ -0,0 +1,364 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" >
+<!--
+ * FCKeditor - The text editor for Internet - http://www.fckeditor.net
+ * Copyright (C) 2003-2008 Frederico Caldeira Knabben
+ *
+ * == BEGIN LICENSE ==
+ *
+ * Licensed under the terms of any of the following licenses at your
+ * choice:
+ *
+ *  - GNU General Public License Version 2 or later (the "GPL")
+ *    http://www.gnu.org/licenses/gpl.html
+ *
+ *  - GNU Lesser General Public License Version 2.1 or later (the "LGPL")
+ *    http://www.gnu.org/licenses/lgpl.html
+ *
+ *  - Mozilla Public License Version 1.1 or later (the "MPL")
+ *    http://www.mozilla.org/MPL/MPL-1.1.html
+ *
+ * == END LICENSE ==
+ *
+ * Form dialog window.
+-->
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+	<title></title>
+	<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
+	<meta content="noindex, nofollow" name="robots" />
+	<script src="common/fck_dialog_common.js" type="text/javascript"></script>
+	<script type="text/javascript">
+var dialog	= window.parent ;
+var oEditor = dialog.InnerDialogLoaded() ;
+var FCK = oEditor.FCK ;
+var FCKLang = oEditor.FCKLang ;
+var FCKBrowserInfo = oEditor.FCKBrowserInfo ;
+var FCKStyles = oEditor.FCKStyles ;
+var FCKElementPath = oEditor.FCKElementPath ;
+var FCKDomRange = oEditor.FCKDomRange ;
+var FCKDomTools = oEditor.FCKDomTools ;
+var FCKDomRangeIterator = oEditor.FCKDomRangeIterator ;
+var FCKListsLib = oEditor.FCKListsLib ;
+var AlwaysCreate = dialog.Args().CustomValue ;
+
+String.prototype.IEquals = function()
+{
+	var thisUpper = this.toUpperCase() ;
+
+	var aArgs = arguments ;
+
+	// The arguments could also be a single array.
+	if ( aArgs.length == 1 && aArgs[0].pop )
+		aArgs = aArgs[0] ;
+
+	for ( var i = 0 ; i < aArgs.length ; i++ )
+	{
+		if ( thisUpper == aArgs[i].toUpperCase() )
+			return true ;
+	}
+	return false ;
+}
+
+var CurrentContainers = [] ;
+if ( !AlwaysCreate )
+{
+	dialog.Selection.EnsureSelection() ;
+	CurrentContainers = FCKDomTools.GetSelectedDivContainers() ;
+}
+
+// Add some tabs
+dialog.AddTab( 'General', FCKLang.DlgDivGeneralTab );
+dialog.AddTab( 'Advanced', FCKLang.DlgDivAdvancedTab ) ;
+
+function AddStyleOption( styleName )
+{
+	var el = GetE( 'selStyle' ) ;
+	var opt = document.createElement( 'option' ) ;
+	opt.text = opt.value = styleName ;
+
+	if ( FCKBrowserInfo.IsIE )
+		el.add( opt ) ;
+	else
+		el.add( opt, null ) ;
+}
+
+function OnDialogTabChange( tabCode )
+{
+	ShowE( 'divGeneral', tabCode == 'General' ) ;
+	ShowE( 'divAdvanced', tabCode == 'Advanced' ) ;
+	dialog.SetAutoSize( true ) ;
+}
+
+function GetNearestAncestorDirection( node )
+{
+	var dir = 'ltr' ;	// HTML default.
+	while ( ( node = node.parentNode ) )
+	{
+		if ( node.dir )
+			dir = node.dir ;
+	}
+	return dir ;
+}
+
+window.onload = function()
+{
+	// First of all, translate the dialog box texts
+	oEditor.FCKLanguageManager.TranslatePage(document) ;
+
+	dialog.SetOkButton( true ) ;
+	dialog.SetAutoSize( true ) ;
+
+	// Popuplate the style menu
+	var styles = FCKStyles.GetStyles() ;
+	var selectableStyles = {} ;
+	for ( var i in styles )
+	{
+		if ( ! /^_FCK_/.test( i ) && styles[i].Element == 'div' )
+			selectableStyles[i] = styles[i] ;
+	}
+	if ( CurrentContainers.length <= 1 )
+	{
+		var target = CurrentContainers[0] ;
+		var match = null ;
+		for ( var i in selectableStyles )
+		{
+			if ( target && styles[i].CheckElementRemovable( target, true ) )
+				match = i ;
+		}
+		if ( !match )
+			AddStyleOption( "" ) ;
+		for ( var i in selectableStyles )
+			AddStyleOption( i ) ;
+		if ( match )
+			GetE( 'selStyle' ).value = match ;
+
+		// Set the value for other inputs
+		if ( target )
+		{
+			GetE( 'txtClass' ).value = target.className ;
+			GetE( 'txtId' ).value = target.id ;
+			GetE( 'txtLang' ).value = target.lang ;
+			GetE( 'txtInlineStyle').value = target.style.cssText ;
+			GetE( 'txtTitle' ).value = target.title ;
+			GetE( 'selLangDir').value = target.dir || GetNearestAncestorDirection( target ) ;
+		}
+	}
+	else
+	{
+		GetE( 'txtId' ).disabled = true ;
+		AddStyleOption( "" ) ;
+		for ( var i in selectableStyles )
+			AddStyleOption( i ) ;
+	}
+}
+
+function CreateDiv()
+{
+	var newBlocks = [] ;
+	var range = new FCKDomRange( FCK.EditorWindow ) ;
+	range.MoveToSelection() ;
+
+	var bookmark = range.CreateBookmark() ;
+
+	// Kludge for #1592: if the bookmark nodes are in the beginning of
+	// $tagName, then move them to the nearest block element in the
+	// $tagName.
+	if ( FCKBrowserInfo.IsIE )
+	{
+		var bStart	= range.GetBookmarkNode( bookmark, true ) ;
+		var bEnd	= range.GetBookmarkNode( bookmark, false ) ;
+
+		var cursor ;
+
+		if ( bStart
+				&& bStart.parentNode.nodeName.IEquals( 'div' )
+				&& !bStart.previousSibling )
+		{
+			cursor = bStart ;
+			while ( ( cursor = cursor.nextSibling ) )
+			{
+				if ( FCKListsLib.BlockElements[ cursor.nodeName.toLowerCase() ] )
+					FCKDomTools.MoveNode( bStart, cursor, true ) ;
+			}
+		}
+
+		if ( bEnd
+				&& bEnd.parentNode.nodeName.IEquals( 'div' )
+				&& !bEnd.previousSibling )
+		{
+			cursor = bEnd ;
+			while ( ( cursor = cursor.nextSibling ) )
+			{
+				if ( FCKListsLib.BlockElements[ cursor.nodeName.toLowerCase() ] )
+				{
+					if ( cursor.firstChild == bStart )
+						FCKDomTools.InsertAfterNode( bStart, bEnd ) ;
+					else
+						FCKDomTools.MoveNode( bEnd, cursor, true ) ;
+				}
+			}
+		}
+	}
+
+	var iterator = new FCKDomRangeIterator( range ) ;
+	var block ;
+
+	iterator.EnforceRealBlocks = true ;
+	var paragraphs = [] ;
+	var groups = [] ;
+	var lastBlockLimit = null ;
+	while ( ( block = iterator.GetNextParagraph() ) )
+	{
+		var elementPath = new FCKElementPath( block ) ;
+		if ( elementPath.BlockLimit != lastBlockLimit )
+		{
+			groups.push( [] ) ;
+			lastBlockLimit = elementPath.BlockLimit ;
+		}
+		groups[groups.length - 1].push( block ) ;
+	}
+
+	for ( var i = 0 ; i < groups.length ; i++ )
+	{
+		var divNode = FCK.EditorDocument.createElement( 'div' ) ;
+		groups[i][0].parentNode.insertBefore( divNode, groups[i][0] ) ;
+		for ( var j = 0 ; j < groups[i].length ; j++ )
+			FCKDomTools.MoveNode( groups[i][j], divNode ) ;
+		newBlocks.push( divNode ) ;
+	}
+
+	range.MoveToBookmark( bookmark ) ;
+	range.Select() ;
+
+	FCK.Focus() ;
+	FCK.Events.FireEvent( 'OnSelectionChange' ) ;
+
+	return newBlocks ;
+}
+
+function Ok()
+{
+	oEditor.FCKUndo.SaveUndoStep() ;
+
+	if ( CurrentContainers.length < 1 )
+		CurrentContainers = CreateDiv();
+
+	var setValue = function( attrName, inputName )
+	{
+		var val = GetE( inputName ).value ;
+		for ( var i = 0 ; i < CurrentContainers.length ; i++ )
+		{
+			if ( val == '' )
+				CurrentContainers[i].removeAttribute( attrName ) ;
+			else
+				CurrentContainers[i].setAttribute( attrName, val ) ;
+		}
+	}
+
+	// Apply modifications to the DIV container according to dialog inputs.
+	if ( CurrentContainers.length == 1 )
+	{
+		setValue( 'class', 'txtClass' ) ;
+		setValue( 'id', 'txtId' ) ;
+	}
+	setValue( 'lang', 'txtLang' ) ;
+	if ( FCKBrowserInfo.IsIE )
+	{
+		for ( var i = 0 ; i < CurrentContainers.length ; i++ )
+			CurrentContainers[i].style.cssText = GetE( 'txtInlineStyle' ).value ;
+	}
+	else
+		setValue( 'style', 'txtInlineStyle' ) ;
+	setValue( 'title', 'txtTitle' ) ;
+	for ( var i = 0 ; i < CurrentContainers.length ; i++ )
+	{
+		var dir = GetE( 'selLangDir' ).value ;
+		var styleName = GetE( 'selStyle' ).value ;
+		if ( GetNearestAncestorDirection( CurrentContainers[i] ) != dir )
+			CurrentContainers[i].dir = dir ;
+		else
+			CurrentContainers[i].removeAttribute( 'dir' ) ;
+
+		if ( styleName )
+			FCKStyles.GetStyle( styleName ).ApplyToObject( CurrentContainers[i] ) ;
+	}
+
+	return true ;
+}
+
+	</script>
+</head>
+<body style="overflow: hidden">
+	<div id="divGeneral">
+		<table cellspacing="0" cellpadding="0" width="100%" border="0">
+			<colgroup span="2">
+				<col width="49%" />
+				<col width="2%" />
+				<col width="49%" />
+			</colgroup>
+			<tr>
+				<td>
+					<span fcklang="DlgDivStyle">Style</span><br />
+					<select id="selStyle" style="width: 100%;">
+					</select>
+				</td>
+				<td>&nbsp;</td>
+				<td>
+					<span fcklang="DlgGenClass">Stylesheet Classes</span><br />
+					<input id="txtClass" style="width: 100%" type="text" />
+				</td>
+			</tr>
+		</table>
+	</div>
+	<div id="divAdvanced" style="display: none">
+		<table cellspacing="0" cellpadding="0" width="100%" border="0">
+			<colgroup span="2">
+				<col width="49%" />
+				<col width="2%" />
+				<col width="49%" />
+			</colgroup>
+			<tr>
+				<td>
+					<span fcklang="DlgGenId">Id</span><br />
+					<input style="width: 100%" type="text" id="txtId" />
+				</td>
+				<td>&nbsp;</td>
+				<td>
+					<span fcklang="DlgGenLangCode">Language Code</span><br />
+					<input style="width: 100%" type="text" id="txtLang" />
+				</td>
+			</tr>
+			<tr>
+				<td colspan="3">&nbsp;</td>
+			</tr>
+			<tr>
+				<td colspan="3">
+					<span fcklang="DlgDivInlineStyle">Inline Style</span><br />
+					<input style="width: 100%" type="text" id="txtInlineStyle" />
+				</td>
+			</tr>
+			<tr>
+				<td colspan="3">&nbsp;</td>
+			</tr>
+			<tr>
+				<td colspan="3">
+					<span fcklang="DlgGenTitle">Advisory Title</span><br />
+					<input style="width: 100%" type="text" id="txtTitle" />
+				</td>
+			</tr>
+			<tr>
+				<td>&nbsp;</td>
+			</tr>
+			<tr>
+				<td>
+					<span fcklang="DlgGenLangDir">Language Direction</span><br />
+					<select id="selLangDir">
+						<option fcklang="DlgGenLangDirLtr" value="ltr">Left to Right (LTR)
+						<option fcklang="DlgGenLangDirRtl" value="rtl">Right to Left (RTL)
+					</select>
+				</td>
+			</tr>
+		</table>
+	</div>
+</body>
+</html>


Property changes on: pal-wcm/trunk/src/main/webapp/fckeditor/editor/dialog/fck_div.html
___________________________________________________________________
Name: svn:eol-style
   + native

Deleted: pal-wcm/trunk/src/main/webapp/fckeditor/editor/dialog/fck_find.html
===================================================================
--- pal-wcm/trunk/src/main/webapp/fckeditor/editor/dialog/fck_find.html	2008-09-03 08:05:44 UTC (rev 1112)
+++ pal-wcm/trunk/src/main/webapp/fckeditor/editor/dialog/fck_find.html	2008-09-04 02:44:24 UTC (rev 1113)
@@ -1,173 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
-<!--
- * FCKeditor - The text editor for Internet - http://www.fckeditor.net
- * Copyright (C) 2003-2007 Frederico Caldeira Knabben
- *
- * == BEGIN LICENSE ==
- *
- * Licensed under the terms of any of the following licenses at your
- * choice:
- *
- *  - GNU General Public License Version 2 or later (the "GPL")
- *    http://www.gnu.org/licenses/gpl.html
- *
- *  - GNU Lesser General Public License Version 2.1 or later (the "LGPL")
- *    http://www.gnu.org/licenses/lgpl.html
- *
- *  - Mozilla Public License Version 1.1 or later (the "MPL")
- *    http://www.mozilla.org/MPL/MPL-1.1.html
- *
- * == END LICENSE ==
- *
- * "Find" dialog window.
--->
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-	<title></title>
-	<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
-	<meta content="noindex, nofollow" name="robots" />
-	<script type="text/javascript">
-
-var oEditor = window.parent.InnerDialogLoaded() ;
-
-function OnLoad()
-{
-	// Whole word is available on IE only.
-	if ( oEditor.FCKBrowserInfo.IsIE )
-		document.getElementById('divWord').style.display = '' ;
-
-	// First of all, translate the dialog box texts.
-	oEditor.FCKLanguageManager.TranslatePage( document ) ;
-
-	window.parent.SetAutoSize( true ) ;
-}
-
-function btnStat(frm)
-{
-	document.getElementById('btnFind').disabled =
-		( document.getElementById('txtFind').value.length == 0 ) ;
-}
-
-function ReplaceTextNodes( parentNode, regex, replaceValue, replaceAll )
-{
-	for ( var i = 0 ; i < parentNode.childNodes.length ; i++ )
-	{
-		var oNode = parentNode.childNodes[i] ;
-		if ( oNode.nodeType == 3 )
-		{
-			var sReplaced = oNode.nodeValue.replace( regex, replaceValue ) ;
-			if ( oNode.nodeValue != sReplaced )
-			{
-				oNode.nodeValue = sReplaced ;
-				if ( ! replaceAll )
-					return true ;
-			}
-		}
-		else
-		{
-			if ( ReplaceTextNodes( oNode, regex, replaceValue ) )
-				return true ;
-		}
-	}
-	return false ;
-}
-
-function GetRegexExpr()
-{
-	var sExpr ;
-
-	if ( document.getElementById('chkWord').checked )
-		sExpr = '\\b' + document.getElementById('txtFind').value + '\\b' ;
-	else
-		sExpr = document.getElementById('txtFind').value ;
-
-	return sExpr ;
-}
-
-function GetCase()
-{
-	return ( document.getElementById('chkCase').checked ? '' : 'i' ) ;
-}
-
-function Ok()
-{
-	if ( document.getElementById('txtFind').value.length == 0 )
-		return ;
-
-	if ( oEditor.FCKBrowserInfo.IsIE )
-		FindIE() ;
-	else
-		FindGecko() ;
-}
-
-var oRange ;
-
-if ( oEditor.FCKBrowserInfo.IsIE )
-	oRange = oEditor.FCK.EditorDocument.body.createTextRange() ;
-
-function FindIE()
-{
-	var iFlags = 0 ;
-
-	if ( chkCase.checked )
-		iFlags = iFlags | 4 ;
-
-	if ( chkWord.checked )
-		iFlags = iFlags | 2 ;
-
-	var bFound = oRange.findText( document.getElementById('txtFind').value, 1, iFlags ) ;
-
-	if ( bFound )
-	{
-		oRange.scrollIntoView() ;
-		oRange.select() ;
-		oRange.collapse(false) ;
-		oLastRangeFound = oRange ;
-	}
-	else
-	{
-		oRange = oEditor.FCK.EditorDocument.body.createTextRange() ;
-		alert( oEditor.FCKLang.DlgFindNotFoundMsg ) ;
-	}
-}
-
-function FindGecko()
-{
-	var bCase = document.getElementById('chkCase').checked ;
-	var bWord = document.getElementById('chkWord').checked ;
-
-	// window.find( searchString, caseSensitive, backwards, wrapAround, wholeWord, searchInFrames, showDialog ) ;
-	if ( !oEditor.FCK.EditorWindow.find( document.getElementById('txtFind').value, bCase, false, false, bWord, false, false ) )
-		alert( oEditor.FCKLang.DlgFindNotFoundMsg ) ;
-}
-	</script>
-</head>
-<body onload="OnLoad()" style="overflow: hidden">
-	<table cellspacing="3" cellpadding="2" width="100%" border="0">
-		<tr>
-			<td nowrap="nowrap">
-				<label for="txtFind" fcklang="DlgReplaceFindLbl">
-					Find what:</label>&nbsp;
-			</td>
-			<td width="100%">
-				<input id="txtFind" style="width: 100%" tabindex="1" type="text" />
-			</td>
-			<td>
-				<input id="btnFind" style="padding-right: 5px; padding-left: 5px" onclick="Ok();"
-					type="button" value="Find" fcklang="DlgFindFindBtn" />
-			</td>
-		</tr>
-		<tr>
-			<td valign="bottom" colspan="3">
-				&nbsp;<input id="chkCase" tabindex="3" type="checkbox" /><label for="chkCase" fcklang="DlgReplaceCaseChk">Match
-					case</label>
-				<br />
-				<div id="divWord" style="display: none">
-					&nbsp;<input id="chkWord" tabindex="4" type="checkbox" /><label for="chkWord" fcklang="DlgReplaceWordChk">Match
-						whole word</label>
-				</div>
-			</td>
-		</tr>
-	</table>
-</body>
-</html>

Modified: pal-wcm/trunk/src/main/webapp/fckeditor/editor/dialog/fck_flash/fck_flash.js
===================================================================
--- pal-wcm/trunk/src/main/webapp/fckeditor/editor/dialog/fck_flash/fck_flash.js	2008-09-03 08:05:44 UTC (rev 1112)
+++ pal-wcm/trunk/src/main/webapp/fckeditor/editor/dialog/fck_flash/fck_flash.js	2008-09-04 02:44:24 UTC (rev 1113)
@@ -236,6 +236,10 @@
 
 function OnUploadCompleted( errorNumber, fileUrl, fileName, customMsg )
 {
+	// Remove animation
+	window.parent.Throbber.Hide() ;
+	GetE( 'divUpload' ).style.display  = '' ;
+
 	switch ( errorNumber )
 	{
 		case 0 :	// No errors
@@ -288,5 +292,9 @@
 		return false ;
 	}
 
+	// Show animation
+	window.parent.Throbber.Show( 100 ) ;
+	GetE( 'divUpload' ).style.display  = 'none' ;
+
 	return true ;
 }

Modified: pal-wcm/trunk/src/main/webapp/fckeditor/editor/dialog/fck_flash.html
===================================================================
--- pal-wcm/trunk/src/main/webapp/fckeditor/editor/dialog/fck_flash.html	2008-09-03 08:05:44 UTC (rev 1112)
+++ pal-wcm/trunk/src/main/webapp/fckeditor/editor/dialog/fck_flash.html	2008-09-04 02:44:24 UTC (rev 1113)
@@ -97,7 +97,7 @@
 				<br />
 				<input id="btnUpload" type="submit" value="Send it to the Server" fckLang="DlgLnkBtnUpload" />
 				<script type="text/javascript">
-					document.write( '<iframe name="UploadWindow" style="DISPLAY: none" src="' + FCKTools.GetVoidUrl() + '"></iframe>' ) ;
+					document.write( '<iframe name="UploadWindow" style="DISPLAY: none" src="' + FCKTools.GetVoidUrl() + '"><\/iframe>' ) ;
 				</script>
 			</form>
 		</div>

Modified: pal-wcm/trunk/src/main/webapp/fckeditor/editor/dialog/fck_image/fck_image.js
===================================================================
--- pal-wcm/trunk/src/main/webapp/fckeditor/editor/dialog/fck_image/fck_image.js	2008-09-03 08:05:44 UTC (rev 1112)
+++ pal-wcm/trunk/src/main/webapp/fckeditor/editor/dialog/fck_image/fck_image.js	2008-09-04 02:44:24 UTC (rev 1113)
@@ -447,6 +447,10 @@
 
 function OnUploadCompleted( errorNumber, fileUrl, fileName, customMsg )
 {
+	// Remove animation
+	window.parent.Throbber.Hide() ;
+	GetE( 'divUpload' ).style.display  = '' ;
+
 	switch ( errorNumber )
 	{
 		case 0 :	// No errors
@@ -500,5 +504,9 @@
 		return false ;
 	}
 
+	// Show animation
+	window.parent.Throbber.Show( 100 ) ;
+	GetE( 'divUpload' ).style.display  = 'none' ;
+
 	return true ;
 }

Modified: pal-wcm/trunk/src/main/webapp/fckeditor/editor/dialog/fck_image/fck_image_preview.html
===================================================================
--- pal-wcm/trunk/src/main/webapp/fckeditor/editor/dialog/fck_image/fck_image_preview.html	2008-09-03 08:05:44 UTC (rev 1112)
+++ pal-wcm/trunk/src/main/webapp/fckeditor/editor/dialog/fck_image/fck_image_preview.html	2008-09-04 02:44:24 UTC (rev 1113)
@@ -34,9 +34,9 @@
 var FCKTools	= window.parent.FCKTools ;
 var FCKConfig	= window.parent.FCKConfig ;
 
-// Sets the Skin CSS
-document.write( FCKTools.GetStyleHtml( FCKConfig.SkinDialogCSS ) ) ;
-document.write( FCKTools.GetStyleHtml( GetCommonDialogCss( '../' ) ) ) ;
+// Set the preview CSS
+document.write( FCKTools.GetStyleHtml( FCKConfig.EditorAreaCSS ) ) ;
+document.write( FCKTools.GetStyleHtml( FCKConfig.EditorAreaStyles ) ) ;
 
 if ( window.parent.FCKConfig.BaseHref.length > 0 )
 	document.write( '<base href="' + window.parent.FCKConfig.BaseHref + '">' ) ;
@@ -50,7 +50,7 @@
 
 	</script>
 </head>
-<body style="color: #000000; background-color: #ffffff">
+<body>
 	<div>
 		<a id="lnkPreview" onclick="return false;" style="cursor: default">
 			<img id="imgPreview" onload="window.parent.UpdateOriginal();"

Modified: pal-wcm/trunk/src/main/webapp/fckeditor/editor/dialog/fck_image.html
===================================================================
--- pal-wcm/trunk/src/main/webapp/fckeditor/editor/dialog/fck_image.html	2008-09-03 08:05:44 UTC (rev 1112)
+++ pal-wcm/trunk/src/main/webapp/fckeditor/editor/dialog/fck_image.html	2008-09-04 02:44:24 UTC (rev 1113)
@@ -165,7 +165,7 @@
 			<br />
 			<input id="btnUpload" type="submit" value="Send it to the Server" fcklang="DlgLnkBtnUpload" />
 			<script type="text/javascript">
-				document.write( '<iframe name="UploadWindow" style="display: none" src="' + FCKTools.GetVoidUrl() + '"></iframe>' ) ;
+				document.write( '<iframe name="UploadWindow" style="display: none" src="' + FCKTools.GetVoidUrl() + '"><\/iframe>' ) ;
 			</script>
 		</form>
 	</div>

Modified: pal-wcm/trunk/src/main/webapp/fckeditor/editor/dialog/fck_link/fck_link.js
===================================================================
--- pal-wcm/trunk/src/main/webapp/fckeditor/editor/dialog/fck_link/fck_link.js	2008-09-03 08:05:44 UTC (rev 1112)
+++ pal-wcm/trunk/src/main/webapp/fckeditor/editor/dialog/fck_link/fck_link.js	2008-09-04 02:44:24 UTC (rev 1113)
@@ -77,36 +77,187 @@
 
 var oParser = new Object() ;
 
-oParser.ParseEMailUrl = function( emailUrl )
+// This method simply returns the two inputs in numerical order. You can even
+// provide strings, as the method would parseInt() the values.
+oParser.SortNumerical = function(a, b)
 {
+	return parseInt( a, 10 ) - parseInt( b, 10 ) ;
+}
+
+oParser.ParseEMailParams = function(sParams)
+{
+	// Initialize the oEMailParams object.
+	var oEMailParams = new Object() ;
+	oEMailParams.Subject = '' ;
+	oEMailParams.Body = '' ;
+
+	var aMatch = sParams.match( /(^|^\?|&)subject=([^&]+)/i ) ;
+	if ( aMatch ) oEMailParams.Subject = decodeURIComponent( aMatch[2] ) ;
+
+	aMatch = sParams.match( /(^|^\?|&)body=([^&]+)/i ) ;
+	if ( aMatch ) oEMailParams.Body = decodeURIComponent( aMatch[2] ) ;
+
+	return oEMailParams ;
+}
+
+// This method returns either an object containing the email info, or FALSE
+// if the parameter is not an email link.
+oParser.ParseEMailUri = function( sUrl )
+{
 	// Initializes the EMailInfo object.
 	var oEMailInfo = new Object() ;
-	oEMailInfo.Address	= '' ;
-	oEMailInfo.Subject	= '' ;
-	oEMailInfo.Body		= '' ;
+	oEMailInfo.Address = '' ;
+	oEMailInfo.Subject = '' ;
+	oEMailInfo.Body = '' ;
 
-	var oParts = emailUrl.match( /^([^\?]+)\??(.+)?/ ) ;
-	if ( oParts )
+	var aLinkInfo = sUrl.match( /^(\w+):(.*)$/ ) ;
+	if ( aLinkInfo && aLinkInfo[1] == 'mailto' )
 	{
-		// Set the e-mail address.
-		oEMailInfo.Address = oParts[1] ;
+		// This seems to be an unprotected email link.
+		var aParts = aLinkInfo[2].match( /^([^\?]+)\??(.+)?/ ) ;
+		if ( aParts )
+		{
+			// Set the e-mail address.
+			oEMailInfo.Address = aParts[1] ;
 
-		// Look for the optional e-mail parameters.
-		if ( oParts[2] )
+			// Look for the optional e-mail parameters.
+			if ( aParts[2] )
+			{
+				var oEMailParams = oParser.ParseEMailParams( aParts[2] ) ;
+				oEMailInfo.Subject = oEMailParams.Subject ;
+				oEMailInfo.Body = oEMailParams.Body ;
+			}
+		}
+		return oEMailInfo ;
+	}
+	else if ( aLinkInfo && aLinkInfo[1] == 'javascript' )
+	{
+		// This may be a protected email.
+
+		// Try to match the url against the EMailProtectionFunction.
+		var func = FCKConfig.EMailProtectionFunction ;
+		if ( func != null )
 		{
-			var oMatch = oParts[2].match( /(^|&)subject=([^&]+)/i ) ;
-			if ( oMatch ) oEMailInfo.Subject = decodeURIComponent( oMatch[2] ) ;
+			try
+			{
+				// Escape special chars.
+				func = func.replace( /([\/^$*+.?()\[\]])/g, '\\$1' ) ;
 
-			oMatch = oParts[2].match( /(^|&)body=([^&]+)/i ) ;
-			if ( oMatch ) oEMailInfo.Body = decodeURIComponent( oMatch[2] ) ;
+				// Define the possible keys.
+				var keys = new Array('NAME', 'DOMAIN', 'SUBJECT', 'BODY') ;
+
+				// Get the order of the keys (hold them in the array <pos>) and
+				// the function replaced by regular expression patterns.
+				var sFunc = func ;
+				var pos = new Array() ;
+				for ( var i = 0 ; i < keys.length ; i ++ )
+				{
+					var rexp = new RegExp( keys[i] ) ;
+					var p = func.search( rexp ) ;
+					if ( p >= 0 )
+					{
+						sFunc = sFunc.replace( rexp, '\'([^\']*)\'' ) ;
+						pos[pos.length] = p + ':' + keys[i] ;
+					}
+				}
+
+				// Sort the available keys.
+				pos.sort( oParser.SortNumerical ) ;
+
+				// Replace the excaped single quotes in the url, such they do
+				// not affect the regexp afterwards.
+				aLinkInfo[2] = aLinkInfo[2].replace( /\\'/g, '###SINGLE_QUOTE###' ) ;
+
+				// Create the regexp and execute it.
+				var rFunc = new RegExp( '^' + sFunc + '$' ) ;
+				var aMatch = rFunc.exec( aLinkInfo[2] ) ;
+				if ( aMatch )
+				{
+					var aInfo = new Array();
+					for ( var i = 1 ; i < aMatch.length ; i ++ )
+					{
+						var k = pos[i-1].match(/^\d+:(.+)$/) ;
+						aInfo[k[1]] = aMatch[i].replace(/###SINGLE_QUOTE###/g, '\'') ;
+					}
+
+					// Fill the EMailInfo object that will be returned
+					oEMailInfo.Address = aInfo['NAME'] + '@' + aInfo['DOMAIN'] ;
+					oEMailInfo.Subject = decodeURIComponent( aInfo['SUBJECT'] ) ;
+					oEMailInfo.Body = decodeURIComponent( aInfo['BODY'] ) ;
+
+					return oEMailInfo ;
+				}
+			}
+			catch (e)
+			{
+			}
 		}
+
+		// Try to match the email against the encode protection.
+		var aMatch = aLinkInfo[2].match( /^location\.href='mailto:'\+(String\.fromCharCode\([\d,]+\))\+'(.*)'$/ ) ;
+		if ( aMatch )
+		{
+			// The link is encoded
+			oEMailInfo.Address = eval( aMatch[1] ) ;
+			if ( aMatch[2] )
+			{
+				var oEMailParams = oParser.ParseEMailParams( aMatch[2] ) ;
+				oEMailInfo.Subject = oEMailParams.Subject ;
+				oEMailInfo.Body = oEMailParams.Body ;
+			}
+			return oEMailInfo ;
+		}
 	}
-
-	return oEMailInfo ;
+	return false;
 }
 
 oParser.CreateEMailUri = function( address, subject, body )
 {
+	// Switch for the EMailProtection setting.
+	switch ( FCKConfig.EMailProtection )
+	{
+		case 'function' :
+			var func = FCKConfig.EMailProtectionFunction ;
+			if ( func == null )
+			{
+				if ( FCKConfig.Debug )
+				{
+					alert('EMailProtection alert!\nNo function defined. Please set "FCKConfig.EMailProtectionFunction"') ;
+				}
+				return '';
+			}
+
+			// Split the email address into name and domain parts.
+			var aAddressParts = address.split( '@', 2 ) ;
+			if ( aAddressParts[1] == undefined )
+			{
+				aAddressParts[1] = '' ;
+			}
+
+			// Replace the keys by their values (embedded in single quotes).
+			func = func.replace(/NAME/g, "'" + aAddressParts[0].replace(/'/g, '\\\'') + "'") ;
+			func = func.replace(/DOMAIN/g, "'" + aAddressParts[1].replace(/'/g, '\\\'') + "'") ;
+			func = func.replace(/SUBJECT/g, "'" + encodeURIComponent( subject ).replace(/'/g, '\\\'') + "'") ;
+			func = func.replace(/BODY/g, "'" + encodeURIComponent( body ).replace(/'/g, '\\\'') + "'") ;
+
+			return 'javascript:' + func ;
+
+		case 'encode' :
+			var aParams = [] ;
+			var aAddressCode = [] ;
+
+			if ( subject.length > 0 )
+				aParams.push( 'subject='+ encodeURIComponent( subject ) ) ;
+			if ( body.length > 0 )
+				aParams.push( 'body=' + encodeURIComponent( body ) ) ;
+			for ( var i = 0 ; i < address.length ; i++ )
+				aAddressCode.push( address.charCodeAt( i ) ) ;
+
+			return 'javascript:location.href=\'mailto:\'+String.fromCharCode(' + aAddressCode.join( ',' ) + ')+\'?' + aParams.join( '&' ) + '\'' ;
+	}
+
+	// EMailProtection 'none'
+
 	var sBaseUri = 'mailto:' + address ;
 
 	var sParams = '' ;
@@ -263,28 +414,26 @@
 	// Search for the protocol.
 	var sProtocol = oRegex.UriProtocol.exec( sHRef ) ;
 
-	if ( sProtocol )
+	// Search for a protected email link.
+	var oEMailInfo = oParser.ParseEMailUri( sHRef );
+
+	if ( oEMailInfo )
 	{
+		sType = 'email' ;
+
+		GetE('txtEMailAddress').value = oEMailInfo.Address ;
+		GetE('txtEMailSubject').value = oEMailInfo.Subject ;
+		GetE('txtEMailBody').value    = oEMailInfo.Body ;
+	}
+	else if ( sProtocol )
+	{
 		sProtocol = sProtocol[0].toLowerCase() ;
 		GetE('cmbLinkProtocol').value = sProtocol ;
 
 		// Remove the protocol and get the remaining URL.
 		var sUrl = sHRef.replace( oRegex.UriProtocol, '' ) ;
-
-		if ( sProtocol == 'mailto:' )	// It is an e-mail link.
-		{
-			sType = 'email' ;
-
-			var oEMailInfo = oParser.ParseEMailUrl( sUrl ) ;
-			GetE('txtEMailAddress').value	= oEMailInfo.Address ;
-			GetE('txtEMailSubject').value	= oEMailInfo.Subject ;
-			GetE('txtEMailBody').value		= oEMailInfo.Body ;
-		}
-		else				// It is a normal link.
-		{
-			sType = 'url' ;
-			GetE('txtUrl').value = sUrl ;
-		}
+		sType = 'url' ;
+		GetE('txtUrl').value = sUrl ;
 	}
 	else if ( sHRef.substr(0,1) == '#' && sHRef.length > 1 )	// It is an anchor link.
 	{
@@ -650,13 +799,17 @@
 
 function SetUrl( url )
 {
-	document.getElementById('txtUrl').value = url ;
+	GetE('txtUrl').value = url ;
 	OnUrlChange() ;
 	dialog.SetSelectedTab( 'Info' ) ;
 }
 
 function OnUploadCompleted( errorNumber, fileUrl, fileName, customMsg )
 {
+	// Remove animation
+	window.parent.Throbber.Hide() ;
+	GetE( 'divUpload' ).style.display  = '' ;
+
 	switch ( errorNumber )
 	{
 		case 0 :	// No errors
@@ -709,6 +862,10 @@
 		return false ;
 	}
 
+	// Show animation
+	window.parent.Throbber.Show( 100 ) ;
+	GetE( 'divUpload' ).style.display  = 'none' ;
+
 	return true ;
 }
 

Modified: pal-wcm/trunk/src/main/webapp/fckeditor/editor/dialog/fck_link.html
===================================================================
--- pal-wcm/trunk/src/main/webapp/fckeditor/editor/dialog/fck_link.html	2008-09-03 08:05:44 UTC (rev 1112)
+++ pal-wcm/trunk/src/main/webapp/fckeditor/editor/dialog/fck_link.html	2008-09-04 02:44:24 UTC (rev 1113)
@@ -108,7 +108,9 @@
 				<input id="txtUploadFile" style="WIDTH: 100%" type="file" size="40" name="NewFile" /><br />
 				<br />
 				<input id="btnUpload" type="submit" value="Send it to the Server" fckLang="DlgLnkBtnUpload" />
-				<iframe name="UploadWindow" style="DISPLAY: none" src="javascript:void(0)"></iframe>
+				<script type="text/javascript">
+					document.write( '<iframe name="UploadWindow" style="display: none" src="' + FCKTools.GetVoidUrl() + '"><\/iframe>' ) ;
+				</script>
 			</form>
 		</div>
 		<div id="divTarget" style="DISPLAY: none">

Modified: pal-wcm/trunk/src/main/webapp/fckeditor/editor/dialog/fck_listprop.html
===================================================================
--- pal-wcm/trunk/src/main/webapp/fckeditor/editor/dialog/fck_listprop.html	2008-09-03 08:05:44 UTC (rev 1112)
+++ pal-wcm/trunk/src/main/webapp/fckeditor/editor/dialog/fck_listprop.html	2008-09-04 02:44:24 UTC (rev 1113)
@@ -67,7 +67,7 @@
 	dialog.SetOkButton( true ) ;
 	dialog.SetAutoSize( true ) ;
 
-	SelectField( 'txtStartPosition' ) ;
+	SelectField( sListType == 'OL' ? 'txtStartPosition' : 'selBulleted' ) ;
 }
 
 function Ok()

Modified: pal-wcm/trunk/src/main/webapp/fckeditor/editor/dialog/fck_paste.html
===================================================================
--- pal-wcm/trunk/src/main/webapp/fckeditor/editor/dialog/fck_paste.html	2008-09-03 08:05:44 UTC (rev 1112)
+++ pal-wcm/trunk/src/main/webapp/fckeditor/editor/dialog/fck_paste.html	2008-09-04 02:44:24 UTC (rev 1113)
@@ -64,7 +64,7 @@
 
 		var eFrameSpace = document.getElementById( 'xFrameSpace' ) ;
 		eFrameSpace.innerHTML = '<iframe id="frmData" src="' + sFrameUrl + '" ' +
-					'height="98%" width="99%" frameborder="0" style="border: #000000 1px; background-color: #ffffff"></iframe>' ;
+					'height="98%" width="99%" frameborder="0" style="border: #000000 1px; background-color: #ffffff"><\/iframe>' ;
 
 		var oFrame = eFrameSpace.firstChild ;
 
@@ -187,7 +187,7 @@
 	var html = oNode.innerHTML ;
 
 	html = html.replace(/<o:p>\s*<\/o:p>/g, '') ;
-	html = html.replace(/<o:p>.*?<\/o:p>/g, '&nbsp;') ;
+	html = html.replace(/<o:p>[\s\S]*?<\/o:p>/g, '&nbsp;') ;
 
 	// Remove mso-xxx styles.
 	html = html.replace( /\s*mso-[^:]+:[^;"]+;?/gi, '' ) ;
@@ -224,6 +224,10 @@
 	if ( bRemoveStyles )
 		html = html.replace( /<(\w[^>]*) style="([^\"]*)"([^>]*)/gi, "<$1$3" ) ;
 
+	// Remove style, meta and link tags
+	html = html.replace( /<STYLE[^>]*>[\s\S]*?<\/STYLE[^>]*>/gi, '' ) ;
+	html = html.replace( /<(?:META|LINK)[^>]*>\s*/gi, '' ) ;
+
 	// Remove empty styles.
 	html =  html.replace( /\s*style="\s*"/gi, '' ) ;
 
@@ -234,25 +238,28 @@
 	// Remove Lang attributes
 	html = html.replace(/<(\w[^>]*) lang=([^ |>]*)([^>]*)/gi, "<$1$3") ;
 
-	html = html.replace( /<SPAN\s*>(.*?)<\/SPAN>/gi, '$1' ) ;
+	html = html.replace( /<SPAN\s*>([\s\S]*?)<\/SPAN>/gi, '$1' ) ;
 
-	html = html.replace( /<FONT\s*>(.*?)<\/FONT>/gi, '$1' ) ;
+	html = html.replace( /<FONT\s*>([\s\S]*?)<\/FONT>/gi, '$1' ) ;
 
 	// Remove XML elements and declarations
 	html = html.replace(/<\\?\?xml[^>]*>/gi, '' ) ;
 
+	// Remove w: tags with contents.
+	html = html.replace( /<w:[^>]*>[\s\S]*?<\/w:[^>]*>/gi, '' ) ;
+
 	// Remove Tags with XML namespace declarations: <o:p><\/o:p>
 	html = html.replace(/<\/?\w+:[^>]*>/gi, '' ) ;
 
 	// Remove comments [SF BUG-1481861].
-	html = html.replace(/<\!--.*?-->/g, '' ) ;
+	html = html.replace(/<\!--[\s\S]*?-->/g, '' ) ;
 
 	html = html.replace( /<(U|I|STRIKE)>&nbsp;<\/\1>/g, '&nbsp;' ) ;
 
 	html = html.replace( /<H\d>\s*<\/H\d>/gi, '' ) ;
 
 	// Remove "display:none" tags.
-	html = html.replace( /<(\w+)[^>]*\sstyle="[^"]*DISPLAY\s?:\s?none(.*?)<\/\1>/ig, '' ) ;
+	html = html.replace( /<(\w+)[^>]*\sstyle="[^"]*DISPLAY\s?:\s?none[\s\S]*?<\/\1>/ig, '' ) ;
 
 	// Remove language tags
 	html = html.replace( /<(\w[^>]*) language=([^ |>]*)([^>]*)/gi, "<$1$3") ;
@@ -267,8 +274,8 @@
 		html = html.replace( /<H(\d)([^>]*)>/gi, '<h$1>' ) ;
 
 		// Word likes to insert extra <font> tags, when using MSIE. (Wierd).
-		html = html.replace( /<(H\d)><FONT[^>]*>(.*?)<\/FONT><\/\1>/gi, '<$1>$2<\/$1>' );
-		html = html.replace( /<(H\d)><EM>(.*?)<\/EM><\/\1>/gi, '<$1>$2<\/$1>' );
+		html = html.replace( /<(H\d)><FONT[^>]*>([\s\S]*?)<\/FONT><\/\1>/gi, '<$1>$2<\/$1>' );
+		html = html.replace( /<(H\d)><EM>([\s\S]*?)<\/EM><\/\1>/gi, '<$1>$2<\/$1>' );
 	}
 	else
 	{
@@ -282,7 +289,7 @@
 		html = html.replace( /<\/H\d>/gi, '<\/font><\/b><\/div>' ) ;
 
 		// Transform <P> to <DIV>
-		var re = new RegExp( '(<P)([^>]*>.*?)(<\/P>)', 'gi' ) ;	// Different because of a IE 5.0 error
+		var re = new RegExp( '(<P)([^>]*>[\\s\\S]*?)(<\/P>)', 'gi' ) ;	// Different because of a IE 5.0 error
 		html = html.replace( re, '<div$2<\/div>' ) ;
 
 		// Remove empty tags (three times, just to be sure).

Modified: pal-wcm/trunk/src/main/webapp/fckeditor/editor/dialog/fck_replace.html
===================================================================
--- pal-wcm/trunk/src/main/webapp/fckeditor/editor/dialog/fck_replace.html	2008-09-03 08:05:44 UTC (rev 1112)
+++ pal-wcm/trunk/src/main/webapp/fckeditor/editor/dialog/fck_replace.html	2008-09-04 02:44:24 UTC (rev 1113)
@@ -34,6 +34,12 @@
 var dialogArguments = dialog.Args() ;
 
 var FCKLang = oEditor.FCKLang ;
+var FCKDomTools = oEditor.FCKDomTools ;
+var FCKDomRange = oEditor.FCKDomRange ;
+var FCKListsLib = oEditor.FCKListsLib ;
+var FCKTools = oEditor.FCKTools ;
+var EditorDocument = oEditor.FCK.EditorDocument ;
+var HighlightStyle = oEditor.FCKStyles.GetStyle( '_FCK_SelectionHighlight' )  ;
 
 dialog.AddTab( 'Find', FCKLang.DlgFindTitle ) ;
 dialog.AddTab( 'Replace', FCKLang.DlgReplaceTitle ) ;
@@ -51,189 +57,261 @@
 		dialog.SetAutoSize( true ) ;
 }
 
-// Place a range at the start of document.
-// This will be the starting point of our search.
-var GlobalRange = new oEditor.FCKDomRange( oEditor.FCK.EditorWindow ) ;
-
-function ResetGlobalRange()
+GetNextNonEmptyTextNode = function( node, stopNode )
 {
-	GlobalRange.SetStart( oEditor.FCK.EditorDocument.body, 1 ) ;
-	GlobalRange.SetEnd( oEditor.FCK.EditorDocument.body, 1 ) ;
-	GlobalRange.Collapse( true ) ;
+	while ( ( node = FCKDomTools.GetNextSourceNode( node, false, 3, stopNode ) ) && node && node.length < 1 )
+		1 ;
+	return node ;
 }
-ResetGlobalRange() ;
 
-var HighlightRange = null ;
-function Highlight()
+CharacterCursor = function( arg )
 {
-	if ( HighlightRange )
-		ClearHighlight() ;
-	var cloneRange = GlobalRange.Clone() ;
-	oEditor.FCKStyles.GetStyle( '_FCK_SelectionHighlight' ).ApplyToRange( cloneRange, false, true ) ;
-	HighlightRange = cloneRange ;
-	GlobalRange = HighlightRange.Clone() ;
-}
-
-function ClearHighlight()
-{
-	if ( HighlightRange )
+	if ( arg.nodeType && arg.nodeType == 9 )
 	{
-		oEditor.FCKStyles.GetStyle( '_FCK_SelectionHighlight' ).RemoveFromRange( HighlightRange, false, true ) ;
-		HighlightRange = null ;
+		this._textNode = GetNextNonEmptyTextNode( arg.body, arg.documentElement ) ;
+		this._offset = 0 ;
+		this._doc = arg ;
 	}
+	else
+	{
+		this._textNode = arguments[0] ;
+		this._offset = arguments[1] ;
+		this._doc = FCKTools.GetElementDocument( arguments[0] ) ;
+	}
 }
-
-function OnLoad()
+CharacterCursor.prototype =
 {
-	// First of all, translate the dialog box texts.
-	oEditor.FCKLanguageManager.TranslatePage( document ) ;
+	GetCharacter : function()
+	{
+		return ( this._textNode && this._textNode.nodeValue.charAt( this._offset ) ) || null ;
+	},
 
-	// Show the appropriate tab at startup.
-	if ( dialogArguments.CustomValue == 'Find' )
+	// Non-normalized.
+	GetTextNode : function()
 	{
-		dialog.SetSelectedTab( 'Find' ) ;
-		dialog.SetAutoSize( true ) ;
-	}
-	else
-		dialog.SetSelectedTab( 'Replace' ) ;
+		return this._textNode ;
+	},
 
-	SelectField( 'txtFind' + dialogArguments.CustomValue ) ;
-}
+	// Non-normalized.
+	GetIndex : function()
+	{
+		return this._offset ;
+	},
 
-function btnStat()
-{
-	GetE('btnReplace').disabled =
-		GetE('btnReplaceAll').disabled =
-			GetE('btnFind').disabled =
-				( GetE(idMap["FindText"]).value.length == 0 ) ;
-}
+	// Return value means whehther we've crossed a line break or a paragraph boundary.
+	MoveNext : function()
+	{
+		if ( this._offset < this._textNode.length - 1 )
+		{
+			this._offset++ ;
+			return false ;
+		}
 
-function btnStatDelayed()
-{
-	setTimeout( btnStat, 1 ) ;
-}
+		var crossed = false ;
+		var curNode = this._textNode ;
+		while ( ( curNode = FCKDomTools.GetNextSourceNode( curNode ) )
+				&& curNode && ( curNode.nodeType != 3 || curNode.length < 1 ) )
+		{
+			var tag = curNode.nodeName.toLowerCase() ;
+			if ( FCKListsLib.BlockElements[tag] || tag == 'br' )
+				crossed = true ;
+		}
 
-function GetSearchString()
-{
-	return GetE(idMap['FindText']).value ;
-}
+		this._textNode = curNode ;
+		this._offset = 0 ;
+		return crossed ;
+	},
 
-function GetReplaceString()
-{
-	return GetE("txtReplace").value ;
-}
+	// Return value means whehther we've crossed a line break or a paragraph boundary.
+	MoveBack : function()
+	{
+		if ( this._offset > 0 && this._textNode.length > 0 )
+		{
+			this._offset = Math.min( this._offset - 1, this._textNode.length - 1 ) ;
+			return false ;
+		}
 
-function GetCheckCase()
-{
-	return !! ( GetE(idMap['CheckCase']).checked ) ;
-}
+		var crossed = false ;
+		var curNode = this._textNode ;
+		while ( ( curNode = FCKDomTools.GetPreviousSourceNode( curNode ) )
+				&& curNode && ( curNode.nodeType != 3 || curNode.length < 1 ) )
+		{
+			var tag = curNode.nodeName.toLowerCase() ;
+			if ( FCKListsLib.BlockElements[tag] || tag == 'br' )
+				crossed = true ;
+		}
 
-function GetMatchWord()
+		this._textNode = curNode ;
+		this._offset = curNode.length - 1 ;
+		return crossed ;
+	},
+
+	Clone : function()
+	{
+		return new CharacterCursor( this._textNode, this._offset ) ;
+	}
+} ;
+
+CharacterRange = function( initCursor, maxLength )
 {
-	return !! ( GetE(idMap['CheckWord']).checked ) ;
+	this._cursors = initCursor.push ? initCursor : [initCursor] ;
+	this._maxLength = maxLength ;
+	this._highlightRange = null ;
 }
-
-// Get the data pointed to by a bookmark.
-function GetData( bookmark )
+CharacterRange.prototype =
 {
-	var cursor = oEditor.FCK.EditorDocument.documentElement ;
-	for ( var i = 0 ; i < bookmark.length ; i++ )
+	ToDomRange : function()
 	{
-		var target = bookmark[i] ;
-		var currentIndex = -1 ;
-		if ( cursor.nodeType != 3 )
+		var firstCursor = this._cursors[0] ;
+		var lastCursor = this._cursors[ this._cursors.length - 1 ] ;
+		var domRange = new FCKDomRange( FCKTools.GetElementWindow( firstCursor.GetTextNode() ) ) ;
+		var w3cRange = domRange._Range = domRange.CreateRange() ;
+		w3cRange.setStart( firstCursor.GetTextNode(), firstCursor.GetIndex() ) ;
+		w3cRange.setEnd( lastCursor.GetTextNode(), lastCursor.GetIndex() + 1 ) ;
+		domRange._UpdateElementInfo() ;
+		return domRange ;
+	},
+
+	Highlight : function()
+	{
+		if ( this._cursors.length < 1 )
+			return ;
+
+		var domRange = this.ToDomRange() ;
+		HighlightStyle.ApplyToRange( domRange, false, true ) ;
+		this._highlightRange = domRange ;
+
+		var charRange = CharacterRange.CreateFromDomRange( domRange ) ;
+		var focusNode = domRange.StartNode ;
+		if ( focusNode.nodeType != 1 )
+			focusNode = focusNode.parentNode ;
+		FCKDomTools.ScrollIntoView( focusNode, false ) ;
+		this._cursors = charRange._cursors ;
+	},
+
+	RemoveHighlight : function()
+	{
+		if ( this._highlightRange )
 		{
-			for (var j = 0 ; j < cursor.childNodes.length ; j++ )
-			{
-				var candidate = cursor.childNodes[j] ;
-				if ( candidate.nodeType == 3 &&
-						candidate.previousSibling &&
-						candidate.previousSibling.nodeType == 3 )
-					continue ;
-				currentIndex++ ;
-				if ( currentIndex == target )
-				{
-					cursor = candidate ;
-					break ;
-				}
-			}
-			if ( currentIndex < target )
-				return null ;
+			HighlightStyle.RemoveFromRange( this._highlightRange, false, true ) ;
+			var charRange = CharacterRange.CreateFromDomRange( this._highlightRange ) ;
+			this._cursors = charRange._cursors ;
+			this._highlightRange = null ;
 		}
-		else
-		{
-			if ( i != bookmark.length - 1 )
-				return null ;
-			while ( target >= cursor.length && cursor.nextSibling && cursor.nextSibling.nodeType == 3 )
-			{
-				target -= cursor.length ;
-				cursor = cursor.nextSibling ;
-			}
-			cursor = cursor.nodeValue.charAt( target ) ;
-			if ( cursor == "" )
-				cursor = null ;
-		}
+	},
+
+	GetHighlightDomRange : function()
+	{
+		return this._highlightRange;
+	},
+
+	MoveNext : function()
+	{
+		var next = this._cursors[ this._cursors.length - 1 ].Clone() ;
+		var retval = next.MoveNext() ;
+		if ( retval )
+			this._cursors = [] ;
+		this._cursors.push( next ) ;
+		if ( this._cursors.length > this._maxLength )
+			this._cursors.shift() ;
+		return retval ;
+	},
+
+	MoveBack : function()
+	{
+		var prev = this._cursors[0].Clone() ;
+		var retval = prev.MoveBack() ;
+		if ( retval )
+			this._cursors = [] ;
+		this._cursors.unshift( prev ) ;
+		if ( this._cursors.length > this._maxLength )
+			this._cursors.pop() ;
+		return retval ;
+	},
+
+	GetEndCharacter : function()
+	{
+		if ( this._cursors.length < 1 )
+			return null ;
+		var retval = this._cursors[ this._cursors.length - 1 ].GetCharacter() ;
+		return retval ;
+	},
+
+	GetNextRange : function( len )
+	{
+		if ( this._cursors.length == 0 )
+			return null ;
+		var cur = this._cursors[ this._cursors.length - 1 ].Clone() ;
+		cur.MoveNext() ;
+		return new CharacterRange( cur, len ) ;
+	},
+
+	GetCursors : function()
+	{
+		return this._cursors ;
 	}
-	return cursor ;
-}
+} ;
 
-// With this function, we can treat the bookmark as an iterator for DFS.
-function NextPosition( bookmark )
+CharacterRange.CreateFromDomRange = function( domRange )
 {
-	// See if there's anything further down the tree.
-	var next = bookmark.concat( [0] ) ;
-	if ( GetData( next ) != null )
-		return next ;
+	var w3cRange = domRange._Range ;
+	var startContainer = w3cRange.startContainer ;
+	var endContainer = w3cRange.endContainer ;
+	var startTextNode, startIndex, endTextNode, endIndex ;
 
-	// Nothing down there? See if there's anything next to me.
-	var next = bookmark.slice( 0, bookmark.length - 1 ).concat( [ bookmark[ bookmark.length - 1 ] + 1 ] ) ;
-	if ( GetData( next ) != null )
-		return next ;
+	if ( startContainer.nodeType == 3 )
+	{
+		startTextNode = startContainer ;
+		startIndex = w3cRange.startOffset ;
+	}
+	else if ( domRange.StartNode.nodeType == 3 )
+	{
+		startTextNode = domRange.StartNode ;
+		startIndex = 0 ;
+	}
+	else
+	{
+		startTextNode = GetNextNonEmptyTextNode( domRange.StartNode, domRange.StartNode.parentNode ) ;
+		if ( !startTextNode )
+			return null ;
+		startIndex = 0 ;
+	}
 
-	// Nothing even next to me? See if there's anything next to my ancestors.
-	for ( var i = bookmark.length - 1 ; i > 0 ; i-- )
+	if ( endContainer.nodeType == 3 && w3cRange.endOffset > 0 )
 	{
-		var next = bookmark.slice( 0, i - 1 ).concat( [ bookmark[ i - 1 ] + 1 ] ) ;
-		if ( GetData( next ) != null )
-			return next ;
+		endTextNode = endContainer ;
+		endIndex = w3cRange.endOffset - 1 ;
 	}
+	else
+	{
+		endTextNode = domRange.EndNode ;
+		while ( endTextNode.nodeType != 3 )
+			endTextNode = endTextNode.lastChild ;
+		endIndex = endTextNode.length - 1 ;
+	}
 
-	// There's absolutely nothing left to walk, return null.
-	return null ;
-}
-
-// Is this character a unicode whitespace?
-// Reference: http://unicode.org/Public/UNIDATA/PropList.txt
-function CheckIsWhitespace( c )
-{
-	var code = c.charCodeAt( 0 );
-	if ( code >= 9 && code <= 0xd )
-		return true;
-	if ( code >= 0x2000 && code <= 0x200a )
-		return true;
-	switch ( code )
+	var cursors = [] ;
+	var current = new CharacterCursor( startTextNode, startIndex ) ;
+	cursors.push( current ) ;
+	if ( !( current.GetTextNode() == endTextNode && current.GetIndex() == endIndex ) && !domRange.CheckIsEmpty() )
 	{
-		case 0x20:
-		case 0x85:
-		case 0xa0:
-		case 0x1680:
-		case 0x180e:
-		case 0x2028:
-		case 0x2029:
-		case 0x202f:
-		case 0x205f:
-		case 0x3000:
-			return true;
-		default:
-			return false;
+		do
+		{
+			current = current.Clone() ;
+			current.MoveNext() ;
+			cursors.push( current ) ;
+		}
+		while ( !( current.GetTextNode() == endTextNode && current.GetIndex() == endIndex ) ) ;
 	}
+
+	return new CharacterRange( cursors, cursors.length ) ;
 }
 
 // Knuth-Morris-Pratt Algorithm for stream input
 KMP_NOMATCH = 0 ;
 KMP_ADVANCED = 1 ;
 KMP_MATCHED = 2 ;
-function KmpMatch( pattern, ignoreCase )
+KmpMatch = function( pattern, ignoreCase )
 {
 	var overlap = [ -1 ] ;
 	for ( var i = 0 ; i < pattern.length ; i++ )
@@ -251,7 +329,7 @@
 		this.Pattern = pattern ;
 }
 KmpMatch.prototype = {
-	"FeedCharacter" : function( c )
+	FeedCharacter : function( c )
 	{
 		if ( this._IgnoreCase )
 			c = c.toLowerCase();
@@ -277,161 +355,188 @@
 
 		return null ;
 	},
-	"Reset" : function()
+
+	Reset : function()
 	{
 		this._State = 0 ;
 	}
 };
 
-function _Find()
+// Place a range at the start of document.
+function OnLoad()
 {
-	// Start from the end of the current selection.
-	var matcher = new KmpMatch( GetSearchString(), ! GetCheckCase() ) ;
-	var cursor = GlobalRange.CreateBookmark2().End ;
-	var matchState = KMP_NOMATCH ;
-	var matchBookmark = null ;
-	var matchBookmarkStart = [] ;
+	// First of all, translate the dialog box texts.
+	oEditor.FCKLanguageManager.TranslatePage( document ) ;
 
-	// Match finding.
-	while ( true )
+	// Show the appropriate tab at startup.
+	if ( dialogArguments.CustomValue == 'Find' )
 	{
-		// Perform KMP stream matching.
-		//	- Reset KMP matcher if we encountered a block element.
-		var data = GetData( cursor ) ;
-		if ( data )
-		{
-			if ( data.tagName )
-			{
-				if ( oEditor.FCKListsLib.BlockElements[ data.tagName.toLowerCase() ] )
-				{
-					matcher.Reset();
-					matchBookmarkStart = [] ;
-				}
-			}
-			else if ( data.charAt != undefined )
-			{
-				matchState = matcher.FeedCharacter(data) ;
+		dialog.SetSelectedTab( 'Find' ) ;
+		dialog.SetAutoSize( true ) ;
+	}
+	else
+		dialog.SetSelectedTab( 'Replace' ) ;
 
-				// No possible match of any useful substring in the pattern for the currently scanned character.
-				// So delete any positional information.
-				if ( matchState == KMP_NOMATCH )
-					matchBookmarkStart = [] ;
-				// We've matched something, but it's not a complete match, so let's just mark down the position for backtracking later.
-				else if ( matchState == KMP_ADVANCED )
-				{
-					matchBookmarkStart.push( cursor.concat( [] ) ) ;
-					if ( matchBookmarkStart.length > matcher._State )
-						matchBookmarkStart.shift() ;
-				}
-				// Found a complete match! Mark down the ending position as well.
-				else if ( matchState == KMP_MATCHED )
-				{
-					// It is possible to get a KMP_MATCHED without KMP_ADVANCED when the match pattern is only 1 character.
-					// So need to check and mark down the starting position as well.
-					if ( matchBookmarkStart.length == 0 )
-						matchBookmarkStart = [cursor.concat( [] )] ;
+	SelectField( 'txtFind' + dialogArguments.CustomValue ) ;
+}
 
-					matchBookmark = { 'Start' : matchBookmarkStart.shift(), 'End' : cursor.concat( [] ) } ;
-					matchBookmark.End[ matchBookmark.End.length - 1 ]++;
+function btnStat()
+{
+	GetE('btnReplace').disabled =
+		GetE('btnReplaceAll').disabled =
+			GetE('btnFind').disabled =
+				( GetE(idMap["FindText"]).value.length == 0 ) ;
+}
 
-					// Wait, do we have to match a whole word?
-					// If yes, carry out additional checks on what we've got.
-					if ( GetMatchWord() )
-					{
-						var startOk = false ;
-						var endOk = false ;
-						var start = matchBookmark.Start ;
-						var end = matchBookmark.End ;
-						if ( start[ start.length - 1 ] == 0 )
-							startOk = true ;
-						else
-						{
-							var cursorBeforeStart = start.slice( 0, start.length - 1 ) ;
-							cursorBeforeStart.push( start[ start.length - 1 ] - 1 ) ;
-							var dataBeforeStart = GetData( cursorBeforeStart ) ;
-							if ( dataBeforeStart == null || dataBeforeStart.charAt == undefined )
-								startOk = true ;
-							else if ( CheckIsWhitespace( dataBeforeStart ) )
-								startOk = true ;
-						}
+function btnStatDelayed()
+{
+	setTimeout( btnStat, 1 ) ;
+}
 
-						// this is already one character beyond the last char, no need to move
-						var cursorAfterEnd = end ;
-						var dataAfterEnd = GetData( cursorAfterEnd );
-						if ( dataAfterEnd == null || dataAfterEnd.charAt == undefined )
-							endOk = true ;
-						else if ( CheckIsWhitespace( dataAfterEnd ) )
-							endOk = true ;
+function GetSearchString()
+{
+	return GetE(idMap['FindText']).value ;
+}
 
-						if ( startOk && endOk )
-							break ;
-						else
-							matcher.Reset() ;
-					}
-					else
-						break ;
-				}
-			}
-		}
+function GetReplaceString()
+{
+	return GetE("txtReplace").value ;
+}
 
-		// Perform DFS across the document, until we've reached the end.
-		cursor = NextPosition( cursor ) ;
-		if ( cursor == null )
-			break;
+function GetCheckCase()
+{
+	return !! ( GetE(idMap['CheckCase']).checked ) ;
+}
+
+function GetMatchWord()
+{
+	return !! ( GetE(idMap['CheckWord']).checked ) ;
+}
+
+/* Is this character a unicode whitespace or a punctuation mark?
+ * References:
+ * http://unicode.org/Public/UNIDATA/PropList.txt (whitespaces)
+ * http://php.chinaunix.net/manual/tw/ref.regex.php (punctuation marks)
+ */
+function CheckIsWordSeparator( c )
+{
+	var code = c.charCodeAt( 0 );
+	if ( code >= 9 && code <= 0xd )
+		return true;
+	if ( code >= 0x2000 && code <= 0x200a )
+		return true;
+	switch ( code )
+	{
+		case 0x20:
+		case 0x85:
+		case 0xa0:
+		case 0x1680:
+		case 0x180e:
+		case 0x2028:
+		case 0x2029:
+		case 0x202f:
+		case 0x205f:
+		case 0x3000:
+			return true;
+		default:
 	}
+	return /[.,"'?!;:]/.test( c ) ;
+}
 
-	// If we've found a match, highlight the match.
-	if ( matchState == KMP_MATCHED )
+FindRange = null ;
+function _Find()
+{
+	var searchString = GetSearchString() ;
+	if ( !FindRange )
+		FindRange = new CharacterRange( new CharacterCursor( EditorDocument ), searchString.length ) ;
+	else
 	{
-		GlobalRange.MoveToBookmark2( matchBookmark ) ;
-		Highlight() ;
-		var focus = GlobalRange._Range.endContainer ;
-		while ( focus && focus.nodeType != 1 )
-			focus = focus.parentNode ;
+		FindRange.RemoveHighlight() ;
+		FindRange = FindRange.GetNextRange( searchString.length ) ;
+	}
+	var matcher = new KmpMatch( searchString, ! GetCheckCase() ) ;
+	var matchState = KMP_NOMATCH ;
+	var character = '%' ;
 
-		if ( focus )
+	while ( character != null )
+	{
+		while ( ( character = FindRange.GetEndCharacter() ) )
 		{
-			if ( oEditor.FCKBrowserInfo.IsSafari )
-				oEditor.FCKDomTools.ScrollIntoView( focus, false ) ;
-			else
-				focus.scrollIntoView( false ) ;
+			matchState = matcher.FeedCharacter( character ) ;
+			if ( matchState == KMP_MATCHED )
+				break ;
+			if ( FindRange.MoveNext() )
+				matcher.Reset() ;
 		}
 
-		return true ;
+		if ( matchState == KMP_MATCHED )
+		{
+			if ( GetMatchWord() )
+			{
+				var cursors = FindRange.GetCursors() ;
+				var head = cursors[ cursors.length - 1 ].Clone() ;
+				var tail = cursors[0].Clone() ;
+				if ( !head.MoveNext() && !CheckIsWordSeparator( head.GetCharacter() ) )
+					continue ;
+				if ( !tail.MoveBack() && !CheckIsWordSeparator( tail.GetCharacter() ) )
+					continue ;
+			}
+
+			FindRange.Highlight() ;
+			return true ;
+		}
 	}
-	else
-	{
-		ResetGlobalRange() ;
-		return false ;
-	}
+
+	FindRange = null ;
+	return false ;
 }
 
 function Find()
 {
 	if ( ! _Find() )
-	{
-		ClearHighlight() ;
 		alert( FCKLang.DlgFindNotFoundMsg ) ;
-	}
 }
 
 function Replace()
 {
-	if ( GlobalRange.CheckIsCollapsed() )
+	var saveUndoStep = function( selectRange )
 	{
-		if (! _Find() )
+		var ieRange ;
+		if ( oEditor.FCKBrowserInfo.IsIE )
+			ieRange = document.selection.createRange() ;
+
+		selectRange.Select() ;
+		oEditor.FCKUndo.SaveUndoStep() ;
+		var cloneRange = selectRange.Clone() ;
+		cloneRange.Collapse( false ) ;
+		cloneRange.Select() ;
+
+		if ( ieRange )
+			setTimeout( function(){ ieRange.select() ; }, 1 ) ;
+	}
+
+	if ( FindRange && FindRange.GetHighlightDomRange() )
+	{
+		var range = FindRange.GetHighlightDomRange() ;
+		var bookmark = range.CreateBookmark() ;
+		FindRange.RemoveHighlight() ;
+		range.MoveToBookmark( bookmark ) ;
+
+		saveUndoStep( range ) ;
+		range.DeleteContents() ;
+		range.InsertNode( EditorDocument.createTextNode( GetReplaceString() ) ) ;
+		range._UpdateElementInfo() ;
+
+		FindRange = CharacterRange.CreateFromDomRange( range ) ;
+	}
+	else
+	{
+		if ( ! _Find() )
 		{
-			ClearHighlight() ;
+			FindRange && FindRange.RemoveHighlight() ;
 			alert( FCKLang.DlgFindNotFoundMsg ) ;
 		}
 	}
-	else
-	{
-		oEditor.FCKUndo.SaveUndoStep() ;
-		GlobalRange.DeleteContents() ;
-		GlobalRange.InsertNode( oEditor.FCK.EditorDocument.createTextNode( GetReplaceString() ) ) ;
-		GlobalRange.Collapse( false ) ;
-	}
 }
 
 function ReplaceAll()
@@ -441,21 +546,34 @@
 
 	while ( _Find() )
 	{
-		dialog.Selection.EnsureSelection() ;
-		GlobalRange.DeleteContents() ;
-		GlobalRange.InsertNode( oEditor.FCK.EditorDocument.createTextNode( GetReplaceString() ) ) ;
-		GlobalRange.Collapse( false ) ;
+		var range = FindRange.GetHighlightDomRange() ;
+		var bookmark = range.CreateBookmark() ;
+		FindRange.RemoveHighlight() ;
+		range.MoveToBookmark( bookmark) ;
+
+		range.DeleteContents() ;
+		range.InsertNode( EditorDocument.createTextNode( GetReplaceString() ) ) ;
+		range._UpdateElementInfo() ;
+
+		FindRange = CharacterRange.CreateFromDomRange( range ) ;
 		replaceCount++ ;
 	}
 	if ( replaceCount == 0 )
 	{
-		ClearHighlight() ;
+		FindRange && FindRange.RemoveHighlight() ;
 		alert( FCKLang.DlgFindNotFoundMsg ) ;
 	}
 	dialog.Cancel() ;
 }
 
-window.onunload = function(){ ClearHighlight() ; }
+window.onunload = function()
+{
+	if ( FindRange )
+	{
+		FindRange.RemoveHighlight() ;
+		FindRange.ToDomRange().Select() ;
+	}
+}
 	</script>
 </head>
 <body onload="OnLoad()" style="overflow: hidden">

Modified: pal-wcm/trunk/src/main/webapp/fckeditor/editor/dialog/fck_spellerpages.html
===================================================================
--- pal-wcm/trunk/src/main/webapp/fckeditor/editor/dialog/fck_spellerpages.html	2008-09-03 08:05:44 UTC (rev 1112)
+++ pal-wcm/trunk/src/main/webapp/fckeditor/editor/dialog/fck_spellerpages.html	2008-09-04 02:44:24 UTC (rev 1113)
@@ -52,7 +52,12 @@
 function oSpeller_OnFinished( numberOCorrections )
 {
 	if ( numberOCorrections > 0 )
-		oEditor.FCK.SetData( document.getElementById('txtHtml').value ) ;
+	{
+		oEditor.FCKUndo.SaveUndoStep() ;
+		oEditor.FCK.EditorDocument.body.innerHTML = document.getElementById('txtHtml').value ;
+		if ( oEditor.FCKBrowserInfo.IsIE )
+			oEditor.FCKSelection.Collapse( true ) ;
+	}
 	window.parent.Cancel() ;
 }
 

Modified: pal-wcm/trunk/src/main/webapp/fckeditor/editor/fckdialog.html
===================================================================
--- pal-wcm/trunk/src/main/webapp/fckeditor/editor/fckdialog.html	2008-09-03 08:05:44 UTC (rev 1112)
+++ pal-wcm/trunk/src/main/webapp/fckeditor/editor/fckdialog.html	2008-09-04 02:44:24 UTC (rev 1113)
@@ -27,6 +27,8 @@
 		<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
 		<meta name="robots" content="noindex, nofollow" />
 		<script type="text/javascript">
+// <![CDATA[
+
 // Domain relaxation logic.
 (function()
 {
@@ -190,6 +192,19 @@
 		}
 	}
 
+	/**
+	 * IE6 has a similar bug where it sometimes thinks $('contents') has an
+	 * offsetHeight of 0 (#2114).
+	 */
+	if ( FCKBrowserInfo.IsIE && !FCKBrowserInfo.IsIE7 )
+	{
+		var originalRefreshContainerSize = retval.RefreshContainerSize ;
+		retval.RefreshContainerSize = function()
+		{
+			FCKTools.SetTimeout( originalRefreshContainerSize, 1, retval ) ;
+		}
+	}
+
 	window.onresize = function()
 	{
 		retval.RefreshContainerSize() ;
@@ -232,10 +247,13 @@
 
 			var throbberParent = $( 'throbberBlock' ) ;
 
-			// Create the throbber blocks.
-			var classIds = [ 1,2,3,4,5,4,3,2 ] ;
-			while ( classIds.length > 0 )
-				throbberParent.appendChild( document.createElement( 'div' ) ).className = ' throbber_' + classIds.shift() ;
+			if (throbberParent.childNodes.length == 0)
+			{
+				// Create the throbber blocks.
+				var classIds = [ 1,2,3,4,5,4,3,2 ] ;
+				while ( classIds.length > 0 )
+					throbberParent.appendChild( document.createElement( 'div' ) ).className = ' throbber_' + classIds.shift() ;
+			}
 
 			// Center the throbber.
 			var frm = $( 'contents' ) ;
@@ -248,6 +266,10 @@
 			// Show it.
 			throbberParent.style.visibility = ''  ;
 
+			// Hide tabs and buttons:
+			$( 'Tabs' ).style.visibility = 'hidden' ;
+			$( 'PopupButtons' ).style.visibility = 'hidden' ;
+
 			// Setup the animation interval.
 			timer = setInterval( updateThrobber, 100 ) ;
 		},
@@ -260,9 +282,11 @@
 				timer = null ;
 			}
 
-			var throbberParent = document.getElementById( 'throbberBlock' ) ;
-			if ( throbberParent )
-				FCKDomTools.RemoveNode( throbberParent ) ;
+			$( 'throbberBlock' ).style.visibility = 'hidden' ;
+
+			// Show tabs and buttons:
+			$( 'Tabs' ).style.visibility = '' ;
+			$( 'PopupButtons' ).style.visibility = '' ;
 		}
 	} ;
 }() ;
@@ -617,7 +641,7 @@
 		E.FCKLanguageManager.TranslatePage( document ) ;
 
 		// Create the IFRAME that holds the dialog contents.
-		$( 'innerContents' ).innerHTML = '<iframe id="frmMain" src="' + Args().Page + '" name="frmMain" frameborder="0" width="100%" height="100%" scrolling="auto" style="visibility: hidden;" allowtransparency="true"></iframe>' ;
+		$( 'innerContents' ).innerHTML = '<iframe id="frmMain" src="' + Args().Page + '" name="frmMain" frameborder="0" width="100%" height="100%" scrolling="auto" style="visibility: hidden;" allowtransparency="true"><\/iframe>' ;
 	} ;
 
 	window.InnerDialogLoaded = function()
@@ -727,6 +751,7 @@
 		}
 	} ;
 })() ;
+// ]]>
 		</script>
 	</head>
 	<body onload="Init();" class="PopupBody">
@@ -734,7 +759,9 @@
 			<div id="header">
 				<div id="TitleArea" class="PopupTitle PopupTitleBorder">
 					<script type="text/javascript">
+// <![CDATA[
 document.write( Args().Title ) ;
+// ]]>
 					</script>
 					<div id="closeButton" onclick="Cancel();"></div>
 				</div>
@@ -772,12 +799,14 @@
 		<div class="cover" id="cover" style="display:none"></div>
 		<div id="throbberBlock" style="position: absolute; visibility: hidden"></div>
 		<script type="text/javascript">
+// <![CDATA[
 			// Set the class name for language direction.
 			document.body.className += ' ' + langDir ;
 
 			var cover = $( 'cover' ) ;
 			cover.style.backgroundColor = FCKConfig.BackgroundBlockerColor ;
 			FCKDomTools.SetOpacity( cover, FCKConfig.BackgroundBlockerOpacity ) ;
+// ]]>
 		</script>
 	</body>
 </html>

Modified: pal-wcm/trunk/src/main/webapp/fckeditor/editor/fckeditor.html
===================================================================
--- pal-wcm/trunk/src/main/webapp/fckeditor/editor/fckeditor.html	2008-09-03 08:05:44 UTC (rev 1112)
+++ pal-wcm/trunk/src/main/webapp/fckeditor/editor/fckeditor.html	2008-09-04 02:44:24 UTC (rev 1113)
@@ -29,6 +29,37 @@
 	<meta http-equiv="Cache-Control" content="public">
 	<script type="text/javascript">
 
+// #1645: Alert the user if opening FCKeditor in FF3 from local filesystem
+// without security.fileuri.strict_origin_policy disabled.
+if ( document.location.protocol == 'file:' )
+{
+	try
+	{
+		window.parent.document.domain ;
+	}
+	catch ( e )
+	{
+		window.addEventListener( 'load', function()
+			{
+				document.body.innerHTML = '\
+					<div style="border: 1px red solid; font-family: arial; font-size: 12px; color: red; padding:10px;">\
+						<p>\
+							<b>Your browser security settings don\'t allow FCKeditor to be opened from\
+							the local filesystem.<\/b>\
+						<\/p>\
+						<p>\
+							Please open the <b>about:config<\/b> page and disable the\
+							&quot;security.fileuri.strict_origin_policy&quot; option; then load this page again.\
+						<\/p>\
+						<p>\
+							Check our <a href="http://docs.fckeditor.net/FCKeditor_2.x/Developers_Guide/FAQ#ff3perms">FAQ<\/a>\
+							for more information.\
+						<\/p>\
+					<\/div>' ;
+			}, false ) ;
+	}
+}
+
 // Save a reference to the default domain.
 var FCK_ORIGINAL_DOMAIN ;
 
@@ -134,10 +165,17 @@
 
 FCKConfig_PreProcess() ;
 
-// CSS minified by http://iceyboard.no-ip.org/projects/css_compressor
-var FCK_InternalCSS			= FCKTools.FixCssUrls( FCKConfig.FullBasePath + 'css/', 'html{min-height:100%}table.FCK__ShowTableBorders,table.FCK__ShowTableBorders td,table.FCK__ShowTableBorders th{border:#d3d3d3 1px solid}form{border:1px dotted #F00;padding:2px}.FCK__Flash{border:#a9a9a9 1px solid;background-position:center center;background-image:url(images/fck_flashlogo.gif);background-repeat:no-repeat;width:80px;height:80px}.FCK__Anchor{border:1px dotted #00F;background-position:center center;background-image:url(images/fck_anchor.gif);background-repeat:no-repeat;width:16px;height:15px;vertical-align:middle}.FCK__AnchorC{border:1px dotted #00F;background-position:1px center;background-image:url(images/fck_anchor.gif);background-repeat:no-repeat;padding-left:18px}a[name]{border:1px dotted #00F;background-position:0 center;background-image:url(images/fck_anchor.gif);background-repeat:no-repeat;padding-left:18px}.FCK__PageBreak{background-position:center center;background-image:url(images/fck_pagebreak.gif);background-repeat:no-repeat;clear:both;display:block;float:none;width:100%;border-top:#999 1px dotted;border-bottom:#999 1px dotted;border-right:0;border-left:0;height:5px}.FCK__InputHidden{width:19px;height:18px;background-image:url(images/fck_hiddenfield.gif);background-repeat:no-repeat;vertical-align:text-bottom;background-position:center center}.FCK__ShowBlocks p,.FCK__ShowBlocks div,.FCK__ShowBlocks pre,.FCK__ShowBlocks address,.FCK__ShowBlocks blockquote,.FCK__ShowBlocks h1,.FCK__ShowBlocks h2,.FCK__ShowBlocks h3,.FCK__ShowBlocks h4,.FCK__ShowBlocks h5,.FCK__ShowBlocks h6{background-repeat:no-repeat;border:1px dotted gray;padding-top:8px;padding-left:8px}.FCK__ShowBlocks p{background-image:url(images/block_p.png)}.FCK__ShowBlocks div{background-image:url(images/block_div.png)}.FCK__ShowBlocks pre{background-image:url(images/block_pre.png)}.FCK__ShowBlocks address{background-image:url(images/block_address.png)}.FCK__ShowBlocks blockquote{background-image:url(images/block_blockquote.png)}.FCK__ShowBlocks h1{background-image:url(images/block_h1.png)}.FCK__ShowBlocks h2{background-image:url(images/block_h2.png)}.FCK__ShowBlocks h3{background-image:url(images/block_h3.png)}.FCK__ShowBlocks h4{background-image:url(images/block_h4.png)}.FCK__ShowBlocks h5{background-image:url(images/block_h5.png)}.FCK__ShowBlocks h6{background-image:url(images/block_h6.png)}' ) ;
-var FCK_ShowTableBordersCSS	= FCKTools.FixCssUrls( FCKConfig.FullBasePath + 'css/', 'table:not([border]),table:not([border]) > tr > td,table:not([border]) > tr > th,table:not([border]) > tbody > tr > td,table:not([border]) > tbody > tr > th,table:not([border]) > thead > tr > td,table:not([border]) > thead > tr > th,table:not([border]) > tfoot > tr > td,table:not([border]) > tfoot > tr > th,table[border=\"0\"],table[border=\"0\"] > tr > td,table[border=\"0\"] > tr > th,table[border=\"0\"] > tbody > tr > td,table[border=\"0\"] > tbody > tr > th,table[border=\"0\"] > thead > tr > td,table[border=\"0\"] > thead > tr > th,table[border=\"0\"] > tfoot > tr > td,table[border=\"0\"] > tfoot > tr > th{border:#d3d3d3 1px dotted}' ) ;
+// Load the full debug script.
+if ( FCKConfig.Debug )
+	LoadScript( '_source/internals/fckdebug.js' ) ;
 
+	</script>
+	<script type="text/javascript">
+
+// CSS minified by http://iceyboard.no-ip.org/projects/css_compressor (see _dev/css_compression.txt).
+var FCK_InternalCSS			= FCKTools.FixCssUrls( FCKConfig.BasePath + 'css/', 'html{min-height:100%}table.FCK__ShowTableBorders,table.FCK__ShowTableBorders td,table.FCK__ShowTableBorders th{border:#d3d3d3 1px solid}form{border:1px dotted #F00;padding:2px}.FCK__Flash{border:#a9a9a9 1px solid;background-position:center center;background-image:url(images/fck_flashlogo.gif);background-repeat:no-repeat;width:80px;height:80px}.FCK__UnknownObject{border:#a9a9a9 1px solid;background-position:center center;background-image:url(images/fck_plugin.gif);background-repeat:no-repeat;width:80px;height:80px}.FCK__Anchor{border:1px dotted #00F;background-position:center center;background-image:url(images/fck_anchor.gif);background-repeat:no-repeat;width:16px;height:15px;vertical-align:middle}.FCK__AnchorC{border:1px dotted #00F;background-position:1px center;background-image:url(images/fck_anchor.gif);background-repeat:no-repeat;padding-left:18px}a[name]{border:1px dotted #00F;background-position:0 center;background-image:url(images/fck_anchor.gif);background-repeat:no-repeat;padding-left:18px}.FCK__PageBreak{background-position:center center;background-image:url(images/fck_pagebreak.gif);background-repeat:no-repeat;clear:both;display:block;float:none;width:100%;border-top:#999 1px dotted;border-bottom:#999 1px dotted;border-right:0;border-left:0;height:5px}.FCK__InputHidden{width:19px;height:18px;background-image:url(images/fck_hiddenfield.gif);background-repeat:no-repeat;vertical-align:text-bottom;background-position:center center}.FCK__ShowBlocks p,.FCK__ShowBlocks div,.FCK__ShowBlocks pre,.FCK__ShowBlocks address,.FCK__ShowBlocks blockquote,.FCK__ShowBlocks h1,.FCK__ShowBlocks h2,.FCK__ShowBlocks h3,.FCK__ShowBlocks h4,.FCK__ShowBlocks h5,.FCK__ShowBlocks h6{background-repeat:no-repeat;border:1px dotted gray;padding-top:8px;padding-left:8px}.FCK__ShowBlocks p{background-image:url(images/block_p.png)}.FCK__ShowBlocks div{background-image:url(images/block_div.png)}.FCK__ShowBlocks pre{background-image:url(images/block_pre.png)}.FCK__ShowBlocks address{background-image:url(images/block_address.png)}.FCK__ShowBlocks blockquote{background-image:url(images/block_blockquote.png)}.FCK__ShowBlocks h1{background-image:url(images/block_h1.png)}.FCK__ShowBlocks h2{background-image:url(images/block_h2.png)}.FCK__ShowBlocks h3{background-image:url(images/block_h3.png)}.FCK__ShowBlocks h4{background-image:url(images/block_h4.png)}.FCK__ShowBlocks h5{background-image:url(images/block_h5.png)}.FCK__ShowBlocks h6{background-image:url(images/block_h6.png)}' ) ;
+var FCK_ShowTableBordersCSS	= FCKTools.FixCssUrls( FCKConfig.BasePath + 'css/', 'table:not([border]),table:not([border]) > tr > td,table:not([border]) > tr > th,table:not([border]) > tbody > tr > td,table:not([border]) > tbody > tr > th,table:not([border]) > thead > tr > td,table:not([border]) > thead > tr > th,table:not([border]) > tfoot > tr > td,table:not([border]) > tfoot > tr > th,table[border=\"0\"],table[border=\"0\"] > tr > td,table[border=\"0\"] > tr > th,table[border=\"0\"] > tbody > tr > td,table[border=\"0\"] > tbody > tr > th,table[border=\"0\"] > thead > tr > td,table[border=\"0\"] > thead > tr > th,table[border=\"0\"] > tfoot > tr > td,table[border=\"0\"] > tfoot > tr > th{border:#d3d3d3 1px dotted}' ) ;
+
 // Popup the debug window if debug mode is set to true. It guarantees that the
 // first debug message will not be lost.
 if ( FCKConfig.Debug )
@@ -215,7 +253,8 @@
 		if ( FCKBrowserInfo.IsGecko )
 			FCKTools.RunFunction( window.onresize ) ;
 
-		_AttachFormSubmitToAPI() ;
+		if ( !FCKConfig.PreventSubmitHandler )
+			_AttachFormSubmitToAPI() ;
 
 		FCK.SetStatus( FCK_STATUS_COMPLETE ) ;
 

Modified: pal-wcm/trunk/src/main/webapp/fckeditor/editor/fckeditor.original.html
===================================================================
--- pal-wcm/trunk/src/main/webapp/fckeditor/editor/fckeditor.original.html	2008-09-03 08:05:44 UTC (rev 1112)
+++ pal-wcm/trunk/src/main/webapp/fckeditor/editor/fckeditor.original.html	2008-09-04 02:44:24 UTC (rev 1113)
@@ -31,6 +31,37 @@
 	@Packager.RemoveLine -->
 	<script type="text/javascript">
 
+// #1645: Alert the user if opening FCKeditor in FF3 from local filesystem
+// without security.fileuri.strict_origin_policy disabled.
+if ( document.location.protocol == 'file:' )
+{
+	try
+	{
+		window.parent.document.domain ;
+	}
+	catch ( e )
+	{
+		window.addEventListener( 'load', function()
+			{
+				document.body.innerHTML = '\
+					<div style="border: 1px red solid; font-family: arial; font-size: 12px; color: red; padding:10px;">\
+						<p>\
+							<b>Your browser security settings don\'t allow FCKeditor to be opened from\
+							the local filesystem.<\/b>\
+						<\/p>\
+						<p>\
+							Please open the <b>about:config<\/b> page and disable the\
+							&quot;security.fileuri.strict_origin_policy&quot; option; then load this page again.\
+						<\/p>\
+						<p>\
+							Check our <a href="http://docs.fckeditor.net/FCKeditor_2.x/Developers_Guide/FAQ#ff3perms">FAQ<\/a>\
+							for more information.\
+						<\/p>\
+					<\/div>' ;
+			}, false ) ;
+	}
+}
+
 // Save a reference to the default domain.
 var FCK_ORIGINAL_DOMAIN ;
 
@@ -103,7 +134,7 @@
 LoadScript( '_source/internals/fck_' + sSuffix + '.js' ) ;
 LoadScript( '_source/internals/fckconfig.js' ) ;
 
-LoadScript( '_source/internals/fckdebug.js' ) ;
+LoadScript( '_source/internals/fckdebug_empty.js' ) ;
 LoadScript( '_source/internals/fckdomtools.js' ) ;
 LoadScript( '_source/internals/fcktools.js' ) ;
 LoadScript( '_source/internals/fcktools_' + sSuffix + '.js' ) ;
@@ -237,12 +268,19 @@
 
 FCKConfig_PreProcess() ;
 
-var FCK_InternalCSS			= FCKConfig.FullBasePath + 'css/fck_internal.css' ;					// @Packager.RemoveLine
-var FCK_ShowTableBordersCSS	= FCKConfig.FullBasePath + 'css/fck_showtableborders_gecko.css' ;	// @Packager.RemoveLine
+// Load the full debug script.
+if ( FCKConfig.Debug )
+	LoadScript( '_source/internals/fckdebug.js' ) ;
+
+	</script>
+	<script type="text/javascript">
+
+var FCK_InternalCSS			= FCKConfig.BasePath + 'css/fck_internal.css' ;					// @Packager.RemoveLine
+var FCK_ShowTableBordersCSS	= FCKConfig.BasePath + 'css/fck_showtableborders_gecko.css' ;	// @Packager.RemoveLine
 /* @Packager.RemoveLine
-// CSS minified by http://iceyboard.no-ip.org/projects/css_compressor
-var FCK_InternalCSS			= FCKTools.FixCssUrls( FCKConfig.FullBasePath + 'css/', 'html{min-height:100%}table.FCK__ShowTableBorders,table.FCK__ShowTableBorders td,table.FCK__ShowTableBorders th{border:#d3d3d3 1px solid}form{border:1px dotted #F00;padding:2px}.FCK__Flash{border:#a9a9a9 1px solid;background-position:center center;background-image:url(images/fck_flashlogo.gif);background-repeat:no-repeat;width:80px;height:80px}.FCK__Anchor{border:1px dotted #00F;background-position:center center;background-image:url(images/fck_anchor.gif);background-repeat:no-repeat;width:16px;height:15px;vertical-align:middle}.FCK__AnchorC{border:1px dotted #00F;background-position:1px center;background-image:url(images/fck_anchor.gif);background-repeat:no-repeat;padding-left:18px}a[name]{border:1px dotted #00F;background-position:0 center;background-image:url(images/fck_anchor.gif);background-repeat:no-repeat;padding-left:18px}.FCK__PageBreak{background-position:center center;background-image:url(images/fck_pagebreak.gif);background-repeat:no-repeat;clear:both;display:block;float:none;width:100%;border-top:#999 1px dotted;border-bottom:#999 1px dotted;border-right:0;border-left:0;height:5px}.FCK__InputHidden{width:19px;height:18px;background-image:url(images/fck_hiddenfield.gif);background-repeat:no-repeat;vertical-align:text-bottom;background-position:center center}.FCK__ShowBlocks p,.FCK__ShowBlocks div,.FCK__ShowBlocks pre,.FCK__ShowBlocks address,.FCK__ShowBlocks blockquote,.FCK__ShowBlocks h1,.FCK__ShowBlocks h2,.FCK__ShowBlocks h3,.FCK__ShowBlocks h4,.FCK__ShowBlocks h5,.FCK__ShowBlocks h6{background-repeat:no-repeat;border:1px dotted gray;padding-top:8px;padding-left:8px}.FCK__ShowBlocks p{background-image:url(images/block_p.png)}.FCK__ShowBlocks div{background-image:url(images/block_div.png)}.FCK__ShowBlocks pre{background-image:url(images/block_pre.png)}.FCK__ShowBlocks address{background-image:url(images/block_address.png)}.FCK__ShowBlocks blockquote{background-image:url(images/block_blockquote.png)}.FCK__ShowBlocks h1{background-image:url(images/block_h1.png)}.FCK__ShowBlocks h2{background-image:url(images/block_h2.png)}.FCK__ShowBlocks h3{background-image:url(images/block_h3.png)}.FCK__ShowBlocks h4{background-image:url(images/block_h4.png)}.FCK__ShowBlocks h5{background-image:url(images/block_h5.png)}.FCK__ShowBlocks h6{background-image:url(images/block_h6.png)}' ) ;
-var FCK_ShowTableBordersCSS	= FCKTools.FixCssUrls( FCKConfig.FullBasePath + 'css/', 'table:not([border]),table:not([border]) > tr > td,table:not([border]) > tr > th,table:not([border]) > tbody > tr > td,table:not([border]) > tbody > tr > th,table:not([border]) > thead > tr > td,table:not([border]) > thead > tr > th,table:not([border]) > tfoot > tr > td,table:not([border]) > tfoot > tr > th,table[border=\"0\"],table[border=\"0\"] > tr > td,table[border=\"0\"] > tr > th,table[border=\"0\"] > tbody > tr > td,table[border=\"0\"] > tbody > tr > th,table[border=\"0\"] > thead > tr > td,table[border=\"0\"] > thead > tr > th,table[border=\"0\"] > tfoot > tr > td,table[border=\"0\"] > tfoot > tr > th{border:#d3d3d3 1px dotted}' ) ;
+// CSS minified by http://iceyboard.no-ip.org/projects/css_compressor (see _dev/css_compression.txt).
+var FCK_InternalCSS			= FCKTools.FixCssUrls( FCKConfig.BasePath + 'css/', 'html{min-height:100%}table.FCK__ShowTableBorders,table.FCK__ShowTableBorders td,table.FCK__ShowTableBorders th{border:#d3d3d3 1px solid}form{border:1px dotted #F00;padding:2px}.FCK__Flash{border:#a9a9a9 1px solid;background-position:center center;background-image:url(images/fck_flashlogo.gif);background-repeat:no-repeat;width:80px;height:80px}.FCK__UnknownObject{border:#a9a9a9 1px solid;background-position:center center;background-image:url(images/fck_plugin.gif);background-repeat:no-repeat;width:80px;height:80px}.FCK__Anchor{border:1px dotted #00F;background-position:center center;background-image:url(images/fck_anchor.gif);background-repeat:no-repeat;width:16px;height:15px;vertical-align:middle}.FCK__AnchorC{border:1px dotted #00F;background-position:1px center;background-image:url(images/fck_anchor.gif);background-repeat:no-repeat;padding-left:18px}a[name]{border:1px dotted #00F;background-position:0 center;background-image:url(images/fck_anchor.gif);background-repeat:no-repeat;padding-left:18px}.FCK__PageBreak{background-position:center center;background-image:url(images/fck_pagebreak.gif);background-repeat:no-repeat;clear:both;display:block;float:none;width:100%;border-top:#999 1px dotted;border-bottom:#999 1px dotted;border-right:0;border-left:0;height:5px}.FCK__InputHidden{width:19px;height:18px;background-image:url(images/fck_hiddenfield.gif);background-repeat:no-repeat;vertical-align:text-bottom;background-position:center center}.FCK__ShowBlocks p,.FCK__ShowBlocks div,.FCK__ShowBlocks pre,.FCK__ShowBlocks address,.FCK__ShowBlocks blockquote,.FCK__ShowBlocks h1,.FCK__ShowBlocks h2,.FCK__ShowBlocks h3,.FCK__ShowBlocks h4,.FCK__ShowBlocks h5,.FCK__ShowBlocks h6{background-repeat:no-repeat;border:1px dotted gray;padding-top:8px;padding-left:8px}.FCK__ShowBlocks p{background-image:url(images/block_p.png)}.FCK__ShowBlocks div{background-image:url(images/block_div.png)}.FCK__ShowBlocks pre{background-image:url(images/block_pre.png)}.FCK__ShowBlocks address{background-image:url(images/block_address.png)}.FCK__ShowBlocks blockquote{background-image:url(images/block_blockquote.png)}.FCK__ShowBlocks h1{background-image:url(images/block_h1.png)}.FCK__ShowBlocks h2{background-image:url(images/block_h2.png)}.FCK__ShowBlocks h3{background-image:url(images/block_h3.png)}.FCK__ShowBlocks h4{background-image:url(images/block_h4.png)}.FCK__ShowBlocks h5{background-image:url(images/block_h5.png)}.FCK__ShowBlocks h6{background-image:url(images/block_h6.png)}' ) ;
+var FCK_ShowTableBordersCSS	= FCKTools.FixCssUrls( FCKConfig.BasePath + 'css/', 'table:not([border]),table:not([border]) > tr > td,table:not([border]) > tr > th,table:not([border]) > tbody > tr > td,table:not([border]) > tbody > tr > th,table:not([border]) > thead > tr > td,table:not([border]) > thead > tr > th,table:not([border]) > tfoot > tr > td,table:not([border]) > tfoot > tr > th,table[border=\"0\"],table[border=\"0\"] > tr > td,table[border=\"0\"] > tr > th,table[border=\"0\"] > tbody > tr > td,table[border=\"0\"] > tbody > tr > th,table[border=\"0\"] > thead > tr > td,table[border=\"0\"] > thead > tr > th,table[border=\"0\"] > tfoot > tr > td,table[border=\"0\"] > tfoot > tr > th{border:#d3d3d3 1px dotted}' ) ;
 @Packager.RemoveLine */
 
 // Popup the debug window if debug mode is set to true. It guarantees that the
@@ -322,7 +360,8 @@
 		if ( FCKBrowserInfo.IsGecko )
 			FCKTools.RunFunction( window.onresize ) ;
 
-		_AttachFormSubmitToAPI() ;
+		if ( !FCKConfig.PreventSubmitHandler )
+			_AttachFormSubmitToAPI() ;
 
 		FCK.SetStatus( FCK_STATUS_COMPLETE ) ;
 

Modified: pal-wcm/trunk/src/main/webapp/fckeditor/editor/filemanager/browser/default/browser.css
===================================================================
--- pal-wcm/trunk/src/main/webapp/fckeditor/editor/filemanager/browser/default/browser.css	2008-09-03 08:05:44 UTC (rev 1112)
+++ pal-wcm/trunk/src/main/webapp/fckeditor/editor/filemanager/browser/default/browser.css	2008-09-04 02:44:24 UTC (rev 1113)
@@ -24,27 +24,24 @@
 body
 {
 	background-color: #f1f1e3;
+	margin-top:0;
+	margin-bottom:0;
 }
 
 form
 {
-	margin: 0px 0px 0px 0px ;
-	padding: 0px 0px 0px 0px ;
+	margin: 0;
+	padding: 0;
 }
 
 .Frame
 {
 	background-color: #f1f1e3;
-	border-color: #f1f1e3;
-	border-right: thin inset;
-	border-top: thin inset;
-	border-left: thin inset;
-	border-bottom: thin inset;
+	border: thin inset #f1f1e3;
 }
 
 body.FileArea
 {
-
 	background-color: #ffffff;
 	margin: 10px;
 }
@@ -70,11 +67,8 @@
 
 .Button, button
 {
-	border-right: #737357 1px solid;
-	border-top: #737357 1px solid;
-	border-left: #737357 1px solid;
 	color: #3b3b1f;
-	border-bottom: #737357 1px solid;
+	border: #737357 1px solid;
 	background-color: #c7c78f;
 }
 
@@ -87,3 +81,7 @@
 {
 	background-image: url(images/Folder.gif);
 }
+
+.fullHeight {
+	height: 100%;
+}

Modified: pal-wcm/trunk/src/main/webapp/fckeditor/editor/filemanager/browser/default/browser.html
===================================================================
--- pal-wcm/trunk/src/main/webapp/fckeditor/editor/filemanager/browser/default/browser.html	2008-09-03 08:05:44 UTC (rev 1112)
+++ pal-wcm/trunk/src/main/webapp/fckeditor/editor/filemanager/browser/default/browser.html	2008-09-04 02:44:24 UTC (rev 1113)
@@ -1,4 +1,5 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Frameset//EN"
+   "http://www.w3.org/TR/html4/frameset.dtd">
 <!--
  * FCKeditor - The text editor for Internet - http://www.fckeditor.net
  * Copyright (C) 2003-2008 Frederico Caldeira Knabben
@@ -27,7 +28,7 @@
 		<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
 		<link href="browser.css" type="text/css" rel="stylesheet">
 		<script type="text/javascript" src="js/fckxml.js"></script>
-		<script language="javascript">
+		<script type="text/javascript">
 // Automatically detect the correct document.domain (#1919).
 (function()
 {
@@ -41,7 +42,8 @@
 			var test = window.opener.document.domain ;
 			break ;
 		}
-		catch( e ) {}
+		catch( e )
+		{}
 
 		// Remove a domain part: www.mytest.example.com => mytest.example.com => example.com ...
 		d = d.replace( /.*?(?:\.|$)/, '' ) ;

Deleted: pal-wcm/trunk/src/main/webapp/fckeditor/editor/filemanager/browser/default/connectors/asp/basexml.asp
===================================================================
--- pal-wcm/trunk/src/main/webapp/fckeditor/editor/filemanager/browser/default/connectors/asp/basexml.asp	2008-09-03 08:05:44 UTC (rev 1112)
+++ pal-wcm/trunk/src/main/webapp/fckeditor/editor/filemanager/browser/default/connectors/asp/basexml.asp	2008-09-04 02:44:24 UTC (rev 1113)
@@ -1,62 +0,0 @@
-<!--
- * FCKeditor - The text editor for Internet - http://www.fckeditor.net
- * Copyright (C) 2003-2007 Frederico Caldeira Knabben
- *
- * == BEGIN LICENSE ==
- *
- * Licensed under the terms of any of the following licenses at your
- * choice:
- *
- *  - GNU General Public License Version 2 or later (the "GPL")
- *    http://www.gnu.org/licenses/gpl.html
- *
- *  - GNU Lesser General Public License Version 2.1 or later (the "LGPL")
- *    http://www.gnu.org/licenses/lgpl.html
- *
- *  - Mozilla Public License Version 1.1 or later (the "MPL")
- *    http://www.mozilla.org/MPL/MPL-1.1.html
- *
- * == END LICENSE ==
- *
- * This file include the functions that create the base XML output.
--->
-<%
-
-Sub SetXmlHeaders()
-	' Cleans the response buffer.
-	Response.Clear()
-
-	' Prevent the browser from caching the result.
-	Response.CacheControl = "no-cache"
-
-	' Set the response format.
-	Response.CharSet		= "UTF-8"
-	Response.ContentType	= "text/xml"
-End Sub
-
-Sub CreateXmlHeader( command, resourceType, currentFolder )
-	' Create the XML document header.
-	Response.Write "<?xml version=""1.0"" encoding=""utf-8"" ?>"
-
-	' Create the main "Connector" node.
-	Response.Write "<Connector command=""" & command & """ resourceType=""" & resourceType & """>"
-
-	' Add the current folder node.
-	Response.Write "<CurrentFolder path=""" & ConvertToXmlAttribute( currentFolder ) & """ url=""" & ConvertToXmlAttribute( GetUrlFromPath( resourceType, currentFolder) ) & """ />"
-End Sub
-
-Sub CreateXmlFooter()
-	Response.Write "</Connector>"
-End Sub
-
-Sub SendError( number, text )
-	SetXmlHeaders
-
-	' Create the XML document header.
-	Response.Write "<?xml version=""1.0"" encoding=""utf-8"" ?>"
-
-	Response.Write "<Connector><Error number=""" & number & """ text=""" & Server.HTMLEncode( text ) & """ /></Connector>"
-
-	Response.End
-End Sub
-%>
\ No newline at end of file

Deleted: pal-wcm/trunk/src/main/webapp/fckeditor/editor/filemanager/browser/default/connectors/asp/class_upload.asp
===================================================================
--- pal-wcm/trunk/src/main/webapp/fckeditor/editor/filemanager/browser/default/connectors/asp/class_upload.asp	2008-09-03 08:05:44 UTC (rev 1112)
+++ pal-wcm/trunk/src/main/webapp/fckeditor/editor/filemanager/browser/default/connectors/asp/class_upload.asp	2008-09-04 02:44:24 UTC (rev 1113)
@@ -1,234 +0,0 @@
-<!--
- * FCKeditor - The text editor for Internet - http://www.fckeditor.net
- * Copyright (C) 2003-2007 Frederico Caldeira Knabben
- *
- * == BEGIN LICENSE ==
- *
- * Licensed under the terms of any of the following licenses at your
- * choice:
- *
- *  - GNU General Public License Version 2 or later (the "GPL")
- *    http://www.gnu.org/licenses/gpl.html
- *
- *  - GNU Lesser General Public License Version 2.1 or later (the "LGPL")
- *    http://www.gnu.org/licenses/lgpl.html
- *
- *  - Mozilla Public License Version 1.1 or later (the "MPL")
- *    http://www.mozilla.org/MPL/MPL-1.1.html
- *
- * == END LICENSE ==
- *
- * These are the classes used to handle ASP upload without using third
- * part components (OCX/DLL).
--->
-<%
-'**********************************************
-' File:		NetRube_Upload.asp
-' Version:	NetRube Upload Class Version 2.1 Build 20050228
-' Author:	NetRube
-' Email:	NetRu****@126*****
-' Date:		02/28/2005
-' Comments:	The code for the Upload.
-'			This can free usage, but please
-'			not to delete this copyright information.
-'			If you have a modification version,
-'			Please send out a duplicate to me.
-'**********************************************
-' 文件名:	NetRube_Upload.asp
-' 版本:		NetRube Upload Class Version 2.1 Build 20050228
-' 作者:		NetRube(网络乡巴佬)
-' 电子邮件:	NetRu****@126*****
-' 日期:		2005年02月28日
-' 声明:		文件上传类
-'			本上传类可以自由使用,但请保留此版权声明信息
-'			如果您对本上传类进行修改增强,
-'			请发送一份给俺。
-'**********************************************
-
-Class NetRube_Upload
-
-	Public	File, Form
-	Private oSourceData
-	Private nMaxSize, nErr, sAllowed, sDenied
-
-	Private Sub Class_Initialize
-		nErr		= 0
-		nMaxSize	= 1048576
-
-		Set File			= Server.CreateObject("Scripting.Dictionary")
-		File.CompareMode	= 1
-		Set Form			= Server.CreateObject("Scripting.Dictionary")
-		Form.CompareMode	= 1
-
-		Set oSourceData		= Server.CreateObject("ADODB.Stream")
-		oSourceData.Type	= 1
-		oSourceData.Mode	= 3
-		oSourceData.Open
-	End Sub
-
-	Private Sub Class_Terminate
-		Form.RemoveAll
-		Set Form = Nothing
-		File.RemoveAll
-		Set File = Nothing
-
-		oSourceData.Close
-		Set oSourceData = Nothing
-	End Sub
-
-	Public Property Get Version
-		Version = "NetRube Upload Class Version 1.0 Build 20041218"
-	End Property
-
-	Public Property Get ErrNum
-		ErrNum	= nErr
-	End Property
-
-	Public Property Let MaxSize(nSize)
-		nMaxSize	= nSize
-	End Property
-
-	Public Property Let Allowed(sExt)
-		sAllowed	= sExt
-	End Property
-
-	Public Property Let Denied(sExt)
-		sDenied	= sExt
-	End Property
-
-	Public Sub GetData
-		Dim aCType
-		aCType = Split(Request.ServerVariables("HTTP_CONTENT_TYPE"), ";")
-		If aCType(0) <> "multipart/form-data" Then
-			nErr = 1
-			Exit Sub
-		End If
-
-		Dim nTotalSize
-		nTotalSize	= Request.TotalBytes
-		If nTotalSize < 1 Then
-			nErr = 2
-			Exit Sub
-		End If
-		If nMaxSize > 0 And nTotalSize > nMaxSize Then
-			nErr = 3
-			Exit Sub
-		End If
-
-		oSourceData.Write Request.BinaryRead(nTotalSize)
-		oSourceData.Position = 0
-
-		Dim oTotalData, oFormStream, sFormHeader, sFormName, bCrLf, nBoundLen, nFormStart, nFormEnd, nPosStart, nPosEnd, sBoundary
-
-		oTotalData	= oSourceData.Read
-		bCrLf		= ChrB(13) & ChrB(10)
-		sBoundary	= MidB(oTotalData, 1, InStrB(1, oTotalData, bCrLf) - 1)
-		nBoundLen	= LenB(sBoundary) + 2
-		nFormStart	= nBoundLen
-
-		Set oFormStream = Server.CreateObject("ADODB.Stream")
-
-		Do While (nFormStart + 2) < nTotalSize
-			nFormEnd	= InStrB(nFormStart, oTotalData, bCrLf & bCrLf) + 3
-
-			With oFormStream
-				.Type	= 1
-				.Mode	= 3
-				.Open
-				oSourceData.Position = nFormStart
-				oSourceData.CopyTo oFormStream, nFormEnd - nFormStart
-				.Position	= 0
-				.Type		= 2
-				.CharSet	= "UTF-8"
-				sFormHeader	= .ReadText
-				.Close
-			End With
-
-			nFormStart	= InStrB(nFormEnd, oTotalData, sBoundary) - 1
-			nPosStart	= InStr(22, sFormHeader, " name=", 1) + 7
-			nPosEnd		= InStr(nPosStart, sFormHeader, """")
-			sFormName	= Mid(sFormHeader, nPosStart, nPosEnd - nPosStart)
-
-			If InStr(45, sFormHeader, " filename=", 1) > 0 Then
-				Set File(sFormName)			= New NetRube_FileInfo
-				File(sFormName).FormName	= sFormName
-				File(sFormName).Start		= nFormEnd
-				File(sFormName).Size		= nFormStart - nFormEnd - 2
-				nPosStart					= InStr(nPosEnd, sFormHeader, " filename=", 1) + 11
-				nPosEnd						= InStr(nPosStart, sFormHeader, """")
-				File(sFormName).ClientPath	= Mid(sFormHeader, nPosStart, nPosEnd - nPosStart)
-				File(sFormName).Name		= Mid(File(sFormName).ClientPath, InStrRev(File(sFormName).ClientPath, "\") + 1)
-				File(sFormName).Ext			= LCase(Mid(File(sFormName).Name, InStrRev(File(sFormName).Name, ".") + 1))
-				nPosStart					= InStr(nPosEnd, sFormHeader, "Content-Type: ", 1) + 14
-				nPosEnd						= InStr(nPosStart, sFormHeader, vbCr)
-				File(sFormName).MIME		= Mid(sFormHeader, nPosStart, nPosEnd - nPosStart)
-			Else
-				With oFormStream
-					.Type	= 1
-					.Mode	= 3
-					.Open
-					oSourceData.Position = nPosEnd
-					oSourceData.CopyTo oFormStream, nFormStart - nFormEnd - 2
-					.Position	= 0
-					.Type		= 2
-					.CharSet	= "UTF-8"
-					Form(sFormName)	= .ReadText
-					.Close
-				End With
-			End If
-
-			nFormStart	= nFormStart + nBoundLen
-		Loop
-
-		oTotalData = ""
-		Set oFormStream = Nothing
-	End Sub
-
-	Public Sub SaveAs(sItem, sFileName)
-		If File(sItem).Size < 1 Then
-			nErr = 2
-			Exit Sub
-		End If
-
-		If Not IsAllowed(File(sItem).Ext) Then
-			nErr = 4
-			Exit Sub
-		End If
-
-		Dim oFileStream
-		Set oFileStream = Server.CreateObject("ADODB.Stream")
-		With oFileStream
-			.Type		= 1
-			.Mode		= 3
-			.Open
-			oSourceData.Position = File(sItem).Start
-			oSourceData.CopyTo oFileStream, File(sItem).Size
-			.Position	= 0
-			.SaveToFile sFileName, 2
-			.Close
-		End With
-		Set oFileStream = Nothing
-	End Sub
-
-	Private Function IsAllowed(sExt)
-		Dim oRE
-		Set oRE	= New RegExp
-		oRE.IgnoreCase	= True
-		oRE.Global		= True
-
-		If sDenied = "" Then
-			oRE.Pattern	= sAllowed
-			IsAllowed	= (sAllowed = "") Or oRE.Test(sExt)
-		Else
-			oRE.Pattern	= sDenied
-			IsAllowed	= Not oRE.Test(sExt)
-		End If
-
-		Set oRE	= Nothing
-	End Function
-End Class
-
-Class NetRube_FileInfo
-	Dim FormName, ClientPath, Path, Name, Ext, Content, Size, MIME, Start
-End Class
-%>
\ No newline at end of file

Deleted: pal-wcm/trunk/src/main/webapp/fckeditor/editor/filemanager/browser/default/connectors/asp/commands.asp
===================================================================
--- pal-wcm/trunk/src/main/webapp/fckeditor/editor/filemanager/browser/default/connectors/asp/commands.asp	2008-09-03 08:05:44 UTC (rev 1112)
+++ pal-wcm/trunk/src/main/webapp/fckeditor/editor/filemanager/browser/default/connectors/asp/commands.asp	2008-09-04 02:44:24 UTC (rev 1113)
@@ -1,183 +0,0 @@
-<!--
- * FCKeditor - The text editor for Internet - http://www.fckeditor.net
- * Copyright (C) 2003-2007 Frederico Caldeira Knabben
- *
- * == BEGIN LICENSE ==
- *
- * Licensed under the terms of any of the following licenses at your
- * choice:
- *
- *  - GNU General Public License Version 2 or later (the "GPL")
- *    http://www.gnu.org/licenses/gpl.html
- *
- *  - GNU Lesser General Public License Version 2.1 or later (the "LGPL")
- *    http://www.gnu.org/licenses/lgpl.html
- *
- *  - Mozilla Public License Version 1.1 or later (the "MPL")
- *    http://www.mozilla.org/MPL/MPL-1.1.html
- *
- * == END LICENSE ==
- *
- * This file include the functions that handle the Command requests
- * in the ASP Connector.
--->
-<%
-Sub GetFolders( resourceType, currentFolder )
-	' Map the virtual path to the local server path.
-	Dim sServerDir
-	sServerDir = ServerMapFolder( resourceType, currentFolder )
-
-	' Open the "Folders" node.
-	Response.Write "<Folders>"
-
-	Dim oFSO, oCurrentFolder, oFolders, oFolder
-	Set oFSO = Server.CreateObject( "Scripting.FileSystemObject" )
-	Set oCurrentFolder = oFSO.GetFolder( sServerDir )
-	Set oFolders = oCurrentFolder.SubFolders
-
-	For Each oFolder in oFolders
-		Response.Write "<Folder name=""" & ConvertToXmlAttribute( oFolder.name ) & """ />"
-	Next
-
-	Set oFSO = Nothing
-
-	' Close the "Folders" node.
-	Response.Write "</Folders>"
-End Sub
-
-Sub GetFoldersAndFiles( resourceType, currentFolder )
-	' Map the virtual path to the local server path.
-	Dim sServerDir
-	sServerDir = ServerMapFolder( resourceType, currentFolder )
-
-	Dim oFSO, oCurrentFolder, oFolders, oFolder, oFiles, oFile
-	Set oFSO = Server.CreateObject( "Scripting.FileSystemObject" )
-	Set oCurrentFolder = oFSO.GetFolder( sServerDir )
-	Set oFolders	= oCurrentFolder.SubFolders
-	Set oFiles		= oCurrentFolder.Files
-
-	' Open the "Folders" node.
-	Response.Write "<Folders>"
-
-	For Each oFolder in oFolders
-		Response.Write "<Folder name=""" & ConvertToXmlAttribute( oFolder.name ) & """ />"
-	Next
-
-	' Close the "Folders" node.
-	Response.Write "</Folders>"
-
-	' Open the "Files" node.
-	Response.Write "<Files>"
-
-	For Each oFile in oFiles
-		Dim iFileSize
-		iFileSize = Round( oFile.size / 1024 )
-		If ( iFileSize < 1 AND oFile.size <> 0 ) Then iFileSize = 1
-
-		Response.Write "<File name=""" & ConvertToXmlAttribute( oFile.name ) & """ size=""" & iFileSize & """ />"
-	Next
-
-	' Close the "Files" node.
-	Response.Write "</Files>"
-End Sub
-
-Sub CreateFolder( resourceType, currentFolder )
-	Dim sErrorNumber
-
-	Dim sNewFolderName
-	sNewFolderName = Request.QueryString( "NewFolderName" )
-
-	If ( sNewFolderName = "" OR InStr( 1, sNewFolderName, ".." ) > 0  ) Then
-		sErrorNumber = "102"
-	Else
-		' Map the virtual path to the local server path of the current folder.
-		Dim sServerDir
-		sServerDir = ServerMapFolder( resourceType, currentFolder & "/" & sNewFolderName )
-
-		On Error Resume Next
-
-		CreateServerFolder sServerDir
-
-		Dim iErrNumber, sErrDescription
-		iErrNumber		= err.number
-		sErrDescription	= err.Description
-
-		On Error Goto 0
-
-		Select Case iErrNumber
-			Case 0
-				sErrorNumber = "0"
-			Case 52
-				sErrorNumber = "102"	' Invalid Folder Name.
-			Case 70
-				sErrorNumber = "103"	' Security Error.
-			Case 76
-				sErrorNumber = "102"	' Path too long.
-			Case Else
-				sErrorNumber = "110"
-		End Select
-	End If
-
-	' Create the "Error" node.
-	Response.Write "<Error number=""" & sErrorNumber & """ originalNumber=""" & iErrNumber & """ originalDescription=""" & ConvertToXmlAttribute( sErrDescription ) & """ />"
-End Sub
-
-Sub FileUpload( resourceType, currentFolder )
-	Dim oUploader
-	Set oUploader = New NetRube_Upload
-	oUploader.MaxSize	= 0
-	oUploader.Allowed	= ConfigAllowedExtensions.Item( resourceType )
-	oUploader.Denied	= ConfigDeniedExtensions.Item( resourceType )
-	oUploader.GetData
-
-	Dim sErrorNumber
-	sErrorNumber = "0"
-
-	Dim sFileName, sOriginalFileName, sExtension
-	sFileName = ""
-
-	If oUploader.ErrNum > 1 Then
-		sErrorNumber = "202"
-	Else
-		' Map the virtual path to the local server path.
-		Dim sServerDir
-		sServerDir = ServerMapFolder( resourceType, currentFolder )
-
-		Dim oFSO
-		Set oFSO = Server.CreateObject( "Scripting.FileSystemObject" )
-
-		' Get the uploaded file name.
-		sFileName	= oUploader.File( "NewFile" ).Name
-		sExtension	= oUploader.File( "NewFile" ).Ext
-		sOriginalFileName = sFileName
-
-		Dim iCounter
-		iCounter = 0
-
-		Do While ( True )
-			Dim sFilePath
-			sFilePath = sServerDir & sFileName
-
-			If ( oFSO.FileExists( sFilePath ) ) Then
-				iCounter = iCounter + 1
-				sFileName = RemoveExtension( sOriginalFileName ) & "(" & iCounter & ")." & sExtension
-				sErrorNumber = "201"
-			Else
-				oUploader.SaveAs "NewFile", sFilePath
-				If oUploader.ErrNum > 0 Then sErrorNumber = "202"
-				Exit Do
-			End If
-		Loop
-	End If
-
-	Set oUploader	= Nothing
-
-	Response.Clear
-
-	Response.Write "<script type=""text/javascript"">"
-	Response.Write "window.parent.frames['frmUpload'].OnUploadCompleted(" & sErrorNumber & ",'" & Replace( sFileName, "'", "\'" ) & "') ;"
-	Response.Write "</script>"
-
-	Response.End
-End Sub
-%>
\ No newline at end of file

Deleted: pal-wcm/trunk/src/main/webapp/fckeditor/editor/filemanager/browser/default/connectors/asp/config.asp
===================================================================
--- pal-wcm/trunk/src/main/webapp/fckeditor/editor/filemanager/browser/default/connectors/asp/config.asp	2008-09-03 08:05:44 UTC (rev 1112)
+++ pal-wcm/trunk/src/main/webapp/fckeditor/editor/filemanager/browser/default/connectors/asp/config.asp	2008-09-04 02:44:24 UTC (rev 1113)
@@ -1,49 +0,0 @@
-<!--
- * FCKeditor - The text editor for Internet - http://www.fckeditor.net
- * Copyright (C) 2003-2007 Frederico Caldeira Knabben
- *
- * == BEGIN LICENSE ==
- *
- * Licensed under the terms of any of the following licenses at your
- * choice:
- *
- *  - GNU General Public License Version 2 or later (the "GPL")
- *    http://www.gnu.org/licenses/gpl.html
- *
- *  - GNU Lesser General Public License Version 2.1 or later (the "LGPL")
- *    http://www.gnu.org/licenses/lgpl.html
- *
- *  - Mozilla Public License Version 1.1 or later (the "MPL")
- *    http://www.mozilla.org/MPL/MPL-1.1.html
- *
- * == END LICENSE ==
- *
- * Configuration file for the File Manager Connector for ASP.
--->
-<%
-
-' SECURITY: You must explicitelly enable this "connector" (set it to "True").
-Dim ConfigIsEnabled
-ConfigIsEnabled = False
-
-' Path to user files relative to the document root.
-Dim ConfigUserFilesPath
-ConfigUserFilesPath = "/userfiles/"
-
-Dim ConfigAllowedExtensions, ConfigDeniedExtensions
-Set ConfigAllowedExtensions	= CreateObject( "Scripting.Dictionary" )
-Set ConfigDeniedExtensions	= CreateObject( "Scripting.Dictionary" )
-
-ConfigAllowedExtensions.Add	"File", ""
-ConfigDeniedExtensions.Add	"File", "html|htm|php|php2|php3|php4|php5|phtml|pwml|inc|asp|aspx|ascx|jsp|cfm|cfc|pl|bat|exe|com|dll|vbs|js|reg|cgi|htaccess|asis"
-
-ConfigAllowedExtensions.Add	"Image", "jpg|gif|jpeg|png|bmp"
-ConfigDeniedExtensions.Add	"Image", ""
-
-ConfigAllowedExtensions.Add	"Flash", "swf|fla"
-ConfigDeniedExtensions.Add	"Flash", ""
-
-ConfigAllowedExtensions.Add	"Media", "swf|fla|jpg|gif|jpeg|png|avi|mpg|mpeg|mp(1-4)|wma|wmv|wav|mid|midi|rmi|rm|ram|rmvb|mov|qt"
-ConfigDeniedExtensions.Add	"Media", ""
-
-%>
\ No newline at end of file

Deleted: pal-wcm/trunk/src/main/webapp/fckeditor/editor/filemanager/browser/default/connectors/asp/connector.asp
===================================================================
--- pal-wcm/trunk/src/main/webapp/fckeditor/editor/filemanager/browser/default/connectors/asp/connector.asp	2008-09-03 08:05:44 UTC (rev 1112)
+++ pal-wcm/trunk/src/main/webapp/fckeditor/editor/filemanager/browser/default/connectors/asp/connector.asp	2008-09-04 02:44:24 UTC (rev 1113)
@@ -1,124 +0,0 @@
-<%@ CodePage=65001 Language="VBScript"%>
-<%
-Option Explicit
-Response.Buffer = True
-%>
-<!--
- * FCKeditor - The text editor for Internet - http://www.fckeditor.net
- * Copyright (C) 2003-2007 Frederico Caldeira Knabben
- *
- * == BEGIN LICENSE ==
- *
- * Licensed under the terms of any of the following licenses at your
- * choice:
- *
- *  - GNU General Public License Version 2 or later (the "GPL")
- *    http://www.gnu.org/licenses/gpl.html
- *
- *  - GNU Lesser General Public License Version 2.1 or later (the "LGPL")
- *    http://www.gnu.org/licenses/lgpl.html
- *
- *  - Mozilla Public License Version 1.1 or later (the "MPL")
- *    http://www.mozilla.org/MPL/MPL-1.1.html
- *
- * == END LICENSE ==
- *
- * This is the File Manager Connector for ASP.
--->
-<!--#include file="config.asp"-->
-<!--#include file="util.asp"-->
-<!--#include file="io.asp"-->
-<!--#include file="basexml.asp"-->
-<!--#include file="commands.asp"-->
-<!--#include file="class_upload.asp"-->
-<%
-
-If ( ConfigIsEnabled = False ) Then
-	SendError 1, "This connector is disabled. Please check the ""editor/filemanager/browser/default/connectors/asp/config.asp"" file"
-End If
-
-' Get the "UserFiles" path.
-Dim sUserFilesPath
-
-If ( Not IsEmpty( ConfigUserFilesPath ) ) Then
-	sUserFilesPath = ConfigUserFilesPath
-
-	If ( Right( sUserFilesPath, 1 ) <> "/" ) Then
-		sUserFilesPath = sUserFilesPath & "/"
-	End If
-Else
-	sUserFilesPath = "/userfiles/"
-End If
-
-' Map the "UserFiles" path to a local directory.
-Dim sUserFilesDirectory
-sUserFilesDirectory = Server.MapPath( sUserFilesPath )
-
-If ( Right( sUserFilesDirectory, 1 ) <> "\" ) Then
-	sUserFilesDirectory = sUserFilesDirectory & "\"
-End If
-
-DoResponse
-
-Sub DoResponse()
-	Dim sCommand, sResourceType, sCurrentFolder
-
-	' Get the main request information.
-	sCommand = Request.QueryString("Command")
-	If ( sCommand = "" ) Then Exit Sub
-
-	sResourceType = Request.QueryString("Type")
-	If ( sResourceType = "" ) Then Exit Sub
-
-	sCurrentFolder = Request.QueryString("CurrentFolder")
-	If ( sCurrentFolder = "" ) Then Exit Sub
-
-	' Check if it is an allower resource type.
-	if ( Not IsAllowedType( sResourceType ) ) Then Exit Sub
-
-	' Check the current folder syntax (must begin and start with a slash).
-	If ( Right( sCurrentFolder, 1 ) <> "/" ) Then sCurrentFolder = sCurrentFolder & "/"
-	If ( Left( sCurrentFolder, 1 ) <> "/" ) Then sCurrentFolder = "/" & sCurrentFolder
-
-	' Check for invalid folder paths (..)
-	If ( InStr( 1, sCurrentFolder, ".." ) <> 0 OR InStr( 1, sResourceType, ".." ) <> 0 ) Then
-		SendError 102, ""
-	End If
-
-	' File Upload doesn't have to Return XML, so it must be intercepted before anything.
-	If ( sCommand = "FileUpload" ) Then
-		FileUpload sResourceType, sCurrentFolder
-		Exit Sub
-	End If
-
-	SetXmlHeaders
-
-	CreateXmlHeader sCommand, sResourceType, sCurrentFolder
-
-	' Execute the required command.
-	Select Case sCommand
-		Case "GetFolders"
-			GetFolders sResourceType, sCurrentFolder
-		Case "GetFoldersAndFiles"
-			GetFoldersAndFiles sResourceType, sCurrentFolder
-		Case "CreateFolder"
-			CreateFolder sResourceType, sCurrentFolder
-	End Select
-
-	CreateXmlFooter
-
-	Response.End
-End Sub
-
-Function IsAllowedType( resourceType )
-	Dim oRE
-	Set oRE	= New RegExp
-	oRE.IgnoreCase	= True
-	oRE.Global		= True
-	oRE.Pattern		= "^(File|Image|Flash|Media)$"
-
-	IsAllowedType = oRE.Test( resourceType )
-
-	Set oRE	= Nothing
-End Function
-%>
\ No newline at end of file

Deleted: pal-wcm/trunk/src/main/webapp/fckeditor/editor/filemanager/browser/default/connectors/asp/io.asp
===================================================================
--- pal-wcm/trunk/src/main/webapp/fckeditor/editor/filemanager/browser/default/connectors/asp/io.asp	2008-09-03 08:05:44 UTC (rev 1112)
+++ pal-wcm/trunk/src/main/webapp/fckeditor/editor/filemanager/browser/default/connectors/asp/io.asp	2008-09-04 02:44:24 UTC (rev 1113)
@@ -1,89 +0,0 @@
-<!--
- * FCKeditor - The text editor for Internet - http://www.fckeditor.net
- * Copyright (C) 2003-2007 Frederico Caldeira Knabben
- *
- * == BEGIN LICENSE ==
- *
- * Licensed under the terms of any of the following licenses at your
- * choice:
- *
- *  - GNU General Public License Version 2 or later (the "GPL")
- *    http://www.gnu.org/licenses/gpl.html
- *
- *  - GNU Lesser General Public License Version 2.1 or later (the "LGPL")
- *    http://www.gnu.org/licenses/lgpl.html
- *
- *  - Mozilla Public License Version 1.1 or later (the "MPL")
- *    http://www.mozilla.org/MPL/MPL-1.1.html
- *
- * == END LICENSE ==
- *
- * This file include IO specific functions used by the ASP Connector.
--->
-<%
-Function GetUrlFromPath( resourceType, folderPath )
-	If resourceType = "" Then
-		GetUrlFromPath = RemoveFromEnd( sUserFilesPath, "/" ) & folderPath
-	Else
-		GetUrlFromPath = sUserFilesPath & LCase( resourceType ) & folderPath
-	End If
-End Function
-
-Function RemoveExtension( fileName )
-	RemoveExtension = Left( fileName, InStrRev( fileName, "." ) - 1 )
-End Function
-
-Function ServerMapFolder( resourceType, folderPath )
-	' Get the resource type directory.
-	Dim sResourceTypePath
-	sResourceTypePath = sUserFilesDirectory & LCase( resourceType ) & "\"
-
-	' Ensure that the directory exists.
-	CreateServerFolder sResourceTypePath
-
-	' Return the resource type directory combined with the required path.
-	ServerMapFolder = sResourceTypePath & RemoveFromStart( folderPath, "/" )
-End Function
-
-Sub CreateServerFolder( folderPath )
-	Dim oFSO
-	Set oFSO = Server.CreateObject( "Scripting.FileSystemObject" )
-
-	Dim sParent
-	sParent = oFSO.GetParentFolderName( folderPath )
-
-	' Check if the parent exists, or create it.
-	If ( NOT oFSO.FolderExists( sParent ) ) Then CreateServerFolder( sParent )
-
-	If ( oFSO.FolderExists( folderPath ) = False ) Then
-		oFSO.CreateFolder( folderPath )
-	End If
-
-	Set oFSO = Nothing
-End Sub
-
-Function IsAllowedExt( extension, resourceType )
-	Dim oRE
-	Set oRE	= New RegExp
-	oRE.IgnoreCase	= True
-	oRE.Global		= True
-
-	Dim sAllowed, sDenied
-	sAllowed	= ConfigAllowedExtensions.Item( resourceType )
-	sDenied		= ConfigDeniedExtensions.Item( resourceType )
-
-	IsAllowedExt = True
-
-	If sDenied <> "" Then
-		oRE.Pattern	= sDenied
-		IsAllowedExt	= Not oRE.Test( extension )
-	End If
-
-	If IsAllowedExt And sAllowed <> "" Then
-		oRE.Pattern		= sAllowed
-		IsAllowedExt	= oRE.Test( extension )
-	End If
-
-	Set oRE	= Nothing
-End Function
-%>
\ No newline at end of file

Deleted: pal-wcm/trunk/src/main/webapp/fckeditor/editor/filemanager/browser/default/connectors/asp/util.asp
===================================================================
--- pal-wcm/trunk/src/main/webapp/fckeditor/editor/filemanager/browser/default/connectors/asp/util.asp	2008-09-03 08:05:44 UTC (rev 1112)
+++ pal-wcm/trunk/src/main/webapp/fckeditor/editor/filemanager/browser/default/connectors/asp/util.asp	2008-09-04 02:44:24 UTC (rev 1113)
@@ -1,55 +0,0 @@
-<!--
- * FCKeditor - The text editor for Internet - http://www.fckeditor.net
- * Copyright (C) 2003-2007 Frederico Caldeira Knabben
- *
- * == BEGIN LICENSE ==
- *
- * Licensed under the terms of any of the following licenses at your
- * choice:
- *
- *  - GNU General Public License Version 2 or later (the "GPL")
- *    http://www.gnu.org/licenses/gpl.html
- *
- *  - GNU Lesser General Public License Version 2.1 or later (the "LGPL")
- *    http://www.gnu.org/licenses/lgpl.html
- *
- *  - Mozilla Public License Version 1.1 or later (the "MPL")
- *    http://www.mozilla.org/MPL/MPL-1.1.html
- *
- * == END LICENSE ==
- *
- * This file include generic functions used by the ASP Connector.
--->
-<%
-Function RemoveFromStart( sourceString, charToRemove )
-	Dim oRegex
-	Set oRegex = New RegExp
-	oRegex.Pattern = "^" & charToRemove & "+"
-
-	RemoveFromStart = oRegex.Replace( sourceString, "" )
-End Function
-
-Function RemoveFromEnd( sourceString, charToRemove )
-	Dim oRegex
-	Set oRegex = New RegExp
-	oRegex.Pattern = charToRemove & "+$"
-
-	RemoveFromEnd = oRegex.Replace( sourceString, "" )
-End Function
-
-Function ConvertToXmlAttribute( value )
-	ConvertToXmlAttribute = Replace( value, "&", "&amp;" )
-End Function
-
-Function InArray( value, sourceArray )
-	Dim i
-	For i = 0 to UBound( sourceArray )
-		If sourceArray(i) = value Then
-			InArray = True
-			Exit Function
-		End If
-	Next
-	InArray = False
-End Function
-
-%>
\ No newline at end of file

Deleted: pal-wcm/trunk/src/main/webapp/fckeditor/editor/filemanager/browser/default/connectors/aspx/connector.aspx
===================================================================
--- pal-wcm/trunk/src/main/webapp/fckeditor/editor/filemanager/browser/default/connectors/aspx/connector.aspx	2008-09-03 08:05:44 UTC (rev 1112)
+++ pal-wcm/trunk/src/main/webapp/fckeditor/editor/filemanager/browser/default/connectors/aspx/connector.aspx	2008-09-04 02:44:24 UTC (rev 1113)
@@ -1,30 +0,0 @@
-<%@ Page language="c#" Inherits="FredCK.FCKeditorV2.FileBrowserConnector" AutoEventWireup="false" %>
-<%--
- * FCKeditor - The text editor for Internet - http://www.fckeditor.net
- * Copyright (C) 2003-2007 Frederico Caldeira Knabben
- *
- * == BEGIN LICENSE ==
- *
- * Licensed under the terms of any of the following licenses at your
- * choice:
- *
- *  - GNU General Public License Version 2 or later (the "GPL")
- *    http://www.gnu.org/licenses/gpl.html
- *
- *  - GNU Lesser General Public License Version 2.1 or later (the "LGPL")
- *    http://www.gnu.org/licenses/lgpl.html
- *
- *  - Mozilla Public License Version 1.1 or later (the "MPL")
- *    http://www.mozilla.org/MPL/MPL-1.1.html
- *
- * == END LICENSE ==
- *
- * This is the File Browser Connector for ASP.NET.
- *
- * The code of this page if included in the FCKeditor.Net package,
- * in the FredCK.FCKeditorV2.dll assembly file. So to use it you must
- * include that DLL in your "bin" directory.
- *
- * To download the FCKeditor.Net package, go to our official web site:
- * http://www.fckeditor.net
---%>
\ No newline at end of file

Deleted: pal-wcm/trunk/src/main/webapp/fckeditor/editor/filemanager/browser/default/connectors/cfm/config.cfm
===================================================================
--- pal-wcm/trunk/src/main/webapp/fckeditor/editor/filemanager/browser/default/connectors/cfm/config.cfm	2008-09-03 08:05:44 UTC (rev 1112)
+++ pal-wcm/trunk/src/main/webapp/fckeditor/editor/filemanager/browser/default/connectors/cfm/config.cfm	2008-09-04 02:44:24 UTC (rev 1113)
@@ -1,99 +0,0 @@
-<cfsetting enablecfoutputonly="Yes">
-<!---
- * FCKeditor - The text editor for Internet - http://www.fckeditor.net
- * Copyright (C) 2003-2007 Frederico Caldeira Knabben
- *
- * == BEGIN LICENSE ==
- *
- * Licensed under the terms of any of the following licenses at your
- * choice:
- *
- *  - GNU General Public License Version 2 or later (the "GPL")
- *    http://www.gnu.org/licenses/gpl.html
- *
- *  - GNU Lesser General Public License Version 2.1 or later (the "LGPL")
- *    http://www.gnu.org/licenses/lgpl.html
- *
- *  - Mozilla Public License Version 1.1 or later (the "MPL")
- *    http://www.mozilla.org/MPL/MPL-1.1.html
- *
- * == END LICENSE ==
---->
-<cfscript>
-	config = structNew();
-
-	// SECURITY: You must explicitly enable this "connector". (Set enabled to "true")
-	config.enabled = false;
-
-	config.userFilesPath = "/userfiles/";
-
-	config.serverPath = ""; // use this to force the server path if FCKeditor is not running directly off the root of the application or the FCKeditor directory in the URL is a virtual directory or a symbolic link / junction
-
-	config.allowedExtensions = structNew();
-	config.deniedExtensions = structNew();
-
-	// config.allowedExtensions["File"] = "doc,rtf,pdf,ppt,pps,xls,csv,vnd,zip";
-	config.allowedExtensions["File"] = "";
-	config.deniedExtensions["File"] = "html,htm,php,php2,php3,php4,php5,phtml,pwml,inc,asp,aspx,ascx,jsp,cfm,cfc,pl,bat,exe,com,dll,vbs,js,reg,cgi,htaccess,asis";
-
-	config.allowedExtensions["Image"] = "png,gif,jpg,jpeg,bmp";
-	config.deniedExtensions["Image"] = "";
-
-	config.allowedExtensions["Flash"] = "swf,fla";
-	config.deniedExtensions["Flash"] = "";
-
-	config.allowedExtensions["Media"] = "swf,fla,jpg,gif,jpeg,png,avi,mpg,mpeg,mp3,mp4,m4a,wma,wmv,wav,mid,midi,rmi,rm,ram,rmvb,mov,qt";
-	config.deniedExtensions["Media"] = "";
-</cfscript>
-
-<!--- code to maintain backwards compatibility with previous version of cfm connector --->
-<cfif isDefined("application.userFilesPath")>
-
-	<cflock scope="application" type="readonly" timeout="5">
-	<cfset config.userFilesPath = application.userFilesPath>
-	</cflock>
-
-<cfelseif isDefined("server.userFilesPath")>
-
-	<cflock scope="server" type="readonly" timeout="5">
-	<cfset config.userFilesPath = server.userFilesPath>
-	</cflock>
-
-</cfif>
-
-<!--- look for config struct in request, application and server scopes --->
-<cfif isDefined("request.FCKeditor") and isStruct(request.FCKeditor)>
-
-	<cfset variables.FCKeditor = request.FCKeditor>
-
-<cfelseif isDefined("application.FCKeditor") and isStruct(application.FCKeditor)>
-
-	<cflock scope="application" type="readonly" timeout="5">
-	<cfset variables.FCKeditor = duplicate(application.FCKeditor)>
-	</cflock>
-
-<cfelseif isDefined("server.FCKeditor") and isStruct(server.FCKeditor)>
-
-	<cflock scope="server" type="readonly" timeout="5">
-	<cfset variables.FCKeditor = duplicate(server.FCKeditor)>
-	</cflock>
-
-</cfif>
-
-<cfif isDefined("FCKeditor")>
-
-	<!--- copy key values from external to local config (i.e. override default config as required) --->
-	<cfscript>
-		function structCopyKeys(stFrom, stTo) {
-			for ( key in stFrom ) {
-				if ( isStruct(stFrom[key]) ) {
-					structCopyKeys(stFrom[key],stTo[key]);
-				} else {
-					stTo[key] = stFrom[key];
-				}
-			}
-		}
-		structCopyKeys(FCKeditor, config);
-	</cfscript>
-
-</cfif>

Deleted: pal-wcm/trunk/src/main/webapp/fckeditor/editor/filemanager/browser/default/connectors/cfm/connector.cfm
===================================================================
--- pal-wcm/trunk/src/main/webapp/fckeditor/editor/filemanager/browser/default/connectors/cfm/connector.cfm	2008-09-03 08:05:44 UTC (rev 1112)
+++ pal-wcm/trunk/src/main/webapp/fckeditor/editor/filemanager/browser/default/connectors/cfm/connector.cfm	2008-09-04 02:44:24 UTC (rev 1113)
@@ -1,363 +0,0 @@
-<cfsetting enablecfoutputonly="yes" showdebugoutput="no">
-<!---
- * FCKeditor - The text editor for Internet - http://www.fckeditor.net
- * Copyright (C) 2003-2007 Frederico Caldeira Knabben
- *
- * == BEGIN LICENSE ==
- *
- * Licensed under the terms of any of the following licenses at your
- * choice:
- *
- *  - GNU General Public License Version 2 or later (the "GPL")
- *    http://www.gnu.org/licenses/gpl.html
- *
- *  - GNU Lesser General Public License Version 2.1 or later (the "LGPL")
- *    http://www.gnu.org/licenses/lgpl.html
- *
- *  - Mozilla Public License Version 1.1 or later (the "MPL")
- *    http://www.mozilla.org/MPL/MPL-1.1.html
- *
- * == END LICENSE ==
- *
- * File Browser connector for ColdFusion.
- * (based on the original CF connector by Hendrik Kramer - hk****@lwd*****)
- *
- * Note:
- * FCKeditor requires that the connector responds with UTF-8 encoded XML.
- * As ColdFusion 5 does not fully support UTF-8 encoding, we force ASCII
- * file and folder names in this connector to allow CF5 send a UTF-8
- * encoded response - code points under 127 in UTF-8 are stored using a
- * single byte, using the same encoding as ASCII, which is damn handy.
- * This is all grand for the English speakers, like meself, but I dunno
- * how others are gonna take to it. Well, the previous version of this
- * connector already did this with file names and nobody seemed to mind,
- * so fingers-crossed nobody will mind their folder names being munged too.
- *
---->
-
-<cfparam name="url.command">
-<cfparam name="url.type">
-<cfparam name="url.currentFolder">
-<!--- note: no serverPath url parameter - see config.cfm if you need to set the serverPath manually --->
-
-<cfinclude template="config.cfm">
-
-<cfscript>
-	userFilesPath = config.userFilesPath;
-	lAllowedExtensions = config.allowedExtensions[url.type];
-	lDeniedExtensions = config.deniedExtensions[url.type];
-
-	// make sure the user files path is correctly formatted
-	userFilesPath = replace(userFilesPath, "\", "/", "ALL");
-	if ( right(userFilesPath,1) neq "/" ) {
-		userFilesPath = userFilesPath & "/";
-	}
-
-	// make sure the current folder is correctly formatted
-	url.currentFolder = replace(url.currentFolder, "\", "/", "ALL");
-	url.currentFolder = replace(url.currentFolder, '//', '/', 'ALL');
-	if ( right(url.currentFolder,1) neq "/" ) {
-		url.currentFolder = url.currentFolder & "/";
-	}
-	if ( left(url.currentFolder,1) neq "/" ) {
-		url.currentFolder = "/" & url.currentFolder;
-	}
-
-	if ( find("/",getBaseTemplatePath()) neq 0 ) {
-		fs = "/";
-	} else {
-		fs = "\";
-	}
-
-	// Get the base physical path to the web root for this application. The code to determine the path automatically assumes that
-	// the "FCKeditor" directory in the http request path is directly off the web root for the application and that it's not a
-	// virtual directory or a symbolic link / junction. Use the serverPath config setting to force a physical path if necessary.
-	if ( len(config.serverPath) ) {
-		serverPath = config.serverPath;
-	} else {
-		serverPath = replaceNoCase(getBaseTemplatePath(),replace(cgi.script_name,"/",fs,"all"),"");
-	}
-
-	// map the user files path to a physical directory
-	userFilesServerPath = serverPath & url.type & replace(url.currentFolder,"/",fs,"all");
-
-	xmlContent = ""; // append to this string to build content
-</cfscript>
-
-<cfif not config.enabled>
-
-	<cfset xmlContent = "<Error number=""1"" text=""This connector is disabled. Please check the 'editor/filemanager/browser/default/connectors/cfm/config.cfm' file"" />">
-
-<cfelseif find("..",url.currentFolder)>
-
-	<cfset xmlContent = "<Error number=""102"" />">
-
-</cfif>
-
-<cfif not len(xmlContent)>
-
-<!--- create directories in physical path if they don't already exist --->
-<cfset currentPath = "">
-<cftry>
-	<cfloop list="#userFilesServerPath#" index="name" delimiters="/">
-
-		<cfif not directoryExists(currentPath & fs & name)>
-				<cfdirectory action="create" directory="#currentPath##fs##name#" mode="755">
-		</cfif>
-
-		<cfset currentPath = currentPath & fs & name>
-
-	</cfloop>
-
-	<!--- create sub-directory for file type if it doesn't already exist --->
-	<!---
-		<cfif not directoryExists(userFilesServerPath & url.type)>
-		<cfdirectory action="create" directory="#userFilesServerPath##url.type#" mode="755">
-	</cfif>
-	--->
-<cfcatch>
-
-	<!--- this should only occur as a result of a permissions problem --->
-	<cfset xmlContent = "<Error number=""103"" />">
-
-</cfcatch>
-</cftry>
-
-</cfif>
-
-<cfif not len(xmlContent)>
-
-	<!--- no errors thus far - run command --->
-
-	<!--- we need to know the physical path to the current folder for all commands --->
-	<cfset currentFolderPath = userFilesServerPath>
-
-	<cfswitch expression="#url.command#">
-
-
-		<cfcase value="FileUpload">
-
-			<cfset fileName = "">
-			<cfset fileExt = "">
-
-			<cftry>
-
-				<!--- TODO: upload to a temp directory and move file if extension is allowed --->
-
-				<!--- first upload the file with an unique filename --->
-				<cffile action="upload"
-					fileField="NewFile"
-					destination="#currentFolderPath#"
-					nameConflict="makeunique"
-					mode="644"
-					attributes="normal">
-
-				<cfif cffile.fileSize EQ 0>
-					<cfthrow>
-				</cfif>
-
-				<cfif ( len(lAllowedExtensions) and not listFindNoCase(lAllowedExtensions,cffile.ServerFileExt) )
-					or ( len(lDeniedExtensions) and listFindNoCase(lDeniedExtensions,cffile.ServerFileExt) )>
-
-					<cfset errorNumber = "202">
-					<cffile action="delete" file="#cffile.ServerDirectory##fs##cffile.ServerFile#">
-
-				<cfelse>
-
-					<cfscript>
-					errorNumber = 0;
-					fileName = cffile.ClientFileName;
-					fileExt = cffile.ServerFileExt;
-
-					// munge filename for html download. Only a-z, 0-9, _, - and . are allowed
-					if( reFind("[^A-Za-z0-9_\-\.]", fileName) ) {
-						fileName = reReplace(fileName, "[^A-Za-z0-9\-\.]", "_", "ALL");
-						fileName = reReplace(fileName, "_{2,}", "_", "ALL");
-						fileName = reReplace(fileName, "([^_]+)_+$", "\1", "ALL");
-						fileName = reReplace(fileName, "$_([^_]+)$", "\1", "ALL");
-					}
-
-					// When the original filename already exists, add numbers (0), (1), (2), ... at the end of the filename.
-					if( compare( cffile.ServerFileName, fileName ) ) {
-						counter = 0;
-						tmpFileName = fileName;
-						while( fileExists("#currentFolderPath##fileName#.#fileExt#") ) {
-						  	counter = counter + 1;
-							fileName = tmpFileName & '(#counter#)';
-						}
-					}
-					</cfscript>
-
-					<!--- Rename the uploaded file, if neccessary --->
-					<cfif compare(cffile.ServerFileName,fileName)>
-
-						<cfset errorNumber = "201">
-						<cffile
-							action="rename"
-							source="#currentFolderPath##cffile.ServerFileName#.#cffile.ServerFileExt#"
-							destination="#currentFolderPath##fileName#.#fileExt#"
-							mode="644"
-							attributes="normal">
-
-					</cfif>
-
-				</cfif>
-
-				<cfcatch type="Any">
-
-					<cfset errorNumber = "202">
-
-				</cfcatch>
-
-			</cftry>
-
-
-			<cfif errorNumber eq 201>
-
-				<!--- file was changed (201), submit the new filename --->
-				<cfoutput>
-				<script type="text/javascript">
-				window.parent.frames['frmUpload'].OnUploadCompleted(#errorNumber#,'#replace( fileName & "." & fileExt, "'", "\'", "ALL")#');
-				</script>
-				</cfoutput>
-
-			<cfelse>
-
-				<!--- file was uploaded succesfully(0) or an error occured(202). Submit only the error code. --->
-				<cfoutput>
-				<script type="text/javascript">
-				window.parent.frames['frmUpload'].OnUploadCompleted(#errorNumber#);
-				</script>
-				</cfoutput>
-
-			</cfif>
-
-			<cfabort>
-
-		</cfcase>
-
-
-		<cfcase value="GetFolders">
-
-			<!--- Sort directories first, name ascending --->
-			<cfdirectory
-				action="list"
-				directory="#currentFolderPath#"
-				name="qDir"
-				sort="type,name">
-
-			<cfscript>
-				i=1;
-				folders = "";
-				while( i lte qDir.recordCount ) {
-					if( not compareNoCase( qDir.type[i], "FILE" ))
-						break;
-					if( not listFind(".,..", qDir.name[i]) )
-						folders = folders & '<Folder name="#HTMLEditFormat( qDir.name[i] )#" />';
-					i=i+1;
-				}
-
-				xmlContent = xmlContent & '<Folders>' & folders & '</Folders>';
-			</cfscript>
-
-		</cfcase>
-
-
-		<cfcase value="GetFoldersAndFiles">
-
-			<!--- Sort directories first, name ascending --->
-			<cfdirectory
-				action="list"
-				directory="#currentFolderPath#"
-				name="qDir"
-				sort="type,name">
-
-			<cfscript>
-				i=1;
-				folders = "";
-				files = "";
-				while( i lte qDir.recordCount ) {
-					if( not compareNoCase( qDir.type[i], "DIR" ) and not listFind(".,..", qDir.name[i]) ) {
-						folders = folders & '<Folder name="#HTMLEditFormat(qDir.name[i])#" />';
-					} else if( not compareNoCase( qDir.type[i], "FILE" ) ) {
-						fileSizeKB = round(qDir.size[i] / 1024);
-						files = files & '<File name="#HTMLEditFormat(qDir.name[i])#" size="#IIf( fileSizeKB GT 0, DE( fileSizeKB ), 1)#" />';
-					}
-					i=i+1;
-				}
-
-				xmlContent = xmlContent & '<Folders>' & folders & '</Folders>';
-				xmlContent = xmlContent & '<Files>' & files & '</Files>';
-			</cfscript>
-
-		</cfcase>
-
-
-		<cfcase value="CreateFolder">
-
-			<cfparam name="url.newFolderName" default="">
-
-			<cfscript>
-				newFolderName = url.newFolderName;
-				if( reFind("[^A-Za-z0-9_\-\.]", newFolderName) ) {
-					// Munge folder name same way as we do the filename
-					// This means folder names are always US-ASCII so we don't have to worry about CF5 and UTF-8
-					newFolderName = reReplace(newFolderName, "[^A-Za-z0-9\-\.]", "_", "all");
-					newFolderName = reReplace(newFolderName, "_{2,}", "_", "all");
-					newFolderName = reReplace(newFolderName, "([^_]+)_+$", "\1", "all");
-					newFolderName = reReplace(newFolderName, "$_([^_]+)$", "\1", "all");
-				}
-			</cfscript>
-
-			<cfif not len(newFolderName) or len(newFolderName) gt 255>
-				<cfset errorNumber = 102>
-			<cfelseif directoryExists(currentFolderPath & newFolderName)>
-				<cfset errorNumber = 101>
-			<cfelseif reFind("^\.\.",newFolderName)>
-				<cfset errorNumber = 103>
-			<cfelse>
-				<cfset errorNumber = 0>
-
-				<cftry>
-					<cfdirectory
-						action="create"
-						directory="#currentFolderPath##newFolderName#"
-						mode="755">
-					<cfcatch>
-						<!---
-						un-resolvable error numbers in ColdFusion:
-						* 102 : Invalid folder name.
-						* 103 : You have no permissions to create the folder.
-						--->
-						<cfset errorNumber = 110>
-					</cfcatch>
-				</cftry>
-			</cfif>
-
-			<cfset xmlContent = xmlContent & '<Error number="#errorNumber#" />'>
-
-		</cfcase>
-
-
-		<cfdefaultcase>
-
-			<cfthrow type="fckeditor.connector" message="Illegal command: #url.command#">
-
-		</cfdefaultcase>
-
-
-	</cfswitch>
-
-</cfif>
-
-<cfscript>
-	xmlHeader = '<?xml version="1.0" encoding="utf-8" ?><Connector command="#url.command#" resourceType="#url.type#">';
-	xmlHeader = xmlHeader & '<CurrentFolder path="#url.currentFolder#" url="#userFilesPath##url.type##url.currentFolder#" />';
-	xmlFooter = '</Connector>';
-</cfscript>
-
-<cfheader name="Expires" value="#GetHttpTimeString(Now())#">
-<cfheader name="Pragma" value="no-cache">
-<cfheader name="Cache-Control" value="no-cache, no-store, must-revalidate">
-<cfcontent reset="true" type="text/xml; charset=UTF-8">
-<cfoutput>#xmlHeader##xmlContent##xmlFooter#</cfoutput>	
\ No newline at end of file

Deleted: pal-wcm/trunk/src/main/webapp/fckeditor/editor/filemanager/browser/default/connectors/lasso/config.lasso
===================================================================
--- pal-wcm/trunk/src/main/webapp/fckeditor/editor/filemanager/browser/default/connectors/lasso/config.lasso	2008-09-03 08:05:44 UTC (rev 1112)
+++ pal-wcm/trunk/src/main/webapp/fckeditor/editor/filemanager/browser/default/connectors/lasso/config.lasso	2008-09-04 02:44:24 UTC (rev 1113)
@@ -1,65 +0,0 @@
-[//lasso
-/*
- * FCKeditor - The text editor for Internet - http://www.fckeditor.net
- * Copyright (C) 2003-2007 Frederico Caldeira Knabben
- *
- * == BEGIN LICENSE ==
- *
- * Licensed under the terms of any of the following licenses at your
- * choice:
- *
- *  - GNU General Public License Version 2 or later (the "GPL")
- *    http://www.gnu.org/licenses/gpl.html
- *
- *  - GNU Lesser General Public License Version 2.1 or later (the "LGPL")
- *    http://www.gnu.org/licenses/lgpl.html
- *
- *  - Mozilla Public License Version 1.1 or later (the "MPL")
- *    http://www.mozilla.org/MPL/MPL-1.1.html
- *
- * == END LICENSE ==
- *
- * Configuration file for the File Manager Connector for Lasso.
- */
-
-    /*.....................................................................
-    The connector uses the file tags, which require authentication. Enter a
-    valid username and password from Lasso admin for a group with file tags
-    permissions for uploads and the path you define in UserFilesPath below.
-    */
-
-	var('connection') = array(
-		-username='xxxxxxxx',
-		-password='xxxxxxxx'
-	);
-
-
-    /*.....................................................................
-    Set the base path for files that users can upload and browse (relative
-    to server root).
-
-    Set which file extensions are allowed and/or denied for each file type.
-    */
-	var('config') = map(
-	    'Enabled' = true,
-		'UserFilesPath' = '/userfiles/',
-		'Subdirectories' = map(
-			'File' = 'File/',
-			'Image' = 'Image/',
-			'Flash' = 'Flash/',
-			'Media' = 'Media/'
-		),
-		'AllowedExtensions' = map(
-			'File' = array(),
-			'Image' = array('jpg','gif','jpeg','png'),
-			'Flash' = array('swf','fla'),
-			'Media' = array('swf','fla','jpg','gif','jpeg','png','avi','mpg','mpeg')
-		),
-		'DeniedExtensions' = map(
-			'File' = array('html','htm','php','php2','php3','php4','php5','phtml','pwml','inc','asp','aspx','ascx','jsp','cfm','cfc','pl','bat','exe','com','dll','vbs','js','reg','cgi','lasso','lassoapp','htaccess','asis'),
-			'Image' = array(),
-			'Flash' = array(),
-			'Media' = array()
-		)
-	);
-]
\ No newline at end of file

Deleted: pal-wcm/trunk/src/main/webapp/fckeditor/editor/filemanager/browser/default/connectors/lasso/connector.lasso
===================================================================
--- pal-wcm/trunk/src/main/webapp/fckeditor/editor/filemanager/browser/default/connectors/lasso/connector.lasso	2008-09-03 08:05:44 UTC (rev 1112)
+++ pal-wcm/trunk/src/main/webapp/fckeditor/editor/filemanager/browser/default/connectors/lasso/connector.lasso	2008-09-04 02:44:24 UTC (rev 1113)
@@ -1,249 +0,0 @@
-[//lasso
-/*
- * FCKeditor - The text editor for Internet - http://www.fckeditor.net
- * Copyright (C) 2003-2007 Frederico Caldeira Knabben
- *
- * == BEGIN LICENSE ==
- *
- * Licensed under the terms of any of the following licenses at your
- * choice:
- *
- *  - GNU General Public License Version 2 or later (the "GPL")
- *    http://www.gnu.org/licenses/gpl.html
- *
- *  - GNU Lesser General Public License Version 2.1 or later (the "LGPL")
- *    http://www.gnu.org/licenses/lgpl.html
- *
- *  - Mozilla Public License Version 1.1 or later (the "MPL")
- *    http://www.mozilla.org/MPL/MPL-1.1.html
- *
- * == END LICENSE ==
- *
- * This is the File Manager Connector for Lasso.
- */
-
-    /*.....................................................................
-    Include global configuration. See config.lasso for details.
-    */
-	include('config.lasso');
-
-
-    /*.....................................................................
-    Translate current date/time to GMT for custom header.
-    */
-	var('headerDate') = date_localtogmt(date)->format('%a, %d %b %Y %T GMT');
-
-
-    /*.....................................................................
-    Convert query string parameters to variables and initialize output.
-    */
-	var(
-		'Command'		=	action_param('Command'),
-		'Type'			=	action_param('Type'),
-		'CurrentFolder'	=	action_param('CurrentFolder'),
-		'ServerPath'	=	action_param('ServerPath'),
-		'NewFolderName'	=	action_param('NewFolderName'),
-		'NewFile'		=	null,
-		'NewFileName'	=	string,
-		'OrigFilePath'	=	string,
-		'NewFilePath'	=	string,
-		'commandData'	=	string,
-		'folders'		=	'\t<Folders>\n',
-		'files'			=	'\t<Files>\n',
-		'errorNumber'	=	integer,
-		'responseType'	=	'xml',
-		'uploadResult'	=	'0'
-	);
-
-
-    /*.....................................................................
-    Calculate the path to the current folder.
-    */
-	$ServerPath == '' ? $ServerPath = $config->find('UserFilesPath');
-
-	var('currentFolderURL' = $ServerPath
-		+ $config->find('Subdirectories')->find(action_param('Type'))
-		+ action_param('CurrentFolder')
-	);
-
-
-    /*.....................................................................
-    Build the appropriate response per the 'Command' parameter. Wrap the
-    entire process in an inline for file tag permissions.
-    */
-	inline($connection);
-		select($Command);
-            /*.............................................................
-            List all subdirectories in the 'Current Folder' directory.
-            */
-			case('GetFolders');
-				$commandData += '\t<Folders>\n';
-
-				iterate(file_listdirectory($currentFolderURL), local('this'));
-					#this->endswith('/') ? $commandData += '\t\t<Folder name="' + #this->removetrailing('/')& + '" />\n';
-				/iterate;
-
-				$commandData += '\t</Folders>\n';
-
-
-            /*.............................................................
-            List both files and folders in the 'Current Folder' directory.
-            Include the file sizes in kilobytes.
-            */
-			case('GetFoldersAndFiles');
-				iterate(file_listdirectory($currentFolderURL), local('this'));
-					if(#this->endswith('/'));
-						$folders += '\t\t<Folder name="' + #this->removetrailing('/')& + '" />\n';
-					else;
-						local('size') = file_getsize($currentFolderURL + #this) / 1024;
-						$files += '\t\t<File name="' + #this + '" size="' + #size + '" />\n';
-					/if;
-				/iterate;
-
-				$folders += '\t</Folders>\n';
-				$files += '\t</Files>\n';
-
-				$commandData += $folders + $files;
-
-
-            /*.............................................................
-            Create a directory 'NewFolderName' within the 'Current Folder.'
-            */
-			case('CreateFolder');
-				var('newFolder' = $currentFolderURL + $NewFolderName + '/');
-				file_create($newFolder);
-
-
-                /*.........................................................
-                Map Lasso's file error codes to FCKEditor's error codes.
-                */
-				select(file_currenterror( -errorcode));
-					case(0);
-						$errorNumber = 0;
-					case( -9983);
-						$errorNumber = 101;
-					case( -9976);
-						$errorNumber = 102;
-					case( -9977);
-						$errorNumber = 102;
-					case( -9961);
-						$errorNumber = 103;
-					case;
-						$errorNumber = 110;
-				/select;
-
-				$commandData += '<Error number="' + $errorNumber + '" />\n';
-
-
-            /*.............................................................
-            Process an uploaded file.
-            */
-			case('FileUpload');
-                /*.........................................................
-                This is the only command that returns an HTML response.
-                */
-				$responseType = 'html';
-
-
-                /*.........................................................
-                Was a file actually uploaded?
-                */
-				file_uploads->size ? $NewFile = file_uploads->get(1) | $uploadResult = '202';
-
-				if($uploadResult == '0');
-                    /*.....................................................
-                    Split the file's extension from the filename in order
-                    to follow the API's naming convention for duplicate
-                    files. (Test.txt, Test(1).txt, Test(2).txt, etc.)
-                    */
-					$NewFileName = $NewFile->find('OrigName');
-					$OrigFilePath = $currentFolderURL + $NewFileName;
-					$NewFilePath = $OrigFilePath;
-					local('fileExtension') = '.' + $NewFile->find('OrigExtension');
-					local('shortFileName') = $NewFileName->removetrailing(#fileExtension)&;
-
-
-                    /*.....................................................
-                    Make sure the file extension is allowed.
-                    */
-					if($config->find('DeniedExtensions')->find($Type) >> $NewFile->find('OrigExtension'));
-						$uploadResult = '202';
-					else;
-                        /*.................................................
-                        Rename the target path until it is unique.
-                        */
-						while(file_exists($NewFilePath));
-							$NewFilePath = $currentFolderURL + #shortFileName + '(' + loop_count + ')' + #fileExtension;
-						/while;
-
-
-                        /*.................................................
-                        Copy the uploaded file to its final location.
-                        */
-						file_copy($NewFile->find('path'), $NewFilePath);
-
-
-                        /*.................................................
-                        Set the error code for the response. Note whether
-                        the file had to be renamed.
-                        */
-						select(file_currenterror( -errorcode));
-							case(0);
-								$OrigFilePath != $NewFilePath ? $uploadResult = '201, \'' + $NewFilePath->split('/')->last + '\'';
-							case;
-								$uploadResult = '202';
-						/select;
-					/if;
-				/if;
-
-
-                /*.........................................................
-                Set the HTML response.
-                */
-				$__html_reply__ = '\
-<script type="text/javascript">
-	window.parent.frames[\'frmUpload\'].OnUploadCompleted(' + $uploadResult + ');
-</script>
-				';
-		/select;
-	/inline;
-
-
-    /*.....................................................................
-    Send a custom header for xml responses.
-    */
-	if($responseType == 'xml');
-		header;
-]
-HTTP/1.0 200 OK
-Date: [$headerDate]
-Server: Lasso Professional [lasso_version( -lassoversion)]
-Expires: Mon, 26 Jul 1997 05:00:00 GMT
-Last-Modified: [$headerDate]
-Cache-Control: no-store, no-cache, must-revalidate, post-check=0, pre-check=0
-Pragma: no-cache
-Keep-Alive: timeout=15, max=98
-Connection: Keep-Alive
-Content-Type: text/xml; charset=utf-8
-[//lasso
-		/header;
-
-
-        /*.................................................................
-        Set the content type encoding for Lasso.
-        */
-		content_type('text/xml; charset=utf-8');
-
-
-        /*.................................................................
-        Wrap the response as XML and output.
-        */
-		$__html_reply__ = '\
-<?xml version="1.0" encoding="utf-8" ?>
-<Connector command="' + $Command + '" resourceType="' + $Type + '">
-	<CurrentFolder path="' + $CurrentFolder + '" url="' + $currentFolderURL + '" />
-' + $commandData + '
-</Connector>
-		';
-	/if;
-]

Deleted: pal-wcm/trunk/src/main/webapp/fckeditor/editor/filemanager/browser/default/connectors/perl/basexml.pl
===================================================================
--- pal-wcm/trunk/src/main/webapp/fckeditor/editor/filemanager/browser/default/connectors/perl/basexml.pl	2008-09-03 08:05:44 UTC (rev 1112)
+++ pal-wcm/trunk/src/main/webapp/fckeditor/editor/filemanager/browser/default/connectors/perl/basexml.pl	2008-09-04 02:44:24 UTC (rev 1113)
@@ -1,63 +0,0 @@
-#####
-#  FCKeditor - The text editor for Internet - http://www.fckeditor.net
-#  Copyright (C) 2003-2007 Frederico Caldeira Knabben
-#
-#  == BEGIN LICENSE ==
-#
-#  Licensed under the terms of any of the following licenses at your
-#  choice:
-#
-#   - GNU General Public License Version 2 or later (the "GPL")
-#     http://www.gnu.org/licenses/gpl.html
-#
-#   - GNU Lesser General Public License Version 2.1 or later (the "LGPL")
-#     http://www.gnu.org/licenses/lgpl.html
-#
-#   - Mozilla Public License Version 1.1 or later (the "MPL")
-#     http://www.mozilla.org/MPL/MPL-1.1.html
-#
-#  == END LICENSE ==
-#
-#  This is the File Manager Connector for Perl.
-#####
-
-sub CreateXmlHeader
-{
-	local($command,$resourceType,$currentFolder) = @_;
-
-	# Create the XML document header.
-	print '<?xml version="1.0" encoding="utf-8" ?>';
-
-	# Create the main "Connector" node.
-	print '<Connector command="' . $command . '" resourceType="' . $resourceType . '">';
-
-	# Add the current folder node.
-	print '<CurrentFolder path="' . ConvertToXmlAttribute($currentFolder) . '" url="' . ConvertToXmlAttribute(GetUrlFromPath($resourceType,$currentFolder)) . '" />';
-}
-
-sub CreateXmlFooter
-{
-	print '</Connector>';
-}
-
-sub SendError
-{
-	local( $number, $text ) = @_;
-
-	print << "_HTML_HEAD_";
-Content-Type:text/xml; charset=utf-8
-Pragma: no-cache
-Cache-Control: no-cache
-Expires: Thu, 01 Dec 1994 16:00:00 GMT
-
-_HTML_HEAD_
-
-	# Create the XML document header
-	print '<?xml version="1.0" encoding="utf-8" ?>' ;
-
-	print '<Connector><Error number="' . $number . '" text="' . &specialchar_cnv( $text ) . '" /></Connector>' ;
-
-	exit ;
-}
-
-1;

Deleted: pal-wcm/trunk/src/main/webapp/fckeditor/editor/filemanager/browser/default/connectors/perl/commands.pl
===================================================================
--- pal-wcm/trunk/src/main/webapp/fckeditor/editor/filemanager/browser/default/connectors/perl/commands.pl	2008-09-03 08:05:44 UTC (rev 1112)
+++ pal-wcm/trunk/src/main/webapp/fckeditor/editor/filemanager/browser/default/connectors/perl/commands.pl	2008-09-04 02:44:24 UTC (rev 1113)
@@ -1,158 +0,0 @@
-#####
-#  FCKeditor - The text editor for Internet - http://www.fckeditor.net
-#  Copyright (C) 2003-2007 Frederico Caldeira Knabben
-#
-#  == BEGIN LICENSE ==
-#
-#  Licensed under the terms of any of the following licenses at your
-#  choice:
-#
-#   - GNU General Public License Version 2 or later (the "GPL")
-#     http://www.gnu.org/licenses/gpl.html
-#
-#   - GNU Lesser General Public License Version 2.1 or later (the "LGPL")
-#     http://www.gnu.org/licenses/lgpl.html
-#
-#   - Mozilla Public License Version 1.1 or later (the "MPL")
-#     http://www.mozilla.org/MPL/MPL-1.1.html
-#
-#  == END LICENSE ==
-#
-#  This is the File Manager Connector for Perl.
-#####
-
-sub GetFolders
-{
-
-	local($resourceType, $currentFolder) = @_;
-
-	# Map the virtual path to the local server path.
-	$sServerDir = &ServerMapFolder($resourceType, $currentFolder);
-	print "<Folders>";			# Open the "Folders" node.
-
-	opendir(DIR,"$sServerDir");
-	@files = grep(!/^\.\.?$/,readdir(DIR));
-	closedir(DIR);
-
-	foreach $sFile (@files) {
-		if($sFile != '.' && $sFile != '..' && (-d "$sServerDir$sFile")) {
-			$cnv_filename = &ConvertToXmlAttribute($sFile);
-			print '<Folder name="' . $cnv_filename . '" />';
-		}
-	}
-	print "</Folders>";			# Close the "Folders" node.
-}
-
-sub GetFoldersAndFiles
-{
-
-	local($resourceType, $currentFolder) = @_;
-	# Map the virtual path to the local server path.
-	$sServerDir = &ServerMapFolder($resourceType,$currentFolder);
-
-	# Initialize the output buffers for "Folders" and "Files".
-	$sFolders	= '<Folders>';
-	$sFiles		= '<Files>';
-
-	opendir(DIR,"$sServerDir");
-	@files = grep(!/^\.\.?$/,readdir(DIR));
-	closedir(DIR);
-
-	foreach $sFile (@files) {
-		if($sFile ne '.' && $sFile ne '..') {
-			if(-d "$sServerDir$sFile") {
-				$cnv_filename = &ConvertToXmlAttribute($sFile);
-				$sFolders .= '<Folder name="' . $cnv_filename . '" />' ;
-			} else {
-				($iFileSize,$refdate,$filedate,$fileperm) = (stat("$sServerDir$sFile"))[7,8,9,2];
-				if($iFileSize > 0) {
-					$iFileSize = int($iFileSize / 1024);
-					if($iFileSize < 1) {
-						$iFileSize = 1;
-					}
-				}
-				$cnv_filename = &ConvertToXmlAttribute($sFile);
-				$sFiles	.= '<File name="' . $cnv_filename . '" size="' . $iFileSize . '" />' ;
-			}
-		}
-	}
-	print $sFolders ;
-	print '</Folders>';			# Close the "Folders" node.
-	print $sFiles ;
-	print '</Files>';			# Close the "Files" node.
-}
-
-sub CreateFolder
-{
-
-	local($resourceType, $currentFolder) = @_;
-	$sErrorNumber	= '0' ;
-	$sErrorMsg		= '' ;
-
-	if($FORM{'NewFolderName'} ne "") {
-		$sNewFolderName = $FORM{'NewFolderName'};
-		# Map the virtual path to the local server path of the current folder.
-		$sServerDir = &ServerMapFolder($resourceType, $currentFolder);
-		if(-w $sServerDir) {
-			$sServerDir .= $sNewFolderName;
-			$sErrorMsg = &CreateServerFolder($sServerDir);
-			if($sErrorMsg == 0) {
-				$sErrorNumber = '0';
-			} elsif($sErrorMsg eq 'Invalid argument' || $sErrorMsg eq 'No such file or directory') {
-				$sErrorNumber = '102';		#// Path too long.
-			} else {
-				$sErrorNumber = '110';
-			}
-		} else {
-			$sErrorNumber = '103';
-		}
-	} else {
-		$sErrorNumber = '102' ;
-	}
-	# Create the "Error" node.
-	$cnv_errmsg = &ConvertToXmlAttribute($sErrorMsg);
-	print '<Error number="' . $sErrorNumber . '" originalDescription="' . $cnv_errmsg . '" />';
-}
-
-sub FileUpload
-{
-eval("use File::Copy;");
-
-	local($resourceType, $currentFolder) = @_;
-
-	$sErrorNumber = '0' ;
-	$sFileName = '' ;
-	if($new_fname) {
-		# Map the virtual path to the local server path.
-		$sServerDir = &ServerMapFolder($resourceType,$currentFolder);
-
-		# Get the uploaded file name.
-		$sFileName = $new_fname;
-		$sOriginalFileName = $sFileName;
-
-		$iCounter = 0;
-		while(1) {
-			$sFilePath = $sServerDir . $sFileName;
-			if(-e $sFilePath) {
-				$iCounter++ ;
-				($path,$BaseName,$ext) = &RemoveExtension($sOriginalFileName);
-				$sFileName = $BaseName . '(' . $iCounter . ').' . $ext;
-				$sErrorNumber = '201';
-			} else {
-				copy("$img_dir/$new_fname","$sFilePath");
-				chmod(0777,$sFilePath);
-				unlink("$img_dir/$new_fname");
-				last;
-			}
-		}
-	} else {
-		$sErrorNumber = '202' ;
-	}
-	$sFileName	=~ s/"/\\"/g;
-	print "Content-type: text/html\n\n";
-	print '<script type="text/javascript">';
-	print 'window.parent.frames["frmUpload"].OnUploadCompleted(' . $sErrorNumber . ',"' . $sFileName . '") ;';
-	print '</script>';
-	exit ;
-}
-1;

Deleted: pal-wcm/trunk/src/main/webapp/fckeditor/editor/filemanager/browser/default/connectors/perl/connector.cgi
===================================================================
--- pal-wcm/trunk/src/main/webapp/fckeditor/editor/filemanager/browser/default/connectors/perl/connector.cgi	2008-09-03 08:05:44 UTC (rev 1112)
+++ pal-wcm/trunk/src/main/webapp/fckeditor/editor/filemanager/browser/default/connectors/perl/connector.cgi	2008-09-04 02:44:24 UTC (rev 1113)
@@ -1,137 +0,0 @@
-#!/usr/bin/env perl
-
-#####
-#  FCKeditor - The text editor for Internet - http://www.fckeditor.net
-#  Copyright (C) 2003-2007 Frederico Caldeira Knabben
-#
-#  == BEGIN LICENSE ==
-#
-#  Licensed under the terms of any of the following licenses at your
-#  choice:
-#
-#   - GNU General Public License Version 2 or later (the "GPL")
-#     http://www.gnu.org/licenses/gpl.html
-#
-#   - GNU Lesser General Public License Version 2.1 or later (the "LGPL")
-#     http://www.gnu.org/licenses/lgpl.html
-#
-#   - Mozilla Public License Version 1.1 or later (the "MPL")
-#     http://www.mozilla.org/MPL/MPL-1.1.html
-#
-#  == END LICENSE ==
-#
-#  This is the File Manager Connector for Perl.
-#####
-
-##
-# ATTENTION: To enable this connector, look for the "SECURITY" comment in this file.
-##
-
-## START: Hack for Windows (Not important to understand the editor code... Perl specific).
-if(Windows_check()) {
-	chdir(GetScriptPath($0));
-}
-
-sub Windows_check
-{
-	# IIS,PWS(NT/95)
-	$www_server_os = $^O;
-	# Win98 & NT(SP4)
-	if($www_server_os eq "") { $www_server_os= $ENV{'OS'}; }
-	# AnHTTPd/Omni/IIS
-	if($ENV{'SERVER_SOFTWARE'} =~ /AnWeb|Omni|IIS\//i) { $www_server_os= 'win'; }
-	# Win Apache
-	if($ENV{'WINDIR'} ne "") { $www_server_os= 'win'; }
-	if($www_server_os=~ /win/i) { return(1); }
-	return(0);
-}
-
-sub GetScriptPath {
-	local($path) = @_;
-	if($path =~ /[\:\/\\]/) { $path =~ s/(.*?)[\/\\][^\/\\]+$/$1/; } else { $path = '.'; }
-	$path;
-}
-## END: Hack for IIS
-
-require 'util.pl';
-require 'io.pl';
-require 'basexml.pl';
-require 'commands.pl';
-require 'upload_fck.pl';
-
-##
-# SECURITY: REMOVE/COMMENT THE FOLLOWING LINE TO ENABLE THIS CONNECTOR.
-##
-&SendError( 1, 'This connector is disabled. Please check the "editor/filemanager/browser/default/connectors/perl/connector.cgi" file' ) ;
-
-	&read_input();
-
-	if($FORM{'ServerPath'} ne "") {
-		$GLOBALS{'UserFilesPath'} = $FORM{'ServerPath'};
-		if(!($GLOBALS{'UserFilesPath'} =~ /\/$/)) {
-			$GLOBALS{'UserFilesPath'} .= '/' ;
-		}
-	} else {
-		$GLOBALS{'UserFilesPath'} = '/userfiles/';
-	}
-
-	# Map the "UserFiles" path to a local directory.
-	$rootpath = &GetRootPath();
-	$GLOBALS{'UserFilesDirectory'} = $rootpath . $GLOBALS{'UserFilesPath'};
-
-	&DoResponse();
-
-sub DoResponse
-{
-
-	if($FORM{'Command'} eq "" || $FORM{'Type'} eq "" || $FORM{'CurrentFolder'} eq "") {
-		return ;
-	}
-	# Get the main request informaiton.
-	$sCommand		= $FORM{'Command'};
-	$sResourceType	= $FORM{'Type'};
-	$sCurrentFolder	= $FORM{'CurrentFolder'};
-
-	# Check the current folder syntax (must begin and start with a slash).
-	if(!($sCurrentFolder =~ /\/$/)) {
-		$sCurrentFolder .= '/';
-	}
-	if(!($sCurrentFolder =~ /^\//)) {
-		$sCurrentFolder = '/' . $sCurrentFolder;
-	}
-
-	# Check for invalid folder paths (..)
-	if ( $sCurrentFolder =~ /\.\./ ) {
-		SendError( 102, "" ) ;
-	}
-
-	# File Upload doesn't have to Return XML, so it must be intercepted before anything.
-	if($sCommand eq 'FileUpload') {
-		FileUpload($sResourceType,$sCurrentFolder);
-		return ;
-	}
-
-	print << "_HTML_HEAD_";
-Content-Type:text/xml; charset=utf-8
-Pragma: no-cache
-Cache-Control: no-cache
-Expires: Thu, 01 Dec 1994 16:00:00 GMT
-
-_HTML_HEAD_
-
-	&CreateXmlHeader($sCommand,$sResourceType,$sCurrentFolder);
-
-	# Execute the required command.
-	if($sCommand eq 'GetFolders') {
-		&GetFolders($sResourceType,$sCurrentFolder);
-	} elsif($sCommand eq 'GetFoldersAndFiles') {
-		&GetFoldersAndFiles($sResourceType,$sCurrentFolder);
-	} elsif($sCommand eq 'CreateFolder') {
-		&CreateFolder($sResourceType,$sCurrentFolder);
-	}
-
-	&CreateXmlFooter();
-
-	exit ;
-}
-

Deleted: pal-wcm/trunk/src/main/webapp/fckeditor/editor/filemanager/browser/default/connectors/perl/io.pl
===================================================================
--- pal-wcm/trunk/src/main/webapp/fckeditor/editor/filemanager/browser/default/connectors/perl/io.pl	2008-09-03 08:05:44 UTC (rev 1112)
+++ pal-wcm/trunk/src/main/webapp/fckeditor/editor/filemanager/browser/default/connectors/perl/io.pl	2008-09-04 02:44:24 UTC (rev 1113)
@@ -1,131 +0,0 @@
-#####
-#  FCKeditor - The text editor for Internet - http://www.fckeditor.net
-#  Copyright (C) 2003-2007 Frederico Caldeira Knabben
-#
-#  == BEGIN LICENSE ==
-#
-#  Licensed under the terms of any of the following licenses at your
-#  choice:
-#
-#   - GNU General Public License Version 2 or later (the "GPL")
-#     http://www.gnu.org/licenses/gpl.html
-#
-#   - GNU Lesser General Public License Version 2.1 or later (the "LGPL")
-#     http://www.gnu.org/licenses/lgpl.html
-#
-#   - Mozilla Public License Version 1.1 or later (the "MPL")
-#     http://www.mozilla.org/MPL/MPL-1.1.html
-#
-#  == END LICENSE ==
-#
-#  This is the File Manager Connector for Perl.
-#####
-
-sub GetUrlFromPath
-{
-	local($resourceType, $folderPath) = @_;
-
-	if($resourceType eq '') {
-		$rmpath = &RemoveFromEnd($GLOBALS{'UserFilesPath'},'/');
-		return("$rmpath$folderPath");
-	} else {
-		return("$GLOBALS{'UserFilesPath'}$resourceType$folderPath");
-	}
-}
-
-sub RemoveExtension
-{
-	local($fileName) = @_;
-	local($path, $base, $ext);
-	if($fileName !~ /\./) {
-		$fileName .= '.';
-	}
-	if($fileName =~ /([^\\\/]*)\.(.*)$/) {
-		$base = $1;
-		$ext  = $2;
-		if($fileName =~ /(.*)$base\.$ext$/) {
-			$path = $1;
-		}
-	}
-	return($path,$base,$ext);
-
-}
-
-sub ServerMapFolder
-{
-	local($resourceType,$folderPath) = @_;
-
-	# Get the resource type directory.
-	$sResourceTypePath = $GLOBALS{'UserFilesDirectory'} . $resourceType . '/';
-
-	# Ensure that the directory exists.
-	&CreateServerFolder($sResourceTypePath);
-
-	# Return the resource type directory combined with the required path.
-	$rmpath = &RemoveFromStart($folderPath,'/');
-	return("$sResourceTypePath$rmpath");
-}
-
-sub GetParentFolder
-{
-	local($folderPath) = @_;
-
-	$folderPath =~ s/[\/][^\/]+[\/]?$//g;
-	return $folderPath;
-}
-
-sub CreateServerFolder
-{
-	local($folderPath) = @_;
-
-	$sParent = &GetParentFolder($folderPath);
-	# Check if the parent exists, or create it.
-	if(!(-e $sParent)) {
-		$sErrorMsg = &CreateServerFolder($sParent);
-		if($sErrorMsg == 1) {
-			return(1);
-		}
-	}
-	if(!(-e $folderPath)) {
-		umask(000);
-		mkdir("$folderPath",0777);
-		chmod(0777,"$folderPath");
-		return(0);
-	} else {
-		return(1);
-	}
-}
-
-sub GetRootPath
-{
-#use Cwd;
-
-#	my $dir = getcwd;
-#	print $dir;
-#	$dir  =~ s/$ENV{'DOCUMENT_ROOT'}//g;
-#	print $dir;
-#	return($dir);
-
-#	$wk = $0;
-#	$wk =~ s/\/connector\.cgi//g;
-#	if($wk) {
-#		$current_dir = $wk;
-#	} else {
-#		$current_dir = `pwd`;
-#	}
-#	return($current_dir);
-use Cwd;
-
-	if($ENV{'DOCUMENT_ROOT'}) {
-		$dir = $ENV{'DOCUMENT_ROOT'};
-	} else {
-		my $dir = getcwd;
-		$workdir =~ s/\/connector\.cgi//g;
-		$dir  =~ s/$workdir//g;
-	}
-	return($dir);
-
-
-
-}
-1;

Deleted: pal-wcm/trunk/src/main/webapp/fckeditor/editor/filemanager/browser/default/connectors/perl/upload_fck.pl
===================================================================
--- pal-wcm/trunk/src/main/webapp/fckeditor/editor/filemanager/browser/default/connectors/perl/upload_fck.pl	2008-09-03 08:05:44 UTC (rev 1112)
+++ pal-wcm/trunk/src/main/webapp/fckeditor/editor/filemanager/browser/default/connectors/perl/upload_fck.pl	2008-09-04 02:44:24 UTC (rev 1113)
@@ -1,667 +0,0 @@
-#####
-#  FCKeditor - The text editor for Internet - http://www.fckeditor.net
-#  Copyright (C) 2003-2007 Frederico Caldeira Knabben
-#
-#  == BEGIN LICENSE ==
-#
-#  Licensed under the terms of any of the following licenses at your
-#  choice:
-#
-#   - GNU General Public License Version 2 or later (the "GPL")
-#     http://www.gnu.org/licenses/gpl.html
-#
-#   - GNU Lesser General Public License Version 2.1 or later (the "LGPL")
-#     http://www.gnu.org/licenses/lgpl.html
-#
-#   - Mozilla Public License Version 1.1 or later (the "MPL")
-#     http://www.mozilla.org/MPL/MPL-1.1.html
-#
-#  == END LICENSE ==
-#
-#  This is the File Manager Connector for Perl.
-#####
-
-# image data save dir
-$img_dir	= './temp/';
-
-
-# File size max(unit KB)
-$MAX_CONTENT_SIZE =  30000;
-
-# Filelock (1=use,0=not use)
-$PM{'flock'}		= '1';
-
-
-# upload Content-Type list
-my %UPLOAD_CONTENT_TYPE_LIST = (
-	'image/(x-)?png'						=>	'png',	# PNG image
-	'image/p?jpe?g'							=>	'jpg',	# JPEG image
-	'image/gif'								=>	'gif',	# GIF image
-	'image/x-xbitmap'						=>	'xbm',	# XBM image
-
-	'image/(x-(MS-)?)?bmp'					=>	'bmp',	# Windows BMP image
-	'image/pict'							=>	'pict',	# Macintosh PICT image
-	'image/tiff'							=>	'tif',	# TIFF image
-	'application/pdf'						=>	'pdf',	# PDF image
-	'application/x-shockwave-flash'			=>	'swf',	# Shockwave Flash
-
-	'video/(x-)?msvideo'					=>	'avi',	# Microsoft Video
-	'video/quicktime'						=>	'mov',	# QuickTime Video
-	'video/mpeg'							=>	'mpeg',	# MPEG Video
-	'video/x-mpeg2'							=>	'mpv2', # MPEG2 Video
-
-	'audio/(x-)?midi?'						=>	'mid',	# MIDI Audio
-	'audio/(x-)?wav'						=>	'wav',	# WAV Audio
-	'audio/basic'							=>	'au',	# ULAW Audio
-	'audio/mpeg'							=>	'mpga',	# MPEG Audio
-
-	'application/(x-)?zip(-compressed)?'	=>	'zip',	# ZIP Compress
-
-	'text/html'								=>	'html', # HTML
-	'text/plain'							=>	'txt',	# TEXT
-	'(?:application|text)/(?:rtf|richtext)'	=>	'rtf',	# RichText
-
-	'application/msword'					=>	'doc',	# Microsoft Word
-	'application/vnd.ms-excel'				=>	'xls',	# Microsoft Excel
-
-	''
-);
-
-# Upload is permitted.
-# A regular expression is possible.
-my %UPLOAD_EXT_LIST = (
-	'png'					=>	'PNG image',
-	'p?jpe?g|jpe|jfif|pjp'	=>	'JPEG image',
-	'gif'					=>	'GIF image',
-	'xbm'					=>	'XBM image',
-
-	'bmp|dib|rle'			=>	'Windows BMP image',
-	'pi?ct'					=>	'Macintosh PICT image',
-	'tiff?'					=>	'TIFF image',
-	'pdf'					=>	'PDF image',
-	'swf'					=>	'Shockwave Flash',
-
-	'avi'					=>	'Microsoft Video',
-	'moo?v|qt'				=>	'QuickTime Video',
-	'm(p(e?gv?|e|v)|1v)'	=>	'MPEG Video',
-	'mp(v2|2v)'				=>	'MPEG2 Video',
-
-	'midi?|kar|smf|rmi|mff'	=>	'MIDI Audio',
-	'wav'					=>	'WAVE Audio',
-	'au|snd'				=>	'ULAW Audio',
-	'mp(e?ga|2|a|3)|abs'	=>	'MPEG Audio',
-
-	'zip'					=>	'ZIP Compress',
-	'lzh'					=>	'LZH Compress',
-	'cab'					=>	'CAB Compress',
-
-	'd?html?'				=>	'HTML',
-	'rtf|rtx'				=>	'RichText',
-	'txt|text'				=>	'Text',
-
-	''
-);
-
-
-# sjis or euc
-my $CHARCODE = 'sjis';
-
-$TRANS_2BYTE_CODE = 0;
-
-##############################################################################
-# Summary
-#
-# Form Read input
-#
-# Parameters
-# Returns
-# Memo
-##############################################################################
-sub read_input
-{
-eval("use File::Copy;");
-eval("use File::Path;");
-
-	my ($FORM) = @_;
-
-
-	mkdir($img_dir,0777);
-	chmod(0777,$img_dir);
-
-	undef $img_data_exists;
-	undef @NEWFNAMES;
-	undef @NEWFNAME_DATA;
-
-	if($ENV{'CONTENT_LENGTH'} > 10000000 || $ENV{'CONTENT_LENGTH'} > $MAX_CONTENT_SIZE * 1024) {
-		&upload_error(
-			'Size Error',
-			sprintf(
-				"Transmitting size is too large.MAX <strong>%d KB</strong> Now Size <strong>%d KB</strong>(<strong>%d bytes</strong> Over)",
-				$MAX_CONTENT_SIZE,
-				int($ENV{'CONTENT_LENGTH'} / 1024),
-				$ENV{'CONTENT_LENGTH'} - $MAX_CONTENT_SIZE * 1024
-			)
-		);
-	}
-
-	my $Buffer;
-	if($ENV{'CONTENT_TYPE'} =~ /multipart\/form-data/) {
-		# METHOD POST only
-		return	unless($ENV{'CONTENT_LENGTH'});
-
-		binmode(STDIN);
-		# STDIN A pause character is detected.'(MacIE3.0 boundary of $ENV{'CONTENT_TYPE'} cannot be trusted.)
-		my $Boundary = <STDIN>;
-		$Boundary =~ s/\x0D\x0A//;
-		$Boundary = quotemeta($Boundary);
-		while(<STDIN>) {
-			if(/^\s*Content-Disposition:/i) {
-				my($name,$ContentType,$FileName);
-				# form data get
-				if(/\bname="([^"]+)"/i || /\bname=([^\s:;]+)/i) {
-					$name = $1;
-					$name	=~ tr/+/ /;
-					$name	=~ s/%([a-fA-F0-9][a-fA-F0-9])/pack("C", hex($1))/eg;
-					&Encode(\$name);
-				}
-				if(/\bfilename="([^"]*)"/i || /\bfilename=([^\s:;]*)/i) {
-					$FileName = $1 || 'unknown';
-				}
-				# head read
-				while(<STDIN>) {
-					last	if(! /\w/);
-					if(/^\s*Content-Type:\s*"([^"]+)"/i || /^\s*Content-Type:\s*([^\s:;]+)/i) {
-						$ContentType = $1;
-					}
-				}
-				# body read
-				$value = "";
-				while(<STDIN>) {
-					last	if(/^$Boundary/o);
-					$value .= $_;
-				};
-				$lastline = $_;
-				$value =~s /\x0D\x0A$//;
-				if($value ne '') {
-					if($FileName || $ContentType) {
-						$img_data_exists = 1;
-						(
-							$FileName,		#
-							$Ext,			#
-							$Length,		#
-							$ImageWidth,	#
-							$ImageHeight,	#
-							$ContentName	#
-						) = &CheckContentType(\$value,$FileName,$ContentType);
-
-						$FORM{$name}	= $FileName;
-						$new_fname		= $FileName;
-						push(@NEWFNAME_DATA,"$FileName\t$Ext\t$Length\t$ImageWidth\t$ImageHeight\t$ContentName");
-
-						# Multi-upload correspondence
-						push(@NEWFNAMES,$new_fname);
-						open(OUT,">$img_dir/$new_fname");
-						binmode(OUT);
-						eval "flock(OUT,2);" if($PM{'flock'} == 1);
-						print OUT $value;
-						eval "flock(OUT,8);" if($PM{'flock'} == 1);
-						close(OUT);
-
-					} elsif($name) {
-						$value	=~ tr/+/ /;
-						$value	=~ s/%([a-fA-F0-9][a-fA-F0-9])/pack("C", hex($1))/eg;
-						&Encode(\$value,'trans');
-						$FORM{$name} .= "\0"			if(defined($FORM{$name}));
-						$FORM{$name} .= $value;
-					}
-				}
-			};
-			last if($lastline =~ /^$Boundary\-\-/o);
-		}
-	} elsif($ENV{'CONTENT_LENGTH'}) {
-		read(STDIN,$Buffer,$ENV{'CONTENT_LENGTH'});
-	}
-	foreach(split(/&/,$Buffer),split(/&/,$ENV{'QUERY_STRING'})) {
-		my($name, $value) = split(/=/);
-		$name	=~ tr/+/ /;
-		$name	=~ s/%([a-fA-F0-9][a-fA-F0-9])/pack("C", hex($1))/eg;
-		$value	=~ tr/+/ /;
-		$value	=~ s/%([a-fA-F0-9][a-fA-F0-9])/pack("C", hex($1))/eg;
-
-		&Encode(\$name);
-		&Encode(\$value,'trans');
-		$FORM{$name} .= "\0"			if(defined($FORM{$name}));
-		$FORM{$name} .= $value;
-
-	}
-
-}
-
-##############################################################################
-# Summary
-#
-#	CheckContentType
-#
-# Parameters
-# Returns
-# Memo
-##############################################################################
-sub CheckContentType
-{
-
-	my($DATA,$FileName,$ContentType) = @_;
-	my($Ext,$ImageWidth,$ImageHeight,$ContentName,$Infomation);
-	my $DataLength = length($$DATA);
-
-	# An unknown file type
-
-	$_ = $ContentType;
-	my $UnknownType = (
-		!$_
-		|| /^application\/(x-)?macbinary$/i
-		|| /^application\/applefile$/i
-		|| /^application\/octet-stream$/i
-		|| /^text\/plane$/i
-		|| /^x-unknown-content-type/i
-	);
-
-	# MacBinary(Mac Unnecessary data are deleted.)
-	if($UnknownType || $ENV{'HTTP_USER_AGENT'} =~ /Macintosh|Mac_/) {
-		if($DataLength > 128 && !unpack("C",substr($$DATA,0,1)) && !unpack("C",substr($$DATA,74,1)) && !unpack("C",substr($$DATA,82,1)) ) {
-			my $MacBinary_ForkLength = unpack("N", substr($$DATA, 83, 4));		# ForkLength Get
-			my $MacBinary_FileName = quotemeta(substr($$DATA, 2, unpack("C",substr($$DATA, 1, 1))));
-			if($MacBinary_FileName && $MacBinary_ForkLength && $DataLength >= $MacBinary_ForkLength + 128
-					&& ($FileName =~ /$MacBinary_FileName/i || substr($$DATA,102,4) eq 'mBIN')) {	# DATA TOP 128byte MacBinary!!
-				$$DATA				= substr($$DATA,128,$MacBinary_ForkLength);
-				my $ResourceLength	= $DataLength - $MacBinary_ForkLength - 128;
-				$DataLength			= $MacBinary_ForkLength;
-			}
-		}
-	}
-
-	# A file name is changed into EUC.
-#	&jcode::convert(\$FileName,'euc',$FormCodeDefault);
-#	&jcode::h2z_euc(\$FileName);
-	$FileName =~ s/^.*\\//;					# Windows, Mac
-	$FileName =~ s/^.*\///;					# UNIX
-	$FileName =~ s/&/&amp;/g;
-	$FileName =~ s/"/&quot;/g;
-	$FileName =~ s/</&lt;/g;
-	$FileName =~ s/>/&gt;/g;
-#
-#	if($CHARCODE ne 'euc') {
-#		&jcode::convert(\$FileName,$CHARCODE,'euc');
-#	}
-
-	# An extension is extracted and it changes into a small letter.
-	my $FileExt;
-	if($FileName =~ /\.(\w+)$/) {
-		$FileExt = $1;
-		$FileExt =~ tr/A-Z/a-z/;
-	}
-
-	# Executable file detection (ban on upload)
-	if($$DATA =~ /^MZ/) {
-		$Ext = 'exe';
-	}
-	# text
-	if(!$Ext && ($UnknownType || $ContentType =~ /^text\//i || $ContentType =~ /^application\/(?:rtf|richtext)$/i || $ContentType =~ /^image\/x-xbitmap$/i)
-				&& ! $$DATA =~ /[\000-\006\177\377]/) {
-#		$$DATA =~ s/\x0D\x0A/\n/g;
-#		$$DATA =~ tr/\x0D\x0A/\n\n/;
-#
-#		if(
-#			$$DATA =~ /<\s*SCRIPT(?:.|\n)*?>/i
-#				|| $$DATA =~ /<\s*(?:.|\n)*?\bONLOAD\s*=(?:.|\n)*?>/i
-#				|| $$DATA =~ /<\s*(?:.|\n)*?\bONCLICK\s*=(?:.|\n)*?>/i
-#				) {
-#			$Infomation = '(JavaScript contains)';
-#		}
-#		if($$DATA =~ /<\s*TABLE(?:.|\n)*?>/i
-#				|| $$DATA =~ /<\s*BLINK(?:.|\n)*?>/i
-#				|| $$DATA =~ /<\s*MARQUEE(?:.|\n)*?>/i
-#				|| $$DATA =~ /<\s*OBJECT(?:.|\n)*?>/i
-#				|| $$DATA =~ /<\s*EMBED(?:.|\n)*?>/i
-#				|| $$DATA =~ /<\s*FRAME(?:.|\n)*?>/i
-#				|| $$DATA =~ /<\s*APPLET(?:.|\n)*?>/i
-#				|| $$DATA =~ /<\s*FORM(?:.|\n)*?>/i
-#				|| $$DATA =~ /<\s*(?:.|\n)*?\bSRC\s*=(?:.|\n)*?>/i
-#				|| $$DATA =~ /<\s*(?:.|\n)*?\bDYNSRC\s*=(?:.|\n)*?>/i
-#				) {
-#			$Infomation = '(the HTML tag which is not safe is included)';
-#		}
-
-		if($FileExt =~ /^txt$/i || $FileExt =~ /^cgi$/i || $FileExt =~ /^pl$/i) {								# Text File
-			$Ext = 'txt';
-		} elsif($ContentType =~ /^text\/html$/i || $FileExt =~ /html?/i || $$DATA =~ /<\s*HTML(?:.|\n)*?>/i) {	# HTML File
-			$Ext = 'html';
-		} elsif($ContentType =~ /^image\/x-xbitmap$/i || $FileExt =~ /^xbm$/i) {								# XBM(x-BitMap) Image
-			my $XbmName = $1;
-			my ($XbmWidth, $XbmHeight);
-			if($$DATA =~ /\#define\s*$XbmName\_width\s*(\d+)/i) {
-				$XbmWidth = $1;
-			}
-			if($$DATA =~ /\#define\s*$XbmName\_height\s*(\d+)/i) {
-				$XbmHeight = $1;
-			}
-			if($XbmWidth && $XbmHeight) {
-				$Ext = 'xbm';
-				$ImageWidth		= $XbmWidth;
-				$ImageHeight	= $XbmHeight;
-			}
-		} else {		#
-			$Ext = 'txt';
-		}
-	}
-
-	# image
-	if(!$Ext && ($UnknownType || $ContentType =~ /^image\//i)) {
-		# PNG
-		if($$DATA =~ /^\x89PNG\x0D\x0A\x1A\x0A/) {
-			if(substr($$DATA, 12, 4) eq 'IHDR') {
-				$Ext = 'png';
-				($ImageWidth, $ImageHeight) = unpack("N2", substr($$DATA, 16, 8));
-			}
-		} elsif($$DATA =~ /^GIF8(?:9|7)a/) {															# GIF89a(modified), GIF89a, GIF87a
-			$Ext = 'gif';
-			($ImageWidth, $ImageHeight) = unpack("v2", substr($$DATA, 6, 4));
-		} elsif($$DATA =~ /^II\x2a\x00\x08\x00\x00\x00/ || $$DATA =~ /^MM\x00\x2a\x00\x00\x00\x08/) {	# TIFF
-			$Ext = 'tif';
-		} elsif($$DATA =~ /^BM/) {																		# BMP
-			$Ext = 'bmp';
-		} elsif($$DATA =~ /^\xFF\xD8\xFF/ || $$DATA =~ /JFIF/) {										# JPEG
-			my $HeaderPoint = index($$DATA, "\xFF\xD8\xFF", 0);
-			my $Point = $HeaderPoint + 2;
-			while($Point < $DataLength) {
-				my($Maker, $MakerType, $MakerLength) = unpack("C2n",substr($$DATA,$Point,4));
-				if($Maker != 0xFF || $MakerType == 0xd9 || $MakerType == 0xda) {
-					last;
-				} elsif($MakerType >= 0xC0 && $MakerType <= 0xC3) {
-					$Ext = 'jpg';
-					($ImageHeight, $ImageWidth) = unpack("n2", substr($$DATA, $Point + 5, 4));
-					if($HeaderPoint > 0) {
-						$$DATA = substr($$DATA, $HeaderPoint);
-						$DataLength = length($$DATA);
-					}
-					last;
-				} else {
-					$Point += $MakerLength + 2;
-				}
-			}
-		}
-	}
-
-	# audio
-	if(!$Ext && ($UnknownType || $ContentType =~ /^audio\//i)) {
-		# MIDI Audio
-		if($$DATA =~ /^MThd/) {
-			$Ext = 'mid';
-		} elsif($$DATA =~ /^\x2esnd/) {		# ULAW Audio
-			$Ext = 'au';
-		} elsif($$DATA =~ /^RIFF/ || $$DATA =~ /^ID3/ && $$DATA =~ /RIFF/) {
-			my $HeaderPoint = index($$DATA, "RIFF", 0);
-			$_ = substr($$DATA, $HeaderPoint + 8, 8);
-			if(/^WAVEfmt $/) {
-				# WAVE
-				if(unpack("V",substr($$DATA, $HeaderPoint + 16, 4)) == 16) {
-					$Ext = 'wav';
-				} else {					# RIFF WAVE MP3
-					$Ext = 'mp3';
-				}
-			} elsif(/^RMIDdata$/) {			# RIFF MIDI
-				$Ext = 'rmi';
-			} elsif(/^RMP3data$/) {			# RIFF MP3
-				$Ext = 'rmp';
-			}
-			if($ContentType =~ /^audio\//i) {
-				$Infomation .= '(RIFF '. substr($$DATA, $HeaderPoint + 8, 4). ')';
-			}
-		}
-	}
-
-	# a binary file
-	unless ($Ext) {
-		# PDF image
-		if($$DATA =~ /^\%PDF/) {
-			# Picture size is not measured.
-			$Ext = 'pdf';
-		} elsif($$DATA =~ /^FWS/) {		# Shockwave Flash
-			$Ext = 'swf';
-		} elsif($$DATA =~ /^RIFF/ || $$DATA =~ /^ID3/ && $$DATA =~ /RIFF/) {
-			my $HeaderPoint = index($$DATA, "RIFF", 0);
-			$_ = substr($$DATA,$HeaderPoint + 8, 8);
-			# AVI
-			if(/^AVI LIST$/) {
-				$Ext = 'avi';
-			}
-			if($ContentType =~ /^video\//i) {
-				$Infomation .= '(RIFF '. substr($$DATA, $HeaderPoint + 8, 4). ')';
-			}
-		} elsif($$DATA =~ /^PK/) {			# ZIP Compress File
-			$Ext = 'zip';
-		} elsif($$DATA =~ /^MSCF/) {		# CAB Compress File
-			$Ext = 'cab';
-		} elsif($$DATA =~ /^Rar\!/) {		# RAR Compress File
-			$Ext = 'rar';
-		} elsif(substr($$DATA, 2, 5) =~ /^\-lh(\d+|d)\-$/) {		# LHA Compress File
-			$Infomation .= "(lh$1)";
-			$Ext = 'lzh';
-		} elsif(substr($$DATA, 325, 25) eq "Apple Video Media Handler" || substr($$DATA, 325, 30) eq "Apple \x83\x72\x83\x66\x83\x49\x81\x45\x83\x81\x83\x66\x83\x42\x83\x41\x83\x6E\x83\x93\x83\x68\x83\x89") {
-			# QuickTime
-			$Ext = 'mov';
-		}
-	}
-
-	# Header analysis failure
-	unless ($Ext) {
-		# It will be followed if it applies for the MIME type from the browser.
-		foreach (keys %UPLOAD_CONTENT_TYPE_LIST) {
-			next unless ($_);
-			if($ContentType =~ /^$_$/i) {
-				$Ext = $UPLOAD_CONTENT_TYPE_LIST{$_};
-				$ContentName = &CheckContentExt($Ext);
-				if(
-					grep {$_ eq $Ext;} (
-						'png',
-						'gif',
-						'jpg',
-						'xbm',
-						'tif',
-						'bmp',
-						'pdf',
-						'swf',
-						'mov',
-						'zip',
-						'cab',
-						'lzh',
-						'rar',
-						'mid',
-						'rmi',
-						'au',
-						'wav',
-						'avi',
-						'exe'
-					)
-				) {
-					$Infomation .= ' / Header analysis failure';
-				}
-				if($Ext ne $FileExt && &CheckContentExt($FileExt) eq $ContentName) {
-					$Ext = $FileExt;
-				}
-				last;
-			}
-		}
-		# a MIME type is unknown--It judges from an extension.
-		unless ($Ext) {
-			$ContentName = &CheckContentExt($FileExt);
-			if($ContentName) {
-				$Ext = $FileExt;
-				$Infomation .= ' /	MIME type is unknown('. $ContentType. ')';
-				last;
-			}
-		}
-	}
-
-#	$ContentName = &CheckContentExt($Ext)	unless($ContentName);
-#	if($Ext && $ContentName) {
-#		$ContentName .=  $Infomation;
-#	} else {
-#		&upload_error(
-#			'Extension Error',
-#			"$FileName A not corresponding extension ($Ext)<BR>The extension which can be responded ". join(',', sort values(%UPLOAD_EXT_LIST))
-#		);
-#	}
-
-#	# SSI Tag Deletion
-#	if($Ext =~ /.?html?/ && $$DATA =~ /<\!/) {
-#		foreach (
-#			'config',
-#			'echo',
-#			'exec',
-#			'flastmod',
-#			'fsize',
-#			'include'
-#		) {
-#			$$DATA =~ s/\#\s*$_/\&\#35\;$_/ig
-#		}
-#	}
-
-	return (
-		$FileName,
-		$Ext,
-		int($DataLength / 1024 + 1),
-		$ImageWidth,
-		$ImageHeight,
-		$ContentName
-	);
-}
-
-##############################################################################
-# Summary
-#
-# Extension discernment
-#
-# Parameters
-# Returns
-# Memo
-##############################################################################
-
-sub CheckContentExt
-{
-
-	my($Ext) = @_;
-	my $ContentName;
-	foreach (keys %UPLOAD_EXT_LIST) {
-		next	unless ($_);
-		if($_ && $Ext =~ /^$_$/) {
-			$ContentName = $UPLOAD_EXT_LIST{$_};
-			last;
-		}
-	}
-	return $ContentName;
-
-}
-
-##############################################################################
-# Summary
-#
-# Form decode
-#
-# Parameters
-# Returns
-# Memo
-##############################################################################
-sub Encode
-{
-
-	my($value,$Trans) = @_;
-
-#	my $FormCode = &jcode::getcode($value) || $FormCodeDefault;
-#	$FormCodeDefault ||= $FormCode;
-#
-#	if($Trans && $TRANS_2BYTE_CODE) {
-#		if($FormCode ne 'euc') {
-#			&jcode::convert($value, 'euc', $FormCode);
-#		}
-#		&jcode::tr(
-#			$value,
-#			"\xA3\xB0-\xA3\xB9\xA3\xC1-\xA3\xDA\xA3\xE1-\xA3\xFA",
-#			'0-9A-Za-z'
-#		);
-#		if($CHARCODE ne 'euc') {
-#			&jcode::convert($value,$CHARCODE,'euc');
-#		}
-#	} else {
-#		if($CHARCODE ne $FormCode) {
-#			&jcode::convert($value,$CHARCODE,$FormCode);
-#		}
-#	}
-#	if($CHARCODE eq 'euc') {
-#		&jcode::h2z_euc($value);
-#	} elsif($CHARCODE eq 'sjis') {
-#		&jcode::h2z_sjis($value);
-#	}
-
-}
-
-##############################################################################
-# Summary
-#
-# Error Msg
-#
-# Parameters
-# Returns
-# Memo
-##############################################################################
-
-sub upload_error
-{
-
-	local($error_message)	= $_[0];
-	local($error_message2)	= $_[1];
-
-	print "Content-type: text/html\n\n";
-	print<<EOF;
-<HTML>
-<HEAD>
-<TITLE>Error Message</TITLE></HEAD>
-<BODY>
-<table border="1" cellspacing="10" cellpadding="10">
-	<TR bgcolor="#0000B0">
-	<TD bgcolor="#0000B0" NOWRAP><font size="-1" color="white"><B>Error Message</B></font></TD>
-	</TR>
-</table>
-<UL>
-<H4> $error_message </H4>
-$error_message2 <BR>
-</UL>
-</BODY>
-</HTML>
-EOF
-	&rm_tmp_uploaded_files; 		# Image Temporary deletion
-	exit;
-}
-
-##############################################################################
-# Summary
-#
-# Image Temporary deletion
-#
-# Parameters
-# Returns
-# Memo
-##############################################################################
-
-sub rm_tmp_uploaded_files
-{
-	if($img_data_exists == 1){
-		sleep 1;
-		foreach $fname_list(@NEWFNAMES) {
-			if(-e "$img_dir/$fname_list") {
-				unlink("$img_dir/$fname_list");
-			}
-		}
-	}
-
-}
-1;

Deleted: pal-wcm/trunk/src/main/webapp/fckeditor/editor/filemanager/browser/default/connectors/perl/util.pl
===================================================================
--- pal-wcm/trunk/src/main/webapp/fckeditor/editor/filemanager/browser/default/connectors/perl/util.pl	2008-09-03 08:05:44 UTC (rev 1112)
+++ pal-wcm/trunk/src/main/webapp/fckeditor/editor/filemanager/browser/default/connectors/perl/util.pl	2008-09-04 02:44:24 UTC (rev 1113)
@@ -1,60 +0,0 @@
-#####
-#  FCKeditor - The text editor for Internet - http://www.fckeditor.net
-#  Copyright (C) 2003-2007 Frederico Caldeira Knabben
-#
-#  == BEGIN LICENSE ==
-#
-#  Licensed under the terms of any of the following licenses at your
-#  choice:
-#
-#   - GNU General Public License Version 2 or later (the "GPL")
-#     http://www.gnu.org/licenses/gpl.html
-#
-#   - GNU Lesser General Public License Version 2.1 or later (the "LGPL")
-#     http://www.gnu.org/licenses/lgpl.html
-#
-#   - Mozilla Public License Version 1.1 or later (the "MPL")
-#     http://www.mozilla.org/MPL/MPL-1.1.html
-#
-#  == END LICENSE ==
-#
-#  This is the File Manager Connector for Perl.
-#####
-
-sub RemoveFromStart
-{
-	local($sourceString, $charToRemove) = @_;
-	$sPattern = '^' . $charToRemove . '+' ;
-	$sourceString =~ s/^$charToRemove+//g;
-	return $sourceString;
-}
-
-sub RemoveFromEnd
-{
-	local($sourceString, $charToRemove) = @_;
-	$sPattern = $charToRemove . '+$' ;
-	$sourceString =~ s/$charToRemove+$//g;
-	return $sourceString;
-}
-
-sub ConvertToXmlAttribute
-{
-	local($value) = @_;
-	return $value;
-#	return utf8_encode(htmlspecialchars($value));
-
-}
-
-sub specialchar_cnv
-{
-	local($ch) = @_;
-
-	$ch =~ s/&/&amp;/g;		# &
-	$ch =~ s/\"/&quot;/g;	#"
-	$ch =~ s/\'/&#39;/g;	# '
-	$ch =~ s/</&lt;/g;		# <
-	$ch =~ s/>/&gt;/g;		# >
-	return($ch);
-}
-
-1;

Deleted: pal-wcm/trunk/src/main/webapp/fckeditor/editor/filemanager/browser/default/connectors/php/basexml.php
===================================================================
--- pal-wcm/trunk/src/main/webapp/fckeditor/editor/filemanager/browser/default/connectors/php/basexml.php	2008-09-03 08:05:44 UTC (rev 1112)
+++ pal-wcm/trunk/src/main/webapp/fckeditor/editor/filemanager/browser/default/connectors/php/basexml.php	2008-09-04 02:44:24 UTC (rev 1113)
@@ -1,75 +0,0 @@
-<?php
-/*
- * FCKeditor - The text editor for Internet - http://www.fckeditor.net
- * Copyright (C) 2003-2007 Frederico Caldeira Knabben
- *
- * == BEGIN LICENSE ==
- *
- * Licensed under the terms of any of the following licenses at your
- * choice:
- *
- *  - GNU General Public License Version 2 or later (the "GPL")
- *    http://www.gnu.org/licenses/gpl.html
- *
- *  - GNU Lesser General Public License Version 2.1 or later (the "LGPL")
- *    http://www.gnu.org/licenses/lgpl.html
- *
- *  - Mozilla Public License Version 1.1 or later (the "MPL")
- *    http://www.mozilla.org/MPL/MPL-1.1.html
- *
- * == END LICENSE ==
- *
- * These functions define the base of the XML response sent by the PHP
- * connector.
- */
-
-function SetXmlHeaders()
-{
-	ob_end_clean() ;
-
-	// Prevent the browser from caching the result.
-	// Date in the past
-	header('Expires: Mon, 26 Jul 1997 05:00:00 GMT') ;
-	// always modified
-	header('Last-Modified: ' . gmdate('D, d M Y H:i:s') . ' GMT') ;
-	// HTTP/1.1
-	header('Cache-Control: no-store, no-cache, must-revalidate') ;
-	header('Cache-Control: post-check=0, pre-check=0', false) ;
-	// HTTP/1.0
-	header('Pragma: no-cache') ;
-
-	// Set the response format.
-	header( 'Content-Type:text/xml; charset=utf-8' ) ;
-}
-
-function CreateXmlHeader( $command, $resourceType, $currentFolder )
-{
-	SetXmlHeaders() ;
-
-	// Create the XML document header.
-	echo '<?xml version="1.0" encoding="utf-8" ?>' ;
-
-	// Create the main "Connector" node.
-	echo '<Connector command="' . $command . '" resourceType="' . $resourceType . '">' ;
-
-	// Add the current folder node.
-	echo '<CurrentFolder path="' . ConvertToXmlAttribute( $currentFolder ) . '" url="' . ConvertToXmlAttribute( GetUrlFromPath( $resourceType, $currentFolder ) ) . '" />' ;
-}
-
-function CreateXmlFooter()
-{
-	echo '</Connector>' ;
-}
-
-function SendError( $number, $text )
-{
-	SetXmlHeaders() ;
-
-	// Create the XML document header
-	echo '<?xml version="1.0" encoding="utf-8" ?>' ;
-
-	echo '<Connector><Error number="' . $number . '" text="' . htmlspecialchars( $text ) . '" /></Connector>' ;
-
-	exit ;
-}
-?>
\ No newline at end of file

Deleted: pal-wcm/trunk/src/main/webapp/fckeditor/editor/filemanager/browser/default/connectors/php/commands.php
===================================================================
--- pal-wcm/trunk/src/main/webapp/fckeditor/editor/filemanager/browser/default/connectors/php/commands.php	2008-09-03 08:05:44 UTC (rev 1112)
+++ pal-wcm/trunk/src/main/webapp/fckeditor/editor/filemanager/browser/default/connectors/php/commands.php	2008-09-04 02:44:24 UTC (rev 1113)
@@ -1,222 +0,0 @@
-<?php
-/*
- * FCKeditor - The text editor for Internet - http://www.fckeditor.net
- * Copyright (C) 2003-2007 Frederico Caldeira Knabben
- *
- * == BEGIN LICENSE ==
- *
- * Licensed under the terms of any of the following licenses at your
- * choice:
- *
- *  - GNU General Public License Version 2 or later (the "GPL")
- *    http://www.gnu.org/licenses/gpl.html
- *
- *  - GNU Lesser General Public License Version 2.1 or later (the "LGPL")
- *    http://www.gnu.org/licenses/lgpl.html
- *
- *  - Mozilla Public License Version 1.1 or later (the "MPL")
- *    http://www.mozilla.org/MPL/MPL-1.1.html
- *
- * == END LICENSE ==
- *
- * This is the File Manager Connector for PHP.
- */
-
-function GetFolders( $resourceType, $currentFolder )
-{
-	// Map the virtual path to the local server path.
-	$sServerDir = ServerMapFolder( $resourceType, $currentFolder ) ;
-
-	// Array that will hold the folders names.
-	$aFolders	= array() ;
-
-	$oCurrentFolder = opendir( $sServerDir ) ;
-
-	while ( $sFile = readdir( $oCurrentFolder ) )
-	{
-		if ( $sFile != '.' && $sFile != '..' && is_dir( $sServerDir . $sFile ) )
-			$aFolders[] = '<Folder name="' . ConvertToXmlAttribute( $sFile ) . '" />' ;
-	}
-
-	closedir( $oCurrentFolder ) ;
-
-	// Open the "Folders" node.
-	echo "<Folders>" ;
-
-	natcasesort( $aFolders ) ;
-	foreach ( $aFolders as $sFolder )
-		echo $sFolder ;
-
-	// Close the "Folders" node.
-	echo "</Folders>" ;
-}
-
-function GetFoldersAndFiles( $resourceType, $currentFolder )
-{
-	// Map the virtual path to the local server path.
-	$sServerDir = ServerMapFolder( $resourceType, $currentFolder ) ;
-
-	// Arrays that will hold the folders and files names.
-	$aFolders	= array() ;
-	$aFiles		= array() ;
-
-	$oCurrentFolder = opendir( $sServerDir ) ;
-
-	while ( $sFile = readdir( $oCurrentFolder ) )
-	{
-		if ( $sFile != '.' && $sFile != '..' )
-		{
-			if ( is_dir( $sServerDir . $sFile ) )
-				$aFolders[] = '<Folder name="' . ConvertToXmlAttribute( $sFile ) . '" />' ;
-			else
-			{
-				$iFileSize = filesize( $sServerDir . $sFile ) ;
-				if ( $iFileSize > 0 )
-				{
-					$iFileSize = round( $iFileSize / 1024 ) ;
-					if ( $iFileSize < 1 ) $iFileSize = 1 ;
-				}
-
-				$aFiles[] = '<File name="' . ConvertToXmlAttribute( $sFile ) . '" size="' . $iFileSize . '" />' ;
-			}
-		}
-	}
-
-	// Send the folders
-	natcasesort( $aFolders ) ;
-	echo '<Folders>' ;
-
-	foreach ( $aFolders as $sFolder )
-		echo $sFolder ;
-
-	echo '</Folders>' ;
-
-	// Send the files
-	natcasesort( $aFiles ) ;
-	echo '<Files>' ;
-
-	foreach ( $aFiles as $sFiles )
-		echo $sFiles ;
-
-	echo '</Files>' ;
-}
-
-function CreateFolder( $resourceType, $currentFolder )
-{
-	$sErrorNumber	= '0' ;
-	$sErrorMsg		= '' ;
-
-	if ( isset( $_GET['NewFolderName'] ) )
-	{
-		$sNewFolderName = $_GET['NewFolderName'] ;
-
-		if ( strpos( $sNewFolderName, '..' ) !== FALSE )
-			$sErrorNumber = '102' ;		// Invalid folder name.
-		else
-		{
-			// Map the virtual path to the local server path of the current folder.
-			$sServerDir = ServerMapFolder( $resourceType, $currentFolder ) ;
-
-			if ( is_writable( $sServerDir ) )
-			{
-				$sServerDir .= $sNewFolderName ;
-
-				$sErrorMsg = CreateServerFolder( $sServerDir ) ;
-
-				switch ( $sErrorMsg )
-				{
-					case '' :
-						$sErrorNumber = '0' ;
-						break ;
-					case 'Invalid argument' :
-					case 'No such file or directory' :
-						$sErrorNumber = '102' ;		// Path too long.
-						break ;
-					default :
-						$sErrorNumber = '110' ;
-						break ;
-				}
-			}
-			else
-				$sErrorNumber = '103' ;
-		}
-	}
-	else
-		$sErrorNumber = '102' ;
-
-	// Create the "Error" node.
-	echo '<Error number="' . $sErrorNumber . '" originalDescription="' . ConvertToXmlAttribute( $sErrorMsg ) . '" />' ;
-}
-
-function FileUpload( $resourceType, $currentFolder )
-{
-	$sErrorNumber = '0' ;
-	$sFileName = '' ;
-
-	if ( isset( $_FILES['NewFile'] ) && !is_null( $_FILES['NewFile']['tmp_name'] ) )
-	{
-		global $Config ;
-
-		$oFile = $_FILES['NewFile'] ;
-
-		// Map the virtual path to the local server path.
-		$sServerDir = ServerMapFolder( $resourceType, $currentFolder ) ;
-
-		// Get the uploaded file name.
-		$sFileName = $oFile['name'] ;
-
-		// Replace dots in the name with underscores (only one dot can be there... security issue).
-		if ( $Config['ForceSingleExtension'] )
-			$sFileName = preg_replace( '/\\.(?![^.]*$)/', '_', $sFileName ) ;
-
-		$sOriginalFileName = $sFileName ;
-
-		// Get the extension.
-		$sExtension = substr( $sFileName, ( strrpos($sFileName, '.') + 1 ) ) ;
-		$sExtension = strtolower( $sExtension ) ;
-
-		$arAllowed	= $Config['AllowedExtensions'][$resourceType] ;
-		$arDenied	= $Config['DeniedExtensions'][$resourceType] ;
-
-		if ( ( count($arAllowed) == 0 || in_array( $sExtension, $arAllowed ) ) && ( count($arDenied) == 0 || !in_array( $sExtension, $arDenied ) ) )
-		{
-			$iCounter = 0 ;
-
-			while ( true )
-			{
-				$sFilePath = $sServerDir . $sFileName ;
-
-				if ( is_file( $sFilePath ) )
-				{
-					$iCounter++ ;
-					$sFileName = RemoveExtension( $sOriginalFileName ) . '(' . $iCounter . ').' . $sExtension ;
-					$sErrorNumber = '201' ;
-				}
-				else
-				{
-					move_uploaded_file( $oFile['tmp_name'], $sFilePath ) ;
-
-					if ( is_file( $sFilePath ) )
-					{
-						$oldumask = umask(0) ;
-						chmod( $sFilePath, 0777 ) ;
-						umask( $oldumask ) ;
-					}
-
-					break ;
-				}
-			}
-		}
-		else
-			$sErrorNumber = '202' ;
-	}
-	else
-		$sErrorNumber = '202' ;
-
-	echo '<script type="text/javascript">' ;
-	echo 'window.parent.frames["frmUpload"].OnUploadCompleted(' . $sErrorNumber . ',"' . str_replace( '"', '\\"', $sFileName ) . '") ;' ;
-	echo '</script>' ;
-
-	exit ;
-}
-?>
\ No newline at end of file

Deleted: pal-wcm/trunk/src/main/webapp/fckeditor/editor/filemanager/browser/default/connectors/php/config.php
===================================================================
--- pal-wcm/trunk/src/main/webapp/fckeditor/editor/filemanager/browser/default/connectors/php/config.php	2008-09-03 08:05:44 UTC (rev 1112)
+++ pal-wcm/trunk/src/main/webapp/fckeditor/editor/filemanager/browser/default/connectors/php/config.php	2008-09-04 02:44:24 UTC (rev 1113)
@@ -1,56 +0,0 @@
-<?php
-/*
- * FCKeditor - The text editor for Internet - http://www.fckeditor.net
- * Copyright (C) 2003-2007 Frederico Caldeira Knabben
- *
- * == BEGIN LICENSE ==
- *
- * Licensed under the terms of any of the following licenses at your
- * choice:
- *
- *  - GNU General Public License Version 2 or later (the "GPL")
- *    http://www.gnu.org/licenses/gpl.html
- *
- *  - GNU Lesser General Public License Version 2.1 or later (the "LGPL")
- *    http://www.gnu.org/licenses/lgpl.html
- *
- *  - Mozilla Public License Version 1.1 or later (the "MPL")
- *    http://www.mozilla.org/MPL/MPL-1.1.html
- *
- * == END LICENSE ==
- *
- * Configuration file for the File Manager Connector for PHP.
- */
-
-global $Config ;
-
-// SECURITY: You must explicitelly enable this "connector". (Set it to "true").
-$Config['Enabled'] = false ;
-
-
-// Path to user files relative to the document root.
-$Config['UserFilesPath'] = '/userfiles/' ;
-
-// Fill the following value it you prefer to specify the absolute path for the
-// user files directory. Usefull if you are using a virtual directory, symbolic
-// link or alias. Examples: 'C:\\MySite\\userfiles\\' or '/root/mysite/userfiles/'.
-// Attention: The above 'UserFilesPath' must point to the same directory.
-$Config['UserFilesAbsolutePath'] = '' ;
-
-// Due to security issues with Apache modules, it is reccomended to leave the
-// following setting enabled.
-$Config['ForceSingleExtension'] = true ;
-
-$Config['AllowedExtensions']['File']	= array() ;
-$Config['DeniedExtensions']['File']		= array('html','htm','php','php2','php3','php4','php5','phtml','pwml','inc','asp','aspx','ascx','jsp','cfm','cfc','pl','bat','exe','com','dll','vbs','js','reg','cgi','htaccess','asis') ;
-
-$Config['AllowedExtensions']['Image']	= array('jpg','gif','jpeg','png') ;
-$Config['DeniedExtensions']['Image']	= array() ;
-
-$Config['AllowedExtensions']['Flash']	= array('swf','fla') ;
-$Config['DeniedExtensions']['Flash']	= array() ;
-
-$Config['AllowedExtensions']['Media']	= array('swf','fla','jpg','gif','jpeg','png','avi','mpg','mpeg') ;
-$Config['DeniedExtensions']['Media']	= array() ;
-
-?>
\ No newline at end of file

Deleted: pal-wcm/trunk/src/main/webapp/fckeditor/editor/filemanager/browser/default/connectors/php/connector.php
===================================================================
--- pal-wcm/trunk/src/main/webapp/fckeditor/editor/filemanager/browser/default/connectors/php/connector.php	2008-09-03 08:05:44 UTC (rev 1112)
+++ pal-wcm/trunk/src/main/webapp/fckeditor/editor/filemanager/browser/default/connectors/php/connector.php	2008-09-04 02:44:24 UTC (rev 1113)
@@ -1,113 +0,0 @@
-<?php
-/*
- * FCKeditor - The text editor for Internet - http://www.fckeditor.net
- * Copyright (C) 2003-2007 Frederico Caldeira Knabben
- *
- * == BEGIN LICENSE ==
- *
- * Licensed under the terms of any of the following licenses at your
- * choice:
- *
- *  - GNU General Public License Version 2 or later (the "GPL")
- *    http://www.gnu.org/licenses/gpl.html
- *
- *  - GNU Lesser General Public License Version 2.1 or later (the "LGPL")
- *    http://www.gnu.org/licenses/lgpl.html
- *
- *  - Mozilla Public License Version 1.1 or later (the "MPL")
- *    http://www.mozilla.org/MPL/MPL-1.1.html
- *
- * == END LICENSE ==
- *
- * This is the File Manager Connector for PHP.
- */
-
-ob_start() ;
-
-include('config.php') ;
-include('util.php') ;
-include('io.php') ;
-include('basexml.php') ;
-include('commands.php') ;
-
-if ( !$Config['Enabled'] )
-	SendError( 1, 'This connector is disabled. Please check the "editor/filemanager/browser/default/connectors/php/config.php" file' ) ;
-
-// Get the "UserFiles" path.
-$GLOBALS["UserFilesPath"] = '' ;
-
-if ( isset( $Config['UserFilesPath'] ) )
-	$GLOBALS["UserFilesPath"] = $Config['UserFilesPath'] ;
-else if ( isset( $_GET['ServerPath'] ) )
-	$GLOBALS["UserFilesPath"] = $_GET['ServerPath'] ;
-else
-	$GLOBALS["UserFilesPath"] = '/userfiles/' ;
-
-if ( ! ereg( '/$', $GLOBALS["UserFilesPath"] ) )
-	$GLOBALS["UserFilesPath"] .= '/' ;
-
-if ( strlen( $Config['UserFilesAbsolutePath'] ) > 0 )
-{
-	$GLOBALS["UserFilesDirectory"] = $Config['UserFilesAbsolutePath'] ;
-
-	if ( ! ereg( '/$', $GLOBALS["UserFilesDirectory"] ) )
-		$GLOBALS["UserFilesDirectory"] .= '/' ;
-}
-else
-{
-	// Map the "UserFiles" path to a local directory.
-	$GLOBALS["UserFilesDirectory"] = GetRootPath() . $GLOBALS["UserFilesPath"] ;
-}
-
-DoResponse() ;
-
-function DoResponse()
-{
-	if ( !isset( $_GET['Command'] ) || !isset( $_GET['Type'] ) || !isset( $_GET['CurrentFolder'] ) )
-		return ;
-
-	// Get the main request informaiton.
-	$sCommand		= $_GET['Command'] ;
-	$sResourceType	= $_GET['Type'] ;
-	$sCurrentFolder	= $_GET['CurrentFolder'] ;
-
-	// Check if it is an allowed type.
-	if ( !in_array( $sResourceType, array('File','Image','Flash','Media') ) )
-		return ;
-
-	// Check the current folder syntax (must begin and start with a slash).
-	if ( ! ereg( '/$', $sCurrentFolder ) ) $sCurrentFolder .= '/' ;
-	if ( strpos( $sCurrentFolder, '/' ) !== 0 ) $sCurrentFolder = '/' . $sCurrentFolder ;
-
-	// Check for invalid folder paths (..)
-	if ( strpos( $sCurrentFolder, '..' ) )
-		SendError( 102, "" ) ;
-
-	// File Upload doesn't have to Return XML, so it must be intercepted before anything.
-	if ( $sCommand == 'FileUpload' )
-	{
-		FileUpload( $sResourceType, $sCurrentFolder ) ;
-		return ;
-	}
-
-	CreateXmlHeader( $sCommand, $sResourceType, $sCurrentFolder ) ;
-
-	// Execute the required command.
-	switch ( $sCommand )
-	{
-		case 'GetFolders' :
-			GetFolders( $sResourceType, $sCurrentFolder ) ;
-			break ;
-		case 'GetFoldersAndFiles' :
-			GetFoldersAndFiles( $sResourceType, $sCurrentFolder ) ;
-			break ;
-		case 'CreateFolder' :
-			CreateFolder( $sResourceType, $sCurrentFolder ) ;
-			break ;
-	}
-
-	CreateXmlFooter() ;
-
-	exit ;
-}
-?>
\ No newline at end of file

Deleted: pal-wcm/trunk/src/main/webapp/fckeditor/editor/filemanager/browser/default/connectors/php/io.php
===================================================================
--- pal-wcm/trunk/src/main/webapp/fckeditor/editor/filemanager/browser/default/connectors/php/io.php	2008-09-03 08:05:44 UTC (rev 1112)
+++ pal-wcm/trunk/src/main/webapp/fckeditor/editor/filemanager/browser/default/connectors/php/io.php	2008-09-04 02:44:24 UTC (rev 1113)
@@ -1,101 +0,0 @@
-<?php
-/*
- * FCKeditor - The text editor for Internet - http://www.fckeditor.net
- * Copyright (C) 2003-2007 Frederico Caldeira Knabben
- *
- * == BEGIN LICENSE ==
- *
- * Licensed under the terms of any of the following licenses at your
- * choice:
- *
- *  - GNU General Public License Version 2 or later (the "GPL")
- *    http://www.gnu.org/licenses/gpl.html
- *
- *  - GNU Lesser General Public License Version 2.1 or later (the "LGPL")
- *    http://www.gnu.org/licenses/lgpl.html
- *
- *  - Mozilla Public License Version 1.1 or later (the "MPL")
- *    http://www.mozilla.org/MPL/MPL-1.1.html
- *
- * == END LICENSE ==
- *
- * This is the File Manager Connector for PHP.
- */
-
-function GetUrlFromPath( $resourceType, $folderPath )
-{
-	if ( $resourceType == '' )
-		return RemoveFromEnd( $GLOBALS["UserFilesPath"], '/' ) . $folderPath ;
-	else
-		return $GLOBALS["UserFilesPath"] . strtolower( $resourceType ) . $folderPath ;
-}
-
-function RemoveExtension( $fileName )
-{
-	return substr( $fileName, 0, strrpos( $fileName, '.' ) ) ;
-}
-
-function ServerMapFolder( $resourceType, $folderPath )
-{
-	// Get the resource type directory.
-	$sResourceTypePath = $GLOBALS["UserFilesDirectory"] . strtolower( $resourceType ) . '/' ;
-
-	// Ensure that the directory exists.
-	CreateServerFolder( $sResourceTypePath ) ;
-
-	// Return the resource type directory combined with the required path.
-	return $sResourceTypePath . RemoveFromStart( $folderPath, '/' ) ;
-}
-
-function GetParentFolder( $folderPath )
-{
-	$sPattern = "-[/\\\\][^/\\\\]+[/\\\\]?$-" ;
-	return preg_replace( $sPattern, '', $folderPath ) ;
-}
-
-function CreateServerFolder( $folderPath )
-{
-	$sParent = GetParentFolder( $folderPath ) ;
-
-	// Check if the parent exists, or create it.
-	if ( !file_exists( $sParent ) )
-	{
-		$sErrorMsg = CreateServerFolder( $sParent ) ;
-		if ( $sErrorMsg != '' )
-			return $sErrorMsg ;
-	}
-
-	if ( !file_exists( $folderPath ) )
-	{
-		// Turn off all error reporting.
-		error_reporting( 0 ) ;
-		// Enable error tracking to catch the error.
-		ini_set( 'track_errors', '1' ) ;
-
-		// To create the folder with 0777 permissions, we need to set umask to zero.
-		$oldumask = umask(0) ;
-		mkdir( $folderPath, 0777 ) ;
-		umask( $oldumask ) ;
-
-		$sErrorMsg = $php_errormsg ;
-
-		// Restore the configurations.
-		ini_restore( 'track_errors' ) ;
-		ini_restore( 'error_reporting' ) ;
-
-		return $sErrorMsg ;
-	}
-	else
-		return '' ;
-}
-
-function GetRootPath()
-{
-	$sRealPath = realpath( './' ) ;
-
-	$sSelfPath = $_SERVER['PHP_SELF'] ;
-	$sSelfPath = substr( $sSelfPath, 0, strrpos( $sSelfPath, '/' ) ) ;
-
-	return substr( $sRealPath, 0, strlen( $sRealPath ) - strlen( $sSelfPath ) ) ;
-}
-?>
\ No newline at end of file

Deleted: pal-wcm/trunk/src/main/webapp/fckeditor/editor/filemanager/browser/default/connectors/php/util.php
===================================================================
--- pal-wcm/trunk/src/main/webapp/fckeditor/editor/filemanager/browser/default/connectors/php/util.php	2008-09-03 08:05:44 UTC (rev 1112)
+++ pal-wcm/trunk/src/main/webapp/fckeditor/editor/filemanager/browser/default/connectors/php/util.php	2008-09-04 02:44:24 UTC (rev 1113)
@@ -1,41 +0,0 @@
-<?php
-/*
- * FCKeditor - The text editor for Internet - http://www.fckeditor.net
- * Copyright (C) 2003-2007 Frederico Caldeira Knabben
- *
- * == BEGIN LICENSE ==
- *
- * Licensed under the terms of any of the following licenses at your
- * choice:
- *
- *  - GNU General Public License Version 2 or later (the "GPL")
- *    http://www.gnu.org/licenses/gpl.html
- *
- *  - GNU Lesser General Public License Version 2.1 or later (the "LGPL")
- *    http://www.gnu.org/licenses/lgpl.html
- *
- *  - Mozilla Public License Version 1.1 or later (the "MPL")
- *    http://www.mozilla.org/MPL/MPL-1.1.html
- *
- * == END LICENSE ==
- *
- * Utility functions for the File Manager Connector for PHP.
- */
-
-function RemoveFromStart( $sourceString, $charToRemove )
-{
-	$sPattern = '|^' . $charToRemove . '+|' ;
-	return preg_replace( $sPattern, '', $sourceString ) ;
-}
-
-function RemoveFromEnd( $sourceString, $charToRemove )
-{
-	$sPattern = '|' . $charToRemove . '+$|' ;
-	return preg_replace( $sPattern, '', $sourceString ) ;
-}
-
-function ConvertToXmlAttribute( $value )
-{
-	return utf8_encode( htmlspecialchars( $value ) ) ;
-}
-?>
\ No newline at end of file

Deleted: pal-wcm/trunk/src/main/webapp/fckeditor/editor/filemanager/browser/default/connectors/py/connector.py
===================================================================
--- pal-wcm/trunk/src/main/webapp/fckeditor/editor/filemanager/browser/default/connectors/py/connector.py	2008-09-03 08:05:44 UTC (rev 1112)
+++ pal-wcm/trunk/src/main/webapp/fckeditor/editor/filemanager/browser/default/connectors/py/connector.py	2008-09-04 02:44:24 UTC (rev 1113)
@@ -1,785 +0,0 @@
-#!/usr/bin/env python
-
-"""
-FCKeditor - The text editor for Internet - http://www.fckeditor.net
-Copyright (C) 2003-2007 Frederico Caldeira Knabben
-
-== BEGIN LICENSE ==
-
-Licensed under the terms of any of the following licenses at your
-choice:
-
- - GNU General Public License Version 2 or later (the "GPL")
-   http://www.gnu.org/licenses/gpl.html
-
- - GNU Lesser General Public License Version 2.1 or later (the "LGPL")
-   http://www.gnu.org/licenses/lgpl.html
-
- - Mozilla Public License Version 1.1 or later (the "MPL")
-   http://www.mozilla.org/MPL/MPL-1.1.html
-
-== END LICENSE ==
-
-Connector for Python.
-
-Tested With:
-Standard:
-	Python 2.3.3
-Zope:
-	Zope Version: (Zope 2.8.1-final, python 2.3.5, linux2)
-	Python Version: 2.3.5 (#4, Mar 10 2005, 01:40:25)
-		[GCC 3.3.3 20040412 (Red Hat Linux 3.3.3-7)]
-	System Platform: linux2
-"""
-
-"""
-Author Notes (04 December 2005):
-This module has gone through quite a few phases of change.  Obviously,
-I am only supporting that part of the code that I use.  Initially
-I had the upload directory as a part of zope (ie. uploading files
-directly into Zope), before realising that there were too many
-complex intricacies within Zope to deal with.  Zope is one ugly piece
-of code.  So I decided to complement Zope by an Apache server (which
-I had running anyway, and doing nothing).  So I mapped all uploads
-from an arbitrary server directory to an arbitrary web directory.
-All the FCKeditor uploading occurred this way, and I didn't have to
-stuff around with fiddling with Zope objects and the like (which are
-terribly complex and something you don't want to do - trust me).
-
-Maybe a Zope expert can touch up the Zope components.  In the end,
-I had FCKeditor loaded in Zope (probably a bad idea as well), and
-I replaced the connector.py with an alias to a server module.
-Right now, all Zope components will simple remain as is because
-I've had enough of Zope.
-
-See notes right at the end of this file for how I aliased out of Zope.
-
-Anyway, most of you probably wont use Zope, so things are pretty
-simple in that regard.
-
-Typically, SERVER_DIR is the root of WEB_DIR (not necessarily).
-Most definitely, SERVER_USERFILES_DIR points to WEB_USERFILES_DIR.
-"""
-
-import cgi
-import re
-import os
-import string
-
-"""
-escape
-
-Converts the special characters '<', '>', and '&'.
-
-RFC 1866 specifies that these characters be represented
-in HTML as &lt; &gt; and &amp; respectively. In Python
-1.5 we use the new string.replace() function for speed.
-"""
-def escape(text, replace=string.replace):
-    text = replace(text, '&', '&amp;') # must be done 1st
-    text = replace(text, '<', '&lt;')
-    text = replace(text, '>', '&gt;')
-    text = replace(text, '"', '&quot;')
-    return text
-
-"""
-getFCKeditorConnector
-
-Creates a new instance of an FCKeditorConnector, and runs it
-"""
-def getFCKeditorConnector(context=None):
-	# Called from Zope.  Passes the context through
-	connector = FCKeditorConnector(context=context)
-	return connector.run()
-
-
-"""
-FCKeditorRequest
-
-A wrapper around the request object
-Can handle normal CGI request, or a Zope request
-Extend as required
-"""
-class FCKeditorRequest(object):
-	def __init__(self, context=None):
-		if (context is not None):
-			r = context.REQUEST
-		else:
-			r = cgi.FieldStorage()
-		self.context = context
-		self.request = r
-
-	def isZope(self):
-		if (self.context is not None):
-			return True
-		return False
-
-	def has_key(self, key):
-		return self.request.has_key(key)
-
-	def get(self, key, default=None):
-		value = None
-		if (self.isZope()):
-			value = self.request.get(key, default)
-		else:
-			if key in self.request.keys():
-				value = self.request[key].value
-			else:
-				value = default
-		return value
-
-"""
-FCKeditorConnector
-
-The connector class
-"""
-class FCKeditorConnector(object):
-	# Configuration for FCKEditor
-	# can point to another server here, if linked correctly
-	#WEB_HOST = "http://127.0.0.1/"
-	WEB_HOST = ""
-	SERVER_DIR = "/var/www/html/"
-
-	WEB_USERFILES_FOLDER = WEB_HOST + "upload/"
-	SERVER_USERFILES_FOLDER = SERVER_DIR + "upload/"
-
-	# Allow access (Zope)
-	__allow_access_to_unprotected_subobjects__ = 1
-	# Class Attributes
-	parentFolderRe = re.compile("[\/][^\/]+[\/]?$")
-
-	"""
-	Constructor
-	"""
-	def __init__(self, context=None):
-		# The given root path will NOT be shown to the user
-		# Only the userFilesPath will be shown
-
-		# Instance Attributes
-		self.context = context
-		self.request = FCKeditorRequest(context=context)
-		self.rootPath = self.SERVER_DIR
-		self.userFilesFolder = self.SERVER_USERFILES_FOLDER
-		self.webUserFilesFolder = self.WEB_USERFILES_FOLDER
-
-		# Enables / Disables the connector
-		self.enabled = False # Set to True to enable this connector
-
-		# These are instance variables
-		self.zopeRootContext = None
-		self.zopeUploadContext = None
-
-		# Copied from php module =)
-		self.allowedExtensions = {
-				"File": None,
-				"Image": None,
-				"Flash": None,
-				"Media": None
-				}
-		self.deniedExtensions = {
-				"File": [ "html","htm","php","php2","php3","php4","php5","phtml","pwml","inc","asp","aspx","ascx","jsp","cfm","cfc","pl","bat","exe","com","dll","vbs","js","reg","cgi","htaccess","asis" ],
-				"Image": [ "html","htm","php","php2","php3","php4","php5","phtml","pwml","inc","asp","aspx","ascx","jsp","cfm","cfc","pl","bat","exe","com","dll","vbs","js","reg","cgi","htaccess","asis" ],
-				"Flash": [ "html","htm","php","php2","php3","php4","php5","phtml","pwml","inc","asp","aspx","ascx","jsp","cfm","cfc","pl","bat","exe","com","dll","vbs","js","reg","cgi","htaccess","asis" ],
-				"Media": [ "html","htm","php","php2","php3","php4","php5","phtml","pwml","inc","asp","aspx","ascx","jsp","cfm","cfc","pl","bat","exe","com","dll","vbs","js","reg","cgi","htaccess","asis" ]
-				}
-
-	"""
-	Zope specific functions
-	"""
-	def isZope(self):
-		# The context object is the zope object
-		if (self.context is not None):
-			return True
-		return False
-
-	def getZopeRootContext(self):
-		if self.zopeRootContext is None:
-			self.zopeRootContext = self.context.getPhysicalRoot()
-		return self.zopeRootContext
-
-	def getZopeUploadContext(self):
-		if self.zopeUploadContext is None:
-			folderNames = self.userFilesFolder.split("/")
-			c = self.getZopeRootContext()
-			for folderName in folderNames:
-				if (folderName <> ""):
-					c = c[folderName]
-			self.zopeUploadContext = c
-		return self.zopeUploadContext
-
-	"""
-	Generic manipulation functions
-	"""
-	def getUserFilesFolder(self):
-		return self.userFilesFolder
-
-	def getWebUserFilesFolder(self):
-		return self.webUserFilesFolder
-
-	def getAllowedExtensions(self, resourceType):
-		return self.allowedExtensions[resourceType]
-
-	def getDeniedExtensions(self, resourceType):
-		return self.deniedExtensions[resourceType]
-
-	def removeFromStart(self, string, char):
-		return string.lstrip(char)
-
-	def removeFromEnd(self, string, char):
-		return string.rstrip(char)
-
-	def convertToXmlAttribute(self, value):
-		if (value is None):
-			value = ""
-		return escape(value)
-
-	def convertToPath(self, path):
-		if (path[-1] <> "/"):
-			return path + "/"
-		else:
-			return path
-
-	def getUrlFromPath(self, resourceType, path):
-		if (resourceType is None) or (resourceType == ''):
-			url = "%s%s" % (
-					self.removeFromEnd(self.getUserFilesFolder(), '/'),
-					path
-					)
-		else:
-			url = "%s%s%s" % (
-					self.getUserFilesFolder(),
-					resourceType,
-					path
-					)
-		return url
-
-	def getWebUrlFromPath(self, resourceType, path):
-		if (resourceType is None) or (resourceType == ''):
-			url = "%s%s" % (
-					self.removeFromEnd(self.getWebUserFilesFolder(), '/'),
-					path
-					)
-		else:
-			url = "%s%s%s" % (
-					self.getWebUserFilesFolder(),
-					resourceType,
-					path
-					)
-		return url
-
-	def removeExtension(self, fileName):
-		index = fileName.rindex(".")
-		newFileName = fileName[0:index]
-		return newFileName
-
-	def getExtension(self, fileName):
-		index = fileName.rindex(".") + 1
-		fileExtension = fileName[index:]
-		return fileExtension
-
-	def getParentFolder(self, folderPath):
-		parentFolderPath = self.parentFolderRe.sub('', folderPath)
-		return parentFolderPath
-
-	"""
-	serverMapFolder
-
-	Purpose: works out the folder map on the server
-	"""
-	def serverMapFolder(self, resourceType, folderPath):
-		# Get the resource type directory
-		resourceTypeFolder = "%s%s/" % (
-				self.getUserFilesFolder(),
-				resourceType
-				)
-		# Ensure that the directory exists
-		self.createServerFolder(resourceTypeFolder)
-
-		# Return the resource type directory combined with the
-		# required path
-		return "%s%s" % (
-				resourceTypeFolder,
-				self.removeFromStart(folderPath, '/')
-				)
-
-	"""
-	createServerFolder
-
-	Purpose: physically creates a folder on the server
-	"""
-	def createServerFolder(self, folderPath):
-		# Check if the parent exists
-		parentFolderPath = self.getParentFolder(folderPath)
-		if not(os.path.exists(parentFolderPath)):
-			errorMsg = self.createServerFolder(parentFolderPath)
-			if errorMsg is not None:
-				return errorMsg
-		# Check if this exists
-		if not(os.path.exists(folderPath)):
-			os.mkdir(folderPath)
-			os.chmod(folderPath, 0755)
-			errorMsg = None
-		else:
-			if os.path.isdir(folderPath):
-				errorMsg = None
-			else:
-				raise "createServerFolder: Non-folder of same name already exists"
-		return errorMsg
-
-
-	"""
-	getRootPath
-
-	Purpose: returns the root path on the server
-	"""
-	def getRootPath(self):
-		return self.rootPath
-
-	"""
-	setXmlHeaders
-
-	Purpose: to prepare the headers for the xml to return
-	"""
-	def setXmlHeaders(self):
-		#now = self.context.BS_get_now()
-		#yesterday = now - 1
-		self.setHeader("Content-Type", "text/xml")
-		#self.setHeader("Expires", yesterday)
-		#self.setHeader("Last-Modified", now)
-		#self.setHeader("Cache-Control", "no-store, no-cache, must-revalidate")
-		self.printHeaders()
-		return
-
-	def setHeader(self, key, value):
-		if (self.isZope()):
-			self.context.REQUEST.RESPONSE.setHeader(key, value)
-		else:
-			print "%s: %s" % (key, value)
-		return
-
-	def printHeaders(self):
-		# For non-Zope requests, we need to print an empty line
-		# to denote the end of headers
-		if (not(self.isZope())):
-			print ""
-
-	"""
-	createXmlFooter
-
-	Purpose: returns the xml header
-	"""
-	def createXmlHeader(self, command, resourceType, currentFolder):
-		self.setXmlHeaders()
-		s = ""
-		# Create the XML document header
-		s += """<?xml version="1.0" encoding="utf-8" ?>"""
-		# Create the main connector node
-		s += """<Connector command="%s" resourceType="%s">""" % (
-				command,
-				resourceType
-				)
-		# Add the current folder node
-		s += """<CurrentFolder path="%s" url="%s" />""" % (
-				self.convertToXmlAttribute(currentFolder),
-				self.convertToXmlAttribute(
-					self.getWebUrlFromPath(
-						resourceType,
-						currentFolder
-						)
-					),
-				)
-		return s
-
-	"""
-	createXmlFooter
-
-	Purpose: returns the xml footer
-	"""
-	def createXmlFooter(self):
-		s = """</Connector>"""
-		return s
-
-	"""
-	sendError
-
-	Purpose: in the event of an error, return an xml based error
-	"""
-	def sendError(self, number, text):
-		self.setXmlHeaders()
-		s = ""
-		# Create the XML document header
-		s += """<?xml version="1.0" encoding="utf-8" ?>"""
-		s += """<Connector>"""
-		s += """<Error number="%s" text="%s" />""" % (number, text)
-		s += """</Connector>"""
-		return s
-
-	"""
-	getFolders
-
-	Purpose: command to recieve a list of folders
-	"""
-	def getFolders(self, resourceType, currentFolder):
-		if (self.isZope()):
-			return self.getZopeFolders(resourceType, currentFolder)
-		else:
-			return self.getNonZopeFolders(resourceType, currentFolder)
-
-	def getZopeFolders(self, resourceType, currentFolder):
-		# Open the folders node
-		s = ""
-		s += """<Folders>"""
-		zopeFolder = self.findZopeFolder(resourceType, currentFolder)
-		for (name, o) in zopeFolder.objectItems(["Folder"]):
-			s += """<Folder name="%s" />""" % (
-					self.convertToXmlAttribute(name)
-					)
-		# Close the folders node
-		s += """</Folders>"""
-		return s
-
-	def getNonZopeFolders(self, resourceType, currentFolder):
-		# Map the virtual path to our local server
-		serverPath = self.serverMapFolder(resourceType, currentFolder)
-		# Open the folders node
-		s = ""
-		s += """<Folders>"""
-		for someObject in os.listdir(serverPath):
-			someObjectPath = os.path.join(serverPath, someObject)
-			if os.path.isdir(someObjectPath):
-				s += """<Folder name="%s" />""" % (
-						self.convertToXmlAttribute(someObject)
-						)
-		# Close the folders node
-		s += """</Folders>"""
-		return s
-
-	"""
-	getFoldersAndFiles
-
-	Purpose: command to recieve a list of folders and files
-	"""
-	def getFoldersAndFiles(self, resourceType, currentFolder):
-		if (self.isZope()):
-			return self.getZopeFoldersAndFiles(resourceType, currentFolder)
-		else:
-			return self.getNonZopeFoldersAndFiles(resourceType, currentFolder)
-
-	def getNonZopeFoldersAndFiles(self, resourceType, currentFolder):
-		# Map the virtual path to our local server
-		serverPath = self.serverMapFolder(resourceType, currentFolder)
-		# Open the folders / files node
-		folders = """<Folders>"""
-		files = """<Files>"""
-		for someObject in os.listdir(serverPath):
-			someObjectPath = os.path.join(serverPath, someObject)
-			if os.path.isdir(someObjectPath):
-				folders += """<Folder name="%s" />""" % (
-						self.convertToXmlAttribute(someObject)
-						)
-			elif os.path.isfile(someObjectPath):
-				size = os.path.getsize(someObjectPath)
-				files += """<File name="%s" size="%s" />""" % (
-						self.convertToXmlAttribute(someObject),
-						os.path.getsize(someObjectPath)
-						)
-		# Close the folders / files node
-		folders += """</Folders>"""
-		files += """</Files>"""
-		# Return it
-		s = folders + files
-		return s
-
-	def getZopeFoldersAndFiles(self, resourceType, currentFolder):
-		folders = self.getZopeFolders(resourceType, currentFolder)
-		files = self.getZopeFiles(resourceType, currentFolder)
-		s = folders + files
-		return s
-
-	def getZopeFiles(self, resourceType, currentFolder):
-		# Open the files node
-		s = ""
-		s += """<Files>"""
-		zopeFolder = self.findZopeFolder(resourceType, currentFolder)
-		for (name, o) in zopeFolder.objectItems(["File","Image"]):
-			s += """<File name="%s" size="%s" />""" % (
-					self.convertToXmlAttribute(name),
-					((o.get_size() / 1024) + 1)
-					)
-		# Close the files node
-		s += """</Files>"""
-		return s
-
-	def findZopeFolder(self, resourceType, folderName):
-		# returns the context of the resource / folder
-		zopeFolder = self.getZopeUploadContext()
-		folderName = self.removeFromStart(folderName, "/")
-		folderName = self.removeFromEnd(folderName, "/")
-		if (resourceType <> ""):
-			try:
-				zopeFolder = zopeFolder[resourceType]
-			except:
-				zopeFolder.manage_addProduct["OFSP"].manage_addFolder(id=resourceType, title=resourceType)
-				zopeFolder = zopeFolder[resourceType]
-		if (folderName <> ""):
-			folderNames = folderName.split("/")
-			for folderName in folderNames:
-				zopeFolder = zopeFolder[folderName]
-		return zopeFolder
-
-	"""
-	createFolder
-
-	Purpose: command to create a new folder
-	"""
-	def createFolder(self, resourceType, currentFolder):
-		if (self.isZope()):
-			return self.createZopeFolder(resourceType, currentFolder)
-		else:
-			return self.createNonZopeFolder(resourceType, currentFolder)
-
-	def createZopeFolder(self, resourceType, currentFolder):
-		# Find out where we are
-		zopeFolder = self.findZopeFolder(resourceType, currentFolder)
-		errorNo = 0
-		errorMsg = ""
-		if self.request.has_key("NewFolderName"):
-			newFolder = self.request.get("NewFolderName", None)
-			zopeFolder.manage_addProduct["OFSP"].manage_addFolder(id=newFolder, title=newFolder)
-		else:
-			errorNo = 102
-		error = """<Error number="%s" originalDescription="%s" />""" % (
-				errorNo,
-				self.convertToXmlAttribute(errorMsg)
-				)
-		return error
-
-	def createNonZopeFolder(self, resourceType, currentFolder):
-		errorNo = 0
-		errorMsg = ""
-		if self.request.has_key("NewFolderName"):
-			newFolder = self.request.get("NewFolderName", None)
-			currentFolderPath = self.serverMapFolder(
-					resourceType,
-					currentFolder
-					)
-			try:
-				newFolderPath = currentFolderPath + newFolder
-				errorMsg = self.createServerFolder(newFolderPath)
-				if (errorMsg is not None):
-					errorNo = 110
-			except:
-				errorNo = 103
-		else:
-			errorNo = 102
-		error = """<Error number="%s" originalDescription="%s" />""" % (
-				errorNo,
-				self.convertToXmlAttribute(errorMsg)
-				)
-		return error
-
-	"""
-	getFileName
-
-	Purpose: helper function to extrapolate the filename
-	"""
-	def getFileName(self, filename):
-		for splitChar in ["/", "\\"]:
-			array = filename.split(splitChar)
-			if (len(array) > 1):
-				filename = array[-1]
-		return filename
-
-	"""
-	fileUpload
-
-	Purpose: command to upload files to server
-	"""
-	def fileUpload(self, resourceType, currentFolder):
-		if (self.isZope()):
-			return self.zopeFileUpload(resourceType, currentFolder)
-		else:
-			return self.nonZopeFileUpload(resourceType, currentFolder)
-
-	def zopeFileUpload(self, resourceType, currentFolder, count=None):
-		zopeFolder = self.findZopeFolder(resourceType, currentFolder)
-		file = self.request.get("NewFile", None)
-		fileName = self.getFileName(file.filename)
-		fileNameOnly = self.removeExtension(fileName)
-		fileExtension = self.getExtension(fileName).lower()
-		if (count):
-			nid = "%s.%s.%s" % (fileNameOnly, count, fileExtension)
-		else:
-			nid = fileName
-		title = nid
-		try:
-			zopeFolder.manage_addProduct['OFSP'].manage_addFile(
-					id=nid,
-					title=title,
-					file=file.read()
-					)
-		except:
-			if (count):
-				count += 1
-			else:
-				count = 1
-			self.zopeFileUpload(resourceType, currentFolder, count)
-		return
-
-	def nonZopeFileUpload(self, resourceType, currentFolder):
-		errorNo = 0
-		errorMsg = ""
-		if self.request.has_key("NewFile"):
-			# newFile has all the contents we need
-			newFile = self.request.get("NewFile", "")
-			# Get the file name
-			newFileName = newFile.filename
-			newFileNameOnly = self.removeExtension(newFileName)
-			newFileExtension = self.getExtension(newFileName).lower()
-			allowedExtensions = self.getAllowedExtensions(resourceType)
-			deniedExtensions = self.getDeniedExtensions(resourceType)
-			if (allowedExtensions is not None):
-				# Check for allowed
-				isAllowed = False
-				if (newFileExtension in allowedExtensions):
-					isAllowed = True
-			elif (deniedExtensions is not None):
-				# Check for denied
-				isAllowed = True
-				if (newFileExtension in deniedExtensions):
-					isAllowed = False
-			else:
-				# No extension limitations
-				isAllowed = True
-
-			if (isAllowed):
-				if (self.isZope()):
-					# Upload into zope
-					self.zopeFileUpload(resourceType, currentFolder)
-				else:
-					# Upload to operating system
-					# Map the virtual path to the local server path
-					currentFolderPath = self.serverMapFolder(
-							resourceType,
-							currentFolder
-							)
-					i = 0
-					while (True):
-						newFilePath = "%s%s" % (
-								currentFolderPath,
-								newFileName
-								)
-						if os.path.exists(newFilePath):
-							i += 1
-							newFilePath = "%s%s(%s).%s" % (
-									currentFolderPath,
-									newFileNameOnly,
-									i,
-									newFileExtension
-									)
-							errorNo = 201
-							break
-						else:
-							fileHandle = open(newFilePath,'w')
-							linecount = 0
-							while (1):
-								#line = newFile.file.readline()
-								line = newFile.readline()
-								if not line: break
-								fileHandle.write("%s" % line)
-								linecount += 1
-							os.chmod(newFilePath, 0777)
-							break
-			else:
-				newFileName = "Extension not allowed"
-				errorNo = 203
-		else:
-			newFileName = "No File"
-			errorNo = 202
-
-		string = """
-<script type="text/javascript">
-window.parent.frames["frmUpload"].OnUploadCompleted(%s,"%s");
-</script>
-				""" % (
-						errorNo,
-						newFileName.replace('"',"'")
-						)
-		return string
-
-	def run(self):
-		s = ""
-		try:
-			# Check if this is disabled
-			if not(self.enabled):
-				return self.sendError(1, "This connector is disabled.  Please check the connector configurations and try again")
-			# Make sure we have valid inputs
-			if not(
-					(self.request.has_key("Command")) and
-					(self.request.has_key("Type")) and
-					(self.request.has_key("CurrentFolder"))
-					):
-				return
-			# Get command
-			command = self.request.get("Command", None)
-			# Get resource type
-			resourceType = self.request.get("Type", None)
-			# folder syntax must start and end with "/"
-			currentFolder = self.request.get("CurrentFolder", None)
-			if (currentFolder[-1] <> "/"):
-				currentFolder += "/"
-			if (currentFolder[0] <> "/"):
-				currentFolder = "/" + currentFolder
-			# Check for invalid paths
-			if (".." in currentFolder):
-				return self.sendError(102, "")
-			# File upload doesn't have to return XML, so intercept
-			# her:e
-			if (command == "FileUpload"):
-				return self.fileUpload(resourceType, currentFolder)
-			# Begin XML
-			s += self.createXmlHeader(command, resourceType, currentFolder)
-			# Execute the command
-			if (command == "GetFolders"):
-				f = self.getFolders
-			elif (command == "GetFoldersAndFiles"):
-				f = self.getFoldersAndFiles
-			elif (command == "CreateFolder"):
-				f = self.createFolder
-			else:
-				f = None
-			if (f is not None):
-				s += f(resourceType, currentFolder)
-			s += self.createXmlFooter()
-		except Exception, e:
-			s = "ERROR: %s" % e
-		return s
-
-# Running from command line
-if __name__ == '__main__':
-	# To test the output, uncomment the standard headers
-	#print "Content-Type: text/html"
-	#print ""
-	print getFCKeditorConnector()
-
-"""
-Running from zope, you will need to modify this connector.
-If you have uploaded the FCKeditor into Zope (like me), you need to
-move this connector out of Zope, and replace the "connector" with an
-alias as below.  The key to it is to pass the Zope context in, as
-we then have a like to the Zope context.
-
-## Script (Python) "connector.py"
-##bind container=container
-##bind context=context
-##bind namespace=
-##bind script=script
-##bind subpath=traverse_subpath
-##parameters=*args, **kws
-##title=ALIAS
-##
-import Products.connector as connector
-return connector.getFCKeditorConnector(context=context).run()
-"""
-
-

Deleted: pal-wcm/trunk/src/main/webapp/fckeditor/editor/filemanager/browser/default/connectors/test.html
===================================================================
--- pal-wcm/trunk/src/main/webapp/fckeditor/editor/filemanager/browser/default/connectors/test.html	2008-09-03 08:05:44 UTC (rev 1112)
+++ pal-wcm/trunk/src/main/webapp/fckeditor/editor/filemanager/browser/default/connectors/test.html	2008-09-04 02:44:24 UTC (rev 1113)
@@ -1,180 +0,0 @@
-<!--
- * FCKeditor - The text editor for Internet - http://www.fckeditor.net
- * Copyright (C) 2003-2007 Frederico Caldeira Knabben
- *
- * == BEGIN LICENSE ==
- *
- * Licensed under the terms of any of the following licenses at your
- * choice:
- *
- *  - GNU General Public License Version 2 or later (the "GPL")
- *    http://www.gnu.org/licenses/gpl.html
- *
- *  - GNU Lesser General Public License Version 2.1 or later (the "LGPL")
- *    http://www.gnu.org/licenses/lgpl.html
- *
- *  - Mozilla Public License Version 1.1 or later (the "MPL")
- *    http://www.mozilla.org/MPL/MPL-1.1.html
- *
- * == END LICENSE ==
- *
- * Test page for the File Browser connectors.
--->
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-	<title>FCKeditor - Connectors Tests</title>
-	<script type="text/javascript">
-
-function BuildBaseUrl( command )
-{
-	var sUrl =
-		document.getElementById('cmbConnector').value +
-		'?Command=' + command +
-		'&Type=' + document.getElementById('cmbType').value +
-		'&CurrentFolder=' + document.getElementById('txtFolder').value ;
-
-	return sUrl ;
-}
-
-function SetFrameUrl( url )
-{
-	if ( document.all )
-		eRunningFrame.document.location = url ;
-	else
-		document.getElementById('eRunningFrame').src = url ;
-
-	document.getElementById('eUrl').innerHTML = url ;
-}
-
-function GetFolders()
-{
-	SetFrameUrl( BuildBaseUrl( 'GetFolders' ) ) ;
-	return false ;
-}
-
-function GetFoldersAndFiles()
-{
-	SetFrameUrl( BuildBaseUrl( 'GetFoldersAndFiles' ) ) ;
-	return false ;
-}
-
-function CreateFolder()
-{
-	var sFolder = prompt( 'Type the folder name:', 'Test Folder' ) ;
-
-	if ( ! sFolder )
-		return false ;
-
-	var sUrl = BuildBaseUrl( 'CreateFolder' ) ;
-	sUrl += '&NewFolderName=' + encodeURIComponent( sFolder ) ;
-
-	SetFrameUrl( sUrl ) ;
-	return false ;
-}
-
-function OnUploadCompleted( errorNumber, fileName )
-{
-	switch ( errorNumber )
-	{
-		case 0 :
-			alert( 'File uploaded with no errors' ) ;
-			break ;
-		case 201 :
-			GetFoldersAndFiles() ;
-			alert( 'A file with the same name is already available. The uploaded file has been renamed to "' + fileName + '"' ) ;
-			break ;
-		case 202 :
-			alert( 'Invalid file' ) ;
-			break ;
-		default :
-			alert( 'Error on file upload. Error number: ' + errorNumber ) ;
-			break ;
-	}
-}
-
-this.frames.frmUpload = this ;
-
-function SetAction()
-{
-	var sUrl = BuildBaseUrl( 'FileUpload' ) ;
-	document.getElementById('eUrl').innerHTML = sUrl ;
-	document.getElementById('frmUpload').action = sUrl ;
-}
-
-	</script>
-</head>
-<body>
-	<table height="100%" cellspacing="0" cellpadding="0" width="100%" border="0">
-		<tr>
-			<td>
-				<table cellspacing="0" cellpadding="0" border="0">
-					<tr>
-						<td>
-							Connector:<br />
-							<select id="cmbConnector" name="cmbConnector">
-								<option value="asp/connector.asp" selected="selected">ASP</option>
-								<option value="aspx/connector.aspx">ASP.Net</option>
-								<option value="cfm/connector.cfm">ColdFusion</option>
-								<option value="lasso/connector.lasso">Lasso</option>
-								<option value="perl/connector.cgi">Perl</option>
-								<option value="php/connector.php">PHP</option>
-								<option value="py/connector.py">Python</option>
-							</select>
-						</td>
-						<td>
-							&nbsp;&nbsp;&nbsp;</td>
-						<td>
-							Current Folder<br />
-							<input id="txtFolder" type="text" value="/" name="txtFolder" /></td>
-						<td>
-							&nbsp;&nbsp;&nbsp;</td>
-						<td>
-							Resource Type<br />
-							<select id="cmbType" name="cmbType">
-								<option value="File" selected="selected">File</option>
-								<option value="Image">Image</option>
-								<option value="Flash">Flash</option>
-								<option value="Media">Media</option>
-								<option value="Invalid">Invalid Type (for testing)</option>
-							</select>
-						</td>
-					</tr>
-				</table>
-				<br />
-				<table cellspacing="0" cellpadding="0" border="0">
-					<tr>
-						<td valign="top">
-							<a href="#" onclick="GetFolders();">Get Folders</a></td>
-						<td>
-							&nbsp;&nbsp;&nbsp;</td>
-						<td valign="top">
-							<a href="#" onclick="GetFoldersAndFiles();">Get Folders and Files</a></td>
-						<td>
-							&nbsp;&nbsp;&nbsp;</td>
-						<td valign="top">
-							<a href="#" onclick="CreateFolder();">Create Folder</a></td>
-						<td>
-							&nbsp;&nbsp;&nbsp;</td>
-						<td valign="top">
-							<form id="frmUpload" action="" target="eRunningFrame" method="post" enctype="multipart/form-data">
-								File Upload<br />
-								<input id="txtFileUpload" type="file" name="NewFile" />
-								<input type="submit" value="Upload" onclick="SetAction();" />
-							</form>
-						</td>
-					</tr>
-				</table>
-				<br />
-				URL: <span id="eUrl"></span>
-			</td>
-		</tr>
-		<tr>
-			<td height="100%" valign="top">
-				<iframe id="eRunningFrame" src="javascript:void(0)" name="eRunningFrame" width="100%"
-					height="100%"></iframe>
-			</td>
-		</tr>
-	</table>
-</body>
-</html>

Modified: pal-wcm/trunk/src/main/webapp/fckeditor/editor/filemanager/browser/default/frmactualfolder.html
===================================================================
--- pal-wcm/trunk/src/main/webapp/fckeditor/editor/filemanager/browser/default/frmactualfolder.html	2008-09-03 08:05:44 UTC (rev 1112)
+++ pal-wcm/trunk/src/main/webapp/fckeditor/editor/filemanager/browser/default/frmactualfolder.html	2008-09-04 02:44:24 UTC (rev 1113)
@@ -23,6 +23,7 @@
 -->
 <html>
 	<head>
+		<title>Folder path</title>
 		<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
 		<link href="browser.css" type="text/css" rel="stylesheet">
 		<script type="text/javascript">
@@ -39,7 +40,8 @@
 			var test = window.top.opener.document.domain ;
 			break ;
 		}
-		catch( e ) {}
+		catch( e )
+		{}
 
 		// Remove a domain part: www.mytest.example.com => mytest.example.com => example.com ...
 		d = d.replace( /.*?(?:\.|$)/, '' ) ;
@@ -58,12 +60,6 @@
 	}
 })() ;
 
-function OnResize()
-{
-	divName.style.width = "1px" ;
-	divName.style.width = tdName.offsetWidth + "px" ;
-}
-
 function SetCurrentFolder( resourceType, folderPath )
 {
 	document.getElementById('tdName').innerHTML = folderPath ;
@@ -76,8 +72,8 @@
 
 		</script>
 	</head>
-	<body bottomMargin="0" topMargin="0">
-		<table height="100%" cellSpacing="0" cellPadding="0" width="100%" border="0">
+	<body>
+		<table class="fullHeight" cellSpacing="0" cellPadding="0" width="100%" border="0">
 			<tr>
 				<td>
 					<button style="WIDTH: 100%" type="button">
@@ -87,7 +83,7 @@
 								<td>&nbsp;</td>
 								<td id="tdName" width="100%" nowrap class="ActualFolder">/</td>
 								<td>&nbsp;</td>
-								<td><img height="8" src="images/ButtonArrow.gif" width="12"></td>
+								<td><img height="8" src="images/ButtonArrow.gif" width="12" alt=""></td>
 								<td>&nbsp;</td>
 							</tr>
 						</table>

Modified: pal-wcm/trunk/src/main/webapp/fckeditor/editor/filemanager/browser/default/frmcreatefolder.html
===================================================================
--- pal-wcm/trunk/src/main/webapp/fckeditor/editor/filemanager/browser/default/frmcreatefolder.html	2008-09-03 08:05:44 UTC (rev 1112)
+++ pal-wcm/trunk/src/main/webapp/fckeditor/editor/filemanager/browser/default/frmcreatefolder.html	2008-09-04 02:44:24 UTC (rev 1113)
@@ -23,10 +23,11 @@
 -->
 <html>
 	<head>
+		<title>Create Folder</title>
 		<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
 		<link href="browser.css" type="text/css" rel="stylesheet">
 		<script type="text/javascript" src="js/common.js"></script>
-		<script language="javascript">
+		<script type="text/javascript">
 
 function SetCurrentFolder( resourceType, folderPath )
 {
@@ -93,8 +94,8 @@
 }
 		</script>
 	</head>
-	<body bottomMargin="0" topMargin="0">
-		<table height="100%" cellSpacing="0" cellPadding="0" width="100%" border="0">
+	<body>
+		<table class="fullHeight" cellSpacing="0" cellPadding="0" width="100%" border="0">
 			<tr>
 				<td>
 					<button type="button" style="WIDTH: 100%" onclick="CreateFolder();">

Modified: pal-wcm/trunk/src/main/webapp/fckeditor/editor/filemanager/browser/default/frmfolders.html
===================================================================
--- pal-wcm/trunk/src/main/webapp/fckeditor/editor/filemanager/browser/default/frmfolders.html	2008-09-03 08:05:44 UTC (rev 1112)
+++ pal-wcm/trunk/src/main/webapp/fckeditor/editor/filemanager/browser/default/frmfolders.html	2008-09-04 02:44:24 UTC (rev 1113)
@@ -24,10 +24,11 @@
 -->
 <html>
 	<head>
+		<title>Folders</title>
 		<link href="browser.css" type="text/css" rel="stylesheet">
 		<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
 		<script type="text/javascript" src="js/common.js"></script>
-		<script language="javascript">
+		<script type="text/javascript">
 
 var sActiveFolder ;
 
@@ -66,12 +67,12 @@
 	// Add the folder icon cell.
 	var oCell = oRow.insertCell(-1) ;
 	oCell.width = 16 ;
-	oCell.innerHTML = sLink + '<img alt="" src="images/spacer.gif" width="16" height="16" border="0"></a>' ;
+	oCell.innerHTML = sLink + '<img alt="" src="images/spacer.gif" width="16" height="16" border="0"><\/a>' ;
 
 	// Add the folder name cell.
 	oCell = oRow.insertCell(-1) ;
 	oCell.noWrap = true ;
-	oCell.innerHTML = '&nbsp;' + sLink + folderName + '</a>' ;
+	oCell.innerHTML = '&nbsp;' + sLink + folderName + '<\/a>' ;
 
 	this.TableRows[ folderPath ] = oRow ;
 }
@@ -186,7 +187,7 @@
 }
 		</script>
 	</head>
-	<body class="FileArea" bottomMargin="10" leftMargin="10" topMargin="10" rightMargin="10">
+	<body class="FileArea">
 		<table id="tableFiles" cellSpacing="0" cellPadding="0" width="100%" border="0">
 			<tr id="trUp" style="DISPLAY: none">
 				<td width="16"><a id="linkUpIcon" href="#"><img alt="" src="images/FolderUp.gif" width="16" height="16" border="0"></a></td>

Modified: pal-wcm/trunk/src/main/webapp/fckeditor/editor/filemanager/browser/default/frmresourceslist.html
===================================================================
--- pal-wcm/trunk/src/main/webapp/fckeditor/editor/filemanager/browser/default/frmresourceslist.html	2008-09-03 08:05:44 UTC (rev 1112)
+++ pal-wcm/trunk/src/main/webapp/fckeditor/editor/filemanager/browser/default/frmresourceslist.html	2008-09-04 02:44:24 UTC (rev 1113)
@@ -21,9 +21,10 @@
  *
  * This page shows all resources available in a folder in the File Browser.
 -->
-<html xmlns="http://www.w3.org/1999/xhtml">
+<html>
 <head>
-	<link href="browser.css" type="text/css" rel="stylesheet" />
+	<title>Resources</title>
+	<link href="browser.css" type="text/css" rel="stylesheet">
 	<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
 	<script type="text/javascript" src="js/common.js"></script>
 	<script type="text/javascript">

Modified: pal-wcm/trunk/src/main/webapp/fckeditor/editor/filemanager/browser/default/frmresourcetype.html
===================================================================
--- pal-wcm/trunk/src/main/webapp/fckeditor/editor/filemanager/browser/default/frmresourcetype.html	2008-09-03 08:05:44 UTC (rev 1112)
+++ pal-wcm/trunk/src/main/webapp/fckeditor/editor/filemanager/browser/default/frmresourcetype.html	2008-09-04 02:44:24 UTC (rev 1113)
@@ -23,10 +23,11 @@
 -->
 <html>
 	<head>
+		<title>Available types</title>
 		<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
 		<link href="browser.css" type="text/css" rel="stylesheet">
 		<script type="text/javascript" src="js/common.js"></script>
-		<script language="javascript">
+		<script type="text/javascript">
 
 function SetResourceType( type )
 {
@@ -42,21 +43,24 @@
 
 window.onload = function()
 {
+	var oCombo = document.getElementById('cmbType') ;
+	oCombo.innerHTML = '' ;
 	for ( var i = 0 ; i < aTypes.length ; i++ )
 	{
 		if ( oConnector.ShowAllTypes || aTypes[i][0] == oConnector.ResourceType )
-			AddSelectOption( document.getElementById('cmbType'), aTypes[i][1], aTypes[i][0] ) ;
+			AddSelectOption( oCombo, aTypes[i][1], aTypes[i][0] ) ;
 	}
 }
 
 		</script>
 	</head>
-	<body bottomMargin="0" topMargin="0">
-		<table height="100%" cellSpacing="0" cellPadding="0" width="100%" border="0">
+	<body>
+		<table class="fullHeight" cellSpacing="0" cellPadding="0" width="100%" border="0">
 			<tr>
 				<td nowrap>
 					Resource Type<BR>
 					<select id="cmbType" style="WIDTH: 100%" onchange="SetResourceType(this.value);">
+						<option>&nbsp;
 					</select>
 				</td>
 			</tr>

Modified: pal-wcm/trunk/src/main/webapp/fckeditor/editor/filemanager/browser/default/frmupload.html
===================================================================
--- pal-wcm/trunk/src/main/webapp/fckeditor/editor/filemanager/browser/default/frmupload.html	2008-09-03 08:05:44 UTC (rev 1112)
+++ pal-wcm/trunk/src/main/webapp/fckeditor/editor/filemanager/browser/default/frmupload.html	2008-09-04 02:44:24 UTC (rev 1113)
@@ -21,11 +21,11 @@
  *
  * Page used to upload new files in the current folder.
 -->
-<html xmlns="http://www.w3.org/1999/xhtml">
+<html>
 	<head>
 		<title>File Upload</title>
 		<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
-		<link href="browser.css" type="text/css" rel="stylesheet" />
+		<link href="browser.css" type="text/css" rel="stylesheet" >
 		<script type="text/javascript" src="js/common.js"></script>
 		<script type="text/javascript">
 
@@ -95,9 +95,9 @@
 }
 		</script>
 	</head>
-	<body bottommargin="0" topmargin="0">
+	<body>
 		<form id="frmUpload" action="" target="frmUploadWorker" method="post" enctype="multipart/form-data" onsubmit="return OnSubmit();">
-			<table height="100%" cellspacing="0" cellpadding="0" width="100%" border="0">
+			<table class="fullHeight" cellspacing="0" cellpadding="0" width="100%" border="0">
 				<tr>
 					<td nowrap="nowrap">
 						<span id="eUploadMessage">Upload a new file in this folder</span><br>

Modified: pal-wcm/trunk/src/main/webapp/fckeditor/editor/filemanager/browser/default/js/common.js
===================================================================
--- pal-wcm/trunk/src/main/webapp/fckeditor/editor/filemanager/browser/default/js/common.js	2008-09-03 08:05:44 UTC (rev 1112)
+++ pal-wcm/trunk/src/main/webapp/fckeditor/editor/filemanager/browser/default/js/common.js	2008-09-04 02:44:24 UTC (rev 1113)
@@ -35,7 +35,8 @@
 			var test = window.top.opener.document.domain ;
 			break ;
 		}
-		catch( e ) {}
+		catch( e )
+		{}
 
 		// Remove a domain part: www.mytest.example.com => mytest.example.com => example.com ...
 		d = d.replace( /.*?(?:\.|$)/, '' ) ;

Modified: pal-wcm/trunk/src/main/webapp/fckeditor/editor/filemanager/browser/default/js/fckxml.js
===================================================================
--- pal-wcm/trunk/src/main/webapp/fckeditor/editor/filemanager/browser/default/js/fckxml.js	2008-09-03 08:05:44 UTC (rev 1112)
+++ pal-wcm/trunk/src/main/webapp/fckeditor/editor/filemanager/browser/default/js/fckxml.js	2008-09-04 02:44:24 UTC (rev 1113)
@@ -61,8 +61,26 @@
 		{
 			if ( oXmlHttp.readyState == 4 )
 			{
-				if ( ( oXmlHttp.status != 200 && oXmlHttp.status != 304 ) || oXmlHttp.responseXML == null || oXmlHttp.responseXML.firstChild == null )
+				var oXml ;
+				try
 				{
+					// this is the same test for an FF2 bug as in fckxml_gecko.js
+					// but we've moved the responseXML assignment into the try{}
+					// so we don't even have to check the return status codes.
+					var test = oXmlHttp.responseXML.firstChild ;
+					oXml = oXmlHttp.responseXML ;
+				}
+				catch ( e )
+				{
+					try
+					{
+						oXml = (new DOMParser()).parseFromString( oXmlHttp.responseText, 'text/xml' ) ;
+					}
+					catch ( e ) {}
+				}
+
+				if ( !oXml || !oXml.firstChild || oXml.firstChild.nodeName == 'parsererror' )
+				{
 					alert( 'The server didn\'t send back a proper XML response. Please contact your system administrator.\n\n' +
 							'XML request error: ' + oXmlHttp.statusText + ' (' + oXmlHttp.status + ')\n\n' +
 							'Requested URL:\n' + urlToCall + '\n\n' +
@@ -70,7 +88,7 @@
 					return ;
 				}
 
-				oFCKXml.DOMDocument = oXmlHttp.responseXML ;
+				oFCKXml.DOMDocument = oXml ;
 				asyncFunctionPointer( oFCKXml ) ;
 			}
 		}

Modified: pal-wcm/trunk/src/main/webapp/fckeditor/editor/filemanager/connectors/asp/basexml.asp
===================================================================
--- pal-wcm/trunk/src/main/webapp/fckeditor/editor/filemanager/connectors/asp/basexml.asp	2008-09-03 08:05:44 UTC (rev 1112)
+++ pal-wcm/trunk/src/main/webapp/fckeditor/editor/filemanager/connectors/asp/basexml.asp	2008-09-04 02:44:24 UTC (rev 1113)
@@ -30,6 +30,7 @@
 	Response.CacheControl = "no-cache"
 
 	' Set the response format.
+	Response.CodePage 		= 65001
 	Response.CharSet		= "UTF-8"
 	Response.ContentType	= "text/xml"
 End Sub

Modified: pal-wcm/trunk/src/main/webapp/fckeditor/editor/filemanager/connectors/asp/commands.asp
===================================================================
--- pal-wcm/trunk/src/main/webapp/fckeditor/editor/filemanager/connectors/asp/commands.asp	2008-09-03 08:05:44 UTC (rev 1112)
+++ pal-wcm/trunk/src/main/webapp/fckeditor/editor/filemanager/connectors/asp/commands.asp	2008-09-04 02:44:24 UTC (rev 1113)
@@ -103,7 +103,7 @@
 	Else
 		' Map the virtual path to the local server path of the current folder.
 		Dim sServerDir
-		sServerDir = ServerMapFolder( resourceType, CombinePaths(currentFolder, sNewFolderName), "CreateFolder" )
+		sServerDir = ServerMapFolder( resourceType, CombineLocalPaths(currentFolder, sNewFolderName), "CreateFolder" )
 
 		On Error Resume Next
 
@@ -171,7 +171,7 @@
 
 			Do While ( True )
 				Dim sFilePath
-				sFilePath = sServerDir & sFileName
+				sFilePath = CombineLocalPaths(sServerDir, sFileName)
 
 				If ( oFSO.FileExists( sFilePath ) ) Then
 					iCounter = iCounter + 1

Modified: pal-wcm/trunk/src/main/webapp/fckeditor/editor/filemanager/connectors/asp/io.asp
===================================================================
--- pal-wcm/trunk/src/main/webapp/fckeditor/editor/filemanager/connectors/asp/io.asp	2008-09-03 08:05:44 UTC (rev 1112)
+++ pal-wcm/trunk/src/main/webapp/fckeditor/editor/filemanager/connectors/asp/io.asp	2008-09-04 02:44:24 UTC (rev 1113)
@@ -25,6 +25,12 @@
 	CombinePaths =  RemoveFromEnd( sBasePath, "/" ) & "/" & RemoveFromStart( sFolder, "/" )
 end function
 
+function CombineLocalPaths( sBasePath, sFolder)
+	sFolder = replace(sFolder, "/", "\")
+	' The RemoveFrom* functions use RegExp, so we must escape the \
+	CombineLocalPaths =  RemoveFromEnd( sBasePath, "\\" ) & "\" & RemoveFromStart( sFolder, "\\" )
+end function
+
 Function GetResourceTypePath( resourceType, sCommand )
 	if ( sCommand = "QuickUpload") then
 		GetResourceTypePath = ConfigQuickUploadPath.Item( resourceType )
@@ -69,7 +75,7 @@
 	CreateServerFolder sResourceTypePath
 
 	' Return the resource type directory combined with the required path.
-	ServerMapFolder = CombinePaths( sResourceTypePath, folderPath )
+	ServerMapFolder = CombineLocalPaths( sResourceTypePath, folderPath )
 End Function
 
 Sub CreateServerFolder( folderPath )
@@ -79,6 +85,10 @@
 	Dim sParent
 	sParent = oFSO.GetParentFolderName( folderPath )
 
+	' If folderPath is a network path (\\server\folder\) then sParent is an empty string.
+	' Get out.
+	if (sParent = "") then exit sub
+
 	' Check if the parent exists, or create it.
 	If ( NOT oFSO.FolderExists( sParent ) ) Then CreateServerFolder( sParent )
 
@@ -214,38 +224,10 @@
 Sub SendUploadResults( errorNumber, fileUrl, fileName, customMsg )
 	Response.Clear
 	Response.Write "<script type=""text/javascript"">"
-	Response.Write "(function()"
-	Response.Write "{"
-	Response.Write "var d = document.domain ;"
+	' Minified version of the document.domain automatic fix script (#1919).
+	' The original script can be found at _dev/domain_fix_template.js
+	Response.Write "(function(){var d=document.domain;while (true){try{var A=window.parent.document.domain;break;}catch(e) {};d=d.replace(/.*?(?:\.|$)/,'');if (d.length==0) break;try{document.domain=d;}catch (e){break;}}})();"
 
-	Response.Write " while ( true )"
-	Response.Write "	{"
-	' Test if we can access a parent property.
-	Response.Write "		try"
-	Response.Write "		{"
-	Response.Write "			var test = window.top.opener.document.domain ;"
-	Response.Write "			break ;"
-	Response.Write "		}"
-	Response.Write "		catch( e ) {}"
-
-	' Remove a domain part: www.mytest.example.com => mytest.example.com => example.com ...
-	Response.Write "		d = d.replace( /.*?(?:\.|$)/, '' ) ;"
-
-	Response.Write "		if ( d.length == 0 )"
-	' It was not able to detect the domain.
-	Response.Write "			break ;"
-	Response.Write ""
-	Response.Write "		try"
-	Response.Write "		{"
-	Response.Write "			document.domain = d ;"
-	Response.Write "		}"
-	Response.Write "		catch (e)"
-	Response.Write "		{"
-	Response.Write "			break ;"
-	Response.Write "		}"
-	Response.Write "	}"
-	Response.Write "})() ;"
-
 	Response.Write "window.parent.OnUploadCompleted(" & errorNumber & ",""" & Replace( fileUrl, """", "\""" ) & """,""" & Replace( fileName, """", "\""" ) & """,""" & Replace( customMsg , """", "\""" ) & """) ;"
 	Response.Write "</script>"
 	Response.End

Modified: pal-wcm/trunk/src/main/webapp/fckeditor/editor/filemanager/connectors/cfm/cf5_upload.cfm
===================================================================
--- pal-wcm/trunk/src/main/webapp/fckeditor/editor/filemanager/connectors/cfm/cf5_upload.cfm	2008-09-03 08:05:44 UTC (rev 1112)
+++ pal-wcm/trunk/src/main/webapp/fckeditor/editor/filemanager/connectors/cfm/cf5_upload.cfm	2008-09-04 02:44:24 UTC (rev 1113)
@@ -47,38 +47,9 @@
 	function SendUploadResults(errorNumber, fileUrl, fileName, customMsg)
 	{
 		WriteOutput('<script type="text/javascript">');
-		WriteOutput("(function()"&
-"{"&
-"	var d = document.domain ;"&
-""&
-"	while ( true )"&
-"	{"&
-		// Test if we can access a parent property.
-"		try"&
-"		{"&
-"			var test = window.top.opener.document.domain ;"&
-"			break ;"&
-"		}"&
-"		catch( e ) {}"&
-""&
-		// Remove a domain part: www.mytest.example.com => mytest.example.com => example.com ...
-"		d = d.replace( /.*?(?:\.|$)/, '' ) ;"&
-""&
-"		if ( d.length == 0 )"&
-			// It was not able to detect the domain.
-"			break ;"&
-""&
-"		try"&
-"		{"&
-"			document.domain = d ;"&
-"		}"&
-"		catch (e)"&
-"		{"&
-"			break ;"&
-"		}"&
-"	}"&
-"})() ;");
-
+		// Minified version of the document.domain automatic fix script (#1919).
+		// The original script can be found at _dev/domain_fix_template.js
+		WriteOutput("(function(){var d=document.domain;while (true){try{var A=window.parent.document.domain;break;}catch(e) {};d=d.replace(/.*?(?:\.|$)/,'');if (d.length==0) break;try{document.domain=d;}catch (e){break;}}})();");
 		WriteOutput('window.parent.OnUploadCompleted(' & errorNumber & ', "' & JSStringFormat(fileUrl) & '", "' & JSStringFormat(fileName) & '", "' & JSStringFormat(customMsg) & '");' );
 		WriteOutput('</script>');
 	}

Modified: pal-wcm/trunk/src/main/webapp/fckeditor/editor/filemanager/connectors/cfm/cf_io.cfm
===================================================================
--- pal-wcm/trunk/src/main/webapp/fckeditor/editor/filemanager/connectors/cfm/cf_io.cfm	2008-09-03 08:05:44 UTC (rev 1112)
+++ pal-wcm/trunk/src/main/webapp/fckeditor/editor/filemanager/connectors/cfm/cf_io.cfm	2008-09-04 02:44:24 UTC (rev 1113)
@@ -265,41 +265,13 @@
 	<cfargument name="fileName" required="false" type="String" default="">
 	<cfargument name="customMsg" required="false" type="String" default="">
 
+	<!--- Minified version of the document.domain automatic fix script (#1919).
+	The original script can be found at _dev/domain_fix_template.js --->
 	<cfoutput>
 <script type="text/javascript">
-(function()
-{
-	var d = document.domain ;
-
-	while ( true )
-	{
-		// Test if we can access a parent property.
-		try
-		{
-			var test = window.top.opener.document.domain ;
-			break ;
-		}
-		catch( e ) {}
-
-		// Remove a domain part: www.mytest.example.com => mytest.example.com => example.com ...
-		d = d.replace( /.*?(?:\.|$)/, '' ) ;
-
-		if ( d.length == 0 )
-			break ;		// It was not able to detect the domain.
-
-		try
-		{
-			document.domain = d ;
-		}
-		catch (e)
-		{
-			break ;
-		}
-	}
-})() ;
-
-			window.parent.OnUploadCompleted( #errorNumber#, "#JSStringFormat(fileUrl)#", "#JSStringFormat(fileName)#", "#JSStringFormat(customMsg)#" );
-		</script>
+(function(){var d=document.domain;while (true){try{var A=window.parent.document.domain;break;}catch(e) {};d=d.replace(/.*?(?:\.|$)/,'');if (d.length==0) break;try{document.domain=d;}catch (e){break;}}})();
+window.parent.OnUploadCompleted( #errorNumber#, "#JSStringFormat(fileUrl)#", "#JSStringFormat(fileName)#", "#JSStringFormat(customMsg)#" );
+</script>
 	</cfoutput>
 	<cfabort>
 </cffunction>

Modified: pal-wcm/trunk/src/main/webapp/fckeditor/editor/filemanager/connectors/lasso/upload.lasso
===================================================================
--- pal-wcm/trunk/src/main/webapp/fckeditor/editor/filemanager/connectors/lasso/upload.lasso	2008-09-03 08:05:44 UTC (rev 1112)
+++ pal-wcm/trunk/src/main/webapp/fckeditor/editor/filemanager/connectors/lasso/upload.lasso	2008-09-04 02:44:24 UTC (rev 1113)
@@ -74,38 +74,15 @@
 		-type='string',
 		-description='Sets the HTML response for the FCKEditor Quick Upload feature.'
 	);
-		$__html_reply__ = '\
-<script type="text/javascript">
-(function()
-{
-	var d = document.domain ;
 
-	while ( true )
-	{
-		// Test if we can access a parent property.
-		try
-		{
-			var test = window.top.opener.document.domain ;
-			break ;
-		}
-		catch( e ) {}
+		$__html_reply__ = '<script type="text/javascript">';
 
-		// Remove a domain part: www.mytest.example.com => mytest.example.com => example.com ...
-		d = d.replace( /.*?(?:\\.|$)/, "" ) ;
+		// Minified version of the document.domain automatic fix script (#1919).
+		// The original script can be found at _dev/domain_fix_template.js
+		// Note: in Lasso replace \ with \\
+		$__html_reply__ = $__html_reply__ + "(function(){var d=document.domain;while (true){try{var A=window.parent.document.domain;break;}catch(e) {};d=d.replace(/.*?(?:\\.|$)/,'');if (d.length==0) break;try{document.domain=d;}catch (e){break;}}})();";
 
-		if ( d.length == 0 )
-			break ;		// It was not able to detect the domain.
-
-		try
-		{
-			document.domain = d ;
-		}
-		catch (e)
-		{
-			break ;
-		}
-	}
-})() ;
+		$__html_reply__ = $__html_reply__ + '\
 	window.parent.OnUploadCompleted(' + #errorNumber + ',"'
 		+ string_replace(#fileUrl, -find='"', -replace='\\"') + '","'
 		+ string_replace(#fileName, -find='"', -replace='\\"') + '","'

Modified: pal-wcm/trunk/src/main/webapp/fckeditor/editor/filemanager/connectors/perl/commands.pl
===================================================================
--- pal-wcm/trunk/src/main/webapp/fckeditor/editor/filemanager/connectors/perl/commands.pl	2008-09-03 08:05:44 UTC (rev 1112)
+++ pal-wcm/trunk/src/main/webapp/fckeditor/editor/filemanager/connectors/perl/commands.pl	2008-09-04 02:44:24 UTC (rev 1113)
@@ -169,42 +169,15 @@
 
 	local($sErrorNumber, $sFileUrl, $sFileName, $customMsg) = @_;
 
+	# Minified version of the document.domain automatic fix script (#1919).
+	# The original script can be found at _dev/domain_fix_template.js
+	# Note: in Perl replace \ with \\ and $ with \$
 	print <<EOF;
 Content-type: text/html
 
 <script type="text/javascript">
-// Automatically detect the correct document.domain (#1919).
-(function()
-{
-	var d = document.domain ;
+(function(){var d=document.domain;while (true){try{var A=window.parent.document.domain;break;}catch(e) {};d=d.replace(/.*?(?:\\.|\$)/,'');if (d.length==0) break;try{document.domain=d;}catch (e){break;}}})();
 
-	while ( true )
-	{
-		// Test if we can access a parent property.
-		try
-		{
-			var test = window.top.opener.document.domain ;
-			break ;
-		}
-		catch( e ) {}
-
-		// Remove a domain part: www.mytest.example.com => mytest.example.com => example.com ...
-		d = d.replace( /.*?(?:\\.|\$)/, '' ) ;
-
-		if ( d.length == 0 )
-			break ;		// It was not able to detect the domain.
-
-		try
-		{
-			document.domain = d ;
-		}
-		catch (e)
-		{
-			break ;
-		}
-	}
-})() ;
-
 EOF
 	print 'window.parent.OnUploadCompleted(' . $sErrorNumber . ',"' . JS_cnv($sFileUrl) . '","' . JS_cnv($sFileName) . '","' . JS_cnv($customMsg) . '") ;';
 	print '</script>';

Modified: pal-wcm/trunk/src/main/webapp/fckeditor/editor/filemanager/connectors/php/config.php
===================================================================
--- pal-wcm/trunk/src/main/webapp/fckeditor/editor/filemanager/connectors/php/config.php	2008-09-03 08:05:44 UTC (rev 1112)
+++ pal-wcm/trunk/src/main/webapp/fckeditor/editor/filemanager/connectors/php/config.php	2008-09-04 02:44:24 UTC (rev 1113)
@@ -27,8 +27,7 @@
 // SECURITY: You must explicitly enable this "connector". (Set it to "true").
 // WARNING: don't just set "$Config['Enabled'] = true ;", you must be sure that only
 //		authenticated users can access this file or use some kind of session checking.
-//$Config['Enabled'] = false ;
-$Config['Enabled'] = true ;
+$Config['Enabled'] = false ;
 
 
 // Path to user files relative to the document root.

Modified: pal-wcm/trunk/src/main/webapp/fckeditor/editor/filemanager/connectors/php/connector.php
===================================================================
--- pal-wcm/trunk/src/main/webapp/fckeditor/editor/filemanager/connectors/php/connector.php	2008-09-03 08:05:44 UTC (rev 1112)
+++ pal-wcm/trunk/src/main/webapp/fckeditor/editor/filemanager/connectors/php/connector.php	2008-09-04 02:44:24 UTC (rev 1113)
@@ -43,15 +43,15 @@
     }
 	if ( !isset( $_GET['Command'] ) || !isset( $_GET['Type'] ) || !isset( $_GET['CurrentFolder'] ) )
 		return ;
-	
+
 	// Get the main request informaiton.
 	$sCommand		= $_GET['Command'] ;
 	$sResourceType	= $_GET['Type'] ;
 	$sCurrentFolder	= GetCurrentFolder() ;
 
 	// Check if it is an allowed command
-	if ( !IsAllowedCommand( $sCommand ) )
-	        SendError( 1, 'The "' . $sCommand . '" command isn\'t allowed' ) ;
+	if ( ! IsAllowedCommand( $sCommand ) )
+		SendError( 1, 'The "' . $sCommand . '" command isn\'t allowed' ) ;
 
 	// Check if it is an allowed type.
 	if ( !IsAllowedType( $sResourceType ) )

Modified: pal-wcm/trunk/src/main/webapp/fckeditor/editor/filemanager/connectors/php/io.php
===================================================================
--- pal-wcm/trunk/src/main/webapp/fckeditor/editor/filemanager/connectors/php/io.php	2008-09-03 08:05:44 UTC (rev 1112)
+++ pal-wcm/trunk/src/main/webapp/fckeditor/editor/filemanager/connectors/php/io.php	2008-09-04 02:44:24 UTC (rev 1113)
@@ -154,6 +154,8 @@
 		global $_SERVER;
 	}
 	$sRealPath = realpath( './' ) ;
+	// #2124 ensure that no slash is at the end
+	$sRealPath = rtrim($sRealPath,"\\/");
 
 	$sSelfPath = $_SERVER['PHP_SELF'] ;
 	$sSelfPath = substr( $sSelfPath, 0, strrpos( $sSelfPath, '/' ) ) ;
@@ -277,40 +279,13 @@
 // This is the function that sends the results of the uploading process.
 function SendUploadResults( $errorNumber, $fileUrl = '', $fileName = '', $customMsg = '' )
 {
+	// Minified version of the document.domain automatic fix script (#1919).
+	// The original script can be found at _dev/domain_fix_template.js
 	echo <<<EOF
 <script type="text/javascript">
-(function()
-{
-	var d = document.domain ;
-
-	while ( true )
-	{
-		// Test if we can access a parent property.
-		try
-		{
-			var test = window.top.opener.document.domain ;
-			break ;
-		}
-		catch( e ) {}
-
-		// Remove a domain part: www.mytest.example.com => mytest.example.com => example.com ...
-		d = d.replace( /.*?(?:\.|$)/, '' ) ;
-
-		if ( d.length == 0 )
-			break ;		// It was not able to detect the domain.
-
-		try
-		{
-			document.domain = d ;
-		}
-		catch (e)
-		{
-			break ;
-		}
-	}
-})() ;
-
+(function(){var d=document.domain;while (true){try{var A=window.parent.document.domain;break;}catch(e) {};d=d.replace(/.*?(?:\.|$)/,'');if (d.length==0) break;try{document.domain=d;}catch (e){break;}}})();
 EOF;
+
 	$rpl = array( '\\' => '\\\\', '"' => '\\"' ) ;
 	echo 'window.parent.OnUploadCompleted(' . $errorNumber . ',"' . strtr( $fileUrl, $rpl ) . '","' . strtr( $fileName, $rpl ) . '", "' . strtr( $customMsg, $rpl ) . '") ;' ;
 	echo '</script>' ;

Modified: pal-wcm/trunk/src/main/webapp/fckeditor/editor/filemanager/connectors/py/fckoutput.py
===================================================================
--- pal-wcm/trunk/src/main/webapp/fckeditor/editor/filemanager/connectors/py/fckoutput.py	2008-09-03 08:05:44 UTC (rev 1112)
+++ pal-wcm/trunk/src/main/webapp/fckeditor/editor/filemanager/connectors/py/fckoutput.py	2008-09-04 02:44:24 UTC (rev 1113)
@@ -101,38 +101,12 @@
 	def sendUploadResults( self, errorNo = 0, fileUrl = '', fileName = '', customMsg = '' ):
 		self.setHttpHeaders("text/html")
 		"This is the function that sends the results of the uploading process"
+
+		"Minified version of the document.domain automatic fix script (#1919)."
+		"The original script can be found at _dev/domain_fix_template.js"
 		return """<script type="text/javascript">
-			(function()
-			{
-				var d = document.domain ;
+			(function(){var d=document.domain;while (true){try{var A=window.parent.document.domain;break;}catch(e) {};d=d.replace(/.*?(?:\.|$)/,'');if (d.length==0) break;try{document.domain=d;}catch (e){break;}}})();
 
-				while ( true )
-				{
-					// Test if we can access a parent property.
-					try
-					{
-						var test = window.top.opener.document.domain ;
-						break ;
-					}
-					catch( e ) {}
-
-					// Remove a domain part: www.mytest.example.com => mytest.example.com => example.com ...
-					d = d.replace( /.*?(?:\.|$)/, '' ) ;
-
-					if ( d.length == 0 )
-						break ;		// It was not able to detect the domain.
-
-					try
-					{
-						document.domain = d ;
-					}
-					catch (e)
-					{
-						break ;
-					}
-				}
-			})() ;
-
 			window.parent.OnUploadCompleted(%(errorNumber)s,"%(fileUrl)s","%(fileName)s","%(customMsg)s");
 			</script>""" % {
 			'errorNumber': errorNo,

Deleted: pal-wcm/trunk/src/main/webapp/fckeditor/editor/filemanager/upload/asp/class_upload.asp
===================================================================
--- pal-wcm/trunk/src/main/webapp/fckeditor/editor/filemanager/upload/asp/class_upload.asp	2008-09-03 08:05:44 UTC (rev 1112)
+++ pal-wcm/trunk/src/main/webapp/fckeditor/editor/filemanager/upload/asp/class_upload.asp	2008-09-04 02:44:24 UTC (rev 1113)
@@ -1,234 +0,0 @@
-<!--
- * FCKeditor - The text editor for Internet - http://www.fckeditor.net
- * Copyright (C) 2003-2007 Frederico Caldeira Knabben
- *
- * == BEGIN LICENSE ==
- *
- * Licensed under the terms of any of the following licenses at your
- * choice:
- *
- *  - GNU General Public License Version 2 or later (the "GPL")
- *    http://www.gnu.org/licenses/gpl.html
- *
- *  - GNU Lesser General Public License Version 2.1 or later (the "LGPL")
- *    http://www.gnu.org/licenses/lgpl.html
- *
- *  - Mozilla Public License Version 1.1 or later (the "MPL")
- *    http://www.mozilla.org/MPL/MPL-1.1.html
- *
- * == END LICENSE ==
- *
- * These are the classes used to handle ASP upload without using third
- * part components (OCX/DLL).
--->
-<%
-'**********************************************
-' File:		NetRube_Upload.asp
-' Version:	NetRube Upload Class Version 2.1 Build 20050228
-' Author:	NetRube
-' Email:	NetRu****@126*****
-' Date:		02/28/2005
-' Comments:	The code for the Upload.
-'			This can free usage, but please
-'			not to delete this copyright information.
-'			If you have a modification version,
-'			Please send out a duplicate to me.
-'**********************************************
-' 文件名:	NetRube_Upload.asp
-' 版本:		NetRube Upload Class Version 2.1 Build 20050228
-' 作者:		NetRube(网络乡巴佬)
-' 电子邮件:	NetRu****@126*****
-' 日期:		2005年02月28日
-' 声明:		文件上传类
-'			本上传类可以自由使用,但请保留此版权声明信息
-'			如果您对本上传类进行修改增强,
-'			请发送一份给俺。
-'**********************************************
-
-Class NetRube_Upload
-
-	Public	File, Form
-	Private oSourceData
-	Private nMaxSize, nErr, sAllowed, sDenied
-
-	Private Sub Class_Initialize
-		nErr		= 0
-		nMaxSize	= 1048576
-
-		Set File			= Server.CreateObject("Scripting.Dictionary")
-		File.CompareMode	= 1
-		Set Form			= Server.CreateObject("Scripting.Dictionary")
-		Form.CompareMode	= 1
-
-		Set oSourceData		= Server.CreateObject("ADODB.Stream")
-		oSourceData.Type	= 1
-		oSourceData.Mode	= 3
-		oSourceData.Open
-	End Sub
-
-	Private Sub Class_Terminate
-		Form.RemoveAll
-		Set Form = Nothing
-		File.RemoveAll
-		Set File = Nothing
-
-		oSourceData.Close
-		Set oSourceData = Nothing
-	End Sub
-
-	Public Property Get Version
-		Version = "NetRube Upload Class Version 1.0 Build 20041218"
-	End Property
-
-	Public Property Get ErrNum
-		ErrNum	= nErr
-	End Property
-
-	Public Property Let MaxSize(nSize)
-		nMaxSize	= nSize
-	End Property
-
-	Public Property Let Allowed(sExt)
-		sAllowed	= sExt
-	End Property
-
-	Public Property Let Denied(sExt)
-		sDenied	= sExt
-	End Property
-
-	Public Sub GetData
-		Dim aCType
-		aCType = Split(Request.ServerVariables("HTTP_CONTENT_TYPE"), ";")
-		If aCType(0) <> "multipart/form-data" Then
-			nErr = 1
-			Exit Sub
-		End If
-
-		Dim nTotalSize
-		nTotalSize	= Request.TotalBytes
-		If nTotalSize < 1 Then
-			nErr = 2
-			Exit Sub
-		End If
-		If nMaxSize > 0 And nTotalSize > nMaxSize Then
-			nErr = 3
-			Exit Sub
-		End If
-
-		oSourceData.Write Request.BinaryRead(nTotalSize)
-		oSourceData.Position = 0
-
-		Dim oTotalData, oFormStream, sFormHeader, sFormName, bCrLf, nBoundLen, nFormStart, nFormEnd, nPosStart, nPosEnd, sBoundary
-
-		oTotalData	= oSourceData.Read
-		bCrLf		= ChrB(13) & ChrB(10)
-		sBoundary	= MidB(oTotalData, 1, InStrB(1, oTotalData, bCrLf) - 1)
-		nBoundLen	= LenB(sBoundary) + 2
-		nFormStart	= nBoundLen
-
-		Set oFormStream = Server.CreateObject("ADODB.Stream")
-
-		Do While (nFormStart + 2) < nTotalSize
-			nFormEnd	= InStrB(nFormStart, oTotalData, bCrLf & bCrLf) + 3
-
-			With oFormStream
-				.Type	= 1
-				.Mode	= 3
-				.Open
-				oSourceData.Position = nFormStart
-				oSourceData.CopyTo oFormStream, nFormEnd - nFormStart
-				.Position	= 0
-				.Type		= 2
-				.CharSet	= "UTF-8"
-				sFormHeader	= .ReadText
-				.Close
-			End With
-
-			nFormStart	= InStrB(nFormEnd, oTotalData, sBoundary) - 1
-			nPosStart	= InStr(22, sFormHeader, " name=", 1) + 7
-			nPosEnd		= InStr(nPosStart, sFormHeader, """")
-			sFormName	= Mid(sFormHeader, nPosStart, nPosEnd - nPosStart)
-
-			If InStr(45, sFormHeader, " filename=", 1) > 0 Then
-				Set File(sFormName)			= New NetRube_FileInfo
-				File(sFormName).FormName	= sFormName
-				File(sFormName).Start		= nFormEnd
-				File(sFormName).Size		= nFormStart - nFormEnd - 2
-				nPosStart					= InStr(nPosEnd, sFormHeader, " filename=", 1) + 11
-				nPosEnd						= InStr(nPosStart, sFormHeader, """")
-				File(sFormName).ClientPath	= Mid(sFormHeader, nPosStart, nPosEnd - nPosStart)
-				File(sFormName).Name		= Mid(File(sFormName).ClientPath, InStrRev(File(sFormName).ClientPath, "\") + 1)
-				File(sFormName).Ext			= LCase(Mid(File(sFormName).Name, InStrRev(File(sFormName).Name, ".") + 1))
-				nPosStart					= InStr(nPosEnd, sFormHeader, "Content-Type: ", 1) + 14
-				nPosEnd						= InStr(nPosStart, sFormHeader, vbCr)
-				File(sFormName).MIME		= Mid(sFormHeader, nPosStart, nPosEnd - nPosStart)
-			Else
-				With oFormStream
-					.Type	= 1
-					.Mode	= 3
-					.Open
-					oSourceData.Position = nPosEnd
-					oSourceData.CopyTo oFormStream, nFormStart - nFormEnd - 2
-					.Position	= 0
-					.Type		= 2
-					.CharSet	= "UTF-8"
-					Form(sFormName)	= .ReadText
-					.Close
-				End With
-			End If
-
-			nFormStart	= nFormStart + nBoundLen
-		Loop
-
-		oTotalData = ""
-		Set oFormStream = Nothing
-	End Sub
-
-	Public Sub SaveAs(sItem, sFileName)
-		If File(sItem).Size < 1 Then
-			nErr = 2
-			Exit Sub
-		End If
-
-		If Not IsAllowed(File(sItem).Ext) Then
-			nErr = 4
-			Exit Sub
-		End If
-
-		Dim oFileStream
-		Set oFileStream = Server.CreateObject("ADODB.Stream")
-		With oFileStream
-			.Type		= 1
-			.Mode		= 3
-			.Open
-			oSourceData.Position = File(sItem).Start
-			oSourceData.CopyTo oFileStream, File(sItem).Size
-			.Position	= 0
-			.SaveToFile sFileName, 2
-			.Close
-		End With
-		Set oFileStream = Nothing
-	End Sub
-
-	Private Function IsAllowed(sExt)
-		Dim oRE
-		Set oRE	= New RegExp
-		oRE.IgnoreCase	= True
-		oRE.Global		= True
-
-		If sDenied = "" Then
-			oRE.Pattern	= sAllowed
-			IsAllowed	= (sAllowed = "") Or oRE.Test(sExt)
-		Else
-			oRE.Pattern	= sDenied
-			IsAllowed	= Not oRE.Test(sExt)
-		End If
-
-		Set oRE	= Nothing
-	End Function
-End Class
-
-Class NetRube_FileInfo
-	Dim FormName, ClientPath, Path, Name, Ext, Content, Size, MIME, Start
-End Class
-%>
\ No newline at end of file

Deleted: pal-wcm/trunk/src/main/webapp/fckeditor/editor/filemanager/upload/asp/config.asp
===================================================================
--- pal-wcm/trunk/src/main/webapp/fckeditor/editor/filemanager/upload/asp/config.asp	2008-09-03 08:05:44 UTC (rev 1112)
+++ pal-wcm/trunk/src/main/webapp/fckeditor/editor/filemanager/upload/asp/config.asp	2008-09-04 02:44:24 UTC (rev 1113)
@@ -1,52 +0,0 @@
-<!--
- * FCKeditor - The text editor for Internet - http://www.fckeditor.net
- * Copyright (C) 2003-2007 Frederico Caldeira Knabben
- *
- * == BEGIN LICENSE ==
- *
- * Licensed under the terms of any of the following licenses at your
- * choice:
- *
- *  - GNU General Public License Version 2 or later (the "GPL")
- *    http://www.gnu.org/licenses/gpl.html
- *
- *  - GNU Lesser General Public License Version 2.1 or later (the "LGPL")
- *    http://www.gnu.org/licenses/lgpl.html
- *
- *  - Mozilla Public License Version 1.1 or later (the "MPL")
- *    http://www.mozilla.org/MPL/MPL-1.1.html
- *
- * == END LICENSE ==
- *
- * Configuration file for the File Manager Connector for ASP.
--->
-<%
-
-' SECURITY: You must explicitelly enable this "uploader" (set it to "True").
-Dim ConfigIsEnabled
-ConfigIsEnabled = False
-
-' Set if the file type must be considere in the target path.
-' Ex: /userfiles/image/ or /userfiles/file/
-Dim ConfigUseFileType
-ConfigUseFileType = False
-
-' Path to user files relative to the document root.
-Dim ConfigUserFilesPath
-ConfigUserFilesPath = "/userfiles/"
-
-' Allowed and Denied extensions configurations.
-Dim ConfigAllowedExtensions, ConfigDeniedExtensions
-Set ConfigAllowedExtensions	= CreateObject( "Scripting.Dictionary" )
-Set ConfigDeniedExtensions	= CreateObject( "Scripting.Dictionary" )
-
-ConfigAllowedExtensions.Add	"File", ""
-ConfigDeniedExtensions.Add	"File", "html|htm|php|php2|php3|php4|php5|phtml|pwml|inc|asp|aspx|ascx|jsp|cfm|cfc|pl|bat|exe|com|dll|vbs|js|reg|cgi|htaccess|asis"
-
-ConfigAllowedExtensions.Add	"Image", "jpg|gif|jpeg|png|bmp"
-ConfigDeniedExtensions.Add	"Image", ""
-
-ConfigAllowedExtensions.Add	"Flash", "swf|fla"
-ConfigDeniedExtensions.Add	"Flash", ""
-
-%>
\ No newline at end of file

Deleted: pal-wcm/trunk/src/main/webapp/fckeditor/editor/filemanager/upload/asp/io.asp
===================================================================
--- pal-wcm/trunk/src/main/webapp/fckeditor/editor/filemanager/upload/asp/io.asp	2008-09-03 08:05:44 UTC (rev 1112)
+++ pal-wcm/trunk/src/main/webapp/fckeditor/editor/filemanager/upload/asp/io.asp	2008-09-04 02:44:24 UTC (rev 1113)
@@ -1,29 +0,0 @@
-<!--
- * FCKeditor - The text editor for Internet - http://www.fckeditor.net
- * Copyright (C) 2003-2007 Frederico Caldeira Knabben
- *
- * == BEGIN LICENSE ==
- *
- * Licensed under the terms of any of the following licenses at your
- * choice:
- *
- *  - GNU General Public License Version 2 or later (the "GPL")
- *    http://www.gnu.org/licenses/gpl.html
- *
- *  - GNU Lesser General Public License Version 2.1 or later (the "LGPL")
- *    http://www.gnu.org/licenses/lgpl.html
- *
- *  - Mozilla Public License Version 1.1 or later (the "MPL")
- *    http://www.mozilla.org/MPL/MPL-1.1.html
- *
- * == END LICENSE ==
- *
- * This file include IO specific functions used by the ASP Uploader.
--->
-<%
-
-Function RemoveExtension( fileName )
-	RemoveExtension = Left( fileName, InStrRev( fileName, "." ) - 1 )
-End Function
-
-%>
\ No newline at end of file

Deleted: pal-wcm/trunk/src/main/webapp/fckeditor/editor/filemanager/upload/asp/upload.asp
===================================================================
--- pal-wcm/trunk/src/main/webapp/fckeditor/editor/filemanager/upload/asp/upload.asp	2008-09-03 08:05:44 UTC (rev 1112)
+++ pal-wcm/trunk/src/main/webapp/fckeditor/editor/filemanager/upload/asp/upload.asp	2008-09-04 02:44:24 UTC (rev 1113)
@@ -1,121 +0,0 @@
-<%@ CodePage=65001 Language="VBScript"%>
-<%
-Option Explicit
-Response.Buffer = True
-%>
-<!--
- * FCKeditor - The text editor for Internet - http://www.fckeditor.net
- * Copyright (C) 2003-2007 Frederico Caldeira Knabben
- *
- * == BEGIN LICENSE ==
- *
- * Licensed under the terms of any of the following licenses at your
- * choice:
- *
- *  - GNU General Public License Version 2 or later (the "GPL")
- *    http://www.gnu.org/licenses/gpl.html
- *
- *  - GNU Lesser General Public License Version 2.1 or later (the "LGPL")
- *    http://www.gnu.org/licenses/lgpl.html
- *
- *  - Mozilla Public License Version 1.1 or later (the "MPL")
- *    http://www.mozilla.org/MPL/MPL-1.1.html
- *
- * == END LICENSE ==
- *
- * This is the "File Uploader" for ASP.
--->
-<!--#include file="config.asp"-->
-<!--#include file="io.asp"-->
-<!--#include file="class_upload.asp"-->
-<%
-
-' This is the function that sends the results of the uploading process.
-Function SendResults( errorNumber, fileUrl, fileName, customMsg )
-	Response.Write "<script type=""text/javascript"">"
-	Response.Write "window.parent.OnUploadCompleted(" & errorNumber & ",""" & Replace( fileUrl, """", "\""" ) & """,""" & Replace( fileName, """", "\""" ) & """,""" & Replace( customMsg , """", "\""" ) & """) ;"
-	Response.Write "</script>"
-	Response.End
-End Function
-
-%>
-<%
-
-' Check if this uploader has been enabled.
-If ( ConfigIsEnabled = False ) Then
-	SendResults "1", "", "", "This file uploader is disabled. Please check the ""editor/filemanager/upload/asp/config.asp"" file"
-End If
-
-' The the file type (from the QueryString, by default 'File').
-Dim resourceType
-If ( Request.QueryString("Type") <> "" ) Then
-	resourceType = Request.QueryString("Type")
-Else
-	resourceType = "File"
-End If
-
-' Create the Uploader object.
-Dim oUploader
-Set oUploader = New NetRube_Upload
-oUploader.MaxSize	= 0
-oUploader.Allowed	= ConfigAllowedExtensions.Item( resourceType )
-oUploader.Denied	= ConfigDeniedExtensions.Item( resourceType )
-oUploader.GetData
-
-If oUploader.ErrNum > 1 Then
-	SendResults "202", "", "", ""
-Else
-	Dim sFileName, sFileUrl, sErrorNumber, sOriginalFileName, sExtension
-	sFileName		= ""
-	sFileUrl		= ""
-	sErrorNumber	= "0"
-
-	' Map the virtual path to the local server path.
-	Dim sServerDir
-	sServerDir = Server.MapPath( ConfigUserFilesPath )
-	If ( Right( sServerDir, 1 ) <> "\" ) Then
-		sServerDir = sServerDir & "\"
-	End If
-
-	If ( ConfigUseFileType = True ) Then
-		sServerDir = sServerDir & resourceType & "\"
-	End If
-
-	Dim oFSO
-	Set oFSO = Server.CreateObject( "Scripting.FileSystemObject" )
-
-	' Get the uploaded file name.
-	sFileName	= oUploader.File( "NewFile" ).Name
-	sExtension	= oUploader.File( "NewFile" ).Ext
-	sOriginalFileName = sFileName
-
-	Dim iCounter
-	iCounter = 0
-
-	Do While ( True )
-		Dim sFilePath
-		sFilePath = sServerDir & sFileName
-
-		If ( oFSO.FileExists( sFilePath ) ) Then
-			iCounter = iCounter + 1
-			sFileName = RemoveExtension( sOriginalFileName ) & "(" & iCounter & ")." & sExtension
-			sErrorNumber = "201"
-		Else
-			oUploader.SaveAs "NewFile", sFilePath
-			If oUploader.ErrNum > 0 Then SendResults "202", "", "", ""
-			Exit Do
-		End If
-	Loop
-
-	If ( ConfigUseFileType = True ) Then
-		sFileUrl = ConfigUserFilesPath & resourceType & "/" & sFileName
-	Else
-		sFileUrl = ConfigUserFilesPath & sFileName
-	End If
-
-	SendResults sErrorNumber, sFileUrl, sFileName, ""
-
-End If
-
-Set oUploader = Nothing
-%>
\ No newline at end of file

Deleted: pal-wcm/trunk/src/main/webapp/fckeditor/editor/filemanager/upload/aspx/upload.aspx
===================================================================
--- pal-wcm/trunk/src/main/webapp/fckeditor/editor/filemanager/upload/aspx/upload.aspx	2008-09-03 08:05:44 UTC (rev 1112)
+++ pal-wcm/trunk/src/main/webapp/fckeditor/editor/filemanager/upload/aspx/upload.aspx	2008-09-04 02:44:24 UTC (rev 1113)
@@ -1,30 +0,0 @@
-<%@ Page language="c#" Inherits="FredCK.FCKeditorV2.Uploader" AutoEventWireup="false" %>
-<%--
- * FCKeditor - The text editor for Internet - http://www.fckeditor.net
- * Copyright (C) 2003-2007 Frederico Caldeira Knabben
- *
- * == BEGIN LICENSE ==
- *
- * Licensed under the terms of any of the following licenses at your
- * choice:
- *
- *  - GNU General Public License Version 2 or later (the "GPL")
- *    http://www.gnu.org/licenses/gpl.html
- *
- *  - GNU Lesser General Public License Version 2.1 or later (the "LGPL")
- *    http://www.gnu.org/licenses/lgpl.html
- *
- *  - Mozilla Public License Version 1.1 or later (the "MPL")
- *    http://www.mozilla.org/MPL/MPL-1.1.html
- *
- * == END LICENSE ==
- *
- * This is the Uploader for ASP.NET.
- *
- * The code of this page if included in the FCKeditor.Net package,
- * in the FredCK.FCKeditorV2.dll assemblyfile. So to use it you must
- * include that DLL in your "bin" directory.
- *
- * To download the FCKeditor.Net package, go to our official web site:
- * http://www.fckeditor.net
---%>
\ No newline at end of file

Deleted: pal-wcm/trunk/src/main/webapp/fckeditor/editor/filemanager/upload/cfm/config.cfm
===================================================================
--- pal-wcm/trunk/src/main/webapp/fckeditor/editor/filemanager/upload/cfm/config.cfm	2008-09-03 08:05:44 UTC (rev 1112)
+++ pal-wcm/trunk/src/main/webapp/fckeditor/editor/filemanager/upload/cfm/config.cfm	2008-09-04 02:44:24 UTC (rev 1113)
@@ -1,98 +0,0 @@
-<!---
- * FCKeditor - The text editor for Internet - http://www.fckeditor.net
- * Copyright (C) 2003-2007 Frederico Caldeira Knabben
- *
- * == BEGIN LICENSE ==
- *
- * Licensed under the terms of any of the following licenses at your
- * choice:
- *
- *  - GNU General Public License Version 2 or later (the "GPL")
- *    http://www.gnu.org/licenses/gpl.html
- *
- *  - GNU Lesser General Public License Version 2.1 or later (the "LGPL")
- *    http://www.gnu.org/licenses/lgpl.html
- *
- *  - Mozilla Public License Version 1.1 or later (the "MPL")
- *    http://www.mozilla.org/MPL/MPL-1.1.html
- *
- * == END LICENSE ==
- *
- * Configuration file for the ColdFusion File Uploader.
---->
-
-<cfscript>
-	config = StructNew();
-
-	// SECURITY: You must explicitelly enable this "uploader".
-	config.enabled = false;
-
-	// Path to uploaded files relative to the document root.
-	config.userFilesPath = "/userfiles/";
-
-	config.serverPath = ""; // use this to force the server path if FCKeditor is not running directly off the root of the application or the FCKeditor directory in the URL is a virtual directory or a symbolic link / junction
-
-	config.allowedExtensions = StructNew();
-	config.deniedExtensions = StructNew();
-
-	config.allowedExtensions["File"] = "";
-	config.deniedExtensions["File"] = "html,htm,php,php2,php3,php4,php5,phtml,pwml,inc,asp,aspx,ascx,jsp,cfm,cfc,pl,bat,exe,com,dll,vbs,js,reg,cgi,htaccess,asis";
-
-	config.allowedExtensions["Image"] = "png,gif,jpg,jpeg,bmp";
-	config.deniedExtensions["Image"] = "";
-
-	config.allowedExtensions["Flash"] = "swf,fla";
-	config.deniedExtensions["Flash"] = "";
-</cfscript>
-
-<!--- code to maintain backwards compatibility with previous version of cfm connector --->
-<cfif isDefined("application.userFilesPath")>
-
-	<cflock scope="application" type="readonly" timeout="5">
-		<cfset config.userFilesPath = application.userFilesPath>
-	</cflock>
-
-<cfelseif isDefined("server.userFilesPath")>
-
-	<cflock scope="server" type="readonly" timeout="5">
-		<cfset config.userFilesPath = server.userFilesPath>
-	</cflock>
-
-</cfif>
-
-<!--- look for config struct in request, application and server scopes --->
-<cfif isDefined("request.FCKeditor") and isStruct(request.FCKeditor)>
-
-	<cfset variables.FCKeditor = request.FCKeditor>
-
-<cfelseif isDefined("application.FCKeditor") and isStruct(application.FCKeditor)>
-
-	<cflock scope="application" type="readonly" timeout="5">
-	<cfset variables.FCKeditor = duplicate(application.FCKeditor)>
-	</cflock>
-
-<cfelseif isDefined("server.FCKeditor") and isStruct(server.FCKeditor)>
-
-	<cflock scope="server" type="readonly" timeout="5">
-	<cfset variables.FCKeditor = duplicate(server.FCKeditor)>
-	</cflock>
-
-</cfif>
-
-<cfif isDefined("FCKeditor")>
-
-	<!--- copy key values from external to local config (i.e. override default config as required) --->
-	<cfscript>
-		function structCopyKeys(stFrom, stTo) {
-			for ( key in stFrom ) {
-				if ( isStruct(stFrom[key]) ) {
-					structCopyKeys(stFrom[key],stTo[key]);
-				} else {
-					stTo[key] = stFrom[key];
-				}
-			}
-		}
-		structCopyKeys(FCKeditor, config);
-	</cfscript>
-
-</cfif>
\ No newline at end of file

Deleted: pal-wcm/trunk/src/main/webapp/fckeditor/editor/filemanager/upload/cfm/upload.cfm
===================================================================
--- pal-wcm/trunk/src/main/webapp/fckeditor/editor/filemanager/upload/cfm/upload.cfm	2008-09-03 08:05:44 UTC (rev 1112)
+++ pal-wcm/trunk/src/main/webapp/fckeditor/editor/filemanager/upload/cfm/upload.cfm	2008-09-04 02:44:24 UTC (rev 1113)
@@ -1,168 +0,0 @@
-<!---
- * FCKeditor - The text editor for Internet - http://www.fckeditor.net
- * Copyright (C) 2003-2007 Frederico Caldeira Knabben
- *
- * == BEGIN LICENSE ==
- *
- * Licensed under the terms of any of the following licenses at your
- * choice:
- *
- *  - GNU General Public License Version 2 or later (the "GPL")
- *    http://www.gnu.org/licenses/gpl.html
- *
- *  - GNU Lesser General Public License Version 2.1 or later (the "LGPL")
- *    http://www.gnu.org/licenses/lgpl.html
- *
- *  - Mozilla Public License Version 1.1 or later (the "MPL")
- *    http://www.mozilla.org/MPL/MPL-1.1.html
- *
- * == END LICENSE ==
- *
- * This is the "File Uploader" for ColdFusion.
- * Based on connector.cfm by Mark Woods (mark****@thick*****)
---->
-
-<cfinclude template="config.cfm">
-
-<cfparam name="url.type" default="File">
-
-<cffunction name="SendResults">
-	<cfargument name="errorNumber" type="numeric" required="yes">
-	<cfargument name="fileUrl" type="string" required="no" default="">
-	<cfargument name="fileName" type="string" required="no" default="">
-	<cfargument name="customMsg" type="string" required="no" default="">
-
-	<cfoutput>
-		<script type="text/javascript">
-			window.parent.OnUploadCompleted(#errorNumber#, "#JSStringFormat(fileUrl)#", "#JSStringFormat(fileName)#", "#JSStringFormat(customMsg)#");
-		</script>
-	</cfoutput>
-
-	<cfabort><!--- Result sent, stop processing this page --->
-</cffunction>
-
-<cfif NOT config.enabled>
-	<cfset SendResults(1, '', '', 'This file uploader is disabled. Please check the "editor/filemanager/upload/cfm/config.cfm" file')>
-<cfelse>
-	<cfscript>
-
-		userFilesPath = config.userFilesPath;
-		lAllowedExtensions = config.allowedExtensions[url.type];
-		lDeniedExtensions = config.deniedExtensions[url.type];
-		customMsg = ''; // Can be overwritten. The last value will be sent with the result
-
-		// make sure the user files path is correctly formatted
-		userFilesPath = replace(userFilesPath, "\", "/", "ALL");
-		userFilesPath = replace(userFilesPath, '//', '/', 'ALL');
-		if ( right(userFilesPath,1) NEQ "/" ) {
-			userFilesPath = userFilesPath & "/";
-		}
-		if ( left(userFilesPath,1) NEQ "/" ) {
-			userFilesPath = "/" & userFilesPath;
-		}
-
-		if (find("/",getBaseTemplatePath())) {
-			fs = "/";
-		} else {
-			fs = "\";
-		}
-
-		// Get the base physical path to the web root for this application. The code to determine the path automatically assumes that
-		// the "FCKeditor" directory in the http request path is directly off the web root for the application and that it's not a
-		// virtual directory or a symbolic link / junction. Use the serverPath config setting to force a physical path if necessary.
-		if ( len(config.serverPath) ) {
-			serverPath = config.serverPath;
-		} else {
-			serverPath = replaceNoCase(getBaseTemplatePath(),replace(cgi.script_name,"/",fs,"all"),"");
-		}
-
-		// map the user files path to a physical directory
-		userFilesServerPath = serverPath & replace(userFilesPath,"/",fs,"all");
-	</cfscript>
-
-	<cfset fileName = "">
-	<cfset fileExt = "">
-
-	<cftry>
-
-		<!--- we need to know the physical path to the current folder for all commands --->
-		<cfset currentFolderPath = userFilesServerPath & url.type & fs>
-
-		<!--- TODO: upload to a temp directory and move file if extension is allowed --->
-
-		<!--- first upload the file with an unique filename --->
-		<cffile action="upload"
-			fileField="NewFile"
-			destination="#currentFolderPath#"
-			nameConflict="makeunique"
-			mode="644"
-			attributes="normal">
-
-		<cfif (Len(lAllowedExtensions) AND NOT listFindNoCase(lAllowedExtensions, cffile.ServerFileExt))
-			OR (Len(lDeniedExtensions) AND listFindNoCase(lDeniedExtensions, cffile.ServerFileExt))>
-
-			<!--- Extension of the uploaded file is not allowed --->
-			<cfset errorNumber = "202">
-			<cffile action="delete" file="#cffile.ServerDirectory##fs##cffile.ServerFile#">
-
-		<cfelse>
-
-			<cfscript>
-				errorNumber = 0;
-				fileName = cffile.ClientFileName;
-				fileExt = cffile.ServerFileExt;
-
-				// munge filename for html download. Only a-z, 0-9, _, - and . are allowed
-				if( reFind("[^A-Za-z0-9_\-\.]", fileName) ) {
-					fileName = reReplace(fileName, "[^A-Za-z0-9\-\.]", "_", "ALL");
-					fileName = reReplace(fileName, "_{2,}", "_", "ALL");
-					fileName = reReplace(fileName, "([^_]+)_+$", "\1", "ALL");
-					fileName = reReplace(fileName, "$_([^_]+)$", "\1", "ALL");
-				}
-
-				// When the original filename already exists, add numbers (0), (1), (2), ... at the end of the filename.
-				if( compare( cffile.ServerFileName, fileName ) ) {
-					counter = 0;
-					tmpFileName = fileName;
-					while( fileExists("#currentFolderPath##fileName#.#fileExt#") ) {
-						counter = counter + 1;
-						fileName = tmpFileName & '(#counter#)';
-					}
-				}
-			</cfscript>
-
-			<!--- Rename the uploaded file, if neccessary --->
-			<cfif compare(cffile.ServerFileName,fileName)>
-
-				<cfset errorNumber = "201">
-				<cffile
-					action="rename"
-					source="#currentFolderPath##cffile.ServerFileName#.#cffile.ServerFileExt#"
-					destination="#currentFolderPath##fileName#.#fileExt#"
-					mode="644"
-					attributes="normal">
-
-			</cfif>
-
-		</cfif>
-
-		<cfcatch type="Any">
-
-			<cfset errorNumber = "1">
-			<cfset customMsg = "An error occured: " & cfcatch.message & " - " & cfcatch.detail>
-
-		</cfcatch>
-
-	</cftry>
-
-	<cfif errorNumber EQ 0>
-		<!--- file was uploaded succesfully --->
-		<cfset SendResults(errorNumber, '#userFilesPath##url.type#/#fileName#.#fileExt#')>
-	<cfelseif errorNumber EQ 201>
-		<!--- file was changed (201), submit the new filename --->
-		<cfset SendResults(errorNumber, '#userFilesPath##url.type#/#fileName#.#fileExt#', replace( fileName & "." & fileExt, "'", "\'", "ALL"), customMsg)>
-	<cfelse>
-		<!--- An error occured(202). Submit only the error code and a message (if available). --->
-		<cfset SendResults(errorNumber, '', '', customMsg)>
-	</cfif>
-</cfif>
\ No newline at end of file

Deleted: pal-wcm/trunk/src/main/webapp/fckeditor/editor/filemanager/upload/lasso/config.lasso
===================================================================
--- pal-wcm/trunk/src/main/webapp/fckeditor/editor/filemanager/upload/lasso/config.lasso	2008-09-03 08:05:44 UTC (rev 1112)
+++ pal-wcm/trunk/src/main/webapp/fckeditor/editor/filemanager/upload/lasso/config.lasso	2008-09-04 02:44:24 UTC (rev 1113)
@@ -1,65 +0,0 @@
-[//lasso
-/*
- * FCKeditor - The text editor for Internet - http://www.fckeditor.net
- * Copyright (C) 2003-2007 Frederico Caldeira Knabben
- *
- * == BEGIN LICENSE ==
- *
- * Licensed under the terms of any of the following licenses at your
- * choice:
- *
- *  - GNU General Public License Version 2 or later (the "GPL")
- *    http://www.gnu.org/licenses/gpl.html
- *
- *  - GNU Lesser General Public License Version 2.1 or later (the "LGPL")
- *    http://www.gnu.org/licenses/lgpl.html
- *
- *  - Mozilla Public License Version 1.1 or later (the "MPL")
- *    http://www.mozilla.org/MPL/MPL-1.1.html
- *
- * == END LICENSE ==
- *
- * Configuration file for the Lasso File Uploader.
- */
-
-    /*.....................................................................
-    The connector uses the file tags, which require authentication. Enter a
-    valid username and password from Lasso admin for a group with file tags
-    permissions for uploads and the path you define in UserFilesPath below.
-    */
-
-	var('connection') = array(
-		-username='xxxxxxxx',
-		-password='xxxxxxxx'
-	);
-
-
-    /*.....................................................................
-    Set the base path for files that users can upload and browse (relative
-    to server root).
-
-    Set which file extensions are allowed and/or denied for each file type.
-    */
-	var('config') = map(
-		'Enabled' = false,
-		'UserFilesPath' = '/userfiles/',
-		'Subdirectories' = map(
-			'File' = 'File/',
-			'Image' = 'Image/',
-			'Flash' = 'Flash/',
-			'Media' = 'Media/'
-		),
-		'AllowedExtensions' = map(
-			'File' = array(),
-			'Image' = array('jpg','gif','jpeg','png'),
-			'Flash' = array('swf','fla'),
-			'Media' = array('swf','fla','jpg','gif','jpeg','png','avi','mpg','mpeg')
-		),
-		'DeniedExtensions' = map(
-			'File' = array('html','htm','php','php2','php3','php4','php5','phtml','pwml','inc','asp','aspx','ascx','jsp','cfm','cfc','pl','bat','exe','com','dll','vbs','js','reg','cgi','lasso','lassoapp','htaccess','asis'),
-			'Image' = array(),
-			'Flash' = array(),
-			'Media' = array()
-		)
-	);
-]

Deleted: pal-wcm/trunk/src/main/webapp/fckeditor/editor/filemanager/upload/lasso/upload.lasso
===================================================================
--- pal-wcm/trunk/src/main/webapp/fckeditor/editor/filemanager/upload/lasso/upload.lasso	2008-09-03 08:05:44 UTC (rev 1112)
+++ pal-wcm/trunk/src/main/webapp/fckeditor/editor/filemanager/upload/lasso/upload.lasso	2008-09-04 02:44:24 UTC (rev 1113)
@@ -1,157 +0,0 @@
-[//lasso
-/*
- * FCKeditor - The text editor for Internet - http://www.fckeditor.net
- * Copyright (C) 2003-2007 Frederico Caldeira Knabben
- *
- * == BEGIN LICENSE ==
- *
- * Licensed under the terms of any of the following licenses at your
- * choice:
- *
- *  - GNU General Public License Version 2 or later (the "GPL")
- *    http://www.gnu.org/licenses/gpl.html
- *
- *  - GNU Lesser General Public License Version 2.1 or later (the "LGPL")
- *    http://www.gnu.org/licenses/lgpl.html
- *
- *  - Mozilla Public License Version 1.1 or later (the "MPL")
- *    http://www.mozilla.org/MPL/MPL-1.1.html
- *
- * == END LICENSE ==
- *
- * This is the "File Uploader" for Lasso.
- */
-
-    /*.....................................................................
-    Include global configuration. See config.lasso for details.
-    */
-	include('config.lasso');
-
-
-    /*.....................................................................
-    Convert query string parameters to variables and initialize output.
-    */
-	var(
-		'Type'			=	action_param('Type'),
-		'CurrentFolder'	=	action_param('CurrentFolder'),
-		'ServerPath'	=	action_param('ServerPath'),
-		'NewFile'		=	null,
-		'NewFileName'	=	string,
-		'OrigFilePath'	=	string,
-		'NewFilePath'	=	string,
-		'errorNumber'	=	0,
-		'customMsg'		=	''
-	);
-
-	$Type == '' ? $Type = 'File';
-
-
-    /*.....................................................................
-    Calculate the path to the current folder.
-    */
-	$ServerPath == '' ? $ServerPath = $config->find('UserFilesPath');
-
-	var('currentFolderURL' = $ServerPath
-		+ $config->find('Subdirectories')->find(action_param('Type'))
-		+ action_param('CurrentFolder')
-	);
-
-
-	/*.....................................................................
-	Custom tag sets the HTML response.
-	*/
-
-	define_tag(
-		'sendresults',
-		-namespace='fck_',
-		-priority='replace',
-		-required='errorNumber',
-		-type='integer',
-		-optional='fileUrl',
-		-type='string',
-		-optional='fileName',
-		-type='string',
-		-optional='customMsg',
-		-type='string',
-		-description='Sets the HTML response for the FCKEditor Quick Upload feature.'
-	);
-		$__html_reply__ = '\
-<script type="text/javascript">
-	window.parent.OnUploadCompleted(' + #errorNumber + ',"'
-		+ string_replace(#fileUrl, -find='"', -replace='\\"') + '","'
-		+ string_replace(#fileName, -find='"', -replace='\\"') + '","'
-		+ string_replace(#customMsg, -find='"', -replace='\\"') + '");
-</script>
-		';
-	/define_tag;
-
-
-	if($config->find('Enabled'));
-		/*.................................................................
-		Process an uploaded file.
-		*/
-		inline($connection);
-			/*.............................................................
-			Was a file actually uploaded?
-			*/
-			file_uploads->size ? $NewFile = file_uploads->get(1) | $errorNumber = 202;
-
-			if($errorNumber == 0);
-				/*.........................................................
-				Split the file's extension from the filename in order
-				to follow the API's naming convention for duplicate
-				files. (Test.txt, Test(1).txt, Test(2).txt, etc.)
-				*/
-				$NewFileName = $NewFile->find('OrigName');
-				$OrigFilePath = $currentFolderURL + $NewFileName;
-				$NewFilePath = $OrigFilePath;
-				local('fileExtension') = '.' + $NewFile->find('OrigExtension');
-				local('shortFileName') = $NewFileName->removetrailing(#fileExtension)&;
-
-
-				/*.........................................................
-				Make sure the file extension is allowed.
-				*/
-
-				if($config->find('DeniedExtensions')->find($Type) >> $NewFile->find('OrigExtension'));
-					$errorNumber = 202;
-				else;
-					/*.....................................................
-					Rename the target path until it is unique.
-					*/
-					while(file_exists($NewFilePath));
-						$NewFileName = #shortFileName + '(' + loop_count + ')' + #fileExtension;
-						$NewFilePath = $currentFolderURL + $NewFileName;
-					/while;
-
-
-					/*.....................................................
-					Copy the uploaded file to its final location.
-					*/
-					file_copy($NewFile->find('path'), $NewFilePath);
-
-
-					/*.....................................................
-					Set the error code for the response.
-					*/
-					select(file_currenterror( -errorcode));
-						case(0);
-							$OrigFilePath != $NewFilePath ? $errorNumber = 201;
-						case;
-							$errorNumber = 202;
-					/select;
-				/if;
-			/if;
-		/inline;
-	else;
-		$errorNumber = 1;
-		$customMsg = 'This file uploader is disabled. Please check the "editor/filemanager/upload/lasso/config.lasso" file.';
-	/if;
-
-	fck_sendresults(
-		-errorNumber=$errorNumber,
-		-fileUrl=$NewFilePath,
-		-fileName=$NewFileName,
-		-customMsg=$customMsg
-	);
-]

Deleted: pal-wcm/trunk/src/main/webapp/fckeditor/editor/filemanager/upload/php/config.php
===================================================================
--- pal-wcm/trunk/src/main/webapp/fckeditor/editor/filemanager/upload/php/config.php	2008-09-03 08:05:44 UTC (rev 1112)
+++ pal-wcm/trunk/src/main/webapp/fckeditor/editor/filemanager/upload/php/config.php	2008-09-04 02:44:24 UTC (rev 1113)
@@ -1,56 +0,0 @@
-<?php
-/*
- * FCKeditor - The text editor for Internet - http://www.fckeditor.net
- * Copyright (C) 2003-2007 Frederico Caldeira Knabben
- *
- * == BEGIN LICENSE ==
- *
- * Licensed under the terms of any of the following licenses at your
- * choice:
- *
- *  - GNU General Public License Version 2 or later (the "GPL")
- *    http://www.gnu.org/licenses/gpl.html
- *
- *  - GNU Lesser General Public License Version 2.1 or later (the "LGPL")
- *    http://www.gnu.org/licenses/lgpl.html
- *
- *  - Mozilla Public License Version 1.1 or later (the "MPL")
- *    http://www.mozilla.org/MPL/MPL-1.1.html
- *
- * == END LICENSE ==
- *
- * Configuration file for the PHP File Uploader.
- */
-
-global $Config ;
-
-// SECURITY: You must explicitelly enable this "uploader".
-$Config['Enabled'] = false ;
-
-// Set if the file type must be considere in the target path.
-// Ex: /userfiles/image/ or /userfiles/file/
-$Config['UseFileType'] = false ;
-
-// Path to uploaded files relative to the document root.
-$Config['UserFilesPath'] = '/userfiles/' ;
-
-// Fill the following value it you prefer to specify the absolute path for the
-// user files directory. Usefull if you are using a virtual directory, symbolic
-// link or alias. Examples: 'C:\\MySite\\userfiles\\' or '/root/mysite/userfiles/'.
-// Attention: The above 'UserFilesPath' must point to the same directory.
-$Config['UserFilesAbsolutePath'] = '' ;
-
-// Due to security issues with Apache modules, it is reccomended to leave the
-// following setting enabled.
-$Config['ForceSingleExtension'] = true ;
-
-$Config['AllowedExtensions']['File']	= array() ;
-$Config['DeniedExtensions']['File']		= array('html','htm','php','php2','php3','php4','php5','phtml','pwml','inc','asp','aspx','ascx','jsp','cfm','cfc','pl','bat','exe','com','dll','vbs','js','reg','cgi','htaccess','asis') ;
-
-$Config['AllowedExtensions']['Image']	= array('jpg','gif','jpeg','png') ;
-$Config['DeniedExtensions']['Image']	= array() ;
-
-$Config['AllowedExtensions']['Flash']	= array('swf','fla') ;
-$Config['DeniedExtensions']['Flash']	= array() ;
-
-?>
\ No newline at end of file

Deleted: pal-wcm/trunk/src/main/webapp/fckeditor/editor/filemanager/upload/php/upload.php
===================================================================
--- pal-wcm/trunk/src/main/webapp/fckeditor/editor/filemanager/upload/php/upload.php	2008-09-03 08:05:44 UTC (rev 1112)
+++ pal-wcm/trunk/src/main/webapp/fckeditor/editor/filemanager/upload/php/upload.php	2008-09-04 02:44:24 UTC (rev 1113)
@@ -1,124 +0,0 @@
-<?php
-/*
- * FCKeditor - The text editor for Internet - http://www.fckeditor.net
- * Copyright (C) 2003-2007 Frederico Caldeira Knabben
- *
- * == BEGIN LICENSE ==
- *
- * Licensed under the terms of any of the following licenses at your
- * choice:
- *
- *  - GNU General Public License Version 2 or later (the "GPL")
- *    http://www.gnu.org/licenses/gpl.html
- *
- *  - GNU Lesser General Public License Version 2.1 or later (the "LGPL")
- *    http://www.gnu.org/licenses/lgpl.html
- *
- *  - Mozilla Public License Version 1.1 or later (the "MPL")
- *    http://www.mozilla.org/MPL/MPL-1.1.html
- *
- * == END LICENSE ==
- *
- * This is the "File Uploader" for PHP.
- */
-
-require('config.php') ;
-require('util.php') ;
-
-// This is the function that sends the results of the uploading process.
-function SendResults( $errorNumber, $fileUrl = '', $fileName = '', $customMsg = '' )
-{
-	echo '<script type="text/javascript">' ;
-	echo 'window.parent.OnUploadCompleted(' . $errorNumber . ',"' . str_replace( '"', '\\"', $fileUrl ) . '","' . str_replace( '"', '\\"', $fileName ) . '", "' . str_replace( '"', '\\"', $customMsg ) . '") ;' ;
-	echo '</script>' ;
-	exit ;
-}
-
-// Check if this uploader has been enabled.
-if ( !$Config['Enabled'] )
-	SendResults( '1', '', '', 'This file uploader is disabled. Please check the "editor/filemanager/upload/php/config.php" file' ) ;
-
-// Check if the file has been correctly uploaded.
-if ( !isset( $_FILES['NewFile'] ) || is_null( $_FILES['NewFile']['tmp_name'] ) || $_FILES['NewFile']['name'] == '' )
-	SendResults( '202' ) ;
-
-// Get the posted file.
-$oFile = $_FILES['NewFile'] ;
-
-// Get the uploaded file name extension.
-$sFileName = $oFile['name'] ;
-
-// Replace dots in the name with underscores (only one dot can be there... security issue).
-if ( $Config['ForceSingleExtension'] )
-	$sFileName = preg_replace( '/\\.(?![^.]*$)/', '_', $sFileName ) ;
-
-$sOriginalFileName = $sFileName ;
-
-// Get the extension.
-$sExtension = substr( $sFileName, ( strrpos($sFileName, '.') + 1 ) ) ;
-$sExtension = strtolower( $sExtension ) ;
-
-// The the file type (from the QueryString, by default 'File').
-$sType = isset( $_GET['Type'] ) ? $_GET['Type'] : 'File' ;
-
-// Check if it is an allowed type.
-if ( !in_array( $sType, array('File','Image','Flash','Media') ) )
-    SendResults( 1, '', '', 'Invalid type specified' ) ;
-
-// Get the allowed and denied extensions arrays.
-$arAllowed	= $Config['AllowedExtensions'][$sType] ;
-$arDenied	= $Config['DeniedExtensions'][$sType] ;
-
-// Check if it is an allowed extension.
-if ( ( count($arAllowed) > 0 && !in_array( $sExtension, $arAllowed ) ) || ( count($arDenied) > 0 && in_array( $sExtension, $arDenied ) ) )
-	SendResults( '202' ) ;
-
-$sErrorNumber	= '0' ;
-$sFileUrl		= '' ;
-
-// Initializes the counter used to rename the file, if another one with the same name already exists.
-$iCounter = 0 ;
-
-// Get the target directory.
-if ( isset( $Config['UserFilesAbsolutePath'] ) && strlen( $Config['UserFilesAbsolutePath'] ) > 0 )
-	$sServerDir = $Config['UserFilesAbsolutePath'] ;
-else
-	$sServerDir = GetRootPath() . $Config["UserFilesPath"] ;
-
-if ( $Config['UseFileType'] )
-	$sServerDir .= $sType . '/' ;
-
-while ( true )
-{
-	// Compose the file path.
-	$sFilePath = $sServerDir . $sFileName ;
-
-	// If a file with that name already exists.
-	if ( is_file( $sFilePath ) )
-	{
-		$iCounter++ ;
-		$sFileName = RemoveExtension( $sOriginalFileName ) . '(' . $iCounter . ').' . $sExtension ;
-		$sErrorNumber = '201' ;
-	}
-	else
-	{
-		move_uploaded_file( $oFile['tmp_name'], $sFilePath ) ;
-
-		if ( is_file( $sFilePath ) )
-		{
-			$oldumask = umask(0) ;
-			chmod( $sFilePath, 0777 ) ;
-			umask( $oldumask ) ;
-		}
-
-		if ( $Config['UseFileType'] )
-			$sFileUrl = $Config["UserFilesPath"] . $sType . '/' . $sFileName ;
-		else
-			$sFileUrl = $Config["UserFilesPath"] . $sFileName ;
-
-		break ;
-	}
-}
-
-SendResults( $sErrorNumber, $sFileUrl, $sFileName ) ;
-?>
\ No newline at end of file

Deleted: pal-wcm/trunk/src/main/webapp/fckeditor/editor/filemanager/upload/php/util.php
===================================================================
--- pal-wcm/trunk/src/main/webapp/fckeditor/editor/filemanager/upload/php/util.php	2008-09-03 08:05:44 UTC (rev 1112)
+++ pal-wcm/trunk/src/main/webapp/fckeditor/editor/filemanager/upload/php/util.php	2008-09-04 02:44:24 UTC (rev 1113)
@@ -1,40 +0,0 @@
-<?php
-/*
- * FCKeditor - The text editor for Internet - http://www.fckeditor.net
- * Copyright (C) 2003-2007 Frederico Caldeira Knabben
- *
- * == BEGIN LICENSE ==
- *
- * Licensed under the terms of any of the following licenses at your
- * choice:
- *
- *  - GNU General Public License Version 2 or later (the "GPL")
- *    http://www.gnu.org/licenses/gpl.html
- *
- *  - GNU Lesser General Public License Version 2.1 or later (the "LGPL")
- *    http://www.gnu.org/licenses/lgpl.html
- *
- *  - Mozilla Public License Version 1.1 or later (the "MPL")
- *    http://www.mozilla.org/MPL/MPL-1.1.html
- *
- * == END LICENSE ==
- *
- * This is the File Manager Connector for PHP.
- */
-
-function RemoveExtension( $fileName )
-{
-	return substr( $fileName, 0, strrpos( $fileName, '.' ) ) ;
-}
-
-function GetRootPath()
-{
-	$sRealPath = realpath( './' ) ;
-
-	$sSelfPath = $_SERVER['PHP_SELF'] ;
-	$sSelfPath = substr( $sSelfPath, 0, strrpos( $sSelfPath, '/' ) ) ;
-
-	return substr( $sRealPath, 0, strlen( $sRealPath ) - strlen( $sSelfPath ) ) ;
-}
-
-?>
\ No newline at end of file

Deleted: pal-wcm/trunk/src/main/webapp/fckeditor/editor/filemanager/upload/test.html
===================================================================
--- pal-wcm/trunk/src/main/webapp/fckeditor/editor/filemanager/upload/test.html	2008-09-03 08:05:44 UTC (rev 1112)
+++ pal-wcm/trunk/src/main/webapp/fckeditor/editor/filemanager/upload/test.html	2008-09-04 02:44:24 UTC (rev 1113)
@@ -1,133 +0,0 @@
-<!--
- * FCKeditor - The text editor for Internet - http://www.fckeditor.net
- * Copyright (C) 2003-2007 Frederico Caldeira Knabben
- *
- * == BEGIN LICENSE ==
- *
- * Licensed under the terms of any of the following licenses at your
- * choice:
- *
- *  - GNU General Public License Version 2 or later (the "GPL")
- *    http://www.gnu.org/licenses/gpl.html
- *
- *  - GNU Lesser General Public License Version 2.1 or later (the "LGPL")
- *    http://www.gnu.org/licenses/lgpl.html
- *
- *  - Mozilla Public License Version 1.1 or later (the "MPL")
- *    http://www.mozilla.org/MPL/MPL-1.1.html
- *
- * == END LICENSE ==
- *
- * Test page for the "File Uploaders".
--->
-<html>
-	<head>
-		<title>FCKeditor - Uploaders Tests</title>
-		<script language="javascript">
-
-function SendFile()
-{
-	var sUploaderUrl = cmbUploaderUrl.value ;
-
-	if ( sUploaderUrl.length == 0 )
-		sUploaderUrl = txtCustomUrl.value ;
-
-	if ( sUploaderUrl.length == 0 )
-	{
-		alert( 'Please provide your custom URL or select a default one' ) ;
-		return ;
-	}
-
-	eURL.innerHTML = sUploaderUrl ;
-	txtUrl.value = '' ;
-
-	frmUpload.action = sUploaderUrl ;
-	frmUpload.submit() ;
-}
-
-function OnUploadCompleted( errorNumber, fileUrl, fileName, customMsg )
-{
-	switch ( errorNumber )
-	{
-		case 0 :	// No errors
-			txtUrl.value = fileUrl ;
-			alert( 'File uploaded with no errors' ) ;
-			break ;
-		case 1 :	// Custom error
-			alert( customMsg ) ;
-			break ;
-		case 10 :	// Custom warning
-			txtUrl.value = fileUrl ;
-			alert( customMsg ) ;
-			break ;
-		case 201 :
-			txtUrl.value = fileUrl ;
-			alert( 'A file with the same name is already available. The uploaded file has been renamed to "' + fileName + '"' ) ;
-			break ;
-		case 202 :
-			alert( 'Invalid file' ) ;
-			break ;
-		case 203 :
-			alert( "Security error. You probably don't have enough permissions to upload. Please check your server." ) ;
-			break ;
-		default :
-			alert( 'Error on file upload. Error number: ' + errorNumber ) ;
-			break ;
-	}
-}
-
-		</script>
-	</head>
-	<body>
-		<table cellSpacing="0" cellPadding="0" width="100%" border="0" height="100%">
-			<tr>
-				<td>
-					<table cellSpacing="0" cellPadding="0" width="100%" border="0">
-						<tr>
-							<td nowrap>
-								Select the "File Uploader" to use:<br>
-								<select id="cmbUploaderUrl">
-									<option selected value="asp/upload.asp">ASP</option>
-									<option value="aspx/upload.aspx">ASP.Net</option>
-									<option value="cfm/upload.cfm">ColdFusion</option>
-									<option value="lasso/upload.lasso">Lasso</option>
-									<option value="php/upload.php">PHP</option>
-									<option value="">(Custom)</option>
-								</select>
-							</td>
-							<td nowrap>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</td>
-							<td width="100%">
-								Custom Uploader URL:<BR>
-								<input id="txtCustomUrl" style="WIDTH: 100%; BACKGROUND-COLOR: #dcdcdc" disabled type="text">
-							</td>
-						</tr>
-					</table>
-					<br>
-					<table cellSpacing="0" cellPadding="0" width="100%" border="0">
-						<tr>
-							<td noWrap>
-								<form id="frmUpload" target="UploadWindow" enctype="multipart/form-data" action="" method="post">
-									Upload a new file:<br>
-									<input type="file" name="NewFile"><br>
-									<input type="button" value="Send it to the Server" onclick="SendFile();">
-								</form>
-							</td>
-							<td style="WIDTH: 16px">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</td>
-							<td vAlign="top" width="100%">
-								Uploaded File URL:<br>
-								<INPUT id="txtUrl" style="WIDTH: 100%" readonly type="text">
-							</td>
-						</tr>
-					</table>
-					<br>
-					Post URL: <span id="eURL">&nbsp;</span>
-				</td>
-			</tr>
-			<tr>
-				<td height="100%">
-					<iframe name="UploadWindow" width="100%" height="100%" src="javascript:void(0)"></iframe>
-				</td>
-			</tr>
-		</table>
-	</body>
-</html>

Modified: pal-wcm/trunk/src/main/webapp/fckeditor/editor/js/fckadobeair.js
===================================================================
--- pal-wcm/trunk/src/main/webapp/fckeditor/editor/js/fckadobeair.js	2008-09-03 08:05:44 UTC (rev 1112)
+++ pal-wcm/trunk/src/main/webapp/fckeditor/editor/js/fckadobeair.js	2008-09-04 02:44:24 UTC (rev 1113)
@@ -167,8 +167,8 @@
 		FCK.StartEditor = function()
 		{
 			// Force pointing to the CSS files instead of using the inline CSS cached styles.
-			window.FCK_InternalCSS			= FCKConfig.FullBasePath + 'css/fck_internal.css' ;
-			window.FCK_ShowTableBordersCSS	= FCKConfig.FullBasePath + 'css/fck_showtableborders_gecko.css' ;
+			window.FCK_InternalCSS			= FCKConfig.BasePath + 'css/fck_internal.css' ;
+			window.FCK_ShowTableBordersCSS	= FCKConfig.BasePath + 'css/fck_showtableborders_gecko.css' ;
 
 			_Original_FCK_StartEditor.apply( this, arguments ) ;
 		}

Modified: pal-wcm/trunk/src/main/webapp/fckeditor/editor/js/fckeditorcode_gecko.js
===================================================================
--- pal-wcm/trunk/src/main/webapp/fckeditor/editor/js/fckeditorcode_gecko.js	2008-09-03 08:05:44 UTC (rev 1112)
+++ pal-wcm/trunk/src/main/webapp/fckeditor/editor/js/fckeditorcode_gecko.js	2008-09-04 02:44:24 UTC (rev 1113)
@@ -24,65 +24,65 @@
 
 var FCK_STATUS_NOTLOADED=window.parent.FCK_STATUS_NOTLOADED=0;var FCK_STATUS_ACTIVE=window.parent.FCK_STATUS_ACTIVE=1;var FCK_STATUS_COMPLETE=window.parent.FCK_STATUS_COMPLETE=2;var FCK_TRISTATE_OFF=window.parent.FCK_TRISTATE_OFF=0;var FCK_TRISTATE_ON=window.parent.FCK_TRISTATE_ON=1;var FCK_TRISTATE_DISABLED=window.parent.FCK_TRISTATE_DISABLED=-1;var FCK_UNKNOWN=window.parent.FCK_UNKNOWN=-9;var FCK_TOOLBARITEM_ONLYICON=window.parent.FCK_TOOLBARITEM_ONLYICON=0;var FCK_TOOLBARITEM_ONLYTEXT=window.parent.FCK_TOOLBARITEM_ONLYTEXT=1;var FCK_TOOLBARITEM_ICONTEXT=window.parent.FCK_TOOLBARITEM_ICONTEXT=2;var FCK_EDITMODE_WYSIWYG=window.parent.FCK_EDITMODE_WYSIWYG=0;var FCK_EDITMODE_SOURCE=window.parent.FCK_EDITMODE_SOURCE=1;var FCK_IMAGES_PATH='images/';var FCK_SPACER_PATH='images/spacer.gif';var CTRL=1000;var SHIFT=2000;var ALT=4000;var FCK_STYLE_BLOCK=0;var FCK_STYLE_INLINE=1;var FCK_STYLE_OBJECT=2;
 String.prototype.Contains=function(A){return (this.indexOf(A)>-1);};String.prototype.Equals=function(){var A=arguments;if (A.length==1&&A[0].pop) A=A[0];for (var i=0;i<A.length;i++){if (this==A[i]) return true;};return false;};String.prototype.IEquals=function(){var A=this.toUpperCase();var B=arguments;if (B.length==1&&B[0].pop) B=B[0];for (var i=0;i<B.length;i++){if (A==B[i].toUpperCase()) return true;};return false;};String.prototype.ReplaceAll=function(A,B){var C=this;for (var i=0;i<A.length;i++){C=C.replace(A[i],B[i]);};return C;};String.prototype.StartsWith=function(A){return (this.substr(0,A.length)==A);};String.prototype.EndsWith=function(A,B){var C=this.length;var D=A.length;if (D>C) return false;if (B){var E=new RegExp(A+'$','i');return E.test(this);}else return (D==0||this.substr(C-D,D)==A);};String.prototype.Remove=function(A,B){var s='';if (A>0) s=this.substring(0,A);if (A+B<this.length) s+=this.substring(A+B,this.length);return s;};String.prototype.Trim=function(){return this.replace(/(^[ \t\n\r]*)|([ \t\n\r]*$)/g,'');};String.prototype.LTrim=function(){return this.replace(/^[ \t\n\r]*/g,'');};String.prototype.RTrim=function(){return this.replace(/[ \t\n\r]*$/g,'');};String.prototype.ReplaceNewLineChars=function(A){return this.replace(/\n/g,A);};String.prototype.Replace=function(A,B,C){if (typeof B=='function'){return this.replace(A,function(){return B.apply(C||this,arguments);});}else return this.replace(A,B);};Array.prototype.AddItem=function(A){var i=this.length;this[i]=A;return i;};Array.prototype.IndexOf=function(A){for (var i=0;i<this.length;i++){if (this[i]==A) return i;};return-1;};
-var s=navigator.userAgent.toLowerCase();var FCKBrowserInfo={IsIE:/*@cc_on!@*/false,IsIE7:/*@cc_on!@*/false && ( parseInt( s.match( /msie (\d+)/)[1],10)>=7),IsIE6:/*@cc_on!@*/false && ( parseInt( s.match( /msie (\d+)/)[1],10)>=6),IsGecko:s.Contains('gecko/'),IsSafari:s.Contains(' applewebkit/'),IsOpera:!!window.opera,IsAIR:s.Contains(' adobeair/'),IsMac:s.Contains('macintosh')};(function(A){A.IsGeckoLike=(A.IsGecko||A.IsSafari||A.IsOpera);if (A.IsGecko){var B=s.match(/gecko\/(\d+)/)[1];A.IsGecko10=((B<20051111)||(/rv:1\.7/.test(s)));A.IsGecko19=/rv:1\.9/.test(s);}else A.IsGecko10=false;})(FCKBrowserInfo);
+var s=navigator.userAgent.toLowerCase();var FCKBrowserInfo={IsIE:/*@cc_on!@*/false,IsIE7:/*@cc_on!@*/false&&(parseInt(s.match(/msie (\d+)/)[1],10)>=7),IsIE6:/*@cc_on!@*/false&&(parseInt(s.match(/msie (\d+)/)[1],10)>=6),IsSafari:s.Contains(' applewebkit/'),IsOpera:!!window.opera,IsAIR:s.Contains(' adobeair/'),IsMac:s.Contains('macintosh')};(function(A){A.IsGecko=(navigator.product=='Gecko')&&!A.IsSafari&&!A.IsOpera;A.IsGeckoLike=(A.IsGecko||A.IsSafari||A.IsOpera);if (A.IsGecko){var B=s.match(/rv:(\d+\.\d+)/);var C=B&&parseFloat(B[1]);if (C){A.IsGecko10=(C<1.8);A.IsGecko19=(C>1.8);}}})(FCKBrowserInfo);
 var FCKURLParams={};(function(){var A=document.location.search.substr(1).split('&');for (var i=0;i<A.length;i++){var B=A[i].split('=');var C=decodeURIComponent(B[0]);var D=decodeURIComponent(B[1]);FCKURLParams[C]=D;}})();
 var FCKEvents=function(A){this.Owner=A;this._RegisteredEvents={};};FCKEvents.prototype.AttachEvent=function(A,B){var C;if (!(C=this._RegisteredEvents[A])) this._RegisteredEvents[A]=[B];else{if (C.IndexOf(B)==-1) C.push(B);}};FCKEvents.prototype.FireEvent=function(A,B){var C=true;var D=this._RegisteredEvents[A];if (D){for (var i=0;i<D.length;i++){try{C=(D[i](this.Owner,B)&&C);}catch(e){if (e.number!=-2146823277) throw e;}}};return C;};
 var FCKDataProcessor=function(){};FCKDataProcessor.prototype={ConvertToHtml:function(A){if (FCKConfig.FullPage){FCK.DocTypeDeclaration=A.match(FCKRegexLib.DocTypeTag);if (!FCKRegexLib.HasBodyTag.test(A)) A='<body>'+A+'</body>';if (!FCKRegexLib.HtmlOpener.test(A)) A='<html dir="'+FCKConfig.ContentLangDirection+'">'+A+'</html>';if (!FCKRegexLib.HeadOpener.test(A)) A=A.replace(FCKRegexLib.HtmlOpener,'$&<head><title></title></head>');return A;}else{var B=FCKConfig.DocType+'<html dir="'+FCKConfig.ContentLangDirection+'"';if (FCKBrowserInfo.IsIE&&FCKConfig.DocType.length>0&&!FCKRegexLib.Html4DocType.test(FCKConfig.DocType)) B+=' style="overflow-y: scroll"';B+='><head><title></title></head><body'+FCKConfig.GetBodyAttributes()+'>'+A+'</body></html>';return B;}},ConvertToDataFormat:function(A,B,C,D){var E=FCKXHtml.GetXHTML(A,!B,D);if (C&&FCKRegexLib.EmptyOutParagraph.test(E)) return '';return E;},FixHtml:function(A){return A;}};
-var FCK={Name:FCKURLParams['InstanceName'],Status:0,EditMode:0,Toolbar:null,HasFocus:false,DataProcessor:new FCKDataProcessor(),GetInstanceObject:(function(){var w=window;return function(name){return w[name];}})(),AttachToOnSelectionChange:function(A){this.Events.AttachEvent('OnSelectionChange',A);},GetLinkedFieldValue:function(){return this.LinkedField.value;},GetParentForm:function(){return this.LinkedField.form;},StartupValue:'',IsDirty:function(){if (this.EditMode==1) return (this.StartupValue!=this.EditingArea.Textarea.value);else{if (!this.EditorDocument) return false;return (this.StartupValue!=this.EditorDocument.body.innerHTML);}},ResetIsDirty:function(){if (this.EditMode==1) this.StartupValue=this.EditingArea.Textarea.value;else if (this.EditorDocument.body) this.StartupValue=this.EditorDocument.body.innerHTML;},StartEditor:function(){this.TempBaseTag=FCKConfig.BaseHref.length>0?'<base href="'+FCKConfig.BaseHref+'" _fcktemp="true"></base>':'';var A=FCK.KeystrokeHandler=new FCKKeystrokeHandler();A.OnKeystroke=_FCK_KeystrokeHandler_OnKeystroke;A.SetKeystrokes(FCKConfig.Keystrokes);if (FCKBrowserInfo.IsIE7){if ((CTRL+86/*V*/) in A.Keystrokes) A.SetKeystrokes([CTRL+86,true]);if ((SHIFT+45/*INS*/) in A.Keystrokes) A.SetKeystrokes([SHIFT+45,true]);};A.SetKeystrokes([CTRL+8,true]);this.EditingArea=new FCKEditingArea(document.getElementById('xEditingArea'));this.EditingArea.FFSpellChecker=FCKConfig.FirefoxSpellChecker;this.SetData(this.GetLinkedFieldValue(),true);FCKTools.AddEventListener(document,"keydown",this._TabKeyHandler);this.AttachToOnSelectionChange(_FCK_PaddingNodeListener);if (FCKBrowserInfo.IsGecko) this.AttachToOnSelectionChange(this._ExecCheckEmptyBlock);},Focus:function(){FCK.EditingArea.Focus();},SetStatus:function(A){this.Status=A;if (A==1){FCKFocusManager.AddWindow(window,true);if (FCKBrowserInfo.IsIE) FCKFocusManager.AddWindow(window.frameElement,true);if (FCKConfig.StartupFocus) FCK.Focus();};this.Events.FireEvent('OnStatusChange',A);},FixBody:function(){var A=FCKConfig.EnterMode;if (A!='p'&&A!='div') return;var B=this.EditorDocument;if (!B) return;var C=B.body;if (!C) return;FCKDomTools.TrimNode(C);var D=C.firstChild;var E;while (D){var F=false;switch (D.nodeType){case 1:var G=D.nodeName.toLowerCase();if (!FCKListsLib.BlockElements[G]&&G!='li'&&!D.getAttribute('_fckfakelement')&&D.getAttribute('_moz_dirty')==null) F=true;break;case 3:if (E||D.nodeValue.Trim().length>0) F=true;};if (F){var H=D.parentNode;if (!E) E=H.insertBefore(B.createElement(A),D);E.appendChild(H.removeChild(D));D=E.nextSibling;}else{if (E){FCKDomTools.TrimNode(E);E=null;};D=D.nextSibling;}};if (E) FCKDomTools.TrimNode(E);},GetData:function(A){if (FCK.EditMode==1) return FCK.EditingArea.Textarea.value;this.FixBody();var B=FCK.EditorDocument;if (!B) return null;var C=FCKConfig.FullPage;var D=FCK.DataProcessor.ConvertToDataFormat(C?B.documentElement:B.body,!C,FCKConfig.IgnoreEmptyParagraphValue,A);D=FCK.ProtectEventsRestore(D);if (FCKBrowserInfo.IsIE) D=D.replace(FCKRegexLib.ToReplace,'$1');if (C){if (FCK.DocTypeDeclaration&&FCK.DocTypeDeclaration.length>0) D=FCK.DocTypeDeclaration+'\n'+D;if (FCK.XmlDeclaration&&FCK.XmlDeclaration.length>0) D=FCK.XmlDeclaration+'\n'+D;};return FCKConfig.ProtectedSource.Revert(D);},UpdateLinkedField:function(){var A=FCK.GetXHTML(FCKConfig.FormatOutput);if (FCKConfig.HtmlEncodeOutput) A=FCKTools.HTMLEncode(A);FCK.LinkedField.value=A;FCK.Events.FireEvent('OnAfterLinkedFieldUpdate');},RegisteredDoubleClickHandlers:{},OnDoubleClick:function(A){var B=FCK.RegisteredDoubleClickHandlers[A.tagName.toUpperCase()];if (B){for (var i=0;i<B.length;i++) B[i](A);};B=FCK.RegisteredDoubleClickHandlers['*'];if (B){for (var i=0;i<B.length;i++) B[i](A);}},RegisterDoubleClickHandler:function(A,B){var C=B||'*';C=C.toUpperCase();var D;if (!(D=FCK.RegisteredDoubleClickHandlers[C])) FCK.RegisteredDoubleClickHandlers[C]=[A];else{if (D.IndexOf(A)==-1) D.push(A);}},OnAfterSetHTML:function(){FCKDocumentProcessor.Process(FCK.EditorDocument);FCKUndo.SaveUndoStep();FCK.Events.FireEvent('OnSelectionChange');FCK.Events.FireEvent('OnAfterSetHTML');},ProtectUrls:function(A){A=A.replace(FCKRegexLib.ProtectUrlsA,'$& _fcksavedurl=$1');A=A.replace(FCKRegexLib.ProtectUrlsImg,'$& _fcksavedurl=$1');A=A.replace(FCKRegexLib.ProtectUrlsArea,'$& _fcksavedurl=$1');return A;},ProtectEvents:function(A){return A.replace(FCKRegexLib.TagsWithEvent,_FCK_ProtectEvents_ReplaceTags);},ProtectEventsRestore:function(A){return A.replace(FCKRegexLib.ProtectedEvents,_FCK_ProtectEvents_RestoreEvents);},ProtectTags:function(A){var B=FCKConfig.ProtectedTags;if (FCKBrowserInfo.IsIE) B+=B.length>0?'|ABBR|XML|EMBED|OBJECT':'ABBR|XML|EMBED|OBJECT';var C;if (B.length>0){C=new RegExp('<('+B+')(?!\w|:)','gi');A=A.replace(C,'<FCK:$1');C=new RegExp('<\/('+B+')>','gi');A=A.replace(C,'<\/FCK:$1>');};B='META';if (FCKBrowserInfo.IsIE) B+='|HR';C=new RegExp('<(('+B+')(?=\\s|>|/)[\\s\\S]*?)/?>','gi');A=A.replace(C,'<FCK:$1 />');return A;},SetData:function(A,B){this.EditingArea.Mode=FCK.EditMode;if (FCKBrowserInfo.IsIE&&FCK.EditorDocument){FCK.EditorDocument.detachEvent("onselectionchange",Doc_OnSelectionChange);};if (FCK.EditMode==0){this._ForceResetIsDirty=(B===true);A=FCKConfig.ProtectedSource.Protect(A);A=FCK.DataProcessor.ConvertToHtml(A);A=A.replace(FCKRegexLib.InvalidSelfCloseTags,'$1></$2>');A=FCK.ProtectEvents(A);A=FCK.ProtectUrls(A);A=FCK.ProtectTags(A);if (FCK.TempBaseTag.length>0&&!FCKRegexLib.HasBaseTag.test(A)) A=A.replace(FCKRegexLib.HeadOpener,'$&'+FCK.TempBaseTag);var C='';if (!FCKConfig.FullPage) C+=_FCK_GetEditorAreaStyleTags();if (FCKBrowserInfo.IsIE) C+=FCK._GetBehaviorsStyle();else if (FCKConfig.ShowBorders) C+=FCKTools.GetStyleHtml(FCK_ShowTableBordersCSS,true);C+=FCKTools.GetStyleHtml(FCK_InternalCSS,true);A=A.replace(FCKRegexLib.HeadCloser,C+'$&');this.EditingArea.OnLoad=_FCK_EditingArea_OnLoad;this.EditingArea.Start(A);}else{FCK.EditorWindow=null;FCK.EditorDocument=null;FCKDomTools.PaddingNode=null;this.EditingArea.OnLoad=null;this.EditingArea.Start(A);this.EditingArea.Textarea._FCKShowContextMenu=true;FCK.EnterKeyHandler=null;if (B) this.ResetIsDirty();FCK.KeystrokeHandler.AttachToElement(this.EditingArea.Textarea);this.EditingArea.Textarea.focus();FCK.Events.FireEvent('OnAfterSetHTML');};if (FCKBrowserInfo.IsGecko) window.onresize();},RedirectNamedCommands:{},ExecuteNamedCommand:function(A,B,C,D){if (!D) FCKUndo.SaveUndoStep();if (!C&&FCK.RedirectNamedCommands[A]!=null) FCK.ExecuteRedirectedNamedCommand(A,B);else{FCK.Focus();FCK.EditorDocument.execCommand(A,false,B);FCK.Events.FireEvent('OnSelectionChange');};if (!D) FCKUndo.SaveUndoStep();},GetNamedCommandState:function(A){try{if (FCKBrowserInfo.IsSafari&&FCK.EditorWindow&&A.IEquals('Paste')) return 0;if (!FCK.EditorDocument.queryCommandEnabled(A)) return -1;else{return FCK.EditorDocument.queryCommandState(A)?1:0;}}catch (e){return 0;}},GetNamedCommandValue:function(A){var B='';var C=FCK.GetNamedCommandState(A);if (C==-1) return null;try{B=this.EditorDocument.queryCommandValue(A);}catch(e) {};return B?B:'';},Paste:function(A){if (FCK.Status!=2||!FCK.Events.FireEvent('OnPaste')) return false;return A||FCK._ExecPaste();},PasteFromWord:function(){FCKDialog.OpenDialog('FCKDialog_Paste',FCKLang.PasteFromWord,'dialog/fck_paste.html',400,330,'Word');},Preview:function(){var A;if (FCKConfig.FullPage){if (FCK.TempBaseTag.length>0) A=FCK.TempBaseTag+FCK.GetXHTML();else A=FCK.GetXHTML();}else{A=FCKConfig.DocType+'<html dir="'+FCKConfig.ContentLangDirection+'"><head>'+FCK.TempBaseTag+'<title>'+FCKLang.Preview+'</title>'+_FCK_GetEditorAreaStyleTags()+'</head><body'+FCKConfig.GetBodyAttributes()+'>'+FCK.GetXHTML()+'</body></html>';};var B=FCKConfig.ScreenWidth*0.8;var C=FCKConfig.ScreenHeight*0.7;var D=(FCKConfig.ScreenWidth-B)/2;var E='';if (FCK_IS_CUSTOM_DOMAIN&&FCKBrowserInfo.IsIE){window._FCKHtmlToLoad=A;E='javascript:void( (function(){document.open() ;document.domain="'+document.domain+'" ;document.write( window.opener._FCKHtmlToLoad );document.close() ;window.opener._FCKHtmlToLoad = null ;})() )';};var F=window.open(E,null,'toolbar=yes,location=no,status=yes,menubar=yes,scrollbars=yes,resizable=yes,width='+B+',height='+C+',left='+D);if (!FCK_IS_CUSTOM_DOMAIN||!FCKBrowserInfo.IsIE){F.document.write(A);F.document.close();}},SwitchEditMode:function(A){var B=(FCK.EditMode==0);var C=FCK.IsDirty();var D;if (B){FCKCommands.GetCommand('ShowBlocks').SaveState();if (!A&&FCKBrowserInfo.IsIE) FCKUndo.SaveUndoStep();D=FCK.GetXHTML(FCKConfig.FormatSource);if (D==null) return false;}else D=this.EditingArea.Textarea.value;FCK.EditMode=B?1:0;FCK.SetData(D,!C);FCK.Focus();FCKTools.RunFunction(FCK.ToolbarSet.RefreshModeState,FCK.ToolbarSet);return true;},InsertElement:function(A){if (typeof A=='string') A=this.EditorDocument.createElement(A);var B=A.nodeName.toLowerCase();FCKSelection.Restore();var C=new FCKDomRange(this.EditorWindow);if (FCKListsLib.BlockElements[B]!=null){C.SplitBlock();C.InsertNode(A);var D=FCKDomTools.GetNextSourceElement(A,false,null,['hr','br','param','img','area','input'],true);if (!D&&FCKConfig.EnterMode!='br'){D=this.EditorDocument.body.appendChild(this.EditorDocument.createElement(FCKConfig.EnterMode));if (FCKBrowserInfo.IsGeckoLike) FCKTools.AppendBogusBr(D);};if (FCKListsLib.EmptyElements[B]==null) C.MoveToElementEditStart(A);else if (D) C.MoveToElementEditStart(D);else C.MoveToPosition(A,4);if (FCKBrowserInfo.IsGecko){if (D) D.scrollIntoView(false);A.scrollIntoView(false);}}else{C.MoveToSelection();C.DeleteContents();C.InsertNode(A);C.SetStart(A,4);C.SetEnd(A,4);};C.Select();C.Release();this.Focus();return A;},_InsertBlockElement:function(A){},_IsFunctionKey:function(A){if (A>=16&&A<=20) return true;if (A==27||(A>=33&&A<=40)) return true;if (A==45) return true;return false;},_KeyDownListener:function(A){if (!A) A=FCK.EditorWindow.event;if (FCK.EditorWindow){if (!FCK._IsFunctionKey(A.keyCode)&&!(A.ctrlKey||A.metaKey)&&!(A.keyCode==46)) FCK._KeyDownUndo();};return true;},_KeyDownUndo:function(){if (!FCKUndo.Typing){FCKUndo.SaveUndoStep();FCKUndo.Typing=true;FCK.Events.FireEvent("OnSelectionChange");};FCKUndo.TypesCount++;FCKUndo.Changed=1;if (FCKUndo.TypesCount>FCKUndo.MaxTypes){FCKUndo.TypesCount=0;FCKUndo.SaveUndoStep();}},_TabKeyHandler:function(A){if (!A) A=window.event;var B=A.keyCode;if (B==9&&FCK.EditMode!=0){if (FCKBrowserInfo.IsIE){var C=document.selection.createRange();if (C.parentElement()!=FCK.EditingArea.Textarea) return true;C.text='\t';C.select();}else{var a=[];var D=FCK.EditingArea.Textarea;var E=D.selectionStart;var F=D.selectionEnd;a.push(D.value.substr(0,E));a.push('\t');a.push(D.value.substr(F));D.value=a.join('');D.setSelectionRange(E+1,E+1);};if (A.preventDefault) return A.preventDefault();return A.returnValue=false;};return true;}};FCK.Events=new FCKEvents(FCK);FCK.GetHTML=FCK.GetXHTML=FCK.GetData;FCK.SetHTML=FCK.SetData;FCK.InsertElementAndGetIt=FCK.CreateElement=FCK.InsertElement;function _FCK_ProtectEvents_ReplaceTags(A){return A.replace(FCKRegexLib.EventAttributes,_FCK_ProtectEvents_ReplaceEvents);};function _FCK_ProtectEvents_ReplaceEvents(A,B){return ' '+B+'_fckprotectedatt="'+encodeURIComponent(A)+'"';};function _FCK_ProtectEvents_RestoreEvents(A,B){return decodeURIComponent(B);};function _FCK_MouseEventsListener(A){if (!A) A=window.event;if (A.type=='mousedown') FCK.MouseDownFlag=true;else if (A.type=='mouseup') FCK.MouseDownFlag=false;else if (A.type=='mousemove') FCK.Events.FireEvent('OnMouseMove',A);};function _FCK_PaddingNodeListener(){if (FCKConfig.EnterMode.IEquals('br')) return;FCKDomTools.EnforcePaddingNode(FCK.EditorDocument,FCKConfig.EnterMode);if (!FCKBrowserInfo.IsIE&&FCKDomTools.PaddingNode){var A=FCKSelection.GetSelection();if (A&&A.rangeCount==1){var B=A.getRangeAt(0);if (B.collapsed&&B.startContainer==FCK.EditorDocument.body&&B.startOffset==0){B.selectNodeContents(FCKDomTools.PaddingNode);B.collapse(true);A.removeAllRanges();A.addRange(B);}}}else if (FCKDomTools.PaddingNode){var C=FCKSelection.GetParentElement();var D=FCKDomTools.PaddingNode;if (C&&C.nodeName.IEquals('body')){if (FCK.EditorDocument.body.childNodes.length==1&&FCK.EditorDocument.body.firstChild==D){var B=FCK.EditorDocument.body.createTextRange();var F=false;if (!D.childNodes.firstChild){D.appendChild(FCKTools.GetElementDocument(D).createTextNode('\ufeff'));F=true;};B.moveToElementText(D);B.select();if (F) B.pasteHTML('');}}}};function _FCK_EditingArea_OnLoad(){FCK.EditorWindow=FCK.EditingArea.Window;FCK.EditorDocument=FCK.EditingArea.Document;FCK.InitializeBehaviors();FCK.MouseDownFlag=false;FCKTools.AddEventListener(FCK.EditorDocument,'mousemove',_FCK_MouseEventsListener);FCKTools.AddEventListener(FCK.EditorDocument,'mousedown',_FCK_MouseEventsListener);FCKTools.AddEventListener(FCK.EditorDocument,'mouseup',_FCK_MouseEventsListener);if (FCKBrowserInfo.IsSafari){var A=function(evt){if (!(evt.ctrlKey||evt.metaKey)) return;if (FCK.EditMode!=0) return;switch (evt.keyCode){case 89:FCKUndo.Redo();break;case 90:FCKUndo.Undo();break;}};FCKTools.AddEventListener(FCK.EditorDocument,'keyup',A);};FCK.EnterKeyHandler=new FCKEnterKey(FCK.EditorWindow,FCKConfig.EnterMode,FCKConfig.ShiftEnterMode,FCKConfig.TabSpaces);FCK.KeystrokeHandler.AttachToElement(FCK.EditorDocument);if (FCK._ForceResetIsDirty) FCK.ResetIsDirty();if (FCKBrowserInfo.IsIE&&FCK.HasFocus) FCK.EditorDocument.body.setActive();FCK.OnAfterSetHTML();FCKCommands.GetCommand('ShowBlocks').RestoreState();if (FCK.Status!=0) return;FCK.SetStatus(1);};function _FCK_GetEditorAreaStyleTags(){return FCKTools.GetStyleHtml(FCKConfig.EditorAreaCSS)+FCKTools.GetStyleHtml(FCKConfig.EditorAreaStyles);};function _FCK_KeystrokeHandler_OnKeystroke(A,B){if (FCK.Status!=2) return false;if (FCK.EditMode==0){switch (B){case 'Paste':return!FCK.Paste();case 'Cut':FCKUndo.SaveUndoStep();return false;}}else{if (B.Equals('Paste','Undo','Redo','SelectAll','Cut')) return false;};var C=FCK.Commands.GetCommand(B);if (C.GetState()==-1) return false;return (C.Execute.apply(C,FCKTools.ArgumentsToArray(arguments,2))!==false);};(function(){var A=window.parent.document;var B=A.getElementById(FCK.Name);var i=0;while (B||i==0){if (B&&B.tagName.toLowerCase().Equals('input','textarea')){FCK.LinkedField=B;break;};B=A.getElementsByName(FCK.Name)[i++];}})();var FCKTempBin={Elements:[],AddElement:function(A){var B=this.Elements.length;this.Elements[B]=A;return B;},RemoveElement:function(A){var e=this.Elements[A];this.Elements[A]=null;return e;},Reset:function(){var i=0;while (i<this.Elements.length) this.Elements[i++]=null;this.Elements.length=0;}};var FCKFocusManager=FCK.FocusManager={IsLocked:false,AddWindow:function(A,B){var C;if (FCKBrowserInfo.IsIE) C=A.nodeType==1?A:A.frameElement?A.frameElement:A.document;else if (FCKBrowserInfo.IsSafari) C=A;else C=A.document;FCKTools.AddEventListener(C,'blur',FCKFocusManager_Win_OnBlur);FCKTools.AddEventListener(C,'focus',B?FCKFocusManager_Win_OnFocus_Area:FCKFocusManager_Win_OnFocus);},RemoveWindow:function(A){if (FCKBrowserInfo.IsIE) oTarget=A.nodeType==1?A:A.frameElement?A.frameElement:A.document;else oTarget=A.document;FCKTools.RemoveEventListener(oTarget,'blur',FCKFocusManager_Win_OnBlur);FCKTools.RemoveEventListener(oTarget,'focus',FCKFocusManager_Win_OnFocus_Area);FCKTools.RemoveEventListener(oTarget,'focus',FCKFocusManager_Win_OnFocus);},Lock:function(){this.IsLocked=true;},Unlock:function(){if (this._HasPendingBlur) FCKFocusManager._Timer=window.setTimeout(FCKFocusManager_FireOnBlur,100);this.IsLocked=false;},_ResetTimer:function(){this._HasPendingBlur=false;if (this._Timer){window.clearTimeout(this._Timer);delete this._Timer;}}};function FCKFocusManager_Win_OnBlur(){if (typeof(FCK)!='undefined'&&FCK.HasFocus){FCKFocusManager._ResetTimer();FCKFocusManager._Timer=window.setTimeout(FCKFocusManager_FireOnBlur,100);}};function FCKFocusManager_FireOnBlur(){if (FCKFocusManager.IsLocked) FCKFocusManager._HasPendingBlur=true;else{FCK.HasFocus=false;FCK.Events.FireEvent("OnBlur");}};function FCKFocusManager_Win_OnFocus_Area(){if (FCKFocusManager._IsFocusing) return;FCKFocusManager._IsFocusing=true;FCK.Focus();FCKFocusManager_Win_OnFocus();FCKTools.RunFunction(function(){delete FCKFocusManager._IsFocusing;});};function FCKFocusManager_Win_OnFocus(){FCKFocusManager._ResetTimer();if (!FCK.HasFocus&&!FCKFocusManager.IsLocked){FCK.HasFocus=true;FCK.Events.FireEvent("OnFocus");}};
-FCK.Description="FCKeditor for Gecko Browsers";FCK.InitializeBehaviors=function(){if (window.onresize) window.onresize();FCKFocusManager.AddWindow(this.EditorWindow);this.ExecOnSelectionChange=function(){FCK.Events.FireEvent("OnSelectionChange");};this._ExecDrop=function(evt){if (FCK.MouseDownFlag){FCK.MouseDownFlag=false;return;};if (FCKConfig.ForcePasteAsPlainText){if (evt.dataTransfer){var A=evt.dataTransfer.getData('Text');A=FCKTools.HTMLEncode(A);A=FCKTools.ProcessLineBreaks(window,FCKConfig,A);FCK.InsertHtml(A);}else if (FCKConfig.ShowDropDialog) FCK.PasteAsPlainText();evt.preventDefault();evt.stopPropagation();}};this._ExecCheckCaret=function(evt){if (FCK.EditMode!=0) return;if (evt.type=='keypress'){var B=evt.keyCode;if (B<33||B>40) return;};var C=function(H){if (H.nodeType!=1) return false;var D=H.tagName.toLowerCase();return (FCKListsLib.BlockElements[D]||FCKListsLib.EmptyElements[D]);};var E=function(){var F=FCKSelection.GetSelection();var G=F.getRangeAt(0);if (!G||!G.collapsed) return;var H=G.endContainer;if (H.nodeType!=3) return;if (H.nodeValue.length!=G.endOffset) return;var I=H.parentNode.tagName.toLowerCase();if (!(I=='a'||String(H.parentNode.contentEditable)=='false'||(!(FCKListsLib.BlockElements[I]||FCKListsLib.NonEmptyBlockElements[I])&&B==35))) return;var J=FCKTools.GetNextTextNode(H,H.parentNode,C);if (J) return;G=FCK.EditorDocument.createRange();J=FCKTools.GetNextTextNode(H,H.parentNode.parentNode,C);if (J){if (FCKBrowserInfo.IsOpera&&B==37) return;G.setStart(J,0);G.setEnd(J,0);}else{while (H.parentNode&&H.parentNode!=FCK.EditorDocument.body&&H.parentNode!=FCK.EditorDocument.documentElement&&H==H.parentNode.lastChild&&(!FCKListsLib.BlockElements[H.parentNode.tagName.toLowerCase()]&&!FCKListsLib.NonEmptyBlockElements[H.parentNode.tagName.toLowerCase()])) H=H.parentNode;if (FCKListsLib.BlockElements[I]||FCKListsLib.EmptyElements[I]||H==FCK.EditorDocument.body){G.setStart(H,H.childNodes.length);G.setEnd(H,H.childNodes.length);}else{var K=H.nextSibling;while (K){if (K.nodeType!=1){K=K.nextSibling;continue;};var L=K.tagName.toLowerCase();if (FCKListsLib.BlockElements[L]||FCKListsLib.EmptyElements[L]||FCKListsLib.NonEmptyBlockElements[L]) break;K=K.nextSibling;};var M=FCK.EditorDocument.createTextNode('');if (K) H.parentNode.insertBefore(M,K);else H.parentNode.appendChild(M);G.setStart(M,0);G.setEnd(M,0);}};F.removeAllRanges();F.addRange(G);FCK.Events.FireEvent("OnSelectionChange");};setTimeout(E,1);};this.ExecOnSelectionChangeTimer=function(){if (FCK.LastOnChangeTimer) window.clearTimeout(FCK.LastOnChangeTimer);FCK.LastOnChangeTimer=window.setTimeout(FCK.ExecOnSelectionChange,100);};this.EditorDocument.addEventListener('mouseup',this.ExecOnSelectionChange,false);this.EditorDocument.addEventListener('keyup',this.ExecOnSelectionChangeTimer,false);this._DblClickListener=function(e){FCK.OnDoubleClick(e.target);e.stopPropagation();};this.EditorDocument.addEventListener('dblclick',this._DblClickListener,true);this.EditorDocument.addEventListener('keydown',this._KeyDownListener,false);if (FCKBrowserInfo.IsGecko){this.EditorWindow.addEventListener('dragdrop',this._ExecDrop,true);}else if (FCKBrowserInfo.IsSafari){var N=function(evt){ if (!FCK.MouseDownFlag) evt.returnValue=false;};this.EditorDocument.addEventListener('dragenter',N,true);this.EditorDocument.addEventListener('dragover',N,true);this.EditorDocument.addEventListener('drop',this._ExecDrop,true);this.EditorDocument.addEventListener('mousedown',function(ev){var O=ev.srcElement;if (O.nodeName.IEquals('IMG','HR','INPUT','TEXTAREA','SELECT')){FCKSelection.SelectNode(O);}},true);this.EditorDocument.addEventListener('mouseup',function(ev){if (ev.srcElement.nodeName.IEquals('INPUT','TEXTAREA','SELECT')) ev.preventDefault()},true);this.EditorDocument.addEventListener('click',function(ev){if (ev.srcElement.nodeName.IEquals('INPUT','TEXTAREA','SELECT')) ev.preventDefault()},true);};if (FCKBrowserInfo.IsGecko||FCKBrowserInfo.IsOpera){this.EditorDocument.addEventListener('keypress',this._ExecCheckCaret,false);this.EditorDocument.addEventListener('click',this._ExecCheckCaret,false);};FCK.ContextMenu._InnerContextMenu.SetMouseClickWindow(FCK.EditorWindow);FCK.ContextMenu._InnerContextMenu.AttachToElement(FCK.EditorDocument);};FCK.MakeEditable=function(){this.EditingArea.MakeEditable();};function Document_OnContextMenu(e){if (!e.target._FCKShowContextMenu) e.preventDefault();};document.oncontextmenu=Document_OnContextMenu;FCK._BaseGetNamedCommandState=FCK.GetNamedCommandState;FCK.GetNamedCommandState=function(A){switch (A){case 'Unlink':return FCKSelection.HasAncestorNode('A')?0:-1;default:return FCK._BaseGetNamedCommandState(A);}};FCK.RedirectNamedCommands={Print:true,Paste:true};FCK.ExecuteRedirectedNamedCommand=function(A,B){switch (A){case 'Print':FCK.EditorWindow.print();break;case 'Paste':try{if (FCKBrowserInfo.IsSafari) throw '';if (FCK.Paste()) FCK.ExecuteNamedCommand('Paste',null,true);}catch (e)	{ FCKDialog.OpenDialog('FCKDialog_Paste',FCKLang.Paste,'dialog/fck_paste.html',400,330,'Security');};break;default:FCK.ExecuteNamedCommand(A,B);}};FCK._ExecPaste=function(){FCKUndo.SaveUndoStep();if (FCKConfig.ForcePasteAsPlainText){FCK.PasteAsPlainText();return false;};return true;};FCK.InsertHtml=function(A){A=FCKConfig.ProtectedSource.Protect(A);A=FCK.ProtectEvents(A);A=FCK.ProtectUrls(A);A=FCK.ProtectTags(A);FCKUndo.SaveUndoStep();this.EditorDocument.execCommand('inserthtml',false,A);this.Focus();FCKDocumentProcessor.Process(FCK.EditorDocument);this.Events.FireEvent("OnSelectionChange");};FCK.PasteAsPlainText=function(){FCKTools.RunFunction(FCKDialog.OpenDialog,FCKDialog,['FCKDialog_Paste',FCKLang.PasteAsText,'dialog/fck_paste.html',400,330,'PlainText']);};FCK.GetClipboardHTML=function(){return '';};FCK.CreateLink=function(A,B){var C=[];FCK.ExecuteNamedCommand('Unlink',null,false,!!B);if (A.length>0){var D='javascript:void(0);/*'+(new Date().getTime())+'*/';FCK.ExecuteNamedCommand('CreateLink',D,false,!!B);var E=this.EditorDocument.evaluate("//a[@href='"+D+"']",this.EditorDocument.body,null,XPathResult.UNORDERED_NODE_SNAPSHOT_TYPE,null);for (var i=0;i<E.snapshotLength;i++){var F=E.snapshotItem(i);F.href=A;if (D==F.innerHTML) F.innerHTML='';C.push(F);}};return C;};FCK._FillEmptyBlock=function(A){if (!A||A.nodeType!=1) return;var B=A.tagName.toLowerCase();if (B!='p'&&B!='div') return;if (A.firstChild) return;FCKTools.AppendBogusBr(A);};FCK._ExecCheckEmptyBlock=function(){FCK._FillEmptyBlock(FCK.EditorDocument.body.firstChild);var A=FCKSelection.GetSelection();if (!A||A.rangeCount<1) return;var B=A.getRangeAt(0);FCK._FillEmptyBlock(B.startContainer);};
-var FCKConfig=FCK.Config={};if (document.location.protocol=='file:'){FCKConfig.BasePath=decodeURIComponent(document.location.pathname.substr(1));FCKConfig.BasePath=FCKConfig.BasePath.replace(/\\/gi, '/');var sFullProtocol=document.location.href.match(/^(file\:\/{2,3})/)[1];if (FCKBrowserInfo.IsOpera) sFullProtocol+='localhost/';FCKConfig.BasePath=sFullProtocol+FCKConfig.BasePath.substring(0,FCKConfig.BasePath.lastIndexOf('/')+1);FCKConfig.FullBasePath=FCKConfig.BasePath;}else{FCKConfig.BasePath=document.location.pathname.substring(0,document.location.pathname.lastIndexOf('/')+1);FCKConfig.FullBasePath=document.location.protocol+'//'+document.location.host+FCKConfig.BasePath;};FCKConfig.EditorPath=FCKConfig.BasePath.replace(/editor\/$/,'');try{FCKConfig.ScreenWidth=screen.width;FCKConfig.ScreenHeight=screen.height;}catch (e){FCKConfig.ScreenWidth=800;FCKConfig.ScreenHeight=600;};FCKConfig.ProcessHiddenField=function(){this.PageConfig={};var A=window.parent.document.getElementById(FCK.Name+'___Config');if (!A) return;var B=A.value.split('&');for (var i=0;i<B.length;i++){if (B[i].length==0) continue;var C=B[i].split('=');var D=decodeURIComponent(C[0]);var E=decodeURIComponent(C[1]);if (D=='CustomConfigurationsPath') FCKConfig[D]=E;else if (E.toLowerCase()=="true") this.PageConfig[D]=true;else if (E.toLowerCase()=="false") this.PageConfig[D]=false;else if (E.length>0&&!isNaN(E)) this.PageConfig[D]=parseInt(E,10);else this.PageConfig[D]=E;}};function FCKConfig_LoadPageConfig(){var A=FCKConfig.PageConfig;for (var B in A) FCKConfig[B]=A[B];};function FCKConfig_PreProcess(){var A=FCKConfig;if (A.AllowQueryStringDebug){try{if ((/fckdebug=true/i).test(window.top.location.search)) A.Debug=true;}catch (e) {/*Ignore it. Much probably we are inside a FRAME where the "top" is in another domain (security error).*/}};if (!A.PluginsPath.EndsWith('/')) A.PluginsPath+='/';var B=A.ToolbarComboPreviewCSS;if (!B||B.length==0) A.ToolbarComboPreviewCSS=A.EditorAreaCSS;A.RemoveAttributesArray=(A.RemoveAttributes||'').split(',');if (!FCKConfig.SkinEditorCSS||FCKConfig.SkinEditorCSS.length==0) FCKConfig.SkinEditorCSS=FCKConfig.SkinPath+'fck_editor.css';if (!FCKConfig.SkinDialogCSS||FCKConfig.SkinDialogCSS.length==0) FCKConfig.SkinDialogCSS=FCKConfig.SkinPath+'fck_dialog.css';};FCKConfig.ToolbarSets={};FCKConfig.Plugins={};FCKConfig.Plugins.Items=[];FCKConfig.Plugins.Add=function(A,B,C){FCKConfig.Plugins.Items.AddItem([A,B,C]);};FCKConfig.ProtectedSource={};FCKConfig.ProtectedSource._CodeTag=(new Date()).valueOf();FCKConfig.ProtectedSource.RegexEntries=[/<!--[\s\S]*?-->/g,/<script[\s\S]*?<\/script>/gi,/<noscript[\s\S]*?<\/noscript>/gi];FCKConfig.ProtectedSource.Add=function(A){this.RegexEntries.AddItem(A);};FCKConfig.ProtectedSource.Protect=function(A){var B=this._CodeTag;function _Replace(protectedSource){var C=FCKTempBin.AddElement(protectedSource);return '<!--{'+B+C+'}-->';};for (var i=0;i<this.RegexEntries.length;i++){A=A.replace(this.RegexEntries[i],_Replace);};return A;};FCKConfig.ProtectedSource.Revert=function(A,B){function _Replace(m,opener,index){var C=B?FCKTempBin.RemoveElement(index):FCKTempBin.Elements[index];return FCKConfig.ProtectedSource.Revert(C,B);};var D=new RegExp("(<|&lt;)!--\\{"+this._CodeTag+"(\\d+)\\}--(>|&gt;)","g");return A.replace(D,_Replace);};FCKConfig.GetBodyAttributes=function(){var A='';if (this.BodyId&&this.BodyId.length>0) A+=' id="'+this.BodyId+'"';if (this.BodyClass&&this.BodyClass.length>0) A+=' class="'+this.BodyClass+'"';return A;};FCKConfig.ApplyBodyAttributes=function(A){if (this.BodyId&&this.BodyId.length>0) A.id=FCKConfig.BodyId;if (this.BodyClass&&this.BodyClass.length>0) A.className+=' '+FCKConfig.BodyClass;};
-var FCKDebug={};FCKDebug._GetWindow=function(){if (!this.DebugWindow||this.DebugWindow.closed) this.DebugWindow=window.open(FCKConfig.BasePath+'fckdebug.html','FCKeditorDebug','menubar=no,scrollbars=yes,resizable=yes,location=no,toolbar=no,width=600,height=500',true);return this.DebugWindow;};FCKDebug.Output=function(A,B,C){if (!FCKConfig.Debug) return;try{this._GetWindow().Output(A,B);}catch (e) {}};FCKDebug.OutputObject=function(A,B){if (!FCKConfig.Debug) return;try{this._GetWindow().OutputObject(A,B);}catch (e) {}};
-var FCKDomTools={MoveChildren:function(A,B,C){if (A==B) return;var D;if (C){while ((D=A.lastChild)) B.insertBefore(A.removeChild(D),B.firstChild);}else{while ((D=A.firstChild)) B.appendChild(A.removeChild(D));}},MoveNode:function(A,B,C){if (C) B.insertBefore(FCKDomTools.RemoveNode(A),B.firstChild);else B.appendChild(FCKDomTools.RemoveNode(A));},TrimNode:function(A){this.LTrimNode(A);this.RTrimNode(A);},LTrimNode:function(A){var B;while ((B=A.firstChild)){if (B.nodeType==3){var C=B.nodeValue.LTrim();var D=B.nodeValue.length;if (C.length==0){A.removeChild(B);continue;}else if (C.length<D){B.splitText(D-C.length);A.removeChild(A.firstChild);}};break;}},RTrimNode:function(A){var B;while ((B=A.lastChild)){if (B.nodeType==3){var C=B.nodeValue.RTrim();var D=B.nodeValue.length;if (C.length==0){B.parentNode.removeChild(B);continue;}else if (C.length<D){B.splitText(C.length);A.lastChild.parentNode.removeChild(A.lastChild);}};break;};if (!FCKBrowserInfo.IsIE&&!FCKBrowserInfo.IsOpera){B=A.lastChild;if (B&&B.nodeType==1&&B.nodeName.toLowerCase()=='br'){B.parentNode.removeChild(B);}}},RemoveNode:function(A,B){if (B){var C;while ((C=A.firstChild)) A.parentNode.insertBefore(A.removeChild(C),A);};return A.parentNode.removeChild(A);},GetFirstChild:function(A,B){if (typeof (B)=='string') B=[B];var C=A.firstChild;while(C){if (C.nodeType==1&&C.tagName.Equals.apply(C.tagName,B)) return C;C=C.nextSibling;};return null;},GetLastChild:function(A,B){if (typeof (B)=='string') B=[B];var C=A.lastChild;while(C){if (C.nodeType==1&&(!B||C.tagName.Equals(B))) return C;C=C.previousSibling;};return null;},GetPreviousSourceElement:function(A,B,C,D){if (!A) return null;if (C&&A.nodeType==1&&A.nodeName.IEquals(C)) return null;if (A.previousSibling) A=A.previousSibling;else return this.GetPreviousSourceElement(A.parentNode,B,C,D);while (A){if (A.nodeType==1){if (C&&A.nodeName.IEquals(C)) break;if (!D||!A.nodeName.IEquals(D)) return A;}else if (B&&A.nodeType==3&&A.nodeValue.RTrim().length>0) break;if (A.lastChild) A=A.lastChild;else return this.GetPreviousSourceElement(A,B,C,D);};return null;},GetNextSourceElement:function(A,B,C,D,E){while((A=this.GetNextSourceNode(A,E))){if (A.nodeType==1){if (C&&A.nodeName.IEquals(C)) break;if (D&&A.nodeName.IEquals(D)) return this.GetNextSourceElement(A,B,C,D);return A;}else if (B&&A.nodeType==3&&A.nodeValue.RTrim().length>0) break;};return null;},GetNextSourceNode:function(A,B,C,D){if (!A) return null;var E;if (!B&&A.firstChild) E=A.firstChild;else{if (D&&A==D) return null;E=A.nextSibling;if (!E&&(!D||D!=A.parentNode)) return this.GetNextSourceNode(A.parentNode,true,C,D);};if (C&&E&&E.nodeType!=C) return this.GetNextSourceNode(E,false,C,D);return E;},GetPreviousSourceNode:function(A,B,C,D){if (!A) return null;var E;if (!B&&A.lastChild) E=A.lastChild;else{if (D&&A==D) return null;E=A.previousSibling;if (!E&&(!D||D!=A.parentNode)) return this.GetPreviousSourceNode(A.parentNode,true,C,D);};if (C&&E&&E.nodeType!=C) return this.GetPreviousSourceNode(E,false,C,D);return E;},InsertAfterNode:function(A,B){return A.parentNode.insertBefore(B,A.nextSibling);},GetParents:function(A){var B=[];while (A){B.unshift(A);A=A.parentNode;};return B;},GetCommonParents:function(A,B){var C=this.GetParents(A);var D=this.GetParents(B);var E=[];for (var i=0;i<C.length;i++){if (C[i]==D[i]) E.push(C[i]);};return E;},GetCommonParentNode:function(A,B,C){var D={};if (!C.pop) C=[C];while (C.length>0) D[C.pop().toLowerCase()]=1;var E=this.GetCommonParents(A,B);var F=null;while ((F=E.pop())){if (D[F.nodeName.toLowerCase()]) return F;};return null;},GetIndexOf:function(A){var B=A.parentNode?A.parentNode.firstChild:null;var C=-1;while (B){C++;if (B==A) return C;B=B.nextSibling;};return-1;},PaddingNode:null,EnforcePaddingNode:function(A,B){try{if (!A||!A.body) return;}catch (e){return;};this.CheckAndRemovePaddingNode(A,B,true);try{if (A.body.lastChild&&(A.body.lastChild.nodeType!=1||A.body.lastChild.tagName.toLowerCase()==B.toLowerCase())) return;}catch (e){return;};var C=A.createElement(B);if (FCKBrowserInfo.IsGecko&&FCKListsLib.NonEmptyBlockElements[B]) FCKTools.AppendBogusBr(C);this.PaddingNode=C;if (A.body.childNodes.length==1&&A.body.firstChild.nodeType==1&&A.body.firstChild.tagName.toLowerCase()=='br'&&(A.body.firstChild.getAttribute('_moz_dirty')!=null||A.body.firstChild.getAttribute('type')=='_moz')) A.body.replaceChild(C,A.body.firstChild);else A.body.appendChild(C);},CheckAndRemovePaddingNode:function(A,B,C){var D=this.PaddingNode;if (!D) return;try{if (D.parentNode!=A.body||D.tagName.toLowerCase()!=B||(D.childNodes.length>1)||(D.firstChild&&D.firstChild.nodeValue!='\xa0'&&String(D.firstChild.tagName).toLowerCase()!='br')){this.PaddingNode=null;return;}}catch (e){this.PaddingNode=null;return;};if (!C){if (D.parentNode.childNodes.length>1) D.parentNode.removeChild(D);this.PaddingNode=null;}},HasAttribute:function(A,B){if (A.hasAttribute) return A.hasAttribute(B);else{var C=A.attributes[B];return (C!=undefined&&C.specified);}},HasAttributes:function(A){var B=A.attributes;for (var i=0;i<B.length;i++){if (FCKBrowserInfo.IsIE&&B[i].nodeName=='class'){if (A.className.length>0) return true;}else if (B[i].specified) return true;};return false;},RemoveAttribute:function(A,B){if (FCKBrowserInfo.IsIE&&B.toLowerCase()=='class') B='className';return A.removeAttribute(B,0);},RemoveAttributes:function (A,B){for (var i=0;i<B.length;i++) this.RemoveAttribute(A,B[i]);},GetAttributeValue:function(A,B){var C=B;if (typeof B=='string') B=A.attributes[B];else C=B.nodeName;if (B&&B.specified){if (C=='style') return A.style.cssText;else if (C=='class'||C.indexOf('on')==0) return B.nodeValue;else{return A.getAttribute(C,2);}};return null;},Contains:function(A,B){if (A.contains&&B.nodeType==1) return A.contains(B);while ((B=B.parentNode)){if (B==A) return true;};return false;},BreakParent:function(A,B,C){var D=C||new FCKDomRange(FCKTools.GetElementWindow(A));D.SetStart(A,4);D.SetEnd(B,4);var E=D.ExtractContents();D.InsertNode(A.parentNode.removeChild(A));E.InsertAfterNode(A);D.Release(!!C);},GetNodeAddress:function(A,B){var C=[];while (A&&A!=FCKTools.GetElementDocument(A).documentElement){var D=A.parentNode;var E=-1;for(var i=0;i<D.childNodes.length;i++){var F=D.childNodes[i];if (B===true&&F.nodeType==3&&F.previousSibling&&F.previousSibling.nodeType==3) continue;E++;if (D.childNodes[i]==A) break;};C.unshift(E);A=A.parentNode;};return C;},GetNodeFromAddress:function(A,B,C){var D=A.documentElement;for (var i=0;i<B.length;i++){var E=B[i];if (!C){D=D.childNodes[E];continue;};var F=-1;for (var j=0;j<D.childNodes.length;j++){var G=D.childNodes[j];if (C===true&&G.nodeType==3&&G.previousSibling&&G.previousSibling.nodeType==3) continue;F++;if (F==E){D=G;break;}}};return D;},CloneElement:function(A){A=A.cloneNode(false);A.removeAttribute('id',false);return A;},ClearElementJSProperty:function(A,B){if (FCKBrowserInfo.IsIE) A.removeAttribute(B);else delete A[B];},SetElementMarker:function (A,B,C,D){var E=String(parseInt(Math.random()*0xfffffff,10));B._FCKMarkerId=E;B[C]=D;if (!A[E]) A[E]={ 'element':B,'markers':{} };A[E]['markers'][C]=D;},ClearElementMarkers:function(A,B,C){var D=B._FCKMarkerId;if (!D) return;this.ClearElementJSProperty(B,'_FCKMarkerId');for (var j in A[D]['markers']) this.ClearElementJSProperty(B,j);if (C) delete A[D];},ClearAllMarkers:function(A){for (var i in A) this.ClearElementMarkers(A,A[i]['element'],true);},ListToArray:function(A,B,C,D,E){if (!A.nodeName.IEquals(['ul','ol'])) return [];if (!D) D=0;if (!C) C=[];for (var i=0;i<A.childNodes.length;i++){var F=A.childNodes[i];if (!F.nodeName.IEquals('li')) continue;var G={ 'parent':A,'indent':D,'contents':[] };if (!E){G.grandparent=A.parentNode;if (G.grandparent&&G.grandparent.nodeName.IEquals('li')) G.grandparent=G.grandparent.parentNode;}else G.grandparent=E;if (B) this.SetElementMarker(B,F,'_FCK_ListArray_Index',C.length);C.push(G);for (var j=0;j<F.childNodes.length;j++){var H=F.childNodes[j];if (H.nodeName.IEquals(['ul','ol'])) this.ListToArray(H,B,C,D+1,G.grandparent);else G.contents.push(H);}};return C;},ArrayToList:function(A,B,C){if (C==undefined) C=0;if (!A||A.length<C+1) return null;var D=FCKTools.GetElementDocument(A[C].parent);var E=D.createDocumentFragment();var F=null;var G=C;var H=Math.max(A[C].indent,0);var I=null;while (true){var J=A[G];if (J.indent==H){if (!F||A[G].parent.nodeName!=F.nodeName){F=A[G].parent.cloneNode(false);E.appendChild(F);};I=D.createElement('li');F.appendChild(I);for (var i=0;i<J.contents.length;i++) I.appendChild(J.contents[i].cloneNode(true));G++;}else if (J.indent==Math.max(H,0)+1){var K=this.ArrayToList(A,null,G);I.appendChild(K.listNode);G=K.nextIndex;}else if (J.indent==-1&&C==0&&J.grandparent){var I;if (J.grandparent.nodeName.IEquals(['ul','ol'])) I=D.createElement('li');else{if (FCKConfig.EnterMode.IEquals(['div','p'])&&!J.grandparent.nodeName.IEquals('td')) I=D.createElement(FCKConfig.EnterMode);else I=D.createDocumentFragment();};for (var i=0;i<J.contents.length;i++) I.appendChild(J.contents[i].cloneNode(true));if (I.nodeType==11){if (I.lastChild&&I.lastChild.getAttribute&&I.lastChild.getAttribute('type')=='_moz') I.removeChild(I.lastChild);I.appendChild(D.createElement('br'));};if (I.nodeName.IEquals(FCKConfig.EnterMode)&&I.firstChild){this.TrimNode(I);if (FCKListsLib.BlockBoundaries[I.firstChild.nodeName.toLowerCase()]){var M=D.createDocumentFragment();while (I.firstChild) M.appendChild(I.removeChild(I.firstChild));I=M;}};if (FCKBrowserInfo.IsGeckoLike&&I.nodeName.IEquals(['div','p'])) FCKTools.AppendBogusBr(I);E.appendChild(I);F=null;G++;}else return null;if (A.length<=G||Math.max(A[G].indent,0)<H){break;}};if (B){var N=E.firstChild;while (N){if (N.nodeType==1) this.ClearElementMarkers(B,N);N=this.GetNextSourceNode(N);}};return { 'listNode':E,'nextIndex':G };},GetNextSibling:function(A,B){A=A.nextSibling;while (A&&!B&&A.nodeType!=1&&(A.nodeType!=3||A.nodeValue.length==0)) A=A.nextSibling;return A;},GetPreviousSibling:function(A,B){A=A.previousSibling;while (A&&!B&&A.nodeType!=1&&(A.nodeType!=3||A.nodeValue.length==0)) A=A.previousSibling;return A;},CheckIsEmptyElement:function(A,B){var C=A.firstChild;var D;while (C){if (C.nodeType==1){if (D||!FCKListsLib.InlineNonEmptyElements[C.nodeName.toLowerCase()]) return false;if (!B||B(C)===true) D=C;}else if (C.nodeType==3&&C.nodeValue.length>0) return false;C=C.nextSibling;};return D?this.CheckIsEmptyElement(D,B):true;},SetElementStyles:function(A,B){var C=A.style;for (var D in B) C[D]=B[D];},SetOpacity:function(A,B){if (FCKBrowserInfo.IsIE){B=Math.round(B*100);A.style.filter=(B>100?'':'progid:DXImageTransform.Microsoft.Alpha(opacity='+B+')');}else A.style.opacity=B;},GetCurrentElementStyle:function(A,B){if (FCKBrowserInfo.IsIE) return A.currentStyle[B];else return A.ownerDocument.defaultView.getComputedStyle(A,'').getPropertyValue(B);},GetPositionedAncestor:function(A){var B=A;while (B!=FCKTools.GetElementDocument(B).documentElement){if (this.GetCurrentElementStyle(B,'position')!='static') return B;if (B==FCKTools.GetElementDocument(B).documentElement&&currentWindow!=w) B=currentWindow.frameElement;else B=B.parentNode;};return null;},ScrollIntoView:function(A,B){var C=FCKTools.GetElementWindow(A);var D=FCKTools.GetViewPaneSize(C).Height;var E=D*-1;if (B===false){E+=A.offsetHeight;E+=parseInt(this.GetCurrentElementStyle(A,'marginBottom')||0,10);};E+=A.offsetTop;while ((A=A.offsetParent)) E+=A.offsetTop||0;var F=FCKTools.GetScrollPosition(C).Y;if (E>0&&E>F) C.scrollTo(0,E);},CheckIsEditable:function(A){var B=A.nodeName.toLowerCase();var C=FCK.DTD[B]||FCK.DTD.span;return (C['#']&&!FCKListsLib.NonEditableElements[B]);}};
-var FCKTools={};FCKTools.CreateBogusBR=function(A){var B=A.createElement('br');B.setAttribute('type','_moz');return B;};FCKTools.FixCssUrls=function(A,B){if (!A||A.length==0) return B;return B.replace(/url\s*\(([\s'"]*)(.*?)([\s"']*)\)/g,function(match,opener,path,closer){if (/^\/|^\w?:/.test(path)) return match;else return 'url('+opener+A+path+closer+')';});};FCKTools._GetUrlFixedCss=function(A,B){var C=A.match(/^([^|]+)\|([\s\S]*)/);if (C) return FCKTools.FixCssUrls(C[1],C[2]);else return A;};FCKTools.AppendStyleSheet=function(A,B){if (!B) return [];if (typeof(B)=='string'){if (/[\\\/\.]\w*$/.test(B)){return this.AppendStyleSheet(A,B.split(','));}else return [this.AppendStyleString(A,FCKTools._GetUrlFixedCss(B))];}else{var C=[];for (var i=0;i<B.length;i++) C.push(this._AppendStyleSheet(A,B[i]));return C;}};FCKTools.GetStyleHtml=(function(){var A=function(styleDef,markTemp){if (styleDef.length==0) return '';var B=markTemp?' _fcktemp="true"':'';return '<style type="text/css"'+B+'>'+styleDef+'</style>';};var C=function(cssFileUrl,markTemp){if (cssFileUrl.length==0) return '';var B=markTemp?' _fcktemp="true"':'';return '<link href="'+cssFileUrl+'" type="text/css" rel="stylesheet" '+B+'/>';};return function(cssFileOrArrayOrDef,markTemp){if (!cssFileOrArrayOrDef) return '';if (typeof(cssFileOrArrayOrDef)=='string'){if (/[\\\/\.]\w*$/.test(cssFileOrArrayOrDef)){return this.GetStyleHtml(cssFileOrArrayOrDef.split(','),markTemp);}else return A(this._GetUrlFixedCss(cssFileOrArrayOrDef),markTemp);}else{var E='';for (var i=0;i<cssFileOrArrayOrDef.length;i++) E+=C(cssFileOrArrayOrDef[i],markTemp);return E;}}})();FCKTools.GetElementDocument=function (A){return A.ownerDocument||A.document;};FCKTools.GetElementWindow=function(A){return this.GetDocumentWindow(this.GetElementDocument(A));};FCKTools.GetDocumentWindow=function(A){if (FCKBrowserInfo.IsSafari&&!A.parentWindow) this.FixDocumentParentWindow(window.top);return A.parentWindow||A.defaultView;};FCKTools.FixDocumentParentWindow=function(A){if (A.document) A.document.parentWindow=A;for (var i=0;i<A.frames.length;i++) FCKTools.FixDocumentParentWindow(A.frames[i]);};FCKTools.HTMLEncode=function(A){if (!A) return '';A=A.replace(/&/g,'&amp;');A=A.replace(/</g,'&lt;');A=A.replace(/>/g,'&gt;');return A;};FCKTools.HTMLDecode=function(A){if (!A) return '';A=A.replace(/&gt;/g,'>');A=A.replace(/&lt;/g,'<');A=A.replace(/&amp;/g,'&');return A;};FCKTools._ProcessLineBreaksForPMode=function(A,B,C,D,E){var F=0;var G="<p>";var H="</p>";var I="<br />";if (C){G="<li>";H="</li>";F=1;};while (D&&D!=A.FCK.EditorDocument.body){if (D.tagName.toLowerCase()=='p'){F=1;break;};D=D.parentNode;};for (var i=0;i<B.length;i++){var c=B.charAt(i);if (c=='\r') continue;if (c!='\n'){E.push(c);continue;};var n=B.charAt(i+1);if (n=='\r'){i++;n=B.charAt(i+1);};if (n=='\n'){i++;if (F) E.push(H);E.push(G);F=1;}else E.push(I);}};FCKTools._ProcessLineBreaksForDivMode=function(A,B,C,D,E){var F=0;var G="<div>";var H="</div>";if (C){G="<li>";H="</li>";F=1;};while (D&&D!=A.FCK.EditorDocument.body){if (D.tagName.toLowerCase()=='div'){F=1;break;};D=D.parentNode;};for (var i=0;i<B.length;i++){var c=B.charAt(i);if (c=='\r') continue;if (c!='\n'){E.push(c);continue;};if (F){if (E[E.length-1]==G){E.push("&nbsp;");};E.push(H);};E.push(G);F=1;};if (F) E.push(H);};FCKTools._ProcessLineBreaksForBrMode=function(A,B,C,D,E){var F=0;var G="<br />";var H="";if (C){G="<li>";H="</li>";F=1;};for (var i=0;i<B.length;i++){var c=B.charAt(i);if (c=='\r') continue;if (c!='\n'){E.push(c);continue;};if (F&&H.length) E.push (H);E.push(G);F=1;}};FCKTools.ProcessLineBreaks=function(A,B,C){var D=B.EnterMode.toLowerCase();var E=[];var F=0;var G=new A.FCKDomRange(A.FCK.EditorWindow);G.MoveToSelection();var H=G._Range.startContainer;while (H&&H.nodeType!=1) H=H.parentNode;if (H&&H.tagName.toLowerCase()=='li') F=1;if (D=='p') this._ProcessLineBreaksForPMode(A,C,F,H,E);else if (D=='div') this._ProcessLineBreaksForDivMode(A,C,F,H,E);else if (D=='br') this._ProcessLineBreaksForBrMode(A,C,F,H,E);return E.join("");};FCKTools.AddSelectOption=function(A,B,C){var D=FCKTools.GetElementDocument(A).createElement("OPTION");D.text=B;D.value=C;A.options.add(D);return D;};FCKTools.RunFunction=function(A,B,C,D){if (A) this.SetTimeout(A,0,B,C,D);};FCKTools.SetTimeout=function(A,B,C,D,E){return (E||window).setTimeout(function(){if (D) A.apply(C,[].concat(D));else A.apply(C);},B);};FCKTools.SetInterval=function(A,B,C,D,E){return (E||window).setInterval(function(){A.apply(C,D||[]);},B);};FCKTools.ConvertStyleSizeToHtml=function(A){return A.EndsWith('%')?A:parseInt(A,10);};FCKTools.ConvertHtmlSizeToStyle=function(A){return A.EndsWith('%')?A:(A+'px');};FCKTools.GetElementAscensor=function(A,B){var e=A;var C=","+B.toUpperCase()+",";while (e){if (C.indexOf(","+e.nodeName.toUpperCase()+",")!=-1) return e;e=e.parentNode;};return null;};FCKTools.CreateEventListener=function(A,B){var f=function(){var C=[];for (var i=0;i<arguments.length;i++) C.push(arguments[i]);A.apply(this,C.concat(B));};return f;};FCKTools.IsStrictMode=function(A){return ('CSS1Compat'==(A.compatMode||(FCKBrowserInfo.IsSafari?'CSS1Compat':null)));};FCKTools.ArgumentsToArray=function(A,B,C){B=B||0;C=C||A.length;var D=[];for (var i=B;i<B+C&&i<A.length;i++) D.push(A[i]);return D;};FCKTools.CloneObject=function(A){var B=function() {};B.prototype=A;return new B;};FCKTools.AppendBogusBr=function(A){if (!A) return;var B=this.GetLastItem(A.getElementsByTagName('br'));if (!B||(B.getAttribute('type',2)!='_moz'&&B.getAttribute('_moz_dirty')==null)){var C=this.GetElementDocument(A);if (FCKBrowserInfo.IsOpera) A.appendChild(C.createTextNode(''));else A.appendChild(this.CreateBogusBR(C));}};FCKTools.GetLastItem=function(A){if (A.length>0) return A[A.length-1];return null;};FCKTools.GetDocumentPosition=function(w,A){var x=0;var y=0;var B=A;var C=null;var D=FCKTools.GetElementWindow(B);while (B&&!(D==w&&(B==w.document.body||B==w.document.documentElement))){x+=B.offsetLeft-B.scrollLeft;y+=B.offsetTop-B.scrollTop;if (!FCKBrowserInfo.IsOpera){var E=C;while (E&&E!=B){x-=E.scrollLeft;y-=E.scrollTop;E=E.parentNode;}};C=B;if (B.offsetParent) B=B.offsetParent;else{if (D!=w){B=D.frameElement;C=null;if (B) D=B.contentWindow.parent;}else B=null;}};if (FCKDomTools.GetCurrentElementStyle(w.document.body,'position')!='static'||(FCKBrowserInfo.IsIE&&FCKDomTools.GetPositionedAncestor(A)==null)){x+=w.document.body.offsetLeft;y+=w.document.body.offsetTop;};return { "x":x,"y":y };};FCKTools.GetWindowPosition=function(w,A){var B=this.GetDocumentPosition(w,A);var C=FCKTools.GetScrollPosition(w);B.x-=C.X;B.y-=C.Y;return B;};FCKTools.ProtectFormStyles=function(A){if (!A||A.nodeType!=1||A.tagName.toLowerCase()!='form') return [];var B=[];var C=['style','className'];for (var i=0;i<C.length;i++){var D=C[i];if (A.elements.namedItem(D)){var E=A.elements.namedItem(D);B.push([E,E.nextSibling]);A.removeChild(E);}};return B;};FCKTools.RestoreFormStyles=function(A,B){if (!A||A.nodeType!=1||A.tagName.toLowerCase()!='form') return;if (B.length>0){for (var i=B.length-1;i>=0;i--){var C=B[i][0];var D=B[i][1];if (D) A.insertBefore(C,D);else A.appendChild(C);}}};FCKTools.GetNextNode=function(A,B){if (A.firstChild) return A.firstChild;else if (A.nextSibling) return A.nextSibling;else{var C=A.parentNode;while (C){if (C==B) return null;if (C.nextSibling) return C.nextSibling;else C=C.parentNode;}};return null;};FCKTools.GetNextTextNode=function(A,B,C){node=this.GetNextNode(A,B);if (C&&node&&C(node)) return null;while (node&&node.nodeType!=3){node=this.GetNextNode(node,B);if (C&&node&&C(node)) return null;};return node;};FCKTools.Merge=function(){var A=arguments;var o=A[0];for (var i=1;i<A.length;i++){var B=A[i];for (var p in B) o[p]=B[p];};return o;};FCKTools.IsArray=function(A){return (A instanceof Array);};FCKTools.AppendLengthProperty=function(A,B){var C=0;for (var n in A) C++;return A[B||'length']=C;};FCKTools.NormalizeCssText=function(A){var B=document.createElement('span');B.style.cssText=A;return B.style.cssText;};FCKTools.Bind=function(A,B){return function(){ return B.apply(A,arguments);};};FCKTools.GetVoidUrl=function(){if (FCK_IS_CUSTOM_DOMAIN) return "javascript: void( function(){document.open();document.write('<html><head><title></title></head><body></body></html>');document.domain = '"+FCK_RUNTIME_DOMAIN+"';document.close();}() ) ;";if (FCKBrowserInfo.IsIE){if (FCKBrowserInfo.IsIE7||!FCKBrowserInfo.IsIE6) return "";else return "javascript: '';";};return "javascript: void(0);";};
+var FCK={Name:FCKURLParams['InstanceName'],Status:0,EditMode:0,Toolbar:null,HasFocus:false,DataProcessor:new FCKDataProcessor(),GetInstanceObject:(function(){var w=window;return function(name){return w[name];}})(),AttachToOnSelectionChange:function(A){this.Events.AttachEvent('OnSelectionChange',A);},GetLinkedFieldValue:function(){return this.LinkedField.value;},GetParentForm:function(){return this.LinkedField.form;},StartupValue:'',IsDirty:function(){if (this.EditMode==1) return (this.StartupValue!=this.EditingArea.Textarea.value);else{if (!this.EditorDocument) return false;return (this.StartupValue!=this.EditorDocument.body.innerHTML);}},ResetIsDirty:function(){if (this.EditMode==1) this.StartupValue=this.EditingArea.Textarea.value;else if (this.EditorDocument.body) this.StartupValue=this.EditorDocument.body.innerHTML;},StartEditor:function(){this.TempBaseTag=FCKConfig.BaseHref.length>0?'<base href="'+FCKConfig.BaseHref+'" _fcktemp="true"></base>':'';var A=FCK.KeystrokeHandler=new FCKKeystrokeHandler();A.OnKeystroke=_FCK_KeystrokeHandler_OnKeystroke;A.SetKeystrokes(FCKConfig.Keystrokes);if (FCKBrowserInfo.IsIE7){if ((CTRL+86) in A.Keystrokes) A.SetKeystrokes([CTRL+86,true]);if ((SHIFT+45) in A.Keystrokes) A.SetKeystrokes([SHIFT+45,true]);};A.SetKeystrokes([CTRL+8,true]);this.EditingArea=new FCKEditingArea(document.getElementById('xEditingArea'));this.EditingArea.FFSpellChecker=FCKConfig.FirefoxSpellChecker;this.SetData(this.GetLinkedFieldValue(),true);FCKTools.AddEventListener(document,"keydown",this._TabKeyHandler);this.AttachToOnSelectionChange(_FCK_PaddingNodeListener);if (FCKBrowserInfo.IsGecko) this.AttachToOnSelectionChange(this._ExecCheckEmptyBlock);},Focus:function(){FCK.EditingArea.Focus();},SetStatus:function(A){this.Status=A;if (A==1){FCKFocusManager.AddWindow(window,true);if (FCKBrowserInfo.IsIE) FCKFocusManager.AddWindow(window.frameElement,true);if (FCKConfig.StartupFocus) FCK.Focus();};this.Events.FireEvent('OnStatusChange',A);},FixBody:function(){var A=FCKConfig.EnterMode;if (A!='p'&&A!='div') return;var B=this.EditorDocument;if (!B) return;var C=B.body;if (!C) return;FCKDomTools.TrimNode(C);var D=C.firstChild;var E;while (D){var F=false;switch (D.nodeType){case 1:var G=D.nodeName.toLowerCase();if (!FCKListsLib.BlockElements[G]&&G!='li'&&!D.getAttribute('_fckfakelement')&&D.getAttribute('_moz_dirty')==null) F=true;break;case 3:if (E||D.nodeValue.Trim().length>0) F=true;break;case 8:if (E) F=true;break;};if (F){var H=D.parentNode;if (!E) E=H.insertBefore(B.createElement(A),D);E.appendChild(H.removeChild(D));D=E.nextSibling;}else{if (E){FCKDomTools.TrimNode(E);E=null;};D=D.nextSibling;}};if (E) FCKDomTools.TrimNode(E);},GetData:function(A){if (FCK.EditMode==1) return FCK.EditingArea.Textarea.value;this.FixBody();var B=FCK.EditorDocument;if (!B) return null;var C=FCKConfig.FullPage;var D=FCK.DataProcessor.ConvertToDataFormat(C?B.documentElement:B.body,!C,FCKConfig.IgnoreEmptyParagraphValue,A);D=FCK.ProtectEventsRestore(D);if (FCKBrowserInfo.IsIE) D=D.replace(FCKRegexLib.ToReplace,'$1');if (C){if (FCK.DocTypeDeclaration&&FCK.DocTypeDeclaration.length>0) D=FCK.DocTypeDeclaration+'\n'+D;if (FCK.XmlDeclaration&&FCK.XmlDeclaration.length>0) D=FCK.XmlDeclaration+'\n'+D;};return FCKConfig.ProtectedSource.Revert(D);},UpdateLinkedField:function(){var A=FCK.GetXHTML(FCKConfig.FormatOutput);if (FCKConfig.HtmlEncodeOutput) A=FCKTools.HTMLEncode(A);FCK.LinkedField.value=A;FCK.Events.FireEvent('OnAfterLinkedFieldUpdate');},RegisteredDoubleClickHandlers:{},OnDoubleClick:function(A){var B=FCK.RegisteredDoubleClickHandlers[A.tagName.toUpperCase()];if (B){for (var i=0;i<B.length;i++) B[i](A);};B=FCK.RegisteredDoubleClickHandlers['*'];if (B){for (var i=0;i<B.length;i++) B[i](A);}},RegisterDoubleClickHandler:function(A,B){var C=B||'*';C=C.toUpperCase();var D;if (!(D=FCK.RegisteredDoubleClickHandlers[C])) FCK.RegisteredDoubleClickHandlers[C]=[A];else{if (D.IndexOf(A)==-1) D.push(A);}},OnAfterSetHTML:function(){FCKDocumentProcessor.Process(FCK.EditorDocument);FCKUndo.SaveUndoStep();FCK.Events.FireEvent('OnSelectionChange');FCK.Events.FireEvent('OnAfterSetHTML');},ProtectUrls:function(A){A=A.replace(FCKRegexLib.ProtectUrlsA,'$& _fcksavedurl=$1');A=A.replace(FCKRegexLib.ProtectUrlsImg,'$& _fcksavedurl=$1');A=A.replace(FCKRegexLib.ProtectUrlsArea,'$& _fcksavedurl=$1');return A;},ProtectEvents:function(A){return A.replace(FCKRegexLib.TagsWithEvent,_FCK_ProtectEvents_ReplaceTags);},ProtectEventsRestore:function(A){return A.replace(FCKRegexLib.ProtectedEvents,_FCK_ProtectEvents_RestoreEvents);},ProtectTags:function(A){var B=FCKConfig.ProtectedTags;if (FCKBrowserInfo.IsIE) B+=B.length>0?'|ABBR|XML|EMBED|OBJECT':'ABBR|XML|EMBED|OBJECT';var C;if (B.length>0){C=new RegExp('<('+B+')(?!\w|:)','gi');A=A.replace(C,'<FCK:$1');C=new RegExp('<\/('+B+')>','gi');A=A.replace(C,'<\/FCK:$1>');};B='META';if (FCKBrowserInfo.IsIE) B+='|HR';C=new RegExp('<(('+B+')(?=\\s|>|/)[\\s\\S]*?)/?>','gi');A=A.replace(C,'<FCK:$1 />');return A;},SetData:function(A,B){this.EditingArea.Mode=FCK.EditMode;if (FCKBrowserInfo.IsIE&&FCK.EditorDocument){FCK.EditorDocument.detachEvent("onselectionchange",Doc_OnSelectionChange);};FCKTempBin.Reset();if (FCK.EditMode==0){this._ForceResetIsDirty=(B===true);A=FCKConfig.ProtectedSource.Protect(A);A=FCK.DataProcessor.ConvertToHtml(A);A=A.replace(FCKRegexLib.InvalidSelfCloseTags,'$1></$2>');A=FCK.ProtectEvents(A);A=FCK.ProtectUrls(A);A=FCK.ProtectTags(A);if (FCK.TempBaseTag.length>0&&!FCKRegexLib.HasBaseTag.test(A)) A=A.replace(FCKRegexLib.HeadOpener,'$&'+FCK.TempBaseTag);var C='';if (!FCKConfig.FullPage) C+=_FCK_GetEditorAreaStyleTags();if (FCKBrowserInfo.IsIE) C+=FCK._GetBehaviorsStyle();else if (FCKConfig.ShowBorders) C+=FCKTools.GetStyleHtml(FCK_ShowTableBordersCSS,true);C+=FCKTools.GetStyleHtml(FCK_InternalCSS,true);A=A.replace(FCKRegexLib.HeadCloser,C+'$&');this.EditingArea.OnLoad=_FCK_EditingArea_OnLoad;this.EditingArea.Start(A);}else{FCK.EditorWindow=null;FCK.EditorDocument=null;FCKDomTools.PaddingNode=null;this.EditingArea.OnLoad=null;this.EditingArea.Start(A);this.EditingArea.Textarea._FCKShowContextMenu=true;FCK.EnterKeyHandler=null;if (B) this.ResetIsDirty();FCK.KeystrokeHandler.AttachToElement(this.EditingArea.Textarea);this.EditingArea.Textarea.focus();FCK.Events.FireEvent('OnAfterSetHTML');};if (FCKBrowserInfo.IsGecko) window.onresize();},RedirectNamedCommands:{},ExecuteNamedCommand:function(A,B,C,D){if (!D) FCKUndo.SaveUndoStep();if (!C&&FCK.RedirectNamedCommands[A]!=null) FCK.ExecuteRedirectedNamedCommand(A,B);else{FCK.Focus();FCK.EditorDocument.execCommand(A,false,B);FCK.Events.FireEvent('OnSelectionChange');};if (!D) FCKUndo.SaveUndoStep();},GetNamedCommandState:function(A){try{if (FCKBrowserInfo.IsSafari&&FCK.EditorWindow&&A.IEquals('Paste')) return 0;if (!FCK.EditorDocument.queryCommandEnabled(A)) return -1;else{return FCK.EditorDocument.queryCommandState(A)?1:0;}}catch (e){return 0;}},GetNamedCommandValue:function(A){var B='';var C=FCK.GetNamedCommandState(A);if (C==-1) return null;try{B=this.EditorDocument.queryCommandValue(A);}catch(e) {};return B?B:'';},Paste:function(A){if (FCK.Status!=2||!FCK.Events.FireEvent('OnPaste')) return false;return A||FCK._ExecPaste();},PasteFromWord:function(){FCKDialog.OpenDialog('FCKDialog_Paste',FCKLang.PasteFromWord,'dialog/fck_paste.html',400,330,'Word');},Preview:function(){var A;if (FCKConfig.FullPage){if (FCK.TempBaseTag.length>0) A=FCK.TempBaseTag+FCK.GetXHTML();else A=FCK.GetXHTML();}else{A=FCKConfig.DocType+'<html dir="'+FCKConfig.ContentLangDirection+'"><head>'+FCK.TempBaseTag+'<title>'+FCKLang.Preview+'</title>'+_FCK_GetEditorAreaStyleTags()+'</head><body'+FCKConfig.GetBodyAttributes()+'>'+FCK.GetXHTML()+'</body></html>';};var B=FCKConfig.ScreenWidth*0.8;var C=FCKConfig.ScreenHeight*0.7;var D=(FCKConfig.ScreenWidth-B)/2;var E='';if (FCK_IS_CUSTOM_DOMAIN&&FCKBrowserInfo.IsIE){window._FCKHtmlToLoad=A;E='javascript:void( (function(){document.open() ;document.domain="'+document.domain+'" ;document.write( window.opener._FCKHtmlToLoad );document.close() ;window.opener._FCKHtmlToLoad = null ;})() )';};var F=window.open(E,null,'toolbar=yes,location=no,status=yes,menubar=yes,scrollbars=yes,resizable=yes,width='+B+',height='+C+',left='+D);if (!FCK_IS_CUSTOM_DOMAIN||!FCKBrowserInfo.IsIE){F.document.write(A);F.document.close();}},SwitchEditMode:function(A){var B=(FCK.EditMode==0);var C=FCK.IsDirty();var D;if (B){FCKCommands.GetCommand('ShowBlocks').SaveState();if (!A&&FCKBrowserInfo.IsIE) FCKUndo.SaveUndoStep();D=FCK.GetXHTML(FCKConfig.FormatSource);if (FCKBrowserInfo.IsIE) FCKTempBin.ToHtml();if (D==null) return false;}else D=this.EditingArea.Textarea.value;FCK.EditMode=B?1:0;FCK.SetData(D,!C);FCK.Focus();FCKTools.RunFunction(FCK.ToolbarSet.RefreshModeState,FCK.ToolbarSet);return true;},InsertElement:function(A){if (typeof A=='string') A=this.EditorDocument.createElement(A);var B=A.nodeName.toLowerCase();FCKSelection.Restore();var C=new FCKDomRange(this.EditorWindow);C.MoveToSelection();C.DeleteContents();if (FCKListsLib.BlockElements[B]!=null){if (C.StartBlock){if (C.CheckStartOfBlock()) C.MoveToPosition(C.StartBlock,3);else if (C.CheckEndOfBlock()) C.MoveToPosition(C.StartBlock,4);else C.SplitBlock();};C.InsertNode(A);var D=FCKDomTools.GetNextSourceElement(A,false,null,['hr','br','param','img','area','input'],true);if (!D&&FCKConfig.EnterMode!='br'){D=this.EditorDocument.body.appendChild(this.EditorDocument.createElement(FCKConfig.EnterMode));if (FCKBrowserInfo.IsGeckoLike) FCKTools.AppendBogusBr(D);};if (FCKListsLib.EmptyElements[B]==null) C.MoveToElementEditStart(A);else if (D) C.MoveToElementEditStart(D);else C.MoveToPosition(A,4);if (FCKBrowserInfo.IsGeckoLike){if (D) FCKDomTools.ScrollIntoView(D,false);FCKDomTools.ScrollIntoView(A,false);}}else{C.InsertNode(A);C.SetStart(A,4);C.SetEnd(A,4);};C.Select();C.Release();this.Focus();return A;},_InsertBlockElement:function(A){},_IsFunctionKey:function(A){if (A>=16&&A<=20) return true;if (A==27||(A>=33&&A<=40)) return true;if (A==45) return true;return false;},_KeyDownListener:function(A){if (!A) A=FCK.EditorWindow.event;if (FCK.EditorWindow){if (!FCK._IsFunctionKey(A.keyCode)&&!(A.ctrlKey||A.metaKey)&&!(A.keyCode==46)) FCK._KeyDownUndo();};return true;},_KeyDownUndo:function(){if (!FCKUndo.Typing){FCKUndo.SaveUndoStep();FCKUndo.Typing=true;FCK.Events.FireEvent("OnSelectionChange");};FCKUndo.TypesCount++;FCKUndo.Changed=1;if (FCKUndo.TypesCount>FCKUndo.MaxTypes){FCKUndo.TypesCount=0;FCKUndo.SaveUndoStep();}},_TabKeyHandler:function(A){if (!A) A=window.event;var B=A.keyCode;if (B==9&&FCK.EditMode!=0){if (FCKBrowserInfo.IsIE){var C=document.selection.createRange();if (C.parentElement()!=FCK.EditingArea.Textarea) return true;C.text='\t';C.select();}else{var a=[];var D=FCK.EditingArea.Textarea;var E=D.selectionStart;var F=D.selectionEnd;a.push(D.value.substr(0,E));a.push('\t');a.push(D.value.substr(F));D.value=a.join('');D.setSelectionRange(E+1,E+1);};if (A.preventDefault) return A.preventDefault();return A.returnValue=false;};return true;}};FCK.Events=new FCKEvents(FCK);FCK.GetHTML=FCK.GetXHTML=FCK.GetData;FCK.SetHTML=FCK.SetData;FCK.InsertElementAndGetIt=FCK.CreateElement=FCK.InsertElement;function _FCK_ProtectEvents_ReplaceTags(A){return A.replace(FCKRegexLib.EventAttributes,_FCK_ProtectEvents_ReplaceEvents);};function _FCK_ProtectEvents_ReplaceEvents(A,B){return ' '+B+'_fckprotectedatt="'+encodeURIComponent(A)+'"';};function _FCK_ProtectEvents_RestoreEvents(A,B){return decodeURIComponent(B);};function _FCK_MouseEventsListener(A){if (!A) A=window.event;if (A.type=='mousedown') FCK.MouseDownFlag=true;else if (A.type=='mouseup') FCK.MouseDownFlag=false;else if (A.type=='mousemove') FCK.Events.FireEvent('OnMouseMove',A);};function _FCK_PaddingNodeListener(){if (FCKConfig.EnterMode.IEquals('br')) return;FCKDomTools.EnforcePaddingNode(FCK.EditorDocument,FCKConfig.EnterMode);if (!FCKBrowserInfo.IsIE&&FCKDomTools.PaddingNode){var A=FCKSelection.GetSelection();if (A&&A.rangeCount==1){var B=A.getRangeAt(0);if (B.collapsed&&B.startContainer==FCK.EditorDocument.body&&B.startOffset==0){B.selectNodeContents(FCKDomTools.PaddingNode);B.collapse(true);A.removeAllRanges();A.addRange(B);}}}else if (FCKDomTools.PaddingNode){var C=FCKSelection.GetParentElement();var D=FCKDomTools.PaddingNode;if (C&&C.nodeName.IEquals('body')){if (FCK.EditorDocument.body.childNodes.length==1&&FCK.EditorDocument.body.firstChild==D){if (FCKSelection._GetSelectionDocument(FCK.EditorDocument.selection)!=FCK.EditorDocument) return;var B=FCK.EditorDocument.body.createTextRange();var F=false;if (!D.childNodes.firstChild){D.appendChild(FCKTools.GetElementDocument(D).createTextNode('\ufeff'));F=true;};B.moveToElementText(D);B.select();if (F) B.pasteHTML('');}}}};function _FCK_EditingArea_OnLoad(){FCK.EditorWindow=FCK.EditingArea.Window;FCK.EditorDocument=FCK.EditingArea.Document;if (FCKBrowserInfo.IsIE) FCKTempBin.ToElements();FCK.InitializeBehaviors();FCK.MouseDownFlag=false;FCKTools.AddEventListener(FCK.EditorDocument,'mousemove',_FCK_MouseEventsListener);FCKTools.AddEventListener(FCK.EditorDocument,'mousedown',_FCK_MouseEventsListener);FCKTools.AddEventListener(FCK.EditorDocument,'mouseup',_FCK_MouseEventsListener);if (FCKBrowserInfo.IsSafari){var A=function(evt){if (!(evt.ctrlKey||evt.metaKey)) return;if (FCK.EditMode!=0) return;switch (evt.keyCode){case 89:FCKUndo.Redo();break;case 90:FCKUndo.Undo();break;}};FCKTools.AddEventListener(FCK.EditorDocument,'keyup',A);};FCK.EnterKeyHandler=new FCKEnterKey(FCK.EditorWindow,FCKConfig.EnterMode,FCKConfig.ShiftEnterMode,FCKConfig.TabSpaces);FCK.KeystrokeHandler.AttachToElement(FCK.EditorDocument);if (FCK._ForceResetIsDirty) FCK.ResetIsDirty();if (FCKBrowserInfo.IsIE&&FCK.HasFocus) FCK.EditorDocument.body.setActive();FCK.OnAfterSetHTML();FCKCommands.GetCommand('ShowBlocks').RestoreState();if (FCK.Status!=0) return;FCK.SetStatus(1);};function _FCK_GetEditorAreaStyleTags(){return FCKTools.GetStyleHtml(FCKConfig.EditorAreaCSS)+FCKTools.GetStyleHtml(FCKConfig.EditorAreaStyles);};function _FCK_KeystrokeHandler_OnKeystroke(A,B){if (FCK.Status!=2) return false;if (FCK.EditMode==0){switch (B){case 'Paste':return!FCK.Paste();case 'Cut':FCKUndo.SaveUndoStep();return false;}}else{if (B.Equals('Paste','Undo','Redo','SelectAll','Cut')) return false;};var C=FCK.Commands.GetCommand(B);if (C.GetState()==-1) return false;return (C.Execute.apply(C,FCKTools.ArgumentsToArray(arguments,2))!==false);};(function(){var A=window.parent.document;var B=A.getElementById(FCK.Name);var i=0;while (B||i==0){if (B&&B.tagName.toLowerCase().Equals('input','textarea')){FCK.LinkedField=B;break;};B=A.getElementsByName(FCK.Name)[i++];}})();var FCKTempBin={Elements:[],AddElement:function(A){var B=this.Elements.length;this.Elements[B]=A;return B;},RemoveElement:function(A){var e=this.Elements[A];this.Elements[A]=null;return e;},Reset:function(){var i=0;while (i<this.Elements.length) this.Elements[i++]=null;this.Elements.length=0;},ToHtml:function(){for (var i=0;i<this.Elements.length;i++){this.Elements[i]='<div>&nbsp;'+this.Elements[i].outerHTML+'</div>';this.Elements[i].isHtml=true;}},ToElements:function(){var A=FCK.EditorDocument.createElement('div');for (var i=0;i<this.Elements.length;i++){if (this.Elements[i].isHtml){A.innerHTML=this.Elements[i];this.Elements[i]=A.firstChild.removeChild(A.firstChild.lastChild);}}}};var FCKFocusManager=FCK.FocusManager={IsLocked:false,AddWindow:function(A,B){var C;if (FCKBrowserInfo.IsIE) C=A.nodeType==1?A:A.frameElement?A.frameElement:A.document;else if (FCKBrowserInfo.IsSafari) C=A;else C=A.document;FCKTools.AddEventListener(C,'blur',FCKFocusManager_Win_OnBlur);FCKTools.AddEventListener(C,'focus',B?FCKFocusManager_Win_OnFocus_Area:FCKFocusManager_Win_OnFocus);},RemoveWindow:function(A){if (FCKBrowserInfo.IsIE) oTarget=A.nodeType==1?A:A.frameElement?A.frameElement:A.document;else oTarget=A.document;FCKTools.RemoveEventListener(oTarget,'blur',FCKFocusManager_Win_OnBlur);FCKTools.RemoveEventListener(oTarget,'focus',FCKFocusManager_Win_OnFocus_Area);FCKTools.RemoveEventListener(oTarget,'focus',FCKFocusManager_Win_OnFocus);},Lock:function(){this.IsLocked=true;},Unlock:function(){if (this._HasPendingBlur) FCKFocusManager._Timer=window.setTimeout(FCKFocusManager_FireOnBlur,100);this.IsLocked=false;},_ResetTimer:function(){this._HasPendingBlur=false;if (this._Timer){window.clearTimeout(this._Timer);delete this._Timer;}}};function FCKFocusManager_Win_OnBlur(){if (typeof(FCK)!='undefined'&&FCK.HasFocus){FCKFocusManager._ResetTimer();FCKFocusManager._Timer=window.setTimeout(FCKFocusManager_FireOnBlur,100);}};function FCKFocusManager_FireOnBlur(){if (FCKFocusManager.IsLocked) FCKFocusManager._HasPendingBlur=true;else{FCK.HasFocus=false;FCK.Events.FireEvent("OnBlur");}};function FCKFocusManager_Win_OnFocus_Area(){if (FCKFocusManager._IsFocusing) return;FCKFocusManager._IsFocusing=true;FCK.Focus();FCKFocusManager_Win_OnFocus();FCKTools.RunFunction(function(){delete FCKFocusManager._IsFocusing;});};function FCKFocusManager_Win_OnFocus(){FCKFocusManager._ResetTimer();if (!FCK.HasFocus&&!FCKFocusManager.IsLocked){FCK.HasFocus=true;FCK.Events.FireEvent("OnFocus");}};(function(){var A=window.frameElement;var B=A.width;var C=A.height;if (/^\d+$/.test(B)) B+='px';if (/^\d+$/.test(C)) C+='px';var D=A.style;D.border=D.padding=D.margin=0;D.backgroundColor='transparent';D.backgroundImage='none';D.width=B;D.height=C;})();
+FCK.Description="FCKeditor for Gecko Browsers";FCK.InitializeBehaviors=function(){if (window.onresize) window.onresize();FCKFocusManager.AddWindow(this.EditorWindow);this.ExecOnSelectionChange=function(){FCK.Events.FireEvent("OnSelectionChange");};this._ExecDrop=function(evt){if (FCK.MouseDownFlag){FCK.MouseDownFlag=false;return;};if (FCKConfig.ForcePasteAsPlainText){if (evt.dataTransfer){var A=evt.dataTransfer.getData('Text');A=FCKTools.HTMLEncode(A);A=FCKTools.ProcessLineBreaks(window,FCKConfig,A);FCK.InsertHtml(A);}else if (FCKConfig.ShowDropDialog) FCK.PasteAsPlainText();evt.preventDefault();evt.stopPropagation();}};this._ExecCheckCaret=function(evt){if (FCK.EditMode!=0) return;if (evt.type=='keypress'){var B=evt.keyCode;if (B<33||B>40) return;};var C=function(H){if (H.nodeType!=1) return false;var D=H.tagName.toLowerCase();return (FCKListsLib.BlockElements[D]||FCKListsLib.EmptyElements[D]);};var E=function(){var F=FCKSelection.GetSelection();var G=F.getRangeAt(0);if (!G||!G.collapsed) return;var H=G.endContainer;if (H.nodeType!=3) return;if (H.nodeValue.length!=G.endOffset) return;var I=H.parentNode.tagName.toLowerCase();if (!(I=='a'||(!FCKBrowserInfo.IsOpera&&String(H.parentNode.contentEditable)=='false')||(!(FCKListsLib.BlockElements[I]||FCKListsLib.NonEmptyBlockElements[I])&&B==35))) return;var J=FCKTools.GetNextTextNode(H,H.parentNode,C);if (J) return;G=FCK.EditorDocument.createRange();J=FCKTools.GetNextTextNode(H,H.parentNode.parentNode,C);if (J){if (FCKBrowserInfo.IsOpera&&B==37) return;G.setStart(J,0);G.setEnd(J,0);}else{while (H.parentNode&&H.parentNode!=FCK.EditorDocument.body&&H.parentNode!=FCK.EditorDocument.documentElement&&H==H.parentNode.lastChild&&(!FCKListsLib.BlockElements[H.parentNode.tagName.toLowerCase()]&&!FCKListsLib.NonEmptyBlockElements[H.parentNode.tagName.toLowerCase()])) H=H.parentNode;if (FCKListsLib.BlockElements[I]||FCKListsLib.EmptyElements[I]||H==FCK.EditorDocument.body){G.setStart(H,H.childNodes.length);G.setEnd(H,H.childNodes.length);}else{var K=H.nextSibling;while (K){if (K.nodeType!=1){K=K.nextSibling;continue;};var L=K.tagName.toLowerCase();if (FCKListsLib.BlockElements[L]||FCKListsLib.EmptyElements[L]||FCKListsLib.NonEmptyBlockElements[L]) break;K=K.nextSibling;};var M=FCK.EditorDocument.createTextNode('');if (K) H.parentNode.insertBefore(M,K);else H.parentNode.appendChild(M);G.setStart(M,0);G.setEnd(M,0);}};F.removeAllRanges();F.addRange(G);FCK.Events.FireEvent("OnSelectionChange");};setTimeout(E,1);};this.ExecOnSelectionChangeTimer=function(){if (FCK.LastOnChangeTimer) window.clearTimeout(FCK.LastOnChangeTimer);FCK.LastOnChangeTimer=window.setTimeout(FCK.ExecOnSelectionChange,100);};this.EditorDocument.addEventListener('mouseup',this.ExecOnSelectionChange,false);this.EditorDocument.addEventListener('keyup',this.ExecOnSelectionChangeTimer,false);this._DblClickListener=function(e){FCK.OnDoubleClick(e.target);e.stopPropagation();};this.EditorDocument.addEventListener('dblclick',this._DblClickListener,true);this.EditorDocument.addEventListener('keydown',this._KeyDownListener,false);if (FCKBrowserInfo.IsGecko){this.EditorWindow.addEventListener('dragdrop',this._ExecDrop,true);}else if (FCKBrowserInfo.IsSafari){var N=function(evt){ if (!FCK.MouseDownFlag) evt.returnValue=false;};this.EditorDocument.addEventListener('dragenter',N,true);this.EditorDocument.addEventListener('dragover',N,true);this.EditorDocument.addEventListener('drop',this._ExecDrop,true);this.EditorDocument.addEventListener('mousedown',function(ev){var O=ev.srcElement;if (O.nodeName.IEquals('IMG','HR','INPUT','TEXTAREA','SELECT')){FCKSelection.SelectNode(O);}},true);this.EditorDocument.addEventListener('mouseup',function(ev){if (ev.srcElement.nodeName.IEquals('INPUT','TEXTAREA','SELECT')) ev.preventDefault()},true);this.EditorDocument.addEventListener('click',function(ev){if (ev.srcElement.nodeName.IEquals('INPUT','TEXTAREA','SELECT')) ev.preventDefault()},true);};if (FCKBrowserInfo.IsGecko||FCKBrowserInfo.IsOpera){this.EditorDocument.addEventListener('keypress',this._ExecCheckCaret,false);this.EditorDocument.addEventListener('click',this._ExecCheckCaret,false);};FCK.ContextMenu._InnerContextMenu.SetMouseClickWindow(FCK.EditorWindow);FCK.ContextMenu._InnerContextMenu.AttachToElement(FCK.EditorDocument);};FCK.MakeEditable=function(){this.EditingArea.MakeEditable();};function Document_OnContextMenu(e){if (!e.target._FCKShowContextMenu) e.preventDefault();};document.oncontextmenu=Document_OnContextMenu;FCK._BaseGetNamedCommandState=FCK.GetNamedCommandState;FCK.GetNamedCommandState=function(A){switch (A){case 'Unlink':return FCKSelection.HasAncestorNode('A')?0:-1;default:return FCK._BaseGetNamedCommandState(A);}};FCK.RedirectNamedCommands={Print:true,Paste:true};FCK.ExecuteRedirectedNamedCommand=function(A,B){switch (A){case 'Print':FCK.EditorWindow.print();break;case 'Paste':try{if (FCKBrowserInfo.IsSafari) throw '';if (FCK.Paste()) FCK.ExecuteNamedCommand('Paste',null,true);}catch (e)	{ FCKDialog.OpenDialog('FCKDialog_Paste',FCKLang.Paste,'dialog/fck_paste.html',400,330,'Security');};break;default:FCK.ExecuteNamedCommand(A,B);}};FCK._ExecPaste=function(){FCKUndo.SaveUndoStep();if (FCKConfig.ForcePasteAsPlainText){FCK.PasteAsPlainText();return false;};return true;};FCK.InsertHtml=function(A){var B=FCK.EditorDocument,range;A=FCKConfig.ProtectedSource.Protect(A);A=FCK.ProtectEvents(A);A=FCK.ProtectUrls(A);A=FCK.ProtectTags(A);FCKUndo.SaveUndoStep();if (FCKBrowserInfo.IsGecko){A=A.replace(/&nbsp;$/,'$&<span _fcktemp="1"/>');var C=new FCKDocumentFragment(this.EditorDocument);C.AppendHtml(A);var D=C.RootNode.lastChild;range=new FCKDomRange(this.EditorWindow);range.MoveToSelection();range.DeleteContents();range.InsertNode(C.RootNode);range.MoveToPosition(D,4);}else B.execCommand('inserthtml',false,A);this.Focus();if (!range){range=new FCKDomRange(this.EditorWindow);range.MoveToSelection();};var E=range.CreateBookmark();FCKDocumentProcessor.Process(B);try{range.MoveToBookmark(E);range.Select();}catch (e) {};this.Events.FireEvent("OnSelectionChange");};FCK.PasteAsPlainText=function(){FCKTools.RunFunction(FCKDialog.OpenDialog,FCKDialog,['FCKDialog_Paste',FCKLang.PasteAsText,'dialog/fck_paste.html',400,330,'PlainText']);};FCK.GetClipboardHTML=function(){return '';};FCK.CreateLink=function(A,B){var C=[];if (FCKSelection.GetSelection().isCollapsed) return C;FCK.ExecuteNamedCommand('Unlink',null,false,!!B);if (A.length>0){var D='javascript:void(0);/*'+(new Date().getTime())+'*/';FCK.ExecuteNamedCommand('CreateLink',D,false,!!B);var E=this.EditorDocument.evaluate("//a[@href='"+D+"']",this.EditorDocument.body,null,XPathResult.UNORDERED_NODE_SNAPSHOT_TYPE,null);for (var i=0;i<E.snapshotLength;i++){var F=E.snapshotItem(i);F.href=A;C.push(F);}};return C;};FCK._FillEmptyBlock=function(A){if (!A||A.nodeType!=1) return;var B=A.tagName.toLowerCase();if (B!='p'&&B!='div') return;if (A.firstChild) return;FCKTools.AppendBogusBr(A);};FCK._ExecCheckEmptyBlock=function(){FCK._FillEmptyBlock(FCK.EditorDocument.body.firstChild);var A=FCKSelection.GetSelection();if (!A||A.rangeCount<1) return;var B=A.getRangeAt(0);FCK._FillEmptyBlock(B.startContainer);};
+var FCKConfig=FCK.Config={};if (document.location.protocol=='file:'){FCKConfig.BasePath=decodeURIComponent(document.location.pathname.substr(1));FCKConfig.BasePath=FCKConfig.BasePath.replace(/\\/gi,'/');var sFullProtocol=document.location.href.match(/^(file\:\/{2,3})/)[1];if (FCKBrowserInfo.IsOpera) sFullProtocol+='localhost/';FCKConfig.BasePath=sFullProtocol+FCKConfig.BasePath.substring(0,FCKConfig.BasePath.lastIndexOf('/')+1);}else FCKConfig.BasePath=document.location.protocol+'//'+document.location.host+document.location.pathname.substring(0,document.location.pathname.lastIndexOf('/')+1);FCKConfig.FullBasePath=FCKConfig.BasePath;FCKConfig.EditorPath=FCKConfig.BasePath.replace(/editor\/$/,'');try{FCKConfig.ScreenWidth=screen.width;FCKConfig.ScreenHeight=screen.height;}catch (e){FCKConfig.ScreenWidth=800;FCKConfig.ScreenHeight=600;};FCKConfig.ProcessHiddenField=function(){this.PageConfig={};var A=window.parent.document.getElementById(FCK.Name+'___Config');if (!A) return;var B=A.value.split('&');for (var i=0;i<B.length;i++){if (B[i].length==0) continue;var C=B[i].split('=');var D=decodeURIComponent(C[0]);var E=decodeURIComponent(C[1]);if (D=='CustomConfigurationsPath') FCKConfig[D]=E;else if (E.toLowerCase()=="true") this.PageConfig[D]=true;else if (E.toLowerCase()=="false") this.PageConfig[D]=false;else if (E.length>0&&!isNaN(E)) this.PageConfig[D]=parseInt(E,10);else this.PageConfig[D]=E;}};function FCKConfig_LoadPageConfig(){var A=FCKConfig.PageConfig;for (var B in A) FCKConfig[B]=A[B];};function FCKConfig_PreProcess(){var A=FCKConfig;if (A.AllowQueryStringDebug){try{if ((/fckdebug=true/i).test(window.top.location.search)) A.Debug=true;}catch (e) {  }};if (!A.PluginsPath.EndsWith('/')) A.PluginsPath+='/';var B=A.ToolbarComboPreviewCSS;if (!B||B.length==0) A.ToolbarComboPreviewCSS=A.EditorAreaCSS;A.RemoveAttributesArray=(A.RemoveAttributes||'').split(',');if (!FCKConfig.SkinEditorCSS||FCKConfig.SkinEditorCSS.length==0) FCKConfig.SkinEditorCSS=FCKConfig.SkinPath+'fck_editor.css';if (!FCKConfig.SkinDialogCSS||FCKConfig.SkinDialogCSS.length==0) FCKConfig.SkinDialogCSS=FCKConfig.SkinPath+'fck_dialog.css';};FCKConfig.ToolbarSets={};FCKConfig.Plugins={};FCKConfig.Plugins.Items=[];FCKConfig.Plugins.Add=function(A,B,C){FCKConfig.Plugins.Items.AddItem([A,B,C]);};FCKConfig.ProtectedSource={};FCKConfig.ProtectedSource._CodeTag=(new Date()).valueOf();FCKConfig.ProtectedSource.RegexEntries=[/<!--[\s\S]*?-->/g,/<script[\s\S]*?<\/script>/gi,/<noscript[\s\S]*?<\/noscript>/gi];FCKConfig.ProtectedSource.Add=function(A){this.RegexEntries.AddItem(A);};FCKConfig.ProtectedSource.Protect=function(A){var B=this._CodeTag;function _Replace(protectedSource){var C=FCKTempBin.AddElement(protectedSource);return '<!--{'+B+C+'}-->';};for (var i=0;i<this.RegexEntries.length;i++){A=A.replace(this.RegexEntries[i],_Replace);};return A;};FCKConfig.ProtectedSource.Revert=function(A,B){function _Replace(m,opener,index){var C=B?FCKTempBin.RemoveElement(index):FCKTempBin.Elements[index];return FCKConfig.ProtectedSource.Revert(C,B);};var D=new RegExp("(<|&lt;)!--\\{"+this._CodeTag+"(\\d+)\\}--(>|&gt;)","g");return A.replace(D,_Replace);};FCKConfig.GetBodyAttributes=function(){var A='';if (this.BodyId&&this.BodyId.length>0) A+=' id="'+this.BodyId+'"';if (this.BodyClass&&this.BodyClass.length>0) A+=' class="'+this.BodyClass+'"';return A;};FCKConfig.ApplyBodyAttributes=function(A){if (this.BodyId&&this.BodyId.length>0) A.id=FCKConfig.BodyId;if (this.BodyClass&&this.BodyClass.length>0) A.className+=' '+FCKConfig.BodyClass;};
+var FCKDebug={Output:function(){},OutputObject:function(){}};
+var FCKDomTools={MoveChildren:function(A,B,C){if (A==B) return;var D;if (C){while ((D=A.lastChild)) B.insertBefore(A.removeChild(D),B.firstChild);}else{while ((D=A.firstChild)) B.appendChild(A.removeChild(D));}},MoveNode:function(A,B,C){if (C) B.insertBefore(FCKDomTools.RemoveNode(A),B.firstChild);else B.appendChild(FCKDomTools.RemoveNode(A));},TrimNode:function(A){this.LTrimNode(A);this.RTrimNode(A);},LTrimNode:function(A){var B;while ((B=A.firstChild)){if (B.nodeType==3){var C=B.nodeValue.LTrim();var D=B.nodeValue.length;if (C.length==0){A.removeChild(B);continue;}else if (C.length<D){B.splitText(D-C.length);A.removeChild(A.firstChild);}};break;}},RTrimNode:function(A){var B;while ((B=A.lastChild)){if (B.nodeType==3){var C=B.nodeValue.RTrim();var D=B.nodeValue.length;if (C.length==0){B.parentNode.removeChild(B);continue;}else if (C.length<D){B.splitText(C.length);A.lastChild.parentNode.removeChild(A.lastChild);}};break;};if (!FCKBrowserInfo.IsIE&&!FCKBrowserInfo.IsOpera){B=A.lastChild;if (B&&B.nodeType==1&&B.nodeName.toLowerCase()=='br'){B.parentNode.removeChild(B);}}},RemoveNode:function(A,B){if (B){var C;while ((C=A.firstChild)) A.parentNode.insertBefore(A.removeChild(C),A);};return A.parentNode.removeChild(A);},GetFirstChild:function(A,B){if (typeof (B)=='string') B=[B];var C=A.firstChild;while(C){if (C.nodeType==1&&C.tagName.Equals.apply(C.tagName,B)) return C;C=C.nextSibling;};return null;},GetLastChild:function(A,B){if (typeof (B)=='string') B=[B];var C=A.lastChild;while(C){if (C.nodeType==1&&(!B||C.tagName.Equals(B))) return C;C=C.previousSibling;};return null;},GetPreviousSourceElement:function(A,B,C,D){if (!A) return null;if (C&&A.nodeType==1&&A.nodeName.IEquals(C)) return null;if (A.previousSibling) A=A.previousSibling;else return this.GetPreviousSourceElement(A.parentNode,B,C,D);while (A){if (A.nodeType==1){if (C&&A.nodeName.IEquals(C)) break;if (!D||!A.nodeName.IEquals(D)) return A;}else if (B&&A.nodeType==3&&A.nodeValue.RTrim().length>0) break;if (A.lastChild) A=A.lastChild;else return this.GetPreviousSourceElement(A,B,C,D);};return null;},GetNextSourceElement:function(A,B,C,D,E){while((A=this.GetNextSourceNode(A,E))){if (A.nodeType==1){if (C&&A.nodeName.IEquals(C)) break;if (D&&A.nodeName.IEquals(D)) return this.GetNextSourceElement(A,B,C,D);return A;}else if (B&&A.nodeType==3&&A.nodeValue.RTrim().length>0) break;};return null;},GetNextSourceNode:function(A,B,C,D){if (!A) return null;var E;if (!B&&A.firstChild) E=A.firstChild;else{if (D&&A==D) return null;E=A.nextSibling;if (!E&&(!D||D!=A.parentNode)) return this.GetNextSourceNode(A.parentNode,true,C,D);};if (C&&E&&E.nodeType!=C) return this.GetNextSourceNode(E,false,C,D);return E;},GetPreviousSourceNode:function(A,B,C,D){if (!A) return null;var E;if (!B&&A.lastChild) E=A.lastChild;else{if (D&&A==D) return null;E=A.previousSibling;if (!E&&(!D||D!=A.parentNode)) return this.GetPreviousSourceNode(A.parentNode,true,C,D);};if (C&&E&&E.nodeType!=C) return this.GetPreviousSourceNode(E,false,C,D);return E;},InsertAfterNode:function(A,B){return A.parentNode.insertBefore(B,A.nextSibling);},GetParents:function(A){var B=[];while (A){B.unshift(A);A=A.parentNode;};return B;},GetCommonParents:function(A,B){var C=this.GetParents(A);var D=this.GetParents(B);var E=[];for (var i=0;i<C.length;i++){if (C[i]==D[i]) E.push(C[i]);};return E;},GetCommonParentNode:function(A,B,C){var D={};if (!C.pop) C=[C];while (C.length>0) D[C.pop().toLowerCase()]=1;var E=this.GetCommonParents(A,B);var F=null;while ((F=E.pop())){if (D[F.nodeName.toLowerCase()]) return F;};return null;},GetIndexOf:function(A){var B=A.parentNode?A.parentNode.firstChild:null;var C=-1;while (B){C++;if (B==A) return C;B=B.nextSibling;};return-1;},PaddingNode:null,EnforcePaddingNode:function(A,B){try{if (!A||!A.body) return;}catch (e){return;};this.CheckAndRemovePaddingNode(A,B,true);try{if (A.body.lastChild&&(A.body.lastChild.nodeType!=1||A.body.lastChild.tagName.toLowerCase()==B.toLowerCase())) return;}catch (e){return;};var C=A.createElement(B);if (FCKBrowserInfo.IsGecko&&FCKListsLib.NonEmptyBlockElements[B]) FCKTools.AppendBogusBr(C);this.PaddingNode=C;if (A.body.childNodes.length==1&&A.body.firstChild.nodeType==1&&A.body.firstChild.tagName.toLowerCase()=='br'&&(A.body.firstChild.getAttribute('_moz_dirty')!=null||A.body.firstChild.getAttribute('type')=='_moz')) A.body.replaceChild(C,A.body.firstChild);else A.body.appendChild(C);},CheckAndRemovePaddingNode:function(A,B,C){var D=this.PaddingNode;if (!D) return;try{if (D.parentNode!=A.body||D.tagName.toLowerCase()!=B||(D.childNodes.length>1)||(D.firstChild&&D.firstChild.nodeValue!='\xa0'&&String(D.firstChild.tagName).toLowerCase()!='br')){this.PaddingNode=null;return;}}catch (e){this.PaddingNode=null;return;};if (!C){if (D.parentNode.childNodes.length>1) D.parentNode.removeChild(D);this.PaddingNode=null;}},HasAttribute:function(A,B){if (A.hasAttribute) return A.hasAttribute(B);else{var C=A.attributes[B];return (C!=undefined&&C.specified);}},HasAttributes:function(A){var B=A.attributes;for (var i=0;i<B.length;i++){if (FCKBrowserInfo.IsIE&&B[i].nodeName=='class'){if (A.className.length>0) return true;}else if (B[i].specified) return true;};return false;},RemoveAttribute:function(A,B){if (FCKBrowserInfo.IsIE&&B.toLowerCase()=='class') B='className';return A.removeAttribute(B,0);},RemoveAttributes:function (A,B){for (var i=0;i<B.length;i++) this.RemoveAttribute(A,B[i]);},GetAttributeValue:function(A,B){var C=B;if (typeof B=='string') B=A.attributes[B];else C=B.nodeName;if (B&&B.specified){if (C=='style') return A.style.cssText;else if (C=='class'||C.indexOf('on')==0) return B.nodeValue;else{return A.getAttribute(C,2);}};return null;},Contains:function(A,B){if (A.contains&&B.nodeType==1) return A.contains(B);while ((B=B.parentNode)){if (B==A) return true;};return false;},BreakParent:function(A,B,C){var D=C||new FCKDomRange(FCKTools.GetElementWindow(A));D.SetStart(A,4);D.SetEnd(B,4);var E=D.ExtractContents();D.InsertNode(A.parentNode.removeChild(A));E.InsertAfterNode(A);D.Release(!!C);},GetNodeAddress:function(A,B){var C=[];while (A&&A!=FCKTools.GetElementDocument(A).documentElement){var D=A.parentNode;var E=-1;for(var i=0;i<D.childNodes.length;i++){var F=D.childNodes[i];if (B===true&&F.nodeType==3&&F.previousSibling&&F.previousSibling.nodeType==3) continue;E++;if (D.childNodes[i]==A) break;};C.unshift(E);A=A.parentNode;};return C;},GetNodeFromAddress:function(A,B,C){var D=A.documentElement;for (var i=0;i<B.length;i++){var E=B[i];if (!C){D=D.childNodes[E];continue;};var F=-1;for (var j=0;j<D.childNodes.length;j++){var G=D.childNodes[j];if (C===true&&G.nodeType==3&&G.previousSibling&&G.previousSibling.nodeType==3) continue;F++;if (F==E){D=G;break;}}};return D;},CloneElement:function(A){A=A.cloneNode(false);A.removeAttribute('id',false);return A;},ClearElementJSProperty:function(A,B){if (FCKBrowserInfo.IsIE) A.removeAttribute(B);else delete A[B];},SetElementMarker:function (A,B,C,D){var E=String(parseInt(Math.random()*0xffffffff,10));B._FCKMarkerId=E;B[C]=D;if (!A[E]) A[E]={ 'element':B,'markers':{} };A[E]['markers'][C]=D;},ClearElementMarkers:function(A,B,C){var D=B._FCKMarkerId;if (!D) return;this.ClearElementJSProperty(B,'_FCKMarkerId');for (var j in A[D]['markers']) this.ClearElementJSProperty(B,j);if (C) delete A[D];},ClearAllMarkers:function(A){for (var i in A) this.ClearElementMarkers(A,A[i]['element'],true);},ListToArray:function(A,B,C,D,E){if (!A.nodeName.IEquals(['ul','ol'])) return [];if (!D) D=0;if (!C) C=[];for (var i=0;i<A.childNodes.length;i++){var F=A.childNodes[i];if (!F.nodeName.IEquals('li')) continue;var G={ 'parent':A,'indent':D,'contents':[] };if (!E){G.grandparent=A.parentNode;if (G.grandparent&&G.grandparent.nodeName.IEquals('li')) G.grandparent=G.grandparent.parentNode;}else G.grandparent=E;if (B) this.SetElementMarker(B,F,'_FCK_ListArray_Index',C.length);C.push(G);for (var j=0;j<F.childNodes.length;j++){var H=F.childNodes[j];if (H.nodeName.IEquals(['ul','ol'])) this.ListToArray(H,B,C,D+1,G.grandparent);else G.contents.push(H);}};return C;},ArrayToList:function(A,B,C){if (C==undefined) C=0;if (!A||A.length<C+1) return null;var D=FCKTools.GetElementDocument(A[C].parent);var E=D.createDocumentFragment();var F=null;var G=C;var H=Math.max(A[C].indent,0);var I=null;while (true){var J=A[G];if (J.indent==H){if (!F||A[G].parent.nodeName!=F.nodeName){F=A[G].parent.cloneNode(false);E.appendChild(F);};I=D.createElement('li');F.appendChild(I);for (var i=0;i<J.contents.length;i++) I.appendChild(J.contents[i].cloneNode(true));G++;}else if (J.indent==Math.max(H,0)+1){var K=this.ArrayToList(A,null,G);I.appendChild(K.listNode);G=K.nextIndex;}else if (J.indent==-1&&C==0&&J.grandparent){var I;if (J.grandparent.nodeName.IEquals(['ul','ol'])) I=D.createElement('li');else{if (FCKConfig.EnterMode.IEquals(['div','p'])&&!J.grandparent.nodeName.IEquals('td')) I=D.createElement(FCKConfig.EnterMode);else I=D.createDocumentFragment();};for (var i=0;i<J.contents.length;i++) I.appendChild(J.contents[i].cloneNode(true));if (I.nodeType==11){if (I.lastChild&&I.lastChild.getAttribute&&I.lastChild.getAttribute('type')=='_moz') I.removeChild(I.lastChild);I.appendChild(D.createElement('br'));};if (I.nodeName.IEquals(FCKConfig.EnterMode)&&I.firstChild){this.TrimNode(I);if (FCKListsLib.BlockBoundaries[I.firstChild.nodeName.toLowerCase()]){var M=D.createDocumentFragment();while (I.firstChild) M.appendChild(I.removeChild(I.firstChild));I=M;}};if (FCKBrowserInfo.IsGeckoLike&&I.nodeName.IEquals(['div','p'])) FCKTools.AppendBogusBr(I);E.appendChild(I);F=null;G++;}else return null;if (A.length<=G||Math.max(A[G].indent,0)<H){break;}};if (B){var N=E.firstChild;while (N){if (N.nodeType==1) this.ClearElementMarkers(B,N);N=this.GetNextSourceNode(N);}};return { 'listNode':E,'nextIndex':G };},GetNextSibling:function(A,B){A=A.nextSibling;while (A&&!B&&A.nodeType!=1&&(A.nodeType!=3||A.nodeValue.length==0)) A=A.nextSibling;return A;},GetPreviousSibling:function(A,B){A=A.previousSibling;while (A&&!B&&A.nodeType!=1&&(A.nodeType!=3||A.nodeValue.length==0)) A=A.previousSibling;return A;},CheckIsEmptyElement:function(A,B){var C=A.firstChild;var D;while (C){if (C.nodeType==1){if (D||!FCKListsLib.InlineNonEmptyElements[C.nodeName.toLowerCase()]) return false;if (!B||B(C)===true) D=C;}else if (C.nodeType==3&&C.nodeValue.length>0) return false;C=C.nextSibling;};return D?this.CheckIsEmptyElement(D,B):true;},SetElementStyles:function(A,B){var C=A.style;for (var D in B) C[D]=B[D];},SetOpacity:function(A,B){if (FCKBrowserInfo.IsIE){B=Math.round(B*100);A.style.filter=(B>100?'':'progid:DXImageTransform.Microsoft.Alpha(opacity='+B+')');}else A.style.opacity=B;},GetCurrentElementStyle:function(A,B){if (FCKBrowserInfo.IsIE) return A.currentStyle[B];else return A.ownerDocument.defaultView.getComputedStyle(A,'').getPropertyValue(B);},GetPositionedAncestor:function(A){var B=A;while (B!=FCKTools.GetElementDocument(B).documentElement){if (this.GetCurrentElementStyle(B,'position')!='static') return B;if (B==FCKTools.GetElementDocument(B).documentElement&&currentWindow!=w) B=currentWindow.frameElement;else B=B.parentNode;};return null;},ScrollIntoView:function(A,B){var C=FCKTools.GetElementWindow(A);var D=FCKTools.GetViewPaneSize(C).Height;var E=D*-1;if (B===false){E+=A.offsetHeight||0;E+=parseInt(this.GetCurrentElementStyle(A,'marginBottom')||0,10)||0;};var F=FCKTools.GetDocumentPosition(C,A);E+=F.y;var G=FCKTools.GetScrollPosition(C).Y;if (E>0&&(E>G||E<G-D)) C.scrollTo(0,E);},CheckIsEditable:function(A){var B=A.nodeName.toLowerCase();var C=FCK.DTD[B]||FCK.DTD.span;return (C['#']&&!FCKListsLib.NonEditableElements[B]);},GetSelectedDivContainers:function(){var A=[];var B=new FCKDomRange(FCK.EditorWindow);B.MoveToSelection();var C=B.GetTouchedStartNode();var D=B.GetTouchedEndNode();var E=C;if (C==D){while (D.nodeType==1&&D.lastChild) D=D.lastChild;D=FCKDomTools.GetNextSourceNode(D);}while (E&&E!=D){if (E.nodeType!=3||!/^[ \t\n]*$/.test(E.nodeValue)){var F=new FCKElementPath(E);var G=F.BlockLimit;if (G&&G.nodeName.IEquals('div')&&A.IndexOf(G)==-1) A.push(G);};E=FCKDomTools.GetNextSourceNode(E);};return A;}};
+var FCKTools={};FCKTools.CreateBogusBR=function(A){var B=A.createElement('br');B.setAttribute('type','_moz');return B;};FCKTools.FixCssUrls=function(A,B){if (!A||A.length==0) return B;return B.replace(/url\s*\(([\s'"]*)(.*?)([\s"']*)\)/g,function(match,opener,path,closer){if (/^\/|^\w?:/.test(path)) return match;else return 'url('+opener+A+path+closer+')';});};FCKTools._GetUrlFixedCss=function(A,B){var C=A.match(/^([^|]+)\|([\s\S]*)/);if (C) return FCKTools.FixCssUrls(C[1],C[2]);else return A;};FCKTools.AppendStyleSheet=function(A,B){if (!B) return [];if (typeof(B)=='string'){if (/[\\\/\.][^{}]*$/.test(B)){return this.AppendStyleSheet(A,B.split(','));}else return [this.AppendStyleString(A,FCKTools._GetUrlFixedCss(B))];}else{var C=[];for (var i=0;i<B.length;i++) C.push(this._AppendStyleSheet(A,B[i]));return C;}};FCKTools.GetStyleHtml=(function(){var A=function(styleDef,markTemp){if (styleDef.length==0) return '';var B=markTemp?' _fcktemp="true"':'';return '<style type="text/css"'+B+'>'+styleDef+'</style>';};var C=function(cssFileUrl,markTemp){if (cssFileUrl.length==0) return '';var B=markTemp?' _fcktemp="true"':'';return '<link href="'+cssFileUrl+'" type="text/css" rel="stylesheet" '+B+'/>';};return function(cssFileOrArrayOrDef,markTemp){if (!cssFileOrArrayOrDef) return '';if (typeof(cssFileOrArrayOrDef)=='string'){if (/[\\\/\.][^{}]*$/.test(cssFileOrArrayOrDef)){return this.GetStyleHtml(cssFileOrArrayOrDef.split(','),markTemp);}else return A(this._GetUrlFixedCss(cssFileOrArrayOrDef),markTemp);}else{var E='';for (var i=0;i<cssFileOrArrayOrDef.length;i++) E+=C(cssFileOrArrayOrDef[i],markTemp);return E;}}})();FCKTools.GetElementDocument=function (A){return A.ownerDocument||A.document;};FCKTools.GetElementWindow=function(A){return this.GetDocumentWindow(this.GetElementDocument(A));};FCKTools.GetDocumentWindow=function(A){if (FCKBrowserInfo.IsSafari&&!A.parentWindow) this.FixDocumentParentWindow(window.top);return A.parentWindow||A.defaultView;};FCKTools.FixDocumentParentWindow=function(A){if (A.document) A.document.parentWindow=A;for (var i=0;i<A.frames.length;i++) FCKTools.FixDocumentParentWindow(A.frames[i]);};FCKTools.HTMLEncode=function(A){if (!A) return '';A=A.replace(/&/g,'&amp;');A=A.replace(/</g,'&lt;');A=A.replace(/>/g,'&gt;');return A;};FCKTools.HTMLDecode=function(A){if (!A) return '';A=A.replace(/&gt;/g,'>');A=A.replace(/&lt;/g,'<');A=A.replace(/&amp;/g,'&');return A;};FCKTools._ProcessLineBreaksForPMode=function(A,B,C,D,E){var F=0;var G="<p>";var H="</p>";var I="<br />";if (C){G="<li>";H="</li>";F=1;}while (D&&D!=A.FCK.EditorDocument.body){if (D.tagName.toLowerCase()=='p'){F=1;break;};D=D.parentNode;};for (var i=0;i<B.length;i++){var c=B.charAt(i);if (c=='\r') continue;if (c!='\n'){E.push(c);continue;};var n=B.charAt(i+1);if (n=='\r'){i++;n=B.charAt(i+1);};if (n=='\n'){i++;if (F) E.push(H);E.push(G);F=1;}else E.push(I);}};FCKTools._ProcessLineBreaksForDivMode=function(A,B,C,D,E){var F=0;var G="<div>";var H="</div>";if (C){G="<li>";H="</li>";F=1;}while (D&&D!=A.FCK.EditorDocument.body){if (D.tagName.toLowerCase()=='div'){F=1;break;};D=D.parentNode;};for (var i=0;i<B.length;i++){var c=B.charAt(i);if (c=='\r') continue;if (c!='\n'){E.push(c);continue;};if (F){if (E[E.length-1]==G){E.push("&nbsp;");};E.push(H);};E.push(G);F=1;};if (F) E.push(H);};FCKTools._ProcessLineBreaksForBrMode=function(A,B,C,D,E){var F=0;var G="<br />";var H="";if (C){G="<li>";H="</li>";F=1;};for (var i=0;i<B.length;i++){var c=B.charAt(i);if (c=='\r') continue;if (c!='\n'){E.push(c);continue;};if (F&&H.length) E.push (H);E.push(G);F=1;}};FCKTools.ProcessLineBreaks=function(A,B,C){var D=B.EnterMode.toLowerCase();var E=[];var F=0;var G=new A.FCKDomRange(A.FCK.EditorWindow);G.MoveToSelection();var H=G._Range.startContainer;while (H&&H.nodeType!=1) H=H.parentNode;if (H&&H.tagName.toLowerCase()=='li') F=1;if (D=='p') this._ProcessLineBreaksForPMode(A,C,F,H,E);else if (D=='div') this._ProcessLineBreaksForDivMode(A,C,F,H,E);else if (D=='br') this._ProcessLineBreaksForBrMode(A,C,F,H,E);return E.join("");};FCKTools.AddSelectOption=function(A,B,C){var D=FCKTools.GetElementDocument(A).createElement("OPTION");D.text=B;D.value=C;A.options.add(D);return D;};FCKTools.RunFunction=function(A,B,C,D){if (A) this.SetTimeout(A,0,B,C,D);};FCKTools.SetTimeout=function(A,B,C,D,E){return (E||window).setTimeout(function(){if (D) A.apply(C,[].concat(D));else A.apply(C);},B);};FCKTools.SetInterval=function(A,B,C,D,E){return (E||window).setInterval(function(){A.apply(C,D||[]);},B);};FCKTools.ConvertStyleSizeToHtml=function(A){return A.EndsWith('%')?A:parseInt(A,10);};FCKTools.ConvertHtmlSizeToStyle=function(A){return A.EndsWith('%')?A:(A+'px');};FCKTools.GetElementAscensor=function(A,B){var e=A;var C=","+B.toUpperCase()+",";while (e){if (C.indexOf(","+e.nodeName.toUpperCase()+",")!=-1) return e;e=e.parentNode;};return null;};FCKTools.CreateEventListener=function(A,B){var f=function(){var C=[];for (var i=0;i<arguments.length;i++) C.push(arguments[i]);A.apply(this,C.concat(B));};return f;};FCKTools.IsStrictMode=function(A){return ('CSS1Compat'==(A.compatMode||(FCKBrowserInfo.IsSafari?'CSS1Compat':null)));};FCKTools.ArgumentsToArray=function(A,B,C){B=B||0;C=C||A.length;var D=[];for (var i=B;i<B+C&&i<A.length;i++) D.push(A[i]);return D;};FCKTools.CloneObject=function(A){var B=function() {};B.prototype=A;return new B;};FCKTools.AppendBogusBr=function(A){if (!A) return;var B=this.GetLastItem(A.getElementsByTagName('br'));if (!B||(B.getAttribute('type',2)!='_moz'&&B.getAttribute('_moz_dirty')==null)){var C=this.GetElementDocument(A);if (FCKBrowserInfo.IsOpera) A.appendChild(C.createTextNode(''));else A.appendChild(this.CreateBogusBR(C));}};FCKTools.GetLastItem=function(A){if (A.length>0) return A[A.length-1];return null;};FCKTools.GetDocumentPosition=function(w,A){var x=0;var y=0;var B=A;var C=null;var D=FCKTools.GetElementWindow(B);while (B&&!(D==w&&(B==w.document.body||B==w.document.documentElement))){x+=B.offsetLeft-B.scrollLeft;y+=B.offsetTop-B.scrollTop;if (!FCKBrowserInfo.IsOpera){var E=C;while (E&&E!=B){x-=E.scrollLeft;y-=E.scrollTop;E=E.parentNode;}};C=B;if (B.offsetParent) B=B.offsetParent;else{if (D!=w){B=D.frameElement;C=null;if (B) D=B.contentWindow.parent;}else B=null;}};if (FCKDomTools.GetCurrentElementStyle(w.document.body,'position')!='static'||(FCKBrowserInfo.IsIE&&FCKDomTools.GetPositionedAncestor(A)==null)){x+=w.document.body.offsetLeft;y+=w.document.body.offsetTop;};return { "x":x,"y":y };};FCKTools.GetWindowPosition=function(w,A){var B=this.GetDocumentPosition(w,A);var C=FCKTools.GetScrollPosition(w);B.x-=C.X;B.y-=C.Y;return B;};FCKTools.ProtectFormStyles=function(A){if (!A||A.nodeType!=1||A.tagName.toLowerCase()!='form') return [];var B=[];var C=['style','className'];for (var i=0;i<C.length;i++){var D=C[i];if (A.elements.namedItem(D)){var E=A.elements.namedItem(D);B.push([E,E.nextSibling]);A.removeChild(E);}};return B;};FCKTools.RestoreFormStyles=function(A,B){if (!A||A.nodeType!=1||A.tagName.toLowerCase()!='form') return;if (B.length>0){for (var i=B.length-1;i>=0;i--){var C=B[i][0];var D=B[i][1];if (D) A.insertBefore(C,D);else A.appendChild(C);}}};FCKTools.GetNextNode=function(A,B){if (A.firstChild) return A.firstChild;else if (A.nextSibling) return A.nextSibling;else{var C=A.parentNode;while (C){if (C==B) return null;if (C.nextSibling) return C.nextSibling;else C=C.parentNode;}};return null;};FCKTools.GetNextTextNode=function(A,B,C){node=this.GetNextNode(A,B);if (C&&node&&C(node)) return null;while (node&&node.nodeType!=3){node=this.GetNextNode(node,B);if (C&&node&&C(node)) return null;};return node;};FCKTools.Merge=function(){var A=arguments;var o=A[0];for (var i=1;i<A.length;i++){var B=A[i];for (var p in B) o[p]=B[p];};return o;};FCKTools.IsArray=function(A){return (A instanceof Array);};FCKTools.AppendLengthProperty=function(A,B){var C=0;for (var n in A) C++;return A[B||'length']=C;};FCKTools.NormalizeCssText=function(A){var B=document.createElement('span');B.style.cssText=A;return B.style.cssText;};FCKTools.Bind=function(A,B){return function(){ return B.apply(A,arguments);};};FCKTools.GetVoidUrl=function(){if (FCK_IS_CUSTOM_DOMAIN) return "javascript: void( function(){document.open();document.write('<html><head><title></title></head><body></body></html>');document.domain = '"+FCK_RUNTIME_DOMAIN+"';document.close();}() ) ;";if (FCKBrowserInfo.IsIE){if (FCKBrowserInfo.IsIE7||!FCKBrowserInfo.IsIE6) return "";else return "javascript: '';";};return "javascript: void(0);";};FCKTools.ResetStyles=function(A){A.style.cssText='margin:0;padding:0;border:0;background-color:transparent;background-image:none;';};
 FCKTools.CancelEvent=function(e){if (e) e.preventDefault();};FCKTools.DisableSelection=function(A){if (FCKBrowserInfo.IsGecko) A.style.MozUserSelect='none';else if (FCKBrowserInfo.IsSafari) A.style.KhtmlUserSelect='none';else A.style.userSelect='none';};FCKTools._AppendStyleSheet=function(A,B){var e=A.createElement('LINK');e.rel='stylesheet';e.type='text/css';e.href=B;A.getElementsByTagName("HEAD")[0].appendChild(e);return e;};FCKTools.AppendStyleString=function(A,B){if (!B) return null;var e=A.createElement("STYLE");e.appendChild(A.createTextNode(B));A.getElementsByTagName("HEAD")[0].appendChild(e);return e;};FCKTools.ClearElementAttributes=function(A){for (var i=0;i<A.attributes.length;i++){A.removeAttribute(A.attributes[i].name,0);}};FCKTools.GetAllChildrenIds=function(A){var B=[];var C=function(parent){for (var i=0;i<parent.childNodes.length;i++){var D=parent.childNodes[i].id;if (D&&D.length>0) B[B.length]=D;C(parent.childNodes[i]);}};C(A);return B;};FCKTools.RemoveOuterTags=function(e){var A=e.ownerDocument.createDocumentFragment();for (var i=0;i<e.childNodes.length;i++) A.appendChild(e.childNodes[i].cloneNode(true));e.parentNode.replaceChild(A,e);};FCKTools.CreateXmlObject=function(A){switch (A){case 'XmlHttp':return new XMLHttpRequest();case 'DOMDocument':var B=(new DOMParser()).parseFromString('<tmp></tmp>','text/xml');FCKDomTools.RemoveNode(B.firstChild);return B;};return null;};FCKTools.GetScrollPosition=function(A){return { X:A.pageXOffset,Y:A.pageYOffset };};FCKTools.AddEventListener=function(A,B,C){A.addEventListener(B,C,false);};FCKTools.RemoveEventListener=function(A,B,C){A.removeEventListener(B,C,false);};FCKTools.AddEventListenerEx=function(A,B,C,D){A.addEventListener(B,function(e){C.apply(A,[e].concat(D||[]));},false);};FCKTools.GetViewPaneSize=function(A){return { Width:A.innerWidth,Height:A.innerHeight };};FCKTools.SaveStyles=function(A){var B=FCKTools.ProtectFormStyles(A);var C={};if (A.className.length>0){C.Class=A.className;A.className='';};var D=A.getAttribute('style');if (D&&D.length>0){C.Inline=D;A.setAttribute('style','',0);};FCKTools.RestoreFormStyles(A,B);return C;};FCKTools.RestoreStyles=function(A,B){var C=FCKTools.ProtectFormStyles(A);A.className=B.Class||'';if (B.Inline) A.setAttribute('style',B.Inline,0);else A.removeAttribute('style',0);FCKTools.RestoreFormStyles(A,C);};FCKTools.RegisterDollarFunction=function(A){A.$=function(id){return A.document.getElementById(id);};};FCKTools.AppendElement=function(A,B){return A.appendChild(A.ownerDocument.createElement(B));};FCKTools.GetElementPosition=function(A,B){var c={ X:0,Y:0 };var C=B||window;var D=FCKTools.GetElementWindow(A);var E=null;while (A){var F=D.getComputedStyle(A,'').position;if (F&&F!='static'&&A.style.zIndex!=FCKConfig.FloatingPanelsZIndex) break;c.X+=A.offsetLeft-A.scrollLeft;c.Y+=A.offsetTop-A.scrollTop;if (!FCKBrowserInfo.IsOpera){var G=E;while (G&&G!=A){c.X-=G.scrollLeft;c.Y-=G.scrollTop;G=G.parentNode;}};E=A;if (A.offsetParent) A=A.offsetParent;else{if (D!=C){A=D.frameElement;E=null;if (A) D=FCKTools.GetElementWindow(A);}else{c.X+=A.scrollLeft;c.Y+=A.scrollTop;break;}}};return c;};
-var FCKeditorAPI;function InitializeAPI(){var A=window.parent;if (!(FCKeditorAPI=A.FCKeditorAPI)){var B='window.FCKeditorAPI = {Version : "2.6",VersionBuild : "18638",Instances : new Object(),GetInstance : function( name ){return this.Instances[ name ];},_FormSubmit : function(){for ( var name in FCKeditorAPI.Instances ){var oEditor = FCKeditorAPI.Instances[ name ] ;if ( oEditor.GetParentForm && oEditor.GetParentForm() == this )oEditor.UpdateLinkedField() ;}this._FCKOriginalSubmit() ;},_FunctionQueue	: {Functions : new Array(),IsRunning : false,Add : function( f ){this.Functions.push( f );if ( !this.IsRunning )this.StartNext();},StartNext : function(){var aQueue = this.Functions ;if ( aQueue.length > 0 ){this.IsRunning = true;aQueue[0].call();}else this.IsRunning = false;},Remove : function( f ){var aQueue = this.Functions;var i = 0, fFunc;while( (fFunc = aQueue[ i ]) ){if ( fFunc == f )aQueue.splice( i,1 );i++ ;}this.StartNext();}}}';if (A.execScript) A.execScript(B,'JavaScript');else{if (FCKBrowserInfo.IsGecko10){eval.call(A,B);}else if(FCKBrowserInfo.IsAIR){FCKAdobeAIR.FCKeditorAPI_Evaluate(A,B);}else if (FCKBrowserInfo.IsSafari||FCKBrowserInfo.IsGecko19){var C=A.document;var D=C.createElement('script');D.appendChild(C.createTextNode(B));C.documentElement.appendChild(D);}else A.eval(B);};FCKeditorAPI=A.FCKeditorAPI;FCKeditorAPI.__Instances=FCKeditorAPI.Instances;};FCKeditorAPI.Instances[FCK.Name]=FCK;};function _AttachFormSubmitToAPI(){var A=FCK.GetParentForm();if (A){FCKTools.AddEventListener(A,'submit',FCK.UpdateLinkedField);if (!A._FCKOriginalSubmit&&(typeof(A.submit)=='function'||(!A.submit.tagName&&!A.submit.length))){A._FCKOriginalSubmit=A.submit;A.submit=FCKeditorAPI._FormSubmit;}}};function FCKeditorAPI_Cleanup(){if (!window.FCKUnloadFlag) return;delete FCKeditorAPI.Instances[FCK.Name];};function FCKeditorAPI_ConfirmCleanup(){window.FCKUnloadFlag=true;};FCKTools.AddEventListener(window,'unload',FCKeditorAPI_Cleanup);FCKTools.AddEventListener(window,'beforeunload',FCKeditorAPI_ConfirmCleanup);
+var FCKeditorAPI;function InitializeAPI(){var A=window.parent;if (!(FCKeditorAPI=A.FCKeditorAPI)){var B='window.FCKeditorAPI = {Version : "2.6.3",VersionBuild : "19836",Instances : new Object(),GetInstance : function( name ){return this.Instances[ name ];},_FormSubmit : function(){for ( var name in FCKeditorAPI.Instances ){var oEditor = FCKeditorAPI.Instances[ name ] ;if ( oEditor.GetParentForm && oEditor.GetParentForm() == this )oEditor.UpdateLinkedField() ;}this._FCKOriginalSubmit() ;},_FunctionQueue	: {Functions : new Array(),IsRunning : false,Add : function( f ){this.Functions.push( f );if ( !this.IsRunning )this.StartNext();},StartNext : function(){var aQueue = this.Functions ;if ( aQueue.length > 0 ){this.IsRunning = true;aQueue[0].call();}else this.IsRunning = false;},Remove : function( f ){var aQueue = this.Functions;var i = 0, fFunc;while( (fFunc = aQueue[ i ]) ){if ( fFunc == f )aQueue.splice( i,1 );i++ ;}this.StartNext();}}}';if (A.execScript) A.execScript(B,'JavaScript');else{if (FCKBrowserInfo.IsGecko10){eval.call(A,B);}else if(FCKBrowserInfo.IsAIR){FCKAdobeAIR.FCKeditorAPI_Evaluate(A,B);}else if (FCKBrowserInfo.IsSafari){var C=A.document;var D=C.createElement('script');D.appendChild(C.createTextNode(B));C.documentElement.appendChild(D);}else A.eval(B);};FCKeditorAPI=A.FCKeditorAPI;FCKeditorAPI.__Instances=FCKeditorAPI.Instances;};FCKeditorAPI.Instances[FCK.Name]=FCK;};function _AttachFormSubmitToAPI(){var A=FCK.GetParentForm();if (A){FCKTools.AddEventListener(A,'submit',FCK.UpdateLinkedField);if (!A._FCKOriginalSubmit&&(typeof(A.submit)=='function'||(!A.submit.tagName&&!A.submit.length))){A._FCKOriginalSubmit=A.submit;A.submit=FCKeditorAPI._FormSubmit;}}};function FCKeditorAPI_Cleanup(){if (window.FCKConfig&&FCKConfig.MsWebBrowserControlCompat&&!window.FCKUnloadFlag) return;delete FCKeditorAPI.Instances[FCK.Name];};function FCKeditorAPI_ConfirmCleanup(){if (window.FCKConfig&&FCKConfig.MsWebBrowserControlCompat) window.FCKUnloadFlag=true;};FCKTools.AddEventListener(window,'unload',FCKeditorAPI_Cleanup);FCKTools.AddEventListener(window,'beforeunload',FCKeditorAPI_ConfirmCleanup);
 var FCKImagePreloader=function(){this._Images=[];};FCKImagePreloader.prototype={AddImages:function(A){if (typeof(A)=='string') A=A.split(';');this._Images=this._Images.concat(A);},Start:function(){var A=this._Images;this._PreloadCount=A.length;for (var i=0;i<A.length;i++){var B=document.createElement('img');FCKTools.AddEventListenerEx(B,'load',_FCKImagePreloader_OnImage,this);FCKTools.AddEventListenerEx(B,'error',_FCKImagePreloader_OnImage,this);B.src=A[i];_FCKImagePreloader_ImageCache.push(B);}}};var _FCKImagePreloader_ImageCache=[];function _FCKImagePreloader_OnImage(A,B){if ((--B._PreloadCount)==0&&B.OnComplete) B.OnComplete();};
-var FCKRegexLib={AposEntity:/&apos;/gi,ObjectElements:/^(?:IMG|TABLE|TR|TD|TH|INPUT|SELECT|TEXTAREA|HR|OBJECT|A|UL|OL|LI)$/i,NamedCommands:/^(?:Cut|Copy|Paste|Print|SelectAll|RemoveFormat|Unlink|Undo|Redo|Bold|Italic|Underline|StrikeThrough|Subscript|Superscript|JustifyLeft|JustifyCenter|JustifyRight|JustifyFull|Outdent|Indent|InsertOrderedList|InsertUnorderedList|InsertHorizontalRule)$/i,BeforeBody:/(^[\s\S]*\<body[^\>]*\>)/i,AfterBody:/(\<\/body\>[\s\S]*$)/i,ToReplace:/___fcktoreplace:([\w]+)/ig,MetaHttpEquiv:/http-equiv\s*=\s*["']?([^"' ]+)/i,HasBaseTag:/<base /i,HasBodyTag:/<body[\s|>]/i,HtmlOpener:/<html\s?[^>]*>/i,HeadOpener:/<head\s?[^>]*>/i,HeadCloser:/<\/head\s*>/i,FCK_Class:/\s*FCK__[^ ]*(?=\s+|$)/,ElementName:/(^[a-z_:][\w.\-:]*\w$)|(^[a-z_]$)/,ForceSimpleAmpersand:/___FCKAmp___/g,SpaceNoClose:/\/>/g,EmptyParagraph:/^<(p|div|address|h\d|center)(?=[ >])[^>]*>\s*(<\/\1>)?$/,EmptyOutParagraph:/^<(p|div|address|h\d|center)(?=[ >])[^>]*>(?:\s*|&nbsp;)(<\/\1>)?$/,TagBody:/></,GeckoEntitiesMarker:/#\?-\:/g,ProtectUrlsImg:/<img(?=\s).*?\ssrc=((?:(?:\s*)("|').*?\2)|(?:[^"'][^ >]+))/gi,ProtectUrlsA:/<a(?=\s).*?\shref=((?:(?:\s*)("|').*?\2)|(?:[^"'][^ >]+))/gi,ProtectUrlsArea:/<area(?=\s).*?\shref=((?:(?:\s*)("|').*?\2)|(?:[^"'][^ >]+))/gi,Html4DocType:/HTML 4\.0 Transitional/i,DocTypeTag:/<!DOCTYPE[^>]*>/i,TagsWithEvent:/<[^\>]+ on\w+[\s\r\n]*=[\s\r\n]*?('|")[\s\S]+?\>/g,EventAttributes:/\s(on\w+)[\s\r\n]*=[\s\r\n]*?('|")([\s\S]*?)\2/g,ProtectedEvents:/\s\w+_fckprotectedatt="([^"]+)"/g,StyleProperties:/\S+\s*:/g,InvalidSelfCloseTags:/(<(?!base|meta|link|hr|br|param|img|area|input)([a-zA-Z0-9:]+)[^>]*)\/>/gi,StyleVariableAttName:/#\(\s*("|')(.+?)\1[^\)]*\s*\)/g,RegExp:/^\/(.*)\/([gim]*)$/,HtmlTag:/<[^\s<>](?:"[^"]*"|'[^']*'|[^<])*>/};
+var FCKRegexLib={AposEntity:/&apos;/gi,ObjectElements:/^(?:IMG|TABLE|TR|TD|TH|INPUT|SELECT|TEXTAREA|HR|OBJECT|A|UL|OL|LI)$/i,NamedCommands:/^(?:Cut|Copy|Paste|Print|SelectAll|RemoveFormat|Unlink|Undo|Redo|Bold|Italic|Underline|StrikeThrough|Subscript|Superscript|JustifyLeft|JustifyCenter|JustifyRight|JustifyFull|Outdent|Indent|InsertOrderedList|InsertUnorderedList|InsertHorizontalRule)$/i,BeforeBody:/(^[\s\S]*\<body[^\>]*\>)/i,AfterBody:/(\<\/body\>[\s\S]*$)/i,ToReplace:/___fcktoreplace:([\w]+)/ig,MetaHttpEquiv:/http-equiv\s*=\s*["']?([^"' ]+)/i,HasBaseTag:/<base /i,HasBodyTag:/<body[\s|>]/i,HtmlOpener:/<html\s?[^>]*>/i,HeadOpener:/<head\s?[^>]*>/i,HeadCloser:/<\/head\s*>/i,FCK_Class:/\s*FCK__[^ ]*(?=\s+|$)/,ElementName:/(^[a-z_:][\w.\-:]*\w$)|(^[a-z_]$)/,ForceSimpleAmpersand:/___FCKAmp___/g,SpaceNoClose:/\/>/g,EmptyParagraph:/^<(p|div|address|h\d|center)(?=[ >])[^>]*>\s*(<\/\1>)?$/,EmptyOutParagraph:/^<(p|div|address|h\d|center)(?=[ >])[^>]*>(?:\s*|&nbsp;)(<\/\1>)?$/,TagBody:/></,GeckoEntitiesMarker:/#\?-\:/g,ProtectUrlsImg:/<img(?=\s).*?\ssrc=((?:(?:\s*)("|').*?\2)|(?:[^"'][^ >]+))/gi,ProtectUrlsA:/<a(?=\s).*?\shref=((?:(?:\s*)("|').*?\2)|(?:[^"'][^ >]+))/gi,ProtectUrlsArea:/<area(?=\s).*?\shref=((?:(?:\s*)("|').*?\2)|(?:[^"'][^ >]+))/gi,Html4DocType:/HTML 4\.0 Transitional/i,DocTypeTag:/<!DOCTYPE[^>]*>/i,HtmlDocType:/DTD HTML/,TagsWithEvent:/<[^\>]+ on\w+[\s\r\n]*=[\s\r\n]*?('|")[\s\S]+?\>/g,EventAttributes:/\s(on\w+)[\s\r\n]*=[\s\r\n]*?('|")([\s\S]*?)\2/g,ProtectedEvents:/\s\w+_fckprotectedatt="([^"]+)"/g,StyleProperties:/\S+\s*:/g,InvalidSelfCloseTags:/(<(?!base|meta|link|hr|br|param|img|area|input)([a-zA-Z0-9:]+)[^>]*)\/>/gi,StyleVariableAttName:/#\(\s*("|')(.+?)\1[^\)]*\s*\)/g,RegExp:/^\/(.*)\/([gim]*)$/,HtmlTag:/<[^\s<>](?:"[^"]*"|'[^']*'|[^<])*>/};
 var FCKListsLib={BlockElements:{ address:1,blockquote:1,center:1,div:1,dl:1,fieldset:1,form:1,h1:1,h2:1,h3:1,h4:1,h5:1,h6:1,hr:1,marquee:1,noscript:1,ol:1,p:1,pre:1,script:1,table:1,ul:1 },NonEmptyBlockElements:{ p:1,div:1,form:1,h1:1,h2:1,h3:1,h4:1,h5:1,h6:1,address:1,pre:1,ol:1,ul:1,li:1,td:1,th:1 },InlineChildReqElements:{ abbr:1,acronym:1,b:1,bdo:1,big:1,cite:1,code:1,del:1,dfn:1,em:1,font:1,i:1,ins:1,label:1,kbd:1,q:1,samp:1,small:1,span:1,strike:1,strong:1,sub:1,sup:1,tt:1,u:1,'var':1 },InlineNonEmptyElements:{ a:1,abbr:1,acronym:1,b:1,bdo:1,big:1,cite:1,code:1,del:1,dfn:1,em:1,font:1,i:1,ins:1,label:1,kbd:1,q:1,samp:1,small:1,span:1,strike:1,strong:1,sub:1,sup:1,tt:1,u:1,'var':1 },EmptyElements:{ base:1,col:1,meta:1,link:1,hr:1,br:1,param:1,img:1,area:1,input:1 },PathBlockElements:{ address:1,blockquote:1,dl:1,h1:1,h2:1,h3:1,h4:1,h5:1,h6:1,p:1,pre:1,li:1,dt:1,de:1 },PathBlockLimitElements:{ body:1,div:1,td:1,th:1,caption:1,form:1 },StyleBlockElements:{ address:1,div:1,h1:1,h2:1,h3:1,h4:1,h5:1,h6:1,p:1,pre:1 },StyleObjectElements:{ img:1,hr:1,li:1,table:1,tr:1,td:1,embed:1,object:1,ol:1,ul:1 },NonEditableElements:{ button:1,option:1,script:1,iframe:1,textarea:1,object:1,embed:1,map:1,applet:1 },BlockBoundaries:{ p:1,div:1,h1:1,h2:1,h3:1,h4:1,h5:1,h6:1,hr:1,address:1,pre:1,ol:1,ul:1,li:1,dt:1,de:1,table:1,thead:1,tbody:1,tfoot:1,tr:1,th:1,td:1,caption:1,col:1,colgroup:1,blockquote:1,body:1 },ListBoundaries:{ p:1,div:1,h1:1,h2:1,h3:1,h4:1,h5:1,h6:1,hr:1,address:1,pre:1,ol:1,ul:1,li:1,dt:1,de:1,table:1,thead:1,tbody:1,tfoot:1,tr:1,th:1,td:1,caption:1,col:1,colgroup:1,blockquote:1,body:1,br:1 }};
-var FCKLanguageManager=FCK.Language={AvailableLanguages:{af:'Afrikaans',ar:'Arabic',bg:'Bulgarian',bn:'Bengali/Bangla',bs:'Bosnian',ca:'Catalan',cs:'Czech',da:'Danish',de:'German',el:'Greek',en:'English','en-au':'English (Australia)','en-ca':'English (Canadian)','en-uk':'English (United Kingdom)',eo:'Esperanto',es:'Spanish',et:'Estonian',eu:'Basque',fa:'Persian',fi:'Finnish',fo:'Faroese',fr:'French','fr-ca':'French (Canada)',gl:'Galician',he:'Hebrew',hi:'Hindi',hr:'Croatian',hu:'Hungarian',it:'Italian',ja:'Japanese',km:'Khmer',ko:'Korean',lt:'Lithuanian',lv:'Latvian',mn:'Mongolian',ms:'Malay',nb:'Norwegian Bokmal',nl:'Dutch',no:'Norwegian',pl:'Polish',pt:'Portuguese (Portugal)','pt-br':'Portuguese (Brazil)',ro:'Romanian',ru:'Russian',sk:'Slovak',sl:'Slovenian',sr:'Serbian (Cyrillic)','sr-latn':'Serbian (Latin)',sv:'Swedish',th:'Thai',tr:'Turkish',uk:'Ukrainian',vi:'Vietnamese',zh:'Chinese Traditional','zh-cn':'Chinese Simplified'},GetActiveLanguage:function(){if (FCKConfig.AutoDetectLanguage){var A;if (navigator.userLanguage) A=navigator.userLanguage.toLowerCase();else if (navigator.language) A=navigator.language.toLowerCase();else{return FCKConfig.DefaultLanguage;};if (A.length>=5){A=A.substr(0,5);if (this.AvailableLanguages[A]) return A;};if (A.length>=2){A=A.substr(0,2);if (this.AvailableLanguages[A]) return A;}};return this.DefaultLanguage;},TranslateElements:function(A,B,C,D){var e=A.getElementsByTagName(B);var E,s;for (var i=0;i<e.length;i++){if ((E=e[i].getAttribute('fckLang'))){if ((s=FCKLang[E])){if (D) s=FCKTools.HTMLEncode(s);e[i][C]=s;}}}},TranslatePage:function(A){this.TranslateElements(A,'INPUT','value');this.TranslateElements(A,'SPAN','innerHTML');this.TranslateElements(A,'LABEL','innerHTML');this.TranslateElements(A,'OPTION','innerHTML',true);this.TranslateElements(A,'LEGEND','innerHTML');},Initialize:function(){if (this.AvailableLanguages[FCKConfig.DefaultLanguage]) this.DefaultLanguage=FCKConfig.DefaultLanguage;else this.DefaultLanguage='en';this.ActiveLanguage={};this.ActiveLanguage.Code=this.GetActiveLanguage();this.ActiveLanguage.Name=this.AvailableLanguages[this.ActiveLanguage.Code];}};
+var FCKLanguageManager=FCK.Language={AvailableLanguages:{af:'Afrikaans',ar:'Arabic',bg:'Bulgarian',bn:'Bengali/Bangla',bs:'Bosnian',ca:'Catalan',cs:'Czech',da:'Danish',de:'German',el:'Greek',en:'English','en-au':'English (Australia)','en-ca':'English (Canadian)','en-uk':'English (United Kingdom)',eo:'Esperanto',es:'Spanish',et:'Estonian',eu:'Basque',fa:'Persian',fi:'Finnish',fo:'Faroese',fr:'French','fr-ca':'French (Canada)',gl:'Galician',gu:'Gujarati',he:'Hebrew',hi:'Hindi',hr:'Croatian',hu:'Hungarian',it:'Italian',ja:'Japanese',km:'Khmer',ko:'Korean',lt:'Lithuanian',lv:'Latvian',mn:'Mongolian',ms:'Malay',nb:'Norwegian Bokmal',nl:'Dutch',no:'Norwegian',pl:'Polish',pt:'Portuguese (Portugal)','pt-br':'Portuguese (Brazil)',ro:'Romanian',ru:'Russian',sk:'Slovak',sl:'Slovenian',sr:'Serbian (Cyrillic)','sr-latn':'Serbian (Latin)',sv:'Swedish',th:'Thai',tr:'Turkish',uk:'Ukrainian',vi:'Vietnamese',zh:'Chinese Traditional','zh-cn':'Chinese Simplified'},GetActiveLanguage:function(){if (FCKConfig.AutoDetectLanguage){var A;if (navigator.userLanguage) A=navigator.userLanguage.toLowerCase();else if (navigator.language) A=navigator.language.toLowerCase();else{return FCKConfig.DefaultLanguage;};if (A.length>=5){A=A.substr(0,5);if (this.AvailableLanguages[A]) return A;};if (A.length>=2){A=A.substr(0,2);if (this.AvailableLanguages[A]) return A;}};return this.DefaultLanguage;},TranslateElements:function(A,B,C,D){var e=A.getElementsByTagName(B);var E,s;for (var i=0;i<e.length;i++){if ((E=e[i].getAttribute('fckLang'))){if ((s=FCKLang[E])){if (D) s=FCKTools.HTMLEncode(s);e[i][C]=s;}}}},TranslatePage:function(A){this.TranslateElements(A,'INPUT','value');this.TranslateElements(A,'SPAN','innerHTML');this.TranslateElements(A,'LABEL','innerHTML');this.TranslateElements(A,'OPTION','innerHTML',true);this.TranslateElements(A,'LEGEND','innerHTML');},Initialize:function(){if (this.AvailableLanguages[FCKConfig.DefaultLanguage]) this.DefaultLanguage=FCKConfig.DefaultLanguage;else this.DefaultLanguage='en';this.ActiveLanguage={};this.ActiveLanguage.Code=this.GetActiveLanguage();this.ActiveLanguage.Name=this.AvailableLanguages[this.ActiveLanguage.Code];}};
 var FCKXHtmlEntities={};FCKXHtmlEntities.Initialize=function(){if (FCKXHtmlEntities.Entities) return;var A='';var B,e;if (FCKConfig.ProcessHTMLEntities){FCKXHtmlEntities.Entities={' ':'nbsp','¡':'iexcl','¢':'cent','£':'pound','¤':'curren','¥':'yen','¦':'brvbar','§':'sect','¨':'uml','©':'copy','ª':'ordf','«':'laquo','¬':'not','­':'shy','®':'reg','¯':'macr','°':'deg','±':'plusmn','²':'sup2','³':'sup3','´':'acute','µ':'micro','¶':'para','·':'middot','¸':'cedil','¹':'sup1','º':'ordm','»':'raquo','¼':'frac14','½':'frac12','¾':'frac34','¿':'iquest','×':'times','÷':'divide','ƒ':'fnof','•':'bull','…':'hellip','′':'prime','″':'Prime','‾':'oline','⁄':'frasl','℘':'weierp','ℑ':'image','ℜ':'real','™':'trade','ℵ':'alefsym','←':'larr','↑':'uarr','→':'rarr','↓':'darr','↔':'harr','↵':'crarr','⇐':'lArr','⇑':'uArr','⇒':'rArr','⇓':'dArr','⇔':'hArr','∀':'forall','∂':'part','∃':'exist','∅':'empty','∇':'nabla','∈':'isin','∉':'notin','∋':'ni','∏':'prod','∑':'sum','−':'minus','∗':'lowast','√':'radic','∝':'prop','∞':'infin','∠':'ang','∧':'and','∨':'or','∩':'cap','∪':'cup','∫':'int','∴':'there4','∼':'sim','≅':'cong','≈':'asymp','≠':'ne','≡':'equiv','≤':'le','≥':'ge','⊂':'sub','⊃':'sup','⊄':'nsub','⊆':'sube','⊇':'supe','⊕':'oplus','⊗':'otimes','⊥':'perp','⋅':'sdot','\u2308':'lceil','\u2309':'rceil','\u230a':'lfloor','\u230b':'rfloor','\u2329':'lang','\u232a':'rang','◊':'loz','♠':'spades','♣':'clubs','♥':'hearts','♦':'diams','"':'quot','ˆ':'circ','˜':'tilde',' ':'ensp',' ':'emsp',' ':'thinsp','‌':'zwnj','‍':'zwj','‎':'lrm','‏':'rlm','–':'ndash','—':'mdash','‘':'lsquo','’':'rsquo','‚':'sbquo','“':'ldquo','”':'rdquo','„':'bdquo','†':'dagger','‡':'Dagger','‰':'permil','‹':'lsaquo','›':'rsaquo','€':'euro'};for (e in FCKXHtmlEntities.Entities) A+=e;if (FCKConfig.IncludeLatinEntities){B={'À':'Agrave','Á':'Aacute','Â':'Acirc','Ã':'Atilde','Ä':'Auml','Å':'Aring','Æ':'AElig','Ç':'Ccedil','È':'Egrave','É':'Eacute','Ê':'Ecirc','Ë':'Euml','Ì':'Igrave','Í':'Iacute','Î':'Icirc','Ï':'Iuml','Ð':'ETH','Ñ':'Ntilde','Ò':'Ograve','Ó':'Oacute','Ô':'Ocirc','Õ':'Otilde','Ö':'Ouml','Ø':'Oslash','Ù':'Ugrave','Ú':'Uacute','Û':'Ucirc','Ü':'Uuml','Ý':'Yacute','Þ':'THORN','ß':'szlig','à':'agrave','á':'aacute','â':'acirc','ã':'atilde','ä':'auml','å':'aring','æ':'aelig','ç':'ccedil','è':'egrave','é':'eacute','ê':'ecirc','ë':'euml','ì':'igrave','í':'iacute','î':'icirc','ï':'iuml','ð':'eth','ñ':'ntilde','ò':'ograve','ó':'oacute','ô':'ocirc','õ':'otilde','ö':'ouml','ø':'oslash','ù':'ugrave','ú':'uacute','û':'ucirc','ü':'uuml','ý':'yacute','þ':'thorn','ÿ':'yuml','Œ':'OElig','œ':'oelig','Š':'Scaron','š':'scaron','Ÿ':'Yuml'};for (e in B){FCKXHtmlEntities.Entities[e]=B[e];A+=e;};B=null;};if (FCKConfig.IncludeGreekEntities){B={'Α':'Alpha','Β':'Beta','Γ':'Gamma','Δ':'Delta','Ε':'Epsilon','Ζ':'Zeta','Η':'Eta','Θ':'Theta','Ι':'Iota','Κ':'Kappa','Λ':'Lambda','Μ':'Mu','Ν':'Nu','Ξ':'Xi','Ο':'Omicron','Π':'Pi','Ρ':'Rho','Σ':'Sigma','Τ':'Tau','Υ':'Upsilon','Φ':'Phi','Χ':'Chi','Ψ':'Psi','Ω':'Omega','α':'alpha','β':'beta','γ':'gamma','δ':'delta','ε':'epsilon','ζ':'zeta','η':'eta','θ':'theta','ι':'iota','κ':'kappa','λ':'lambda','μ':'mu','ν':'nu','ξ':'xi','ο':'omicron','π':'pi','ρ':'rho','ς':'sigmaf','σ':'sigma','τ':'tau','υ':'upsilon','φ':'phi','χ':'chi','ψ':'psi','ω':'omega','\u03d1':'thetasym','\u03d2':'upsih','\u03d6':'piv'};for (e in B){FCKXHtmlEntities.Entities[e]=B[e];A+=e;};B=null;}}else{FCKXHtmlEntities.Entities={};A=' ';};var C='['+A+']';if (FCKConfig.ProcessNumericEntities) C='[^ -~]|'+C;var D=FCKConfig.AdditionalNumericEntities;if (D&&D.length>0) C+='|'+FCKConfig.AdditionalNumericEntities;FCKXHtmlEntities.EntitiesRegex=new RegExp(C,'g');};
-var FCKXHtml={};FCKXHtml.CurrentJobNum=0;FCKXHtml.GetXHTML=function(A,B,C){FCKDomTools.CheckAndRemovePaddingNode(FCKTools.GetElementDocument(A),FCKConfig.EnterMode);FCKXHtmlEntities.Initialize();this._NbspEntity=(FCKConfig.ProcessHTMLEntities?'nbsp':'#160');var D=FCK.IsDirty();FCKXHtml.SpecialBlocks=[];this.XML=FCKTools.CreateXmlObject('DOMDocument');this.MainNode=this.XML.appendChild(this.XML.createElement('xhtml'));FCKXHtml.CurrentJobNum++;if (B) this._AppendNode(this.MainNode,A);else this._AppendChildNodes(this.MainNode,A,false);var E=this._GetMainXmlString();this.XML=null;if (FCKBrowserInfo.IsSafari) E=E.replace(/^<xhtml.*?>/,'<xhtml>');E=E.substr(7,E.length-15).Trim();E=E.replace(FCKRegexLib.SpaceNoClose,' />');if (FCKConfig.ForceSimpleAmpersand) E=E.replace(FCKRegexLib.ForceSimpleAmpersand,'&');if (C) E=FCKCodeFormatter.Format(E);for (var i=0;i<FCKXHtml.SpecialBlocks.length;i++){var F=new RegExp('___FCKsi___'+i);E=E.replace(F,FCKXHtml.SpecialBlocks[i]);};E=E.replace(FCKRegexLib.GeckoEntitiesMarker,'&');if (!D) FCK.ResetIsDirty();FCKDomTools.EnforcePaddingNode(FCKTools.GetElementDocument(A),FCKConfig.EnterMode);return E;};FCKXHtml._AppendAttribute=function(A,B,C){try{if (C==undefined||C==null) C='';else if (C.replace){if (FCKConfig.ForceSimpleAmpersand) C=C.replace(/&/g,'___FCKAmp___');C=C.replace(FCKXHtmlEntities.EntitiesRegex,FCKXHtml_GetEntity);};var D=this.XML.createAttribute(B);D.value=C;A.attributes.setNamedItem(D);}catch (e){}};FCKXHtml._AppendChildNodes=function(A,B,C){var D=B.firstChild;while (D){this._AppendNode(A,D);D=D.nextSibling;};if (C&&B.tagName&&B.tagName.toLowerCase()!='pre'){FCKDomTools.TrimNode(A);if (FCKConfig.FillEmptyBlocks){var E=A.lastChild;if (E&&E.nodeType==1&&E.nodeName=='br') this._AppendEntity(A,this._NbspEntity);}};if (A.childNodes.length==0){if (C&&FCKConfig.FillEmptyBlocks){this._AppendEntity(A,this._NbspEntity);return A;};var F=A.nodeName;if (FCKListsLib.InlineChildReqElements[F]) return null;if (!FCKListsLib.EmptyElements[F]) A.appendChild(this.XML.createTextNode(''));};return A;};FCKXHtml._AppendNode=function(A,B){if (!B) return false;switch (B.nodeType){case 1:if (FCKBrowserInfo.IsGecko&&B.tagName.toLowerCase()=='br'&&B.parentNode.tagName.toLowerCase()=='pre'){var C='\r';if (B==B.parentNode.firstChild) C+='\r';return FCKXHtml._AppendNode(A,this.XML.createTextNode(C));};if (B.getAttribute('_fckfakelement')) return FCKXHtml._AppendNode(A,FCK.GetRealElement(B));if (FCKBrowserInfo.IsGecko&&B.nextSibling&&(B.hasAttribute('_moz_editor_bogus_node')||B.getAttribute('type')=='_moz')) return false;if (B.getAttribute('_fcktemp')) return false;var D=B.tagName.toLowerCase();if (FCKBrowserInfo.IsIE){if (B.scopeName&&B.scopeName!='HTML'&&B.scopeName!='FCK') D=B.scopeName.toLowerCase()+':'+D;}else{if (D.StartsWith('fck:')) D=D.Remove(0,4);};if (!FCKRegexLib.ElementName.test(D)) return false;if (B._fckxhtmljob&&B._fckxhtmljob==FCKXHtml.CurrentJobNum) return false;var E=this.XML.createElement(D);FCKXHtml._AppendAttributes(A,B,E,D);B._fckxhtmljob=FCKXHtml.CurrentJobNum;var F=FCKXHtml.TagProcessors[D];if (F) E=F(E,B,A);else E=this._AppendChildNodes(E,B,Boolean(FCKListsLib.NonEmptyBlockElements[D]));if (!E) return false;A.appendChild(E);break;case 3:if (B.parentNode&&B.parentNode.nodeName.IEquals('pre')) return this._AppendTextNode(A,B.nodeValue);return this._AppendTextNode(A,B.nodeValue.ReplaceNewLineChars(' '));case 8:if (FCKBrowserInfo.IsIE&&!B.innerHTML) break;try { A.appendChild(this.XML.createComment(B.nodeValue));}catch (e) {/*Do nothing... probably this is a wrong format comment.*/};break;default:A.appendChild(this.XML.createComment("Element not supported - Type: "+B.nodeType+" Name: "+B.nodeName));break;};return true;};FCKXHtml._AppendSpecialItem=function(A){return '___FCKsi___'+FCKXHtml.SpecialBlocks.AddItem(A);};FCKXHtml._AppendEntity=function(A,B){A.appendChild(this.XML.createTextNode('#?-:'+B+';'));};FCKXHtml._AppendTextNode=function(A,B){var C=B.length>0;if (C) A.appendChild(this.XML.createTextNode(B.replace(FCKXHtmlEntities.EntitiesRegex,FCKXHtml_GetEntity)));return C;};function FCKXHtml_GetEntity(A){var B=FCKXHtmlEntities.Entities[A]||('#'+A.charCodeAt(0));return '#?-:'+B+';';};FCKXHtml.TagProcessors={a:function(A,B){if (B.innerHTML.Trim().length==0&&!B.name) return false;var C=B.getAttribute('_fcksavedurl');if (C!=null) FCKXHtml._AppendAttribute(A,'href',C);if (FCKBrowserInfo.IsIE){if (B.name) FCKXHtml._AppendAttribute(A,'name',B.name);};A=FCKXHtml._AppendChildNodes(A,B,false);return A;},area:function(A,B){var C=B.getAttribute('_fcksavedurl');if (C!=null) FCKXHtml._AppendAttribute(A,'href',C);if (FCKBrowserInfo.IsIE){if (!A.attributes.getNamedItem('coords')){var D=B.getAttribute('coords',2);if (D&&D!='0,0,0') FCKXHtml._AppendAttribute(A,'coords',D);};if (!A.attributes.getNamedItem('shape')){var E=B.getAttribute('shape',2);if (E&&E.length>0) FCKXHtml._AppendAttribute(A,'shape',E.toLowerCase());}};return A;},body:function(A,B){A=FCKXHtml._AppendChildNodes(A,B,false);A.removeAttribute('spellcheck');return A;},iframe:function(A,B){var C=B.innerHTML;if (FCKBrowserInfo.IsGecko) C=FCKTools.HTMLDecode(C);C=C.replace(/\s_fcksavedurl="[^"]*"/g,'');A.appendChild(FCKXHtml.XML.createTextNode(FCKXHtml._AppendSpecialItem(C)));return A;},img:function(A,B){if (!A.attributes.getNamedItem('alt')) FCKXHtml._AppendAttribute(A,'alt','');var C=B.getAttribute('_fcksavedurl');if (C!=null) FCKXHtml._AppendAttribute(A,'src',C);return A;},li:function(A,B,C){if (C.nodeName.IEquals(['ul','ol'])) return FCKXHtml._AppendChildNodes(A,B,true);var D=FCKXHtml.XML.createElement('ul');B._fckxhtmljob=null;do{FCKXHtml._AppendNode(D,B);do{B=FCKDomTools.GetNextSibling(B);} while (B&&B.nodeType==3&&B.nodeValue.Trim().length==0)}	while (B&&B.nodeName.toLowerCase()=='li') return D;},ol:function(A,B,C){if (B.innerHTML.Trim().length==0) return false;var D=C.lastChild;if (D&&D.nodeType==3) D=D.previousSibling;if (D&&D.nodeName.toUpperCase()=='LI'){B._fckxhtmljob=null;FCKXHtml._AppendNode(D,B);return false;};A=FCKXHtml._AppendChildNodes(A,B);return A;},pre:function (A,B){var C=B.firstChild;if (C&&C.nodeType==3) A.appendChild(FCKXHtml.XML.createTextNode(FCKXHtml._AppendSpecialItem('\r\n')));FCKXHtml._AppendChildNodes(A,B,true);return A;},script:function(A,B){if (!A.attributes.getNamedItem('type')) FCKXHtml._AppendAttribute(A,'type','text/javascript');A.appendChild(FCKXHtml.XML.createTextNode(FCKXHtml._AppendSpecialItem(B.text)));return A;},span:function(A,B){if (B.innerHTML.length==0) return false;A=FCKXHtml._AppendChildNodes(A,B,false);return A;},style:function(A,B){if (!A.attributes.getNamedItem('type')) FCKXHtml._AppendAttribute(A,'type','text/css');var C=B.innerHTML;if (FCKBrowserInfo.IsIE) C=C.replace(/^(\r\n|\n|\r)/,'');A.appendChild(FCKXHtml.XML.createTextNode(FCKXHtml._AppendSpecialItem(C)));return A;},title:function(A,B){A.appendChild(FCKXHtml.XML.createTextNode(FCK.EditorDocument.title));return A;}};FCKXHtml.TagProcessors.ul=FCKXHtml.TagProcessors.ol;
-FCKXHtml._GetMainXmlString=function(){return (new XMLSerializer()).serializeToString(this.MainNode);};FCKXHtml._AppendAttributes=function(A,B,C){var D=B.attributes;for (var n=0;n<D.length;n++){var E=D[n];if (E.specified){var F=E.nodeName.toLowerCase();var G;if (F.StartsWith('_fck')) continue;else if (F.indexOf('_moz')==0) continue;else if (F=='class'){G=E.nodeValue.replace(FCKRegexLib.FCK_Class,'');if (G.length==0) continue;}else if (E.nodeValue===true) G=F;else G=B.getAttribute(F,2);this._AppendAttribute(C,F,G);}}};if (FCKBrowserInfo.IsOpera){FCKXHtml.TagProcessors['head']=function(A,B){FCKXHtml.XML._HeadElement=A;A=FCKXHtml._AppendChildNodes(A,B,true);return A;};FCKXHtml.TagProcessors['meta']=function(A,B,C){if (B.parentNode.nodeName.toLowerCase()!='head'){var D=FCKXHtml.XML._HeadElement;if (D&&C!=D){delete B._fckxhtmljob;FCKXHtml._AppendNode(D,B);return null;}};return A;}};
+var FCKXHtml={};FCKXHtml.CurrentJobNum=0;FCKXHtml.GetXHTML=function(A,B,C){FCKDomTools.CheckAndRemovePaddingNode(FCKTools.GetElementDocument(A),FCKConfig.EnterMode);FCKXHtmlEntities.Initialize();this._NbspEntity=(FCKConfig.ProcessHTMLEntities?'nbsp':'#160');var D=FCK.IsDirty();FCKXHtml.SpecialBlocks=[];this.XML=FCKTools.CreateXmlObject('DOMDocument');this.MainNode=this.XML.appendChild(this.XML.createElement('xhtml'));FCKXHtml.CurrentJobNum++;if (B) this._AppendNode(this.MainNode,A);else this._AppendChildNodes(this.MainNode,A,false);var E=this._GetMainXmlString();this.XML=null;if (FCKBrowserInfo.IsSafari) E=E.replace(/^<xhtml.*?>/,'<xhtml>');E=E.substr(7,E.length-15).Trim();if (FCKConfig.DocType.length>0&&FCKRegexLib.HtmlDocType.test(FCKConfig.DocType)) E=E.replace(FCKRegexLib.SpaceNoClose,'>');else E=E.replace(FCKRegexLib.SpaceNoClose,' />');if (FCKConfig.ForceSimpleAmpersand) E=E.replace(FCKRegexLib.ForceSimpleAmpersand,'&');if (C) E=FCKCodeFormatter.Format(E);for (var i=0;i<FCKXHtml.SpecialBlocks.length;i++){var F=new RegExp('___FCKsi___'+i);E=E.replace(F,FCKXHtml.SpecialBlocks[i]);};E=E.replace(FCKRegexLib.GeckoEntitiesMarker,'&');if (!D) FCK.ResetIsDirty();FCKDomTools.EnforcePaddingNode(FCKTools.GetElementDocument(A),FCKConfig.EnterMode);return E;};FCKXHtml._AppendAttribute=function(A,B,C){try{if (C==undefined||C==null) C='';else if (C.replace){if (FCKConfig.ForceSimpleAmpersand) C=C.replace(/&/g,'___FCKAmp___');C=C.replace(FCKXHtmlEntities.EntitiesRegex,FCKXHtml_GetEntity);};var D=this.XML.createAttribute(B);D.value=C;A.attributes.setNamedItem(D);}catch (e){}};FCKXHtml._AppendChildNodes=function(A,B,C){var D=B.firstChild;while (D){this._AppendNode(A,D);D=D.nextSibling;};if (C&&B.tagName&&B.tagName.toLowerCase()!='pre'){FCKDomTools.TrimNode(A);if (FCKConfig.FillEmptyBlocks){var E=A.lastChild;if (E&&E.nodeType==1&&E.nodeName=='br') this._AppendEntity(A,this._NbspEntity);}};if (A.childNodes.length==0){if (C&&FCKConfig.FillEmptyBlocks){this._AppendEntity(A,this._NbspEntity);return A;};var F=A.nodeName;if (FCKListsLib.InlineChildReqElements[F]) return null;if (!FCKListsLib.EmptyElements[F]) A.appendChild(this.XML.createTextNode(''));};return A;};FCKXHtml._AppendNode=function(A,B){if (!B) return false;switch (B.nodeType){case 1:if (FCKBrowserInfo.IsGecko&&B.tagName.toLowerCase()=='br'&&B.parentNode.tagName.toLowerCase()=='pre'){var C='\r';if (B==B.parentNode.firstChild) C+='\r';return FCKXHtml._AppendNode(A,this.XML.createTextNode(C));};if (B.getAttribute('_fckfakelement')) return FCKXHtml._AppendNode(A,FCK.GetRealElement(B));if (FCKBrowserInfo.IsGecko&&(B.hasAttribute('_moz_editor_bogus_node')||B.getAttribute('type')=='_moz')){if (B.nextSibling) return false;else{B.removeAttribute('_moz_editor_bogus_node');B.removeAttribute('type');}};if (B.getAttribute('_fcktemp')) return false;var D=B.tagName.toLowerCase();if (FCKBrowserInfo.IsIE){if (B.scopeName&&B.scopeName!='HTML'&&B.scopeName!='FCK') D=B.scopeName.toLowerCase()+':'+D;}else{if (D.StartsWith('fck:')) D=D.Remove(0,4);};if (!FCKRegexLib.ElementName.test(D)) return false;if (B._fckxhtmljob&&B._fckxhtmljob==FCKXHtml.CurrentJobNum) return false;var E=this.XML.createElement(D);FCKXHtml._AppendAttributes(A,B,E,D);B._fckxhtmljob=FCKXHtml.CurrentJobNum;var F=FCKXHtml.TagProcessors[D];if (F) E=F(E,B,A);else E=this._AppendChildNodes(E,B,Boolean(FCKListsLib.NonEmptyBlockElements[D]));if (!E) return false;A.appendChild(E);break;case 3:if (B.parentNode&&B.parentNode.nodeName.IEquals('pre')) return this._AppendTextNode(A,B.nodeValue);return this._AppendTextNode(A,B.nodeValue.ReplaceNewLineChars(' '));case 8:if (FCKBrowserInfo.IsIE&&!B.innerHTML) break;try { A.appendChild(this.XML.createComment(B.nodeValue));}catch (e) {};break;default:A.appendChild(this.XML.createComment("Element not supported - Type: "+B.nodeType+" Name: "+B.nodeName));break;};return true;};FCKXHtml._AppendSpecialItem=function(A){return '___FCKsi___'+FCKXHtml.SpecialBlocks.AddItem(A);};FCKXHtml._AppendEntity=function(A,B){A.appendChild(this.XML.createTextNode('#?-:'+B+';'));};FCKXHtml._AppendTextNode=function(A,B){var C=B.length>0;if (C) A.appendChild(this.XML.createTextNode(B.replace(FCKXHtmlEntities.EntitiesRegex,FCKXHtml_GetEntity)));return C;};function FCKXHtml_GetEntity(A){var B=FCKXHtmlEntities.Entities[A]||('#'+A.charCodeAt(0));return '#?-:'+B+';';};FCKXHtml.TagProcessors={a:function(A,B){if (B.innerHTML.Trim().length==0&&!B.name) return false;var C=B.getAttribute('_fcksavedurl');if (C!=null) FCKXHtml._AppendAttribute(A,'href',C);if (FCKBrowserInfo.IsIE){if (B.name) FCKXHtml._AppendAttribute(A,'name',B.name);};A=FCKXHtml._AppendChildNodes(A,B,false);return A;},area:function(A,B){var C=B.getAttribute('_fcksavedurl');if (C!=null) FCKXHtml._AppendAttribute(A,'href',C);if (FCKBrowserInfo.IsIE){if (!A.attributes.getNamedItem('coords')){var D=B.getAttribute('coords',2);if (D&&D!='0,0,0') FCKXHtml._AppendAttribute(A,'coords',D);};if (!A.attributes.getNamedItem('shape')){var E=B.getAttribute('shape',2);if (E&&E.length>0) FCKXHtml._AppendAttribute(A,'shape',E.toLowerCase());}};return A;},body:function(A,B){A=FCKXHtml._AppendChildNodes(A,B,false);A.removeAttribute('spellcheck');return A;},iframe:function(A,B){var C=B.innerHTML;if (FCKBrowserInfo.IsGecko) C=FCKTools.HTMLDecode(C);C=C.replace(/\s_fcksavedurl="[^"]*"/g,'');A.appendChild(FCKXHtml.XML.createTextNode(FCKXHtml._AppendSpecialItem(C)));return A;},img:function(A,B){if (!A.attributes.getNamedItem('alt')) FCKXHtml._AppendAttribute(A,'alt','');var C=B.getAttribute('_fcksavedurl');if (C!=null) FCKXHtml._AppendAttribute(A,'src',C);if (B.style.width) A.removeAttribute('width');if (B.style.height) A.removeAttribute('height');return A;},li:function(A,B,C){if (C.nodeName.IEquals(['ul','ol'])) return FCKXHtml._AppendChildNodes(A,B,true);var D=FCKXHtml.XML.createElement('ul');B._fckxhtmljob=null;do{FCKXHtml._AppendNode(D,B);do{B=FCKDomTools.GetNextSibling(B);} while (B&&B.nodeType==3&&B.nodeValue.Trim().length==0)}	while (B&&B.nodeName.toLowerCase()=='li') return D;},ol:function(A,B,C){if (B.innerHTML.Trim().length==0) return false;var D=C.lastChild;if (D&&D.nodeType==3) D=D.previousSibling;if (D&&D.nodeName.toUpperCase()=='LI'){B._fckxhtmljob=null;FCKXHtml._AppendNode(D,B);return false;};A=FCKXHtml._AppendChildNodes(A,B);return A;},pre:function (A,B){var C=B.firstChild;if (C&&C.nodeType==3) A.appendChild(FCKXHtml.XML.createTextNode(FCKXHtml._AppendSpecialItem('\r\n')));FCKXHtml._AppendChildNodes(A,B,true);return A;},script:function(A,B){if (!A.attributes.getNamedItem('type')) FCKXHtml._AppendAttribute(A,'type','text/javascript');A.appendChild(FCKXHtml.XML.createTextNode(FCKXHtml._AppendSpecialItem(B.text)));return A;},span:function(A,B){if (B.innerHTML.length==0) return false;A=FCKXHtml._AppendChildNodes(A,B,false);return A;},style:function(A,B){if (!A.attributes.getNamedItem('type')) FCKXHtml._AppendAttribute(A,'type','text/css');var C=B.innerHTML;if (FCKBrowserInfo.IsIE) C=C.replace(/^(\r\n|\n|\r)/,'');A.appendChild(FCKXHtml.XML.createTextNode(FCKXHtml._AppendSpecialItem(C)));return A;},title:function(A,B){A.appendChild(FCKXHtml.XML.createTextNode(FCK.EditorDocument.title));return A;}};FCKXHtml.TagProcessors.ul=FCKXHtml.TagProcessors.ol;
+FCKXHtml._GetMainXmlString=function(){return (new XMLSerializer()).serializeToString(this.MainNode);};FCKXHtml._AppendAttributes=function(A,B,C){var D=B.attributes;for (var n=0;n<D.length;n++){var E=D[n];if (E.specified){var F=E.nodeName.toLowerCase();var G;if (F.StartsWith('_fck')) continue;else if (F.indexOf('_moz')==0) continue;else if (F=='class'){G=E.nodeValue.replace(FCKRegexLib.FCK_Class,'');if (G.length==0) continue;}else if (E.nodeValue===true) G=F;else G=B.getAttribute(F,2);this._AppendAttribute(C,F,G);}}};if (FCKBrowserInfo.IsOpera){FCKXHtml.TagProcessors['head']=function(A,B){FCKXHtml.XML._HeadElement=A;A=FCKXHtml._AppendChildNodes(A,B,true);return A;};FCKXHtml.TagProcessors['meta']=function(A,B,C){if (B.parentNode.nodeName.toLowerCase()!='head'){var D=FCKXHtml.XML._HeadElement;if (D&&C!=D){delete B._fckxhtmljob;FCKXHtml._AppendNode(D,B);return null;}};return A;}};if (FCKBrowserInfo.IsGecko){FCKXHtml.TagProcessors['link']=function(A,B){if (B.href.substr(0,9).toLowerCase()=='chrome://') return false;return A;}};
 var FCKCodeFormatter={};FCKCodeFormatter.Init=function(){var A=this.Regex={};A.BlocksOpener=/\<(P|DIV|H1|H2|H3|H4|H5|H6|ADDRESS|PRE|OL|UL|LI|TITLE|META|LINK|BASE|SCRIPT|LINK|TD|TH|AREA|OPTION)[^\>]*\>/gi;A.BlocksCloser=/\<\/(P|DIV|H1|H2|H3|H4|H5|H6|ADDRESS|PRE|OL|UL|LI|TITLE|META|LINK|BASE|SCRIPT|LINK|TD|TH|AREA|OPTION)[^\>]*\>/gi;A.NewLineTags=/\<(BR|HR)[^\>]*\>/gi;A.MainTags=/\<\/?(HTML|HEAD|BODY|FORM|TABLE|TBODY|THEAD|TR)[^\>]*\>/gi;A.LineSplitter=/\s*\n+\s*/g;A.IncreaseIndent=/^\<(HTML|HEAD|BODY|FORM|TABLE|TBODY|THEAD|TR|UL|OL)[ \/\>]/i;A.DecreaseIndent=/^\<\/(HTML|HEAD|BODY|FORM|TABLE|TBODY|THEAD|TR|UL|OL)[ \>]/i;A.FormatIndentatorRemove=new RegExp('^'+FCKConfig.FormatIndentator);A.ProtectedTags=/(<PRE[^>]*>)([\s\S]*?)(<\/PRE>)/gi;};FCKCodeFormatter._ProtectData=function(A,B,C,D){return B+'___FCKpd___'+FCKCodeFormatter.ProtectedData.AddItem(C)+D;};FCKCodeFormatter.Format=function(A){if (!this.Regex) this.Init();FCKCodeFormatter.ProtectedData=[];var B=A.replace(this.Regex.ProtectedTags,FCKCodeFormatter._ProtectData);B=B.replace(this.Regex.BlocksOpener,'\n$&');B=B.replace(this.Regex.BlocksCloser,'$&\n');B=B.replace(this.Regex.NewLineTags,'$&\n');B=B.replace(this.Regex.MainTags,'\n$&\n');var C='';var D=B.split(this.Regex.LineSplitter);B='';for (var i=0;i<D.length;i++){var E=D[i];if (E.length==0) continue;if (this.Regex.DecreaseIndent.test(E)) C=C.replace(this.Regex.FormatIndentatorRemove,'');B+=C+E+'\n';if (this.Regex.IncreaseIndent.test(E)) C+=FCKConfig.FormatIndentator;};for (var j=0;j<FCKCodeFormatter.ProtectedData.length;j++){var F=new RegExp('___FCKpd___'+j);B=B.replace(F,FCKCodeFormatter.ProtectedData[j].replace(/\$/g,'$$$$'));};return B.Trim();};
 var FCKUndo={};FCKUndo.SavedData=[];FCKUndo.CurrentIndex=-1;FCKUndo.TypesCount=0;FCKUndo.Changed=false;FCKUndo.MaxTypes=25;FCKUndo.Typing=false;FCKUndo.SaveLocked=false;FCKUndo._GetBookmark=function(){FCKSelection.Restore();var A=new FCKDomRange(FCK.EditorWindow);try{A.MoveToSelection();}catch (e){return null;};if (FCKBrowserInfo.IsIE){var B=A.CreateBookmark();var C=FCK.EditorDocument.body.innerHTML;A.MoveToBookmark(B);return [B,C];};return A.CreateBookmark2();};FCKUndo._SelectBookmark=function(A){if (!A) return;var B=new FCKDomRange(FCK.EditorWindow);if (A instanceof Object){if (FCKBrowserInfo.IsIE) B.MoveToBookmark(A[0]);else B.MoveToBookmark2(A);try{B.Select();}catch (e){B.MoveToPosition(FCK.EditorDocument.body,4);B.Select();}}};FCKUndo._CompareCursors=function(A,B){for (var i=0;i<Math.min(A.length,B.length);i++){if (A[i]<B[i]) return-1;else if (A[i]>B[i]) return 1;};if (A.length<B.length) return-1;else if (A.length>B.length) return 1;return 0;};FCKUndo._CheckIsBookmarksEqual=function(A,B){if (!(A&&B)) return false;if (FCKBrowserInfo.IsIE){var C=A[1].search(A[0].StartId);var D=B[1].search(B[0].StartId);var E=A[1].search(A[0].EndId);var F=B[1].search(B[0].EndId);return C==D&&E==F;}else{return this._CompareCursors(A.Start,B.Start)==0&&this._CompareCursors(A.End,B.End)==0;}};FCKUndo.SaveUndoStep=function(){if (FCK.EditMode!=0||this.SaveLocked) return;if (this.SavedData.length) this.Changed=true;var A=FCK.EditorDocument.body.innerHTML;var B=this._GetBookmark();this.SavedData=this.SavedData.slice(0,this.CurrentIndex+1);if (this.CurrentIndex>0&&A==this.SavedData[this.CurrentIndex][0]&&this._CheckIsBookmarksEqual(B,this.SavedData[this.CurrentIndex][1])) return;else if (this.CurrentIndex==0&&this.SavedData.length&&A==this.SavedData[0][0]){this.SavedData[0][1]=B;return;};if (this.CurrentIndex+1>=FCKConfig.MaxUndoLevels) this.SavedData.shift();else this.CurrentIndex++;this.SavedData[this.CurrentIndex]=[A,B];FCK.Events.FireEvent("OnSelectionChange");};FCKUndo.CheckUndoState=function(){return (this.Changed||this.CurrentIndex>0);};FCKUndo.CheckRedoState=function(){return (this.CurrentIndex<(this.SavedData.length-1));};FCKUndo.Undo=function(){if (this.CheckUndoState()){if (this.CurrentIndex==(this.SavedData.length-1)){this.SaveUndoStep();};this._ApplyUndoLevel(--this.CurrentIndex);FCK.Events.FireEvent("OnSelectionChange");}};FCKUndo.Redo=function(){if (this.CheckRedoState()){this._ApplyUndoLevel(++this.CurrentIndex);FCK.Events.FireEvent("OnSelectionChange");}};FCKUndo._ApplyUndoLevel=function(A){var B=this.SavedData[A];if (!B) return;if (FCKBrowserInfo.IsIE){if (B[1]&&B[1][1]) FCK.SetInnerHtml(B[1][1]);else FCK.SetInnerHtml(B[0]);}else FCK.EditorDocument.body.innerHTML=B[0];this._SelectBookmark(B[1]);this.TypesCount=0;this.Changed=false;this.Typing=false;};
-var FCKEditingArea=function(A){this.TargetElement=A;this.Mode=0;if (FCK.IECleanup) FCK.IECleanup.AddItem(this,FCKEditingArea_Cleanup);};FCKEditingArea.prototype.Start=function(A,B){var C=this.TargetElement;var D=FCKTools.GetElementDocument(C);while(C.firstChild) C.removeChild(C.firstChild);if (this.Mode==0){if (FCK_IS_CUSTOM_DOMAIN) A='<script>document.domain="'+FCK_RUNTIME_DOMAIN+'";</script>'+A;if (FCKBrowserInfo.IsIE) A=A.replace(/(<base[^>]*?)\s*\/?>(?!\s*<\/base>)/gi,'$1></base>');else if (!B){var E=A.match(FCKRegexLib.BeforeBody);var F=A.match(FCKRegexLib.AfterBody);if (E&&F){var G=A.substr(E[1].length,A.length-E[1].length-F[1].length);A=E[1]+'&nbsp;'+F[1];if (FCKBrowserInfo.IsGecko&&(G.length==0||FCKRegexLib.EmptyParagraph.test(G))) G='<br type="_moz">';this._BodyHTML=G;}else this._BodyHTML=A;};var H=this.IFrame=D.createElement('iframe');var I='<script type="text/javascript" _fcktemp="true">window.onerror=function(){return true;};</script>';H.frameBorder=0;H.width=H.height='100%';if (FCK_IS_CUSTOM_DOMAIN&&FCKBrowserInfo.IsIE){window._FCKHtmlToLoad=I+A;H.src='javascript:void( (function(){document.open() ;document.domain="'+document.domain+'" ;document.write( window.parent._FCKHtmlToLoad );document.close() ;window.parent._FCKHtmlToLoad = null ;})() )';}else if (!FCKBrowserInfo.IsGecko){H.src='javascript:void(0)';};C.appendChild(H);this.Window=H.contentWindow;if (!FCK_IS_CUSTOM_DOMAIN||!FCKBrowserInfo.IsIE){var J=this.Window.document;J.open();J.write(I+A);J.close();};if (FCKBrowserInfo.IsAIR) FCKAdobeAIR.EditingArea_Start(J,A);if (FCKBrowserInfo.IsGecko10&&!B){this.Start(A,true);return;};if (H.readyState&&H.readyState!='completed'){var K=this;(H.onreadystatechange=function(){if (H.readyState=='complete'){H.onreadystatechange=null;K.Window._FCKEditingArea=K;FCKEditingArea_CompleteStart.call(K.Window);}})();}else{this.Window._FCKEditingArea=this;if (FCKBrowserInfo.IsGecko10) this.Window.setTimeout(FCKEditingArea_CompleteStart,500);else FCKEditingArea_CompleteStart.call(this.Window);}}else{var L=this.Textarea=D.createElement('textarea');L.className='SourceField';L.dir='ltr';FCKDomTools.SetElementStyles(L,{width:'100%',height:'100%',border:'none',resize:'none',outline:'none'});C.appendChild(L);L.value=A;FCKTools.RunFunction(this.OnLoad);}};function FCKEditingArea_CompleteStart(){if (!this.document.body){this.setTimeout(FCKEditingArea_CompleteStart,50);return;};var A=this._FCKEditingArea;A.Document=A.Window.document;A.MakeEditable();FCKTools.RunFunction(A.OnLoad);};FCKEditingArea.prototype.MakeEditable=function(){var A=this.Document;if (FCKBrowserInfo.IsIE){A.body.disabled=true;A.body.contentEditable=true;A.body.removeAttribute("disabled");}else{try{A.body.spellcheck=(this.FFSpellChecker!==false);if (this._BodyHTML){A.body.innerHTML=this._BodyHTML;this._BodyHTML=null;};A.designMode='on';A.execCommand('enableObjectResizing',false,!FCKConfig.DisableObjectResizing);A.execCommand('enableInlineTableEditing',false,!FCKConfig.DisableFFTableHandles);}catch (e){FCKTools.AddEventListener(this.Window.frameElement,'DOMAttrModified',FCKEditingArea_Document_AttributeNodeModified);}}};function FCKEditingArea_Document_AttributeNodeModified(A){var B=A.currentTarget.contentWindow._FCKEditingArea;if (B._timer) window.clearTimeout(B._timer);B._timer=FCKTools.SetTimeout(FCKEditingArea_MakeEditableByMutation,1000,B);};function FCKEditingArea_MakeEditableByMutation(){delete this._timer;FCKTools.RemoveEventListener(this.Window.frameElement,'DOMAttrModified',FCKEditingArea_Document_AttributeNodeModified);this.MakeEditable();};FCKEditingArea.prototype.Focus=function(){try{if (this.Mode==0){if (FCKBrowserInfo.IsIE) this._FocusIE();else this.Window.focus();}else{var A=FCKTools.GetElementDocument(this.Textarea);if ((!A.hasFocus||A.hasFocus())&&A.activeElement==this.Textarea) return;this.Textarea.focus();}}catch(e) {}};FCKEditingArea.prototype._FocusIE=function(){this.Document.body.setActive();this.Window.focus();var A=this.Document.selection.createRange();var B=A.parentElement();var C=B.nodeName.toLowerCase();if (B.childNodes.length>0||!(FCKListsLib.BlockElements[C]||FCKListsLib.NonEmptyBlockElements[C])){return;};A=new FCKDomRange(this.Window);A.MoveToElementEditStart(B);A.Select();};function FCKEditingArea_Cleanup(){if (this.Document) this.Document.body.innerHTML="";this.TargetElement=null;this.IFrame=null;this.Document=null;this.Textarea=null;if (this.Window){this.Window._FCKEditingArea=null;this.Window=null;}};
+var FCKEditingArea=function(A){this.TargetElement=A;this.Mode=0;if (FCK.IECleanup) FCK.IECleanup.AddItem(this,FCKEditingArea_Cleanup);};FCKEditingArea.prototype.Start=function(A,B){var C=this.TargetElement;var D=FCKTools.GetElementDocument(C);while(C.firstChild) C.removeChild(C.firstChild);if (this.Mode==0){if (FCK_IS_CUSTOM_DOMAIN) A='<script>document.domain="'+FCK_RUNTIME_DOMAIN+'";</script>'+A;if (FCKBrowserInfo.IsIE) A=A.replace(/(<base[^>]*?)\s*\/?>(?!\s*<\/base>)/gi,'$1></base>');else if (!B){var E=A.match(FCKRegexLib.BeforeBody);var F=A.match(FCKRegexLib.AfterBody);if (E&&F){var G=A.substr(E[1].length,A.length-E[1].length-F[1].length);A=E[1]+'&nbsp;'+F[1];if (FCKBrowserInfo.IsGecko&&(G.length==0||FCKRegexLib.EmptyParagraph.test(G))) G='<br type="_moz">';this._BodyHTML=G;}else this._BodyHTML=A;};var H=this.IFrame=D.createElement('iframe');var I='<script type="text/javascript" _fcktemp="true">window.onerror=function(){return true;};</script>';H.frameBorder=0;H.style.width=H.style.height='100%';if (FCK_IS_CUSTOM_DOMAIN&&FCKBrowserInfo.IsIE){window._FCKHtmlToLoad=A.replace(/<head>/i,'<head>'+I);H.src='javascript:void( (function(){document.open() ;document.domain="'+document.domain+'" ;document.write( window.parent._FCKHtmlToLoad );document.close() ;window.parent._FCKHtmlToLoad = null ;})() )';}else if (!FCKBrowserInfo.IsGecko){H.src='javascript:void(0)';};C.appendChild(H);this.Window=H.contentWindow;if (!FCK_IS_CUSTOM_DOMAIN||!FCKBrowserInfo.IsIE){var J=this.Window.document;J.open();J.write(A.replace(/<head>/i,'<head>'+I));J.close();};if (FCKBrowserInfo.IsAIR) FCKAdobeAIR.EditingArea_Start(J,A);if (FCKBrowserInfo.IsGecko10&&!B){this.Start(A,true);return;};if (H.readyState&&H.readyState!='completed'){var K=this;setTimeout(function(){try{K.Window.document.documentElement.doScroll("left");}catch(e){setTimeout(arguments.callee,0);return;};K.Window._FCKEditingArea=K;FCKEditingArea_CompleteStart.call(K.Window);},0);}else{this.Window._FCKEditingArea=this;if (FCKBrowserInfo.IsGecko10) this.Window.setTimeout(FCKEditingArea_CompleteStart,500);else FCKEditingArea_CompleteStart.call(this.Window);}}else{var L=this.Textarea=D.createElement('textarea');L.className='SourceField';L.dir='ltr';FCKDomTools.SetElementStyles(L,{width:'100%',height:'100%',border:'none',resize:'none',outline:'none'});C.appendChild(L);L.value=A;FCKTools.RunFunction(this.OnLoad);}};function FCKEditingArea_CompleteStart(){if (!this.document.body){this.setTimeout(FCKEditingArea_CompleteStart,50);return;};var A=this._FCKEditingArea;A.Document=A.Window.document;A.MakeEditable();FCKTools.RunFunction(A.OnLoad);};FCKEditingArea.prototype.MakeEditable=function(){var A=this.Document;if (FCKBrowserInfo.IsIE){A.body.disabled=true;A.body.contentEditable=true;A.body.removeAttribute("disabled");}else{try{A.body.spellcheck=(this.FFSpellChecker!==false);if (this._BodyHTML){A.body.innerHTML=this._BodyHTML;A.body.offsetLeft;this._BodyHTML=null;};A.designMode='on';A.execCommand('enableObjectResizing',false,!FCKConfig.DisableObjectResizing);A.execCommand('enableInlineTableEditing',false,!FCKConfig.DisableFFTableHandles);}catch (e){FCKTools.AddEventListener(this.Window.frameElement,'DOMAttrModified',FCKEditingArea_Document_AttributeNodeModified);}}};function FCKEditingArea_Document_AttributeNodeModified(A){var B=A.currentTarget.contentWindow._FCKEditingArea;if (B._timer) window.clearTimeout(B._timer);B._timer=FCKTools.SetTimeout(FCKEditingArea_MakeEditableByMutation,1000,B);};function FCKEditingArea_MakeEditableByMutation(){delete this._timer;FCKTools.RemoveEventListener(this.Window.frameElement,'DOMAttrModified',FCKEditingArea_Document_AttributeNodeModified);this.MakeEditable();};FCKEditingArea.prototype.Focus=function(){try{if (this.Mode==0){if (FCKBrowserInfo.IsIE) this._FocusIE();else this.Window.focus();}else{var A=FCKTools.GetElementDocument(this.Textarea);if ((!A.hasFocus||A.hasFocus())&&A.activeElement==this.Textarea) return;this.Textarea.focus();}}catch(e) {}};FCKEditingArea.prototype._FocusIE=function(){this.Document.body.setActive();this.Window.focus();var A=this.Document.selection.createRange();var B=A.parentElement();var C=B.nodeName.toLowerCase();if (B.childNodes.length>0||!(FCKListsLib.BlockElements[C]||FCKListsLib.NonEmptyBlockElements[C])){return;};A=new FCKDomRange(this.Window);A.MoveToElementEditStart(B);A.Select();};function FCKEditingArea_Cleanup(){if (this.Document) this.Document.body.innerHTML="";this.TargetElement=null;this.IFrame=null;this.Document=null;this.Textarea=null;if (this.Window){this.Window._FCKEditingArea=null;this.Window=null;}};
 var FCKKeystrokeHandler=function(A){this.Keystrokes={};this.CancelCtrlDefaults=(A!==false);};FCKKeystrokeHandler.prototype.AttachToElement=function(A){FCKTools.AddEventListenerEx(A,'keydown',_FCKKeystrokeHandler_OnKeyDown,this);if (FCKBrowserInfo.IsGecko10||FCKBrowserInfo.IsOpera||(FCKBrowserInfo.IsGecko&&FCKBrowserInfo.IsMac)) FCKTools.AddEventListenerEx(A,'keypress',_FCKKeystrokeHandler_OnKeyPress,this);};FCKKeystrokeHandler.prototype.SetKeystrokes=function(){for (var i=0;i<arguments.length;i++){var A=arguments[i];if (!A) continue;if (typeof(A[0])=='object') this.SetKeystrokes.apply(this,A);else{if (A.length==1) delete this.Keystrokes[A[0]];else this.Keystrokes[A[0]]=A[1]===true?true:A;}}};function _FCKKeystrokeHandler_OnKeyDown(A,B){var C=A.keyCode||A.which;var D=0;if (A.ctrlKey||A.metaKey) D+=CTRL;if (A.shiftKey) D+=SHIFT;if (A.altKey) D+=ALT;var E=C+D;var F=B._CancelIt=false;var G=B.Keystrokes[E];if (G){if (G===true||!(B.OnKeystroke&&B.OnKeystroke.apply(B,G))) return true;F=true;};if (F||(B.CancelCtrlDefaults&&D==CTRL&&(C<33||C>40))){B._CancelIt=true;if (A.preventDefault) return A.preventDefault();A.returnValue=false;A.cancelBubble=true;return false;};return true;};function _FCKKeystrokeHandler_OnKeyPress(A,B){if (B._CancelIt){if (A.preventDefault) return A.preventDefault();return false;};return true;};
 FCK.DTD=(function(){var X=FCKTools.Merge;var A,L,J,M,N,O,D,H,P,K,Q,F,G,C,B,E,I;A={isindex:1,fieldset:1};B={input:1,button:1,select:1,textarea:1,label:1};C=X({a:1},B);D=X({iframe:1},C);E={hr:1,ul:1,menu:1,div:1,blockquote:1,noscript:1,table:1,center:1,address:1,dir:1,pre:1,h5:1,dl:1,h4:1,noframes:1,h6:1,ol:1,h1:1,h3:1,h2:1};F={ins:1,del:1,script:1};G=X({b:1,acronym:1,bdo:1,'var':1,'#':1,abbr:1,code:1,br:1,i:1,cite:1,kbd:1,u:1,strike:1,s:1,tt:1,strong:1,q:1,samp:1,em:1,dfn:1,span:1},F);H=X({sub:1,img:1,object:1,sup:1,basefont:1,map:1,applet:1,font:1,big:1,small:1},G);I=X({p:1},H);J=X({iframe:1},H,B);K={img:1,noscript:1,br:1,kbd:1,center:1,button:1,basefont:1,h5:1,h4:1,samp:1,h6:1,ol:1,h1:1,h3:1,h2:1,form:1,font:1,'#':1,select:1,menu:1,ins:1,abbr:1,label:1,code:1,table:1,script:1,cite:1,input:1,iframe:1,strong:1,textarea:1,noframes:1,big:1,small:1,span:1,hr:1,sub:1,bdo:1,'var':1,div:1,object:1,sup:1,strike:1,dir:1,map:1,dl:1,applet:1,del:1,isindex:1,fieldset:1,ul:1,b:1,acronym:1,a:1,blockquote:1,i:1,u:1,s:1,tt:1,address:1,q:1,pre:1,p:1,em:1,dfn:1};L=X({a:1},J);M={tr:1};N={'#':1};O=X({param:1},K);P=X({form:1},A,D,E,I);Q={li:1};return {col:{},tr:{td:1,th:1},img:{},colgroup:{col:1},noscript:P,td:P,br:{},th:P,center:P,kbd:L,button:X(I,E),basefont:{},h5:L,h4:L,samp:L,h6:L,ol:Q,h1:L,h3:L,option:N,h2:L,form:X(A,D,E,I),select:{optgroup:1,option:1},font:J,ins:P,menu:Q,abbr:L,label:L,table:{thead:1,col:1,tbody:1,tr:1,colgroup:1,caption:1,tfoot:1},code:L,script:N,tfoot:M,cite:L,li:P,input:{},iframe:P,strong:J,textarea:N,noframes:P,big:J,small:J,span:J,hr:{},dt:L,sub:J,optgroup:{option:1},param:{},bdo:L,'var':J,div:P,object:O,sup:J,dd:P,strike:J,area:{},dir:Q,map:X({area:1,form:1,p:1},A,F,E),applet:O,dl:{dt:1,dd:1},del:P,isindex:{},fieldset:X({legend:1},K),thead:M,ul:Q,acronym:L,b:J,a:J,blockquote:P,caption:L,i:J,u:J,tbody:M,s:L,address:X(D,I),tt:J,legend:L,q:L,pre:X(G,C),p:L,em:J,dfn:L};})();
-var FCKStyle=function(A){this.Element=(A.Element||'span').toLowerCase();this._StyleDesc=A;};FCKStyle.prototype={GetType:function(){var A=this.GetType_$;if (A!=undefined) return A;var B=this.Element;if (B=='#'||FCKListsLib.StyleBlockElements[B]) A=0;else if (FCKListsLib.StyleObjectElements[B]) A=2;else A=1;return (this.GetType_$=A);},ApplyToSelection:function(A){var B=new FCKDomRange(A);B.MoveToSelection();this.ApplyToRange(B,true);},ApplyToRange:function(A,B,C){switch (this.GetType()){case 0:this.ApplyToRange=this._ApplyBlockStyle;break;case 1:this.ApplyToRange=this._ApplyInlineStyle;break;default:return;};this.ApplyToRange(A,B,C);},ApplyToObject:function(A){if (!A) return;this.BuildElement(null,A);},RemoveFromSelection:function(A){var B=new FCKDomRange(A);B.MoveToSelection();this.RemoveFromRange(B,true);},RemoveFromRange:function(A,B,C){var D;var E=this._GetAttribsForComparison();var F=this._GetOverridesForComparison();if (A.CheckIsCollapsed()){var D=A.CreateBookmark(true);var H=A.GetBookmarkNode(D,true);var I=new FCKElementPath(H.parentNode);var J=[];var K=!FCKDomTools.GetNextSibling(H);var L=K||!FCKDomTools.GetPreviousSibling(H);var M;var N=-1;for (var i=0;i<I.Elements.length;i++){var O=I.Elements[i];if (this.CheckElementRemovable(O)){if (L&&!FCKDomTools.CheckIsEmptyElement(O,function(el){return (el!=H);})){M=O;N=J.length-1;}else{var P=O.nodeName.toLowerCase();if (P==this.Element){for (var Q in E){if (FCKDomTools.HasAttribute(O,Q)){switch (Q){case 'style':this._RemoveStylesFromElement(O);break;case 'class':if (FCKDomTools.GetAttributeValue(O,Q)!=this.GetFinalAttributeValue(Q)) continue;default:FCKDomTools.RemoveAttribute(O,Q);}}}};this._RemoveOverrides(O,F[P]);if (this.GetType()==1) this._RemoveNoAttribElement(O);}}else if (L) J.push(O);L=L&&((K&&!FCKDomTools.GetNextSibling(O))||(!K&&!FCKDomTools.GetPreviousSibling(O)));if (M&&(!L||(i==I.Elements.length-1))){var R=FCKDomTools.RemoveNode(H);for (var j=0;j<=N;j++){var S=FCKDomTools.CloneElement(J[j]);S.appendChild(R);R=S;};if (K) FCKDomTools.InsertAfterNode(M,R);else M.parentNode.insertBefore(R,M);L=false;M=null;}};if (B) A.SelectBookmark(D);if (C) A.MoveToBookmark(D);return;};A.Expand('inline_elements');D=A.CreateBookmark(true);var T=A.GetBookmarkNode(D,true);var U=A.GetBookmarkNode(D,false);A.Release(true);var I=new FCKElementPath(T);var X=I.Elements;var O;for (var i=1;i<X.length;i++){O=X[i];if (O==I.Block||O==I.BlockLimit) break;if (this.CheckElementRemovable(O)) FCKDomTools.BreakParent(T,O,A);};I=new FCKElementPath(U);X=I.Elements;for (var i=1;i<X.length;i++){O=X[i];if (O==I.Block||O==I.BlockLimit) break;b=O.nodeName.toLowerCase();if (this.CheckElementRemovable(O)) FCKDomTools.BreakParent(U,O,A);};var Z=FCKDomTools.GetNextSourceNode(T,true);while (Z){var a=FCKDomTools.GetNextSourceNode(Z);if (Z.nodeType==1){var b=Z.nodeName.toLowerCase();var c=(b==this.Element);if (c){for (var Q in E){if (FCKDomTools.HasAttribute(Z,Q)){switch (Q){case 'style':this._RemoveStylesFromElement(Z);break;case 'class':if (FCKDomTools.GetAttributeValue(Z,Q)!=this.GetFinalAttributeValue(Q)) continue;default:FCKDomTools.RemoveAttribute(Z,Q);}}}}else c=!!F[b];if (c){this._RemoveOverrides(Z,F[b]);this._RemoveNoAttribElement(Z);}};if (a==U) break;Z=a;};this._FixBookmarkStart(T);if (B) A.SelectBookmark(D);if (C) A.MoveToBookmark(D);},CheckElementRemovable:function(A,B){if (!A) return false;var C=A.nodeName.toLowerCase();if (C==this.Element){if (!B&&!FCKDomTools.HasAttributes(A)) return true;var D=this._GetAttribsForComparison();var E=(D._length==0);for (var F in D){if (F=='_length') continue;if (this._CompareAttributeValues(F,FCKDomTools.GetAttributeValue(A,F),(this.GetFinalAttributeValue(F)||''))){E=true;if (!B) break;}else{E=false;if (B) return false;}};if (E) return true;};var G=this._GetOverridesForComparison()[C];if (G){if (!(D=G.Attributes)) return true;for (var i=0;i<D.length;i++){var H=D[i][0];if (FCKDomTools.HasAttribute(A,H)){var I=D[i][1];if (I==null||(typeof I=='string'&&FCKDomTools.GetAttributeValue(A,H)==I)||I.test(FCKDomTools.GetAttributeValue(A,H))) return true;}}};return false;},CheckActive:function(A){switch (this.GetType()){case 0:return this.CheckElementRemovable(A.Block||A.BlockLimit,true);case 1:var B=A.Elements;for (var i=0;i<B.length;i++){var C=B[i];if (C==A.Block||C==A.BlockLimit) continue;if (this.CheckElementRemovable(C,true)) return true;}};return false;},RemoveFromElement:function(A){var B=this._GetAttribsForComparison();var C=this._GetOverridesForComparison();var D=A.getElementsByTagName(this.Element);for (var i=D.length-1;i>=0;i--){var E=D[i];for (var F in B){if (FCKDomTools.HasAttribute(E,F)){switch (F){case 'style':this._RemoveStylesFromElement(E);break;case 'class':if (FCKDomTools.GetAttributeValue(E,F)!=this.GetFinalAttributeValue(F)) continue;default:FCKDomTools.RemoveAttribute(E,F);}}};this._RemoveOverrides(E,C[this.Element]);this._RemoveNoAttribElement(E);};for (var G in C){if (G!=this.Element){D=A.getElementsByTagName(G);for (var i=D.length-1;i>=0;i--){var E=D[i];this._RemoveOverrides(E,C[G]);this._RemoveNoAttribElement(E);}}}},_RemoveStylesFromElement:function(A){var B=A.style.cssText;var C=this.GetFinalStyleValue();if (B.length>0&&C.length==0) return;C='(^|;)\\s*('+C.replace(/\s*([^ ]+):.*?(;|$)/g,'$1|').replace(/\|$/,'')+'):[^;]+';var D=new RegExp(C,'gi');B=B.replace(D,'').Trim();if (B.length==0||B==';') FCKDomTools.RemoveAttribute(A,'style');else A.style.cssText=B.replace(D,'');},_RemoveOverrides:function(A,B){var C=B&&B.Attributes;if (C){for (var i=0;i<C.length;i++){var D=C[i][0];if (FCKDomTools.HasAttribute(A,D)){var E=C[i][1];if (E==null||(E.test&&E.test(FCKDomTools.GetAttributeValue(A,D)))||(typeof E=='string'&&FCKDomTools.GetAttributeValue(A,D)==E)) FCKDomTools.RemoveAttribute(A,D);}}}},_RemoveNoAttribElement:function(A){if (!FCKDomTools.HasAttributes(A)){var B=A.firstChild;var C=A.lastChild;FCKDomTools.RemoveNode(A,true);this._MergeSiblings(B);if (B!=C) this._MergeSiblings(C);}},BuildElement:function(A,B){var C=B||A.createElement(this.Element);var D=this._StyleDesc.Attributes;var E;if (D){for (var F in D){E=this.GetFinalAttributeValue(F);if (F.toLowerCase()=='class') C.className=E;else C.setAttribute(F,E);}};if (this._GetStyleText().length>0) C.style.cssText=this.GetFinalStyleValue();return C;},_CompareAttributeValues:function(A,B,C){if (A=='style'&&B&&C){B=B.replace(/;$/,'').toLowerCase();C=C.replace(/;$/,'').toLowerCase();};return (B==C||((B===null||B==='')&&(C===null||C==='')))},GetFinalAttributeValue:function(A){var B=this._StyleDesc.Attributes;var B=B?B[A]:null;if (!B&&A=='style') return this.GetFinalStyleValue();if (B&&this._Variables) B=B.Replace(FCKRegexLib.StyleVariableAttName,this._GetVariableReplace,this);return B;},GetFinalStyleValue:function(){var A=this._GetStyleText();if (A.length>0&&this._Variables){A=A.Replace(FCKRegexLib.StyleVariableAttName,this._GetVariableReplace,this);A=FCKTools.NormalizeCssText(A);};return A;},_GetVariableReplace:function(){return this._Variables[arguments[2]]||arguments[0];},SetVariable:function(A,B){var C=this._Variables;if (!C) C=this._Variables={};this._Variables[A]=B;},_FromPre:function(A,B,C){var D=B.innerHTML;D=D.replace(/(\r\n|\r)/g,'\n');D=D.replace(/^[ \t]*\n/,'');D=D.replace(/\n$/,'');D=D.replace(/^[ \t]+|[ \t]+$/g,function(match,offset,s){if (match.length==1) return '&nbsp;';else if (offset==0) return new Array(match.length).join('&nbsp;')+' ';else return ' '+new Array(match.length).join('&nbsp;');});var E=new FCKHtmlIterator(D);var F=[];E.Each(function(isTag,value){if (!isTag){value=value.replace(/\n/g,'<BR>');value=value.replace(/[ \t]{2,}/g,function (match){return new Array(match.length).join('&nbsp;')+' ';});};F.push(value);});C.innerHTML=F.join('');return C;},_ToPre:function(A,B,C){var D=B.innerHTML.Trim();D=D.replace(/[ \t\r\n]*(<br[^>]*>)[ \t\r\n]*/gi,'<BR />');var E=new FCKHtmlIterator(D);var F=[];E.Each(function(isTag,value){if (!isTag) value=value.replace(/([ \t\n\r]+|&nbsp;)/g,' ');else if (isTag&&value=='<BR />') value='\n';F.push(value);});if (FCKBrowserInfo.IsIE){var G=A.createElement('div');G.appendChild(C);C.outerHTML='<PRE>\n'+F.join('')+'</PRE>';C=G.removeChild(G.firstChild);}else C.innerHTML=F.join('');return C;},_ApplyBlockStyle:function(A,B,C){var D;if (B) D=A.CreateBookmark();var E=new FCKDomRangeIterator(A);E.EnforceRealBlocks=true;var F;var G=A.Window.document;var H=[];var I=[];while((F=E.GetNextParagraph())){var J=this.BuildElement(G);var K=J.nodeName.IEquals('pre');var L=F.nodeName.IEquals('pre');if (K&&!L){J=this._ToPre(G,F,J);H.push(J);}else if (!K&&L){J=this._FromPre(G,F,J);I.push(J);}else FCKDomTools.MoveChildren(F,J);F.parentNode.insertBefore(J,F);FCKDomTools.RemoveNode(F);};for (var i=0;i<H.length-1;i++){if (FCKDomTools.GetNextSourceElement(H[i],true,[],[],true)!=H[i+1]) continue;H[i+1].innerHTML=H[i].innerHTML+'\n\n'+H[i+1].innerHTML;FCKDomTools.RemoveNode(H[i]);};for (var i=0;i<I.length;i++){var M=I[i];var N=null;for (var j=0;j<M.childNodes.length;j++){var O=M.childNodes[j];if (O.nodeName.IEquals('br')&&j!=0&&j!=M.childNodes.length-2&&O.nextSibling&&O.nextSibling.nodeName.IEquals('br')){FCKDomTools.RemoveNode(O.nextSibling);FCKDomTools.RemoveNode(O);j--;N=FCKDomTools.InsertAfterNode(N||M,G.createElement(M.nodeName));continue;};if (N){FCKDomTools.MoveNode(O,N);j--;}}};if (B) A.SelectBookmark(D);if (C) A.MoveToBookmark(D);},_ApplyInlineStyle:function(A,B,C){var D=A.Window.document;if (A.CheckIsCollapsed()){var E=this.BuildElement(D);A.InsertNode(E);A.MoveToPosition(E,2);A.Select();return;};var F=this.Element;var G=FCK.DTD[F]||FCK.DTD.span;var H=this._GetAttribsForComparison();var I;A.Expand('inline_elements');var J=A.CreateBookmark(true);var K=A.GetBookmarkNode(J,true);var L=A.GetBookmarkNode(J,false);A.Release(true);var M=FCKDomTools.GetNextSourceNode(K,true);while (M){var N=false;var O=M.nodeType;var P=O==1?M.nodeName.toLowerCase():null;if (!P||G[P]){if ((FCK.DTD[M.parentNode.nodeName.toLowerCase()]||FCK.DTD.span)[F]||!FCK.DTD[F]){if (!A.CheckHasRange()) A.SetStart(M,3);if (O!=1||M.childNodes.length==0){var Q=M;var R=Q.parentNode;while (Q==R.lastChild&&G[R.nodeName.toLowerCase()]){Q=R;};A.SetEnd(Q,4);if (Q==Q.parentNode.lastChild&&!G[Q.parentNode.nodeName.toLowerCase()]) N=true;}else{A.SetEnd(M,3);}}else N=true;}else N=true;M=FCKDomTools.GetNextSourceNode(M);if (M==L){M=null;N=true;};if (N&&A.CheckHasRange()&&!A.CheckIsCollapsed()){I=this.BuildElement(D);A.ExtractContents().AppendTo(I);if (I.innerHTML.RTrim().length>0){A.InsertNode(I);this.RemoveFromElement(I);this._MergeSiblings(I,this._GetAttribsForComparison());if (!FCKBrowserInfo.IsIE) I.normalize();};A.Release(true);}};this._FixBookmarkStart(K);if (B) A.SelectBookmark(J);if (C) A.MoveToBookmark(J);},_FixBookmarkStart:function(A){var B;while ((B=A.nextSibling)){if (B.nodeType==1&&FCKListsLib.InlineNonEmptyElements[B.nodeName.toLowerCase()]){if (!B.firstChild) FCKDomTools.RemoveNode(B);else FCKDomTools.MoveNode(A,B,true);continue;};if (B.nodeType==3&&B.length==0){FCKDomTools.RemoveNode(B);continue;};break;}},_MergeSiblings:function(A,B){if (!A||A.nodeType!=1||!FCKListsLib.InlineNonEmptyElements[A.nodeName.toLowerCase()]) return;this._MergeNextSibling(A,B);this._MergePreviousSibling(A,B);},_MergeNextSibling:function(A,B){var C=A.nextSibling;var D=(C&&C.nodeType==1&&C.getAttribute('_fck_bookmark'));if (D) C=C.nextSibling;if (C&&C.nodeType==1&&C.nodeName==A.nodeName){if (!B) B=this._CreateElementAttribsForComparison(A);if (this._CheckAttributesMatch(C,B)){var E=A.lastChild;if (D) FCKDomTools.MoveNode(A.nextSibling,A);FCKDomTools.MoveChildren(C,A);FCKDomTools.RemoveNode(C);if (E) this._MergeNextSibling(E);}}},_MergePreviousSibling:function(A,B){var C=A.previousSibling;var D=(C&&C.nodeType==1&&C.getAttribute('_fck_bookmark'));if (D) C=C.previousSibling;if (C&&C.nodeType==1&&C.nodeName==A.nodeName){if (!B) B=this._CreateElementAttribsForComparison(A);if (this._CheckAttributesMatch(C,B)){var E=A.firstChild;if (D) FCKDomTools.MoveNode(A.previousSibling,A,true);FCKDomTools.MoveChildren(C,A,true);FCKDomTools.RemoveNode(C);if (E) this._MergePreviousSibling(E);}}},_GetStyleText:function(){var A=this._StyleDesc.Styles;var B=(this._StyleDesc.Attributes?this._StyleDesc.Attributes['style']||'':'');if (B.length>0) B+=';';for (var C in A) B+=C+':'+A[C]+';';if (B.length>0&&!(/#\(/.test(B))){B=FCKTools.NormalizeCssText(B);};return (this._GetStyleText=function() { return B;})();},_GetAttribsForComparison:function(){var A=this._GetAttribsForComparison_$;if (A) return A;A={};var B=this._StyleDesc.Attributes;if (B){for (var C in B){A[C.toLowerCase()]=B[C].toLowerCase();}};if (this._GetStyleText().length>0){A['style']=this._GetStyleText().toLowerCase();};FCKTools.AppendLengthProperty(A,'_length');return (this._GetAttribsForComparison_$=A);},_GetOverridesForComparison:function(){var A=this._GetOverridesForComparison_$;if (A) return A;A={};var B=this._StyleDesc.Overrides;if (B){if (!FCKTools.IsArray(B)) B=[B];for (var i=0;i<B.length;i++){var C=B[i];var D;var E;var F;if (typeof C=='string') D=C.toLowerCase();else{D=C.Element?C.Element.toLowerCase():this.Element;F=C.Attributes;};E=A[D]||(A[D]={});if (F){var G=(E.Attributes=E.Attributes||[]);for (var H in F){G.push([H.toLowerCase(),F[H]]);}}}};return (this._GetOverridesForComparison_$=A);},_CreateElementAttribsForComparison:function(A){var B={};var C=0;for (var i=0;i<A.attributes.length;i++){var D=A.attributes[i];if (D.specified){B[D.nodeName.toLowerCase()]=FCKDomTools.GetAttributeValue(A,D).toLowerCase();C++;}};B._length=C;return B;},_CheckAttributesMatch:function(A,B){var C=A.attributes;var D=0;for (var i=0;i<C.length;i++){var E=C[i];if (E.specified){var F=E.nodeName.toLowerCase();var G=B[F];if (!G) break;if (G!=FCKDomTools.GetAttributeValue(A,E).toLowerCase()) break;D++;}};return (D==B._length);}};
+var FCKStyle=function(A){this.Element=(A.Element||'span').toLowerCase();this._StyleDesc=A;};FCKStyle.prototype={GetType:function(){var A=this.GetType_$;if (A!=undefined) return A;var B=this.Element;if (B=='#'||FCKListsLib.StyleBlockElements[B]) A=0;else if (FCKListsLib.StyleObjectElements[B]) A=2;else A=1;return (this.GetType_$=A);},ApplyToSelection:function(A){var B=new FCKDomRange(A);B.MoveToSelection();this.ApplyToRange(B,true);},ApplyToRange:function(A,B,C){switch (this.GetType()){case 0:this.ApplyToRange=this._ApplyBlockStyle;break;case 1:this.ApplyToRange=this._ApplyInlineStyle;break;default:return;};this.ApplyToRange(A,B,C);},ApplyToObject:function(A){if (!A) return;this.BuildElement(null,A);},RemoveFromSelection:function(A){var B=new FCKDomRange(A);B.MoveToSelection();this.RemoveFromRange(B,true);},RemoveFromRange:function(A,B,C){var D;var E=this._GetAttribsForComparison();var F=this._GetOverridesForComparison();if (A.CheckIsCollapsed()){var D=A.CreateBookmark(true);var H=A.GetBookmarkNode(D,true);var I=new FCKElementPath(H.parentNode);var J=[];var K=!FCKDomTools.GetNextSibling(H);var L=K||!FCKDomTools.GetPreviousSibling(H);var M;var N=-1;for (var i=0;i<I.Elements.length;i++){var O=I.Elements[i];if (this.CheckElementRemovable(O)){if (L&&!FCKDomTools.CheckIsEmptyElement(O,function(el){return (el!=H);})){M=O;N=J.length-1;}else{var P=O.nodeName.toLowerCase();if (P==this.Element){for (var Q in E){if (FCKDomTools.HasAttribute(O,Q)){switch (Q){case 'style':this._RemoveStylesFromElement(O);break;case 'class':if (FCKDomTools.GetAttributeValue(O,Q)!=this.GetFinalAttributeValue(Q)) continue;default:FCKDomTools.RemoveAttribute(O,Q);}}}};this._RemoveOverrides(O,F[P]);if (this.GetType()==1) this._RemoveNoAttribElement(O);}}else if (L) J.push(O);L=L&&((K&&!FCKDomTools.GetNextSibling(O))||(!K&&!FCKDomTools.GetPreviousSibling(O)));if (M&&(!L||(i==I.Elements.length-1))){var R=FCKDomTools.RemoveNode(H);for (var j=0;j<=N;j++){var S=FCKDomTools.CloneElement(J[j]);S.appendChild(R);R=S;};if (K) FCKDomTools.InsertAfterNode(M,R);else M.parentNode.insertBefore(R,M);L=false;M=null;}};if (B) A.SelectBookmark(D);if (C) A.MoveToBookmark(D);return;};A.Expand('inline_elements');D=A.CreateBookmark(true);var T=A.GetBookmarkNode(D,true);var U=A.GetBookmarkNode(D,false);A.Release(true);var I=new FCKElementPath(T);var X=I.Elements;var O;for (var i=1;i<X.length;i++){O=X[i];if (O==I.Block||O==I.BlockLimit) break;if (this.CheckElementRemovable(O)) FCKDomTools.BreakParent(T,O,A);};I=new FCKElementPath(U);X=I.Elements;for (var i=1;i<X.length;i++){O=X[i];if (O==I.Block||O==I.BlockLimit) break;b=O.nodeName.toLowerCase();if (this.CheckElementRemovable(O)) FCKDomTools.BreakParent(U,O,A);};var Z=FCKDomTools.GetNextSourceNode(T,true);while (Z){var a=FCKDomTools.GetNextSourceNode(Z);if (Z.nodeType==1){var b=Z.nodeName.toLowerCase();var c=(b==this.Element);if (c){for (var Q in E){if (FCKDomTools.HasAttribute(Z,Q)){switch (Q){case 'style':this._RemoveStylesFromElement(Z);break;case 'class':if (FCKDomTools.GetAttributeValue(Z,Q)!=this.GetFinalAttributeValue(Q)) continue;default:FCKDomTools.RemoveAttribute(Z,Q);}}}}else c=!!F[b];if (c){this._RemoveOverrides(Z,F[b]);this._RemoveNoAttribElement(Z);}};if (a==U) break;Z=a;};this._FixBookmarkStart(T);if (B) A.SelectBookmark(D);if (C) A.MoveToBookmark(D);},CheckElementRemovable:function(A,B){if (!A) return false;var C=A.nodeName.toLowerCase();if (C==this.Element){if (!B&&!FCKDomTools.HasAttributes(A)) return true;var D=this._GetAttribsForComparison();var E=(D._length==0);for (var F in D){if (F=='_length') continue;if (this._CompareAttributeValues(F,FCKDomTools.GetAttributeValue(A,F),(this.GetFinalAttributeValue(F)||''))){E=true;if (!B) break;}else{E=false;if (B) return false;}};if (E) return true;};var G=this._GetOverridesForComparison()[C];if (G){if (!(D=G.Attributes)) return true;for (var i=0;i<D.length;i++){var H=D[i][0];if (FCKDomTools.HasAttribute(A,H)){var I=D[i][1];if (I==null||(typeof I=='string'&&FCKDomTools.GetAttributeValue(A,H)==I)||I.test(FCKDomTools.GetAttributeValue(A,H))) return true;}}};return false;},CheckActive:function(A){switch (this.GetType()){case 0:return this.CheckElementRemovable(A.Block||A.BlockLimit,true);case 1:var B=A.Elements;for (var i=0;i<B.length;i++){var C=B[i];if (C==A.Block||C==A.BlockLimit) continue;if (this.CheckElementRemovable(C,true)) return true;}};return false;},RemoveFromElement:function(A){var B=this._GetAttribsForComparison();var C=this._GetOverridesForComparison();var D=A.getElementsByTagName(this.Element);for (var i=D.length-1;i>=0;i--){var E=D[i];for (var F in B){if (FCKDomTools.HasAttribute(E,F)){switch (F){case 'style':this._RemoveStylesFromElement(E);break;case 'class':if (FCKDomTools.GetAttributeValue(E,F)!=this.GetFinalAttributeValue(F)) continue;default:FCKDomTools.RemoveAttribute(E,F);}}};this._RemoveOverrides(E,C[this.Element]);this._RemoveNoAttribElement(E);};for (var G in C){if (G!=this.Element){D=A.getElementsByTagName(G);for (var i=D.length-1;i>=0;i--){var E=D[i];this._RemoveOverrides(E,C[G]);this._RemoveNoAttribElement(E);}}}},_RemoveStylesFromElement:function(A){var B=A.style.cssText;var C=this.GetFinalStyleValue();if (B.length>0&&C.length==0) return;C='(^|;)\\s*('+C.replace(/\s*([^ ]+):.*?(;|$)/g,'$1|').replace(/\|$/,'')+'):[^;]+';var D=new RegExp(C,'gi');B=B.replace(D,'').Trim();if (B.length==0||B==';') FCKDomTools.RemoveAttribute(A,'style');else A.style.cssText=B.replace(D,'');},_RemoveOverrides:function(A,B){var C=B&&B.Attributes;if (C){for (var i=0;i<C.length;i++){var D=C[i][0];if (FCKDomTools.HasAttribute(A,D)){var E=C[i][1];if (E==null||(E.test&&E.test(FCKDomTools.GetAttributeValue(A,D)))||(typeof E=='string'&&FCKDomTools.GetAttributeValue(A,D)==E)) FCKDomTools.RemoveAttribute(A,D);}}}},_RemoveNoAttribElement:function(A){if (!FCKDomTools.HasAttributes(A)){var B=A.firstChild;var C=A.lastChild;FCKDomTools.RemoveNode(A,true);this._MergeSiblings(B);if (B!=C) this._MergeSiblings(C);}},BuildElement:function(A,B){var C=B||A.createElement(this.Element);var D=this._StyleDesc.Attributes;var E;if (D){for (var F in D){E=this.GetFinalAttributeValue(F);if (F.toLowerCase()=='class') C.className=E;else C.setAttribute(F,E);}};if (this._GetStyleText().length>0) C.style.cssText=this.GetFinalStyleValue();return C;},_CompareAttributeValues:function(A,B,C){if (A=='style'&&B&&C){B=B.replace(/;$/,'').toLowerCase();C=C.replace(/;$/,'').toLowerCase();};return (B==C||((B===null||B==='')&&(C===null||C==='')))},GetFinalAttributeValue:function(A){var B=this._StyleDesc.Attributes;var B=B?B[A]:null;if (!B&&A=='style') return this.GetFinalStyleValue();if (B&&this._Variables) B=B.Replace(FCKRegexLib.StyleVariableAttName,this._GetVariableReplace,this);return B;},GetFinalStyleValue:function(){var A=this._GetStyleText();if (A.length>0&&this._Variables){A=A.Replace(FCKRegexLib.StyleVariableAttName,this._GetVariableReplace,this);A=FCKTools.NormalizeCssText(A);};return A;},_GetVariableReplace:function(){return this._Variables[arguments[2]]||arguments[0];},SetVariable:function(A,B){var C=this._Variables;if (!C) C=this._Variables={};this._Variables[A]=B;},_FromPre:function(A,B,C){var D=B.innerHTML;D=D.replace(/(\r\n|\r)/g,'\n');D=D.replace(/^[ \t]*\n/,'');D=D.replace(/\n$/,'');D=D.replace(/^[ \t]+|[ \t]+$/g,function(match,offset,s){if (match.length==1) return '&nbsp;';else if (offset==0) return new Array(match.length).join('&nbsp;')+' ';else return ' '+new Array(match.length).join('&nbsp;');});var E=new FCKHtmlIterator(D);var F=[];E.Each(function(isTag,value){if (!isTag){value=value.replace(/\n/g,'<br>');value=value.replace(/[ \t]{2,}/g,function (match){return new Array(match.length).join('&nbsp;')+' ';});};F.push(value);});C.innerHTML=F.join('');return C;},_ToPre:function(A,B,C){var D=B.innerHTML.Trim();D=D.replace(/[ \t\r\n]*(<br[^>]*>)[ \t\r\n]*/gi,'<br />');var E=new FCKHtmlIterator(D);var F=[];E.Each(function(isTag,value){if (!isTag) value=value.replace(/([ \t\n\r]+|&nbsp;)/g,' ');else if (isTag&&value=='<br />') value='\n';F.push(value);});if (FCKBrowserInfo.IsIE){var G=A.createElement('div');G.appendChild(C);C.outerHTML='<pre>\n'+F.join('')+'</pre>';C=G.removeChild(G.firstChild);}else C.innerHTML=F.join('');return C;},_CheckAndMergePre:function(A,B){if (A!=FCKDomTools.GetPreviousSourceElement(B,true)) return;var C=A.innerHTML.replace(/\n$/,'')+'\n\n'+B.innerHTML.replace(/^\n/,'');if (FCKBrowserInfo.IsIE) B.outerHTML='<pre>'+C+'</pre>';else B.innerHTML=C;FCKDomTools.RemoveNode(A);},_CheckAndSplitPre:function(A){var B;var C=A.firstChild;C=C&&C.nextSibling;while (C){var D=C.nextSibling;if (D&&D.nextSibling&&C.nodeName.IEquals('br')&&D.nodeName.IEquals('br')){FCKDomTools.RemoveNode(C);C=D.nextSibling;FCKDomTools.RemoveNode(D);B=FCKDomTools.InsertAfterNode(B||A,FCKDomTools.CloneElement(A));continue;};if (B){C=C.previousSibling;FCKDomTools.MoveNode(C.nextSibling,B);};C=C.nextSibling;}},_ApplyBlockStyle:function(A,B,C){var D;if (B) D=A.CreateBookmark();var E=new FCKDomRangeIterator(A);E.EnforceRealBlocks=true;var F;var G=A.Window.document;var H;while((F=E.GetNextParagraph())){var I=this.BuildElement(G);var J=I.nodeName.IEquals('pre');var K=F.nodeName.IEquals('pre');var L=J&&!K;var M=!J&&K;if (L) I=this._ToPre(G,F,I);else if (M) I=this._FromPre(G,F,I);else FCKDomTools.MoveChildren(F,I);F.parentNode.insertBefore(I,F);FCKDomTools.RemoveNode(F);if (J){if (H) this._CheckAndMergePre(H,I);H=I;}else if (M) this._CheckAndSplitPre(I);};if (B) A.SelectBookmark(D);if (C) A.MoveToBookmark(D);},_ApplyInlineStyle:function(A,B,C){var D=A.Window.document;if (A.CheckIsCollapsed()){var E=this.BuildElement(D);A.InsertNode(E);A.MoveToPosition(E,2);A.Select();return;};var F=this.Element;var G=FCK.DTD[F]||FCK.DTD.span;var H=this._GetAttribsForComparison();var I;A.Expand('inline_elements');var J=A.CreateBookmark(true);var K=A.GetBookmarkNode(J,true);var L=A.GetBookmarkNode(J,false);A.Release(true);var M=FCKDomTools.GetNextSourceNode(K,true);while (M){var N=false;var O=M.nodeType;var P=O==1?M.nodeName.toLowerCase():null;if (!P||G[P]){if ((FCK.DTD[M.parentNode.nodeName.toLowerCase()]||FCK.DTD.span)[F]||!FCK.DTD[F]){if (!A.CheckHasRange()) A.SetStart(M,3);if (O!=1||M.childNodes.length==0){var Q=M;var R=Q.parentNode;while (Q==R.lastChild&&G[R.nodeName.toLowerCase()]){Q=R;};A.SetEnd(Q,4);if (Q==Q.parentNode.lastChild&&!G[Q.parentNode.nodeName.toLowerCase()]) N=true;}else{A.SetEnd(M,3);}}else N=true;}else N=true;M=FCKDomTools.GetNextSourceNode(M);if (M==L){M=null;N=true;};if (N&&A.CheckHasRange()&&!A.CheckIsCollapsed()){I=this.BuildElement(D);A.ExtractContents().AppendTo(I);if (I.innerHTML.RTrim().length>0){A.InsertNode(I);this.RemoveFromElement(I);this._MergeSiblings(I,this._GetAttribsForComparison());if (!FCKBrowserInfo.IsIE) I.normalize();};A.Release(true);}};this._FixBookmarkStart(K);if (B) A.SelectBookmark(J);if (C) A.MoveToBookmark(J);},_FixBookmarkStart:function(A){var B;while ((B=A.nextSibling)){if (B.nodeType==1&&FCKListsLib.InlineNonEmptyElements[B.nodeName.toLowerCase()]){if (!B.firstChild) FCKDomTools.RemoveNode(B);else FCKDomTools.MoveNode(A,B,true);continue;};if (B.nodeType==3&&B.length==0){FCKDomTools.RemoveNode(B);continue;};break;}},_MergeSiblings:function(A,B){if (!A||A.nodeType!=1||!FCKListsLib.InlineNonEmptyElements[A.nodeName.toLowerCase()]) return;this._MergeNextSibling(A,B);this._MergePreviousSibling(A,B);},_MergeNextSibling:function(A,B){var C=A.nextSibling;var D=(C&&C.nodeType==1&&C.getAttribute('_fck_bookmark'));if (D) C=C.nextSibling;if (C&&C.nodeType==1&&C.nodeName==A.nodeName){if (!B) B=this._CreateElementAttribsForComparison(A);if (this._CheckAttributesMatch(C,B)){var E=A.lastChild;if (D) FCKDomTools.MoveNode(A.nextSibling,A);FCKDomTools.MoveChildren(C,A);FCKDomTools.RemoveNode(C);if (E) this._MergeNextSibling(E);}}},_MergePreviousSibling:function(A,B){var C=A.previousSibling;var D=(C&&C.nodeType==1&&C.getAttribute('_fck_bookmark'));if (D) C=C.previousSibling;if (C&&C.nodeType==1&&C.nodeName==A.nodeName){if (!B) B=this._CreateElementAttribsForComparison(A);if (this._CheckAttributesMatch(C,B)){var E=A.firstChild;if (D) FCKDomTools.MoveNode(A.previousSibling,A,true);FCKDomTools.MoveChildren(C,A,true);FCKDomTools.RemoveNode(C);if (E) this._MergePreviousSibling(E);}}},_GetStyleText:function(){var A=this._StyleDesc.Styles;var B=(this._StyleDesc.Attributes?this._StyleDesc.Attributes['style']||'':'');if (B.length>0) B+=';';for (var C in A) B+=C+':'+A[C]+';';if (B.length>0&&!(/#\(/.test(B))){B=FCKTools.NormalizeCssText(B);};return (this._GetStyleText=function() { return B;})();},_GetAttribsForComparison:function(){var A=this._GetAttribsForComparison_$;if (A) return A;A={};var B=this._StyleDesc.Attributes;if (B){for (var C in B){A[C.toLowerCase()]=B[C].toLowerCase();}};if (this._GetStyleText().length>0){A['style']=this._GetStyleText().toLowerCase();};FCKTools.AppendLengthProperty(A,'_length');return (this._GetAttribsForComparison_$=A);},_GetOverridesForComparison:function(){var A=this._GetOverridesForComparison_$;if (A) return A;A={};var B=this._StyleDesc.Overrides;if (B){if (!FCKTools.IsArray(B)) B=[B];for (var i=0;i<B.length;i++){var C=B[i];var D;var E;var F;if (typeof C=='string') D=C.toLowerCase();else{D=C.Element?C.Element.toLowerCase():this.Element;F=C.Attributes;};E=A[D]||(A[D]={});if (F){var G=(E.Attributes=E.Attributes||[]);for (var H in F){G.push([H.toLowerCase(),F[H]]);}}}};return (this._GetOverridesForComparison_$=A);},_CreateElementAttribsForComparison:function(A){var B={};var C=0;for (var i=0;i<A.attributes.length;i++){var D=A.attributes[i];if (D.specified){B[D.nodeName.toLowerCase()]=FCKDomTools.GetAttributeValue(A,D).toLowerCase();C++;}};B._length=C;return B;},_CheckAttributesMatch:function(A,B){var C=A.attributes;var D=0;for (var i=0;i<C.length;i++){var E=C[i];if (E.specified){var F=E.nodeName.toLowerCase();var G=B[F];if (!G) break;if (G!=FCKDomTools.GetAttributeValue(A,E).toLowerCase()) break;D++;}};return (D==B._length);}};
 var FCKStyles=FCK.Styles={_Callbacks:{},_ObjectStyles:{},ApplyStyle:function(A){if (typeof A=='string') A=this.GetStyles()[A];if (A){if (A.GetType()==2) A.ApplyToObject(FCKSelection.GetSelectedElement());else A.ApplyToSelection(FCK.EditorWindow);FCK.Events.FireEvent('OnSelectionChange');}},RemoveStyle:function(A){if (typeof A=='string') A=this.GetStyles()[A];if (A){A.RemoveFromSelection(FCK.EditorWindow);FCK.Events.FireEvent('OnSelectionChange');}},AttachStyleStateChange:function(A,B,C){var D=this._Callbacks[A];if (!D) D=this._Callbacks[A]=[];D.push([B,C]);},CheckSelectionChanges:function(){var A=FCKSelection.GetBoundaryParentElement(true);if (!A) return;var B=new FCKElementPath(A);var C=this.GetStyles();for (var D in C){var E=this._Callbacks[D];if (E){var F=C[D];var G=F.CheckActive(B);if (G!=(F._LastState||null)){F._LastState=G;for (var i=0;i<E.length;i++){var H=E[i][0];var I=E[i][1];H.call(I||window,D,G);}}}}},CheckStyleInSelection:function(A){return false;},_GetRemoveFormatTagsRegex:function (){var A=new RegExp('^(?:'+FCKConfig.RemoveFormatTags.replace(/,/g,'|')+')$','i');return (this._GetRemoveFormatTagsRegex=function(){return A;})&&A;},RemoveAll:function(){var A=new FCKDomRange(FCK.EditorWindow);A.MoveToSelection();if (A.CheckIsCollapsed()) return;A.Expand('inline_elements');var B=A.CreateBookmark(true);var C=A.GetBookmarkNode(B,true);var D=A.GetBookmarkNode(B,false);A.Release(true);var E=this._GetRemoveFormatTagsRegex();var F=new FCKElementPath(C);var G=F.Elements;var H;for (var i=1;i<G.length;i++){H=G[i];if (H==F.Block||H==F.BlockLimit) break;if (E.test(H.nodeName)) FCKDomTools.BreakParent(C,H,A);};F=new FCKElementPath(D);G=F.Elements;for (var i=1;i<G.length;i++){H=G[i];if (H==F.Block||H==F.BlockLimit) break;elementName=H.nodeName.toLowerCase();if (E.test(H.nodeName)) FCKDomTools.BreakParent(D,H,A);};var I=FCKDomTools.GetNextSourceNode(C,true,1);while (I){if (I==D) break;var J=FCKDomTools.GetNextSourceNode(I,false,1);if (E.test(I.nodeName)) FCKDomTools.RemoveNode(I,true);else FCKDomTools.RemoveAttributes(I,FCKConfig.RemoveAttributesArray);I=J;};A.SelectBookmark(B);FCK.Events.FireEvent('OnSelectionChange');},GetStyle:function(A){return this.GetStyles()[A];},GetStyles:function(){var A=this._GetStyles;if (!A){A=this._GetStyles=FCKTools.Merge(this._LoadStylesCore(),this._LoadStylesCustom(),this._LoadStylesXml());};return A;},CheckHasObjectStyle:function(A){return!!this._ObjectStyles[A];},_LoadStylesCore:function(){var A={};var B=FCKConfig.CoreStyles;for (var C in B){var D=A['_FCK_'+C]=new FCKStyle(B[C]);D.IsCore=true;};return A;},_LoadStylesCustom:function(){var A={};var B=FCKConfig.CustomStyles;if (B){for (var C in B){var D=A[C]=new FCKStyle(B[C]);D.Name=C;}};return A;},_LoadStylesXml:function(){var A={};var B=FCKConfig.StylesXmlPath;if (!B||B.length==0) return A;var C=new FCKXml();C.LoadUrl(B);var D=FCKXml.TransformToObject(C.SelectSingleNode('Styles'));var E=D.$Style;if (!E) return A;for (var i=0;i<E.length;i++){var F=E[i];var G=(F.element||'').toLowerCase();if (G.length==0) throw('The element name is required. Error loading "'+B+'"');var H={Element:G,Attributes:{},Styles:{},Overrides:[]};var I=F.$Attribute||[];for (var j=0;j<I.length;j++){H.Attributes[I[j].name]=I[j].value;};var J=F.$Style||[];for (j=0;j<J.length;j++){H.Styles[J[j].name]=J[j].value;};var K=F.$Override;if (K){for (j=0;j<K.length;j++){var L=K[j];var M={Element:L.element};var N=L.$Attribute;if (N){M.Attributes={};for (var k=0;k<N.length;k++){var O=N[k].value||null;if (O){var P=O&&FCKRegexLib.RegExp.exec(O);if (P) O=new RegExp(P[1],P[2]||'');};M.Attributes[N[k].name]=O;}};H.Overrides.push(M);}};var Q=new FCKStyle(H);Q.Name=F.name||G;if (Q.GetType()==2) this._ObjectStyles[G]=true;A[Q.Name]=Q;};return A;}};
 var FCKListHandler={OutdentListItem:function(A){var B=A.parentNode;if (B.tagName.toUpperCase().Equals('UL','OL')){var C=FCKTools.GetElementDocument(A);var D=new FCKDocumentFragment(C);var E=D.RootNode;var F=false;var G=FCKDomTools.GetFirstChild(A,['UL','OL']);if (G){F=true;var H;while ((H=G.firstChild)) E.appendChild(G.removeChild(H));FCKDomTools.RemoveNode(G);};var I;var J=false;while ((I=A.nextSibling)){if (!F&&I.nodeType==1&&I.nodeName.toUpperCase()=='LI') J=F=true;E.appendChild(I.parentNode.removeChild(I));if (!J&&I.nodeType==1&&I.nodeName.toUpperCase().Equals('UL','OL')) FCKDomTools.RemoveNode(I,true);};var K=B.parentNode.tagName.toUpperCase();var L=(K=='LI');if (L||K.Equals('UL','OL')){if (F){var G=B.cloneNode(false);D.AppendTo(G);A.appendChild(G);}else if (L) D.InsertAfterNode(B.parentNode);else D.InsertAfterNode(B);if (L) FCKDomTools.InsertAfterNode(B.parentNode,B.removeChild(A));else FCKDomTools.InsertAfterNode(B,B.removeChild(A));}else{if (F){var N=B.cloneNode(false);D.AppendTo(N);FCKDomTools.InsertAfterNode(B,N);};var O=C.createElement(FCKConfig.EnterMode=='p'?'p':'div');FCKDomTools.MoveChildren(B.removeChild(A),O);FCKDomTools.InsertAfterNode(B,O);if (FCKConfig.EnterMode=='br'){if (FCKBrowserInfo.IsGecko) O.parentNode.insertBefore(FCKTools.CreateBogusBR(C),O);else FCKDomTools.InsertAfterNode(O,FCKTools.CreateBogusBR(C));FCKDomTools.RemoveNode(O,true);}};if (this.CheckEmptyList(B)) FCKDomTools.RemoveNode(B,true);}},CheckEmptyList:function(A){return (FCKDomTools.GetFirstChild(A,'LI')==null);},CheckListHasContents:function(A){var B=A.firstChild;while (B){switch (B.nodeType){case 1:if (!B.nodeName.IEquals('UL','LI')) return true;break;case 3:if (B.nodeValue.Trim().length>0) return true;};B=B.nextSibling;};return false;}};
 var FCKElementPath=function(A){var B=null;var C=null;var D=[];var e=A;while (e){if (e.nodeType==1){if (!this.LastElement) this.LastElement=e;var E=e.nodeName.toLowerCase();if (FCKBrowserInfo.IsIE&&e.scopeName!='HTML') E=e.scopeName.toLowerCase()+':'+E;if (!C){if (!B&&FCKListsLib.PathBlockElements[E]!=null) B=e;if (FCKListsLib.PathBlockLimitElements[E]!=null){if (!B&&E=='div'&&!FCKElementPath._CheckHasBlock(e)) B=e;else C=e;}};D.push(e);if (E=='body') break;};e=e.parentNode;};this.Block=B;this.BlockLimit=C;this.Elements=D;};FCKElementPath._CheckHasBlock=function(A){var B=A.childNodes;for (var i=0,count=B.length;i<count;i++){var C=B[i];if (C.nodeType==1&&FCKListsLib.BlockElements[C.nodeName.toLowerCase()]) return true;};return false;};
-var FCKDomRange=function(A){this.Window=A;this._Cache={};};FCKDomRange.prototype={_UpdateElementInfo:function(){var A=this._Range;if (!A) this.Release(true);else{var B=A.startContainer;var C=A.endContainer;var D=new FCKElementPath(B);this.StartNode=B.nodeType==3?B:B.childNodes[A.startOffset];this.StartContainer=B;this.StartBlock=D.Block;this.StartBlockLimit=D.BlockLimit;if (B!=C) D=new FCKElementPath(C);var E=C;if (A.endOffset==0){while (E&&!E.previousSibling) E=E.parentNode;if (E) E=E.previousSibling;}else if (E.nodeType==1) E=E.childNodes[A.endOffset-1];this.EndNode=E;this.EndContainer=C;this.EndBlock=D.Block;this.EndBlockLimit=D.BlockLimit;};this._Cache={};},CreateRange:function(){return new FCKW3CRange(this.Window.document);},DeleteContents:function(){if (this._Range){this._Range.deleteContents();this._UpdateElementInfo();}},ExtractContents:function(){if (this._Range){var A=this._Range.extractContents();this._UpdateElementInfo();return A;};return null;},CheckIsCollapsed:function(){if (this._Range) return this._Range.collapsed;return false;},Collapse:function(A){if (this._Range) this._Range.collapse(A);this._UpdateElementInfo();},Clone:function(){var A=FCKTools.CloneObject(this);if (this._Range) A._Range=this._Range.cloneRange();return A;},MoveToNodeContents:function(A){if (!this._Range) this._Range=this.CreateRange();this._Range.selectNodeContents(A);this._UpdateElementInfo();},MoveToElementStart:function(A){this.SetStart(A,1);this.SetEnd(A,1);},MoveToElementEditStart:function(A){var B;while (A&&A.nodeType==1){if (FCKDomTools.CheckIsEditable(A)) B=A;else if (B) break;A=A.firstChild;};if (B) this.MoveToElementStart(B);},InsertNode:function(A){if (this._Range) this._Range.insertNode(A);},CheckIsEmpty:function(){if (this.CheckIsCollapsed()) return true;var A=this.Window.document.createElement('div');this._Range.cloneContents().AppendTo(A);FCKDomTools.TrimNode(A);return (A.innerHTML.length==0);},CheckStartOfBlock:function(){var A=this._Cache;var B=A.IsStartOfBlock;if (B!=undefined) return B;var C=this.StartBlock||this.StartBlockLimit;var D=this._Range.startContainer;var E=this._Range.startOffset;var F;if (E>0){if (D.nodeType==3){var G=D.nodeValue.substr(0,E).Trim();if (G.length!=0) return A.IsStartOfBlock=false;}else F=D.childNodes[E-1];};if (!F) F=FCKDomTools.GetPreviousSourceNode(D,true,null,C);while (F){switch (F.nodeType){case 1:if (!FCKListsLib.InlineChildReqElements[F.nodeName.toLowerCase()]) return A.IsStartOfBlock=false;break;case 3:if (F.nodeValue.Trim().length>0) return A.IsStartOfBlock=false;};F=FCKDomTools.GetPreviousSourceNode(F,false,null,C);};return A.IsStartOfBlock=true;},CheckEndOfBlock:function(A){var B=this._Cache.IsEndOfBlock;if (B!=undefined) return B;var C=this.EndBlock||this.EndBlockLimit;var D=this._Range.endContainer;var E=this._Range.endOffset;var F;if (D.nodeType==3){var G=D.nodeValue;if (E<G.length){G=G.substr(E);if (G.Trim().length!=0) return this._Cache.IsEndOfBlock=false;}}else F=D.childNodes[E];if (!F) F=FCKDomTools.GetNextSourceNode(D,true,null,C);var H=false;while (F){switch (F.nodeType){case 1:var I=F.nodeName.toLowerCase();if (FCKListsLib.InlineChildReqElements[I]) break;if (I=='br'&&!H){H=true;break;};return this._Cache.IsEndOfBlock=false;case 3:if (F.nodeValue.Trim().length>0) return this._Cache.IsEndOfBlock=false;};F=FCKDomTools.GetNextSourceNode(F,false,null,C);};if (A) this.Select();return this._Cache.IsEndOfBlock=true;},CreateBookmark:function(A){var B={StartId:(new Date()).valueOf()+Math.floor(Math.random()*1000)+'S',EndId:(new Date()).valueOf()+Math.floor(Math.random()*1000)+'E'};var C=this.Window.document;var D;var E;var F;if (!this.CheckIsCollapsed()){E=C.createElement('span');E.style.display='none';E.id=B.EndId;E.setAttribute('_fck_bookmark',true);E.innerHTML='&nbsp;';F=this.Clone();F.Collapse(false);F.InsertNode(E);};D=C.createElement('span');D.style.display='none';D.id=B.StartId;D.setAttribute('_fck_bookmark',true);D.innerHTML='&nbsp;';F=this.Clone();F.Collapse(true);F.InsertNode(D);if (A){B.StartNode=D;B.EndNode=E;};if (E){this.SetStart(D,4);this.SetEnd(E,3);}else this.MoveToPosition(D,4);return B;},GetBookmarkNode:function(A,B){var C=this.Window.document;if (B) return A.StartNode||C.getElementById(A.StartId);else return A.EndNode||C.getElementById(A.EndId);},MoveToBookmark:function(A,B){var C=this.GetBookmarkNode(A,true);var D=this.GetBookmarkNode(A,false);this.SetStart(C,3);if (!B) FCKDomTools.RemoveNode(C);if (D){this.SetEnd(D,3);if (!B) FCKDomTools.RemoveNode(D);}else this.Collapse(true);this._UpdateElementInfo();},CreateBookmark2:function(){if (!this._Range) return { "Start":0,"End":0 };var A={"Start":[this._Range.startOffset],"End":[this._Range.endOffset]};var B=this._Range.startContainer.previousSibling;var C=this._Range.endContainer.previousSibling;var D=this._Range.startContainer;var E=this._Range.endContainer;while (B&&B.nodeType==3){A.Start[0]+=B.length;D=B;B=B.previousSibling;};while (C&&C.nodeType==3){A.End[0]+=C.length;E=C;C=C.previousSibling;};if (D.nodeType==1&&D.childNodes[A.Start[0]]&&D.childNodes[A.Start[0]].nodeType==3){var F=D.childNodes[A.Start[0]];var G=0;while (F.previousSibling&&F.previousSibling.nodeType==3){F=F.previousSibling;G+=F.length;};D=F;A.Start[0]=G;};if (E.nodeType==1&&E.childNodes[A.End[0]]&&E.childNodes[A.End[0]].nodeType==3){var F=E.childNodes[A.End[0]];var G=0;while (F.previousSibling&&F.previousSibling.nodeType==3){F=F.previousSibling;G+=F.length;};E=F;A.End[0]=G;};A.Start=FCKDomTools.GetNodeAddress(D,true).concat(A.Start);A.End=FCKDomTools.GetNodeAddress(E,true).concat(A.End);return A;},MoveToBookmark2:function(A){var B=FCKDomTools.GetNodeFromAddress(this.Window.document,A.Start.slice(0,-1),true);var C=FCKDomTools.GetNodeFromAddress(this.Window.document,A.End.slice(0,-1),true);this.Release(true);this._Range=new FCKW3CRange(this.Window.document);var D=A.Start[A.Start.length-1];var E=A.End[A.End.length-1];while (B.nodeType==3&&D>B.length){if (!B.nextSibling||B.nextSibling.nodeType!=3) break;D-=B.length;B=B.nextSibling;};while (C.nodeType==3&&E>C.length){if (!C.nextSibling||C.nextSibling.nodeType!=3) break;E-=C.length;C=C.nextSibling;};this._Range.setStart(B,D);this._Range.setEnd(C,E);this._UpdateElementInfo();},MoveToPosition:function(A,B){this.SetStart(A,B);this.Collapse(true);},SetStart:function(A,B,C){var D=this._Range;if (!D) D=this._Range=this.CreateRange();switch(B){case 1:D.setStart(A,0);break;case 2:D.setStart(A,A.childNodes.length);break;case 3:D.setStartBefore(A);break;case 4:D.setStartAfter(A);};if (!C) this._UpdateElementInfo();},SetEnd:function(A,B,C){var D=this._Range;if (!D) D=this._Range=this.CreateRange();switch(B){case 1:D.setEnd(A,0);break;case 2:D.setEnd(A,A.childNodes.length);break;case 3:D.setEndBefore(A);break;case 4:D.setEndAfter(A);};if (!C) this._UpdateElementInfo();},Expand:function(A){var B,oSibling;switch (A){case 'inline_elements':if (this._Range.startOffset==0){B=this._Range.startContainer;if (B.nodeType!=1) B=B.previousSibling?null:B.parentNode;if (B){while (FCKListsLib.InlineNonEmptyElements[B.nodeName.toLowerCase()]){this._Range.setStartBefore(B);if (B!=B.parentNode.firstChild) break;B=B.parentNode;}}};B=this._Range.endContainer;var C=this._Range.endOffset;if ((B.nodeType==3&&C>=B.nodeValue.length)||(B.nodeType==1&&C>=B.childNodes.length)||(B.nodeType!=1&&B.nodeType!=3)){if (B.nodeType!=1) B=B.nextSibling?null:B.parentNode;if (B){while (FCKListsLib.InlineNonEmptyElements[B.nodeName.toLowerCase()]){this._Range.setEndAfter(B);if (B!=B.parentNode.lastChild) break;B=B.parentNode;}}};break;case 'block_contents':case 'list_contents':var D=FCKListsLib.BlockBoundaries;if (A=='list_contents'||FCKConfig.EnterMode=='br') D=FCKListsLib.ListBoundaries;if (this.StartBlock&&FCKConfig.EnterMode!='br'&&A=='block_contents') this.SetStart(this.StartBlock,1);else{B=this._Range.startContainer;if (B.nodeType==1){var E=B.childNodes[this._Range.startOffset];if (E) B=FCKDomTools.GetPreviousSourceNode(E,true);else B=B.lastChild||B;};while (B&&(B.nodeType!=1||(B!=this.StartBlockLimit&&!D[B.nodeName.toLowerCase()]))){this._Range.setStartBefore(B);B=B.previousSibling||B.parentNode;}};if (this.EndBlock&&FCKConfig.EnterMode!='br'&&A=='block_contents'&&this.EndBlock.nodeName.toLowerCase()!='li') this.SetEnd(this.EndBlock,2);else{B=this._Range.endContainer;if (B.nodeType==1) B=B.childNodes[this._Range.endOffset]||B.lastChild;while (B&&(B.nodeType!=1||(B!=this.StartBlockLimit&&!D[B.nodeName.toLowerCase()]))){this._Range.setEndAfter(B);B=B.nextSibling||B.parentNode;};if (B&&B.nodeName.toLowerCase()=='br') this._Range.setEndAfter(B);};this._UpdateElementInfo();}},SplitBlock:function(A){var B=A||FCKConfig.EnterMode;if (!this._Range) this.MoveToSelection();if (this.StartBlockLimit==this.EndBlockLimit){var C=this.StartBlock;var D=this.EndBlock;var E=null;if (B!='br'){if (!C){C=this.FixBlock(true,B);D=this.EndBlock;};if (!D) D=this.FixBlock(false,B);};var F=(C!=null&&this.CheckStartOfBlock());var G=(D!=null&&this.CheckEndOfBlock());if (!this.CheckIsEmpty()) this.DeleteContents();if (C&&D&&C==D){if (G){E=new FCKElementPath(this.StartContainer);this.MoveToPosition(D,4);D=null;}else if (F){E=new FCKElementPath(this.StartContainer);this.MoveToPosition(C,3);C=null;}else{this.SetEnd(C,2);var H=this.ExtractContents();D=C.cloneNode(false);D.removeAttribute('id',false);H.AppendTo(D);FCKDomTools.InsertAfterNode(C,D);this.MoveToPosition(C,4);if (FCKBrowserInfo.IsGecko&&!C.nodeName.IEquals(['ul','ol'])) FCKTools.AppendBogusBr(C);}};return {PreviousBlock:C,NextBlock:D,WasStartOfBlock:F,WasEndOfBlock:G,ElementPath:E};};return null;},FixBlock:function(A,B){var C=this.CreateBookmark();this.Collapse(A);this.Expand('block_contents');var D=this.Window.document.createElement(B);this.ExtractContents().AppendTo(D);FCKDomTools.TrimNode(D);this.InsertNode(D);this.MoveToBookmark(C);return D;},Release:function(A){if (!A) this.Window=null;this.StartNode=null;this.StartContainer=null;this.StartBlock=null;this.StartBlockLimit=null;this.EndNode=null;this.EndContainer=null;this.EndBlock=null;this.EndBlockLimit=null;this._Range=null;this._Cache=null;},CheckHasRange:function(){return!!this._Range;},GetTouchedStartNode:function(){var A=this._Range;var B=A.startContainer;if (A.collapsed||B.nodeType!=1) return B;return B.childNodes[A.startOffset]||B;},GetTouchedEndNode:function(){var A=this._Range;var B=A.endContainer;if (A.collapsed||B.nodeType!=1) return B;return B.childNodes[A.endOffset-1]||B;}};
+var FCKDomRange=function(A){this.Window=A;this._Cache={};};FCKDomRange.prototype={_UpdateElementInfo:function(){var A=this._Range;if (!A) this.Release(true);else{var B=A.startContainer;var C=new FCKElementPath(B);this.StartNode=B.nodeType==3?B:B.childNodes[A.startOffset];this.StartContainer=B;this.StartBlock=C.Block;this.StartBlockLimit=C.BlockLimit;if (A.collapsed){this.EndNode=this.StartNode;this.EndContainer=this.StartContainer;this.EndBlock=this.StartBlock;this.EndBlockLimit=this.StartBlockLimit;}else{var D=A.endContainer;if (B!=D) C=new FCKElementPath(D);var E=D;if (A.endOffset==0){while (E&&!E.previousSibling) E=E.parentNode;if (E) E=E.previousSibling;}else if (E.nodeType==1) E=E.childNodes[A.endOffset-1];this.EndNode=E;this.EndContainer=D;this.EndBlock=C.Block;this.EndBlockLimit=C.BlockLimit;}};this._Cache={};},CreateRange:function(){return new FCKW3CRange(this.Window.document);},DeleteContents:function(){if (this._Range){this._Range.deleteContents();this._UpdateElementInfo();}},ExtractContents:function(){if (this._Range){var A=this._Range.extractContents();this._UpdateElementInfo();return A;};return null;},CheckIsCollapsed:function(){if (this._Range) return this._Range.collapsed;return false;},Collapse:function(A){if (this._Range) this._Range.collapse(A);this._UpdateElementInfo();},Clone:function(){var A=FCKTools.CloneObject(this);if (this._Range) A._Range=this._Range.cloneRange();return A;},MoveToNodeContents:function(A){if (!this._Range) this._Range=this.CreateRange();this._Range.selectNodeContents(A);this._UpdateElementInfo();},MoveToElementStart:function(A){this.SetStart(A,1);this.SetEnd(A,1);},MoveToElementEditStart:function(A){var B;while (A&&A.nodeType==1){if (FCKDomTools.CheckIsEditable(A)) B=A;else if (B) break;A=A.firstChild;};if (B) this.MoveToElementStart(B);},InsertNode:function(A){if (this._Range) this._Range.insertNode(A);},CheckIsEmpty:function(){if (this.CheckIsCollapsed()) return true;var A=this.Window.document.createElement('div');this._Range.cloneContents().AppendTo(A);FCKDomTools.TrimNode(A);return (A.innerHTML.length==0);},CheckStartOfBlock:function(){var A=this._Cache;var B=A.IsStartOfBlock;if (B!=undefined) return B;var C=this.StartBlock||this.StartBlockLimit;var D=this._Range.startContainer;var E=this._Range.startOffset;var F;if (E>0){if (D.nodeType==3){var G=D.nodeValue.substr(0,E).Trim();if (G.length!=0) return A.IsStartOfBlock=false;}else F=D.childNodes[E-1];};if (!F) F=FCKDomTools.GetPreviousSourceNode(D,true,null,C);while (F){switch (F.nodeType){case 1:if (!FCKListsLib.InlineChildReqElements[F.nodeName.toLowerCase()]) return A.IsStartOfBlock=false;break;case 3:if (F.nodeValue.Trim().length>0) return A.IsStartOfBlock=false;};F=FCKDomTools.GetPreviousSourceNode(F,false,null,C);};return A.IsStartOfBlock=true;},CheckEndOfBlock:function(A){var B=this._Cache.IsEndOfBlock;if (B!=undefined) return B;var C=this.EndBlock||this.EndBlockLimit;var D=this._Range.endContainer;var E=this._Range.endOffset;var F;if (D.nodeType==3){var G=D.nodeValue;if (E<G.length){G=G.substr(E);if (G.Trim().length!=0) return this._Cache.IsEndOfBlock=false;}}else F=D.childNodes[E];if (!F) F=FCKDomTools.GetNextSourceNode(D,true,null,C);var H=false;while (F){switch (F.nodeType){case 1:var I=F.nodeName.toLowerCase();if (FCKListsLib.InlineChildReqElements[I]) break;if (I=='br'&&!H){H=true;break;};return this._Cache.IsEndOfBlock=false;case 3:if (F.nodeValue.Trim().length>0) return this._Cache.IsEndOfBlock=false;};F=FCKDomTools.GetNextSourceNode(F,false,null,C);};if (A) this.Select();return this._Cache.IsEndOfBlock=true;},CreateBookmark:function(A){var B={StartId:(new Date()).valueOf()+Math.floor(Math.random()*1000)+'S',EndId:(new Date()).valueOf()+Math.floor(Math.random()*1000)+'E'};var C=this.Window.document;var D;var E;var F;if (!this.CheckIsCollapsed()){E=C.createElement('span');E.style.display='none';E.id=B.EndId;E.setAttribute('_fck_bookmark',true);E.innerHTML='&nbsp;';F=this.Clone();F.Collapse(false);F.InsertNode(E);};D=C.createElement('span');D.style.display='none';D.id=B.StartId;D.setAttribute('_fck_bookmark',true);D.innerHTML='&nbsp;';F=this.Clone();F.Collapse(true);F.InsertNode(D);if (A){B.StartNode=D;B.EndNode=E;};if (E){this.SetStart(D,4);this.SetEnd(E,3);}else this.MoveToPosition(D,4);return B;},GetBookmarkNode:function(A,B){var C=this.Window.document;if (B) return A.StartNode||C.getElementById(A.StartId);else return A.EndNode||C.getElementById(A.EndId);},MoveToBookmark:function(A,B){var C=this.GetBookmarkNode(A,true);var D=this.GetBookmarkNode(A,false);this.SetStart(C,3);if (!B) FCKDomTools.RemoveNode(C);if (D){this.SetEnd(D,3);if (!B) FCKDomTools.RemoveNode(D);}else this.Collapse(true);this._UpdateElementInfo();},CreateBookmark2:function(){if (!this._Range) return { "Start":0,"End":0 };var A={"Start":[this._Range.startOffset],"End":[this._Range.endOffset]};var B=this._Range.startContainer.previousSibling;var C=this._Range.endContainer.previousSibling;var D=this._Range.startContainer;var E=this._Range.endContainer;while (B&&D.nodeType==3){A.Start[0]+=B.length;D=B;B=B.previousSibling;}while (C&&E.nodeType==3){A.End[0]+=C.length;E=C;C=C.previousSibling;};if (D.nodeType==1&&D.childNodes[A.Start[0]]&&D.childNodes[A.Start[0]].nodeType==3){var F=D.childNodes[A.Start[0]];var G=0;while (F.previousSibling&&F.previousSibling.nodeType==3){F=F.previousSibling;G+=F.length;};D=F;A.Start[0]=G;};if (E.nodeType==1&&E.childNodes[A.End[0]]&&E.childNodes[A.End[0]].nodeType==3){var F=E.childNodes[A.End[0]];var G=0;while (F.previousSibling&&F.previousSibling.nodeType==3){F=F.previousSibling;G+=F.length;};E=F;A.End[0]=G;};A.Start=FCKDomTools.GetNodeAddress(D,true).concat(A.Start);A.End=FCKDomTools.GetNodeAddress(E,true).concat(A.End);return A;},MoveToBookmark2:function(A){var B=FCKDomTools.GetNodeFromAddress(this.Window.document,A.Start.slice(0,-1),true);var C=FCKDomTools.GetNodeFromAddress(this.Window.document,A.End.slice(0,-1),true);this.Release(true);this._Range=new FCKW3CRange(this.Window.document);var D=A.Start[A.Start.length-1];var E=A.End[A.End.length-1];while (B.nodeType==3&&D>B.length){if (!B.nextSibling||B.nextSibling.nodeType!=3) break;D-=B.length;B=B.nextSibling;}while (C.nodeType==3&&E>C.length){if (!C.nextSibling||C.nextSibling.nodeType!=3) break;E-=C.length;C=C.nextSibling;};this._Range.setStart(B,D);this._Range.setEnd(C,E);this._UpdateElementInfo();},MoveToPosition:function(A,B){this.SetStart(A,B);this.Collapse(true);},SetStart:function(A,B,C){var D=this._Range;if (!D) D=this._Range=this.CreateRange();switch(B){case 1:D.setStart(A,0);break;case 2:D.setStart(A,A.childNodes.length);break;case 3:D.setStartBefore(A);break;case 4:D.setStartAfter(A);};if (!C) this._UpdateElementInfo();},SetEnd:function(A,B,C){var D=this._Range;if (!D) D=this._Range=this.CreateRange();switch(B){case 1:D.setEnd(A,0);break;case 2:D.setEnd(A,A.childNodes.length);break;case 3:D.setEndBefore(A);break;case 4:D.setEndAfter(A);};if (!C) this._UpdateElementInfo();},Expand:function(A){var B,oSibling;switch (A){case 'inline_elements':if (this._Range.startOffset==0){B=this._Range.startContainer;if (B.nodeType!=1) B=B.previousSibling?null:B.parentNode;if (B){while (FCKListsLib.InlineNonEmptyElements[B.nodeName.toLowerCase()]){this._Range.setStartBefore(B);if (B!=B.parentNode.firstChild) break;B=B.parentNode;}}};B=this._Range.endContainer;var C=this._Range.endOffset;if ((B.nodeType==3&&C>=B.nodeValue.length)||(B.nodeType==1&&C>=B.childNodes.length)||(B.nodeType!=1&&B.nodeType!=3)){if (B.nodeType!=1) B=B.nextSibling?null:B.parentNode;if (B){while (FCKListsLib.InlineNonEmptyElements[B.nodeName.toLowerCase()]){this._Range.setEndAfter(B);if (B!=B.parentNode.lastChild) break;B=B.parentNode;}}};break;case 'block_contents':case 'list_contents':var D=FCKListsLib.BlockBoundaries;if (A=='list_contents'||FCKConfig.EnterMode=='br') D=FCKListsLib.ListBoundaries;if (this.StartBlock&&FCKConfig.EnterMode!='br'&&A=='block_contents') this.SetStart(this.StartBlock,1);else{B=this._Range.startContainer;if (B.nodeType==1){var E=B.childNodes[this._Range.startOffset];if (E) B=FCKDomTools.GetPreviousSourceNode(E,true);else B=B.lastChild||B;}while (B&&(B.nodeType!=1||(B!=this.StartBlockLimit&&!D[B.nodeName.toLowerCase()]))){this._Range.setStartBefore(B);B=B.previousSibling||B.parentNode;}};if (this.EndBlock&&FCKConfig.EnterMode!='br'&&A=='block_contents'&&this.EndBlock.nodeName.toLowerCase()!='li') this.SetEnd(this.EndBlock,2);else{B=this._Range.endContainer;if (B.nodeType==1) B=B.childNodes[this._Range.endOffset]||B.lastChild;while (B&&(B.nodeType!=1||(B!=this.StartBlockLimit&&!D[B.nodeName.toLowerCase()]))){this._Range.setEndAfter(B);B=B.nextSibling||B.parentNode;};if (B&&B.nodeName.toLowerCase()=='br') this._Range.setEndAfter(B);};this._UpdateElementInfo();}},SplitBlock:function(A){var B=A||FCKConfig.EnterMode;if (!this._Range) this.MoveToSelection();if (this.StartBlockLimit==this.EndBlockLimit){var C=this.StartBlock;var D=this.EndBlock;var E=null;if (B!='br'){if (!C){C=this.FixBlock(true,B);D=this.EndBlock;};if (!D) D=this.FixBlock(false,B);};var F=(C!=null&&this.CheckStartOfBlock());var G=(D!=null&&this.CheckEndOfBlock());if (!this.CheckIsEmpty()) this.DeleteContents();if (C&&D&&C==D){if (G){E=new FCKElementPath(this.StartContainer);this.MoveToPosition(D,4);D=null;}else if (F){E=new FCKElementPath(this.StartContainer);this.MoveToPosition(C,3);C=null;}else{this.SetEnd(C,2);var H=this.ExtractContents();D=C.cloneNode(false);D.removeAttribute('id',false);H.AppendTo(D);FCKDomTools.InsertAfterNode(C,D);this.MoveToPosition(C,4);if (FCKBrowserInfo.IsGecko&&!C.nodeName.IEquals(['ul','ol'])) FCKTools.AppendBogusBr(C);}};return {PreviousBlock:C,NextBlock:D,WasStartOfBlock:F,WasEndOfBlock:G,ElementPath:E};};return null;},FixBlock:function(A,B){var C=this.CreateBookmark();this.Collapse(A);this.Expand('block_contents');var D=this.Window.document.createElement(B);this.ExtractContents().AppendTo(D);FCKDomTools.TrimNode(D);if (FCKDomTools.CheckIsEmptyElement(D,function(element) { return element.getAttribute('_fck_bookmark')!='true';})&&FCKBrowserInfo.IsGeckoLike) FCKTools.AppendBogusBr(D);this.InsertNode(D);this.MoveToBookmark(C);return D;},Release:function(A){if (!A) this.Window=null;this.StartNode=null;this.StartContainer=null;this.StartBlock=null;this.StartBlockLimit=null;this.EndNode=null;this.EndContainer=null;this.EndBlock=null;this.EndBlockLimit=null;this._Range=null;this._Cache=null;},CheckHasRange:function(){return!!this._Range;},GetTouchedStartNode:function(){var A=this._Range;var B=A.startContainer;if (A.collapsed||B.nodeType!=1) return B;return B.childNodes[A.startOffset]||B;},GetTouchedEndNode:function(){var A=this._Range;var B=A.endContainer;if (A.collapsed||B.nodeType!=1) return B;return B.childNodes[A.endOffset-1]||B;}};
 FCKDomRange.prototype.MoveToSelection=function(){this.Release(true);var A=this.Window.getSelection();if (A&&A.rangeCount>0){this._Range=FCKW3CRange.CreateFromRange(this.Window.document,A.getRangeAt(0));this._UpdateElementInfo();}else if (this.Window.document) this.MoveToElementStart(this.Window.document.body);};FCKDomRange.prototype.Select=function(){var A=this._Range;if (A){var B=A.startContainer;if (A.collapsed&&B.nodeType==1&&B.childNodes.length==0) B.appendChild(A._Document.createTextNode(''));var C=this.Window.document.createRange();C.setStart(B,A.startOffset);try{C.setEnd(A.endContainer,A.endOffset);}catch (e){if (e.toString().Contains('NS_ERROR_ILLEGAL_VALUE')){A.collapse(true);C.setEnd(A.endContainer,A.endOffset);}else throw(e);};var D=this.Window.getSelection();D.removeAllRanges();D.addRange(C);}};FCKDomRange.prototype.SelectBookmark=function(A){var B=this.Window.document.createRange();var C=this.GetBookmarkNode(A,true);var D=this.GetBookmarkNode(A,false);B.setStart(C.parentNode,FCKDomTools.GetIndexOf(C));FCKDomTools.RemoveNode(C);if (D){B.setEnd(D.parentNode,FCKDomTools.GetIndexOf(D));FCKDomTools.RemoveNode(D);};var E=this.Window.getSelection();E.removeAllRanges();E.addRange(B);};
-var FCKDomRangeIterator=function(A){this.Range=A;this.ForceBrBreak=false;this.EnforceRealBlocks=false;};FCKDomRangeIterator.CreateFromSelection=function(A){var B=new FCKDomRange(A);B.MoveToSelection();return new FCKDomRangeIterator(B);};FCKDomRangeIterator.prototype={GetNextParagraph:function(){var A;var B;var C;var D;var E;var F=this.ForceBrBreak?FCKListsLib.ListBoundaries:FCKListsLib.BlockBoundaries;if (!this._LastNode){var B=this.Range.Clone();B.Expand(this.ForceBrBreak?'list_contents':'block_contents');this._NextNode=B.GetTouchedStartNode();this._LastNode=B.GetTouchedEndNode();B=null;};var H=this._NextNode;var I=this._LastNode;this._NextNode=null;while (H){var J=false;var K=(H.nodeType!=1);var L=false;if (!K){var M=H.nodeName.toLowerCase();if (F[M]&&(!FCKBrowserInfo.IsIE||H.scopeName=='HTML')){if (M=='br') K=true;else if (!B&&H.childNodes.length==0&&M!='hr'){A=H;C=H==I;break;};if (B){B.SetEnd(H,3,true);if (M!='br') this._NextNode=H;};J=true;}else{if (H.firstChild){if (!B){B=new FCKDomRange(this.Range.Window);B.SetStart(H,3,true);};H=H.firstChild;continue;};K=true;}}else if (H.nodeType==3){if (/^[\r\n\t ]+$/.test(H.nodeValue)) K=false;};if (K&&!B){B=new FCKDomRange(this.Range.Window);B.SetStart(H,3,true);};C=((!J||K)&&H==I);if (B&&!J){while (!H.nextSibling&&!C){var N=H.parentNode;if (F[N.nodeName.toLowerCase()]){J=true;C=C||(N==I);break;};H=N;K=true;C=(H==I);L=true;}};if (K) B.SetEnd(H,4,true);if ((J||C)&&B){B._UpdateElementInfo();if (B.StartNode==B.EndNode&&B.StartNode.parentNode==B.StartBlockLimit&&B.StartNode.getAttribute&&B.StartNode.getAttribute('_fck_bookmark')) B=null;else break;};if (C) break;H=FCKDomTools.GetNextSourceNode(H,L,null,I);};if (!A){if (!B){this._NextNode=null;return null;};A=B.StartBlock;if (!A&&!this.EnforceRealBlocks&&B.StartBlockLimit.nodeName.IEquals('DIV','TH','TD')&&B.CheckStartOfBlock()&&B.CheckEndOfBlock()){A=B.StartBlockLimit;}else if (!A||(this.EnforceRealBlocks&&A.nodeName.toLowerCase()=='li')){A=this.Range.Window.document.createElement(FCKConfig.EnterMode=='p'?'p':'div');B.ExtractContents().AppendTo(A);FCKDomTools.TrimNode(A);B.InsertNode(A);D=true;E=true;}else if (A.nodeName.toLowerCase()!='li'){if (!B.CheckStartOfBlock()||!B.CheckEndOfBlock()){A=A.cloneNode(false);B.ExtractContents().AppendTo(A);FCKDomTools.TrimNode(A);var O=B.SplitBlock();D=!O.WasStartOfBlock;E=!O.WasEndOfBlock;B.InsertNode(A);}}else if (!C){this._NextNode=A==I?null:FCKDomTools.GetNextSourceNode(B.EndNode,true,null,I);return A;}};if (D){var P=A.previousSibling;if (P&&P.nodeType==1){if (P.nodeName.toLowerCase()=='br') P.parentNode.removeChild(P);else if (P.lastChild&&P.lastChild.nodeName.IEquals('br')) P.removeChild(P.lastChild);}};if (E){var Q=A.lastChild;if (Q&&Q.nodeType==1&&Q.nodeName.toLowerCase()=='br') A.removeChild(Q);};if (!this._NextNode) this._NextNode=(C||A==I)?null:FCKDomTools.GetNextSourceNode(A,true,null,I);return A;}};
-var FCKDocumentFragment=function(A,B){this.RootNode=B||A.createDocumentFragment();};FCKDocumentFragment.prototype={AppendTo:function(A){A.appendChild(this.RootNode);},InsertAfterNode:function(A){FCKDomTools.InsertAfterNode(A,this.RootNode);}};
+var FCKDomRangeIterator=function(A){this.Range=A;this.ForceBrBreak=false;this.EnforceRealBlocks=false;};FCKDomRangeIterator.CreateFromSelection=function(A){var B=new FCKDomRange(A);B.MoveToSelection();return new FCKDomRangeIterator(B);};FCKDomRangeIterator.prototype={GetNextParagraph:function(){var A;var B;var C;var D;var E;var F=this.ForceBrBreak?FCKListsLib.ListBoundaries:FCKListsLib.BlockBoundaries;if (!this._LastNode){var B=this.Range.Clone();B.Expand(this.ForceBrBreak?'list_contents':'block_contents');this._NextNode=B.GetTouchedStartNode();this._LastNode=B.GetTouchedEndNode();B=null;};var H=this._NextNode;var I=this._LastNode;this._NextNode=null;while (H){var J=false;var K=(H.nodeType!=1);var L=false;if (!K){var M=H.nodeName.toLowerCase();if (F[M]&&(!FCKBrowserInfo.IsIE||H.scopeName=='HTML')){if (M=='br') K=true;else if (!B&&H.childNodes.length==0&&M!='hr'){A=H;C=H==I;break;};if (B){B.SetEnd(H,3,true);if (M!='br') this._NextNode=FCKDomTools.GetNextSourceNode(H,true,null,I);};J=true;}else{if (H.firstChild){if (!B){B=new FCKDomRange(this.Range.Window);B.SetStart(H,3,true);};H=H.firstChild;continue;};K=true;}}else if (H.nodeType==3){if (/^[\r\n\t ]+$/.test(H.nodeValue)) K=false;};if (K&&!B){B=new FCKDomRange(this.Range.Window);B.SetStart(H,3,true);};C=((!J||K)&&H==I);if (B&&!J){while (!H.nextSibling&&!C){var N=H.parentNode;if (F[N.nodeName.toLowerCase()]){J=true;C=C||(N==I);break;};H=N;K=true;C=(H==I);L=true;}};if (K) B.SetEnd(H,4,true);if ((J||C)&&B){B._UpdateElementInfo();if (B.StartNode==B.EndNode&&B.StartNode.parentNode==B.StartBlockLimit&&B.StartNode.getAttribute&&B.StartNode.getAttribute('_fck_bookmark')) B=null;else break;};if (C) break;H=FCKDomTools.GetNextSourceNode(H,L,null,I);};if (!A){if (!B){this._NextNode=null;return null;};A=B.StartBlock;if (!A&&!this.EnforceRealBlocks&&B.StartBlockLimit.nodeName.IEquals('DIV','TH','TD')&&B.CheckStartOfBlock()&&B.CheckEndOfBlock()){A=B.StartBlockLimit;}else if (!A||(this.EnforceRealBlocks&&A.nodeName.toLowerCase()=='li')){A=this.Range.Window.document.createElement(FCKConfig.EnterMode=='p'?'p':'div');B.ExtractContents().AppendTo(A);FCKDomTools.TrimNode(A);B.InsertNode(A);D=true;E=true;}else if (A.nodeName.toLowerCase()!='li'){if (!B.CheckStartOfBlock()||!B.CheckEndOfBlock()){A=A.cloneNode(false);B.ExtractContents().AppendTo(A);FCKDomTools.TrimNode(A);var O=B.SplitBlock();D=!O.WasStartOfBlock;E=!O.WasEndOfBlock;B.InsertNode(A);}}else if (!C){this._NextNode=A==I?null:FCKDomTools.GetNextSourceNode(B.EndNode,true,null,I);return A;}};if (D){var P=A.previousSibling;if (P&&P.nodeType==1){if (P.nodeName.toLowerCase()=='br') P.parentNode.removeChild(P);else if (P.lastChild&&P.lastChild.nodeName.IEquals('br')) P.removeChild(P.lastChild);}};if (E){var Q=A.lastChild;if (Q&&Q.nodeType==1&&Q.nodeName.toLowerCase()=='br') A.removeChild(Q);};if (!this._NextNode) this._NextNode=(C||A==I)?null:FCKDomTools.GetNextSourceNode(A,true,null,I);return A;}};
+var FCKDocumentFragment=function(A,B){this.RootNode=B||A.createDocumentFragment();};FCKDocumentFragment.prototype={AppendTo:function(A){A.appendChild(this.RootNode);},AppendHtml:function(A){var B=this.RootNode.ownerDocument.createElement('div');B.innerHTML=A;FCKDomTools.MoveChildren(B,this.RootNode);},InsertAfterNode:function(A){FCKDomTools.InsertAfterNode(A,this.RootNode);}};
 var FCKW3CRange=function(A){this._Document=A;this.startContainer=null;this.startOffset=null;this.endContainer=null;this.endOffset=null;this.collapsed=true;};FCKW3CRange.CreateRange=function(A){return new FCKW3CRange(A);};FCKW3CRange.CreateFromRange=function(A,B){var C=FCKW3CRange.CreateRange(A);C.setStart(B.startContainer,B.startOffset);C.setEnd(B.endContainer,B.endOffset);return C;};FCKW3CRange.prototype={_UpdateCollapsed:function(){this.collapsed=(this.startContainer==this.endContainer&&this.startOffset==this.endOffset);},setStart:function(A,B){this.startContainer=A;this.startOffset=B;if (!this.endContainer){this.endContainer=A;this.endOffset=B;};this._UpdateCollapsed();},setEnd:function(A,B){this.endContainer=A;this.endOffset=B;if (!this.startContainer){this.startContainer=A;this.startOffset=B;};this._UpdateCollapsed();},setStartAfter:function(A){this.setStart(A.parentNode,FCKDomTools.GetIndexOf(A)+1);},setStartBefore:function(A){this.setStart(A.parentNode,FCKDomTools.GetIndexOf(A));},setEndAfter:function(A){this.setEnd(A.parentNode,FCKDomTools.GetIndexOf(A)+1);},setEndBefore:function(A){this.setEnd(A.parentNode,FCKDomTools.GetIndexOf(A));},collapse:function(A){if (A){this.endContainer=this.startContainer;this.endOffset=this.startOffset;}else{this.startContainer=this.endContainer;this.startOffset=this.endOffset;};this.collapsed=true;},selectNodeContents:function(A){this.setStart(A,0);this.setEnd(A,A.nodeType==3?A.data.length:A.childNodes.length);},insertNode:function(A){var B=this.startContainer;var C=this.startOffset;if (B.nodeType==3){B.splitText(C);if (B==this.endContainer) this.setEnd(B.nextSibling,this.endOffset-this.startOffset);FCKDomTools.InsertAfterNode(B,A);return;}else{B.insertBefore(A,B.childNodes[C]||null);if (B==this.endContainer){this.endOffset++;this.collapsed=false;}}},deleteContents:function(){if (this.collapsed) return;this._ExecContentsAction(0);},extractContents:function(){var A=new FCKDocumentFragment(this._Document);if (!this.collapsed) this._ExecContentsAction(1,A);return A;},cloneContents:function(){var A=new FCKDocumentFragment(this._Document);if (!this.collapsed) this._ExecContentsAction(2,A);return A;},_ExecContentsAction:function(A,B){var C=this.startContainer;var D=this.endContainer;var E=this.startOffset;var F=this.endOffset;var G=false;var H=false;if (D.nodeType==3) D=D.splitText(F);else{if (D.childNodes.length>0){if (F>D.childNodes.length-1){D=FCKDomTools.InsertAfterNode(D.lastChild,this._Document.createTextNode(''));H=true;}else D=D.childNodes[F];}};if (C.nodeType==3){C.splitText(E);if (C==D) D=C.nextSibling;}else{if (E==0){C=C.insertBefore(this._Document.createTextNode(''),C.firstChild);G=true;}else if (E>C.childNodes.length-1){C=C.appendChild(this._Document.createTextNode(''));G=true;}else C=C.childNodes[E].previousSibling;};var I=FCKDomTools.GetParents(C);var J=FCKDomTools.GetParents(D);var i,topStart,topEnd;for (i=0;i<I.length;i++){topStart=I[i];topEnd=J[i];if (topStart!=topEnd) break;};var K,levelStartNode,levelClone,currentNode,currentSibling;if (B) K=B.RootNode;for (var j=i;j<I.length;j++){levelStartNode=I[j];if (K&&levelStartNode!=C) levelClone=K.appendChild(levelStartNode.cloneNode(levelStartNode==C));currentNode=levelStartNode.nextSibling;while(currentNode){if (currentNode==J[j]||currentNode==D) break;currentSibling=currentNode.nextSibling;if (A==2) K.appendChild(currentNode.cloneNode(true));else{currentNode.parentNode.removeChild(currentNode);if (A==1) K.appendChild(currentNode);};currentNode=currentSibling;};if (K) K=levelClone;};if (B) K=B.RootNode;for (var k=i;k<J.length;k++){levelStartNode=J[k];if (A>0&&levelStartNode!=D) levelClone=K.appendChild(levelStartNode.cloneNode(levelStartNode==D));if (!I[k]||levelStartNode.parentNode!=I[k].parentNode){currentNode=levelStartNode.previousSibling;while(currentNode){if (currentNode==I[k]||currentNode==C) break;currentSibling=currentNode.previousSibling;if (A==2) K.insertBefore(currentNode.cloneNode(true),K.firstChild);else{currentNode.parentNode.removeChild(currentNode);if (A==1) K.insertBefore(currentNode,K.firstChild);};currentNode=currentSibling;}};if (K) K=levelClone;};if (A==2){var L=this.startContainer;if (L.nodeType==3){L.data+=L.nextSibling.data;L.parentNode.removeChild(L.nextSibling);};var M=this.endContainer;if (M.nodeType==3&&M.nextSibling){M.data+=M.nextSibling.data;M.parentNode.removeChild(M.nextSibling);}}else{if (topStart&&topEnd&&(C.parentNode!=topStart.parentNode||D.parentNode!=topEnd.parentNode)){var N=FCKDomTools.GetIndexOf(topEnd);if (G&&topEnd.parentNode==C.parentNode) N--;this.setStart(topEnd.parentNode,N);};this.collapse(true);};if(G) C.parentNode.removeChild(C);if(H&&D.parentNode) D.parentNode.removeChild(D);},cloneRange:function(){return FCKW3CRange.CreateFromRange(this._Document,this);}};
-var FCKEnterKey=function(A,B,C,D){this.Window=A;this.EnterMode=B||'p';this.ShiftEnterMode=C||'br';var E=new FCKKeystrokeHandler(false);E._EnterKey=this;E.OnKeystroke=FCKEnterKey_OnKeystroke;E.SetKeystrokes([[13,'Enter'],[SHIFT+13,'ShiftEnter'],[9,'Tab'],[8,'Backspace'],[CTRL+8,'CtrlBackspace'],[46,'Delete']]);if (D>0){this.TabText='';while (D-->0) this.TabText+='\xa0';};E.AttachToElement(A.document);};function FCKEnterKey_OnKeystroke(A,B){var C=this._EnterKey;try{switch (B){case 'Enter':return C.DoEnter();break;case 'ShiftEnter':return C.DoShiftEnter();break;case 'Backspace':return C.DoBackspace();break;case 'Delete':return C.DoDelete();break;case 'Tab':return C.DoTab();break;case 'CtrlBackspace':return C.DoCtrlBackspace();break;}}catch (e){};return false;};FCKEnterKey.prototype.DoEnter=function(A,B){FCKUndo.SaveUndoStep();this._HasShift=(B===true);var C=FCKSelection.GetParentElement();var D=new FCKElementPath(C);var E=A||this.EnterMode;if (E=='br'||D.Block&&D.Block.tagName.toLowerCase()=='pre') return this._ExecuteEnterBr();else return this._ExecuteEnterBlock(E);};FCKEnterKey.prototype.DoShiftEnter=function(){return this.DoEnter(this.ShiftEnterMode,true);};FCKEnterKey.prototype.DoBackspace=function(){var A=false;var B=new FCKDomRange(this.Window);B.MoveToSelection();if (FCKBrowserInfo.IsIE&&this._CheckIsAllContentsIncluded(B,this.Window.document.body)){this._FixIESelectAllBug(B);return true;};var C=B.CheckIsCollapsed();if (!C){if (FCKBrowserInfo.IsIE&&this.Window.document.selection.type.toLowerCase()=="control"){var D=this.Window.document.selection.createRange();for (var i=D.length-1;i>=0;i--){var E=D.item(i);E.parentNode.removeChild(E);};return true;};return false;};var F=B.StartBlock;var G=B.EndBlock;if (B.StartBlockLimit==B.EndBlockLimit&&F&&G){if (!C){var H=B.CheckEndOfBlock();B.DeleteContents();if (F!=G){B.SetStart(G,1);B.SetEnd(G,1);};B.Select();A=(F==G);};if (B.CheckStartOfBlock()){var I=B.StartBlock;var J=FCKDomTools.GetPreviousSourceElement(I,true,['BODY',B.StartBlockLimit.nodeName],['UL','OL']);A=this._ExecuteBackspace(B,J,I);}else if (FCKBrowserInfo.IsGeckoLike){B.Select();}};B.Release();return A;};FCKEnterKey.prototype.DoCtrlBackspace=function(){FCKUndo.SaveUndoStep();var A=new FCKDomRange(this.Window);A.MoveToSelection();if (FCKBrowserInfo.IsIE&&this._CheckIsAllContentsIncluded(A,this.Window.document.body)){this._FixIESelectAllBug(A);return true;};return false;};FCKEnterKey.prototype._ExecuteBackspace=function(A,B,C){var D=false;if (!B&&C&&C.nodeName.IEquals('LI')&&C.parentNode.parentNode.nodeName.IEquals('LI')){this._OutdentWithSelection(C,A);return true;};if (B&&B.nodeName.IEquals('LI')){var E=FCKDomTools.GetLastChild(B,['UL','OL']);while (E){B=FCKDomTools.GetLastChild(E,'LI');E=FCKDomTools.GetLastChild(B,['UL','OL']);}};if (B&&C){if (C.nodeName.IEquals('LI')&&!B.nodeName.IEquals('LI')){this._OutdentWithSelection(C,A);return true;};var F=C.parentNode;var G=B.nodeName.toLowerCase();if (FCKListsLib.EmptyElements[G]!=null||G=='table'){FCKDomTools.RemoveNode(B);D=true;}else{FCKDomTools.RemoveNode(C);while (F.innerHTML.Trim().length==0){var H=F.parentNode;H.removeChild(F);F=H;};FCKDomTools.LTrimNode(C);FCKDomTools.RTrimNode(B);A.SetStart(B,2,true);A.Collapse(true);var I=A.CreateBookmark(true);if (!C.tagName.IEquals(['TABLE'])) FCKDomTools.MoveChildren(C,B);A.SelectBookmark(I);D=true;}};return D;};FCKEnterKey.prototype.DoDelete=function(){FCKUndo.SaveUndoStep();var A=false;var B=new FCKDomRange(this.Window);B.MoveToSelection();if (FCKBrowserInfo.IsIE&&this._CheckIsAllContentsIncluded(B,this.Window.document.body)){this._FixIESelectAllBug(B);return true;};if (B.CheckIsCollapsed()&&B.CheckEndOfBlock(FCKBrowserInfo.IsGeckoLike)){var C=B.StartBlock;var D=FCKTools.GetElementAscensor(C,'td');var E=FCKDomTools.GetNextSourceElement(C,true,[B.StartBlockLimit.nodeName],['UL','OL','TR'],true);if (D){var F=FCKTools.GetElementAscensor(E,'td');if (F!=D) return true;};A=this._ExecuteBackspace(B,C,E);};B.Release();return A;};FCKEnterKey.prototype.DoTab=function(){var A=new FCKDomRange(this.Window);A.MoveToSelection();var B=A._Range.startContainer;while (B){if (B.nodeType==1){var C=B.tagName.toLowerCase();if (C=="tr"||C=="td"||C=="th"||C=="tbody"||C=="table") return false;else break;};B=B.parentNode;};if (this.TabText){A.DeleteContents();A.InsertNode(this.Window.document.createTextNode(this.TabText));A.Collapse(false);A.Select();};return true;};FCKEnterKey.prototype._ExecuteEnterBlock=function(A,B){var C=B||new FCKDomRange(this.Window);var D=C.SplitBlock(A);if (D){var E=D.PreviousBlock;var F=D.NextBlock;var G=D.WasStartOfBlock;var H=D.WasEndOfBlock;if (F){if (F.parentNode.nodeName.IEquals('li')){FCKDomTools.BreakParent(F,F.parentNode);FCKDomTools.MoveNode(F,F.nextSibling,true);}}else if (E&&E.parentNode.nodeName.IEquals('li')){FCKDomTools.BreakParent(E,E.parentNode);C.MoveToElementEditStart(E.nextSibling);FCKDomTools.MoveNode(E,E.previousSibling);};if (!G&&!H){if (F.nodeName.IEquals('li')&&F.firstChild&&F.firstChild.nodeName.IEquals(['ul','ol'])) F.insertBefore(FCKTools.GetElementDocument(F).createTextNode('\xa0'),F.firstChild);if (F) C.MoveToElementEditStart(F);}else{if (G&&H&&E.tagName.toUpperCase()=='LI'){C.MoveToElementStart(E);this._OutdentWithSelection(E,C);C.Release();return true;};var I;if (E){var J=E.tagName.toUpperCase();if (!this._HasShift&&!(/^H[1-6]$/).test(J)){I=FCKDomTools.CloneElement(E);}}else if (F) I=FCKDomTools.CloneElement(F);if (!I) I=this.Window.document.createElement(A);var K=D.ElementPath;if (K){for (var i=0,len=K.Elements.length;i<len;i++){var L=K.Elements[i];if (L==K.Block||L==K.BlockLimit) break;if (FCKListsLib.InlineChildReqElements[L.nodeName.toLowerCase()]){L=FCKDomTools.CloneElement(L);FCKDomTools.MoveChildren(I,L);I.appendChild(L);}}};if (FCKBrowserInfo.IsGeckoLike) FCKTools.AppendBogusBr(I);C.InsertNode(I);if (FCKBrowserInfo.IsIE){C.MoveToElementEditStart(I);C.Select();};C.MoveToElementEditStart(G&&!H?F:I);};if (FCKBrowserInfo.IsSafari) FCKDomTools.ScrollIntoView(F||I,false);else if (FCKBrowserInfo.IsGeckoLike) (F||I).scrollIntoView(false);C.Select();};C.Release();return true;};FCKEnterKey.prototype._ExecuteEnterBr=function(A){var B=new FCKDomRange(this.Window);B.MoveToSelection();if (B.StartBlockLimit==B.EndBlockLimit){B.DeleteContents();B.MoveToSelection();var C=B.CheckStartOfBlock();var D=B.CheckEndOfBlock();var E=B.StartBlock?B.StartBlock.tagName.toUpperCase():'';var F=this._HasShift;var G=false;if (!F&&E=='LI') return this._ExecuteEnterBlock(null,B);if (!F&&D&&(/^H[1-6]$/).test(E)){FCKDomTools.InsertAfterNode(B.StartBlock,this.Window.document.createElement('br'));if (FCKBrowserInfo.IsGecko) FCKDomTools.InsertAfterNode(B.StartBlock,this.Window.document.createTextNode(''));B.SetStart(B.StartBlock.nextSibling,FCKBrowserInfo.IsIE?3:1);}else{var H;G=E.IEquals('pre');if (G) H=this.Window.document.createTextNode(FCKBrowserInfo.IsIE?'\r':'\n');else H=this.Window.document.createElement('br');B.InsertNode(H);if (FCKBrowserInfo.IsGecko) FCKDomTools.InsertAfterNode(H,this.Window.document.createTextNode(''));if (D&&FCKBrowserInfo.IsGeckoLike) FCKTools.AppendBogusBr(H.parentNode);if (FCKBrowserInfo.IsIE) B.SetStart(H,4);else B.SetStart(H.nextSibling,1);if (!FCKBrowserInfo.IsIE){var I=null;if (FCKBrowserInfo.IsOpera) I=this.Window.document.createElement('span');else I=this.Window.document.createElement('br');H.parentNode.insertBefore(I,H.nextSibling);if (FCKBrowserInfo.IsSafari) FCKDomTools.ScrollIntoView(I,false);else I.scrollIntoView(false);I.parentNode.removeChild(I);}};B.Collapse(true);B.Select(G);};B.Release();return true;};FCKEnterKey.prototype._OutdentWithSelection=function(A,B){var C=B.CreateBookmark();FCKListHandler.OutdentListItem(A);B.MoveToBookmark(C);B.Select();};FCKEnterKey.prototype._CheckIsAllContentsIncluded=function(A,B){var C=false;var D=false;if (A.StartContainer==B||A.StartContainer==B.firstChild) C=(A._Range.startOffset==0);if (A.EndContainer==B||A.EndContainer==B.lastChild){var E=A.EndContainer.nodeType==3?A.EndContainer.length:A.EndContainer.childNodes.length;D=(A._Range.endOffset==E);};return C&&D;};FCKEnterKey.prototype._FixIESelectAllBug=function(A){var B=this.Window.document;B.body.innerHTML='';var C;if (FCKConfig.EnterMode.IEquals(['div','p'])){C=B.createElement(FCKConfig.EnterMode);B.body.appendChild(C);}else C=B.body;A.MoveToNodeContents(C);A.Collapse(true);A.Select();A.Release();};
-var FCKDocumentProcessor={};FCKDocumentProcessor._Items=[];FCKDocumentProcessor.AppendNew=function(){var A={};this._Items.AddItem(A);return A;};FCKDocumentProcessor.Process=function(A){var B=FCK.IsDirty();var C,i=0;while((C=this._Items[i++])) C.ProcessDocument(A);if (!B) FCK.ResetIsDirty();};var FCKDocumentProcessor_CreateFakeImage=function(A,B){var C=FCKTools.GetElementDocument(B).createElement('IMG');C.className=A;C.src=FCKConfig.FullBasePath+'images/spacer.gif';C.setAttribute('_fckfakelement','true',0);C.setAttribute('_fckrealelement',FCKTempBin.AddElement(B),0);return C;};if (FCKBrowserInfo.IsIE||FCKBrowserInfo.IsOpera){var FCKAnchorsProcessor=FCKDocumentProcessor.AppendNew();FCKAnchorsProcessor.ProcessDocument=function(A){var B=A.getElementsByTagName('A');var C;var i=B.length-1;while (i>=0&&(C=B[i--])){if (C.name.length>0){if (C.innerHTML!==''){if (FCKBrowserInfo.IsIE) C.className+=' FCK__AnchorC';}else{var D=FCKDocumentProcessor_CreateFakeImage('FCK__Anchor',C.cloneNode(true));D.setAttribute('_fckanchor','true',0);C.parentNode.insertBefore(D,C);C.parentNode.removeChild(C);}}}}};var FCKPageBreaksProcessor=FCKDocumentProcessor.AppendNew();FCKPageBreaksProcessor.ProcessDocument=function(A){var B=A.getElementsByTagName('DIV');var C;var i=B.length-1;while (i>=0&&(C=B[i--])){if (C.style.pageBreakAfter=='always'&&C.childNodes.length==1&&C.childNodes[0].style&&C.childNodes[0].style.display=='none'){var D=FCKDocumentProcessor_CreateFakeImage('FCK__PageBreak',C.cloneNode(true));C.parentNode.insertBefore(D,C);C.parentNode.removeChild(C);}}};FCKEmbedAndObjectProcessor=(function(){var A=[];var B=function(el){var C=el.cloneNode(true);var D;var E=D=FCKDocumentProcessor_CreateFakeImage('FCK__UnknownObject',C);FCKEmbedAndObjectProcessor.RefreshView(E,el);for (var i=0;i<A.length;i++) D=A[i](el,D)||D;if (D!=E) FCKTempBin.RemoveElement(E.getAttribute('_fckrealelement'));el.parentNode.replaceChild(D,el);};return FCKTools.Merge(FCKDocumentProcessor.AppendNew(),{ProcessDocument:function(doc){FCKTools.RunFunction(function(){var F=doc.getElementsByTagName('object');for (var i=F.length-1;i>=0;i--) B(F[i]);var G=doc.getElementsByTagName('embed');for (var i=G.length-1;i>=0;i--) B(G[i]);});},RefreshView:function(placeHolder,original){if (original.getAttribute('width')>0) placeHolder.style.width=FCKTools.ConvertHtmlSizeToStyle(original.getAttribute('width'));if (original.getAttribute('height')>0) placeHolder.style.height=FCKTools.ConvertHtmlSizeToStyle(original.getAttribute('height'));},AddCustomHandler:function(func){A.push(func);}});})();FCK.GetRealElement=function(A){var e=FCKTempBin.Elements[A.getAttribute('_fckrealelement')];if (A.getAttribute('_fckflash')){if (A.style.width.length>0) e.width=FCKTools.ConvertStyleSizeToHtml(A.style.width);if (A.style.height.length>0) e.height=FCKTools.ConvertStyleSizeToHtml(A.style.height);};return e;};if (FCKBrowserInfo.IsIE){FCKDocumentProcessor.AppendNew().ProcessDocument=function(A){var B=A.getElementsByTagName('HR');var C;var i=B.length-1;while (i>=0&&(C=B[i--])){var D=A.createElement('hr');D.mergeAttributes(C,true);FCKDomTools.InsertAfterNode(C,D);C.parentNode.removeChild(C);}}};FCKDocumentProcessor.AppendNew().ProcessDocument=function(A){var B=A.getElementsByTagName('INPUT');var C;var i=B.length-1;while (i>=0&&(C=B[i--])){if (C.type=='hidden'){var D=FCKDocumentProcessor_CreateFakeImage('FCK__InputHidden',C.cloneNode(true));D.setAttribute('_fckinputhidden','true',0);C.parentNode.insertBefore(D,C);C.parentNode.removeChild(C);}}};FCKEmbedAndObjectProcessor.AddCustomHandler(function(A,B){if (!(A.nodeName.IEquals('embed')&&(A.type=='application/x-shockwave-flash'||/\.swf($|#|\?)/i.test(A.src)))) return;B.className='FCK__Flash';B.setAttribute('_fckflash','true',0);});
+var FCKEnterKey=function(A,B,C,D){this.Window=A;this.EnterMode=B||'p';this.ShiftEnterMode=C||'br';var E=new FCKKeystrokeHandler(false);E._EnterKey=this;E.OnKeystroke=FCKEnterKey_OnKeystroke;E.SetKeystrokes([[13,'Enter'],[SHIFT+13,'ShiftEnter'],[8,'Backspace'],[CTRL+8,'CtrlBackspace'],[46,'Delete']]);this.TabText='';if (D>0||FCKBrowserInfo.IsSafari){while (D--) this.TabText+='\xa0';E.SetKeystrokes([9,'Tab']);};E.AttachToElement(A.document);};function FCKEnterKey_OnKeystroke(A,B){var C=this._EnterKey;try{switch (B){case 'Enter':return C.DoEnter();break;case 'ShiftEnter':return C.DoShiftEnter();break;case 'Backspace':return C.DoBackspace();break;case 'Delete':return C.DoDelete();break;case 'Tab':return C.DoTab();break;case 'CtrlBackspace':return C.DoCtrlBackspace();break;}}catch (e){};return false;};FCKEnterKey.prototype.DoEnter=function(A,B){FCKUndo.SaveUndoStep();this._HasShift=(B===true);var C=FCKSelection.GetParentElement();var D=new FCKElementPath(C);var E=A||this.EnterMode;if (E=='br'||D.Block&&D.Block.tagName.toLowerCase()=='pre') return this._ExecuteEnterBr();else return this._ExecuteEnterBlock(E);};FCKEnterKey.prototype.DoShiftEnter=function(){return this.DoEnter(this.ShiftEnterMode,true);};FCKEnterKey.prototype.DoBackspace=function(){var A=false;var B=new FCKDomRange(this.Window);B.MoveToSelection();if (FCKBrowserInfo.IsIE&&this._CheckIsAllContentsIncluded(B,this.Window.document.body)){this._FixIESelectAllBug(B);return true;};var C=B.CheckIsCollapsed();if (!C){if (FCKBrowserInfo.IsIE&&this.Window.document.selection.type.toLowerCase()=="control"){var D=this.Window.document.selection.createRange();for (var i=D.length-1;i>=0;i--){var E=D.item(i);E.parentNode.removeChild(E);};return true;};return false;};if (FCKBrowserInfo.IsIE){var F=FCKDomTools.GetPreviousSourceElement(B.StartNode,true);if (F&&F.nodeName.toLowerCase()=='br'){var G=B.Clone();G.SetStart(F,4);if (G.CheckIsEmpty()){F.parentNode.removeChild(F);return true;}}};var H=B.StartBlock;var I=B.EndBlock;if (B.StartBlockLimit==B.EndBlockLimit&&H&&I){if (!C){var J=B.CheckEndOfBlock();B.DeleteContents();if (H!=I){B.SetStart(I,1);B.SetEnd(I,1);};B.Select();A=(H==I);};if (B.CheckStartOfBlock()){var K=B.StartBlock;var L=FCKDomTools.GetPreviousSourceElement(K,true,['BODY',B.StartBlockLimit.nodeName],['UL','OL']);A=this._ExecuteBackspace(B,L,K);}else if (FCKBrowserInfo.IsGeckoLike){B.Select();}};B.Release();return A;};FCKEnterKey.prototype.DoCtrlBackspace=function(){FCKUndo.SaveUndoStep();var A=new FCKDomRange(this.Window);A.MoveToSelection();if (FCKBrowserInfo.IsIE&&this._CheckIsAllContentsIncluded(A,this.Window.document.body)){this._FixIESelectAllBug(A);return true;};return false;};FCKEnterKey.prototype._ExecuteBackspace=function(A,B,C){var D=false;if (!B&&C&&C.nodeName.IEquals('LI')&&C.parentNode.parentNode.nodeName.IEquals('LI')){this._OutdentWithSelection(C,A);return true;};if (B&&B.nodeName.IEquals('LI')){var E=FCKDomTools.GetLastChild(B,['UL','OL']);while (E){B=FCKDomTools.GetLastChild(E,'LI');E=FCKDomTools.GetLastChild(B,['UL','OL']);}};if (B&&C){if (C.nodeName.IEquals('LI')&&!B.nodeName.IEquals('LI')){this._OutdentWithSelection(C,A);return true;};var F=C.parentNode;var G=B.nodeName.toLowerCase();if (FCKListsLib.EmptyElements[G]!=null||G=='table'){FCKDomTools.RemoveNode(B);D=true;}else{FCKDomTools.RemoveNode(C);while (F.innerHTML.Trim().length==0){var H=F.parentNode;H.removeChild(F);F=H;};FCKDomTools.LTrimNode(C);FCKDomTools.RTrimNode(B);A.SetStart(B,2,true);A.Collapse(true);var I=A.CreateBookmark(true);if (!C.tagName.IEquals(['TABLE'])) FCKDomTools.MoveChildren(C,B);A.SelectBookmark(I);D=true;}};return D;};FCKEnterKey.prototype.DoDelete=function(){FCKUndo.SaveUndoStep();var A=false;var B=new FCKDomRange(this.Window);B.MoveToSelection();if (FCKBrowserInfo.IsIE&&this._CheckIsAllContentsIncluded(B,this.Window.document.body)){this._FixIESelectAllBug(B);return true;};if (B.CheckIsCollapsed()&&B.CheckEndOfBlock(FCKBrowserInfo.IsGeckoLike)){var C=B.StartBlock;var D=FCKTools.GetElementAscensor(C,'td');var E=FCKDomTools.GetNextSourceElement(C,true,[B.StartBlockLimit.nodeName],['UL','OL','TR'],true);if (D){var F=FCKTools.GetElementAscensor(E,'td');if (F!=D) return true;};A=this._ExecuteBackspace(B,C,E);};B.Release();return A;};FCKEnterKey.prototype.DoTab=function(){var A=new FCKDomRange(this.Window);A.MoveToSelection();var B=A._Range.startContainer;while (B){if (B.nodeType==1){var C=B.tagName.toLowerCase();if (C=="tr"||C=="td"||C=="th"||C=="tbody"||C=="table") return false;else break;};B=B.parentNode;};if (this.TabText){A.DeleteContents();A.InsertNode(this.Window.document.createTextNode(this.TabText));A.Collapse(false);A.Select();};return true;};FCKEnterKey.prototype._ExecuteEnterBlock=function(A,B){var C=B||new FCKDomRange(this.Window);var D=C.SplitBlock(A);if (D){var E=D.PreviousBlock;var F=D.NextBlock;var G=D.WasStartOfBlock;var H=D.WasEndOfBlock;if (F){if (F.parentNode.nodeName.IEquals('li')){FCKDomTools.BreakParent(F,F.parentNode);FCKDomTools.MoveNode(F,F.nextSibling,true);}}else if (E&&E.parentNode.nodeName.IEquals('li')){FCKDomTools.BreakParent(E,E.parentNode);C.MoveToElementEditStart(E.nextSibling);FCKDomTools.MoveNode(E,E.previousSibling);};if (!G&&!H){if (F.nodeName.IEquals('li')&&F.firstChild&&F.firstChild.nodeName.IEquals(['ul','ol'])) F.insertBefore(FCKTools.GetElementDocument(F).createTextNode('\xa0'),F.firstChild);if (F) C.MoveToElementEditStart(F);}else{if (G&&H&&E.tagName.toUpperCase()=='LI'){C.MoveToElementStart(E);this._OutdentWithSelection(E,C);C.Release();return true;};var I;if (E){var J=E.tagName.toUpperCase();if (!this._HasShift&&!(/^H[1-6]$/).test(J)){I=FCKDomTools.CloneElement(E);}}else if (F) I=FCKDomTools.CloneElement(F);if (!I) I=this.Window.document.createElement(A);var K=D.ElementPath;if (K){for (var i=0,len=K.Elements.length;i<len;i++){var L=K.Elements[i];if (L==K.Block||L==K.BlockLimit) break;if (FCKListsLib.InlineChildReqElements[L.nodeName.toLowerCase()]){L=FCKDomTools.CloneElement(L);FCKDomTools.MoveChildren(I,L);I.appendChild(L);}}};if (FCKBrowserInfo.IsGeckoLike) FCKTools.AppendBogusBr(I);C.InsertNode(I);if (FCKBrowserInfo.IsIE){C.MoveToElementEditStart(I);C.Select();};C.MoveToElementEditStart(G&&!H?F:I);};if (FCKBrowserInfo.IsGeckoLike) FCKDomTools.ScrollIntoView(F||I,false);C.Select();};C.Release();return true;};FCKEnterKey.prototype._ExecuteEnterBr=function(A){var B=new FCKDomRange(this.Window);B.MoveToSelection();if (B.StartBlockLimit==B.EndBlockLimit){B.DeleteContents();B.MoveToSelection();var C=B.CheckStartOfBlock();var D=B.CheckEndOfBlock();var E=B.StartBlock?B.StartBlock.tagName.toUpperCase():'';var F=this._HasShift;var G=false;if (!F&&E=='LI') return this._ExecuteEnterBlock(null,B);if (!F&&D&&(/^H[1-6]$/).test(E)){FCKDomTools.InsertAfterNode(B.StartBlock,this.Window.document.createElement('br'));if (FCKBrowserInfo.IsGecko) FCKDomTools.InsertAfterNode(B.StartBlock,this.Window.document.createTextNode(''));B.SetStart(B.StartBlock.nextSibling,FCKBrowserInfo.IsIE?3:1);}else{var H;G=E.IEquals('pre');if (G) H=this.Window.document.createTextNode(FCKBrowserInfo.IsIE?'\r':'\n');else H=this.Window.document.createElement('br');B.InsertNode(H);if (FCKBrowserInfo.IsGecko) FCKDomTools.InsertAfterNode(H,this.Window.document.createTextNode(''));if (D&&FCKBrowserInfo.IsGeckoLike) FCKTools.AppendBogusBr(H.parentNode);if (FCKBrowserInfo.IsIE) B.SetStart(H,4);else B.SetStart(H.nextSibling,1);if (!FCKBrowserInfo.IsIE){var I=null;if (FCKBrowserInfo.IsOpera) I=this.Window.document.createElement('span');else I=this.Window.document.createElement('br');H.parentNode.insertBefore(I,H.nextSibling);FCKDomTools.ScrollIntoView(I,false);I.parentNode.removeChild(I);}};B.Collapse(true);B.Select(G);};B.Release();return true;};FCKEnterKey.prototype._OutdentWithSelection=function(A,B){var C=B.CreateBookmark();FCKListHandler.OutdentListItem(A);B.MoveToBookmark(C);B.Select();};FCKEnterKey.prototype._CheckIsAllContentsIncluded=function(A,B){var C=false;var D=false;if (A.StartContainer==B||A.StartContainer==B.firstChild) C=(A._Range.startOffset==0);if (A.EndContainer==B||A.EndContainer==B.lastChild){var E=A.EndContainer.nodeType==3?A.EndContainer.length:A.EndContainer.childNodes.length;D=(A._Range.endOffset==E);};return C&&D;};FCKEnterKey.prototype._FixIESelectAllBug=function(A){var B=this.Window.document;B.body.innerHTML='';var C;if (FCKConfig.EnterMode.IEquals(['div','p'])){C=B.createElement(FCKConfig.EnterMode);B.body.appendChild(C);}else C=B.body;A.MoveToNodeContents(C);A.Collapse(true);A.Select();A.Release();};
+var FCKDocumentProcessor={};FCKDocumentProcessor._Items=[];FCKDocumentProcessor.AppendNew=function(){var A={};this._Items.AddItem(A);return A;};FCKDocumentProcessor.Process=function(A){var B=FCK.IsDirty();var C,i=0;while((C=this._Items[i++])) C.ProcessDocument(A);if (!B) FCK.ResetIsDirty();};var FCKDocumentProcessor_CreateFakeImage=function(A,B){var C=FCKTools.GetElementDocument(B).createElement('IMG');C.className=A;C.src=FCKConfig.BasePath+'images/spacer.gif';C.setAttribute('_fckfakelement','true',0);C.setAttribute('_fckrealelement',FCKTempBin.AddElement(B),0);return C;};if (FCKBrowserInfo.IsIE||FCKBrowserInfo.IsOpera){var FCKAnchorsProcessor=FCKDocumentProcessor.AppendNew();FCKAnchorsProcessor.ProcessDocument=function(A){var B=A.getElementsByTagName('A');var C;var i=B.length-1;while (i>=0&&(C=B[i--])){if (C.name.length>0){if (C.innerHTML!==''){if (FCKBrowserInfo.IsIE) C.className+=' FCK__AnchorC';}else{var D=FCKDocumentProcessor_CreateFakeImage('FCK__Anchor',C.cloneNode(true));D.setAttribute('_fckanchor','true',0);C.parentNode.insertBefore(D,C);C.parentNode.removeChild(C);}}}}};var FCKPageBreaksProcessor=FCKDocumentProcessor.AppendNew();FCKPageBreaksProcessor.ProcessDocument=function(A){var B=A.getElementsByTagName('DIV');var C;var i=B.length-1;while (i>=0&&(C=B[i--])){if (C.style.pageBreakAfter=='always'&&C.childNodes.length==1&&C.childNodes[0].style&&C.childNodes[0].style.display=='none'){var D=FCKDocumentProcessor_CreateFakeImage('FCK__PageBreak',C.cloneNode(true));C.parentNode.insertBefore(D,C);C.parentNode.removeChild(C);}}};FCKEmbedAndObjectProcessor=(function(){var A=[];var B=function(el){var C=el.cloneNode(true);var D;var E=D=FCKDocumentProcessor_CreateFakeImage('FCK__UnknownObject',C);FCKEmbedAndObjectProcessor.RefreshView(E,el);for (var i=0;i<A.length;i++) D=A[i](el,D)||D;if (D!=E) FCKTempBin.RemoveElement(E.getAttribute('_fckrealelement'));el.parentNode.replaceChild(D,el);};var F=function(elementName,doc){var G=doc.getElementsByTagName(elementName);for (var i=G.length-1;i>=0;i--) B(G[i]);};var H=function(doc){F('object',doc);F('embed',doc);};return FCKTools.Merge(FCKDocumentProcessor.AppendNew(),{ProcessDocument:function(doc){if (FCKBrowserInfo.IsGecko) FCKTools.RunFunction(H,this,[doc]);else H(doc);},RefreshView:function(placeHolder,original){if (original.getAttribute('width')>0) placeHolder.style.width=FCKTools.ConvertHtmlSizeToStyle(original.getAttribute('width'));if (original.getAttribute('height')>0) placeHolder.style.height=FCKTools.ConvertHtmlSizeToStyle(original.getAttribute('height'));},AddCustomHandler:function(func){A.push(func);}});})();FCK.GetRealElement=function(A){var e=FCKTempBin.Elements[A.getAttribute('_fckrealelement')];if (A.getAttribute('_fckflash')){if (A.style.width.length>0) e.width=FCKTools.ConvertStyleSizeToHtml(A.style.width);if (A.style.height.length>0) e.height=FCKTools.ConvertStyleSizeToHtml(A.style.height);};return e;};if (FCKBrowserInfo.IsIE){FCKDocumentProcessor.AppendNew().ProcessDocument=function(A){var B=A.getElementsByTagName('HR');var C;var i=B.length-1;while (i>=0&&(C=B[i--])){var D=A.createElement('hr');D.mergeAttributes(C,true);FCKDomTools.InsertAfterNode(C,D);C.parentNode.removeChild(C);}}};FCKDocumentProcessor.AppendNew().ProcessDocument=function(A){var B=A.getElementsByTagName('INPUT');var C;var i=B.length-1;while (i>=0&&(C=B[i--])){if (C.type=='hidden'){var D=FCKDocumentProcessor_CreateFakeImage('FCK__InputHidden',C.cloneNode(true));D.setAttribute('_fckinputhidden','true',0);C.parentNode.insertBefore(D,C);C.parentNode.removeChild(C);}}};FCKEmbedAndObjectProcessor.AddCustomHandler(function(A,B){if (!(A.nodeName.IEquals('embed')&&(A.type=='application/x-shockwave-flash'||/\.swf($|#|\?)/i.test(A.src)))) return;B.className='FCK__Flash';B.setAttribute('_fckflash','true',0);});if (FCKBrowserInfo.IsSafari){FCKDocumentProcessor.AppendNew().ProcessDocument=function(A){var B=A.getElementsByClassName?A.getElementsByClassName('Apple-style-span'):Array.prototype.filter.call(A.getElementsByTagName('span'),function(item){ return item.className=='Apple-style-span';});for (var i=B.length-1;i>=0;i--) FCKDomTools.RemoveNode(B[i],true);}};
 var FCKSelection=FCK.Selection={GetParentBlock:function(){var A=this.GetParentElement();while (A){if (FCKListsLib.BlockBoundaries[A.nodeName.toLowerCase()]) break;A=A.parentNode;};return A;},ApplyStyle:function(A){FCKStyles.ApplyStyle(new FCKStyle(A));}};
-FCKSelection.GetType=function(){var A='Text';var B;try { B=this.GetSelection();} catch (e) {};if (B&&B.rangeCount==1){var C=B.getRangeAt(0);if (C.startContainer==C.endContainer&&(C.endOffset-C.startOffset)==1&&C.startContainer.nodeType==1&&FCKListsLib.StyleObjectElements[C.startContainer.childNodes[C.startOffset].nodeName.toLowerCase()]){A='Control';}};return A;};FCKSelection.GetSelectedElement=function(){var A=!!FCK.EditorWindow&&this.GetSelection();if (!A||A.rangeCount<1) return null;var B=A.getRangeAt(0);if (B.startContainer!=B.endContainer||B.startContainer.nodeType!=1||B.startOffset!=B.endOffset-1) return null;var C=B.startContainer.childNodes[B.startOffset];if (C.nodeType!=1) return null;return C;};FCKSelection.GetParentElement=function(){if (this.GetType()=='Control') return FCKSelection.GetSelectedElement().parentNode;else{var A=this.GetSelection();if (A){if (A.anchorNode&&A.anchorNode==A.focusNode) return A.anchorNode.parentNode;var B=new FCKElementPath(A.anchorNode);var C=new FCKElementPath(A.focusNode);var D=null;var E=null;if (B.Elements.length>C.Elements.length){D=B.Elements;E=C.Elements;}else{D=C.Elements;E=B.Elements;};var F=D.length-E.length;for(var i=0;i<E.length;i++){if (D[F+i]==E[i]) return E[i];};return null;}};return null;};FCKSelection.GetBoundaryParentElement=function(A){if (!FCK.EditorWindow) return null;if (this.GetType()=='Control') return FCKSelection.GetSelectedElement().parentNode;else{var B=this.GetSelection();if (B&&B.rangeCount>0){var C=B.getRangeAt(A?0:(B.rangeCount-1));var D=A?C.startContainer:C.endContainer;return (D.nodeType==1?D:D.parentNode);}};return null;};FCKSelection.SelectNode=function(A){var B=FCK.EditorDocument.createRange();B.selectNode(A);var C=this.GetSelection();C.removeAllRanges();C.addRange(B);};FCKSelection.Collapse=function(A){var B=this.GetSelection();if (A==null||A===true) B.collapseToStart();else B.collapseToEnd();};FCKSelection.HasAncestorNode=function(A){var B=this.GetSelectedElement();if (!B&&FCK.EditorWindow){try		{ B=this.GetSelection().getRangeAt(0).startContainer;}catch(e){}};while (B){if (B.nodeType==1&&B.tagName==A) return true;B=B.parentNode;};return false;};FCKSelection.MoveToAncestorNode=function(A){var B;var C=this.GetSelectedElement();if (!C) C=this.GetSelection().getRangeAt(0).startContainer;while (C){if (C.nodeName==A) return C;C=C.parentNode;};return null;};FCKSelection.Delete=function(){var A=this.GetSelection();for (var i=0;i<A.rangeCount;i++){A.getRangeAt(i).deleteContents();};return A;};FCKSelection.GetSelection=function(){return FCK.EditorWindow.getSelection();};FCKSelection.Save=function(){};FCKSelection.Restore=function(){};FCKSelection.Release=function(){};
-var FCKTableHandler={};FCKTableHandler.InsertRow=function(A){var B=FCKSelection.MoveToAncestorNode('TR');if (!B) return;var C=B.cloneNode(true);B.parentNode.insertBefore(C,B);FCKTableHandler.ClearRow(A?C:B);};FCKTableHandler.DeleteRows=function(A){if (!A){var B=FCKTableHandler.GetSelectedCells();var C=[];for (var i=0;i<B.length;i++){var D=FCKTools.GetElementAscensor(B[i],'TR');C[D.rowIndex]=D;};for (var i=C.length;i>=0;i--){if (C[i]) FCKTableHandler.DeleteRows(C[i]);};return;};var E=FCKTools.GetElementAscensor(A,'TABLE');if (E.rows.length==1){FCKTableHandler.DeleteTable(E);return;};A.parentNode.removeChild(A);};FCKTableHandler.DeleteTable=function(A){if (!A){A=FCKSelection.GetSelectedElement();if (!A||A.tagName!='TABLE') A=FCKSelection.MoveToAncestorNode('TABLE');};if (!A) return;FCKSelection.SelectNode(A);FCKSelection.Collapse();if (A.parentNode.childNodes.length==1) A.parentNode.parentNode.removeChild(A.parentNode);else A.parentNode.removeChild(A);};FCKTableHandler.InsertColumn=function(A){var B=null;var C=this.GetSelectedCells();if (C&&C.length) B=C[A?0:(C.length-1)];if (!B) return;var D=FCKTools.GetElementAscensor(B,'TABLE');var E=B.cellIndex;for (var i=0;i<D.rows.length;i++){var F=D.rows[i];if (F.cells.length<(E+1)) continue;B=F.cells[E].cloneNode(false);if (FCKBrowserInfo.IsGeckoLike) FCKTools.AppendBogusBr(B);var G=F.cells[E];if (A) F.insertBefore(B,G);else if (G.nextSibling) F.insertBefore(B,G.nextSibling);else F.appendChild(B);}};FCKTableHandler.DeleteColumns=function(A){if (!A){var B=FCKTableHandler.GetSelectedCells();for (var i=B.length;i>=0;i--){if (B[i]) FCKTableHandler.DeleteColumns(B[i]);};return;};if (!A) return;var C=FCKTools.GetElementAscensor(A,'TABLE');var D=A.cellIndex;for (var i=C.rows.length-1;i>=0;i--){var E=C.rows[i];if (D==0&&E.cells.length==1){FCKTableHandler.DeleteRows(E);continue;};if (E.cells[D]) E.removeChild(E.cells[D]);}};FCKTableHandler.InsertCell=function(A,B){var C=null;var D=this.GetSelectedCells();if (D&&D.length) C=D[B?0:(D.length-1)];if (!C) return null;var E=FCK.EditorDocument.createElement('TD');if (FCKBrowserInfo.IsGeckoLike) FCKTools.AppendBogusBr(E);if (!B&&C.cellIndex==C.parentNode.cells.length-1) C.parentNode.appendChild(E);else C.parentNode.insertBefore(E,B?C:C.nextSibling);return E;};FCKTableHandler.DeleteCell=function(A){if (A.parentNode.cells.length==1){FCKTableHandler.DeleteRows(FCKTools.GetElementAscensor(A,'TR'));return;};A.parentNode.removeChild(A);};FCKTableHandler.DeleteCells=function(){var A=FCKTableHandler.GetSelectedCells();for (var i=A.length-1;i>=0;i--){FCKTableHandler.DeleteCell(A[i]);}};FCKTableHandler._MarkCells=function(A,B){for (var i=0;i<A.length;i++) A[i][B]=true;};FCKTableHandler._UnmarkCells=function(A,B){for (var i=0;i<A.length;i++){if (FCKBrowserInfo.IsIE) A[i].removeAttribute(B);else delete A[i][B];}};FCKTableHandler._ReplaceCellsByMarker=function(A,B,C){for (var i=0;i<A.length;i++){for (var j=0;j<A[i].length;j++){if (A[i][j][B]) A[i][j]=C;}}};FCKTableHandler._GetMarkerGeometry=function(A,B,C,D){var E=0;var F=0;var G=0;var H=0;for (var i=C;A[B][i]&&A[B][i][D];i++) E++;for (var i=C-1;A[B][i]&&A[B][i][D];i--){E++;G++;};for (var i=B;A[i]&&A[i][C]&&A[i][C][D];i++) F++;for (var i=B-1;A[i]&&A[i][C]&&A[i][C][D];i--){F++;H++;};return { 'width':E,'height':F,'x':G,'y':H };};FCKTableHandler.CheckIsSelectionRectangular=function(){var A=FCKTableHandler.GetSelectedCells();if (A.length<1) return false;this._MarkCells(A,'_CellSelected');var B=this._CreateTableMap(A[0].parentNode.parentNode);var C=A[0].parentNode.rowIndex;var D=this._GetCellIndexSpan(B,C,A[0]);var E=this._GetMarkerGeometry(B,C,D,'_CellSelected');var F=D-E.x;var G=C-E.y;if (E.width>=E.height){for (D=F;D<F+E.width;D++){C=G+(D-F) % E.height;if (!B[C]||!B[C][D]){this._UnmarkCells(A,'_CellSelected');return false;};var g=this._GetMarkerGeometry(B,C,D,'_CellSelected');if (g.width!=E.width||g.height!=E.height){this._UnmarkCells(A,'_CellSelected');return false;}}}else{for (C=G;C<G+E.height;C++){D=F+(C-G) % E.width;if (!B[C]||!B[C][D]){this._UnmarkCells(A,'_CellSelected');return false;};var g=this._GetMarkerGeometry(B,C,D,'_CellSelected');if (g.width!=E.width||g.height!=E.height){this._UnmarkCells(A,'_CellSelected');return false;}}};this._UnmarkCells(A,'_CellSelected');return true;};FCKTableHandler.MergeCells=function(){var A=this.GetSelectedCells();if (A.length<2) return;var B=A[0];var C=this._CreateTableMap(B.parentNode.parentNode);var D=B.parentNode.rowIndex;var E=this._GetCellIndexSpan(C,D,B);this._MarkCells(A,'_SelectedCells');var F=this._GetMarkerGeometry(C,D,E,'_SelectedCells');var G=E-F.x;var H=D-F.y;var I=FCKTools.GetElementDocument(B).createDocumentFragment();for (var i=0;i<F.height;i++){var J=0;for (var j=0;j<F.width;j++){var K=C[H+i][G+j];while (K.childNodes.length>0){var L=K.removeChild(K.firstChild);if (L.nodeType!=1||(L.getAttribute('type',2)!='_moz'&&L.getAttribute('_moz_dirty')!=null)){I.appendChild(L);J++;}}};if (J>0) I.appendChild(FCKTools.GetElementDocument(B).createElement('br'));};this._ReplaceCellsByMarker(C,'_SelectedCells',B);this._UnmarkCells(A,'_SelectedCells');this._InstallTableMap(C,B.parentNode.parentNode);B.appendChild(I);if (FCKBrowserInfo.IsGeckoLike&&(!B.firstChild)) FCKTools.AppendBogusBr(B);this._MoveCaretToCell(B,false);};FCKTableHandler.MergeRight=function(){var A=this.GetMergeRightTarget();if (A==null) return;var B=A.refCell;var C=A.tableMap;var D=A.nextCell;var E=FCK.EditorDocument.createDocumentFragment();while (D&&D.childNodes&&D.childNodes.length>0) E.appendChild(D.removeChild(D.firstChild));D.parentNode.removeChild(D);B.appendChild(E);this._MarkCells([D],'_Replace');this._ReplaceCellsByMarker(C,'_Replace',B);this._InstallTableMap(C,B.parentNode.parentNode);this._MoveCaretToCell(B,false);};FCKTableHandler.MergeDown=function(){var A=this.GetMergeDownTarget();if (A==null) return;var B=A.refCell;var C=A.tableMap;var D=A.nextCell;var E=FCKTools.GetElementDocument(B).createDocumentFragment();while (D&&D.childNodes&&D.childNodes.length>0) E.appendChild(D.removeChild(D.firstChild));if (E.firstChild) E.insertBefore(FCKTools.GetElementDocument(D).createElement('br'),E.firstChild);B.appendChild(E);this._MarkCells([D],'_Replace');this._ReplaceCellsByMarker(C,'_Replace',B);this._InstallTableMap(C,B.parentNode.parentNode);this._MoveCaretToCell(B,false);};FCKTableHandler.HorizontalSplitCell=function(){var A=FCKTableHandler.GetSelectedCells();if (A.length!=1) return;var B=A[0];var C=this._CreateTableMap(B.parentNode.parentNode);var D=B.parentNode.rowIndex;var E=FCKTableHandler._GetCellIndexSpan(C,D,B);var F=isNaN(B.colSpan)?1:B.colSpan;if (F>1){var G=Math.ceil(F/2);var H=FCKTools.GetElementDocument(B).createElement('td');if (FCKBrowserInfo.IsGeckoLike) FCKTools.AppendBogusBr(H);var I=E+G;var J=E+F;var K=isNaN(B.rowSpan)?1:B.rowSpan;for (var r=D;r<D+K;r++){for (var i=I;i<J;i++) C[r][i]=H;}}else{var L=[];for (var i=0;i<C.length;i++){var M=C[i].slice(0,E);if (C[i].length<=E){L.push(M);continue;};if (C[i][E]==B){M.push(B);M.push(FCKTools.GetElementDocument(B).createElement('td'));if (FCKBrowserInfo.IsGeckoLike) FCKTools.AppendBogusBr(M[M.length-1]);}else{M.push(C[i][E]);M.push(C[i][E]);};for (var j=E+1;j<C[i].length;j++) M.push(C[i][j]);L.push(M);};C=L;};this._InstallTableMap(C,B.parentNode.parentNode);};FCKTableHandler.VerticalSplitCell=function(){var A=FCKTableHandler.GetSelectedCells();if (A.length!=1) return;var B=A[0];var C=this._CreateTableMap(B.parentNode.parentNode);var D=FCKTableHandler._GetCellIndexSpan(C,B.parentNode.rowIndex,B);var E=B.rowSpan;var F=B.parentNode.rowIndex;if (isNaN(E)) E=1;if (E>1){B.rowSpan=Math.ceil(E/2);var G=F+Math.ceil(E/2);var H=null;for (var i=D+1;i<C[G].length;i++){if (C[G][i].parentNode.rowIndex==G){H=C[G][i];break;}};var I=FCK.EditorDocument.createElement('td');I.rowSpan=Math.floor(E/2);if (FCKBrowserInfo.IsGeckoLike) FCKTools.AppendBogusBr(I);B.parentNode.parentNode.rows[G].insertBefore(I,H);}else{var G=F+1;var K=FCK.EditorDocument.createElement('tr');B.parentNode.parentNode.insertBefore(K,B.parentNode.parentNode.rows[G]);for (var i=0;i<C[F].length;){var L=C[F][i].colSpan;if (isNaN(L)||L<1) L=1;if (i==D){i+=L;continue;};var M=C[F][i].rowSpan;if (isNaN(M)) M=1;C[F][i].rowSpan=M+1;i+=L;};var I=FCK.EditorDocument.createElement('td');if (FCKBrowserInfo.IsGeckoLike) FCKTools.AppendBogusBr(I);K.appendChild(I);}};FCKTableHandler._GetCellIndexSpan=function(A,B,C){if (A.length<B+1) return null;var D=A[B];for (var c=0;c<D.length;c++){if (D[c]==C) return c;};return null;};FCKTableHandler._GetCellLocation=function(A,B){for (var i=0;i<A.length;i++){for (var c=0;c<A[i].length;c++){if (A[i][c]==B) return [i,c];}};return null;};FCKTableHandler._GetColumnCells=function(A,B){var C=[];for (var r=0;r<A.length;r++){var D=A[r][B];if (D&&(C.length==0||C[C.length-1]!=D)) C[C.length]=D;};return C;};FCKTableHandler._CreateTableMap=function(A){var B=A.rows;var r=-1;var C=[];for (var i=0;i<B.length;i++){r++;if (!C[r]) C[r]=[];var c=-1;for (var j=0;j<B[i].cells.length;j++){var D=B[i].cells[j];c++;while (C[r][c]) c++;var E=isNaN(D.colSpan)?1:D.colSpan;var F=isNaN(D.rowSpan)?1:D.rowSpan;for (var G=0;G<F;G++){if (!C[r+G]) C[r+G]=[];for (var H=0;H<E;H++){C[r+G][c+H]=B[i].cells[j];}};c+=E-1;}};return C;};FCKTableHandler._InstallTableMap=function(A,B){while (B.rows.length>0){var C=B.rows[0];C.parentNode.removeChild(C);};for (var i=0;i<A.length;i++){for (var j=0;j<A[i].length;j++){var D=A[i][j];if (D.parentNode) D.parentNode.removeChild(D);D.colSpan=D.rowSpan=1;}};var E=0;for (var i=0;i<A.length;i++){for (var j=0;j<A[i].length;j++){var D=A[i][j];if (!D) continue;if (j>E) E=j;if (D._colScanned===true) continue;if (A[i][j-1]==D) D.colSpan++;if (A[i][j+1]!=D) D._colScanned=true;}};for (var i=0;i<=E;i++){for (var j=0;j<A.length;j++){if (!A[j]) continue;var D=A[j][i];if (!D||D._rowScanned===true) continue;if (A[j-1]&&A[j-1][i]==D) D.rowSpan++;if (!A[j+1]||A[j+1][i]!=D) D._rowScanned=true;}};for (var i=0;i<A.length;i++){for (var j=0;j<A[i].length;j++){var D=A[i][j];if (FCKBrowserInfo.IsIE){D.removeAttribute('_colScanned');D.removeAttribute('_rowScanned');}else{delete D._colScanned;delete D._rowScanned;}}};for (var i=0;i<A.length;i++){var I=FCKTools.GetElementDocument(B).createElement('tr');for (var j=0;j<A[i].length;){var D=A[i][j];if (A[i-1]&&A[i-1][j]==D){j+=D.colSpan;continue;};I.appendChild(D);j+=D.colSpan;if (D.colSpan==1) D.removeAttribute('colspan');if (D.rowSpan==1) D.removeAttribute('rowspan');};B.appendChild(I);}};FCKTableHandler._MoveCaretToCell=function (A,B){var C=new FCKDomRange(FCK.EditorWindow);C.MoveToNodeContents(A);C.Collapse(B);C.Select();};FCKTableHandler.ClearRow=function(A){var B=A.cells;for (var i=0;i<B.length;i++){B[i].innerHTML='';if (FCKBrowserInfo.IsGeckoLike) FCKTools.AppendBogusBr(B[i]);}};FCKTableHandler.GetMergeRightTarget=function(){var A=this.GetSelectedCells();if (A.length!=1) return null;var B=A[0];var C=this._CreateTableMap(B.parentNode.parentNode);var D=B.parentNode.rowIndex;var E=this._GetCellIndexSpan(C,D,B);var F=E+(isNaN(B.colSpan)?1:B.colSpan);var G=C[D][F];if (!G) return null;this._MarkCells([B,G],'_SizeTest');var H=this._GetMarkerGeometry(C,D,E,'_SizeTest');var I=this._GetMarkerGeometry(C,D,F,'_SizeTest');this._UnmarkCells([B,G],'_SizeTest');if (H.height!=I.height||H.y!=I.y) return null;return { 'refCell':B,'nextCell':G,'tableMap':C };};FCKTableHandler.GetMergeDownTarget=function(){var A=this.GetSelectedCells();if (A.length!=1) return null;var B=A[0];var C=this._CreateTableMap(B.parentNode.parentNode);var D=B.parentNode.rowIndex;var E=this._GetCellIndexSpan(C,D,B);var F=D+(isNaN(B.rowSpan)?1:B.rowSpan);if (!C[F]) return null;var G=C[F][E];if (!G) return null;this._MarkCells([B,G],'_SizeTest');var H=this._GetMarkerGeometry(C,D,E,'_SizeTest');var I=this._GetMarkerGeometry(C,F,E,'_SizeTest');this._UnmarkCells([B,G],'_SizeTest');if (H.width!=I.width||H.x!=I.x) return null;return { 'refCell':B,'nextCell':G,'tableMap':C };};
+FCKSelection.GetType=function(){var A='Text';var B;try { B=this.GetSelection();} catch (e) {};if (B&&B.rangeCount==1){var C=B.getRangeAt(0);if (C.startContainer==C.endContainer&&(C.endOffset-C.startOffset)==1&&C.startContainer.nodeType==1&&FCKListsLib.StyleObjectElements[C.startContainer.childNodes[C.startOffset].nodeName.toLowerCase()]){A='Control';}};return A;};FCKSelection.GetSelectedElement=function(){var A=!!FCK.EditorWindow&&this.GetSelection();if (!A||A.rangeCount<1) return null;var B=A.getRangeAt(0);if (B.startContainer!=B.endContainer||B.startContainer.nodeType!=1||B.startOffset!=B.endOffset-1) return null;var C=B.startContainer.childNodes[B.startOffset];if (C.nodeType!=1) return null;return C;};FCKSelection.GetParentElement=function(){if (this.GetType()=='Control') return FCKSelection.GetSelectedElement().parentNode;else{var A=this.GetSelection();if (A){if (A.anchorNode&&A.anchorNode==A.focusNode){var B=A.getRangeAt(0);if (B.collapsed||B.startContainer.nodeType==3) return A.anchorNode.parentNode;else return A.anchorNode;};var C=new FCKElementPath(A.anchorNode);var D=new FCKElementPath(A.focusNode);var E=null;var F=null;if (C.Elements.length>D.Elements.length){E=C.Elements;F=D.Elements;}else{E=D.Elements;F=C.Elements;};var G=E.length-F.length;for(var i=0;i<F.length;i++){if (E[G+i]==F[i]) return F[i];};return null;}};return null;};FCKSelection.GetBoundaryParentElement=function(A){if (!FCK.EditorWindow) return null;if (this.GetType()=='Control') return FCKSelection.GetSelectedElement().parentNode;else{var B=this.GetSelection();if (B&&B.rangeCount>0){var C=B.getRangeAt(A?0:(B.rangeCount-1));var D=A?C.startContainer:C.endContainer;return (D.nodeType==1?D:D.parentNode);}};return null;};FCKSelection.SelectNode=function(A){var B=FCK.EditorDocument.createRange();B.selectNode(A);var C=this.GetSelection();C.removeAllRanges();C.addRange(B);};FCKSelection.Collapse=function(A){var B=this.GetSelection();if (A==null||A===true) B.collapseToStart();else B.collapseToEnd();};FCKSelection.HasAncestorNode=function(A){var B=this.GetSelectedElement();if (!B&&FCK.EditorWindow){try		{ B=this.GetSelection().getRangeAt(0).startContainer;}catch(e){}}while (B){if (B.nodeType==1&&B.nodeName.IEquals(A)) return true;B=B.parentNode;};return false;};FCKSelection.MoveToAncestorNode=function(A){var B;var C=this.GetSelectedElement();if (!C) C=this.GetSelection().getRangeAt(0).startContainer;while (C){if (C.nodeName.IEquals(A)) return C;C=C.parentNode;};return null;};FCKSelection.Delete=function(){var A=this.GetSelection();for (var i=0;i<A.rangeCount;i++){A.getRangeAt(i).deleteContents();};return A;};FCKSelection.GetSelection=function(){return FCK.EditorWindow.getSelection();};FCKSelection.Save=function(){};FCKSelection.Restore=function(){};FCKSelection.Release=function(){};
+var FCKTableHandler={};FCKTableHandler.InsertRow=function(A){var B=FCKSelection.MoveToAncestorNode('TR');if (!B) return;var C=B.cloneNode(true);B.parentNode.insertBefore(C,B);FCKTableHandler.ClearRow(A?C:B);};FCKTableHandler.DeleteRows=function(A){if (!A){var B=FCKTableHandler.GetSelectedCells();var C=[];for (var i=0;i<B.length;i++){var D=FCKTools.GetElementAscensor(B[i],'TR');C[D.rowIndex]=D;};for (var i=C.length;i>=0;i--){if (C[i]) FCKTableHandler.DeleteRows(C[i]);};return;};var E=FCKTools.GetElementAscensor(A,'TABLE');if (E.rows.length==1){FCKTableHandler.DeleteTable(E);return;};A.parentNode.removeChild(A);};FCKTableHandler.DeleteTable=function(A){if (!A){A=FCKSelection.GetSelectedElement();if (!A||A.tagName!='TABLE') A=FCKSelection.MoveToAncestorNode('TABLE');};if (!A) return;FCKSelection.SelectNode(A);FCKSelection.Collapse();if (A.parentNode.childNodes.length==1) A.parentNode.parentNode.removeChild(A.parentNode);else A.parentNode.removeChild(A);};FCKTableHandler.InsertColumn=function(A){var B=null;var C=this.GetSelectedCells();if (C&&C.length) B=C[A?0:(C.length-1)];if (!B) return;var D=FCKTools.GetElementAscensor(B,'TABLE');var E=B.cellIndex;for (var i=0;i<D.rows.length;i++){var F=D.rows[i];if (F.cells.length<(E+1)) continue;B=F.cells[E].cloneNode(false);if (FCKBrowserInfo.IsGeckoLike) FCKTools.AppendBogusBr(B);var G=F.cells[E];if (A) F.insertBefore(B,G);else if (G.nextSibling) F.insertBefore(B,G.nextSibling);else F.appendChild(B);}};FCKTableHandler.DeleteColumns=function(A){if (!A){var B=FCKTableHandler.GetSelectedCells();for (var i=B.length;i>=0;i--){if (B[i]) FCKTableHandler.DeleteColumns(B[i]);};return;};if (!A) return;var C=FCKTools.GetElementAscensor(A,'TABLE');var D=A.cellIndex;for (var i=C.rows.length-1;i>=0;i--){var E=C.rows[i];if (D==0&&E.cells.length==1){FCKTableHandler.DeleteRows(E);continue;};if (E.cells[D]) E.removeChild(E.cells[D]);}};FCKTableHandler.InsertCell=function(A,B){var C=null;var D=this.GetSelectedCells();if (D&&D.length) C=D[B?0:(D.length-1)];if (!C) return null;var E=FCK.EditorDocument.createElement('TD');if (FCKBrowserInfo.IsGeckoLike) FCKTools.AppendBogusBr(E);if (!B&&C.cellIndex==C.parentNode.cells.length-1) C.parentNode.appendChild(E);else C.parentNode.insertBefore(E,B?C:C.nextSibling);return E;};FCKTableHandler.DeleteCell=function(A){if (A.parentNode.cells.length==1){FCKTableHandler.DeleteRows(FCKTools.GetElementAscensor(A,'TR'));return;};A.parentNode.removeChild(A);};FCKTableHandler.DeleteCells=function(){var A=FCKTableHandler.GetSelectedCells();for (var i=A.length-1;i>=0;i--){FCKTableHandler.DeleteCell(A[i]);}};FCKTableHandler._MarkCells=function(A,B){for (var i=0;i<A.length;i++) A[i][B]=true;};FCKTableHandler._UnmarkCells=function(A,B){for (var i=0;i<A.length;i++){if (FCKBrowserInfo.IsIE) A[i].removeAttribute(B);else delete A[i][B];}};FCKTableHandler._ReplaceCellsByMarker=function(A,B,C){for (var i=0;i<A.length;i++){for (var j=0;j<A[i].length;j++){if (A[i][j][B]) A[i][j]=C;}}};FCKTableHandler._GetMarkerGeometry=function(A,B,C,D){var E=0;var F=0;var G=0;var H=0;for (var i=C;A[B][i]&&A[B][i][D];i++) E++;for (var i=C-1;A[B][i]&&A[B][i][D];i--){E++;G++;};for (var i=B;A[i]&&A[i][C]&&A[i][C][D];i++) F++;for (var i=B-1;A[i]&&A[i][C]&&A[i][C][D];i--){F++;H++;};return { 'width':E,'height':F,'x':G,'y':H };};FCKTableHandler.CheckIsSelectionRectangular=function(){var A=FCKTableHandler.GetSelectedCells();if (A.length<1) return false;this._MarkCells(A,'_CellSelected');var B=this._CreateTableMap(A[0].parentNode.parentNode);var C=A[0].parentNode.rowIndex;var D=this._GetCellIndexSpan(B,C,A[0]);var E=this._GetMarkerGeometry(B,C,D,'_CellSelected');var F=D-E.x;var G=C-E.y;if (E.width>=E.height){for (D=F;D<F+E.width;D++){C=G+(D-F) % E.height;if (!B[C]||!B[C][D]){this._UnmarkCells(A,'_CellSelected');return false;};var g=this._GetMarkerGeometry(B,C,D,'_CellSelected');if (g.width!=E.width||g.height!=E.height){this._UnmarkCells(A,'_CellSelected');return false;}}}else{for (C=G;C<G+E.height;C++){D=F+(C-G) % E.width;if (!B[C]||!B[C][D]){this._UnmarkCells(A,'_CellSelected');return false;};var g=this._GetMarkerGeometry(B,C,D,'_CellSelected');if (g.width!=E.width||g.height!=E.height){this._UnmarkCells(A,'_CellSelected');return false;}}};this._UnmarkCells(A,'_CellSelected');return true;};FCKTableHandler.MergeCells=function(){var A=this.GetSelectedCells();if (A.length<2) return;var B=A[0];var C=this._CreateTableMap(B.parentNode.parentNode);var D=B.parentNode.rowIndex;var E=this._GetCellIndexSpan(C,D,B);this._MarkCells(A,'_SelectedCells');var F=this._GetMarkerGeometry(C,D,E,'_SelectedCells');var G=E-F.x;var H=D-F.y;var I=FCKTools.GetElementDocument(B).createDocumentFragment();for (var i=0;i<F.height;i++){var J=0;for (var j=0;j<F.width;j++){var K=C[H+i][G+j];while (K.childNodes.length>0){var L=K.removeChild(K.firstChild);if (L.nodeType!=1||(L.getAttribute('type',2)!='_moz'&&L.getAttribute('_moz_dirty')!=null)){I.appendChild(L);J++;}}};if (J>0) I.appendChild(FCKTools.GetElementDocument(B).createElement('br'));};this._ReplaceCellsByMarker(C,'_SelectedCells',B);this._UnmarkCells(A,'_SelectedCells');this._InstallTableMap(C,B.parentNode.parentNode);B.appendChild(I);if (FCKBrowserInfo.IsGeckoLike&&(!B.firstChild)) FCKTools.AppendBogusBr(B);this._MoveCaretToCell(B,false);};FCKTableHandler.MergeRight=function(){var A=this.GetMergeRightTarget();if (A==null) return;var B=A.refCell;var C=A.tableMap;var D=A.nextCell;var E=FCK.EditorDocument.createDocumentFragment();while (D&&D.childNodes&&D.childNodes.length>0) E.appendChild(D.removeChild(D.firstChild));D.parentNode.removeChild(D);B.appendChild(E);this._MarkCells([D],'_Replace');this._ReplaceCellsByMarker(C,'_Replace',B);this._InstallTableMap(C,B.parentNode.parentNode);this._MoveCaretToCell(B,false);};FCKTableHandler.MergeDown=function(){var A=this.GetMergeDownTarget();if (A==null) return;var B=A.refCell;var C=A.tableMap;var D=A.nextCell;var E=FCKTools.GetElementDocument(B).createDocumentFragment();while (D&&D.childNodes&&D.childNodes.length>0) E.appendChild(D.removeChild(D.firstChild));if (E.firstChild) E.insertBefore(FCKTools.GetElementDocument(D).createElement('br'),E.firstChild);B.appendChild(E);this._MarkCells([D],'_Replace');this._ReplaceCellsByMarker(C,'_Replace',B);this._InstallTableMap(C,B.parentNode.parentNode);this._MoveCaretToCell(B,false);};FCKTableHandler.HorizontalSplitCell=function(){var A=FCKTableHandler.GetSelectedCells();if (A.length!=1) return;var B=A[0];var C=this._CreateTableMap(B.parentNode.parentNode);var D=B.parentNode.rowIndex;var E=FCKTableHandler._GetCellIndexSpan(C,D,B);var F=isNaN(B.colSpan)?1:B.colSpan;if (F>1){var G=Math.ceil(F/2);var H=FCKTools.GetElementDocument(B).createElement('td');if (FCKBrowserInfo.IsGeckoLike) FCKTools.AppendBogusBr(H);var I=E+G;var J=E+F;var K=isNaN(B.rowSpan)?1:B.rowSpan;for (var r=D;r<D+K;r++){for (var i=I;i<J;i++) C[r][i]=H;}}else{var L=[];for (var i=0;i<C.length;i++){var M=C[i].slice(0,E);if (C[i].length<=E){L.push(M);continue;};if (C[i][E]==B){M.push(B);M.push(FCKTools.GetElementDocument(B).createElement('td'));if (FCKBrowserInfo.IsGeckoLike) FCKTools.AppendBogusBr(M[M.length-1]);}else{M.push(C[i][E]);M.push(C[i][E]);};for (var j=E+1;j<C[i].length;j++) M.push(C[i][j]);L.push(M);};C=L;};this._InstallTableMap(C,B.parentNode.parentNode);};FCKTableHandler.VerticalSplitCell=function(){var A=FCKTableHandler.GetSelectedCells();if (A.length!=1) return;var B=A[0];var C=this._CreateTableMap(B.parentNode.parentNode);var D=FCKTableHandler._GetCellIndexSpan(C,B.parentNode.rowIndex,B);var E=B.rowSpan;var F=B.parentNode.rowIndex;if (isNaN(E)) E=1;if (E>1){B.rowSpan=Math.ceil(E/2);var G=F+Math.ceil(E/2);var H=null;for (var i=D+1;i<C[G].length;i++){if (C[G][i].parentNode.rowIndex==G){H=C[G][i];break;}};var I=FCK.EditorDocument.createElement('td');I.rowSpan=Math.floor(E/2);if (FCKBrowserInfo.IsGeckoLike) FCKTools.AppendBogusBr(I);B.parentNode.parentNode.rows[G].insertBefore(I,H);}else{var G=F+1;var K=FCK.EditorDocument.createElement('tr');var L=B.parentNode.parentNode;if (L.rows.length>G) L.insertBefore(K,L.rows[G]);else L.appendChild(K);for (var i=0;i<C[F].length;){var M=C[F][i].colSpan;if (isNaN(M)||M<1) M=1;if (i==D){i+=M;continue;};var N=C[F][i].rowSpan;if (isNaN(N)) N=1;C[F][i].rowSpan=N+1;i+=M;};var I=FCK.EditorDocument.createElement('td');if (FCKBrowserInfo.IsGeckoLike) FCKTools.AppendBogusBr(I);K.appendChild(I);}};FCKTableHandler._GetCellIndexSpan=function(A,B,C){if (A.length<B+1) return null;var D=A[B];for (var c=0;c<D.length;c++){if (D[c]==C) return c;};return null;};FCKTableHandler._GetCellLocation=function(A,B){for (var i=0;i<A.length;i++){for (var c=0;c<A[i].length;c++){if (A[i][c]==B) return [i,c];}};return null;};FCKTableHandler._GetColumnCells=function(A,B){var C=[];for (var r=0;r<A.length;r++){var D=A[r][B];if (D&&(C.length==0||C[C.length-1]!=D)) C[C.length]=D;};return C;};FCKTableHandler._CreateTableMap=function(A){var B=A.rows;var r=-1;var C=[];for (var i=0;i<B.length;i++){r++;if (!C[r]) C[r]=[];var c=-1;for (var j=0;j<B[i].cells.length;j++){var D=B[i].cells[j];c++;while (C[r][c]) c++;var E=isNaN(D.colSpan)?1:D.colSpan;var F=isNaN(D.rowSpan)?1:D.rowSpan;for (var G=0;G<F;G++){if (!C[r+G]) C[r+G]=[];for (var H=0;H<E;H++){C[r+G][c+H]=B[i].cells[j];}};c+=E-1;}};return C;};FCKTableHandler._InstallTableMap=function(A,B){var C=FCKBrowserInfo.IsIE?"_fckrowspan":"rowSpan";while (B.rows.length>0){var D=B.rows[0];D.parentNode.removeChild(D);};for (var i=0;i<A.length;i++){for (var j=0;j<A[i].length;j++){var E=A[i][j];if (E.parentNode) E.parentNode.removeChild(E);E.colSpan=E[C]=1;}};var F=0;for (var i=0;i<A.length;i++){for (var j=0;j<A[i].length;j++){var E=A[i][j];if (!E) continue;if (j>F) F=j;if (E._colScanned===true) continue;if (A[i][j-1]==E) E.colSpan++;if (A[i][j+1]!=E) E._colScanned=true;}};for (var i=0;i<=F;i++){for (var j=0;j<A.length;j++){if (!A[j]) continue;var E=A[j][i];if (!E||E._rowScanned===true) continue;if (A[j-1]&&A[j-1][i]==E) E[C]++;if (!A[j+1]||A[j+1][i]!=E) E._rowScanned=true;}};for (var i=0;i<A.length;i++){for (var j=0;j<A[i].length;j++){var E=A[i][j];if (FCKBrowserInfo.IsIE){E.removeAttribute('_colScanned');E.removeAttribute('_rowScanned');}else{delete E._colScanned;delete E._rowScanned;}}};for (var i=0;i<A.length;i++){var J=FCKTools.GetElementDocument(B).createElement('tr');for (var j=0;j<A[i].length;){var E=A[i][j];if (A[i-1]&&A[i-1][j]==E){j+=E.colSpan;continue;};J.appendChild(E);if (C!='rowSpan'){E.rowSpan=E[C];E.removeAttribute(C);};j+=E.colSpan;if (E.colSpan==1) E.removeAttribute('colspan');if (E.rowSpan==1) E.removeAttribute('rowspan');};B.appendChild(J);}};FCKTableHandler._MoveCaretToCell=function (A,B){var C=new FCKDomRange(FCK.EditorWindow);C.MoveToNodeContents(A);C.Collapse(B);C.Select();};FCKTableHandler.ClearRow=function(A){var B=A.cells;for (var i=0;i<B.length;i++){B[i].innerHTML='';if (FCKBrowserInfo.IsGeckoLike) FCKTools.AppendBogusBr(B[i]);}};FCKTableHandler.GetMergeRightTarget=function(){var A=this.GetSelectedCells();if (A.length!=1) return null;var B=A[0];var C=this._CreateTableMap(B.parentNode.parentNode);var D=B.parentNode.rowIndex;var E=this._GetCellIndexSpan(C,D,B);var F=E+(isNaN(B.colSpan)?1:B.colSpan);var G=C[D][F];if (!G) return null;this._MarkCells([B,G],'_SizeTest');var H=this._GetMarkerGeometry(C,D,E,'_SizeTest');var I=this._GetMarkerGeometry(C,D,F,'_SizeTest');this._UnmarkCells([B,G],'_SizeTest');if (H.height!=I.height||H.y!=I.y) return null;return { 'refCell':B,'nextCell':G,'tableMap':C };};FCKTableHandler.GetMergeDownTarget=function(){var A=this.GetSelectedCells();if (A.length!=1) return null;var B=A[0];var C=this._CreateTableMap(B.parentNode.parentNode);var D=B.parentNode.rowIndex;var E=this._GetCellIndexSpan(C,D,B);var F=D+(isNaN(B.rowSpan)?1:B.rowSpan);if (!C[F]) return null;var G=C[F][E];if (!G) return null;this._MarkCells([B,G],'_SizeTest');var H=this._GetMarkerGeometry(C,D,E,'_SizeTest');var I=this._GetMarkerGeometry(C,F,E,'_SizeTest');this._UnmarkCells([B,G],'_SizeTest');if (H.width!=I.width||H.x!=I.x) return null;return { 'refCell':B,'nextCell':G,'tableMap':C };};
 FCKTableHandler.GetSelectedCells=function(){var A=[];var B=FCKSelection.GetSelection();if (B.rangeCount==1&&B.anchorNode.nodeType==3){var C=FCKTools.GetElementAscensor(B.anchorNode,'TD,TH');if (C) A[0]=C;return A;};for (var i=0;i<B.rangeCount;i++){var D=B.getRangeAt(i);var E;if (D.startContainer.tagName.Equals('TD','TH')) E=D.startContainer;else E=D.startContainer.childNodes[D.startOffset];if (E.tagName.Equals('TD','TH')) A[A.length]=E;};return A;};
 var FCKXml=function(){this.Error=false;};FCKXml.GetAttribute=function(A,B,C){var D=A.attributes.getNamedItem(B);return D?D.value:C;};FCKXml.TransformToObject=function(A){if (!A) return null;var B={};var C=A.attributes;for (var i=0;i<C.length;i++){var D=C[i];B[D.name]=D.value;};var E=A.childNodes;for (i=0;i<E.length;i++){var F=E[i];if (F.nodeType==1){var G='$'+F.nodeName;var H=B[G];if (!H) H=B[G]=[];H.push(this.TransformToObject(F));}};return B;};
-FCKXml.prototype={LoadUrl:function(A){this.Error=false;var B;var C=FCKTools.CreateXmlObject('XmlHttp');C.open('GET',A,false);C.send(null);if (C.status==200||C.status==304) B=C.responseXML;else if (C.status==0&&C.readyState==4) B=C.responseXML;else B=null;if (B){try{var D=B.firstChild;}catch (e){B=(new DOMParser()).parseFromString(C.responseText,'text/xml');}};if (!B||!B.firstChild){this.Error=true;if (window.confirm('Error loading "'+A+'" (HTTP Status: '+C.status+').\r\nDo you want to see the server response dump?')) alert(C.responseText);};this.DOMDocument=B;},SelectNodes:function(A,B){if (this.Error) return [];var C=[];var D=this.DOMDocument.evaluate(A,B?B:this.DOMDocument,this.DOMDocument.createNSResolver(this.DOMDocument.documentElement),XPathResult.ORDERED_NODE_ITERATOR_TYPE,null);if (D){var E=D.iterateNext();while(E){C[C.length]=E;E=D.iterateNext();}};return C;},SelectSingleNode:function(A,B){if (this.Error) return null;var C=this.DOMDocument.evaluate(A,B?B:this.DOMDocument,this.DOMDocument.createNSResolver(this.DOMDocument.documentElement),9,null);if (C&&C.singleNodeValue) return C.singleNodeValue;else return null;}};
+FCKXml.prototype={LoadUrl:function(A){this.Error=false;var B;var C=FCKTools.CreateXmlObject('XmlHttp');C.open('GET',A,false);C.send(null);if (C.status==200||C.status==304||(C.status==0&&C.readyState==4)){B=C.responseXML;if (!B) B=(new DOMParser()).parseFromString(C.responseText,'text/xml');}else B=null;if (B){try{var D=B.firstChild;}catch (e){B=(new DOMParser()).parseFromString(C.responseText,'text/xml');}};if (!B||!B.firstChild){this.Error=true;if (window.confirm('Error loading "'+A+'" (HTTP Status: '+C.status+').\r\nDo you want to see the server response dump?')) alert(C.responseText);};this.DOMDocument=B;},SelectNodes:function(A,B){if (this.Error) return [];var C=[];var D=this.DOMDocument.evaluate(A,B?B:this.DOMDocument,this.DOMDocument.createNSResolver(this.DOMDocument.documentElement),XPathResult.ORDERED_NODE_ITERATOR_TYPE,null);if (D){var E=D.iterateNext();while(E){C[C.length]=E;E=D.iterateNext();}};return C;},SelectSingleNode:function(A,B){if (this.Error) return null;var C=this.DOMDocument.evaluate(A,B?B:this.DOMDocument,this.DOMDocument.createNSResolver(this.DOMDocument.documentElement),9,null);if (C&&C.singleNodeValue) return C.singleNodeValue;else return null;}};
 var FCKNamedCommand=function(A){this.Name=A;};FCKNamedCommand.prototype.Execute=function(){FCK.ExecuteNamedCommand(this.Name);};FCKNamedCommand.prototype.GetState=function(){if (FCK.EditMode!=0) return -1;return FCK.GetNamedCommandState(this.Name);};
 var FCKStyleCommand=function(){};FCKStyleCommand.prototype={Name:'Style',Execute:function(A,B){FCKUndo.SaveUndoStep();if (B.Selected) FCK.Styles.RemoveStyle(B.Style);else FCK.Styles.ApplyStyle(B.Style);FCKUndo.SaveUndoStep();FCK.Focus();FCK.Events.FireEvent('OnSelectionChange');},GetState:function(){if (FCK.EditMode!=0||!FCK.EditorDocument) return -1;if (FCKSelection.GetType()=='Control'){var A=FCKSelection.GetSelectedElement();if (!A||!FCKStyles.CheckHasObjectStyle(A.nodeName.toLowerCase())) return -1;};return 0;}};
-var FCKDialogCommand=function(A,B,C,D,E,F,G,H){this.Name=A;this.Title=B;this.Url=C;this.Width=D;this.Height=E;this.CustomValue=H;this.GetStateFunction=F;this.GetStateParam=G;this.Resizable=false;};FCKDialogCommand.prototype.Execute=function(){FCKDialog.OpenDialog('FCKDialog_'+this.Name,this.Title,this.Url,this.Width,this.Height,this.CustomValue,null,this.Resizable);};FCKDialogCommand.prototype.GetState=function(){if (this.GetStateFunction) return this.GetStateFunction(this.GetStateParam);else return FCK.EditMode==0?0:-1;};var FCKUndefinedCommand=function(){this.Name='Undefined';};FCKUndefinedCommand.prototype.Execute=function(){alert(FCKLang.NotImplemented);};FCKUndefinedCommand.prototype.GetState=function(){return 0;};var FCKFormatBlockCommand=function(){};FCKFormatBlockCommand.prototype={Name:'FormatBlock',Execute:FCKStyleCommand.prototype.Execute,GetState:function(){return FCK.EditorDocument?0:-1;}};var FCKFontNameCommand=function(){};FCKFontNameCommand.prototype={Name:'FontName',Execute:FCKStyleCommand.prototype.Execute,GetState:FCKFormatBlockCommand.prototype.GetState};var FCKFontSizeCommand=function(){};FCKFontSizeCommand.prototype={Name:'FontSize',Execute:FCKStyleCommand.prototype.Execute,GetState:FCKFormatBlockCommand.prototype.GetState};var FCKPreviewCommand=function(){this.Name='Preview';};FCKPreviewCommand.prototype.Execute=function(){FCK.Preview();};FCKPreviewCommand.prototype.GetState=function(){return 0;};var FCKSaveCommand=function(){this.Name='Save';};FCKSaveCommand.prototype.Execute=function(){var A=FCK.GetParentForm();if (typeof(A.onsubmit)=='function'){var B=A.onsubmit();if (B!=null&&B===false) return;};if (typeof(A.submit)=='function') A.submit();else A.submit.click();};FCKSaveCommand.prototype.GetState=function(){return 0;};var FCKNewPageCommand=function(){this.Name='NewPage';};FCKNewPageCommand.prototype.Execute=function(){FCKUndo.SaveUndoStep();FCK.SetData('');FCKUndo.Typing=true;FCK.Focus();};FCKNewPageCommand.prototype.GetState=function(){return 0;};var FCKSourceCommand=function(){this.Name='Source';};FCKSourceCommand.prototype.Execute=function(){if (FCKConfig.SourcePopup){var A=FCKConfig.ScreenWidth*0.65;var B=FCKConfig.ScreenHeight*0.65;FCKDialog.OpenDialog('FCKDialog_Source',FCKLang.Source,'dialog/fck_source.html',A,B,null,null,true);}else FCK.SwitchEditMode();};FCKSourceCommand.prototype.GetState=function(){return (FCK.EditMode==0?0:1);};var FCKUndoCommand=function(){this.Name='Undo';};FCKUndoCommand.prototype.Execute=function(){FCKUndo.Undo();};FCKUndoCommand.prototype.GetState=function(){if (FCK.EditMode!=0) return -1;return (FCKUndo.CheckUndoState()?0:-1);};var FCKRedoCommand=function(){this.Name='Redo';};FCKRedoCommand.prototype.Execute=function(){FCKUndo.Redo();};FCKRedoCommand.prototype.GetState=function(){if (FCK.EditMode!=0) return -1;return (FCKUndo.CheckRedoState()?0:-1);};var FCKPageBreakCommand=function(){this.Name='PageBreak';};FCKPageBreakCommand.prototype.Execute=function(){FCKUndo.SaveUndoStep();var e=FCK.EditorDocument.createElement('DIV');e.style.pageBreakAfter='always';e.innerHTML='<span style="DISPLAY:none">&nbsp;</span>';var A=FCKDocumentProcessor_CreateFakeImage('FCK__PageBreak',e);var B=new FCKDomRange(FCK.EditorWindow);B.MoveToSelection();var C=B.SplitBlock();B.InsertNode(A);FCK.Events.FireEvent('OnSelectionChange');};FCKPageBreakCommand.prototype.GetState=function(){if (FCK.EditMode!=0) return -1;return 0;};var FCKUnlinkCommand=function(){this.Name='Unlink';};FCKUnlinkCommand.prototype.Execute=function(){FCKUndo.SaveUndoStep();if (FCKBrowserInfo.IsGeckoLike){var A=FCK.Selection.MoveToAncestorNode('A');if (A) FCKTools.RemoveOuterTags(A);return;};FCK.ExecuteNamedCommand(this.Name);};FCKUnlinkCommand.prototype.GetState=function(){if (FCK.EditMode!=0) return -1;var A=FCK.GetNamedCommandState(this.Name);if (A==0&&FCK.EditMode==0){var B=FCKSelection.MoveToAncestorNode('A');var C=(B&&B.name.length>0&&B.href.length==0);if (C) A=-1;};return A;};var FCKSelectAllCommand=function(){this.Name='SelectAll';};FCKSelectAllCommand.prototype.Execute=function(){if (FCK.EditMode==0){FCK.ExecuteNamedCommand('SelectAll');}else{var A=FCK.EditingArea.Textarea;if (FCKBrowserInfo.IsIE){A.createTextRange().execCommand('SelectAll');}else{A.selectionStart=0;A.selectionEnd=A.value.length;};A.focus();}};FCKSelectAllCommand.prototype.GetState=function(){if (FCK.EditMode!=0) return -1;return 0;};var FCKPasteCommand=function(){this.Name='Paste';};FCKPasteCommand.prototype={Execute:function(){if (FCKBrowserInfo.IsIE) FCK.Paste();else FCK.ExecuteNamedCommand('Paste');},GetState:function(){if (FCK.EditMode!=0) return -1;return FCK.GetNamedCommandState('Paste');}};var FCKRuleCommand=function(){this.Name='Rule';};FCKRuleCommand.prototype={Execute:function(){FCKUndo.SaveUndoStep();FCK.InsertElement('hr');},GetState:function(){if (FCK.EditMode!=0) return -1;return FCK.GetNamedCommandState('InsertHorizontalRule');}};var FCKCutCopyCommand=function(A){this.Name=A?'Cut':'Copy';};FCKCutCopyCommand.prototype={Execute:function(){var A=false;if (FCKBrowserInfo.IsIE){var B=function(){A=true;};var C='on'+this.Name.toLowerCase();FCK.EditorDocument.body.attachEvent(C,B);FCK.ExecuteNamedCommand(this.Name);FCK.EditorDocument.body.detachEvent(C,B);}else{try{FCK.ExecuteNamedCommand(this.Name);A=true;}catch(e){}};if (!A) alert(FCKLang['PasteError'+this.Name]);},GetState:function(){return FCK.EditMode!=0?-1:FCK.GetNamedCommandState('Cut');}};var FCKAnchorDeleteCommand=function(){this.Name='AnchorDelete';};FCKAnchorDeleteCommand.prototype={Execute:function(){if (FCK.Selection.GetType()=='Control'){FCK.Selection.Delete();}else{var A=FCK.Selection.GetSelectedElement();if (A){if (A.tagName=='IMG'&&A.getAttribute('_fckanchor')) oAnchor=FCK.GetRealElement(A);else A=null;};if (!A){oAnchor=FCK.Selection.MoveToAncestorNode('A');if (oAnchor) FCK.Selection.SelectNode(oAnchor);};if (oAnchor.href.length!=0){oAnchor.removeAttribute('name');if (FCKBrowserInfo.IsIE) oAnchor.className=oAnchor.className.replace(FCKRegexLib.FCK_Class,'');return;};if (A){A.parentNode.removeChild(A);return;};if (oAnchor.innerHTML.length==0){oAnchor.parentNode.removeChild(oAnchor);return;};FCKTools.RemoveOuterTags(oAnchor);};if (FCKBrowserInfo.IsGecko) FCK.Selection.Collapse(true);},GetState:function(){if (FCK.EditMode!=0) return -1;return FCK.GetNamedCommandState('Unlink');}};
-var FCKShowBlockCommand=function(A,B){this.Name=A;if (B!=undefined) this._SavedState=B;else this._SavedState=null;};FCKShowBlockCommand.prototype.Execute=function(){var A=this.GetState();if (A==-1) return;var B=FCK.EditorDocument.body;if (A==1) B.className=B.className.replace(/(^| )FCK__ShowBlocks/g,'');else B.className+=' FCK__ShowBlocks';FCK.Events.FireEvent('OnSelectionChange');};FCKShowBlockCommand.prototype.GetState=function(){if (FCK.EditMode!=0) return -1;if (!FCK.EditorDocument) return 0;if (/FCK__ShowBlocks(?:\s|$)/.test(FCK.EditorDocument.body.className)) return 1;return 0;};FCKShowBlockCommand.prototype.SaveState=function(){this._SavedState=this.GetState();};FCKShowBlockCommand.prototype.RestoreState=function(){if (this._SavedState!=null&&this.GetState()!=this._SavedState) this.Execute();};
+var FCKDialogCommand=function(A,B,C,D,E,F,G,H){this.Name=A;this.Title=B;this.Url=C;this.Width=D;this.Height=E;this.CustomValue=H;this.GetStateFunction=F;this.GetStateParam=G;this.Resizable=false;};FCKDialogCommand.prototype.Execute=function(){FCKDialog.OpenDialog('FCKDialog_'+this.Name,this.Title,this.Url,this.Width,this.Height,this.CustomValue,null,this.Resizable);};FCKDialogCommand.prototype.GetState=function(){if (this.GetStateFunction) return this.GetStateFunction(this.GetStateParam);else return FCK.EditMode==0?0:-1;};var FCKUndefinedCommand=function(){this.Name='Undefined';};FCKUndefinedCommand.prototype.Execute=function(){alert(FCKLang.NotImplemented);};FCKUndefinedCommand.prototype.GetState=function(){return 0;};var FCKFormatBlockCommand=function(){};FCKFormatBlockCommand.prototype={Name:'FormatBlock',Execute:FCKStyleCommand.prototype.Execute,GetState:function(){return FCK.EditorDocument?0:-1;}};var FCKFontNameCommand=function(){};FCKFontNameCommand.prototype={Name:'FontName',Execute:FCKStyleCommand.prototype.Execute,GetState:FCKFormatBlockCommand.prototype.GetState};var FCKFontSizeCommand=function(){};FCKFontSizeCommand.prototype={Name:'FontSize',Execute:FCKStyleCommand.prototype.Execute,GetState:FCKFormatBlockCommand.prototype.GetState};var FCKPreviewCommand=function(){this.Name='Preview';};FCKPreviewCommand.prototype.Execute=function(){FCK.Preview();};FCKPreviewCommand.prototype.GetState=function(){return 0;};var FCKSaveCommand=function(){this.Name='Save';};FCKSaveCommand.prototype.Execute=function(){var A=FCK.GetParentForm();if (typeof(A.onsubmit)=='function'){var B=A.onsubmit();if (B!=null&&B===false) return;};if (typeof(A.submit)=='function') A.submit();else A.submit.click();};FCKSaveCommand.prototype.GetState=function(){return 0;};var FCKNewPageCommand=function(){this.Name='NewPage';};FCKNewPageCommand.prototype.Execute=function(){FCKUndo.SaveUndoStep();FCK.SetData('');FCKUndo.Typing=true;FCK.Focus();};FCKNewPageCommand.prototype.GetState=function(){return 0;};var FCKSourceCommand=function(){this.Name='Source';};FCKSourceCommand.prototype.Execute=function(){if (FCKConfig.SourcePopup){var A=FCKConfig.ScreenWidth*0.65;var B=FCKConfig.ScreenHeight*0.65;FCKDialog.OpenDialog('FCKDialog_Source',FCKLang.Source,'dialog/fck_source.html',A,B,null,null,true);}else FCK.SwitchEditMode();};FCKSourceCommand.prototype.GetState=function(){return (FCK.EditMode==0?0:1);};var FCKUndoCommand=function(){this.Name='Undo';};FCKUndoCommand.prototype.Execute=function(){FCKUndo.Undo();};FCKUndoCommand.prototype.GetState=function(){if (FCK.EditMode!=0) return -1;return (FCKUndo.CheckUndoState()?0:-1);};var FCKRedoCommand=function(){this.Name='Redo';};FCKRedoCommand.prototype.Execute=function(){FCKUndo.Redo();};FCKRedoCommand.prototype.GetState=function(){if (FCK.EditMode!=0) return -1;return (FCKUndo.CheckRedoState()?0:-1);};var FCKPageBreakCommand=function(){this.Name='PageBreak';};FCKPageBreakCommand.prototype.Execute=function(){FCKUndo.SaveUndoStep();var e=FCK.EditorDocument.createElement('DIV');e.style.pageBreakAfter='always';e.innerHTML='<span style="DISPLAY:none">&nbsp;</span>';var A=FCKDocumentProcessor_CreateFakeImage('FCK__PageBreak',e);var B=new FCKDomRange(FCK.EditorWindow);B.MoveToSelection();var C=B.SplitBlock();B.InsertNode(A);FCK.Events.FireEvent('OnSelectionChange');};FCKPageBreakCommand.prototype.GetState=function(){if (FCK.EditMode!=0) return -1;return 0;};var FCKUnlinkCommand=function(){this.Name='Unlink';};FCKUnlinkCommand.prototype.Execute=function(){FCKUndo.SaveUndoStep();if (FCKBrowserInfo.IsGeckoLike){var A=FCK.Selection.MoveToAncestorNode('A');if (A) FCKTools.RemoveOuterTags(A);return;};FCK.ExecuteNamedCommand(this.Name);};FCKUnlinkCommand.prototype.GetState=function(){if (FCK.EditMode!=0) return -1;var A=FCK.GetNamedCommandState(this.Name);if (A==0&&FCK.EditMode==0){var B=FCKSelection.MoveToAncestorNode('A');var C=(B&&B.name.length>0&&B.href.length==0);if (C) A=-1;};return A;};FCKVisitLinkCommand=function(){this.Name='VisitLink';};FCKVisitLinkCommand.prototype={GetState:function(){if (FCK.EditMode!=0) return -1;var A=FCK.GetNamedCommandState('Unlink');if (A==0){var B=FCKSelection.MoveToAncestorNode('A');if (!B.href) A=-1;};return A;},Execute:function(){var A=FCKSelection.MoveToAncestorNode('A');var B=A.getAttribute('_fcksavedurl')||A.getAttribute('href',2);if (!/:\/\//.test(B)){var C=FCKConfig.BaseHref;var D=FCK.GetInstanceObject('parent');if (!C){C=D.document.location.href;C=C.substring(0,C.lastIndexOf('/')+1);};if (/^\//.test(B)){try{C=C.match(/^.*:\/\/+[^\/]+/)[0];}catch (e){C=D.document.location.protocol+'://'+D.parent.document.location.host;}};B=C+B;};if (!window.open(B,'_blank')) alert(FCKLang.VisitLinkBlocked);}};var FCKSelectAllCommand=function(){this.Name='SelectAll';};FCKSelectAllCommand.prototype.Execute=function(){if (FCK.EditMode==0){FCK.ExecuteNamedCommand('SelectAll');}else{var A=FCK.EditingArea.Textarea;if (FCKBrowserInfo.IsIE){A.createTextRange().execCommand('SelectAll');}else{A.selectionStart=0;A.selectionEnd=A.value.length;};A.focus();}};FCKSelectAllCommand.prototype.GetState=function(){if (FCK.EditMode!=0) return -1;return 0;};var FCKPasteCommand=function(){this.Name='Paste';};FCKPasteCommand.prototype={Execute:function(){if (FCKBrowserInfo.IsIE) FCK.Paste();else FCK.ExecuteNamedCommand('Paste');},GetState:function(){if (FCK.EditMode!=0) return -1;return FCK.GetNamedCommandState('Paste');}};var FCKRuleCommand=function(){this.Name='Rule';};FCKRuleCommand.prototype={Execute:function(){FCKUndo.SaveUndoStep();FCK.InsertElement('hr');},GetState:function(){if (FCK.EditMode!=0) return -1;return FCK.GetNamedCommandState('InsertHorizontalRule');}};var FCKCutCopyCommand=function(A){this.Name=A?'Cut':'Copy';};FCKCutCopyCommand.prototype={Execute:function(){var A=false;if (FCKBrowserInfo.IsIE){var B=function(){A=true;};var C='on'+this.Name.toLowerCase();FCK.EditorDocument.body.attachEvent(C,B);FCK.ExecuteNamedCommand(this.Name);FCK.EditorDocument.body.detachEvent(C,B);}else{try{FCK.ExecuteNamedCommand(this.Name);A=true;}catch(e){}};if (!A) alert(FCKLang['PasteError'+this.Name]);},GetState:function(){return FCK.EditMode!=0?-1:FCK.GetNamedCommandState('Cut');}};var FCKAnchorDeleteCommand=function(){this.Name='AnchorDelete';};FCKAnchorDeleteCommand.prototype={Execute:function(){if (FCK.Selection.GetType()=='Control'){FCK.Selection.Delete();}else{var A=FCK.Selection.GetSelectedElement();if (A){if (A.tagName=='IMG'&&A.getAttribute('_fckanchor')) oAnchor=FCK.GetRealElement(A);else A=null;};if (!A){oAnchor=FCK.Selection.MoveToAncestorNode('A');if (oAnchor) FCK.Selection.SelectNode(oAnchor);};if (oAnchor.href.length!=0){oAnchor.removeAttribute('name');if (FCKBrowserInfo.IsIE) oAnchor.className=oAnchor.className.replace(FCKRegexLib.FCK_Class,'');return;};if (A){A.parentNode.removeChild(A);return;};if (oAnchor.innerHTML.length==0){oAnchor.parentNode.removeChild(oAnchor);return;};FCKTools.RemoveOuterTags(oAnchor);};if (FCKBrowserInfo.IsGecko) FCK.Selection.Collapse(true);},GetState:function(){if (FCK.EditMode!=0) return -1;return FCK.GetNamedCommandState('Unlink');}};var FCKDeleteDivCommand=function(){};FCKDeleteDivCommand.prototype={GetState:function(){if (FCK.EditMode!=0) return -1;var A=FCKSelection.GetParentElement();var B=new FCKElementPath(A);return B.BlockLimit&&B.BlockLimit.nodeName.IEquals('div')?0:-1;},Execute:function(){FCKUndo.SaveUndoStep();var A=FCKDomTools.GetSelectedDivContainers();var B=new FCKDomRange(FCK.EditorWindow);B.MoveToSelection();var C=B.CreateBookmark();for (var i=0;i<A.length;i++) FCKDomTools.RemoveNode(A[i],true);B.MoveToBookmark(C);B.Select();}};var FCKNbsp=function(){this.Name='Non Breaking Space';};FCKNbsp.prototype={Execute:function(){FCK.InsertHtml('&nbsp;');},GetState:function(){return (FCK.EditMode!=0?-1:0);}};
+var FCKShowBlockCommand=function(A,B){this.Name=A;if (B!=undefined) this._SavedState=B;else this._SavedState=null;};FCKShowBlockCommand.prototype.Execute=function(){var A=this.GetState();if (A==-1) return;var B=FCK.EditorDocument.body;if (A==1) B.className=B.className.replace(/(^| )FCK__ShowBlocks/g,'');else B.className+=' FCK__ShowBlocks';if (FCKBrowserInfo.IsIE){try{FCK.EditorDocument.selection.createRange().select();}catch (e){}}else{var C=FCK.EditorWindow.getSelection().focusNode;if (C.nodeType!=1) C=C.parentNode;FCKDomTools.ScrollIntoView(C,false);};FCK.Events.FireEvent('OnSelectionChange');};FCKShowBlockCommand.prototype.GetState=function(){if (FCK.EditMode!=0) return -1;if (!FCK.EditorDocument) return 0;if (/FCK__ShowBlocks(?:\s|$)/.test(FCK.EditorDocument.body.className)) return 1;return 0;};FCKShowBlockCommand.prototype.SaveState=function(){this._SavedState=this.GetState();};FCKShowBlockCommand.prototype.RestoreState=function(){if (this._SavedState!=null&&this.GetState()!=this._SavedState) this.Execute();};
 var FCKSpellCheckCommand=function(){this.Name='SpellCheck';this.IsEnabled=(FCKConfig.SpellChecker=='SpellerPages');};FCKSpellCheckCommand.prototype.Execute=function(){FCKDialog.OpenDialog('FCKDialog_SpellCheck','Spell Check','dialog/fck_spellerpages.html',440,480);};FCKSpellCheckCommand.prototype.GetState=function(){if (FCK.EditMode!=0) return -1;return this.IsEnabled?0:-1;};
 var FCKTextColorCommand=function(A){this.Name=A=='ForeColor'?'TextColor':'BGColor';this.Type=A;var B;if (FCKBrowserInfo.IsIE) B=window;else if (FCK.ToolbarSet._IFrame) B=FCKTools.GetElementWindow(FCK.ToolbarSet._IFrame);else B=window.parent;this._Panel=new FCKPanel(B);this._Panel.AppendStyleSheet(FCKConfig.SkinEditorCSS);this._Panel.MainNode.className='FCK_Panel';this._CreatePanelBody(this._Panel.Document,this._Panel.MainNode);FCK.ToolbarSet.ToolbarItems.GetItem(this.Name).RegisterPanel(this._Panel);FCKTools.DisableSelection(this._Panel.Document.body);};FCKTextColorCommand.prototype.Execute=function(A,B,C){this._Panel.Show(A,B,C);};FCKTextColorCommand.prototype.SetColor=function(A){FCKUndo.SaveUndoStep();var B=FCKStyles.GetStyle('_FCK_'+(this.Type=='ForeColor'?'Color':'BackColor'));if (!A||A.length==0) FCK.Styles.RemoveStyle(B);else{B.SetVariable('Color',A);FCKStyles.ApplyStyle(B);};FCKUndo.SaveUndoStep();FCK.Focus();FCK.Events.FireEvent('OnSelectionChange');};FCKTextColorCommand.prototype.GetState=function(){if (FCK.EditMode!=0) return -1;return 0;};function FCKTextColorCommand_OnMouseOver(){this.className='ColorSelected';};function FCKTextColorCommand_OnMouseOut(){this.className='ColorDeselected';};function FCKTextColorCommand_OnClick(A,B,C){this.className='ColorDeselected';B.SetColor(C);B._Panel.Hide();};function FCKTextColorCommand_AutoOnClick(A,B){this.className='ColorDeselected';B.SetColor('');B._Panel.Hide();};function FCKTextColorCommand_MoreOnClick(A,B){this.className='ColorDeselected';B._Panel.Hide();FCKDialog.OpenDialog('FCKDialog_Color',FCKLang.DlgColorTitle,'dialog/fck_colorselector.html',410,320,FCKTools.Bind(B,B.SetColor));};FCKTextColorCommand.prototype._CreatePanelBody=function(A,B){function CreateSelectionDiv(){var C=A.createElement("DIV");C.className='ColorDeselected';FCKTools.AddEventListenerEx(C,'mouseover',FCKTextColorCommand_OnMouseOver);FCKTools.AddEventListenerEx(C,'mouseout',FCKTextColorCommand_OnMouseOut);return C;};var D=B.appendChild(A.createElement("TABLE"));D.className='ForceBaseFont';D.style.tableLayout='fixed';D.cellPadding=0;D.cellSpacing=0;D.border=0;D.width=150;var E=D.insertRow(-1).insertCell(-1);E.colSpan=8;var C=E.appendChild(CreateSelectionDiv());C.innerHTML='<table cellspacing="0" cellpadding="0" width="100%" border="0">\n			<tr>\n				<td><div class="ColorBoxBorder"><div class="ColorBox" style="background-color: #000000"></div></div></td>\n				<td nowrap width="100%" align="center">'+FCKLang.ColorAutomatic+'</td>\n			</tr>\n		</table>';FCKTools.AddEventListenerEx(C,'click',FCKTextColorCommand_AutoOnClick,this);if (!FCKBrowserInfo.IsIE) C.style.width='96%';var G=FCKConfig.FontColors.toString().split(',');var H=0;while (H<G.length){var I=D.insertRow(-1);for (var i=0;i<8;i++,H++){if (H<G.length){var J=G[H].split('/');var K='#'+J[0];var L=J[1]||K;};C=I.insertCell(-1).appendChild(CreateSelectionDiv());C.innerHTML='<div class="ColorBoxBorder"><div class="ColorBox" style="background-color: '+K+'"></div></div>';if (H>=G.length) C.style.visibility='hidden';else FCKTools.AddEventListenerEx(C,'click',FCKTextColorCommand_OnClick,[this,L]);}};if (FCKConfig.EnableMoreFontColors){E=D.insertRow(-1).insertCell(-1);E.colSpan=8;C=E.appendChild(CreateSelectionDiv());C.innerHTML='<table width="100%" cellpadding="0" cellspacing="0" border="0"><tr><td nowrap align="center">'+FCKLang.ColorMoreColors+'</td></tr></table>';FCKTools.AddEventListenerEx(C,'click',FCKTextColorCommand_MoreOnClick,this);};if (!FCKBrowserInfo.IsIE) C.style.width='96%';};
 var FCKPastePlainTextCommand=function(){this.Name='PasteText';};FCKPastePlainTextCommand.prototype.Execute=function(){FCK.PasteAsPlainText();};FCKPastePlainTextCommand.prototype.GetState=function(){if (FCK.EditMode!=0) return -1;return FCK.GetNamedCommandState('Paste');};
 var FCKPasteWordCommand=function(){this.Name='PasteWord';};FCKPasteWordCommand.prototype.Execute=function(){FCK.PasteFromWord();};FCKPasteWordCommand.prototype.GetState=function(){if (FCK.EditMode!=0||FCKConfig.ForcePasteAsPlainText) return -1;else return FCK.GetNamedCommandState('Paste');};
 var FCKTableCommand=function(A){this.Name=A;};FCKTableCommand.prototype.Execute=function(){FCKUndo.SaveUndoStep();if (!FCKBrowserInfo.IsGecko){switch (this.Name){case 'TableMergeRight':return FCKTableHandler.MergeRight();case 'TableMergeDown':return FCKTableHandler.MergeDown();}};switch (this.Name){case 'TableInsertRowAfter':return FCKTableHandler.InsertRow(false);case 'TableInsertRowBefore':return FCKTableHandler.InsertRow(true);case 'TableDeleteRows':return FCKTableHandler.DeleteRows();case 'TableInsertColumnAfter':return FCKTableHandler.InsertColumn(false);case 'TableInsertColumnBefore':return FCKTableHandler.InsertColumn(true);case 'TableDeleteColumns':return FCKTableHandler.DeleteColumns();case 'TableInsertCellAfter':return FCKTableHandler.InsertCell(null,false);case 'TableInsertCellBefore':return FCKTableHandler.InsertCell(null,true);case 'TableDeleteCells':return FCKTableHandler.DeleteCells();case 'TableMergeCells':return FCKTableHandler.MergeCells();case 'TableHorizontalSplitCell':return FCKTableHandler.HorizontalSplitCell();case 'TableVerticalSplitCell':return FCKTableHandler.VerticalSplitCell();case 'TableDelete':return FCKTableHandler.DeleteTable();default:return alert(FCKLang.UnknownCommand.replace(/%1/g,this.Name));}};FCKTableCommand.prototype.GetState=function(){if (FCK.EditorDocument!=null&&FCKSelection.HasAncestorNode('TABLE')){switch (this.Name){case 'TableHorizontalSplitCell':case 'TableVerticalSplitCell':if (FCKTableHandler.GetSelectedCells().length==1) return 0;else return -1;case 'TableMergeCells':if (FCKTableHandler.CheckIsSelectionRectangular()&&FCKTableHandler.GetSelectedCells().length>1) return 0;else return -1;case 'TableMergeRight':return FCKTableHandler.GetMergeRightTarget()?0:-1;case 'TableMergeDown':return FCKTableHandler.GetMergeDownTarget()?0:-1;default:return 0;}}else return -1;};
-var FCKFitWindow=function(){this.Name='FitWindow';};FCKFitWindow.prototype.Execute=function(){var A=window.frameElement;var B=A.style;var C=parent;var D=C.document.documentElement;var E=C.document.body;var F=E.style;var G;if (!this.IsMaximized){if(FCKBrowserInfo.IsIE) C.attachEvent('onresize',FCKFitWindow_Resize);else C.addEventListener('resize',FCKFitWindow_Resize,true);this._ScrollPos=FCKTools.GetScrollPosition(C);G=A;while((G=G.parentNode)){if (G.nodeType==1){G._fckSavedStyles=FCKTools.SaveStyles(G);G.style.zIndex=FCKConfig.FloatingPanelsZIndex-1;}};if (FCKBrowserInfo.IsIE){this.documentElementOverflow=D.style.overflow;D.style.overflow='hidden';F.overflow='hidden';}else{F.overflow='hidden';F.width='0px';F.height='0px';};this._EditorFrameStyles=FCKTools.SaveStyles(A);var H=FCKTools.GetViewPaneSize(C);B.position="absolute";B.zIndex=FCKConfig.FloatingPanelsZIndex-1;B.left="0px";B.top="0px";B.width=H.Width+"px";B.height=H.Height+"px";if (!FCKBrowserInfo.IsIE){B.borderRight=B.borderBottom="9999px solid white";B.backgroundColor="white";};C.scrollTo(0,0);var I=FCKTools.GetWindowPosition(C,A);if (I.x!=0) B.left=(-1*I.x)+"px";if (I.y!=0) B.top=(-1*I.y)+"px";this.IsMaximized=true;}else{if(FCKBrowserInfo.IsIE) C.detachEvent("onresize",FCKFitWindow_Resize);else C.removeEventListener("resize",FCKFitWindow_Resize,true);G=A;while((G=G.parentNode)){if (G._fckSavedStyles){FCKTools.RestoreStyles(G,G._fckSavedStyles);G._fckSavedStyles=null;}};if (FCKBrowserInfo.IsIE) D.style.overflow=this.documentElementOverflow;FCKTools.RestoreStyles(A,this._EditorFrameStyles);C.scrollTo(this._ScrollPos.X,this._ScrollPos.Y);this.IsMaximized=false;};FCKToolbarItems.GetItem('FitWindow').RefreshState();if (FCK.EditMode==0) FCK.EditingArea.MakeEditable();FCK.Focus();};FCKFitWindow.prototype.GetState=function(){if (FCKConfig.ToolbarLocation!='In') return -1;else return (this.IsMaximized?1:0);};function FCKFitWindow_Resize(){var A=FCKTools.GetViewPaneSize(parent);var B=window.frameElement.style;B.width=A.Width+'px';B.height=A.Height+'px';};
+var FCKFitWindow=function(){this.Name='FitWindow';};FCKFitWindow.prototype.Execute=function(){var A=window.frameElement;var B=A.style;var C=parent;var D=C.document.documentElement;var E=C.document.body;var F=E.style;var G;var H=new FCKDomRange(FCK.EditorWindow);H.MoveToSelection();var I=FCKTools.GetScrollPosition(FCK.EditorWindow);if (!this.IsMaximized){if(FCKBrowserInfo.IsIE) C.attachEvent('onresize',FCKFitWindow_Resize);else C.addEventListener('resize',FCKFitWindow_Resize,true);this._ScrollPos=FCKTools.GetScrollPosition(C);G=A;while((G=G.parentNode)){if (G.nodeType==1){G._fckSavedStyles=FCKTools.SaveStyles(G);G.style.zIndex=FCKConfig.FloatingPanelsZIndex-1;}};if (FCKBrowserInfo.IsIE){this.documentElementOverflow=D.style.overflow;D.style.overflow='hidden';F.overflow='hidden';}else{F.overflow='hidden';F.width='0px';F.height='0px';};this._EditorFrameStyles=FCKTools.SaveStyles(A);var J=FCKTools.GetViewPaneSize(C);B.position="absolute";A.offsetLeft;B.zIndex=FCKConfig.FloatingPanelsZIndex-1;B.left="0px";B.top="0px";B.width=J.Width+"px";B.height=J.Height+"px";if (!FCKBrowserInfo.IsIE){B.borderRight=B.borderBottom="9999px solid white";B.backgroundColor="white";};C.scrollTo(0,0);var K=FCKTools.GetWindowPosition(C,A);if (K.x!=0) B.left=(-1*K.x)+"px";if (K.y!=0) B.top=(-1*K.y)+"px";this.IsMaximized=true;}else{if(FCKBrowserInfo.IsIE) C.detachEvent("onresize",FCKFitWindow_Resize);else C.removeEventListener("resize",FCKFitWindow_Resize,true);G=A;while((G=G.parentNode)){if (G._fckSavedStyles){FCKTools.RestoreStyles(G,G._fckSavedStyles);G._fckSavedStyles=null;}};if (FCKBrowserInfo.IsIE) D.style.overflow=this.documentElementOverflow;FCKTools.RestoreStyles(A,this._EditorFrameStyles);C.scrollTo(this._ScrollPos.X,this._ScrollPos.Y);this.IsMaximized=false;};FCKToolbarItems.GetItem('FitWindow').RefreshState();if (FCK.EditMode==0) FCK.EditingArea.MakeEditable();FCK.Focus();H.Select();FCK.EditorWindow.scrollTo(I.X,I.Y);};FCKFitWindow.prototype.GetState=function(){if (FCKConfig.ToolbarLocation!='In') return -1;else return (this.IsMaximized?1:0);};function FCKFitWindow_Resize(){var A=FCKTools.GetViewPaneSize(parent);var B=window.frameElement.style;B.width=A.Width+'px';B.height=A.Height+'px';};
 var FCKListCommand=function(A,B){this.Name=A;this.TagName=B;};FCKListCommand.prototype={GetState:function(){if (FCK.EditMode!=0||!FCK.EditorWindow) return -1;var A=FCKSelection.GetBoundaryParentElement(true);var B=A;while (B){if (B.nodeName.IEquals(['ul','ol'])) break;B=B.parentNode;};if (B&&B.nodeName.IEquals(this.TagName)) return 1;else return 0;},Execute:function(){FCKUndo.SaveUndoStep();var A=FCK.EditorDocument;var B=new FCKDomRange(FCK.EditorWindow);B.MoveToSelection();var C=this.GetState();if (C==0){FCKDomTools.TrimNode(A.body);if (!A.body.firstChild){var D=A.createElement('p');A.body.appendChild(D);B.MoveToNodeContents(D);}};var E=B.CreateBookmark();var F=[];var G={};var H=new FCKDomRangeIterator(B);var I;H.ForceBrBreak=(C==0);var J=true;var K=null;while (J){while ((I=H.GetNextParagraph())){var L=new FCKElementPath(I);var M=null;var N=false;var O=L.BlockLimit;for (var i=L.Elements.length-1;i>=0;i--){var P=L.Elements[i];if (P.nodeName.IEquals(['ol','ul'])){if (O._FCK_ListGroupObject) O._FCK_ListGroupObject=null;var Q=P._FCK_ListGroupObject;if (Q) Q.contents.push(I);else{Q={ 'root':P,'contents':[I] };F.push(Q);FCKDomTools.SetElementMarker(G,P,'_FCK_ListGroupObject',Q);};N=true;break;}};if (N) continue;var R=O;if (R._FCK_ListGroupObject) R._FCK_ListGroupObject.contents.push(I);else{var Q={ 'root':R,'contents':[I] };FCKDomTools.SetElementMarker(G,R,'_FCK_ListGroupObject',Q);F.push(Q);}};if (FCKBrowserInfo.IsIE) J=false;else{if (K==null){K=[];var T=FCKSelection.GetSelection();if (T&&F.length==0) K.push(T.getRangeAt(0));for (var i=1;T&&i<T.rangeCount;i++) K.push(T.getRangeAt(i));};if (K.length<1) J=false;else{var U=FCKW3CRange.CreateFromRange(A,K.shift());B._Range=U;B._UpdateElementInfo();if (B.StartNode.nodeName.IEquals('td')) B.SetStart(B.StartNode,1);if (B.EndNode.nodeName.IEquals('td')) B.SetEnd(B.EndNode,2);H=new FCKDomRangeIterator(B);H.ForceBrBreak=(C==0);}}};var W=[];while (F.length>0){var Q=F.shift();if (C==0){if (Q.root.nodeName.IEquals(['ul','ol'])) this._ChangeListType(Q,G,W);else this._CreateList(Q,W);}else if (C==1&&Q.root.nodeName.IEquals(['ul','ol'])) this._RemoveList(Q,G);};for (var i=0;i<W.length;i++){var M=W[i];var Z=false;var a=M;while (!Z){a=a.nextSibling;if (a&&a.nodeType==3&&a.nodeValue.search(/^[\n\r\t ]*$/)==0) continue;Z=true;};if (a&&a.nodeName.IEquals(this.TagName)){a.parentNode.removeChild(a);while (a.firstChild) M.appendChild(a.removeChild(a.firstChild));};Z=false;a=M;while (!Z){a=a.previousSibling;if (a&&a.nodeType==3&&a.nodeValue.search(/^[\n\r\t ]*$/)==0) continue;Z=true;};if (a&&a.nodeName.IEquals(this.TagName)){a.parentNode.removeChild(a);while (a.lastChild) M.insertBefore(a.removeChild(a.lastChild),M.firstChild);}};FCKDomTools.ClearAllMarkers(G);B.MoveToBookmark(E);B.Select();FCK.Focus();FCK.Events.FireEvent('OnSelectionChange');},_ChangeListType:function(A,B,C){var D=FCKDomTools.ListToArray(A.root,B);var E=[];for (var i=0;i<A.contents.length;i++){var F=A.contents[i];F=FCKTools.GetElementAscensor(F,'li');if (!F||F._FCK_ListItem_Processed) continue;E.push(F);FCKDomTools.SetElementMarker(B,F,'_FCK_ListItem_Processed',true);};var G=FCKTools.GetElementDocument(A.root).createElement(this.TagName);for (var i=0;i<E.length;i++){var H=E[i]._FCK_ListArray_Index;D[H].parent=G;};var I=FCKDomTools.ArrayToList(D,B);for (var i=0;i<I.listNode.childNodes.length;i++){if (I.listNode.childNodes[i].nodeName.IEquals(this.TagName)) C.push(I.listNode.childNodes[i]);};A.root.parentNode.replaceChild(I.listNode,A.root);},_CreateList:function(A,B){var C=A.contents;var D=FCKTools.GetElementDocument(A.root);var E=[];if (C.length==1&&C[0]==A.root){var F=D.createElement('div');while (C[0].firstChild) F.appendChild(C[0].removeChild(C[0].firstChild));C[0].appendChild(F);C[0]=F;};var G=A.contents[0].parentNode;for (var i=0;i<C.length;i++) G=FCKDomTools.GetCommonParents(G,C[i].parentNode).pop();for (var i=0;i<C.length;i++){var H=C[i];while (H.parentNode){if (H.parentNode==G){E.push(H);break;};H=H.parentNode;}};if (E.length<1) return;var I=E[E.length-1].nextSibling;var J=D.createElement(this.TagName);B.push(J);while (E.length){var K=E.shift();var L=D.createDocumentFragment();while (K.firstChild) L.appendChild(K.removeChild(K.firstChild));K.parentNode.removeChild(K);var M=D.createElement('li');M.appendChild(L);J.appendChild(M);};G.insertBefore(J,I);},_RemoveList:function(A,B){var C=FCKDomTools.ListToArray(A.root,B);var D=[];for (var i=0;i<A.contents.length;i++){var E=A.contents[i];E=FCKTools.GetElementAscensor(E,'li');if (!E||E._FCK_ListItem_Processed) continue;D.push(E);FCKDomTools.SetElementMarker(B,E,'_FCK_ListItem_Processed',true);};var F=null;for (var i=0;i<D.length;i++){var G=D[i]._FCK_ListArray_Index;C[G].indent=-1;F=G;};for (var i=F+1;i<C.length;i++){if (C[i].indent>C[i-1].indent+1){var H=C[i-1].indent+1-C[i].indent;var I=C[i].indent;while (C[i]&&C[i].indent>=I){C[i].indent+=H;i++;};i--;}};var J=FCKDomTools.ArrayToList(C,B);if (A.root.nextSibling==null||A.root.nextSibling.nodeName.IEquals('br')){if (J.listNode.lastChild.nodeName.IEquals('br')) J.listNode.removeChild(J.listNode.lastChild);};A.root.parentNode.replaceChild(J.listNode,A.root);}};
 var FCKJustifyCommand=function(A){this.AlignValue=A;var B=FCKConfig.ContentLangDirection.toLowerCase();this.IsDefaultAlign=(A=='left'&&B=='ltr')||(A=='right'&&B=='rtl');var C=this._CssClassName=(function(){var D=FCKConfig.JustifyClasses;if (D){switch (A){case 'left':return D[0]||null;case 'center':return D[1]||null;case 'right':return D[2]||null;case 'justify':return D[3]||null;}};return null;})();if (C&&C.length>0) this._CssClassRegex=new RegExp('(?:^|\\s+)'+C+'(?=$|\\s)');};FCKJustifyCommand._GetClassNameRegex=function(){var A=FCKJustifyCommand._ClassRegex;if (A!=undefined) return A;var B=[];var C=FCKConfig.JustifyClasses;if (C){for (var i=0;i<4;i++){var D=C[i];if (D&&D.length>0) B.push(D);}};if (B.length>0) A=new RegExp('(?:^|\\s+)(?:'+B.join('|')+')(?=$|\\s)');else A=null;return FCKJustifyCommand._ClassRegex=A;};FCKJustifyCommand.prototype={Execute:function(){FCKUndo.SaveUndoStep();var A=new FCKDomRange(FCK.EditorWindow);A.MoveToSelection();var B=this.GetState();if (B==-1) return;var C=A.CreateBookmark();var D=this._CssClassName;var E=new FCKDomRangeIterator(A);var F;while ((F=E.GetNextParagraph())){F.removeAttribute('align');if (D){var G=F.className.replace(FCKJustifyCommand._GetClassNameRegex(),'');if (B==0){if (G.length>0) G+=' ';F.className=G+D;}else if (G.length==0) FCKDomTools.RemoveAttribute(F,'class');}else{var H=F.style;if (B==0) H.textAlign=this.AlignValue;else{H.textAlign='';if (H.cssText.length==0) F.removeAttribute('style');}}};A.MoveToBookmark(C);A.Select();FCK.Focus();FCK.Events.FireEvent('OnSelectionChange');},GetState:function(){if (FCK.EditMode!=0||!FCK.EditorWindow) return -1;var A=new FCKElementPath(FCKSelection.GetBoundaryParentElement(true));var B=A.Block||A.BlockLimit;if (!B||B.nodeName.toLowerCase()=='body') return 0;var C;if (FCKBrowserInfo.IsIE) C=B.currentStyle.textAlign;else C=FCK.EditorWindow.getComputedStyle(B,'').getPropertyValue('text-align');C=C.replace(/(-moz-|-webkit-|start|auto)/i,'');if ((!C&&this.IsDefaultAlign)||C==this.AlignValue) return 1;return 0;}};
 var FCKIndentCommand=function(A,B){this.Name=A;this.Offset=B;this.IndentCSSProperty=FCKConfig.ContentLangDirection.IEquals('ltr')?'marginLeft':'marginRight';};FCKIndentCommand._InitIndentModeParameters=function(){if (FCKConfig.IndentClasses&&FCKConfig.IndentClasses.length>0){this._UseIndentClasses=true;this._IndentClassMap={};for (var i=0;i<FCKConfig.IndentClasses.length;i++) this._IndentClassMap[FCKConfig.IndentClasses[i]]=i+1;this._ClassNameRegex=new RegExp('(?:^|\\s+)('+FCKConfig.IndentClasses.join('|')+')(?=$|\\s)');}else this._UseIndentClasses=false;};FCKIndentCommand.prototype={Execute:function(){FCKUndo.SaveUndoStep();var A=new FCKDomRange(FCK.EditorWindow);A.MoveToSelection();var B=A.CreateBookmark();var C=FCKDomTools.GetCommonParentNode(A.StartNode||A.StartContainer,A.EndNode||A.EndContainer,['ul','ol']);if (C) this._IndentList(A,C);else this._IndentBlock(A);A.MoveToBookmark(B);A.Select();FCK.Focus();FCK.Events.FireEvent('OnSelectionChange');},GetState:function(){if (FCK.EditMode!=0||!FCK.EditorWindow) return -1;if (FCKIndentCommand._UseIndentClasses==undefined) FCKIndentCommand._InitIndentModeParameters();var A=FCKSelection.GetBoundaryParentElement(true);var B=FCKSelection.GetBoundaryParentElement(false);var C=FCKDomTools.GetCommonParentNode(A,B,['ul','ol']);if (C){if (this.Name.IEquals('outdent')) return 0;var D=FCKTools.GetElementAscensor(A,'li');if (!D||!D.previousSibling) return -1;return 0;};if (!FCKIndentCommand._UseIndentClasses&&this.Name.IEquals('indent')) return 0;var E=new FCKElementPath(A);var F=E.Block||E.BlockLimit;if (!F) return -1;if (FCKIndentCommand._UseIndentClasses){var G=F.className.match(FCKIndentCommand._ClassNameRegex);var H=0;if (G!=null){G=G[1];H=FCKIndentCommand._IndentClassMap[G];};if ((this.Name=='outdent'&&H==0)||(this.Name=='indent'&&H==FCKConfig.IndentClasses.length)) return -1;return 0;}else{var I=parseInt(F.style[this.IndentCSSProperty],10);if (isNaN(I)) I=0;if (I<=0) return -1;return 0;}},_IndentBlock:function(A){var B=new FCKDomRangeIterator(A);B.EnforceRealBlocks=true;A.Expand('block_contents');var C=FCKDomTools.GetCommonParents(A.StartContainer,A.EndContainer);var D=C[C.length-1];var E;while ((E=B.GetNextParagraph())){if (!(E==D||E.parentNode==D)) continue;if (FCKIndentCommand._UseIndentClasses){var F=E.className.match(FCKIndentCommand._ClassNameRegex);var G=0;if (F!=null){F=F[1];G=FCKIndentCommand._IndentClassMap[F];};if (this.Name.IEquals('outdent')) G--;else if (this.Name.IEquals('indent')) G++;G=Math.min(G,FCKConfig.IndentClasses.length);G=Math.max(G,0);var H=E.className.replace(FCKIndentCommand._ClassNameRegex,'');if (G<1) E.className=H;else E.className=(H.length>0?H+' ':'')+FCKConfig.IndentClasses[G-1];}else{var I=parseInt(E.style[this.IndentCSSProperty],10);if (isNaN(I)) I=0;I+=this.Offset;I=Math.max(I,0);I=Math.ceil(I/this.Offset)*this.Offset;E.style[this.IndentCSSProperty]=I?I+FCKConfig.IndentUnit:'';if (E.getAttribute('style')=='') E.removeAttribute('style');}}},_IndentList:function(A,B){var C=A.StartContainer;var D=A.EndContainer;while (C&&C.parentNode!=B) C=C.parentNode;while (D&&D.parentNode!=B) D=D.parentNode;if (!C||!D) return;var E=C;var F=[];var G=false;while (G==false){if (E==D) G=true;F.push(E);E=E.nextSibling;};if (F.length<1) return;var H=FCKDomTools.GetParents(B);for (var i=0;i<H.length;i++){if (H[i].nodeName.IEquals(['ul','ol'])){B=H[i];break;}};var I=this.Name.IEquals('indent')?1:-1;var J=F[0];var K=F[F.length-1];var L={};var M=FCKDomTools.ListToArray(B,L);var N=M[K._FCK_ListArray_Index].indent;for (var i=J._FCK_ListArray_Index;i<=K._FCK_ListArray_Index;i++) M[i].indent+=I;for (var i=K._FCK_ListArray_Index+1;i<M.length&&M[i].indent>N;i++) M[i].indent+=I;var O=FCKDomTools.ArrayToList(M);if (O) B.parentNode.replaceChild(O.listNode,B);FCKDomTools.ClearAllMarkers(L);}};
-var FCKBlockQuoteCommand=function(){};FCKBlockQuoteCommand.prototype={Execute:function(){FCKUndo.SaveUndoStep();var A=this.GetState();var B=new FCKDomRange(FCK.EditorWindow);B.MoveToSelection();var C=B.CreateBookmark();if (FCKBrowserInfo.IsIE){var D=B.GetBookmarkNode(C,true);var E=B.GetBookmarkNode(C,false);var F;if (D&&D.parentNode.nodeName.IEquals('blockquote')&&!D.previousSibling){F=D;while ((F=F.nextSibling)){if (FCKListsLib.BlockElements[F.nodeName.toLowerCase()]) FCKDomTools.MoveNode(D,F,true);}};if (E&&E.parentNode.nodeName.IEquals('blockquote')&&!E.previousSibling){F=E;while ((F=F.nextSibling)){if (FCKListsLib.BlockElements[F.nodeName.toLowerCase()]){if (F.firstChild==D) FCKDomTools.InsertAfterNode(D,E);else FCKDomTools.MoveNode(E,F,true);}}}};var G=new FCKDomRangeIterator(B);var H;if (A==0){G.EnforceRealBlocks=true;var I=[];while ((H=G.GetNextParagraph())) I.push(H);if (I.length<1){para=B.Window.document.createElement(FCKConfig.EnterMode.IEquals('p')?'p':'div');B.InsertNode(para);para.appendChild(B.Window.document.createTextNode('\ufeff'));B.MoveToBookmark(C);B.MoveToNodeContents(para);B.Collapse(true);C=B.CreateBookmark();I.push(para);};var J=I[0].parentNode;var K=[];for (var i=0;i<I.length;i++){H=I[i];J=FCKDomTools.GetCommonParents(H.parentNode,J).pop();};var L=null;while (I.length>0){H=I.shift();while (H.parentNode!=J) H=H.parentNode;if (H!=L) K.push(H);L=H;};while (K.length>0){H=K.shift();if (H.nodeName.IEquals('blockquote')){var M=FCKTools.GetElementDocument(H).createDocumentFragment();while (H.firstChild){M.appendChild(H.removeChild(H.firstChild));I.push(M.lastChild);};H.parentNode.replaceChild(M,H);}else I.push(H);};var N=B.Window.document.createElement('blockquote');J.insertBefore(N,I[0]);while (I.length>0){H=I.shift();N.appendChild(H);}}else if (A==1){var O=[];while ((H=G.GetNextParagraph())){var P=null;var Q=null;while (H.parentNode){if (H.parentNode.nodeName.IEquals('blockquote')){P=H.parentNode;Q=H;break;};H=H.parentNode;};if (P&&Q) O.push(Q);};var R=[];while (O.length>0){var S=O.shift();var N=S.parentNode;if (S==S.parentNode.firstChild){N.parentNode.insertBefore(N.removeChild(S),N);if (!N.firstChild) N.parentNode.removeChild(N);}else if (S==S.parentNode.lastChild){N.parentNode.insertBefore(N.removeChild(S),N.nextSibling);if (!N.firstChild) N.parentNode.removeChild(N);}else FCKDomTools.BreakParent(S,S.parentNode,B);R.push(S);};if (FCKConfig.EnterMode.IEquals('br')){while (R.length){var S=R.shift();var W=true;if (S.nodeName.IEquals('div')){var M=FCKTools.GetElementDocument(S).createDocumentFragment();var Y=W&&S.previousSibling&&!FCKListsLib.BlockBoundaries[S.previousSibling.nodeName.toLowerCase()];if (W&&Y) M.appendChild(FCKTools.GetElementDocument(S).createElement('br'));var Z=S.nextSibling&&!FCKListsLib.BlockBoundaries[S.nextSibling.nodeName.toLowerCase()];while (S.firstChild) M.appendChild(S.removeChild(S.firstChild));if (Z) M.appendChild(FCKTools.GetElementDocument(S).createElement('br'));S.parentNode.replaceChild(M,S);W=false;}}}};B.MoveToBookmark(C);B.Select();FCK.Focus();FCK.Events.FireEvent('OnSelectionChange');},GetState:function(){if (FCK.EditMode!=0||!FCK.EditorWindow) return -1;var A=new FCKElementPath(FCKSelection.GetBoundaryParentElement(true));var B=A.Block||A.BlockLimit;if (!B||B.nodeName.toLowerCase()=='body') return 0;for (var i=0;i<A.Elements.length;i++){if (A.Elements[i].nodeName.IEquals('blockquote')) return 1;};return 0;}};
+var FCKBlockQuoteCommand=function(){};FCKBlockQuoteCommand.prototype={Execute:function(){FCKUndo.SaveUndoStep();var A=this.GetState();var B=new FCKDomRange(FCK.EditorWindow);B.MoveToSelection();var C=B.CreateBookmark();if (FCKBrowserInfo.IsIE){var D=B.GetBookmarkNode(C,true);var E=B.GetBookmarkNode(C,false);var F;if (D&&D.parentNode.nodeName.IEquals('blockquote')&&!D.previousSibling){F=D;while ((F=F.nextSibling)){if (FCKListsLib.BlockElements[F.nodeName.toLowerCase()]) FCKDomTools.MoveNode(D,F,true);}};if (E&&E.parentNode.nodeName.IEquals('blockquote')&&!E.previousSibling){F=E;while ((F=F.nextSibling)){if (FCKListsLib.BlockElements[F.nodeName.toLowerCase()]){if (F.firstChild==D) FCKDomTools.InsertAfterNode(D,E);else FCKDomTools.MoveNode(E,F,true);}}}};var G=new FCKDomRangeIterator(B);var H;if (A==0){G.EnforceRealBlocks=true;var I=[];while ((H=G.GetNextParagraph())) I.push(H);if (I.length<1){para=B.Window.document.createElement(FCKConfig.EnterMode.IEquals('p')?'p':'div');B.InsertNode(para);para.appendChild(B.Window.document.createTextNode('\ufeff'));B.MoveToBookmark(C);B.MoveToNodeContents(para);B.Collapse(true);C=B.CreateBookmark();I.push(para);};var J=I[0].parentNode;var K=[];for (var i=0;i<I.length;i++){H=I[i];J=FCKDomTools.GetCommonParents(H.parentNode,J).pop();};var L=null;while (I.length>0){H=I.shift();while (H.parentNode!=J) H=H.parentNode;if (H!=L) K.push(H);L=H;}while (K.length>0){H=K.shift();if (H.nodeName.IEquals('blockquote')){var M=FCKTools.GetElementDocument(H).createDocumentFragment();while (H.firstChild){M.appendChild(H.removeChild(H.firstChild));I.push(M.lastChild);};H.parentNode.replaceChild(M,H);}else I.push(H);};var N=B.Window.document.createElement('blockquote');J.insertBefore(N,I[0]);while (I.length>0){H=I.shift();N.appendChild(H);}}else if (A==1){var O=[];while ((H=G.GetNextParagraph())){var P=null;var Q=null;while (H.parentNode){if (H.parentNode.nodeName.IEquals('blockquote')){P=H.parentNode;Q=H;break;};H=H.parentNode;};if (P&&Q) O.push(Q);};var R=[];while (O.length>0){var S=O.shift();var N=S.parentNode;if (S==S.parentNode.firstChild){N.parentNode.insertBefore(N.removeChild(S),N);if (!N.firstChild) N.parentNode.removeChild(N);}else if (S==S.parentNode.lastChild){N.parentNode.insertBefore(N.removeChild(S),N.nextSibling);if (!N.firstChild) N.parentNode.removeChild(N);}else FCKDomTools.BreakParent(S,S.parentNode,B);R.push(S);};if (FCKConfig.EnterMode.IEquals('br')){while (R.length){var S=R.shift();var W=true;if (S.nodeName.IEquals('div')){var M=FCKTools.GetElementDocument(S).createDocumentFragment();var Y=W&&S.previousSibling&&!FCKListsLib.BlockBoundaries[S.previousSibling.nodeName.toLowerCase()];if (W&&Y) M.appendChild(FCKTools.GetElementDocument(S).createElement('br'));var Z=S.nextSibling&&!FCKListsLib.BlockBoundaries[S.nextSibling.nodeName.toLowerCase()];while (S.firstChild) M.appendChild(S.removeChild(S.firstChild));if (Z) M.appendChild(FCKTools.GetElementDocument(S).createElement('br'));S.parentNode.replaceChild(M,S);W=false;}}}};B.MoveToBookmark(C);B.Select();FCK.Focus();FCK.Events.FireEvent('OnSelectionChange');},GetState:function(){if (FCK.EditMode!=0||!FCK.EditorWindow) return -1;var A=new FCKElementPath(FCKSelection.GetBoundaryParentElement(true));var B=A.Block||A.BlockLimit;if (!B||B.nodeName.toLowerCase()=='body') return 0;for (var i=0;i<A.Elements.length;i++){if (A.Elements[i].nodeName.IEquals('blockquote')) return 1;};return 0;}};
 var FCKCoreStyleCommand=function(A){this.Name='CoreStyle';this.StyleName='_FCK_'+A;this.IsActive=false;FCKStyles.AttachStyleStateChange(this.StyleName,this._OnStyleStateChange,this);};FCKCoreStyleCommand.prototype={Execute:function(){FCKUndo.SaveUndoStep();if (this.IsActive) FCKStyles.RemoveStyle(this.StyleName);else FCKStyles.ApplyStyle(this.StyleName);FCK.Focus();FCK.Events.FireEvent('OnSelectionChange');},GetState:function(){if (FCK.EditMode!=0) return -1;return this.IsActive?1:0;},_OnStyleStateChange:function(A,B){this.IsActive=B;}};
 var FCKRemoveFormatCommand=function(){this.Name='RemoveFormat';};FCKRemoveFormatCommand.prototype={Execute:function(){FCKStyles.RemoveAll();FCK.Focus();FCK.Events.FireEvent('OnSelectionChange');},GetState:function(){return FCK.EditorWindow?0:-1;}};
-var FCKCommands=FCK.Commands={};FCKCommands.LoadedCommands={};FCKCommands.RegisterCommand=function(A,B){this.LoadedCommands[A]=B;};FCKCommands.GetCommand=function(A){var B=FCKCommands.LoadedCommands[A];if (B) return B;switch (A){case 'Bold':case 'Italic':case 'Underline':case 'StrikeThrough':case 'Subscript':case 'Superscript':B=new FCKCoreStyleCommand(A);break;case 'RemoveFormat':B=new FCKRemoveFormatCommand();break;case 'DocProps':B=new FCKDialogCommand('DocProps',FCKLang.DocProps,'dialog/fck_docprops.html',400,380,FCKCommands.GetFullPageState);break;case 'Templates':B=new FCKDialogCommand('Templates',FCKLang.DlgTemplatesTitle,'dialog/fck_template.html',380,450);break;case 'Link':B=new FCKDialogCommand('Link',FCKLang.DlgLnkWindowTitle,'dialog/fck_link.html',400,300);break;case 'Unlink':B=new FCKUnlinkCommand();break;case 'Anchor':B=new FCKDialogCommand('Anchor',FCKLang.DlgAnchorTitle,'dialog/fck_anchor.html',370,160);break;case 'AnchorDelete':B=new FCKAnchorDeleteCommand();break;case 'BulletedList':B=new FCKDialogCommand('BulletedList',FCKLang.BulletedListProp,'dialog/fck_listprop.html?UL',370,160);break;case 'NumberedList':B=new FCKDialogCommand('NumberedList',FCKLang.NumberedListProp,'dialog/fck_listprop.html?OL',370,160);break;case 'About':B=new FCKDialogCommand('About',FCKLang.About,'dialog/fck_about.html',420,330,function(){ return 0;});break;case 'Find':B=new FCKDialogCommand('Find',FCKLang.DlgFindAndReplaceTitle,'dialog/fck_replace.html',340,230,null,null,'Find');break;case 'Replace':B=new FCKDialogCommand('Replace',FCKLang.DlgFindAndReplaceTitle,'dialog/fck_replace.html',340,230,null,null,'Replace');break;case 'Image':B=new FCKDialogCommand('Image',FCKLang.DlgImgTitle,'dialog/fck_image.html',450,390);break;case 'Flash':B=new FCKDialogCommand('Flash',FCKLang.DlgFlashTitle,'dialog/fck_flash.html',450,390);break;case 'SpecialChar':B=new FCKDialogCommand('SpecialChar',FCKLang.DlgSpecialCharTitle,'dialog/fck_specialchar.html',400,290);break;case 'Smiley':B=new FCKDialogCommand('Smiley',FCKLang.DlgSmileyTitle,'dialog/fck_smiley.html',FCKConfig.SmileyWindowWidth,FCKConfig.SmileyWindowHeight);break;case 'Table':B=new FCKDialogCommand('Table',FCKLang.DlgTableTitle,'dialog/fck_table.html',480,250);break;case 'TableProp':B=new FCKDialogCommand('Table',FCKLang.DlgTableTitle,'dialog/fck_table.html?Parent',480,250);break;case 'TableCellProp':B=new FCKDialogCommand('TableCell',FCKLang.DlgCellTitle,'dialog/fck_tablecell.html',550,240);break;case 'Style':B=new FCKStyleCommand();break;case 'FontName':B=new FCKFontNameCommand();break;case 'FontSize':B=new FCKFontSizeCommand();break;case 'FontFormat':B=new FCKFormatBlockCommand();break;case 'Source':B=new FCKSourceCommand();break;case 'Preview':B=new FCKPreviewCommand();break;case 'Save':B=new FCKSaveCommand();break;case 'NewPage':B=new FCKNewPageCommand();break;case 'PageBreak':B=new FCKPageBreakCommand();break;case 'Rule':B=new FCKRuleCommand();break;case 'TextColor':B=new FCKTextColorCommand('ForeColor');break;case 'BGColor':B=new FCKTextColorCommand('BackColor');break;case 'Paste':B=new FCKPasteCommand();break;case 'PasteText':B=new FCKPastePlainTextCommand();break;case 'PasteWord':B=new FCKPasteWordCommand();break;case 'JustifyLeft':B=new FCKJustifyCommand('left');break;case 'JustifyCenter':B=new FCKJustifyCommand('center');break;case 'JustifyRight':B=new FCKJustifyCommand('right');break;case 'JustifyFull':B=new FCKJustifyCommand('justify');break;case 'Indent':B=new FCKIndentCommand('indent',FCKConfig.IndentLength);break;case 'Outdent':B=new FCKIndentCommand('outdent',FCKConfig.IndentLength*-1);break;case 'Blockquote':B=new FCKBlockQuoteCommand();break;case 'TableInsertRowAfter':B=new FCKTableCommand('TableInsertRowAfter');break;case 'TableInsertRowBefore':B=new FCKTableCommand('TableInsertRowBefore');break;case 'TableDeleteRows':B=new FCKTableCommand('TableDeleteRows');break;case 'TableInsertColumnAfter':B=new FCKTableCommand('TableInsertColumnAfter');break;case 'TableInsertColumnBefore':B=new FCKTableCommand('TableInsertColumnBefore');break;case 'TableDeleteColumns':B=new FCKTableCommand('TableDeleteColumns');break;case 'TableInsertCellAfter':B=new FCKTableCommand('TableInsertCellAfter');break;case 'TableInsertCellBefore':B=new FCKTableCommand('TableInsertCellBefore');break;case 'TableDeleteCells':B=new FCKTableCommand('TableDeleteCells');break;case 'TableMergeCells':B=new FCKTableCommand('TableMergeCells');break;case 'TableMergeRight':B=new FCKTableCommand('TableMergeRight');break;case 'TableMergeDown':B=new FCKTableCommand('TableMergeDown');break;case 'TableHorizontalSplitCell':B=new FCKTableCommand('TableHorizontalSplitCell');break;case 'TableVerticalSplitCell':B=new FCKTableCommand('TableVerticalSplitCell');break;case 'TableDelete':B=new FCKTableCommand('TableDelete');break;case 'Form':B=new FCKDialogCommand('Form',FCKLang.Form,'dialog/fck_form.html',380,210);break;case 'Checkbox':B=new FCKDialogCommand('Checkbox',FCKLang.Checkbox,'dialog/fck_checkbox.html',380,200);break;case 'Radio':B=new FCKDialogCommand('Radio',FCKLang.RadioButton,'dialog/fck_radiobutton.html',380,200);break;case 'TextField':B=new FCKDialogCommand('TextField',FCKLang.TextField,'dialog/fck_textfield.html',380,210);break;case 'Textarea':B=new FCKDialogCommand('Textarea',FCKLang.Textarea,'dialog/fck_textarea.html',380,210);break;case 'HiddenField':B=new FCKDialogCommand('HiddenField',FCKLang.HiddenField,'dialog/fck_hiddenfield.html',380,190);break;case 'Button':B=new FCKDialogCommand('Button',FCKLang.Button,'dialog/fck_button.html',380,210);break;case 'Select':B=new FCKDialogCommand('Select',FCKLang.SelectionField,'dialog/fck_select.html',400,340);break;case 'ImageButton':B=new FCKDialogCommand('ImageButton',FCKLang.ImageButton,'dialog/fck_image.html?ImageButton',450,390);break;case 'SpellCheck':B=new FCKSpellCheckCommand();break;case 'FitWindow':B=new FCKFitWindow();break;case 'Undo':B=new FCKUndoCommand();break;case 'Redo':B=new FCKRedoCommand();break;case 'Copy':B=new FCKCutCopyCommand(false);break;case 'Cut':B=new FCKCutCopyCommand(true);break;case 'SelectAll':B=new FCKSelectAllCommand();break;case 'InsertOrderedList':B=new FCKListCommand('insertorderedlist','ol');break;case 'InsertUnorderedList':B=new FCKListCommand('insertunorderedlist','ul');break;case 'ShowBlocks':B=new FCKShowBlockCommand('ShowBlocks',FCKConfig.StartupShowBlocks?1:0);break;case 'Undefined':B=new FCKUndefinedCommand();break;default:if (FCKRegexLib.NamedCommands.test(A)) B=new FCKNamedCommand(A);else{alert(FCKLang.UnknownCommand.replace(/%1/g,A));return null;}};FCKCommands.LoadedCommands[A]=B;return B;};FCKCommands.GetFullPageState=function(){return FCKConfig.FullPage?0:-1;};FCKCommands.GetBooleanState=function(A){return A?-1:0;};
-var FCKPanel=function(A){this.IsRTL=(FCKLang.Dir=='rtl');this.IsContextMenu=false;this._LockCounter=0;this._Window=A||window;var B;if (FCKBrowserInfo.IsIE){this._Popup=this._Window.createPopup();var C=this._Window.document;if (FCK_IS_CUSTOM_DOMAIN&&!FCKBrowserInfo.IsIE7){C.domain=FCK_ORIGINAL_DOMAIN;document.domain=FCK_ORIGINAL_DOMAIN;};B=this.Document=this._Popup.document;if (FCK_IS_CUSTOM_DOMAIN){B.domain=FCK_RUNTIME_DOMAIN;C.domain=FCK_RUNTIME_DOMAIN;document.domain=FCK_RUNTIME_DOMAIN;};FCK.IECleanup.AddItem(this,FCKPanel_Cleanup);}else{var D=this._IFrame=this._Window.document.createElement('iframe');D.src='javascript:void(0)';D.allowTransparency=true;D.frameBorder='0';D.scrolling='no';D.width=D.height=0;FCKDomTools.SetElementStyles(D,{position:'absolute',zIndex:FCKConfig.FloatingPanelsZIndex});this._Window.document.body.appendChild(D);var E=D.contentWindow;B=this.Document=E.document;var F='';if (FCKBrowserInfo.IsSafari) F='<base href="'+window.document.location+'">';B.open();B.write('<html><head>'+F+'<\/head><body style="margin:0px;padding:0px;"><\/body><\/html>');B.close();if(FCKBrowserInfo.IsAIR) FCKAdobeAIR.Panel_Contructor(B,window.document.location);FCKTools.AddEventListenerEx(E,'focus',FCKPanel_Window_OnFocus,this);FCKTools.AddEventListenerEx(E,'blur',FCKPanel_Window_OnBlur,this);};B.dir=FCKLang.Dir;FCKTools.AddEventListener(B,'contextmenu',FCKTools.CancelEvent);this.MainNode=B.body.appendChild(B.createElement('DIV'));this.MainNode.style.cssFloat=this.IsRTL?'right':'left';};FCKPanel.prototype.AppendStyleSheet=function(A){FCKTools.AppendStyleSheet(this.Document,A);};FCKPanel.prototype.Preload=function(x,y,A){if (this._Popup) this._Popup.show(x,y,0,0,A);};FCKPanel.prototype.Show=function(x,y,A,B,C){var D;var E=this.MainNode;if (this._Popup){this._Popup.show(x,y,0,0,A);FCKDomTools.SetElementStyles(E,{B:B?B+'px':'',C:C?C+'px':''});D=E.offsetWidth;if (this.IsRTL){if (this.IsContextMenu) x=x-D+1;else if (A) x=(x*-1)+A.offsetWidth-D;};this._Popup.show(x,y,D,E.offsetHeight,A);if (this.OnHide){if (this._Timer) CheckPopupOnHide.call(this,true);this._Timer=FCKTools.SetInterval(CheckPopupOnHide,100,this);}}else{if (typeof(FCK.ToolbarSet.CurrentInstance.FocusManager)!='undefined') FCK.ToolbarSet.CurrentInstance.FocusManager.Lock();if (this.ParentPanel){this.ParentPanel.Lock();FCKPanel_Window_OnBlur(null,this.ParentPanel);};if (FCKBrowserInfo.IsGecko&&FCKBrowserInfo.IsMac){this._IFrame.scrolling='';FCKTools.RunFunction(function(){ this._IFrame.scrolling='no';},this);};if (FCK.ToolbarSet.CurrentInstance.GetInstanceObject('FCKPanel')._OpenedPanel&&FCK.ToolbarSet.CurrentInstance.GetInstanceObject('FCKPanel')._OpenedPanel!=this) FCK.ToolbarSet.CurrentInstance.GetInstanceObject('FCKPanel')._OpenedPanel.Hide(false,true);FCKDomTools.SetElementStyles(E,{B:B?B+'px':'',C:C?C+'px':''});D=E.offsetWidth;if (!B)	this._IFrame.width=1;if (!C)	this._IFrame.height=1;D=E.offsetWidth||E.firstChild.offsetWidth;var F=FCKTools.GetDocumentPosition(this._Window,A.nodeType==9?(FCKTools.IsStrictMode(A)?A.documentElement:A.body):A);var G=FCKDomTools.GetPositionedAncestor(this._IFrame.parentNode);if (G){var H=FCKTools.GetDocumentPosition(FCKTools.GetElementWindow(G),G);F.x-=H.x;F.y-=H.y;};if (this.IsRTL&&!this.IsContextMenu) x=(x*-1);x+=F.x;y+=F.y;if (this.IsRTL){if (this.IsContextMenu) x=x-D+1;else if (A) x=x+A.offsetWidth-D;}else{var I=FCKTools.GetViewPaneSize(this._Window);var J=FCKTools.GetScrollPosition(this._Window);var K=I.Height+J.Y;var L=I.Width+J.X;if ((x+D)>L) x-=x+D-L;if ((y+E.offsetHeight)>K) y-=y+E.offsetHeight-K;};FCKDomTools.SetElementStyles(this._IFrame,{left:x+'px',top:y+'px'});this._IFrame.contentWindow.focus();this._IsOpened=true;var M=this;this._resizeTimer=setTimeout(function(){var N=E.offsetWidth||E.firstChild.offsetWidth;var O=E.offsetHeight;M._IFrame.width=N;M._IFrame.height=O;},0);FCK.ToolbarSet.CurrentInstance.GetInstanceObject('FCKPanel')._OpenedPanel=this;};FCKTools.RunFunction(this.OnShow,this);};FCKPanel.prototype.Hide=function(A,B){if (this._Popup) this._Popup.hide();else{if (!this._IsOpened||this._LockCounter>0) return;if (typeof(FCKFocusManager)!='undefined'&&!B) FCKFocusManager.Unlock();this._IFrame.width=this._IFrame.height=0;this._IsOpened=false;if (this._resizeTimer){clearTimeout(this._resizeTimer);this._resizeTimer=null;};if (this.ParentPanel) this.ParentPanel.Unlock();if (!A) FCKTools.RunFunction(this.OnHide,this);}};FCKPanel.prototype.CheckIsOpened=function(){if (this._Popup) return this._Popup.isOpen;else return this._IsOpened;};FCKPanel.prototype.CreateChildPanel=function(){var A=this._Popup?FCKTools.GetDocumentWindow(this.Document):this._Window;var B=new FCKPanel(A);B.ParentPanel=this;return B;};FCKPanel.prototype.Lock=function(){this._LockCounter++;};FCKPanel.prototype.Unlock=function(){if (--this._LockCounter==0&&!this.HasFocus) this.Hide();};function FCKPanel_Window_OnFocus(e,A){A.HasFocus=true;};function FCKPanel_Window_OnBlur(e,A){A.HasFocus=false;if (A._LockCounter==0) FCKTools.RunFunction(A.Hide,A);};function CheckPopupOnHide(A){if (A||!this._Popup.isOpen){window.clearInterval(this._Timer);this._Timer=null;FCKTools.RunFunction(this.OnHide,this);}};function FCKPanel_Cleanup(){this._Popup=null;this._Window=null;this.Document=null;this.MainNode=null;};
+var FCKCommands=FCK.Commands={};FCKCommands.LoadedCommands={};FCKCommands.RegisterCommand=function(A,B){this.LoadedCommands[A]=B;};FCKCommands.GetCommand=function(A){var B=FCKCommands.LoadedCommands[A];if (B) return B;switch (A){case 'Bold':case 'Italic':case 'Underline':case 'StrikeThrough':case 'Subscript':case 'Superscript':B=new FCKCoreStyleCommand(A);break;case 'RemoveFormat':B=new FCKRemoveFormatCommand();break;case 'DocProps':B=new FCKDialogCommand('DocProps',FCKLang.DocProps,'dialog/fck_docprops.html',400,380,FCKCommands.GetFullPageState);break;case 'Templates':B=new FCKDialogCommand('Templates',FCKLang.DlgTemplatesTitle,'dialog/fck_template.html',380,450);break;case 'Link':B=new FCKDialogCommand('Link',FCKLang.DlgLnkWindowTitle,'dialog/fck_link.html',400,300);break;case 'Unlink':B=new FCKUnlinkCommand();break;case 'VisitLink':B=new FCKVisitLinkCommand();break;case 'Anchor':B=new FCKDialogCommand('Anchor',FCKLang.DlgAnchorTitle,'dialog/fck_anchor.html',370,160);break;case 'AnchorDelete':B=new FCKAnchorDeleteCommand();break;case 'BulletedList':B=new FCKDialogCommand('BulletedList',FCKLang.BulletedListProp,'dialog/fck_listprop.html?UL',370,160);break;case 'NumberedList':B=new FCKDialogCommand('NumberedList',FCKLang.NumberedListProp,'dialog/fck_listprop.html?OL',370,160);break;case 'About':B=new FCKDialogCommand('About',FCKLang.About,'dialog/fck_about.html',420,330,function(){ return 0;});break;case 'Find':B=new FCKDialogCommand('Find',FCKLang.DlgFindAndReplaceTitle,'dialog/fck_replace.html',340,230,null,null,'Find');break;case 'Replace':B=new FCKDialogCommand('Replace',FCKLang.DlgFindAndReplaceTitle,'dialog/fck_replace.html',340,230,null,null,'Replace');break;case 'Image':B=new FCKDialogCommand('Image',FCKLang.DlgImgTitle,'dialog/fck_image.html',450,390);break;case 'Flash':B=new FCKDialogCommand('Flash',FCKLang.DlgFlashTitle,'dialog/fck_flash.html',450,390);break;case 'SpecialChar':B=new FCKDialogCommand('SpecialChar',FCKLang.DlgSpecialCharTitle,'dialog/fck_specialchar.html',400,290);break;case 'Smiley':B=new FCKDialogCommand('Smiley',FCKLang.DlgSmileyTitle,'dialog/fck_smiley.html',FCKConfig.SmileyWindowWidth,FCKConfig.SmileyWindowHeight);break;case 'Table':B=new FCKDialogCommand('Table',FCKLang.DlgTableTitle,'dialog/fck_table.html',480,250);break;case 'TableProp':B=new FCKDialogCommand('Table',FCKLang.DlgTableTitle,'dialog/fck_table.html?Parent',480,250);break;case 'TableCellProp':B=new FCKDialogCommand('TableCell',FCKLang.DlgCellTitle,'dialog/fck_tablecell.html',550,240);break;case 'Style':B=new FCKStyleCommand();break;case 'FontName':B=new FCKFontNameCommand();break;case 'FontSize':B=new FCKFontSizeCommand();break;case 'FontFormat':B=new FCKFormatBlockCommand();break;case 'Source':B=new FCKSourceCommand();break;case 'Preview':B=new FCKPreviewCommand();break;case 'Save':B=new FCKSaveCommand();break;case 'NewPage':B=new FCKNewPageCommand();break;case 'PageBreak':B=new FCKPageBreakCommand();break;case 'Rule':B=new FCKRuleCommand();break;case 'Nbsp':B=new FCKNbsp();break;case 'TextColor':B=new FCKTextColorCommand('ForeColor');break;case 'BGColor':B=new FCKTextColorCommand('BackColor');break;case 'Paste':B=new FCKPasteCommand();break;case 'PasteText':B=new FCKPastePlainTextCommand();break;case 'PasteWord':B=new FCKPasteWordCommand();break;case 'JustifyLeft':B=new FCKJustifyCommand('left');break;case 'JustifyCenter':B=new FCKJustifyCommand('center');break;case 'JustifyRight':B=new FCKJustifyCommand('right');break;case 'JustifyFull':B=new FCKJustifyCommand('justify');break;case 'Indent':B=new FCKIndentCommand('indent',FCKConfig.IndentLength);break;case 'Outdent':B=new FCKIndentCommand('outdent',FCKConfig.IndentLength*-1);break;case 'Blockquote':B=new FCKBlockQuoteCommand();break;case 'CreateDiv':B=new FCKDialogCommand('CreateDiv',FCKLang.CreateDiv,'dialog/fck_div.html',380,210,null,null,true);break;case 'EditDiv':B=new FCKDialogCommand('EditDiv',FCKLang.EditDiv,'dialog/fck_div.html',380,210,null,null,false);break;case 'DeleteDiv':B=new FCKDeleteDivCommand();break;case 'TableInsertRowAfter':B=new FCKTableCommand('TableInsertRowAfter');break;case 'TableInsertRowBefore':B=new FCKTableCommand('TableInsertRowBefore');break;case 'TableDeleteRows':B=new FCKTableCommand('TableDeleteRows');break;case 'TableInsertColumnAfter':B=new FCKTableCommand('TableInsertColumnAfter');break;case 'TableInsertColumnBefore':B=new FCKTableCommand('TableInsertColumnBefore');break;case 'TableDeleteColumns':B=new FCKTableCommand('TableDeleteColumns');break;case 'TableInsertCellAfter':B=new FCKTableCommand('TableInsertCellAfter');break;case 'TableInsertCellBefore':B=new FCKTableCommand('TableInsertCellBefore');break;case 'TableDeleteCells':B=new FCKTableCommand('TableDeleteCells');break;case 'TableMergeCells':B=new FCKTableCommand('TableMergeCells');break;case 'TableMergeRight':B=new FCKTableCommand('TableMergeRight');break;case 'TableMergeDown':B=new FCKTableCommand('TableMergeDown');break;case 'TableHorizontalSplitCell':B=new FCKTableCommand('TableHorizontalSplitCell');break;case 'TableVerticalSplitCell':B=new FCKTableCommand('TableVerticalSplitCell');break;case 'TableDelete':B=new FCKTableCommand('TableDelete');break;case 'Form':B=new FCKDialogCommand('Form',FCKLang.Form,'dialog/fck_form.html',380,210);break;case 'Checkbox':B=new FCKDialogCommand('Checkbox',FCKLang.Checkbox,'dialog/fck_checkbox.html',380,200);break;case 'Radio':B=new FCKDialogCommand('Radio',FCKLang.RadioButton,'dialog/fck_radiobutton.html',380,200);break;case 'TextField':B=new FCKDialogCommand('TextField',FCKLang.TextField,'dialog/fck_textfield.html',380,210);break;case 'Textarea':B=new FCKDialogCommand('Textarea',FCKLang.Textarea,'dialog/fck_textarea.html',380,210);break;case 'HiddenField':B=new FCKDialogCommand('HiddenField',FCKLang.HiddenField,'dialog/fck_hiddenfield.html',380,190);break;case 'Button':B=new FCKDialogCommand('Button',FCKLang.Button,'dialog/fck_button.html',380,210);break;case 'Select':B=new FCKDialogCommand('Select',FCKLang.SelectionField,'dialog/fck_select.html',400,340);break;case 'ImageButton':B=new FCKDialogCommand('ImageButton',FCKLang.ImageButton,'dialog/fck_image.html?ImageButton',450,390);break;case 'SpellCheck':B=new FCKSpellCheckCommand();break;case 'FitWindow':B=new FCKFitWindow();break;case 'Undo':B=new FCKUndoCommand();break;case 'Redo':B=new FCKRedoCommand();break;case 'Copy':B=new FCKCutCopyCommand(false);break;case 'Cut':B=new FCKCutCopyCommand(true);break;case 'SelectAll':B=new FCKSelectAllCommand();break;case 'InsertOrderedList':B=new FCKListCommand('insertorderedlist','ol');break;case 'InsertUnorderedList':B=new FCKListCommand('insertunorderedlist','ul');break;case 'ShowBlocks':B=new FCKShowBlockCommand('ShowBlocks',FCKConfig.StartupShowBlocks?1:0);break;case 'Undefined':B=new FCKUndefinedCommand();break;default:if (FCKRegexLib.NamedCommands.test(A)) B=new FCKNamedCommand(A);else{alert(FCKLang.UnknownCommand.replace(/%1/g,A));return null;}};FCKCommands.LoadedCommands[A]=B;return B;};FCKCommands.GetFullPageState=function(){return FCKConfig.FullPage?0:-1;};FCKCommands.GetBooleanState=function(A){return A?-1:0;};
+var FCKPanel=function(A){this.IsRTL=(FCKLang.Dir=='rtl');this.IsContextMenu=false;this._LockCounter=0;this._Window=A||window;var B;if (FCKBrowserInfo.IsIE){this._Popup=this._Window.createPopup();var C=this._Window.document;if (FCK_IS_CUSTOM_DOMAIN&&!FCKBrowserInfo.IsIE7){C.domain=FCK_ORIGINAL_DOMAIN;document.domain=FCK_ORIGINAL_DOMAIN;};B=this.Document=this._Popup.document;if (FCK_IS_CUSTOM_DOMAIN){B.domain=FCK_RUNTIME_DOMAIN;C.domain=FCK_RUNTIME_DOMAIN;document.domain=FCK_RUNTIME_DOMAIN;};FCK.IECleanup.AddItem(this,FCKPanel_Cleanup);}else{var D=this._IFrame=this._Window.document.createElement('iframe');FCKTools.ResetStyles(D);D.src='javascript:void(0)';D.allowTransparency=true;D.frameBorder='0';D.scrolling='no';D.style.width=D.style.height='0px';FCKDomTools.SetElementStyles(D,{position:'absolute',zIndex:FCKConfig.FloatingPanelsZIndex});this._Window.document.body.appendChild(D);var E=D.contentWindow;B=this.Document=E.document;var F='';if (FCKBrowserInfo.IsSafari) F='<base href="'+window.document.location+'">';B.open();B.write('<html><head>'+F+'<\/head><body style="margin:0px;padding:0px;"><\/body><\/html>');B.close();if(FCKBrowserInfo.IsAIR) FCKAdobeAIR.Panel_Contructor(B,window.document.location);FCKTools.AddEventListenerEx(E,'focus',FCKPanel_Window_OnFocus,this);FCKTools.AddEventListenerEx(E,'blur',FCKPanel_Window_OnBlur,this);};B.dir=FCKLang.Dir;FCKTools.AddEventListener(B,'contextmenu',FCKTools.CancelEvent);this.MainNode=B.body.appendChild(B.createElement('DIV'));this.MainNode.style.cssFloat=this.IsRTL?'right':'left';};FCKPanel.prototype.AppendStyleSheet=function(A){FCKTools.AppendStyleSheet(this.Document,A);};FCKPanel.prototype.Preload=function(x,y,A){if (this._Popup) this._Popup.show(x,y,0,0,A);};FCKPanel.prototype.Show=function(x,y,A,B,C){var D;var E=this.MainNode;if (this._Popup){this._Popup.show(x,y,0,0,A);FCKDomTools.SetElementStyles(E,{B:B?B+'px':'',C:C?C+'px':''});D=E.offsetWidth;if (this.IsRTL){if (this.IsContextMenu) x=x-D+1;else if (A) x=(x*-1)+A.offsetWidth-D;};this._Popup.show(x,y,D,E.offsetHeight,A);if (this.OnHide){if (this._Timer) CheckPopupOnHide.call(this,true);this._Timer=FCKTools.SetInterval(CheckPopupOnHide,100,this);}}else{if (typeof(FCK.ToolbarSet.CurrentInstance.FocusManager)!='undefined') FCK.ToolbarSet.CurrentInstance.FocusManager.Lock();if (this.ParentPanel){this.ParentPanel.Lock();FCKPanel_Window_OnBlur(null,this.ParentPanel);};if (FCKBrowserInfo.IsGecko&&FCKBrowserInfo.IsMac){this._IFrame.scrolling='';FCKTools.RunFunction(function(){ this._IFrame.scrolling='no';},this);};if (FCK.ToolbarSet.CurrentInstance.GetInstanceObject('FCKPanel')._OpenedPanel&&FCK.ToolbarSet.CurrentInstance.GetInstanceObject('FCKPanel')._OpenedPanel!=this) FCK.ToolbarSet.CurrentInstance.GetInstanceObject('FCKPanel')._OpenedPanel.Hide(false,true);FCKDomTools.SetElementStyles(E,{B:B?B+'px':'',C:C?C+'px':''});D=E.offsetWidth;if (!B)	this._IFrame.width=1;if (!C)	this._IFrame.height=1;D=E.offsetWidth||E.firstChild.offsetWidth;var F=FCKTools.GetDocumentPosition(this._Window,A.nodeType==9?(FCKTools.IsStrictMode(A)?A.documentElement:A.body):A);var G=FCKDomTools.GetPositionedAncestor(this._IFrame.parentNode);if (G){var H=FCKTools.GetDocumentPosition(FCKTools.GetElementWindow(G),G);F.x-=H.x;F.y-=H.y;};if (this.IsRTL&&!this.IsContextMenu) x=(x*-1);x+=F.x;y+=F.y;if (this.IsRTL){if (this.IsContextMenu) x=x-D+1;else if (A) x=x+A.offsetWidth-D;}else{var I=FCKTools.GetViewPaneSize(this._Window);var J=FCKTools.GetScrollPosition(this._Window);var K=I.Height+J.Y;var L=I.Width+J.X;if ((x+D)>L) x-=x+D-L;if ((y+E.offsetHeight)>K) y-=y+E.offsetHeight-K;};FCKDomTools.SetElementStyles(this._IFrame,{left:x+'px',top:y+'px'});this._IFrame.contentWindow.focus();this._IsOpened=true;var M=this;this._resizeTimer=setTimeout(function(){var N=E.offsetWidth||E.firstChild.offsetWidth;var O=E.offsetHeight;M._IFrame.style.width=N+'px';M._IFrame.style.height=O+'px';},0);FCK.ToolbarSet.CurrentInstance.GetInstanceObject('FCKPanel')._OpenedPanel=this;};FCKTools.RunFunction(this.OnShow,this);};FCKPanel.prototype.Hide=function(A,B){if (this._Popup) this._Popup.hide();else{if (!this._IsOpened||this._LockCounter>0) return;if (typeof(FCKFocusManager)!='undefined'&&!B) FCKFocusManager.Unlock();this._IFrame.style.width=this._IFrame.style.height='0px';this._IsOpened=false;if (this._resizeTimer){clearTimeout(this._resizeTimer);this._resizeTimer=null;};if (this.ParentPanel) this.ParentPanel.Unlock();if (!A) FCKTools.RunFunction(this.OnHide,this);}};FCKPanel.prototype.CheckIsOpened=function(){if (this._Popup) return this._Popup.isOpen;else return this._IsOpened;};FCKPanel.prototype.CreateChildPanel=function(){var A=this._Popup?FCKTools.GetDocumentWindow(this.Document):this._Window;var B=new FCKPanel(A);B.ParentPanel=this;return B;};FCKPanel.prototype.Lock=function(){this._LockCounter++;};FCKPanel.prototype.Unlock=function(){if (--this._LockCounter==0&&!this.HasFocus) this.Hide();};function FCKPanel_Window_OnFocus(e,A){A.HasFocus=true;};function FCKPanel_Window_OnBlur(e,A){A.HasFocus=false;if (A._LockCounter==0) FCKTools.RunFunction(A.Hide,A);};function CheckPopupOnHide(A){if (A||!this._Popup.isOpen){window.clearInterval(this._Timer);this._Timer=null;FCKTools.RunFunction(this.OnHide,this);}};function FCKPanel_Cleanup(){this._Popup=null;this._Window=null;this.Document=null;this.MainNode=null;};
 var FCKIcon=function(A){var B=A?typeof(A):'undefined';switch (B){case 'number':this.Path=FCKConfig.SkinPath+'fck_strip.gif';this.Size=16;this.Position=A;break;case 'undefined':this.Path=FCK_SPACER_PATH;break;case 'string':this.Path=A;break;default:this.Path=A[0];this.Size=A[1];this.Position=A[2];}};FCKIcon.prototype.CreateIconElement=function(A){var B,eIconImage;if (this.Position){var C='-'+((this.Position-1)*this.Size)+'px';if (FCKBrowserInfo.IsIE){B=A.createElement('DIV');eIconImage=B.appendChild(A.createElement('IMG'));eIconImage.src=this.Path;eIconImage.style.top=C;}else{B=A.createElement('IMG');B.src=FCK_SPACER_PATH;B.style.backgroundPosition='0px '+C;B.style.backgroundImage='url("'+this.Path+'")';}}else{if (FCKBrowserInfo.IsIE){B=A.createElement('DIV');eIconImage=B.appendChild(A.createElement('IMG'));eIconImage.src=this.Path?this.Path:FCK_SPACER_PATH;}else{B=A.createElement('IMG');B.src=this.Path?this.Path:FCK_SPACER_PATH;}};B.className='TB_Button_Image';return B;};
 var FCKToolbarButtonUI=function(A,B,C,D,E,F){this.Name=A;this.Label=B||A;this.Tooltip=C||this.Label;this.Style=E||0;this.State=F||0;this.Icon=new FCKIcon(D);if (FCK.IECleanup) FCK.IECleanup.AddItem(this,FCKToolbarButtonUI_Cleanup);};FCKToolbarButtonUI.prototype._CreatePaddingElement=function(A){var B=A.createElement('IMG');B.className='TB_Button_Padding';B.src=FCK_SPACER_PATH;return B;};FCKToolbarButtonUI.prototype.Create=function(A){var B=FCKTools.GetElementDocument(A);var C=this.MainElement=B.createElement('DIV');C.title=this.Tooltip;if (FCKBrowserInfo.IsGecko) C.onmousedown=FCKTools.CancelEvent;FCKTools.AddEventListenerEx(C,'mouseover',FCKToolbarButtonUI_OnMouseOver,this);FCKTools.AddEventListenerEx(C,'mouseout',FCKToolbarButtonUI_OnMouseOut,this);FCKTools.AddEventListenerEx(C,'click',FCKToolbarButtonUI_OnClick,this);this.ChangeState(this.State,true);if (this.Style==0&&!this.ShowArrow){C.appendChild(this.Icon.CreateIconElement(B));}else{var D=C.appendChild(B.createElement('TABLE'));D.cellPadding=0;D.cellSpacing=0;var E=D.insertRow(-1);var F=E.insertCell(-1);if (this.Style==0||this.Style==2) F.appendChild(this.Icon.CreateIconElement(B));else F.appendChild(this._CreatePaddingElement(B));if (this.Style==1||this.Style==2){F=E.insertCell(-1);F.className='TB_Button_Text';F.noWrap=true;F.appendChild(B.createTextNode(this.Label));};if (this.ShowArrow){if (this.Style!=0){E.insertCell(-1).appendChild(this._CreatePaddingElement(B));};F=E.insertCell(-1);var G=F.appendChild(B.createElement('IMG'));G.src=FCKConfig.SkinPath+'images/toolbar.buttonarrow.gif';G.width=5;G.height=3;};F=E.insertCell(-1);F.appendChild(this._CreatePaddingElement(B));};A.appendChild(C);};FCKToolbarButtonUI.prototype.ChangeState=function(A,B){if (!B&&this.State==A) return;var e=this.MainElement;if (!e) return;switch (parseInt(A,10)){case 0:e.className='TB_Button_Off';break;case 1:e.className='TB_Button_On';break;case -1:e.className='TB_Button_Disabled';break;};this.State=A;};function FCKToolbarButtonUI_OnMouseOver(A,B){if (B.State==0) this.className='TB_Button_Off_Over';else if (B.State==1) this.className='TB_Button_On_Over';};function FCKToolbarButtonUI_OnMouseOut(A,B){if (B.State==0) this.className='TB_Button_Off';else if (B.State==1) this.className='TB_Button_On';};function FCKToolbarButtonUI_OnClick(A,B){if (B.OnClick&&B.State!=-1) B.OnClick(B);};function FCKToolbarButtonUI_Cleanup(){this.MainElement=null;};
 var FCKToolbarButton=function(A,B,C,D,E,F,G){this.CommandName=A;this.Label=B;this.Tooltip=C;this.Style=D;this.SourceView=E?true:false;this.ContextSensitive=F?true:false;if (G==null) this.IconPath=FCKConfig.SkinPath+'toolbar/'+A.toLowerCase()+'.gif';else if (typeof(G)=='number') this.IconPath=[FCKConfig.SkinPath+'fck_strip.gif',16,G];else this.IconPath=G;};FCKToolbarButton.prototype.Create=function(A){this._UIButton=new FCKToolbarButtonUI(this.CommandName,this.Label,this.Tooltip,this.IconPath,this.Style);this._UIButton.OnClick=this.Click;this._UIButton._ToolbarButton=this;this._UIButton.Create(A);};FCKToolbarButton.prototype.RefreshState=function(){var A=this._UIButton;if (!A) return;var B=FCK.ToolbarSet.CurrentInstance.Commands.GetCommand(this.CommandName).GetState();if (B==A.State) return;A.ChangeState(B);};FCKToolbarButton.prototype.Click=function(){var A=this._ToolbarButton||this;FCK.ToolbarSet.CurrentInstance.Commands.GetCommand(A.CommandName).Execute();};FCKToolbarButton.prototype.Enable=function(){this.RefreshState();};FCKToolbarButton.prototype.Disable=function(){this._UIButton.ChangeState(-1);};
@@ -93,16 +93,16 @@
 var FCKToolbarFontsCombo=function(A,B){this.CommandName='FontName';this.Label=this.GetLabel();this.Tooltip=A?A:this.Label;this.Style=B?B:2;this.DefaultLabel=FCKConfig.DefaultFontLabel||'';};FCKToolbarFontsCombo.prototype=new FCKToolbarFontFormatCombo(false);FCKToolbarFontsCombo.prototype.GetLabel=function(){return FCKLang.Font;};FCKToolbarFontsCombo.prototype.GetStyles=function(){var A=FCKStyles.GetStyle('_FCK_FontFace');if (!A){alert("The FCKConfig.CoreStyles['Size'] setting was not found. Please check the fckconfig.js file");return {};};var B={};var C=FCKConfig.FontNames.split(';');for (var i=0;i<C.length;i++){var D=C[i].split('/');var E=D[0];var F=D[1]||E;var G=FCKTools.CloneObject(A);G.SetVariable('Font',E);G.Label=F;B[F]=G;};return B;};FCKToolbarFontsCombo.prototype.RefreshActiveItems=FCKToolbarStyleCombo.prototype.RefreshActiveItems;FCKToolbarFontsCombo.prototype.StyleCombo_OnBeforeClick=function(A){A.DeselectAll();var B=FCKSelection.GetBoundaryParentElement(true);if (B){var C=new FCKElementPath(B);for (var i in A.Items){var D=A.Items[i];var E=D.Style;if (E.CheckActive(C)){A.SelectItem(D);return;}}}};
 var FCKToolbarFontSizeCombo=function(A,B){this.CommandName='FontSize';this.Label=this.GetLabel();this.Tooltip=A?A:this.Label;this.Style=B?B:2;this.DefaultLabel=FCKConfig.DefaultFontSizeLabel||'';this.FieldWidth=70;};FCKToolbarFontSizeCombo.prototype=new FCKToolbarFontFormatCombo(false);FCKToolbarFontSizeCombo.prototype.GetLabel=function(){return FCKLang.FontSize;};FCKToolbarFontSizeCombo.prototype.GetStyles=function(){var A=FCKStyles.GetStyle('_FCK_Size');if (!A){alert("The FCKConfig.CoreStyles['FontFace'] setting was not found. Please check the fckconfig.js file");return {};};var B={};var C=FCKConfig.FontSizes.split(';');for (var i=0;i<C.length;i++){var D=C[i].split('/');var E=D[0];var F=D[1]||E;var G=FCKTools.CloneObject(A);G.SetVariable('Size',E);G.Label=F;B[F]=G;};return B;};FCKToolbarFontSizeCombo.prototype.RefreshActiveItems=FCKToolbarStyleCombo.prototype.RefreshActiveItems;FCKToolbarFontSizeCombo.prototype.StyleCombo_OnBeforeClick=FCKToolbarFontsCombo.prototype.StyleCombo_OnBeforeClick;
 var FCKToolbarPanelButton=function(A,B,C,D,E){this.CommandName=A;var F;if (E==null) F=FCKConfig.SkinPath+'toolbar/'+A.toLowerCase()+'.gif';else if (typeof(E)=='number') F=[FCKConfig.SkinPath+'fck_strip.gif',16,E];var G=this._UIButton=new FCKToolbarButtonUI(A,B,C,F,D);G._FCKToolbarPanelButton=this;G.ShowArrow=true;G.OnClick=FCKToolbarPanelButton_OnButtonClick;};FCKToolbarPanelButton.prototype.TypeName='FCKToolbarPanelButton';FCKToolbarPanelButton.prototype.Create=function(A){A.className+='Menu';this._UIButton.Create(A);var B=FCK.ToolbarSet.CurrentInstance.Commands.GetCommand(this.CommandName)._Panel;this.RegisterPanel(B);};FCKToolbarPanelButton.prototype.RegisterPanel=function(A){if (A._FCKToolbarPanelButton) return;A._FCKToolbarPanelButton=this;var B=A.Document.body.appendChild(A.Document.createElement('div'));B.style.position='absolute';B.style.top='0px';var C=A._FCKToolbarPanelButtonLineDiv=B.appendChild(A.Document.createElement('IMG'));C.className='TB_ConnectionLine';C.style.position='absolute';C.src=FCK_SPACER_PATH;A.OnHide=FCKToolbarPanelButton_OnPanelHide;};function FCKToolbarPanelButton_OnButtonClick(A){var B=this._FCKToolbarPanelButton;var e=B._UIButton.MainElement;B._UIButton.ChangeState(1);var C=FCK.ToolbarSet.CurrentInstance.Commands.GetCommand(B.CommandName);var D=C._Panel;D._FCKToolbarPanelButtonLineDiv.style.width=(e.offsetWidth-2)+'px';C.Execute(0,e.offsetHeight-1,e);};function FCKToolbarPanelButton_OnPanelHide(){var A=this._FCKToolbarPanelButton;A._UIButton.ChangeState(0);};FCKToolbarPanelButton.prototype.RefreshState=FCKToolbarButton.prototype.RefreshState;FCKToolbarPanelButton.prototype.Enable=FCKToolbarButton.prototype.Enable;FCKToolbarPanelButton.prototype.Disable=FCKToolbarButton.prototype.Disable;
-var FCKToolbarItems={};FCKToolbarItems.LoadedItems={};FCKToolbarItems.RegisterItem=function(A,B){this.LoadedItems[A]=B;};FCKToolbarItems.GetItem=function(A){var B=FCKToolbarItems.LoadedItems[A];if (B) return B;switch (A){case 'Source':B=new FCKToolbarButton('Source',FCKLang.Source,null,2,true,true,1);break;case 'DocProps':B=new FCKToolbarButton('DocProps',FCKLang.DocProps,null,null,null,null,2);break;case 'Save':B=new FCKToolbarButton('Save',FCKLang.Save,null,null,true,null,3);break;case 'NewPage':B=new FCKToolbarButton('NewPage',FCKLang.NewPage,null,null,true,null,4);break;case 'Preview':B=new FCKToolbarButton('Preview',FCKLang.Preview,null,null,true,null,5);break;case 'Templates':B=new FCKToolbarButton('Templates',FCKLang.Templates,null,null,null,null,6);break;case 'About':B=new FCKToolbarButton('About',FCKLang.About,null,null,true,null,47);break;case 'Cut':B=new FCKToolbarButton('Cut',FCKLang.Cut,null,null,false,true,7);break;case 'Copy':B=new FCKToolbarButton('Copy',FCKLang.Copy,null,null,false,true,8);break;case 'Paste':B=new FCKToolbarButton('Paste',FCKLang.Paste,null,null,false,true,9);break;case 'PasteText':B=new FCKToolbarButton('PasteText',FCKLang.PasteText,null,null,false,true,10);break;case 'PasteWord':B=new FCKToolbarButton('PasteWord',FCKLang.PasteWord,null,null,false,true,11);break;case 'Print':B=new FCKToolbarButton('Print',FCKLang.Print,null,null,false,true,12);break;case 'SpellCheck':B=new FCKToolbarButton('SpellCheck',FCKLang.SpellCheck,null,null,null,null,13);break;case 'Undo':B=new FCKToolbarButton('Undo',FCKLang.Undo,null,null,false,true,14);break;case 'Redo':B=new FCKToolbarButton('Redo',FCKLang.Redo,null,null,false,true,15);break;case 'SelectAll':B=new FCKToolbarButton('SelectAll',FCKLang.SelectAll,null,null,true,null,18);break;case 'RemoveFormat':B=new FCKToolbarButton('RemoveFormat',FCKLang.RemoveFormat,null,null,false,true,19);break;case 'FitWindow':B=new FCKToolbarButton('FitWindow',FCKLang.FitWindow,null,null,true,true,66);break;case 'Bold':B=new FCKToolbarButton('Bold',FCKLang.Bold,null,null,false,true,20);break;case 'Italic':B=new FCKToolbarButton('Italic',FCKLang.Italic,null,null,false,true,21);break;case 'Underline':B=new FCKToolbarButton('Underline',FCKLang.Underline,null,null,false,true,22);break;case 'StrikeThrough':B=new FCKToolbarButton('StrikeThrough',FCKLang.StrikeThrough,null,null,false,true,23);break;case 'Subscript':B=new FCKToolbarButton('Subscript',FCKLang.Subscript,null,null,false,true,24);break;case 'Superscript':B=new FCKToolbarButton('Superscript',FCKLang.Superscript,null,null,false,true,25);break;case 'OrderedList':B=new FCKToolbarButton('InsertOrderedList',FCKLang.NumberedListLbl,FCKLang.NumberedList,null,false,true,26);break;case 'UnorderedList':B=new FCKToolbarButton('InsertUnorderedList',FCKLang.BulletedListLbl,FCKLang.BulletedList,null,false,true,27);break;case 'Outdent':B=new FCKToolbarButton('Outdent',FCKLang.DecreaseIndent,null,null,false,true,28);break;case 'Indent':B=new FCKToolbarButton('Indent',FCKLang.IncreaseIndent,null,null,false,true,29);break;case 'Blockquote':B=new FCKToolbarButton('Blockquote',FCKLang.Blockquote,null,null,false,true,73);break;case 'Link':B=new FCKToolbarButton('Link',FCKLang.InsertLinkLbl,FCKLang.InsertLink,null,false,true,34);break;case 'Unlink':B=new FCKToolbarButton('Unlink',FCKLang.RemoveLink,null,null,false,true,35);break;case 'Anchor':B=new FCKToolbarButton('Anchor',FCKLang.Anchor,null,null,null,null,36);break;case 'Image':B=new FCKToolbarButton('Image',FCKLang.InsertImageLbl,FCKLang.InsertImage,null,false,true,37);break;case 'Flash':B=new FCKToolbarButton('Flash',FCKLang.InsertFlashLbl,FCKLang.InsertFlash,null,false,true,38);break;case 'Table':B=new FCKToolbarButton('Table',FCKLang.InsertTableLbl,FCKLang.InsertTable,null,false,true,39);break;case 'SpecialChar':B=new FCKToolbarButton('SpecialChar',FCKLang.InsertSpecialCharLbl,FCKLang.InsertSpecialChar,null,false,true,42);break;case 'Smiley':B=new FCKToolbarButton('Smiley',FCKLang.InsertSmileyLbl,FCKLang.InsertSmiley,null,false,true,41);break;case 'PageBreak':B=new FCKToolbarButton('PageBreak',FCKLang.PageBreakLbl,FCKLang.PageBreak,null,false,true,43);break;case 'Rule':B=new FCKToolbarButton('Rule',FCKLang.InsertLineLbl,FCKLang.InsertLine,null,false,true,40);break;case 'JustifyLeft':B=new FCKToolbarButton('JustifyLeft',FCKLang.LeftJustify,null,null,false,true,30);break;case 'JustifyCenter':B=new FCKToolbarButton('JustifyCenter',FCKLang.CenterJustify,null,null,false,true,31);break;case 'JustifyRight':B=new FCKToolbarButton('JustifyRight',FCKLang.RightJustify,null,null,false,true,32);break;case 'JustifyFull':B=new FCKToolbarButton('JustifyFull',FCKLang.BlockJustify,null,null,false,true,33);break;case 'Style':B=new FCKToolbarStyleCombo();break;case 'FontName':B=new FCKToolbarFontsCombo();break;case 'FontSize':B=new FCKToolbarFontSizeCombo();break;case 'FontFormat':B=new FCKToolbarFontFormatCombo();break;case 'TextColor':B=new FCKToolbarPanelButton('TextColor',FCKLang.TextColor,null,null,45);break;case 'BGColor':B=new FCKToolbarPanelButton('BGColor',FCKLang.BGColor,null,null,46);break;case 'Find':B=new FCKToolbarButton('Find',FCKLang.Find,null,null,null,null,16);break;case 'Replace':B=new FCKToolbarButton('Replace',FCKLang.Replace,null,null,null,null,17);break;case 'Form':B=new FCKToolbarButton('Form',FCKLang.Form,null,null,null,null,48);break;case 'Checkbox':B=new FCKToolbarButton('Checkbox',FCKLang.Checkbox,null,null,null,null,49);break;case 'Radio':B=new FCKToolbarButton('Radio',FCKLang.RadioButton,null,null,null,null,50);break;case 'TextField':B=new FCKToolbarButton('TextField',FCKLang.TextField,null,null,null,null,51);break;case 'Textarea':B=new FCKToolbarButton('Textarea',FCKLang.Textarea,null,null,null,null,52);break;case 'HiddenField':B=new FCKToolbarButton('HiddenField',FCKLang.HiddenField,null,null,null,null,56);break;case 'Button':B=new FCKToolbarButton('Button',FCKLang.Button,null,null,null,null,54);break;case 'Select':B=new FCKToolbarButton('Select',FCKLang.SelectionField,null,null,null,null,53);break;case 'ImageButton':B=new FCKToolbarButton('ImageButton',FCKLang.ImageButton,null,null,null,null,55);break;case 'ShowBlocks':B=new FCKToolbarButton('ShowBlocks',FCKLang.ShowBlocks,null,null,null,true,72);break;default:alert(FCKLang.UnknownToolbarItem.replace(/%1/g,A));return null;};FCKToolbarItems.LoadedItems[A]=B;return B;};
+var FCKToolbarItems={};FCKToolbarItems.LoadedItems={};FCKToolbarItems.RegisterItem=function(A,B){this.LoadedItems[A]=B;};FCKToolbarItems.GetItem=function(A){var B=FCKToolbarItems.LoadedItems[A];if (B) return B;switch (A){case 'Source':B=new FCKToolbarButton('Source',FCKLang.Source,null,2,true,true,1);break;case 'DocProps':B=new FCKToolbarButton('DocProps',FCKLang.DocProps,null,null,null,null,2);break;case 'Save':B=new FCKToolbarButton('Save',FCKLang.Save,null,null,true,null,3);break;case 'NewPage':B=new FCKToolbarButton('NewPage',FCKLang.NewPage,null,null,true,null,4);break;case 'Preview':B=new FCKToolbarButton('Preview',FCKLang.Preview,null,null,true,null,5);break;case 'Templates':B=new FCKToolbarButton('Templates',FCKLang.Templates,null,null,null,null,6);break;case 'About':B=new FCKToolbarButton('About',FCKLang.About,null,null,true,null,47);break;case 'Cut':B=new FCKToolbarButton('Cut',FCKLang.Cut,null,null,false,true,7);break;case 'Copy':B=new FCKToolbarButton('Copy',FCKLang.Copy,null,null,false,true,8);break;case 'Paste':B=new FCKToolbarButton('Paste',FCKLang.Paste,null,null,false,true,9);break;case 'PasteText':B=new FCKToolbarButton('PasteText',FCKLang.PasteText,null,null,false,true,10);break;case 'PasteWord':B=new FCKToolbarButton('PasteWord',FCKLang.PasteWord,null,null,false,true,11);break;case 'Print':B=new FCKToolbarButton('Print',FCKLang.Print,null,null,false,true,12);break;case 'SpellCheck':B=new FCKToolbarButton('SpellCheck',FCKLang.SpellCheck,null,null,null,null,13);break;case 'Undo':B=new FCKToolbarButton('Undo',FCKLang.Undo,null,null,false,true,14);break;case 'Redo':B=new FCKToolbarButton('Redo',FCKLang.Redo,null,null,false,true,15);break;case 'SelectAll':B=new FCKToolbarButton('SelectAll',FCKLang.SelectAll,null,null,true,null,18);break;case 'RemoveFormat':B=new FCKToolbarButton('RemoveFormat',FCKLang.RemoveFormat,null,null,false,true,19);break;case 'FitWindow':B=new FCKToolbarButton('FitWindow',FCKLang.FitWindow,null,null,true,true,66);break;case 'Bold':B=new FCKToolbarButton('Bold',FCKLang.Bold,null,null,false,true,20);break;case 'Italic':B=new FCKToolbarButton('Italic',FCKLang.Italic,null,null,false,true,21);break;case 'Underline':B=new FCKToolbarButton('Underline',FCKLang.Underline,null,null,false,true,22);break;case 'StrikeThrough':B=new FCKToolbarButton('StrikeThrough',FCKLang.StrikeThrough,null,null,false,true,23);break;case 'Subscript':B=new FCKToolbarButton('Subscript',FCKLang.Subscript,null,null,false,true,24);break;case 'Superscript':B=new FCKToolbarButton('Superscript',FCKLang.Superscript,null,null,false,true,25);break;case 'OrderedList':B=new FCKToolbarButton('InsertOrderedList',FCKLang.NumberedListLbl,FCKLang.NumberedList,null,false,true,26);break;case 'UnorderedList':B=new FCKToolbarButton('InsertUnorderedList',FCKLang.BulletedListLbl,FCKLang.BulletedList,null,false,true,27);break;case 'Outdent':B=new FCKToolbarButton('Outdent',FCKLang.DecreaseIndent,null,null,false,true,28);break;case 'Indent':B=new FCKToolbarButton('Indent',FCKLang.IncreaseIndent,null,null,false,true,29);break;case 'Blockquote':B=new FCKToolbarButton('Blockquote',FCKLang.Blockquote,null,null,false,true,73);break;case 'CreateDiv':B=new FCKToolbarButton('CreateDiv',FCKLang.CreateDiv,null,null,false,true,74);break;case 'Link':B=new FCKToolbarButton('Link',FCKLang.InsertLinkLbl,FCKLang.InsertLink,null,false,true,34);break;case 'Unlink':B=new FCKToolbarButton('Unlink',FCKLang.RemoveLink,null,null,false,true,35);break;case 'Anchor':B=new FCKToolbarButton('Anchor',FCKLang.Anchor,null,null,null,null,36);break;case 'Image':B=new FCKToolbarButton('Image',FCKLang.InsertImageLbl,FCKLang.InsertImage,null,false,true,37);break;case 'Flash':B=new FCKToolbarButton('Flash',FCKLang.InsertFlashLbl,FCKLang.InsertFlash,null,false,true,38);break;case 'Table':B=new FCKToolbarButton('Table',FCKLang.InsertTableLbl,FCKLang.InsertTable,null,false,true,39);break;case 'SpecialChar':B=new FCKToolbarButton('SpecialChar',FCKLang.InsertSpecialCharLbl,FCKLang.InsertSpecialChar,null,false,true,42);break;case 'Smiley':B=new FCKToolbarButton('Smiley',FCKLang.InsertSmileyLbl,FCKLang.InsertSmiley,null,false,true,41);break;case 'PageBreak':B=new FCKToolbarButton('PageBreak',FCKLang.PageBreakLbl,FCKLang.PageBreak,null,false,true,43);break;case 'Rule':B=new FCKToolbarButton('Rule',FCKLang.InsertLineLbl,FCKLang.InsertLine,null,false,true,40);break;case 'JustifyLeft':B=new FCKToolbarButton('JustifyLeft',FCKLang.LeftJustify,null,null,false,true,30);break;case 'JustifyCenter':B=new FCKToolbarButton('JustifyCenter',FCKLang.CenterJustify,null,null,false,true,31);break;case 'JustifyRight':B=new FCKToolbarButton('JustifyRight',FCKLang.RightJustify,null,null,false,true,32);break;case 'JustifyFull':B=new FCKToolbarButton('JustifyFull',FCKLang.BlockJustify,null,null,false,true,33);break;case 'Style':B=new FCKToolbarStyleCombo();break;case 'FontName':B=new FCKToolbarFontsCombo();break;case 'FontSize':B=new FCKToolbarFontSizeCombo();break;case 'FontFormat':B=new FCKToolbarFontFormatCombo();break;case 'TextColor':B=new FCKToolbarPanelButton('TextColor',FCKLang.TextColor,null,null,45);break;case 'BGColor':B=new FCKToolbarPanelButton('BGColor',FCKLang.BGColor,null,null,46);break;case 'Find':B=new FCKToolbarButton('Find',FCKLang.Find,null,null,null,null,16);break;case 'Replace':B=new FCKToolbarButton('Replace',FCKLang.Replace,null,null,null,null,17);break;case 'Form':B=new FCKToolbarButton('Form',FCKLang.Form,null,null,null,null,48);break;case 'Checkbox':B=new FCKToolbarButton('Checkbox',FCKLang.Checkbox,null,null,null,null,49);break;case 'Radio':B=new FCKToolbarButton('Radio',FCKLang.RadioButton,null,null,null,null,50);break;case 'TextField':B=new FCKToolbarButton('TextField',FCKLang.TextField,null,null,null,null,51);break;case 'Textarea':B=new FCKToolbarButton('Textarea',FCKLang.Textarea,null,null,null,null,52);break;case 'HiddenField':B=new FCKToolbarButton('HiddenField',FCKLang.HiddenField,null,null,null,null,56);break;case 'Button':B=new FCKToolbarButton('Button',FCKLang.Button,null,null,null,null,54);break;case 'Select':B=new FCKToolbarButton('Select',FCKLang.SelectionField,null,null,null,null,53);break;case 'ImageButton':B=new FCKToolbarButton('ImageButton',FCKLang.ImageButton,null,null,null,null,55);break;case 'ShowBlocks':B=new FCKToolbarButton('ShowBlocks',FCKLang.ShowBlocks,null,null,null,true,72);break;default:alert(FCKLang.UnknownToolbarItem.replace(/%1/g,A));return null;};FCKToolbarItems.LoadedItems[A]=B;return B;};
 var FCKToolbar=function(){this.Items=[];};FCKToolbar.prototype.AddItem=function(A){return this.Items[this.Items.length]=A;};FCKToolbar.prototype.AddButton=function(A,B,C,D,E,F){if (typeof(D)=='number') D=[this.DefaultIconsStrip,this.DefaultIconSize,D];var G=new FCKToolbarButtonUI(A,B,C,D,E,F);G._FCKToolbar=this;G.OnClick=FCKToolbar_OnItemClick;return this.AddItem(G);};function FCKToolbar_OnItemClick(A){var B=A._FCKToolbar;if (B.OnItemClick) B.OnItemClick(B,A);};FCKToolbar.prototype.AddSeparator=function(){this.AddItem(new FCKToolbarSeparator());};FCKToolbar.prototype.Create=function(A){var B=FCKTools.GetElementDocument(A);var e=B.createElement('table');e.className='TB_Toolbar';e.style.styleFloat=e.style.cssFloat=(FCKLang.Dir=='ltr'?'left':'right');e.dir=FCKLang.Dir;e.cellPadding=0;e.cellSpacing=0;var C=e.insertRow(-1);var D;if (!this.HideStart){D=C.insertCell(-1);D.appendChild(B.createElement('div')).className='TB_Start';};for (var i=0;i<this.Items.length;i++){this.Items[i].Create(C.insertCell(-1));};if (!this.HideEnd){D=C.insertCell(-1);D.appendChild(B.createElement('div')).className='TB_End';};A.appendChild(e);};var FCKToolbarSeparator=function(){};FCKToolbarSeparator.prototype.Create=function(A){FCKTools.AppendElement(A,'div').className='TB_Separator';};
 var FCKToolbarBreak=function(){};FCKToolbarBreak.prototype.Create=function(A){var B=A.ownerDocument.createElement('div');B.style.clear=B.style.cssFloat=FCKLang.Dir=='rtl'?'right':'left';A.appendChild(B);};
 function FCKToolbarSet_Create(A){var B;var C=A||FCKConfig.ToolbarLocation;switch (C){case 'In':document.getElementById('xToolbarRow').style.display='';B=new FCKToolbarSet(document);break;case 'None':B=new FCKToolbarSet(document);break;default:FCK.Events.AttachEvent('OnBlur',FCK_OnBlur);FCK.Events.AttachEvent('OnFocus',FCK_OnFocus);var D;var E=C.match(/^Out:(.+)\((\w+)\)$/);if (E){if (FCKBrowserInfo.IsAIR) FCKAdobeAIR.ToolbarSet_GetOutElement(window,E);else D=eval('parent.'+E[1]).document.getElementById(E[2]);}else{E=C.match(/^Out:(\w+)$/);if (E) D=parent.document.getElementById(E[1]);};if (!D){alert('Invalid value for "ToolbarLocation"');return arguments.callee('In');};B=D.__FCKToolbarSet;if (B) break;var F=FCKTools.GetElementDocument(D).createElement('iframe');F.src='javascript:void(0)';F.frameBorder=0;F.width='100%';F.height='10';D.appendChild(F);F.unselectable='on';var G=F.contentWindow.document;var H='';if (FCKBrowserInfo.IsSafari) H='<base href="'+window.document.location+'">';G.open();G.write('<html><head>'+H+'<script type="text/javascript"> var adjust = function() { window.frameElement.height = document.body.scrollHeight ; }; window.onresize = window.onload = function(){var timer = null;var lastHeight = -1;var lastChange = 0;var poller = function(){var currentHeight = document.body.scrollHeight || 0;var currentTime = (new Date()).getTime();if (currentHeight != lastHeight){lastChange = currentTime;adjust();lastHeight = document.body.scrollHeight;}if (lastChange < currentTime - 1000) clearInterval(timer);};timer = setInterval(poller, 100);}</script></head><body style="overflow: hidden">'+document.getElementById('xToolbarSpace').innerHTML+'</body></html>');G.close();if(FCKBrowserInfo.IsAIR) FCKAdobeAIR.ToolbarSet_InitOutFrame(G);FCKTools.AddEventListener(G,'contextmenu',FCKTools.CancelEvent);FCKTools.AppendStyleSheet(G,FCKConfig.SkinEditorCSS);B=D.__FCKToolbarSet=new FCKToolbarSet(G);B._IFrame=F;if (FCK.IECleanup) FCK.IECleanup.AddItem(D,FCKToolbarSet_Target_Cleanup);};B.CurrentInstance=FCK;if (!B.ToolbarItems) B.ToolbarItems=FCKToolbarItems;FCK.AttachToOnSelectionChange(B.RefreshItemsState);return B;};function FCK_OnBlur(A){var B=A.ToolbarSet;if (B.CurrentInstance==A) B.Disable();};function FCK_OnFocus(A){var B=A.ToolbarSet;var C=A||FCK;B.CurrentInstance.FocusManager.RemoveWindow(B._IFrame.contentWindow);B.CurrentInstance=C;C.FocusManager.AddWindow(B._IFrame.contentWindow,true);B.Enable();};function FCKToolbarSet_Cleanup(){this._TargetElement=null;this._IFrame=null;};function FCKToolbarSet_Target_Cleanup(){this.__FCKToolbarSet=null;};var FCKToolbarSet=function(A){this._Document=A;this._TargetElement=A.getElementById('xToolbar');var B=A.getElementById('xExpandHandle');var C=A.getElementById('xCollapseHandle');B.title=FCKLang.ToolbarExpand;FCKTools.AddEventListener(B,'click',FCKToolbarSet_Expand_OnClick);C.title=FCKLang.ToolbarCollapse;FCKTools.AddEventListener(C,'click',FCKToolbarSet_Collapse_OnClick);if (!FCKConfig.ToolbarCanCollapse||FCKConfig.ToolbarStartExpanded) this.Expand();else this.Collapse();C.style.display=FCKConfig.ToolbarCanCollapse?'':'none';if (FCKConfig.ToolbarCanCollapse) C.style.display='';else A.getElementById('xTBLeftBorder').style.display='';this.Toolbars=[];this.IsLoaded=false;if (FCK.IECleanup) FCK.IECleanup.AddItem(this,FCKToolbarSet_Cleanup);};function FCKToolbarSet_Expand_OnClick(){FCK.ToolbarSet.Expand();};function FCKToolbarSet_Collapse_OnClick(){FCK.ToolbarSet.Collapse();};FCKToolbarSet.prototype.Expand=function(){this._ChangeVisibility(false);};FCKToolbarSet.prototype.Collapse=function(){this._ChangeVisibility(true);};FCKToolbarSet.prototype._ChangeVisibility=function(A){this._Document.getElementById('xCollapsed').style.display=A?'':'none';this._Document.getElementById('xExpanded').style.display=A?'none':'';if (FCKBrowserInfo.IsGecko){FCKTools.RunFunction(window.onresize);}};FCKToolbarSet.prototype.Load=function(A){this.Name=A;this.Items=[];this.ItemsWysiwygOnly=[];this.ItemsContextSensitive=[];this._TargetElement.innerHTML='';var B=FCKConfig.ToolbarSets[A];if (!B){alert(FCKLang.UnknownToolbarSet.replace(/%1/g,A));return;};this.Toolbars=[];for (var x=0;x<B.length;x++){var C=B[x];if (!C) continue;var D;if (typeof(C)=='string'){if (C=='/') D=new FCKToolbarBreak();}else{D=new FCKToolbar();for (var j=0;j<C.length;j++){var E=C[j];if (E=='-') D.AddSeparator();else{var F=FCKToolbarItems.GetItem(E);if (F){D.AddItem(F);this.Items.push(F);if (!F.SourceView) this.ItemsWysiwygOnly.push(F);if (F.ContextSensitive) this.ItemsContextSensitive.push(F);}}}};D.Create(this._TargetElement);this.Toolbars[this.Toolbars.length]=D;};FCKTools.DisableSelection(this._Document.getElementById('xCollapseHandle').parentNode);if (FCK.Status!=2) FCK.Events.AttachEvent('OnStatusChange',this.RefreshModeState);else this.RefreshModeState();this.IsLoaded=true;this.IsEnabled=true;FCKTools.RunFunction(this.OnLoad);};FCKToolbarSet.prototype.Enable=function(){if (this.IsEnabled) return;this.IsEnabled=true;var A=this.Items;for (var i=0;i<A.length;i++) A[i].RefreshState();};FCKToolbarSet.prototype.Disable=function(){if (!this.IsEnabled) return;this.IsEnabled=false;var A=this.Items;for (var i=0;i<A.length;i++) A[i].Disable();};FCKToolbarSet.prototype.RefreshModeState=function(A){if (FCK.Status!=2) return;var B=A?A.ToolbarSet:this;var C=B.ItemsWysiwygOnly;if (FCK.EditMode==0){for (var i=0;i<C.length;i++) C[i].Enable();B.RefreshItemsState(A);}else{B.RefreshItemsState(A);for (var j=0;j<C.length;j++) C[j].Disable();}};FCKToolbarSet.prototype.RefreshItemsState=function(A){var B=(A?A.ToolbarSet:this).ItemsContextSensitive;for (var i=0;i<B.length;i++) B[i].RefreshState();};
-var FCKDialog=(function(){var A;var B;var C;var D=window.parent;while (D.parent&&D.parent!=D){try{if (D.parent.document.domain!=document.domain) break;if (D.parent.document.getElementsByTagName('frameset').length>0) break;}catch (e){break;};D=D.parent;};var E=D.document;var F=function(){if (!B) B=FCKConfig.FloatingPanelsZIndex+999;return++B;};var G=function(){if (!C) return;var H=FCKTools.IsStrictMode(E)?E.documentElement:E.body;FCKDomTools.SetElementStyles(C,{'width':Math.max(H.scrollWidth,H.clientWidth,E.scrollWidth||0)-1+'px','height':Math.max(H.scrollHeight,H.clientHeight,E.scrollHeight||0)-1+'px'});};var I=function(element){element.style.cssText='margin:0;padding:0;border:0;background-color:transparent;background-image:none;';};return {OpenDialog:function(dialogName,dialogTitle,dialogPage,width,height,customValue,parentWindow,resizable){if (!A) this.DisplayMainCover();var J={Title:dialogTitle,Page:dialogPage,Editor:window,CustomValue:customValue,TopWindow:D};FCK.ToolbarSet.CurrentInstance.Selection.Save();var K=FCKTools.GetViewPaneSize(D);var L=FCKTools.GetScrollPosition(D);var M=Math.max(L.Y+(K.Height-height-20)/2,0);var N=Math.max(L.X+(K.Width-width-20)/2,0);var O=E.createElement('iframe');I(O);O.src=FCKConfig.BasePath+'fckdialog.html';O.frameBorder=0;O.allowTransparency=true;FCKDomTools.SetElementStyles(O,{'position':'absolute','top':M+'px','left':N+'px','width':width+'px','height':height+'px','zIndex':F()});O._DialogArguments=J;E.body.appendChild(O);O._ParentDialog=A;A=O;},OnDialogClose:function(dialogWindow){var O=dialogWindow.frameElement;FCKDomTools.RemoveNode(O);if (O._ParentDialog){A=O._ParentDialog;O._ParentDialog.contentWindow.SetEnabled(true);}else{if (!FCKBrowserInfo.IsIE) FCK.Focus();this.HideMainCover();setTimeout(function(){ A=null;},0);FCK.ToolbarSet.CurrentInstance.Selection.Release();}},DisplayMainCover:function(){C=E.createElement('div');I(C);FCKDomTools.SetElementStyles(C,{'position':'absolute','zIndex':F(),'top':'0px','left':'0px','backgroundColor':FCKConfig.BackgroundBlockerColor});FCKDomTools.SetOpacity(C,FCKConfig.BackgroundBlockerOpacity);if (FCKBrowserInfo.IsIE&&!FCKBrowserInfo.IsIE7){var Q=E.createElement('iframe');I(Q);Q.hideFocus=true;Q.frameBorder=0;Q.src=FCKTools.GetVoidUrl();FCKDomTools.SetElementStyles(Q,{'width':'100%','height':'100%','position':'absolute','left':'0px','top':'0px','filter':'progid:DXImageTransform.Microsoft.Alpha(opacity=0)'});C.appendChild(Q);};FCKTools.AddEventListener(D,'resize',G);G();E.body.appendChild(C);FCKFocusManager.Lock();},HideMainCover:function(){FCKDomTools.RemoveNode(C);FCKFocusManager.Unlock();},GetCover:function(){return C;}};})();
+var FCKDialog=(function(){var A;var B;var C;var D=window.parent;while (D.parent&&D.parent!=D){try{if (D.parent.document.domain!=document.domain) break;if (D.parent.document.getElementsByTagName('frameset').length>0) break;}catch (e){break;};D=D.parent;};var E=D.document;var F=function(){if (!B) B=FCKConfig.FloatingPanelsZIndex+999;return++B;};var G=function(){if (!C) return;var H=FCKTools.IsStrictMode(E)?E.documentElement:E.body;FCKDomTools.SetElementStyles(C,{'width':Math.max(H.scrollWidth,H.clientWidth,E.scrollWidth||0)-1+'px','height':Math.max(H.scrollHeight,H.clientHeight,E.scrollHeight||0)-1+'px'});};return {OpenDialog:function(dialogName,dialogTitle,dialogPage,width,height,customValue,parentWindow,resizable){if (!A) this.DisplayMainCover();var I={Title:dialogTitle,Page:dialogPage,Editor:window,CustomValue:customValue,TopWindow:D};FCK.ToolbarSet.CurrentInstance.Selection.Save();var J=FCKTools.GetViewPaneSize(D);var K={ 'X':0,'Y':0 };var L=FCKBrowserInfo.IsIE&&(!FCKBrowserInfo.IsIE7||!FCKTools.IsStrictMode(D.document));if (L) K=FCKTools.GetScrollPosition(D);var M=Math.max(K.Y+(J.Height-height-20)/2,0);var N=Math.max(K.X+(J.Width-width-20)/2,0);var O=E.createElement('iframe');FCKTools.ResetStyles(O);O.src=FCKConfig.BasePath+'fckdialog.html';O.frameBorder=0;O.allowTransparency=true;FCKDomTools.SetElementStyles(O,{'position':(L)?'absolute':'fixed','top':M+'px','left':N+'px','width':width+'px','height':height+'px','zIndex':F()});O._DialogArguments=I;E.body.appendChild(O);O._ParentDialog=A;A=O;},OnDialogClose:function(dialogWindow){var O=dialogWindow.frameElement;FCKDomTools.RemoveNode(O);if (O._ParentDialog){A=O._ParentDialog;O._ParentDialog.contentWindow.SetEnabled(true);}else{if (!FCKBrowserInfo.IsIE) FCK.Focus();this.HideMainCover();setTimeout(function(){ A=null;},0);FCK.ToolbarSet.CurrentInstance.Selection.Release();}},DisplayMainCover:function(){C=E.createElement('div');FCKTools.ResetStyles(C);FCKDomTools.SetElementStyles(C,{'position':'absolute','zIndex':F(),'top':'0px','left':'0px','backgroundColor':FCKConfig.BackgroundBlockerColor});FCKDomTools.SetOpacity(C,FCKConfig.BackgroundBlockerOpacity);if (FCKBrowserInfo.IsIE&&!FCKBrowserInfo.IsIE7){var Q=E.createElement('iframe');FCKTools.ResetStyles(Q);Q.hideFocus=true;Q.frameBorder=0;Q.src=FCKTools.GetVoidUrl();FCKDomTools.SetElementStyles(Q,{'width':'100%','height':'100%','position':'absolute','left':'0px','top':'0px','filter':'progid:DXImageTransform.Microsoft.Alpha(opacity=0)'});C.appendChild(Q);};FCKTools.AddEventListener(D,'resize',G);G();E.body.appendChild(C);FCKFocusManager.Lock();var R=FCK.ToolbarSet.CurrentInstance.GetInstanceObject('frameElement');R._fck_originalTabIndex=R.tabIndex;R.tabIndex=-1;},HideMainCover:function(){FCKDomTools.RemoveNode(C);FCKFocusManager.Unlock();var R=FCK.ToolbarSet.CurrentInstance.GetInstanceObject('frameElement');R.tabIndex=R._fck_originalTabIndex;FCKDomTools.ClearElementJSProperty(R,'_fck_originalTabIndex');},GetCover:function(){return C;}};})();
 var FCKMenuItem=function(A,B,C,D,E,F){this.Name=B;this.Label=C||B;this.IsDisabled=E;this.Icon=new FCKIcon(D);this.SubMenu=new FCKMenuBlockPanel();this.SubMenu.Parent=A;this.SubMenu.OnClick=FCKTools.CreateEventListener(FCKMenuItem_SubMenu_OnClick,this);this.CustomData=F;if (FCK.IECleanup) FCK.IECleanup.AddItem(this,FCKMenuItem_Cleanup);};FCKMenuItem.prototype.AddItem=function(A,B,C,D,E){this.HasSubMenu=true;return this.SubMenu.AddItem(A,B,C,D,E);};FCKMenuItem.prototype.AddSeparator=function(){this.SubMenu.AddSeparator();};FCKMenuItem.prototype.Create=function(A){var B=this.HasSubMenu;var C=FCKTools.GetElementDocument(A);var r=this.MainElement=A.insertRow(-1);r.className=this.IsDisabled?'MN_Item_Disabled':'MN_Item';if (!this.IsDisabled){FCKTools.AddEventListenerEx(r,'mouseover',FCKMenuItem_OnMouseOver,[this]);FCKTools.AddEventListenerEx(r,'click',FCKMenuItem_OnClick,[this]);if (!B) FCKTools.AddEventListenerEx(r,'mouseout',FCKMenuItem_OnMouseOut,[this]);};var D=r.insertCell(-1);D.className='MN_Icon';D.appendChild(this.Icon.CreateIconElement(C));D=r.insertCell(-1);D.className='MN_Label';D.noWrap=true;D.appendChild(C.createTextNode(this.Label));D=r.insertCell(-1);if (B){D.className='MN_Arrow';var E=D.appendChild(C.createElement('IMG'));E.src=FCK_IMAGES_PATH+'arrow_'+FCKLang.Dir+'.gif';E.width=4;E.height=7;this.SubMenu.Create();this.SubMenu.Panel.OnHide=FCKTools.CreateEventListener(FCKMenuItem_SubMenu_OnHide,this);}};FCKMenuItem.prototype.Activate=function(){this.MainElement.className='MN_Item_Over';if (this.HasSubMenu){this.SubMenu.Show(this.MainElement.offsetWidth+2,-2,this.MainElement);};FCKTools.RunFunction(this.OnActivate,this);};FCKMenuItem.prototype.Deactivate=function(){this.MainElement.className='MN_Item';if (this.HasSubMenu) this.SubMenu.Hide();};function FCKMenuItem_SubMenu_OnClick(A,B){FCKTools.RunFunction(B.OnClick,B,[A]);};function FCKMenuItem_SubMenu_OnHide(A){A.Deactivate();};function FCKMenuItem_OnClick(A,B){if (B.HasSubMenu) B.Activate();else{B.Deactivate();FCKTools.RunFunction(B.OnClick,B,[B]);}};function FCKMenuItem_OnMouseOver(A,B){B.Activate();};function FCKMenuItem_OnMouseOut(A,B){B.Deactivate();};function FCKMenuItem_Cleanup(){this.MainElement=null;};
 var FCKMenuBlock=function(){this._Items=[];};FCKMenuBlock.prototype.Count=function(){return this._Items.length;};FCKMenuBlock.prototype.AddItem=function(A,B,C,D,E){var F=new FCKMenuItem(this,A,B,C,D,E);F.OnClick=FCKTools.CreateEventListener(FCKMenuBlock_Item_OnClick,this);F.OnActivate=FCKTools.CreateEventListener(FCKMenuBlock_Item_OnActivate,this);this._Items.push(F);return F;};FCKMenuBlock.prototype.AddSeparator=function(){this._Items.push(new FCKMenuSeparator());};FCKMenuBlock.prototype.RemoveAllItems=function(){this._Items=[];var A=this._ItemsTable;if (A){while (A.rows.length>0) A.deleteRow(0);}};FCKMenuBlock.prototype.Create=function(A){if (!this._ItemsTable){if (FCK.IECleanup) FCK.IECleanup.AddItem(this,FCKMenuBlock_Cleanup);this._Window=FCKTools.GetElementWindow(A);var B=FCKTools.GetElementDocument(A);var C=A.appendChild(B.createElement('table'));C.cellPadding=0;C.cellSpacing=0;FCKTools.DisableSelection(C);var D=C.insertRow(-1).insertCell(-1);D.className='MN_Menu';var E=this._ItemsTable=D.appendChild(B.createElement('table'));E.cellPadding=0;E.cellSpacing=0;};for (var i=0;i<this._Items.length;i++) this._Items[i].Create(this._ItemsTable);};function FCKMenuBlock_Item_OnClick(A,B){if (B.Hide) B.Hide();FCKTools.RunFunction(B.OnClick,B,[A]);};function FCKMenuBlock_Item_OnActivate(A){var B=A._ActiveItem;if (B&&B!=this){if (!FCKBrowserInfo.IsIE&&B.HasSubMenu&&!this.HasSubMenu){A._Window.focus();A.Panel.HasFocus=true;};B.Deactivate();};A._ActiveItem=this;};function FCKMenuBlock_Cleanup(){this._Window=null;this._ItemsTable=null;};var FCKMenuSeparator=function(){};FCKMenuSeparator.prototype.Create=function(A){var B=FCKTools.GetElementDocument(A);var r=A.insertRow(-1);var C=r.insertCell(-1);C.className='MN_Separator MN_Icon';C=r.insertCell(-1);C.className='MN_Separator';C.appendChild(B.createElement('DIV')).className='MN_Separator_Line';C=r.insertCell(-1);C.className='MN_Separator';C.appendChild(B.createElement('DIV')).className='MN_Separator_Line';};
 var FCKMenuBlockPanel=function(){FCKMenuBlock.call(this);};FCKMenuBlockPanel.prototype=new FCKMenuBlock();FCKMenuBlockPanel.prototype.Create=function(){var A=this.Panel=(this.Parent&&this.Parent.Panel?this.Parent.Panel.CreateChildPanel():new FCKPanel());A.AppendStyleSheet(FCKConfig.SkinEditorCSS);FCKMenuBlock.prototype.Create.call(this,A.MainNode);};FCKMenuBlockPanel.prototype.Show=function(x,y,A){if (!this.Panel.CheckIsOpened()) this.Panel.Show(x,y,A);};FCKMenuBlockPanel.prototype.Hide=function(){if (this.Panel.CheckIsOpened()) this.Panel.Hide();};
-var FCKContextMenu=function(A,B){this.CtrlDisable=false;var C=this._Panel=new FCKPanel(A);C.AppendStyleSheet(FCKConfig.SkinEditorCSS);C.IsContextMenu=true;if (FCKBrowserInfo.IsGecko) C.Document.addEventListener('draggesture',function(e) {e.preventDefault();return false;},true);var D=this._MenuBlock=new FCKMenuBlock();D.Panel=C;D.OnClick=FCKTools.CreateEventListener(FCKContextMenu_MenuBlock_OnClick,this);this._Redraw=true;};FCKContextMenu.prototype.SetMouseClickWindow=function(A){if (!FCKBrowserInfo.IsIE){this._Document=A.document;if (FCKBrowserInfo.IsOpera&&!('oncontextmenu' in document.createElement('foo'))){this._Document.addEventListener('mousedown',FCKContextMenu_Document_OnMouseDown,false);this._Document.addEventListener('mouseup',FCKContextMenu_Document_OnMouseUp,false);};this._Document.addEventListener('contextmenu',FCKContextMenu_Document_OnContextMenu,false);}};FCKContextMenu.prototype.AddItem=function(A,B,C,D,E){var F=this._MenuBlock.AddItem(A,B,C,D,E);this._Redraw=true;return F;};FCKContextMenu.prototype.AddSeparator=function(){this._MenuBlock.AddSeparator();this._Redraw=true;};FCKContextMenu.prototype.RemoveAllItems=function(){this._MenuBlock.RemoveAllItems();this._Redraw=true;};FCKContextMenu.prototype.AttachToElement=function(A){if (FCKBrowserInfo.IsIE) FCKTools.AddEventListenerEx(A,'contextmenu',FCKContextMenu_AttachedElement_OnContextMenu,this);else A._FCKContextMenu=this;};function FCKContextMenu_Document_OnContextMenu(e){var A=e.target;while (A){if (A._FCKContextMenu){if (A._FCKContextMenu.CtrlDisable&&(e.ctrlKey||e.metaKey)) return true;FCKTools.CancelEvent(e);FCKContextMenu_AttachedElement_OnContextMenu(e,A._FCKContextMenu,A);return false;};A=A.parentNode;};return true;};var FCKContextMenu_OverrideButton;function FCKContextMenu_Document_OnMouseDown(e){if(!e||e.button!=2) return false;var A=e.target;while (A){if (A._FCKContextMenu){if (A._FCKContextMenu.CtrlDisable&&(e.ctrlKey||e.metaKey)) return true;var B=FCKContextMenu_OverrideButton;if(!B){var C=FCKTools.GetElementDocument(e.target);B=FCKContextMenu_OverrideButton=C.createElement('input');B.type='button';var D=C.createElement('p');C.body.appendChild(D);D.appendChild(B);};B.style.cssText='position:absolute;top:'+(e.clientY-2)+'px;left:'+(e.clientX-2)+'px;width:5px;height:5px;opacity:0.01';};A=A.parentNode;};return false;};function FCKContextMenu_Document_OnMouseUp(e){var A=FCKContextMenu_OverrideButton;if (A){var B=A.parentNode;B.parentNode.removeChild(B);FCKContextMenu_OverrideButton=undefined;if(e&&e.button==2){FCKContextMenu_Document_OnContextMenu(e);return false;}};return true;};function FCKContextMenu_AttachedElement_OnContextMenu(A,B,C){if (B.CtrlDisable&&(A.ctrlKey||A.metaKey)) return true;var D=C||this;if (B.OnBeforeOpen) B.OnBeforeOpen.call(B,D);if (B._MenuBlock.Count()==0) return false;if (B._Redraw){B._MenuBlock.Create(B._Panel.MainNode);B._Redraw=false;};FCKTools.DisableSelection(B._Panel.Document.body);var x=0;var y=0;if (FCKBrowserInfo.IsIE){x=A.screenX;y=A.screenY;}else if (FCKBrowserInfo.IsSafari){x=A.clientX;y=A.clientY;}else{x=A.pageX;y=A.pageY;};B._Panel.Show(x,y,A.currentTarget||null);return false;};function FCKContextMenu_MenuBlock_OnClick(A,B){B._Panel.Hide();FCKTools.RunFunction(B.OnItemClick,B,A);};
-FCK.ContextMenu={};FCK.ContextMenu.Listeners=[];FCK.ContextMenu.RegisterListener=function(A){if (A) this.Listeners.push(A);};function FCK_ContextMenu_Init(){var A=FCK.ContextMenu._InnerContextMenu=new FCKContextMenu(FCKBrowserInfo.IsIE?window:window.parent,FCKLang.Dir);A.CtrlDisable=FCKConfig.BrowserContextMenuOnCtrl;A.OnBeforeOpen=FCK_ContextMenu_OnBeforeOpen;A.OnItemClick=FCK_ContextMenu_OnItemClick;var B=FCK.ContextMenu;for (var i=0;i<FCKConfig.ContextMenu.length;i++) B.RegisterListener(FCK_ContextMenu_GetListener(FCKConfig.ContextMenu[i]));};function FCK_ContextMenu_GetListener(A){switch (A){case 'Generic':return {AddItems:function(menu,tag,tagName){menu.AddItem('Cut',FCKLang.Cut,7,FCKCommands.GetCommand('Cut').GetState()==-1);menu.AddItem('Copy',FCKLang.Copy,8,FCKCommands.GetCommand('Copy').GetState()==-1);menu.AddItem('Paste',FCKLang.Paste,9,FCKCommands.GetCommand('Paste').GetState()==-1);}};case 'Table':return {AddItems:function(menu,tag,tagName){var B=(tagName=='TABLE');var C=(!B&&FCKSelection.HasAncestorNode('TABLE'));if (C){menu.AddSeparator();var D=menu.AddItem('Cell',FCKLang.CellCM);D.AddItem('TableInsertCellBefore',FCKLang.InsertCellBefore,69);D.AddItem('TableInsertCellAfter',FCKLang.InsertCellAfter,58);D.AddItem('TableDeleteCells',FCKLang.DeleteCells,59);if (FCKBrowserInfo.IsGecko) D.AddItem('TableMergeCells',FCKLang.MergeCells,60,FCKCommands.GetCommand('TableMergeCells').GetState()==-1);else{D.AddItem('TableMergeRight',FCKLang.MergeRight,60,FCKCommands.GetCommand('TableMergeRight').GetState()==-1);D.AddItem('TableMergeDown',FCKLang.MergeDown,60,FCKCommands.GetCommand('TableMergeDown').GetState()==-1);};D.AddItem('TableHorizontalSplitCell',FCKLang.HorizontalSplitCell,61,FCKCommands.GetCommand('TableHorizontalSplitCell').GetState()==-1);D.AddItem('TableVerticalSplitCell',FCKLang.VerticalSplitCell,61,FCKCommands.GetCommand('TableVerticalSplitCell').GetState()==-1);D.AddSeparator();D.AddItem('TableCellProp',FCKLang.CellProperties,57,FCKCommands.GetCommand('TableCellProp').GetState()==-1);menu.AddSeparator();D=menu.AddItem('Row',FCKLang.RowCM);D.AddItem('TableInsertRowBefore',FCKLang.InsertRowBefore,70);D.AddItem('TableInsertRowAfter',FCKLang.InsertRowAfter,62);D.AddItem('TableDeleteRows',FCKLang.DeleteRows,63);menu.AddSeparator();D=menu.AddItem('Column',FCKLang.ColumnCM);D.AddItem('TableInsertColumnBefore',FCKLang.InsertColumnBefore,71);D.AddItem('TableInsertColumnAfter',FCKLang.InsertColumnAfter,64);D.AddItem('TableDeleteColumns',FCKLang.DeleteColumns,65);};if (B||C){menu.AddSeparator();menu.AddItem('TableDelete',FCKLang.TableDelete);menu.AddItem('TableProp',FCKLang.TableProperties,39);}}};case 'Link':return {AddItems:function(menu,tag,tagName){var E=(tagName=='A'||FCKSelection.HasAncestorNode('A'));if (E||FCK.GetNamedCommandState('Unlink')!=-1){var F=FCKSelection.MoveToAncestorNode('A');var G=(F&&F.name.length>0&&F.href.length==0);if (G) return;menu.AddSeparator();if (E) menu.AddItem('Link',FCKLang.EditLink,34);menu.AddItem('Unlink',FCKLang.RemoveLink,35);}}};case 'Image':return {AddItems:function(menu,tag,tagName){if (tagName=='IMG'&&!tag.getAttribute('_fckfakelement')){menu.AddSeparator();menu.AddItem('Image',FCKLang.ImageProperties,37);}}};case 'Anchor':return {AddItems:function(menu,tag,tagName){var F=FCKSelection.MoveToAncestorNode('A');var G=(F&&F.name.length>0);if (G||(tagName=='IMG'&&tag.getAttribute('_fckanchor'))){menu.AddSeparator();menu.AddItem('Anchor',FCKLang.AnchorProp,36);menu.AddItem('AnchorDelete',FCKLang.AnchorDelete);}}};case 'Flash':return {AddItems:function(menu,tag,tagName){if (tagName=='IMG'&&tag.getAttribute('_fckflash')){menu.AddSeparator();menu.AddItem('Flash',FCKLang.FlashProperties,38);}}};case 'Form':return {AddItems:function(menu,tag,tagName){if (FCKSelection.HasAncestorNode('FORM')){menu.AddSeparator();menu.AddItem('Form',FCKLang.FormProp,48);}}};case 'Checkbox':return {AddItems:function(menu,tag,tagName){if (tagName=='INPUT'&&tag.type=='checkbox'){menu.AddSeparator();menu.AddItem('Checkbox',FCKLang.CheckboxProp,49);}}};case 'Radio':return {AddItems:function(menu,tag,tagName){if (tagName=='INPUT'&&tag.type=='radio'){menu.AddSeparator();menu.AddItem('Radio',FCKLang.RadioButtonProp,50);}}};case 'TextField':return {AddItems:function(menu,tag,tagName){if (tagName=='INPUT'&&(tag.type=='text'||tag.type=='password')){menu.AddSeparator();menu.AddItem('TextField',FCKLang.TextFieldProp,51);}}};case 'HiddenField':return {AddItems:function(menu,tag,tagName){if (tagName=='IMG'&&tag.getAttribute('_fckinputhidden')){menu.AddSeparator();menu.AddItem('HiddenField',FCKLang.HiddenFieldProp,56);}}};case 'ImageButton':return {AddItems:function(menu,tag,tagName){if (tagName=='INPUT'&&tag.type=='image'){menu.AddSeparator();menu.AddItem('ImageButton',FCKLang.ImageButtonProp,55);}}};case 'Button':return {AddItems:function(menu,tag,tagName){if (tagName=='INPUT'&&(tag.type=='button'||tag.type=='submit'||tag.type=='reset')){menu.AddSeparator();menu.AddItem('Button',FCKLang.ButtonProp,54);}}};case 'Select':return {AddItems:function(menu,tag,tagName){if (tagName=='SELECT'){menu.AddSeparator();menu.AddItem('Select',FCKLang.SelectionFieldProp,53);}}};case 'Textarea':return {AddItems:function(menu,tag,tagName){if (tagName=='TEXTAREA'){menu.AddSeparator();menu.AddItem('Textarea',FCKLang.TextareaProp,52);}}};case 'BulletedList':return {AddItems:function(menu,tag,tagName){if (FCKSelection.HasAncestorNode('UL')){menu.AddSeparator();menu.AddItem('BulletedList',FCKLang.BulletedListProp,27);}}};case 'NumberedList':return {AddItems:function(menu,tag,tagName){if (FCKSelection.HasAncestorNode('OL')){menu.AddSeparator();menu.AddItem('NumberedList',FCKLang.NumberedListProp,26);}}};};return null;};function FCK_ContextMenu_OnBeforeOpen(){FCK.Events.FireEvent('OnSelectionChange');var A,sTagName;if ((A=FCKSelection.GetSelectedElement())) sTagName=A.tagName;var B=FCK.ContextMenu._InnerContextMenu;B.RemoveAllItems();var C=FCK.ContextMenu.Listeners;for (var i=0;i<C.length;i++) C[i].AddItems(B,A,sTagName);};function FCK_ContextMenu_OnItemClick(A){FCK.Focus();FCKCommands.GetCommand(A.Name).Execute(A.CustomData);};
+var FCKContextMenu=function(A,B){this.CtrlDisable=false;var C=this._Panel=new FCKPanel(A);C.AppendStyleSheet(FCKConfig.SkinEditorCSS);C.IsContextMenu=true;if (FCKBrowserInfo.IsGecko) C.Document.addEventListener('draggesture',function(e) {e.preventDefault();return false;},true);var D=this._MenuBlock=new FCKMenuBlock();D.Panel=C;D.OnClick=FCKTools.CreateEventListener(FCKContextMenu_MenuBlock_OnClick,this);this._Redraw=true;};FCKContextMenu.prototype.SetMouseClickWindow=function(A){if (!FCKBrowserInfo.IsIE){this._Document=A.document;if (FCKBrowserInfo.IsOpera&&!('oncontextmenu' in document.createElement('foo'))){this._Document.addEventListener('mousedown',FCKContextMenu_Document_OnMouseDown,false);this._Document.addEventListener('mouseup',FCKContextMenu_Document_OnMouseUp,false);};this._Document.addEventListener('contextmenu',FCKContextMenu_Document_OnContextMenu,false);}};FCKContextMenu.prototype.AddItem=function(A,B,C,D,E){var F=this._MenuBlock.AddItem(A,B,C,D,E);this._Redraw=true;return F;};FCKContextMenu.prototype.AddSeparator=function(){this._MenuBlock.AddSeparator();this._Redraw=true;};FCKContextMenu.prototype.RemoveAllItems=function(){this._MenuBlock.RemoveAllItems();this._Redraw=true;};FCKContextMenu.prototype.AttachToElement=function(A){if (FCKBrowserInfo.IsIE) FCKTools.AddEventListenerEx(A,'contextmenu',FCKContextMenu_AttachedElement_OnContextMenu,this);else A._FCKContextMenu=this;};function FCKContextMenu_Document_OnContextMenu(e){if (FCKConfig.BrowserContextMenu) return true;var A=e.target;while (A){if (A._FCKContextMenu){if (A._FCKContextMenu.CtrlDisable&&(e.ctrlKey||e.metaKey)) return true;FCKTools.CancelEvent(e);FCKContextMenu_AttachedElement_OnContextMenu(e,A._FCKContextMenu,A);return false;};A=A.parentNode;};return true;};var FCKContextMenu_OverrideButton;function FCKContextMenu_Document_OnMouseDown(e){if(!e||e.button!=2) return false;if (FCKConfig.BrowserContextMenu) return true;var A=e.target;while (A){if (A._FCKContextMenu){if (A._FCKContextMenu.CtrlDisable&&(e.ctrlKey||e.metaKey)) return true;var B=FCKContextMenu_OverrideButton;if(!B){var C=FCKTools.GetElementDocument(e.target);B=FCKContextMenu_OverrideButton=C.createElement('input');B.type='button';var D=C.createElement('p');C.body.appendChild(D);D.appendChild(B);};B.style.cssText='position:absolute;top:'+(e.clientY-2)+'px;left:'+(e.clientX-2)+'px;width:5px;height:5px;opacity:0.01';};A=A.parentNode;};return false;};function FCKContextMenu_Document_OnMouseUp(e){if (FCKConfig.BrowserContextMenu) return true;var A=FCKContextMenu_OverrideButton;if (A){var B=A.parentNode;B.parentNode.removeChild(B);FCKContextMenu_OverrideButton=undefined;if(e&&e.button==2){FCKContextMenu_Document_OnContextMenu(e);return false;}};return true;};function FCKContextMenu_AttachedElement_OnContextMenu(A,B,C){if ((B.CtrlDisable&&(A.ctrlKey||A.metaKey))||FCKConfig.BrowserContextMenu) return true;var D=C||this;if (B.OnBeforeOpen) B.OnBeforeOpen.call(B,D);if (B._MenuBlock.Count()==0) return false;if (B._Redraw){B._MenuBlock.Create(B._Panel.MainNode);B._Redraw=false;};FCKTools.DisableSelection(B._Panel.Document.body);var x=0;var y=0;if (FCKBrowserInfo.IsIE){x=A.screenX;y=A.screenY;}else if (FCKBrowserInfo.IsSafari){x=A.clientX;y=A.clientY;}else{x=A.pageX;y=A.pageY;};B._Panel.Show(x,y,A.currentTarget||null);return false;};function FCKContextMenu_MenuBlock_OnClick(A,B){B._Panel.Hide();FCKTools.RunFunction(B.OnItemClick,B,A);};
+FCK.ContextMenu={};FCK.ContextMenu.Listeners=[];FCK.ContextMenu.RegisterListener=function(A){if (A) this.Listeners.push(A);};function FCK_ContextMenu_Init(){var A=FCK.ContextMenu._InnerContextMenu=new FCKContextMenu(FCKBrowserInfo.IsIE?window:window.parent,FCKLang.Dir);A.CtrlDisable=FCKConfig.BrowserContextMenuOnCtrl;A.OnBeforeOpen=FCK_ContextMenu_OnBeforeOpen;A.OnItemClick=FCK_ContextMenu_OnItemClick;var B=FCK.ContextMenu;for (var i=0;i<FCKConfig.ContextMenu.length;i++) B.RegisterListener(FCK_ContextMenu_GetListener(FCKConfig.ContextMenu[i]));};function FCK_ContextMenu_GetListener(A){switch (A){case 'Generic':return {AddItems:function(menu,tag,tagName){menu.AddItem('Cut',FCKLang.Cut,7,FCKCommands.GetCommand('Cut').GetState()==-1);menu.AddItem('Copy',FCKLang.Copy,8,FCKCommands.GetCommand('Copy').GetState()==-1);menu.AddItem('Paste',FCKLang.Paste,9,FCKCommands.GetCommand('Paste').GetState()==-1);}};case 'Table':return {AddItems:function(menu,tag,tagName){var B=(tagName=='TABLE');var C=(!B&&FCKSelection.HasAncestorNode('TABLE'));if (C){menu.AddSeparator();var D=menu.AddItem('Cell',FCKLang.CellCM);D.AddItem('TableInsertCellBefore',FCKLang.InsertCellBefore,69);D.AddItem('TableInsertCellAfter',FCKLang.InsertCellAfter,58);D.AddItem('TableDeleteCells',FCKLang.DeleteCells,59);if (FCKBrowserInfo.IsGecko) D.AddItem('TableMergeCells',FCKLang.MergeCells,60,FCKCommands.GetCommand('TableMergeCells').GetState()==-1);else{D.AddItem('TableMergeRight',FCKLang.MergeRight,60,FCKCommands.GetCommand('TableMergeRight').GetState()==-1);D.AddItem('TableMergeDown',FCKLang.MergeDown,60,FCKCommands.GetCommand('TableMergeDown').GetState()==-1);};D.AddItem('TableHorizontalSplitCell',FCKLang.HorizontalSplitCell,61,FCKCommands.GetCommand('TableHorizontalSplitCell').GetState()==-1);D.AddItem('TableVerticalSplitCell',FCKLang.VerticalSplitCell,61,FCKCommands.GetCommand('TableVerticalSplitCell').GetState()==-1);D.AddSeparator();D.AddItem('TableCellProp',FCKLang.CellProperties,57,FCKCommands.GetCommand('TableCellProp').GetState()==-1);menu.AddSeparator();D=menu.AddItem('Row',FCKLang.RowCM);D.AddItem('TableInsertRowBefore',FCKLang.InsertRowBefore,70);D.AddItem('TableInsertRowAfter',FCKLang.InsertRowAfter,62);D.AddItem('TableDeleteRows',FCKLang.DeleteRows,63);menu.AddSeparator();D=menu.AddItem('Column',FCKLang.ColumnCM);D.AddItem('TableInsertColumnBefore',FCKLang.InsertColumnBefore,71);D.AddItem('TableInsertColumnAfter',FCKLang.InsertColumnAfter,64);D.AddItem('TableDeleteColumns',FCKLang.DeleteColumns,65);};if (B||C){menu.AddSeparator();menu.AddItem('TableDelete',FCKLang.TableDelete);menu.AddItem('TableProp',FCKLang.TableProperties,39);}}};case 'Link':return {AddItems:function(menu,tag,tagName){var E=(tagName=='A'||FCKSelection.HasAncestorNode('A'));if (E||FCK.GetNamedCommandState('Unlink')!=-1){var F=FCKSelection.MoveToAncestorNode('A');var G=(F&&F.name.length>0&&F.href.length==0);if (G) return;menu.AddSeparator();menu.AddItem('VisitLink',FCKLang.VisitLink);menu.AddSeparator();if (E) menu.AddItem('Link',FCKLang.EditLink,34);menu.AddItem('Unlink',FCKLang.RemoveLink,35);}}};case 'Image':return {AddItems:function(menu,tag,tagName){if (tagName=='IMG'&&!tag.getAttribute('_fckfakelement')){menu.AddSeparator();menu.AddItem('Image',FCKLang.ImageProperties,37);}}};case 'Anchor':return {AddItems:function(menu,tag,tagName){var F=FCKSelection.MoveToAncestorNode('A');var G=(F&&F.name.length>0);if (G||(tagName=='IMG'&&tag.getAttribute('_fckanchor'))){menu.AddSeparator();menu.AddItem('Anchor',FCKLang.AnchorProp,36);menu.AddItem('AnchorDelete',FCKLang.AnchorDelete);}}};case 'Flash':return {AddItems:function(menu,tag,tagName){if (tagName=='IMG'&&tag.getAttribute('_fckflash')){menu.AddSeparator();menu.AddItem('Flash',FCKLang.FlashProperties,38);}}};case 'Form':return {AddItems:function(menu,tag,tagName){if (FCKSelection.HasAncestorNode('FORM')){menu.AddSeparator();menu.AddItem('Form',FCKLang.FormProp,48);}}};case 'Checkbox':return {AddItems:function(menu,tag,tagName){if (tagName=='INPUT'&&tag.type=='checkbox'){menu.AddSeparator();menu.AddItem('Checkbox',FCKLang.CheckboxProp,49);}}};case 'Radio':return {AddItems:function(menu,tag,tagName){if (tagName=='INPUT'&&tag.type=='radio'){menu.AddSeparator();menu.AddItem('Radio',FCKLang.RadioButtonProp,50);}}};case 'TextField':return {AddItems:function(menu,tag,tagName){if (tagName=='INPUT'&&(tag.type=='text'||tag.type=='password')){menu.AddSeparator();menu.AddItem('TextField',FCKLang.TextFieldProp,51);}}};case 'HiddenField':return {AddItems:function(menu,tag,tagName){if (tagName=='IMG'&&tag.getAttribute('_fckinputhidden')){menu.AddSeparator();menu.AddItem('HiddenField',FCKLang.HiddenFieldProp,56);}}};case 'ImageButton':return {AddItems:function(menu,tag,tagName){if (tagName=='INPUT'&&tag.type=='image'){menu.AddSeparator();menu.AddItem('ImageButton',FCKLang.ImageButtonProp,55);}}};case 'Button':return {AddItems:function(menu,tag,tagName){if (tagName=='INPUT'&&(tag.type=='button'||tag.type=='submit'||tag.type=='reset')){menu.AddSeparator();menu.AddItem('Button',FCKLang.ButtonProp,54);}}};case 'Select':return {AddItems:function(menu,tag,tagName){if (tagName=='SELECT'){menu.AddSeparator();menu.AddItem('Select',FCKLang.SelectionFieldProp,53);}}};case 'Textarea':return {AddItems:function(menu,tag,tagName){if (tagName=='TEXTAREA'){menu.AddSeparator();menu.AddItem('Textarea',FCKLang.TextareaProp,52);}}};case 'BulletedList':return {AddItems:function(menu,tag,tagName){if (FCKSelection.HasAncestorNode('UL')){menu.AddSeparator();menu.AddItem('BulletedList',FCKLang.BulletedListProp,27);}}};case 'NumberedList':return {AddItems:function(menu,tag,tagName){if (FCKSelection.HasAncestorNode('OL')){menu.AddSeparator();menu.AddItem('NumberedList',FCKLang.NumberedListProp,26);}}};case 'DivContainer':return {AddItems:function(menu,tag,tagName){var J=FCKDomTools.GetSelectedDivContainers();if (J.length>0){menu.AddSeparator();menu.AddItem('EditDiv',FCKLang.EditDiv,75);menu.AddItem('DeleteDiv',FCKLang.DeleteDiv,76);}}};};return null;};function FCK_ContextMenu_OnBeforeOpen(){FCK.Events.FireEvent('OnSelectionChange');var A,sTagName;if ((A=FCKSelection.GetSelectedElement())) sTagName=A.tagName;var B=FCK.ContextMenu._InnerContextMenu;B.RemoveAllItems();var C=FCK.ContextMenu.Listeners;for (var i=0;i<C.length;i++) C[i].AddItems(B,A,sTagName);};function FCK_ContextMenu_OnItemClick(A){FCK.Focus();FCKCommands.GetCommand(A.Name).Execute(A.CustomData);};
 var FCKHtmlIterator=function(A){this._sourceHtml=A;};FCKHtmlIterator.prototype={Next:function(){var A=this._sourceHtml;if (A==null) return null;var B=FCKRegexLib.HtmlTag.exec(A);var C=false;var D="";if (B){if (B.index>0){D=A.substr(0,B.index);this._sourceHtml=A.substr(B.index);}else{C=true;D=B[0];this._sourceHtml=A.substr(B[0].length);}}else{D=A;this._sourceHtml=null;};return { 'isTag':C,'value':D };},Each:function(A){var B;while ((B=this.Next())) A(B.isTag,B.value);}};var FCKHtmlIterator=function(A){this._sourceHtml=A;};FCKHtmlIterator.prototype={Next:function(){var A=this._sourceHtml;if (A==null) return null;var B=FCKRegexLib.HtmlTag.exec(A);var C=false;var D="";if (B){if (B.index>0){D=A.substr(0,B.index);this._sourceHtml=A.substr(B.index);}else{C=true;D=B[0];this._sourceHtml=A.substr(B[0].length);}}else{D=A;this._sourceHtml=null;};return { 'isTag':C,'value':D };},Each:function(A){var B;while ((B=this.Next())) A(B.isTag,B.value);}};
 var FCKPlugin=function(A,B,C){this.Name=A;this.BasePath=C?C:FCKConfig.PluginsPath;this.Path=this.BasePath+A+'/';if (!B||B.length==0) this.AvailableLangs=[];else this.AvailableLangs=B.split(',');};FCKPlugin.prototype.Load=function(){if (this.AvailableLangs.length>0){var A;if (this.AvailableLangs.IndexOf(FCKLanguageManager.ActiveLanguage.Code)>=0) A=FCKLanguageManager.ActiveLanguage.Code;else A=this.AvailableLangs[0];LoadScript(this.Path+'lang/'+A+'.js');};LoadScript(this.Path+'fckplugin.js');};
 var FCKPlugins=FCK.Plugins={};FCKPlugins.ItemsCount=0;FCKPlugins.Items={};FCKPlugins.Load=function(){var A=FCKPlugins.Items;for (var i=0;i<FCKConfig.Plugins.Items.length;i++){var B=FCKConfig.Plugins.Items[i];var C=A[B[0]]=new FCKPlugin(B[0],B[1],B[2]);FCKPlugins.ItemsCount++;};for (var s in A) A[s].Load();FCKPlugins.Load=null;};

Modified: pal-wcm/trunk/src/main/webapp/fckeditor/editor/js/fckeditorcode_ie.js
===================================================================
--- pal-wcm/trunk/src/main/webapp/fckeditor/editor/js/fckeditorcode_ie.js	2008-09-03 08:05:44 UTC (rev 1112)
+++ pal-wcm/trunk/src/main/webapp/fckeditor/editor/js/fckeditorcode_ie.js	2008-09-04 02:44:24 UTC (rev 1113)
@@ -24,66 +24,66 @@
 
 var FCK_STATUS_NOTLOADED=window.parent.FCK_STATUS_NOTLOADED=0;var FCK_STATUS_ACTIVE=window.parent.FCK_STATUS_ACTIVE=1;var FCK_STATUS_COMPLETE=window.parent.FCK_STATUS_COMPLETE=2;var FCK_TRISTATE_OFF=window.parent.FCK_TRISTATE_OFF=0;var FCK_TRISTATE_ON=window.parent.FCK_TRISTATE_ON=1;var FCK_TRISTATE_DISABLED=window.parent.FCK_TRISTATE_DISABLED=-1;var FCK_UNKNOWN=window.parent.FCK_UNKNOWN=-9;var FCK_TOOLBARITEM_ONLYICON=window.parent.FCK_TOOLBARITEM_ONLYICON=0;var FCK_TOOLBARITEM_ONLYTEXT=window.parent.FCK_TOOLBARITEM_ONLYTEXT=1;var FCK_TOOLBARITEM_ICONTEXT=window.parent.FCK_TOOLBARITEM_ICONTEXT=2;var FCK_EDITMODE_WYSIWYG=window.parent.FCK_EDITMODE_WYSIWYG=0;var FCK_EDITMODE_SOURCE=window.parent.FCK_EDITMODE_SOURCE=1;var FCK_IMAGES_PATH='images/';var FCK_SPACER_PATH='images/spacer.gif';var CTRL=1000;var SHIFT=2000;var ALT=4000;var FCK_STYLE_BLOCK=0;var FCK_STYLE_INLINE=1;var FCK_STYLE_OBJECT=2;
 String.prototype.Contains=function(A){return (this.indexOf(A)>-1);};String.prototype.Equals=function(){var A=arguments;if (A.length==1&&A[0].pop) A=A[0];for (var i=0;i<A.length;i++){if (this==A[i]) return true;};return false;};String.prototype.IEquals=function(){var A=this.toUpperCase();var B=arguments;if (B.length==1&&B[0].pop) B=B[0];for (var i=0;i<B.length;i++){if (A==B[i].toUpperCase()) return true;};return false;};String.prototype.ReplaceAll=function(A,B){var C=this;for (var i=0;i<A.length;i++){C=C.replace(A[i],B[i]);};return C;};String.prototype.StartsWith=function(A){return (this.substr(0,A.length)==A);};String.prototype.EndsWith=function(A,B){var C=this.length;var D=A.length;if (D>C) return false;if (B){var E=new RegExp(A+'$','i');return E.test(this);}else return (D==0||this.substr(C-D,D)==A);};String.prototype.Remove=function(A,B){var s='';if (A>0) s=this.substring(0,A);if (A+B<this.length) s+=this.substring(A+B,this.length);return s;};String.prototype.Trim=function(){return this.replace(/(^[ \t\n\r]*)|([ \t\n\r]*$)/g,'');};String.prototype.LTrim=function(){return this.replace(/^[ \t\n\r]*/g,'');};String.prototype.RTrim=function(){return this.replace(/[ \t\n\r]*$/g,'');};String.prototype.ReplaceNewLineChars=function(A){return this.replace(/\n/g,A);};String.prototype.Replace=function(A,B,C){if (typeof B=='function'){return this.replace(A,function(){return B.apply(C||this,arguments);});}else return this.replace(A,B);};Array.prototype.AddItem=function(A){var i=this.length;this[i]=A;return i;};Array.prototype.IndexOf=function(A){for (var i=0;i<this.length;i++){if (this[i]==A) return i;};return-1;};
-var	FCKIECleanup=function(A){if (A._FCKCleanupObj) this.Items=A._FCKCleanupObj.Items;else{this.Items=[];A._FCKCleanupObj=this;FCKTools.AddEventListenerEx(A,'unload',FCKIECleanup_Cleanup);}};FCKIECleanup.prototype.AddItem=function(A,B){this.Items.push([A,B]);};function FCKIECleanup_Cleanup(){if (!this._FCKCleanupObj||!window.FCKUnloadFlag) return;var A=this._FCKCleanupObj.Items;while (A.length>0){var B=A.pop();if (B) B[1].call(B[0]);};this._FCKCleanupObj=null;if (CollectGarbage) CollectGarbage();};
-var s=navigator.userAgent.toLowerCase();var FCKBrowserInfo={IsIE:/*@cc_on!@*/false,IsIE7:/*@cc_on!@*/false && ( parseInt( s.match( /msie (\d+)/)[1],10)>=7),IsIE6:/*@cc_on!@*/false && ( parseInt( s.match( /msie (\d+)/)[1],10)>=6),IsGecko:s.Contains('gecko/'),IsSafari:s.Contains(' applewebkit/'),IsOpera:!!window.opera,IsAIR:s.Contains(' adobeair/'),IsMac:s.Contains('macintosh')};(function(A){A.IsGeckoLike=(A.IsGecko||A.IsSafari||A.IsOpera);if (A.IsGecko){var B=s.match(/gecko\/(\d+)/)[1];A.IsGecko10=((B<20051111)||(/rv:1\.7/.test(s)));A.IsGecko19=/rv:1\.9/.test(s);}else A.IsGecko10=false;})(FCKBrowserInfo);
+var	FCKIECleanup=function(A){if (A._FCKCleanupObj) this.Items=A._FCKCleanupObj.Items;else{this.Items=[];A._FCKCleanupObj=this;FCKTools.AddEventListenerEx(A,'unload',FCKIECleanup_Cleanup);}};FCKIECleanup.prototype.AddItem=function(A,B){this.Items.push([A,B]);};function FCKIECleanup_Cleanup(){if (!this._FCKCleanupObj||(FCKConfig.MsWebBrowserControlCompat&&!window.FCKUnloadFlag)) return;var A=this._FCKCleanupObj.Items;while (A.length>0){var B=A.pop();if (B) B[1].call(B[0]);};this._FCKCleanupObj=null;if (CollectGarbage) CollectGarbage();};
+var s=navigator.userAgent.toLowerCase();var FCKBrowserInfo={IsIE:/*@cc_on!@*/false,IsIE7:/*@cc_on!@*/false&&(parseInt(s.match(/msie (\d+)/)[1],10)>=7),IsIE6:/*@cc_on!@*/false&&(parseInt(s.match(/msie (\d+)/)[1],10)>=6),IsSafari:s.Contains(' applewebkit/'),IsOpera:!!window.opera,IsAIR:s.Contains(' adobeair/'),IsMac:s.Contains('macintosh')};(function(A){A.IsGecko=(navigator.product=='Gecko')&&!A.IsSafari&&!A.IsOpera;A.IsGeckoLike=(A.IsGecko||A.IsSafari||A.IsOpera);if (A.IsGecko){var B=s.match(/rv:(\d+\.\d+)/);var C=B&&parseFloat(B[1]);if (C){A.IsGecko10=(C<1.8);A.IsGecko19=(C>1.8);}}})(FCKBrowserInfo);
 var FCKURLParams={};(function(){var A=document.location.search.substr(1).split('&');for (var i=0;i<A.length;i++){var B=A[i].split('=');var C=decodeURIComponent(B[0]);var D=decodeURIComponent(B[1]);FCKURLParams[C]=D;}})();
 var FCKEvents=function(A){this.Owner=A;this._RegisteredEvents={};};FCKEvents.prototype.AttachEvent=function(A,B){var C;if (!(C=this._RegisteredEvents[A])) this._RegisteredEvents[A]=[B];else{if (C.IndexOf(B)==-1) C.push(B);}};FCKEvents.prototype.FireEvent=function(A,B){var C=true;var D=this._RegisteredEvents[A];if (D){for (var i=0;i<D.length;i++){try{C=(D[i](this.Owner,B)&&C);}catch(e){if (e.number!=-2146823277) throw e;}}};return C;};
 var FCKDataProcessor=function(){};FCKDataProcessor.prototype={ConvertToHtml:function(A){if (FCKConfig.FullPage){FCK.DocTypeDeclaration=A.match(FCKRegexLib.DocTypeTag);if (!FCKRegexLib.HasBodyTag.test(A)) A='<body>'+A+'</body>';if (!FCKRegexLib.HtmlOpener.test(A)) A='<html dir="'+FCKConfig.ContentLangDirection+'">'+A+'</html>';if (!FCKRegexLib.HeadOpener.test(A)) A=A.replace(FCKRegexLib.HtmlOpener,'$&<head><title></title></head>');return A;}else{var B=FCKConfig.DocType+'<html dir="'+FCKConfig.ContentLangDirection+'"';if (FCKBrowserInfo.IsIE&&FCKConfig.DocType.length>0&&!FCKRegexLib.Html4DocType.test(FCKConfig.DocType)) B+=' style="overflow-y: scroll"';B+='><head><title></title></head><body'+FCKConfig.GetBodyAttributes()+'>'+A+'</body></html>';return B;}},ConvertToDataFormat:function(A,B,C,D){var E=FCKXHtml.GetXHTML(A,!B,D);if (C&&FCKRegexLib.EmptyOutParagraph.test(E)) return '';return E;},FixHtml:function(A){return A;}};
-var FCK={Name:FCKURLParams['InstanceName'],Status:0,EditMode:0,Toolbar:null,HasFocus:false,DataProcessor:new FCKDataProcessor(),GetInstanceObject:(function(){var w=window;return function(name){return w[name];}})(),AttachToOnSelectionChange:function(A){this.Events.AttachEvent('OnSelectionChange',A);},GetLinkedFieldValue:function(){return this.LinkedField.value;},GetParentForm:function(){return this.LinkedField.form;},StartupValue:'',IsDirty:function(){if (this.EditMode==1) return (this.StartupValue!=this.EditingArea.Textarea.value);else{if (!this.EditorDocument) return false;return (this.StartupValue!=this.EditorDocument.body.innerHTML);}},ResetIsDirty:function(){if (this.EditMode==1) this.StartupValue=this.EditingArea.Textarea.value;else if (this.EditorDocument.body) this.StartupValue=this.EditorDocument.body.innerHTML;},StartEditor:function(){this.TempBaseTag=FCKConfig.BaseHref.length>0?'<base href="'+FCKConfig.BaseHref+'" _fcktemp="true"></base>':'';var A=FCK.KeystrokeHandler=new FCKKeystrokeHandler();A.OnKeystroke=_FCK_KeystrokeHandler_OnKeystroke;A.SetKeystrokes(FCKConfig.Keystrokes);if (FCKBrowserInfo.IsIE7){if ((CTRL+86/*V*/) in A.Keystrokes) A.SetKeystrokes([CTRL+86,true]);if ((SHIFT+45/*INS*/) in A.Keystrokes) A.SetKeystrokes([SHIFT+45,true]);};A.SetKeystrokes([CTRL+8,true]);this.EditingArea=new FCKEditingArea(document.getElementById('xEditingArea'));this.EditingArea.FFSpellChecker=FCKConfig.FirefoxSpellChecker;this.SetData(this.GetLinkedFieldValue(),true);FCKTools.AddEventListener(document,"keydown",this._TabKeyHandler);this.AttachToOnSelectionChange(_FCK_PaddingNodeListener);if (FCKBrowserInfo.IsGecko) this.AttachToOnSelectionChange(this._ExecCheckEmptyBlock);},Focus:function(){FCK.EditingArea.Focus();},SetStatus:function(A){this.Status=A;if (A==1){FCKFocusManager.AddWindow(window,true);if (FCKBrowserInfo.IsIE) FCKFocusManager.AddWindow(window.frameElement,true);if (FCKConfig.StartupFocus) FCK.Focus();};this.Events.FireEvent('OnStatusChange',A);},FixBody:function(){var A=FCKConfig.EnterMode;if (A!='p'&&A!='div') return;var B=this.EditorDocument;if (!B) return;var C=B.body;if (!C) return;FCKDomTools.TrimNode(C);var D=C.firstChild;var E;while (D){var F=false;switch (D.nodeType){case 1:var G=D.nodeName.toLowerCase();if (!FCKListsLib.BlockElements[G]&&G!='li'&&!D.getAttribute('_fckfakelement')&&D.getAttribute('_moz_dirty')==null) F=true;break;case 3:if (E||D.nodeValue.Trim().length>0) F=true;};if (F){var H=D.parentNode;if (!E) E=H.insertBefore(B.createElement(A),D);E.appendChild(H.removeChild(D));D=E.nextSibling;}else{if (E){FCKDomTools.TrimNode(E);E=null;};D=D.nextSibling;}};if (E) FCKDomTools.TrimNode(E);},GetData:function(A){if (FCK.EditMode==1) return FCK.EditingArea.Textarea.value;this.FixBody();var B=FCK.EditorDocument;if (!B) return null;var C=FCKConfig.FullPage;var D=FCK.DataProcessor.ConvertToDataFormat(C?B.documentElement:B.body,!C,FCKConfig.IgnoreEmptyParagraphValue,A);D=FCK.ProtectEventsRestore(D);if (FCKBrowserInfo.IsIE) D=D.replace(FCKRegexLib.ToReplace,'$1');if (C){if (FCK.DocTypeDeclaration&&FCK.DocTypeDeclaration.length>0) D=FCK.DocTypeDeclaration+'\n'+D;if (FCK.XmlDeclaration&&FCK.XmlDeclaration.length>0) D=FCK.XmlDeclaration+'\n'+D;};return FCKConfig.ProtectedSource.Revert(D);},UpdateLinkedField:function(){var A=FCK.GetXHTML(FCKConfig.FormatOutput);if (FCKConfig.HtmlEncodeOutput) A=FCKTools.HTMLEncode(A);FCK.LinkedField.value=A;FCK.Events.FireEvent('OnAfterLinkedFieldUpdate');},RegisteredDoubleClickHandlers:{},OnDoubleClick:function(A){var B=FCK.RegisteredDoubleClickHandlers[A.tagName.toUpperCase()];if (B){for (var i=0;i<B.length;i++) B[i](A);};B=FCK.RegisteredDoubleClickHandlers['*'];if (B){for (var i=0;i<B.length;i++) B[i](A);}},RegisterDoubleClickHandler:function(A,B){var C=B||'*';C=C.toUpperCase();var D;if (!(D=FCK.RegisteredDoubleClickHandlers[C])) FCK.RegisteredDoubleClickHandlers[C]=[A];else{if (D.IndexOf(A)==-1) D.push(A);}},OnAfterSetHTML:function(){FCKDocumentProcessor.Process(FCK.EditorDocument);FCKUndo.SaveUndoStep();FCK.Events.FireEvent('OnSelectionChange');FCK.Events.FireEvent('OnAfterSetHTML');},ProtectUrls:function(A){A=A.replace(FCKRegexLib.ProtectUrlsA,'$& _fcksavedurl=$1');A=A.replace(FCKRegexLib.ProtectUrlsImg,'$& _fcksavedurl=$1');A=A.replace(FCKRegexLib.ProtectUrlsArea,'$& _fcksavedurl=$1');return A;},ProtectEvents:function(A){return A.replace(FCKRegexLib.TagsWithEvent,_FCK_ProtectEvents_ReplaceTags);},ProtectEventsRestore:function(A){return A.replace(FCKRegexLib.ProtectedEvents,_FCK_ProtectEvents_RestoreEvents);},ProtectTags:function(A){var B=FCKConfig.ProtectedTags;if (FCKBrowserInfo.IsIE) B+=B.length>0?'|ABBR|XML|EMBED|OBJECT':'ABBR|XML|EMBED|OBJECT';var C;if (B.length>0){C=new RegExp('<('+B+')(?!\w|:)','gi');A=A.replace(C,'<FCK:$1');C=new RegExp('<\/('+B+')>','gi');A=A.replace(C,'<\/FCK:$1>');};B='META';if (FCKBrowserInfo.IsIE) B+='|HR';C=new RegExp('<(('+B+')(?=\\s|>|/)[\\s\\S]*?)/?>','gi');A=A.replace(C,'<FCK:$1 />');return A;},SetData:function(A,B){this.EditingArea.Mode=FCK.EditMode;if (FCKBrowserInfo.IsIE&&FCK.EditorDocument){FCK.EditorDocument.detachEvent("onselectionchange",Doc_OnSelectionChange);};if (FCK.EditMode==0){this._ForceResetIsDirty=(B===true);A=FCKConfig.ProtectedSource.Protect(A);A=FCK.DataProcessor.ConvertToHtml(A);A=A.replace(FCKRegexLib.InvalidSelfCloseTags,'$1></$2>');A=FCK.ProtectEvents(A);A=FCK.ProtectUrls(A);A=FCK.ProtectTags(A);if (FCK.TempBaseTag.length>0&&!FCKRegexLib.HasBaseTag.test(A)) A=A.replace(FCKRegexLib.HeadOpener,'$&'+FCK.TempBaseTag);var C='';if (!FCKConfig.FullPage) C+=_FCK_GetEditorAreaStyleTags();if (FCKBrowserInfo.IsIE) C+=FCK._GetBehaviorsStyle();else if (FCKConfig.ShowBorders) C+=FCKTools.GetStyleHtml(FCK_ShowTableBordersCSS,true);C+=FCKTools.GetStyleHtml(FCK_InternalCSS,true);A=A.replace(FCKRegexLib.HeadCloser,C+'$&');this.EditingArea.OnLoad=_FCK_EditingArea_OnLoad;this.EditingArea.Start(A);}else{FCK.EditorWindow=null;FCK.EditorDocument=null;FCKDomTools.PaddingNode=null;this.EditingArea.OnLoad=null;this.EditingArea.Start(A);this.EditingArea.Textarea._FCKShowContextMenu=true;FCK.EnterKeyHandler=null;if (B) this.ResetIsDirty();FCK.KeystrokeHandler.AttachToElement(this.EditingArea.Textarea);this.EditingArea.Textarea.focus();FCK.Events.FireEvent('OnAfterSetHTML');};if (FCKBrowserInfo.IsGecko) window.onresize();},RedirectNamedCommands:{},ExecuteNamedCommand:function(A,B,C,D){if (!D) FCKUndo.SaveUndoStep();if (!C&&FCK.RedirectNamedCommands[A]!=null) FCK.ExecuteRedirectedNamedCommand(A,B);else{FCK.Focus();FCK.EditorDocument.execCommand(A,false,B);FCK.Events.FireEvent('OnSelectionChange');};if (!D) FCKUndo.SaveUndoStep();},GetNamedCommandState:function(A){try{if (FCKBrowserInfo.IsSafari&&FCK.EditorWindow&&A.IEquals('Paste')) return 0;if (!FCK.EditorDocument.queryCommandEnabled(A)) return -1;else{return FCK.EditorDocument.queryCommandState(A)?1:0;}}catch (e){return 0;}},GetNamedCommandValue:function(A){var B='';var C=FCK.GetNamedCommandState(A);if (C==-1) return null;try{B=this.EditorDocument.queryCommandValue(A);}catch(e) {};return B?B:'';},Paste:function(A){if (FCK.Status!=2||!FCK.Events.FireEvent('OnPaste')) return false;return A||FCK._ExecPaste();},PasteFromWord:function(){FCKDialog.OpenDialog('FCKDialog_Paste',FCKLang.PasteFromWord,'dialog/fck_paste.html',400,330,'Word');},Preview:function(){var A;if (FCKConfig.FullPage){if (FCK.TempBaseTag.length>0) A=FCK.TempBaseTag+FCK.GetXHTML();else A=FCK.GetXHTML();}else{A=FCKConfig.DocType+'<html dir="'+FCKConfig.ContentLangDirection+'"><head>'+FCK.TempBaseTag+'<title>'+FCKLang.Preview+'</title>'+_FCK_GetEditorAreaStyleTags()+'</head><body'+FCKConfig.GetBodyAttributes()+'>'+FCK.GetXHTML()+'</body></html>';};var B=FCKConfig.ScreenWidth*0.8;var C=FCKConfig.ScreenHeight*0.7;var D=(FCKConfig.ScreenWidth-B)/2;var E='';if (FCK_IS_CUSTOM_DOMAIN&&FCKBrowserInfo.IsIE){window._FCKHtmlToLoad=A;E='javascript:void( (function(){document.open() ;document.domain="'+document.domain+'" ;document.write( window.opener._FCKHtmlToLoad );document.close() ;window.opener._FCKHtmlToLoad = null ;})() )';};var F=window.open(E,null,'toolbar=yes,location=no,status=yes,menubar=yes,scrollbars=yes,resizable=yes,width='+B+',height='+C+',left='+D);if (!FCK_IS_CUSTOM_DOMAIN||!FCKBrowserInfo.IsIE){F.document.write(A);F.document.close();}},SwitchEditMode:function(A){var B=(FCK.EditMode==0);var C=FCK.IsDirty();var D;if (B){FCKCommands.GetCommand('ShowBlocks').SaveState();if (!A&&FCKBrowserInfo.IsIE) FCKUndo.SaveUndoStep();D=FCK.GetXHTML(FCKConfig.FormatSource);if (D==null) return false;}else D=this.EditingArea.Textarea.value;FCK.EditMode=B?1:0;FCK.SetData(D,!C);FCK.Focus();FCKTools.RunFunction(FCK.ToolbarSet.RefreshModeState,FCK.ToolbarSet);return true;},InsertElement:function(A){if (typeof A=='string') A=this.EditorDocument.createElement(A);var B=A.nodeName.toLowerCase();FCKSelection.Restore();var C=new FCKDomRange(this.EditorWindow);if (FCKListsLib.BlockElements[B]!=null){C.SplitBlock();C.InsertNode(A);var D=FCKDomTools.GetNextSourceElement(A,false,null,['hr','br','param','img','area','input'],true);if (!D&&FCKConfig.EnterMode!='br'){D=this.EditorDocument.body.appendChild(this.EditorDocument.createElement(FCKConfig.EnterMode));if (FCKBrowserInfo.IsGeckoLike) FCKTools.AppendBogusBr(D);};if (FCKListsLib.EmptyElements[B]==null) C.MoveToElementEditStart(A);else if (D) C.MoveToElementEditStart(D);else C.MoveToPosition(A,4);if (FCKBrowserInfo.IsGecko){if (D) D.scrollIntoView(false);A.scrollIntoView(false);}}else{C.MoveToSelection();C.DeleteContents();C.InsertNode(A);C.SetStart(A,4);C.SetEnd(A,4);};C.Select();C.Release();this.Focus();return A;},_InsertBlockElement:function(A){},_IsFunctionKey:function(A){if (A>=16&&A<=20) return true;if (A==27||(A>=33&&A<=40)) return true;if (A==45) return true;return false;},_KeyDownListener:function(A){if (!A) A=FCK.EditorWindow.event;if (FCK.EditorWindow){if (!FCK._IsFunctionKey(A.keyCode)&&!(A.ctrlKey||A.metaKey)&&!(A.keyCode==46)) FCK._KeyDownUndo();};return true;},_KeyDownUndo:function(){if (!FCKUndo.Typing){FCKUndo.SaveUndoStep();FCKUndo.Typing=true;FCK.Events.FireEvent("OnSelectionChange");};FCKUndo.TypesCount++;FCKUndo.Changed=1;if (FCKUndo.TypesCount>FCKUndo.MaxTypes){FCKUndo.TypesCount=0;FCKUndo.SaveUndoStep();}},_TabKeyHandler:function(A){if (!A) A=window.event;var B=A.keyCode;if (B==9&&FCK.EditMode!=0){if (FCKBrowserInfo.IsIE){var C=document.selection.createRange();if (C.parentElement()!=FCK.EditingArea.Textarea) return true;C.text='\t';C.select();}else{var a=[];var D=FCK.EditingArea.Textarea;var E=D.selectionStart;var F=D.selectionEnd;a.push(D.value.substr(0,E));a.push('\t');a.push(D.value.substr(F));D.value=a.join('');D.setSelectionRange(E+1,E+1);};if (A.preventDefault) return A.preventDefault();return A.returnValue=false;};return true;}};FCK.Events=new FCKEvents(FCK);FCK.GetHTML=FCK.GetXHTML=FCK.GetData;FCK.SetHTML=FCK.SetData;FCK.InsertElementAndGetIt=FCK.CreateElement=FCK.InsertElement;function _FCK_ProtectEvents_ReplaceTags(A){return A.replace(FCKRegexLib.EventAttributes,_FCK_ProtectEvents_ReplaceEvents);};function _FCK_ProtectEvents_ReplaceEvents(A,B){return ' '+B+'_fckprotectedatt="'+encodeURIComponent(A)+'"';};function _FCK_ProtectEvents_RestoreEvents(A,B){return decodeURIComponent(B);};function _FCK_MouseEventsListener(A){if (!A) A=window.event;if (A.type=='mousedown') FCK.MouseDownFlag=true;else if (A.type=='mouseup') FCK.MouseDownFlag=false;else if (A.type=='mousemove') FCK.Events.FireEvent('OnMouseMove',A);};function _FCK_PaddingNodeListener(){if (FCKConfig.EnterMode.IEquals('br')) return;FCKDomTools.EnforcePaddingNode(FCK.EditorDocument,FCKConfig.EnterMode);if (!FCKBrowserInfo.IsIE&&FCKDomTools.PaddingNode){var A=FCKSelection.GetSelection();if (A&&A.rangeCount==1){var B=A.getRangeAt(0);if (B.collapsed&&B.startContainer==FCK.EditorDocument.body&&B.startOffset==0){B.selectNodeContents(FCKDomTools.PaddingNode);B.collapse(true);A.removeAllRanges();A.addRange(B);}}}else if (FCKDomTools.PaddingNode){var C=FCKSelection.GetParentElement();var D=FCKDomTools.PaddingNode;if (C&&C.nodeName.IEquals('body')){if (FCK.EditorDocument.body.childNodes.length==1&&FCK.EditorDocument.body.firstChild==D){var B=FCK.EditorDocument.body.createTextRange();var F=false;if (!D.childNodes.firstChild){D.appendChild(FCKTools.GetElementDocument(D).createTextNode('\ufeff'));F=true;};B.moveToElementText(D);B.select();if (F) B.pasteHTML('');}}}};function _FCK_EditingArea_OnLoad(){FCK.EditorWindow=FCK.EditingArea.Window;FCK.EditorDocument=FCK.EditingArea.Document;FCK.InitializeBehaviors();FCK.MouseDownFlag=false;FCKTools.AddEventListener(FCK.EditorDocument,'mousemove',_FCK_MouseEventsListener);FCKTools.AddEventListener(FCK.EditorDocument,'mousedown',_FCK_MouseEventsListener);FCKTools.AddEventListener(FCK.EditorDocument,'mouseup',_FCK_MouseEventsListener);if (FCKBrowserInfo.IsSafari){var A=function(evt){if (!(evt.ctrlKey||evt.metaKey)) return;if (FCK.EditMode!=0) return;switch (evt.keyCode){case 89:FCKUndo.Redo();break;case 90:FCKUndo.Undo();break;}};FCKTools.AddEventListener(FCK.EditorDocument,'keyup',A);};FCK.EnterKeyHandler=new FCKEnterKey(FCK.EditorWindow,FCKConfig.EnterMode,FCKConfig.ShiftEnterMode,FCKConfig.TabSpaces);FCK.KeystrokeHandler.AttachToElement(FCK.EditorDocument);if (FCK._ForceResetIsDirty) FCK.ResetIsDirty();if (FCKBrowserInfo.IsIE&&FCK.HasFocus) FCK.EditorDocument.body.setActive();FCK.OnAfterSetHTML();FCKCommands.GetCommand('ShowBlocks').RestoreState();if (FCK.Status!=0) return;FCK.SetStatus(1);};function _FCK_GetEditorAreaStyleTags(){return FCKTools.GetStyleHtml(FCKConfig.EditorAreaCSS)+FCKTools.GetStyleHtml(FCKConfig.EditorAreaStyles);};function _FCK_KeystrokeHandler_OnKeystroke(A,B){if (FCK.Status!=2) return false;if (FCK.EditMode==0){switch (B){case 'Paste':return!FCK.Paste();case 'Cut':FCKUndo.SaveUndoStep();return false;}}else{if (B.Equals('Paste','Undo','Redo','SelectAll','Cut')) return false;};var C=FCK.Commands.GetCommand(B);if (C.GetState()==-1) return false;return (C.Execute.apply(C,FCKTools.ArgumentsToArray(arguments,2))!==false);};(function(){var A=window.parent.document;var B=A.getElementById(FCK.Name);var i=0;while (B||i==0){if (B&&B.tagName.toLowerCase().Equals('input','textarea')){FCK.LinkedField=B;break;};B=A.getElementsByName(FCK.Name)[i++];}})();var FCKTempBin={Elements:[],AddElement:function(A){var B=this.Elements.length;this.Elements[B]=A;return B;},RemoveElement:function(A){var e=this.Elements[A];this.Elements[A]=null;return e;},Reset:function(){var i=0;while (i<this.Elements.length) this.Elements[i++]=null;this.Elements.length=0;}};var FCKFocusManager=FCK.FocusManager={IsLocked:false,AddWindow:function(A,B){var C;if (FCKBrowserInfo.IsIE) C=A.nodeType==1?A:A.frameElement?A.frameElement:A.document;else if (FCKBrowserInfo.IsSafari) C=A;else C=A.document;FCKTools.AddEventListener(C,'blur',FCKFocusManager_Win_OnBlur);FCKTools.AddEventListener(C,'focus',B?FCKFocusManager_Win_OnFocus_Area:FCKFocusManager_Win_OnFocus);},RemoveWindow:function(A){if (FCKBrowserInfo.IsIE) oTarget=A.nodeType==1?A:A.frameElement?A.frameElement:A.document;else oTarget=A.document;FCKTools.RemoveEventListener(oTarget,'blur',FCKFocusManager_Win_OnBlur);FCKTools.RemoveEventListener(oTarget,'focus',FCKFocusManager_Win_OnFocus_Area);FCKTools.RemoveEventListener(oTarget,'focus',FCKFocusManager_Win_OnFocus);},Lock:function(){this.IsLocked=true;},Unlock:function(){if (this._HasPendingBlur) FCKFocusManager._Timer=window.setTimeout(FCKFocusManager_FireOnBlur,100);this.IsLocked=false;},_ResetTimer:function(){this._HasPendingBlur=false;if (this._Timer){window.clearTimeout(this._Timer);delete this._Timer;}}};function FCKFocusManager_Win_OnBlur(){if (typeof(FCK)!='undefined'&&FCK.HasFocus){FCKFocusManager._ResetTimer();FCKFocusManager._Timer=window.setTimeout(FCKFocusManager_FireOnBlur,100);}};function FCKFocusManager_FireOnBlur(){if (FCKFocusManager.IsLocked) FCKFocusManager._HasPendingBlur=true;else{FCK.HasFocus=false;FCK.Events.FireEvent("OnBlur");}};function FCKFocusManager_Win_OnFocus_Area(){if (FCKFocusManager._IsFocusing) return;FCKFocusManager._IsFocusing=true;FCK.Focus();FCKFocusManager_Win_OnFocus();FCKTools.RunFunction(function(){delete FCKFocusManager._IsFocusing;});};function FCKFocusManager_Win_OnFocus(){FCKFocusManager._ResetTimer();if (!FCK.HasFocus&&!FCKFocusManager.IsLocked){FCK.HasFocus=true;FCK.Events.FireEvent("OnFocus");}};
-FCK.Description="FCKeditor for Internet Explorer 5.5+";FCK._GetBehaviorsStyle=function(){if (!FCK._BehaviorsStyle){var A=FCKConfig.FullBasePath;var B='';var C;C='<style type="text/css" _fcktemp="true">';if (FCKConfig.ShowBorders) B='url('+A+'css/behaviors/showtableborders.htc)';C+='INPUT,TEXTAREA,SELECT,.FCK__Anchor,.FCK__PageBreak,.FCK__InputHidden';if (FCKConfig.DisableObjectResizing){C+=',IMG';B+=' url('+A+'css/behaviors/disablehandles.htc)';};C+=' { behavior: url('+A+'css/behaviors/disablehandles.htc) ; }';if (B.length>0) C+='TABLE { behavior: '+B+' ; }';C+='</style>';FCK._BehaviorsStyle=C;};return FCK._BehaviorsStyle;};function Doc_OnMouseUp(){if (FCK.EditorWindow.event.srcElement.tagName=='HTML'){FCK.Focus();FCK.EditorWindow.event.cancelBubble=true;FCK.EditorWindow.event.returnValue=false;}};function Doc_OnPaste(){var A=FCK.EditorDocument.body;A.detachEvent('onpaste',Doc_OnPaste);var B=FCK.Paste(!FCKConfig.ForcePasteAsPlainText&&!FCKConfig.AutoDetectPasteFromWord);A.attachEvent('onpaste',Doc_OnPaste);return B;};function Doc_OnDblClick(){FCK.OnDoubleClick(FCK.EditorWindow.event.srcElement);FCK.EditorWindow.event.cancelBubble=true;};function Doc_OnSelectionChange(){if (!FCK.IsSelectionChangeLocked&&FCK.EditorDocument) FCK.Events.FireEvent("OnSelectionChange");};function Doc_OnDrop(){if (FCK.MouseDownFlag){FCK.MouseDownFlag=false;return;};if (FCKConfig.ForcePasteAsPlainText){var A=FCK.EditorWindow.event;if (FCK._CheckIsPastingEnabled()||FCKConfig.ShowDropDialog) FCK.PasteAsPlainText(A.dataTransfer.getData('Text'));A.returnValue=false;A.cancelBubble=true;}};FCK.InitializeBehaviors=function(A){this.EditorDocument.attachEvent('onmouseup',Doc_OnMouseUp);this.EditorDocument.body.attachEvent('onpaste',Doc_OnPaste);this.EditorDocument.body.attachEvent('ondrop',Doc_OnDrop);FCK.ContextMenu._InnerContextMenu.AttachToElement(FCK.EditorDocument.body);this.EditorDocument.attachEvent("onkeydown",FCK._KeyDownListener);this.EditorDocument.attachEvent("ondblclick",Doc_OnDblClick);this.EditorDocument.attachEvent("onselectionchange",Doc_OnSelectionChange);FCKTools.AddEventListener(FCK.EditorDocument,'mousedown',Doc_OnMouseDown);};FCK.InsertHtml=function(A){A=FCKConfig.ProtectedSource.Protect(A);A=FCK.ProtectEvents(A);A=FCK.ProtectUrls(A);A=FCK.ProtectTags(A);FCK.EditorWindow.focus();FCKUndo.SaveUndoStep();var B=FCKSelection.GetSelection();if (B.type.toLowerCase()=='control') B.clear();A='<span id="__fakeFCKRemove__" style="display:none;">fakeFCKRemove</span>'+A;B.createRange().pasteHTML(A);FCK.EditorDocument.getElementById('__fakeFCKRemove__').removeNode(true);FCKDocumentProcessor.Process(FCK.EditorDocument);this.Events.FireEvent("OnSelectionChange");};FCK.SetInnerHtml=function(A){var B=FCK.EditorDocument;B.body.innerHTML='<div id="__fakeFCKRemove__">&nbsp;</div>'+A;B.getElementById('__fakeFCKRemove__').removeNode(true);};function FCK_PreloadImages(){var A=new FCKImagePreloader();A.AddImages(FCKConfig.PreloadImages);A.AddImages(FCKConfig.SkinPath+'fck_strip.gif');A.OnComplete=LoadToolbarSetup;A.Start();};function Document_OnContextMenu(){return (event.srcElement._FCKShowContextMenu==true);};document.oncontextmenu=Document_OnContextMenu;function FCK_Cleanup(){this.LinkedField=null;this.EditorWindow=null;this.EditorDocument=null;};FCK._ExecPaste=function(){if (FCK._PasteIsRunning) return true;if (FCKConfig.ForcePasteAsPlainText){FCK.PasteAsPlainText();return false;};var A=FCK._CheckIsPastingEnabled(true);if (A===false) FCKTools.RunFunction(FCKDialog.OpenDialog,FCKDialog,['FCKDialog_Paste',FCKLang.Paste,'dialog/fck_paste.html',400,330,'Security']);else{if (FCKConfig.AutoDetectPasteFromWord&&A.length>0){var B=/<\w[^>]*(( class="?MsoNormal"?)|(="mso-))/gi;if (B.test(A)){if (confirm(FCKLang.PasteWordConfirm)){FCK.PasteFromWord();return false;}}};FCK._PasteIsRunning=true;FCK.ExecuteNamedCommand('Paste');delete FCK._PasteIsRunning;};return false;};FCK.PasteAsPlainText=function(A){if (!FCK._CheckIsPastingEnabled()){FCKDialog.OpenDialog('FCKDialog_Paste',FCKLang.PasteAsText,'dialog/fck_paste.html',400,330,'PlainText');return;};var B=null;if (!A) B=clipboardData.getData("Text");else B=A;if (B&&B.length>0){B=FCKTools.HTMLEncode(B);B=FCKTools.ProcessLineBreaks(window,FCKConfig,B);var C=B.search('</p>');var D=B.search('<p>');if ((C!=-1&&D!=-1&&C<D)||(C!=-1&&D==-1)){var E=B.substr(0,C);B=B.substr(C+4);this.InsertHtml(E);};FCKUndo.SaveLocked=true;this.InsertHtml(B);FCKUndo.SaveLocked=false;}};FCK._CheckIsPastingEnabled=function(A){FCK._PasteIsEnabled=false;document.body.attachEvent('onpaste',FCK_CheckPasting_Listener);var B=FCK.GetClipboardHTML();document.body.detachEvent('onpaste',FCK_CheckPasting_Listener);if (FCK._PasteIsEnabled){if (!A) B=true;}else B=false;delete FCK._PasteIsEnabled;return B;};function FCK_CheckPasting_Listener(){FCK._PasteIsEnabled=true;};FCK.GetClipboardHTML=function(){var A=document.getElementById('___FCKHiddenDiv');if (!A){A=document.createElement('DIV');A.id='___FCKHiddenDiv';var B=A.style;B.position='absolute';B.visibility=B.overflow='hidden';B.width=B.height=1;document.body.appendChild(A);};A.innerHTML='';var C=document.body.createTextRange();C.moveToElementText(A);C.execCommand('Paste');var D=A.innerHTML;A.innerHTML='';return D;};FCK.CreateLink=function(A,B){var C=[];FCK.ExecuteNamedCommand('Unlink',null,false,!!B);if (A.length>0){if (FCKSelection.GetType()=='Control'){var D=this.EditorDocument.createElement('A');D.href=A;var E=FCKSelection.GetSelectedElement();E.parentNode.insertBefore(D,E);E.parentNode.removeChild(E);D.appendChild(E);return [D];};var F='javascript:void(0);/*'+(new Date().getTime())+'*/';FCK.ExecuteNamedCommand('CreateLink',F,false,!!B);var G=this.EditorDocument.links;for (i=0;i<G.length;i++){var D=G[i];if (D.getAttribute('href',2)==F){var I=D.innerHTML;D.href=A;D.innerHTML=I;var J=D.lastChild;if (J&&J.nodeName=='BR'){FCKDomTools.InsertAfterNode(D,D.removeChild(J));};C.push(D);}}};return C;};function _FCK_RemoveDisabledAtt(){this.removeAttribute('disabled');};function Doc_OnMouseDown(A){var e=A.srcElement;if (e.nodeName.IEquals('input')&&e.type.IEquals(['radio','checkbox'])&&!e.disabled){e.disabled=true;FCKTools.SetTimeout(_FCK_RemoveDisabledAtt,1,e);}};
-var FCKConfig=FCK.Config={};if (document.location.protocol=='file:'){FCKConfig.BasePath=decodeURIComponent(document.location.pathname.substr(1));FCKConfig.BasePath=FCKConfig.BasePath.replace(/\\/gi, '/');var sFullProtocol=document.location.href.match(/^(file\:\/{2,3})/)[1];if (FCKBrowserInfo.IsOpera) sFullProtocol+='localhost/';FCKConfig.BasePath=sFullProtocol+FCKConfig.BasePath.substring(0,FCKConfig.BasePath.lastIndexOf('/')+1);FCKConfig.FullBasePath=FCKConfig.BasePath;}else{FCKConfig.BasePath=document.location.pathname.substring(0,document.location.pathname.lastIndexOf('/')+1);FCKConfig.FullBasePath=document.location.protocol+'//'+document.location.host+FCKConfig.BasePath;};FCKConfig.EditorPath=FCKConfig.BasePath.replace(/editor\/$/,'');try{FCKConfig.ScreenWidth=screen.width;FCKConfig.ScreenHeight=screen.height;}catch (e){FCKConfig.ScreenWidth=800;FCKConfig.ScreenHeight=600;};FCKConfig.ProcessHiddenField=function(){this.PageConfig={};var A=window.parent.document.getElementById(FCK.Name+'___Config');if (!A) return;var B=A.value.split('&');for (var i=0;i<B.length;i++){if (B[i].length==0) continue;var C=B[i].split('=');var D=decodeURIComponent(C[0]);var E=decodeURIComponent(C[1]);if (D=='CustomConfigurationsPath') FCKConfig[D]=E;else if (E.toLowerCase()=="true") this.PageConfig[D]=true;else if (E.toLowerCase()=="false") this.PageConfig[D]=false;else if (E.length>0&&!isNaN(E)) this.PageConfig[D]=parseInt(E,10);else this.PageConfig[D]=E;}};function FCKConfig_LoadPageConfig(){var A=FCKConfig.PageConfig;for (var B in A) FCKConfig[B]=A[B];};function FCKConfig_PreProcess(){var A=FCKConfig;if (A.AllowQueryStringDebug){try{if ((/fckdebug=true/i).test(window.top.location.search)) A.Debug=true;}catch (e) {/*Ignore it. Much probably we are inside a FRAME where the "top" is in another domain (security error).*/}};if (!A.PluginsPath.EndsWith('/')) A.PluginsPath+='/';var B=A.ToolbarComboPreviewCSS;if (!B||B.length==0) A.ToolbarComboPreviewCSS=A.EditorAreaCSS;A.RemoveAttributesArray=(A.RemoveAttributes||'').split(',');if (!FCKConfig.SkinEditorCSS||FCKConfig.SkinEditorCSS.length==0) FCKConfig.SkinEditorCSS=FCKConfig.SkinPath+'fck_editor.css';if (!FCKConfig.SkinDialogCSS||FCKConfig.SkinDialogCSS.length==0) FCKConfig.SkinDialogCSS=FCKConfig.SkinPath+'fck_dialog.css';};FCKConfig.ToolbarSets={};FCKConfig.Plugins={};FCKConfig.Plugins.Items=[];FCKConfig.Plugins.Add=function(A,B,C){FCKConfig.Plugins.Items.AddItem([A,B,C]);};FCKConfig.ProtectedSource={};FCKConfig.ProtectedSource._CodeTag=(new Date()).valueOf();FCKConfig.ProtectedSource.RegexEntries=[/<!--[\s\S]*?-->/g,/<script[\s\S]*?<\/script>/gi,/<noscript[\s\S]*?<\/noscript>/gi];FCKConfig.ProtectedSource.Add=function(A){this.RegexEntries.AddItem(A);};FCKConfig.ProtectedSource.Protect=function(A){var B=this._CodeTag;function _Replace(protectedSource){var C=FCKTempBin.AddElement(protectedSource);return '<!--{'+B+C+'}-->';};for (var i=0;i<this.RegexEntries.length;i++){A=A.replace(this.RegexEntries[i],_Replace);};return A;};FCKConfig.ProtectedSource.Revert=function(A,B){function _Replace(m,opener,index){var C=B?FCKTempBin.RemoveElement(index):FCKTempBin.Elements[index];return FCKConfig.ProtectedSource.Revert(C,B);};var D=new RegExp("(<|&lt;)!--\\{"+this._CodeTag+"(\\d+)\\}--(>|&gt;)","g");return A.replace(D,_Replace);};FCKConfig.GetBodyAttributes=function(){var A='';if (this.BodyId&&this.BodyId.length>0) A+=' id="'+this.BodyId+'"';if (this.BodyClass&&this.BodyClass.length>0) A+=' class="'+this.BodyClass+'"';return A;};FCKConfig.ApplyBodyAttributes=function(A){if (this.BodyId&&this.BodyId.length>0) A.id=FCKConfig.BodyId;if (this.BodyClass&&this.BodyClass.length>0) A.className+=' '+FCKConfig.BodyClass;};
-var FCKDebug={};FCKDebug._GetWindow=function(){if (!this.DebugWindow||this.DebugWindow.closed) this.DebugWindow=window.open(FCKConfig.BasePath+'fckdebug.html','FCKeditorDebug','menubar=no,scrollbars=yes,resizable=yes,location=no,toolbar=no,width=600,height=500',true);return this.DebugWindow;};FCKDebug.Output=function(A,B,C){if (!FCKConfig.Debug) return;try{this._GetWindow().Output(A,B);}catch (e) {}};FCKDebug.OutputObject=function(A,B){if (!FCKConfig.Debug) return;try{this._GetWindow().OutputObject(A,B);}catch (e) {}};
-var FCKDomTools={MoveChildren:function(A,B,C){if (A==B) return;var D;if (C){while ((D=A.lastChild)) B.insertBefore(A.removeChild(D),B.firstChild);}else{while ((D=A.firstChild)) B.appendChild(A.removeChild(D));}},MoveNode:function(A,B,C){if (C) B.insertBefore(FCKDomTools.RemoveNode(A),B.firstChild);else B.appendChild(FCKDomTools.RemoveNode(A));},TrimNode:function(A){this.LTrimNode(A);this.RTrimNode(A);},LTrimNode:function(A){var B;while ((B=A.firstChild)){if (B.nodeType==3){var C=B.nodeValue.LTrim();var D=B.nodeValue.length;if (C.length==0){A.removeChild(B);continue;}else if (C.length<D){B.splitText(D-C.length);A.removeChild(A.firstChild);}};break;}},RTrimNode:function(A){var B;while ((B=A.lastChild)){if (B.nodeType==3){var C=B.nodeValue.RTrim();var D=B.nodeValue.length;if (C.length==0){B.parentNode.removeChild(B);continue;}else if (C.length<D){B.splitText(C.length);A.lastChild.parentNode.removeChild(A.lastChild);}};break;};if (!FCKBrowserInfo.IsIE&&!FCKBrowserInfo.IsOpera){B=A.lastChild;if (B&&B.nodeType==1&&B.nodeName.toLowerCase()=='br'){B.parentNode.removeChild(B);}}},RemoveNode:function(A,B){if (B){var C;while ((C=A.firstChild)) A.parentNode.insertBefore(A.removeChild(C),A);};return A.parentNode.removeChild(A);},GetFirstChild:function(A,B){if (typeof (B)=='string') B=[B];var C=A.firstChild;while(C){if (C.nodeType==1&&C.tagName.Equals.apply(C.tagName,B)) return C;C=C.nextSibling;};return null;},GetLastChild:function(A,B){if (typeof (B)=='string') B=[B];var C=A.lastChild;while(C){if (C.nodeType==1&&(!B||C.tagName.Equals(B))) return C;C=C.previousSibling;};return null;},GetPreviousSourceElement:function(A,B,C,D){if (!A) return null;if (C&&A.nodeType==1&&A.nodeName.IEquals(C)) return null;if (A.previousSibling) A=A.previousSibling;else return this.GetPreviousSourceElement(A.parentNode,B,C,D);while (A){if (A.nodeType==1){if (C&&A.nodeName.IEquals(C)) break;if (!D||!A.nodeName.IEquals(D)) return A;}else if (B&&A.nodeType==3&&A.nodeValue.RTrim().length>0) break;if (A.lastChild) A=A.lastChild;else return this.GetPreviousSourceElement(A,B,C,D);};return null;},GetNextSourceElement:function(A,B,C,D,E){while((A=this.GetNextSourceNode(A,E))){if (A.nodeType==1){if (C&&A.nodeName.IEquals(C)) break;if (D&&A.nodeName.IEquals(D)) return this.GetNextSourceElement(A,B,C,D);return A;}else if (B&&A.nodeType==3&&A.nodeValue.RTrim().length>0) break;};return null;},GetNextSourceNode:function(A,B,C,D){if (!A) return null;var E;if (!B&&A.firstChild) E=A.firstChild;else{if (D&&A==D) return null;E=A.nextSibling;if (!E&&(!D||D!=A.parentNode)) return this.GetNextSourceNode(A.parentNode,true,C,D);};if (C&&E&&E.nodeType!=C) return this.GetNextSourceNode(E,false,C,D);return E;},GetPreviousSourceNode:function(A,B,C,D){if (!A) return null;var E;if (!B&&A.lastChild) E=A.lastChild;else{if (D&&A==D) return null;E=A.previousSibling;if (!E&&(!D||D!=A.parentNode)) return this.GetPreviousSourceNode(A.parentNode,true,C,D);};if (C&&E&&E.nodeType!=C) return this.GetPreviousSourceNode(E,false,C,D);return E;},InsertAfterNode:function(A,B){return A.parentNode.insertBefore(B,A.nextSibling);},GetParents:function(A){var B=[];while (A){B.unshift(A);A=A.parentNode;};return B;},GetCommonParents:function(A,B){var C=this.GetParents(A);var D=this.GetParents(B);var E=[];for (var i=0;i<C.length;i++){if (C[i]==D[i]) E.push(C[i]);};return E;},GetCommonParentNode:function(A,B,C){var D={};if (!C.pop) C=[C];while (C.length>0) D[C.pop().toLowerCase()]=1;var E=this.GetCommonParents(A,B);var F=null;while ((F=E.pop())){if (D[F.nodeName.toLowerCase()]) return F;};return null;},GetIndexOf:function(A){var B=A.parentNode?A.parentNode.firstChild:null;var C=-1;while (B){C++;if (B==A) return C;B=B.nextSibling;};return-1;},PaddingNode:null,EnforcePaddingNode:function(A,B){try{if (!A||!A.body) return;}catch (e){return;};this.CheckAndRemovePaddingNode(A,B,true);try{if (A.body.lastChild&&(A.body.lastChild.nodeType!=1||A.body.lastChild.tagName.toLowerCase()==B.toLowerCase())) return;}catch (e){return;};var C=A.createElement(B);if (FCKBrowserInfo.IsGecko&&FCKListsLib.NonEmptyBlockElements[B]) FCKTools.AppendBogusBr(C);this.PaddingNode=C;if (A.body.childNodes.length==1&&A.body.firstChild.nodeType==1&&A.body.firstChild.tagName.toLowerCase()=='br'&&(A.body.firstChild.getAttribute('_moz_dirty')!=null||A.body.firstChild.getAttribute('type')=='_moz')) A.body.replaceChild(C,A.body.firstChild);else A.body.appendChild(C);},CheckAndRemovePaddingNode:function(A,B,C){var D=this.PaddingNode;if (!D) return;try{if (D.parentNode!=A.body||D.tagName.toLowerCase()!=B||(D.childNodes.length>1)||(D.firstChild&&D.firstChild.nodeValue!='\xa0'&&String(D.firstChild.tagName).toLowerCase()!='br')){this.PaddingNode=null;return;}}catch (e){this.PaddingNode=null;return;};if (!C){if (D.parentNode.childNodes.length>1) D.parentNode.removeChild(D);this.PaddingNode=null;}},HasAttribute:function(A,B){if (A.hasAttribute) return A.hasAttribute(B);else{var C=A.attributes[B];return (C!=undefined&&C.specified);}},HasAttributes:function(A){var B=A.attributes;for (var i=0;i<B.length;i++){if (FCKBrowserInfo.IsIE&&B[i].nodeName=='class'){if (A.className.length>0) return true;}else if (B[i].specified) return true;};return false;},RemoveAttribute:function(A,B){if (FCKBrowserInfo.IsIE&&B.toLowerCase()=='class') B='className';return A.removeAttribute(B,0);},RemoveAttributes:function (A,B){for (var i=0;i<B.length;i++) this.RemoveAttribute(A,B[i]);},GetAttributeValue:function(A,B){var C=B;if (typeof B=='string') B=A.attributes[B];else C=B.nodeName;if (B&&B.specified){if (C=='style') return A.style.cssText;else if (C=='class'||C.indexOf('on')==0) return B.nodeValue;else{return A.getAttribute(C,2);}};return null;},Contains:function(A,B){if (A.contains&&B.nodeType==1) return A.contains(B);while ((B=B.parentNode)){if (B==A) return true;};return false;},BreakParent:function(A,B,C){var D=C||new FCKDomRange(FCKTools.GetElementWindow(A));D.SetStart(A,4);D.SetEnd(B,4);var E=D.ExtractContents();D.InsertNode(A.parentNode.removeChild(A));E.InsertAfterNode(A);D.Release(!!C);},GetNodeAddress:function(A,B){var C=[];while (A&&A!=FCKTools.GetElementDocument(A).documentElement){var D=A.parentNode;var E=-1;for(var i=0;i<D.childNodes.length;i++){var F=D.childNodes[i];if (B===true&&F.nodeType==3&&F.previousSibling&&F.previousSibling.nodeType==3) continue;E++;if (D.childNodes[i]==A) break;};C.unshift(E);A=A.parentNode;};return C;},GetNodeFromAddress:function(A,B,C){var D=A.documentElement;for (var i=0;i<B.length;i++){var E=B[i];if (!C){D=D.childNodes[E];continue;};var F=-1;for (var j=0;j<D.childNodes.length;j++){var G=D.childNodes[j];if (C===true&&G.nodeType==3&&G.previousSibling&&G.previousSibling.nodeType==3) continue;F++;if (F==E){D=G;break;}}};return D;},CloneElement:function(A){A=A.cloneNode(false);A.removeAttribute('id',false);return A;},ClearElementJSProperty:function(A,B){if (FCKBrowserInfo.IsIE) A.removeAttribute(B);else delete A[B];},SetElementMarker:function (A,B,C,D){var E=String(parseInt(Math.random()*0xfffffff,10));B._FCKMarkerId=E;B[C]=D;if (!A[E]) A[E]={ 'element':B,'markers':{} };A[E]['markers'][C]=D;},ClearElementMarkers:function(A,B,C){var D=B._FCKMarkerId;if (!D) return;this.ClearElementJSProperty(B,'_FCKMarkerId');for (var j in A[D]['markers']) this.ClearElementJSProperty(B,j);if (C) delete A[D];},ClearAllMarkers:function(A){for (var i in A) this.ClearElementMarkers(A,A[i]['element'],true);},ListToArray:function(A,B,C,D,E){if (!A.nodeName.IEquals(['ul','ol'])) return [];if (!D) D=0;if (!C) C=[];for (var i=0;i<A.childNodes.length;i++){var F=A.childNodes[i];if (!F.nodeName.IEquals('li')) continue;var G={ 'parent':A,'indent':D,'contents':[] };if (!E){G.grandparent=A.parentNode;if (G.grandparent&&G.grandparent.nodeName.IEquals('li')) G.grandparent=G.grandparent.parentNode;}else G.grandparent=E;if (B) this.SetElementMarker(B,F,'_FCK_ListArray_Index',C.length);C.push(G);for (var j=0;j<F.childNodes.length;j++){var H=F.childNodes[j];if (H.nodeName.IEquals(['ul','ol'])) this.ListToArray(H,B,C,D+1,G.grandparent);else G.contents.push(H);}};return C;},ArrayToList:function(A,B,C){if (C==undefined) C=0;if (!A||A.length<C+1) return null;var D=FCKTools.GetElementDocument(A[C].parent);var E=D.createDocumentFragment();var F=null;var G=C;var H=Math.max(A[C].indent,0);var I=null;while (true){var J=A[G];if (J.indent==H){if (!F||A[G].parent.nodeName!=F.nodeName){F=A[G].parent.cloneNode(false);E.appendChild(F);};I=D.createElement('li');F.appendChild(I);for (var i=0;i<J.contents.length;i++) I.appendChild(J.contents[i].cloneNode(true));G++;}else if (J.indent==Math.max(H,0)+1){var K=this.ArrayToList(A,null,G);I.appendChild(K.listNode);G=K.nextIndex;}else if (J.indent==-1&&C==0&&J.grandparent){var I;if (J.grandparent.nodeName.IEquals(['ul','ol'])) I=D.createElement('li');else{if (FCKConfig.EnterMode.IEquals(['div','p'])&&!J.grandparent.nodeName.IEquals('td')) I=D.createElement(FCKConfig.EnterMode);else I=D.createDocumentFragment();};for (var i=0;i<J.contents.length;i++) I.appendChild(J.contents[i].cloneNode(true));if (I.nodeType==11){if (I.lastChild&&I.lastChild.getAttribute&&I.lastChild.getAttribute('type')=='_moz') I.removeChild(I.lastChild);I.appendChild(D.createElement('br'));};if (I.nodeName.IEquals(FCKConfig.EnterMode)&&I.firstChild){this.TrimNode(I);if (FCKListsLib.BlockBoundaries[I.firstChild.nodeName.toLowerCase()]){var M=D.createDocumentFragment();while (I.firstChild) M.appendChild(I.removeChild(I.firstChild));I=M;}};if (FCKBrowserInfo.IsGeckoLike&&I.nodeName.IEquals(['div','p'])) FCKTools.AppendBogusBr(I);E.appendChild(I);F=null;G++;}else return null;if (A.length<=G||Math.max(A[G].indent,0)<H){break;}};if (B){var N=E.firstChild;while (N){if (N.nodeType==1) this.ClearElementMarkers(B,N);N=this.GetNextSourceNode(N);}};return { 'listNode':E,'nextIndex':G };},GetNextSibling:function(A,B){A=A.nextSibling;while (A&&!B&&A.nodeType!=1&&(A.nodeType!=3||A.nodeValue.length==0)) A=A.nextSibling;return A;},GetPreviousSibling:function(A,B){A=A.previousSibling;while (A&&!B&&A.nodeType!=1&&(A.nodeType!=3||A.nodeValue.length==0)) A=A.previousSibling;return A;},CheckIsEmptyElement:function(A,B){var C=A.firstChild;var D;while (C){if (C.nodeType==1){if (D||!FCKListsLib.InlineNonEmptyElements[C.nodeName.toLowerCase()]) return false;if (!B||B(C)===true) D=C;}else if (C.nodeType==3&&C.nodeValue.length>0) return false;C=C.nextSibling;};return D?this.CheckIsEmptyElement(D,B):true;},SetElementStyles:function(A,B){var C=A.style;for (var D in B) C[D]=B[D];},SetOpacity:function(A,B){if (FCKBrowserInfo.IsIE){B=Math.round(B*100);A.style.filter=(B>100?'':'progid:DXImageTransform.Microsoft.Alpha(opacity='+B+')');}else A.style.opacity=B;},GetCurrentElementStyle:function(A,B){if (FCKBrowserInfo.IsIE) return A.currentStyle[B];else return A.ownerDocument.defaultView.getComputedStyle(A,'').getPropertyValue(B);},GetPositionedAncestor:function(A){var B=A;while (B!=FCKTools.GetElementDocument(B).documentElement){if (this.GetCurrentElementStyle(B,'position')!='static') return B;if (B==FCKTools.GetElementDocument(B).documentElement&&currentWindow!=w) B=currentWindow.frameElement;else B=B.parentNode;};return null;},ScrollIntoView:function(A,B){var C=FCKTools.GetElementWindow(A);var D=FCKTools.GetViewPaneSize(C).Height;var E=D*-1;if (B===false){E+=A.offsetHeight;E+=parseInt(this.GetCurrentElementStyle(A,'marginBottom')||0,10);};E+=A.offsetTop;while ((A=A.offsetParent)) E+=A.offsetTop||0;var F=FCKTools.GetScrollPosition(C).Y;if (E>0&&E>F) C.scrollTo(0,E);},CheckIsEditable:function(A){var B=A.nodeName.toLowerCase();var C=FCK.DTD[B]||FCK.DTD.span;return (C['#']&&!FCKListsLib.NonEditableElements[B]);}};
-var FCKTools={};FCKTools.CreateBogusBR=function(A){var B=A.createElement('br');B.setAttribute('type','_moz');return B;};FCKTools.FixCssUrls=function(A,B){if (!A||A.length==0) return B;return B.replace(/url\s*\(([\s'"]*)(.*?)([\s"']*)\)/g,function(match,opener,path,closer){if (/^\/|^\w?:/.test(path)) return match;else return 'url('+opener+A+path+closer+')';});};FCKTools._GetUrlFixedCss=function(A,B){var C=A.match(/^([^|]+)\|([\s\S]*)/);if (C) return FCKTools.FixCssUrls(C[1],C[2]);else return A;};FCKTools.AppendStyleSheet=function(A,B){if (!B) return [];if (typeof(B)=='string'){if (/[\\\/\.]\w*$/.test(B)){return this.AppendStyleSheet(A,B.split(','));}else return [this.AppendStyleString(A,FCKTools._GetUrlFixedCss(B))];}else{var C=[];for (var i=0;i<B.length;i++) C.push(this._AppendStyleSheet(A,B[i]));return C;}};FCKTools.GetStyleHtml=(function(){var A=function(styleDef,markTemp){if (styleDef.length==0) return '';var B=markTemp?' _fcktemp="true"':'';return '<style type="text/css"'+B+'>'+styleDef+'</style>';};var C=function(cssFileUrl,markTemp){if (cssFileUrl.length==0) return '';var B=markTemp?' _fcktemp="true"':'';return '<link href="'+cssFileUrl+'" type="text/css" rel="stylesheet" '+B+'/>';};return function(cssFileOrArrayOrDef,markTemp){if (!cssFileOrArrayOrDef) return '';if (typeof(cssFileOrArrayOrDef)=='string'){if (/[\\\/\.]\w*$/.test(cssFileOrArrayOrDef)){return this.GetStyleHtml(cssFileOrArrayOrDef.split(','),markTemp);}else return A(this._GetUrlFixedCss(cssFileOrArrayOrDef),markTemp);}else{var E='';for (var i=0;i<cssFileOrArrayOrDef.length;i++) E+=C(cssFileOrArrayOrDef[i],markTemp);return E;}}})();FCKTools.GetElementDocument=function (A){return A.ownerDocument||A.document;};FCKTools.GetElementWindow=function(A){return this.GetDocumentWindow(this.GetElementDocument(A));};FCKTools.GetDocumentWindow=function(A){if (FCKBrowserInfo.IsSafari&&!A.parentWindow) this.FixDocumentParentWindow(window.top);return A.parentWindow||A.defaultView;};FCKTools.FixDocumentParentWindow=function(A){if (A.document) A.document.parentWindow=A;for (var i=0;i<A.frames.length;i++) FCKTools.FixDocumentParentWindow(A.frames[i]);};FCKTools.HTMLEncode=function(A){if (!A) return '';A=A.replace(/&/g,'&amp;');A=A.replace(/</g,'&lt;');A=A.replace(/>/g,'&gt;');return A;};FCKTools.HTMLDecode=function(A){if (!A) return '';A=A.replace(/&gt;/g,'>');A=A.replace(/&lt;/g,'<');A=A.replace(/&amp;/g,'&');return A;};FCKTools._ProcessLineBreaksForPMode=function(A,B,C,D,E){var F=0;var G="<p>";var H="</p>";var I="<br />";if (C){G="<li>";H="</li>";F=1;};while (D&&D!=A.FCK.EditorDocument.body){if (D.tagName.toLowerCase()=='p'){F=1;break;};D=D.parentNode;};for (var i=0;i<B.length;i++){var c=B.charAt(i);if (c=='\r') continue;if (c!='\n'){E.push(c);continue;};var n=B.charAt(i+1);if (n=='\r'){i++;n=B.charAt(i+1);};if (n=='\n'){i++;if (F) E.push(H);E.push(G);F=1;}else E.push(I);}};FCKTools._ProcessLineBreaksForDivMode=function(A,B,C,D,E){var F=0;var G="<div>";var H="</div>";if (C){G="<li>";H="</li>";F=1;};while (D&&D!=A.FCK.EditorDocument.body){if (D.tagName.toLowerCase()=='div'){F=1;break;};D=D.parentNode;};for (var i=0;i<B.length;i++){var c=B.charAt(i);if (c=='\r') continue;if (c!='\n'){E.push(c);continue;};if (F){if (E[E.length-1]==G){E.push("&nbsp;");};E.push(H);};E.push(G);F=1;};if (F) E.push(H);};FCKTools._ProcessLineBreaksForBrMode=function(A,B,C,D,E){var F=0;var G="<br />";var H="";if (C){G="<li>";H="</li>";F=1;};for (var i=0;i<B.length;i++){var c=B.charAt(i);if (c=='\r') continue;if (c!='\n'){E.push(c);continue;};if (F&&H.length) E.push (H);E.push(G);F=1;}};FCKTools.ProcessLineBreaks=function(A,B,C){var D=B.EnterMode.toLowerCase();var E=[];var F=0;var G=new A.FCKDomRange(A.FCK.EditorWindow);G.MoveToSelection();var H=G._Range.startContainer;while (H&&H.nodeType!=1) H=H.parentNode;if (H&&H.tagName.toLowerCase()=='li') F=1;if (D=='p') this._ProcessLineBreaksForPMode(A,C,F,H,E);else if (D=='div') this._ProcessLineBreaksForDivMode(A,C,F,H,E);else if (D=='br') this._ProcessLineBreaksForBrMode(A,C,F,H,E);return E.join("");};FCKTools.AddSelectOption=function(A,B,C){var D=FCKTools.GetElementDocument(A).createElement("OPTION");D.text=B;D.value=C;A.options.add(D);return D;};FCKTools.RunFunction=function(A,B,C,D){if (A) this.SetTimeout(A,0,B,C,D);};FCKTools.SetTimeout=function(A,B,C,D,E){return (E||window).setTimeout(function(){if (D) A.apply(C,[].concat(D));else A.apply(C);},B);};FCKTools.SetInterval=function(A,B,C,D,E){return (E||window).setInterval(function(){A.apply(C,D||[]);},B);};FCKTools.ConvertStyleSizeToHtml=function(A){return A.EndsWith('%')?A:parseInt(A,10);};FCKTools.ConvertHtmlSizeToStyle=function(A){return A.EndsWith('%')?A:(A+'px');};FCKTools.GetElementAscensor=function(A,B){var e=A;var C=","+B.toUpperCase()+",";while (e){if (C.indexOf(","+e.nodeName.toUpperCase()+",")!=-1) return e;e=e.parentNode;};return null;};FCKTools.CreateEventListener=function(A,B){var f=function(){var C=[];for (var i=0;i<arguments.length;i++) C.push(arguments[i]);A.apply(this,C.concat(B));};return f;};FCKTools.IsStrictMode=function(A){return ('CSS1Compat'==(A.compatMode||(FCKBrowserInfo.IsSafari?'CSS1Compat':null)));};FCKTools.ArgumentsToArray=function(A,B,C){B=B||0;C=C||A.length;var D=[];for (var i=B;i<B+C&&i<A.length;i++) D.push(A[i]);return D;};FCKTools.CloneObject=function(A){var B=function() {};B.prototype=A;return new B;};FCKTools.AppendBogusBr=function(A){if (!A) return;var B=this.GetLastItem(A.getElementsByTagName('br'));if (!B||(B.getAttribute('type',2)!='_moz'&&B.getAttribute('_moz_dirty')==null)){var C=this.GetElementDocument(A);if (FCKBrowserInfo.IsOpera) A.appendChild(C.createTextNode(''));else A.appendChild(this.CreateBogusBR(C));}};FCKTools.GetLastItem=function(A){if (A.length>0) return A[A.length-1];return null;};FCKTools.GetDocumentPosition=function(w,A){var x=0;var y=0;var B=A;var C=null;var D=FCKTools.GetElementWindow(B);while (B&&!(D==w&&(B==w.document.body||B==w.document.documentElement))){x+=B.offsetLeft-B.scrollLeft;y+=B.offsetTop-B.scrollTop;if (!FCKBrowserInfo.IsOpera){var E=C;while (E&&E!=B){x-=E.scrollLeft;y-=E.scrollTop;E=E.parentNode;}};C=B;if (B.offsetParent) B=B.offsetParent;else{if (D!=w){B=D.frameElement;C=null;if (B) D=B.contentWindow.parent;}else B=null;}};if (FCKDomTools.GetCurrentElementStyle(w.document.body,'position')!='static'||(FCKBrowserInfo.IsIE&&FCKDomTools.GetPositionedAncestor(A)==null)){x+=w.document.body.offsetLeft;y+=w.document.body.offsetTop;};return { "x":x,"y":y };};FCKTools.GetWindowPosition=function(w,A){var B=this.GetDocumentPosition(w,A);var C=FCKTools.GetScrollPosition(w);B.x-=C.X;B.y-=C.Y;return B;};FCKTools.ProtectFormStyles=function(A){if (!A||A.nodeType!=1||A.tagName.toLowerCase()!='form') return [];var B=[];var C=['style','className'];for (var i=0;i<C.length;i++){var D=C[i];if (A.elements.namedItem(D)){var E=A.elements.namedItem(D);B.push([E,E.nextSibling]);A.removeChild(E);}};return B;};FCKTools.RestoreFormStyles=function(A,B){if (!A||A.nodeType!=1||A.tagName.toLowerCase()!='form') return;if (B.length>0){for (var i=B.length-1;i>=0;i--){var C=B[i][0];var D=B[i][1];if (D) A.insertBefore(C,D);else A.appendChild(C);}}};FCKTools.GetNextNode=function(A,B){if (A.firstChild) return A.firstChild;else if (A.nextSibling) return A.nextSibling;else{var C=A.parentNode;while (C){if (C==B) return null;if (C.nextSibling) return C.nextSibling;else C=C.parentNode;}};return null;};FCKTools.GetNextTextNode=function(A,B,C){node=this.GetNextNode(A,B);if (C&&node&&C(node)) return null;while (node&&node.nodeType!=3){node=this.GetNextNode(node,B);if (C&&node&&C(node)) return null;};return node;};FCKTools.Merge=function(){var A=arguments;var o=A[0];for (var i=1;i<A.length;i++){var B=A[i];for (var p in B) o[p]=B[p];};return o;};FCKTools.IsArray=function(A){return (A instanceof Array);};FCKTools.AppendLengthProperty=function(A,B){var C=0;for (var n in A) C++;return A[B||'length']=C;};FCKTools.NormalizeCssText=function(A){var B=document.createElement('span');B.style.cssText=A;return B.style.cssText;};FCKTools.Bind=function(A,B){return function(){ return B.apply(A,arguments);};};FCKTools.GetVoidUrl=function(){if (FCK_IS_CUSTOM_DOMAIN) return "javascript: void( function(){document.open();document.write('<html><head><title></title></head><body></body></html>');document.domain = '"+FCK_RUNTIME_DOMAIN+"';document.close();}() ) ;";if (FCKBrowserInfo.IsIE){if (FCKBrowserInfo.IsIE7||!FCKBrowserInfo.IsIE6) return "";else return "javascript: '';";};return "javascript: void(0);";};
-FCKTools.CancelEvent=function(e){return false;};FCKTools._AppendStyleSheet=function(A,B){return A.createStyleSheet(B).owningElement;};FCKTools.AppendStyleString=function(A,B){if (!B) return null;var s=A.createStyleSheet("");s.cssText=B;return s;};FCKTools.ClearElementAttributes=function(A){A.clearAttributes();};FCKTools.GetAllChildrenIds=function(A){var B=[];for (var i=0;i<A.all.length;i++){var C=A.all[i].id;if (C&&C.length>0) B[B.length]=C;};return B;};FCKTools.RemoveOuterTags=function(e){e.insertAdjacentHTML('beforeBegin',e.innerHTML);e.parentNode.removeChild(e);};FCKTools.CreateXmlObject=function(A){var B;switch (A){case 'XmlHttp':try { return new XMLHttpRequest();} catch (e) {};B=['MSXML2.XmlHttp','Microsoft.XmlHttp'];break;case 'DOMDocument':B=['MSXML2.DOMDocument','Microsoft.XmlDom'];break;};for (var i=0;i<2;i++){try { return new ActiveXObject(B[i]);}catch (e){}};if (FCKLang.NoActiveX){alert(FCKLang.NoActiveX);FCKLang.NoActiveX=null;};return null;};FCKTools.DisableSelection=function(A){A.unselectable='on';var e,i=0;while ((e=A.all[i++])){switch (e.tagName){case 'IFRAME':case 'TEXTAREA':case 'INPUT':case 'SELECT':break;default:e.unselectable='on';}}};FCKTools.GetScrollPosition=function(A){var B=A.document;var C={ X:B.documentElement.scrollLeft,Y:B.documentElement.scrollTop };if (C.X>0||C.Y>0) return C;return { X:B.body.scrollLeft,Y:B.body.scrollTop };};FCKTools.AddEventListener=function(A,B,C){A.attachEvent('on'+B,C);};FCKTools.RemoveEventListener=function(A,B,C){A.detachEvent('on'+B,C);};FCKTools.AddEventListenerEx=function(A,B,C,D){var o={};o.Source=A;o.Params=D||[];o.Listener=function(ev){return C.apply(o.Source,[ev].concat(o.Params));};if (FCK.IECleanup) FCK.IECleanup.AddItem(null,function() { o.Source=null;o.Params=null;});A.attachEvent('on'+B,o.Listener);A=null;D=null;};FCKTools.GetViewPaneSize=function(A){var B;var C=A.document.documentElement;if (C&&C.clientWidth) B=C;else B=A.document.body;if (B) return { Width:B.clientWidth,Height:B.clientHeight };else return { Width:0,Height:0 };};FCKTools.SaveStyles=function(A){var B=FCKTools.ProtectFormStyles(A);var C={};if (A.className.length>0){C.Class=A.className;A.className='';};var D=A.style.cssText;if (D.length>0){C.Inline=D;A.style.cssText='';};FCKTools.RestoreFormStyles(A,B);return C;};FCKTools.RestoreStyles=function(A,B){var C=FCKTools.ProtectFormStyles(A);A.className=B.Class||'';A.style.cssText=B.Inline||'';FCKTools.RestoreFormStyles(A,C);};FCKTools.RegisterDollarFunction=function(A){A.$=A.document.getElementById;};FCKTools.AppendElement=function(A,B){return A.appendChild(this.GetElementDocument(A).createElement(B));};FCKTools.ToLowerCase=function(A){return A.toLowerCase();};
-var FCKeditorAPI;function InitializeAPI(){var A=window.parent;if (!(FCKeditorAPI=A.FCKeditorAPI)){var B='window.FCKeditorAPI = {Version : "2.6",VersionBuild : "18638",Instances : new Object(),GetInstance : function( name ){return this.Instances[ name ];},_FormSubmit : function(){for ( var name in FCKeditorAPI.Instances ){var oEditor = FCKeditorAPI.Instances[ name ] ;if ( oEditor.GetParentForm && oEditor.GetParentForm() == this )oEditor.UpdateLinkedField() ;}this._FCKOriginalSubmit() ;},_FunctionQueue	: {Functions : new Array(),IsRunning : false,Add : function( f ){this.Functions.push( f );if ( !this.IsRunning )this.StartNext();},StartNext : function(){var aQueue = this.Functions ;if ( aQueue.length > 0 ){this.IsRunning = true;aQueue[0].call();}else this.IsRunning = false;},Remove : function( f ){var aQueue = this.Functions;var i = 0, fFunc;while( (fFunc = aQueue[ i ]) ){if ( fFunc == f )aQueue.splice( i,1 );i++ ;}this.StartNext();}}}';if (A.execScript) A.execScript(B,'JavaScript');else{if (FCKBrowserInfo.IsGecko10){eval.call(A,B);}else if(FCKBrowserInfo.IsAIR){FCKAdobeAIR.FCKeditorAPI_Evaluate(A,B);}else if (FCKBrowserInfo.IsSafari||FCKBrowserInfo.IsGecko19){var C=A.document;var D=C.createElement('script');D.appendChild(C.createTextNode(B));C.documentElement.appendChild(D);}else A.eval(B);};FCKeditorAPI=A.FCKeditorAPI;FCKeditorAPI.__Instances=FCKeditorAPI.Instances;};FCKeditorAPI.Instances[FCK.Name]=FCK;};function _AttachFormSubmitToAPI(){var A=FCK.GetParentForm();if (A){FCKTools.AddEventListener(A,'submit',FCK.UpdateLinkedField);if (!A._FCKOriginalSubmit&&(typeof(A.submit)=='function'||(!A.submit.tagName&&!A.submit.length))){A._FCKOriginalSubmit=A.submit;A.submit=FCKeditorAPI._FormSubmit;}}};function FCKeditorAPI_Cleanup(){if (!window.FCKUnloadFlag) return;delete FCKeditorAPI.Instances[FCK.Name];};function FCKeditorAPI_ConfirmCleanup(){window.FCKUnloadFlag=true;};FCKTools.AddEventListener(window,'unload',FCKeditorAPI_Cleanup);FCKTools.AddEventListener(window,'beforeunload',FCKeditorAPI_ConfirmCleanup);
+var FCK={Name:FCKURLParams['InstanceName'],Status:0,EditMode:0,Toolbar:null,HasFocus:false,DataProcessor:new FCKDataProcessor(),GetInstanceObject:(function(){var w=window;return function(name){return w[name];}})(),AttachToOnSelectionChange:function(A){this.Events.AttachEvent('OnSelectionChange',A);},GetLinkedFieldValue:function(){return this.LinkedField.value;},GetParentForm:function(){return this.LinkedField.form;},StartupValue:'',IsDirty:function(){if (this.EditMode==1) return (this.StartupValue!=this.EditingArea.Textarea.value);else{if (!this.EditorDocument) return false;return (this.StartupValue!=this.EditorDocument.body.innerHTML);}},ResetIsDirty:function(){if (this.EditMode==1) this.StartupValue=this.EditingArea.Textarea.value;else if (this.EditorDocument.body) this.StartupValue=this.EditorDocument.body.innerHTML;},StartEditor:function(){this.TempBaseTag=FCKConfig.BaseHref.length>0?'<base href="'+FCKConfig.BaseHref+'" _fcktemp="true"></base>':'';var A=FCK.KeystrokeHandler=new FCKKeystrokeHandler();A.OnKeystroke=_FCK_KeystrokeHandler_OnKeystroke;A.SetKeystrokes(FCKConfig.Keystrokes);if (FCKBrowserInfo.IsIE7){if ((CTRL+86) in A.Keystrokes) A.SetKeystrokes([CTRL+86,true]);if ((SHIFT+45) in A.Keystrokes) A.SetKeystrokes([SHIFT+45,true]);};A.SetKeystrokes([CTRL+8,true]);this.EditingArea=new FCKEditingArea(document.getElementById('xEditingArea'));this.EditingArea.FFSpellChecker=FCKConfig.FirefoxSpellChecker;this.SetData(this.GetLinkedFieldValue(),true);FCKTools.AddEventListener(document,"keydown",this._TabKeyHandler);this.AttachToOnSelectionChange(_FCK_PaddingNodeListener);if (FCKBrowserInfo.IsGecko) this.AttachToOnSelectionChange(this._ExecCheckEmptyBlock);},Focus:function(){FCK.EditingArea.Focus();},SetStatus:function(A){this.Status=A;if (A==1){FCKFocusManager.AddWindow(window,true);if (FCKBrowserInfo.IsIE) FCKFocusManager.AddWindow(window.frameElement,true);if (FCKConfig.StartupFocus) FCK.Focus();};this.Events.FireEvent('OnStatusChange',A);},FixBody:function(){var A=FCKConfig.EnterMode;if (A!='p'&&A!='div') return;var B=this.EditorDocument;if (!B) return;var C=B.body;if (!C) return;FCKDomTools.TrimNode(C);var D=C.firstChild;var E;while (D){var F=false;switch (D.nodeType){case 1:var G=D.nodeName.toLowerCase();if (!FCKListsLib.BlockElements[G]&&G!='li'&&!D.getAttribute('_fckfakelement')&&D.getAttribute('_moz_dirty')==null) F=true;break;case 3:if (E||D.nodeValue.Trim().length>0) F=true;break;case 8:if (E) F=true;break;};if (F){var H=D.parentNode;if (!E) E=H.insertBefore(B.createElement(A),D);E.appendChild(H.removeChild(D));D=E.nextSibling;}else{if (E){FCKDomTools.TrimNode(E);E=null;};D=D.nextSibling;}};if (E) FCKDomTools.TrimNode(E);},GetData:function(A){if (FCK.EditMode==1) return FCK.EditingArea.Textarea.value;this.FixBody();var B=FCK.EditorDocument;if (!B) return null;var C=FCKConfig.FullPage;var D=FCK.DataProcessor.ConvertToDataFormat(C?B.documentElement:B.body,!C,FCKConfig.IgnoreEmptyParagraphValue,A);D=FCK.ProtectEventsRestore(D);if (FCKBrowserInfo.IsIE) D=D.replace(FCKRegexLib.ToReplace,'$1');if (C){if (FCK.DocTypeDeclaration&&FCK.DocTypeDeclaration.length>0) D=FCK.DocTypeDeclaration+'\n'+D;if (FCK.XmlDeclaration&&FCK.XmlDeclaration.length>0) D=FCK.XmlDeclaration+'\n'+D;};return FCKConfig.ProtectedSource.Revert(D);},UpdateLinkedField:function(){var A=FCK.GetXHTML(FCKConfig.FormatOutput);if (FCKConfig.HtmlEncodeOutput) A=FCKTools.HTMLEncode(A);FCK.LinkedField.value=A;FCK.Events.FireEvent('OnAfterLinkedFieldUpdate');},RegisteredDoubleClickHandlers:{},OnDoubleClick:function(A){var B=FCK.RegisteredDoubleClickHandlers[A.tagName.toUpperCase()];if (B){for (var i=0;i<B.length;i++) B[i](A);};B=FCK.RegisteredDoubleClickHandlers['*'];if (B){for (var i=0;i<B.length;i++) B[i](A);}},RegisterDoubleClickHandler:function(A,B){var C=B||'*';C=C.toUpperCase();var D;if (!(D=FCK.RegisteredDoubleClickHandlers[C])) FCK.RegisteredDoubleClickHandlers[C]=[A];else{if (D.IndexOf(A)==-1) D.push(A);}},OnAfterSetHTML:function(){FCKDocumentProcessor.Process(FCK.EditorDocument);FCKUndo.SaveUndoStep();FCK.Events.FireEvent('OnSelectionChange');FCK.Events.FireEvent('OnAfterSetHTML');},ProtectUrls:function(A){A=A.replace(FCKRegexLib.ProtectUrlsA,'$& _fcksavedurl=$1');A=A.replace(FCKRegexLib.ProtectUrlsImg,'$& _fcksavedurl=$1');A=A.replace(FCKRegexLib.ProtectUrlsArea,'$& _fcksavedurl=$1');return A;},ProtectEvents:function(A){return A.replace(FCKRegexLib.TagsWithEvent,_FCK_ProtectEvents_ReplaceTags);},ProtectEventsRestore:function(A){return A.replace(FCKRegexLib.ProtectedEvents,_FCK_ProtectEvents_RestoreEvents);},ProtectTags:function(A){var B=FCKConfig.ProtectedTags;if (FCKBrowserInfo.IsIE) B+=B.length>0?'|ABBR|XML|EMBED|OBJECT':'ABBR|XML|EMBED|OBJECT';var C;if (B.length>0){C=new RegExp('<('+B+')(?!\w|:)','gi');A=A.replace(C,'<FCK:$1');C=new RegExp('<\/('+B+')>','gi');A=A.replace(C,'<\/FCK:$1>');};B='META';if (FCKBrowserInfo.IsIE) B+='|HR';C=new RegExp('<(('+B+')(?=\\s|>|/)[\\s\\S]*?)/?>','gi');A=A.replace(C,'<FCK:$1 />');return A;},SetData:function(A,B){this.EditingArea.Mode=FCK.EditMode;if (FCKBrowserInfo.IsIE&&FCK.EditorDocument){FCK.EditorDocument.detachEvent("onselectionchange",Doc_OnSelectionChange);};FCKTempBin.Reset();if (FCK.EditMode==0){this._ForceResetIsDirty=(B===true);A=FCKConfig.ProtectedSource.Protect(A);A=FCK.DataProcessor.ConvertToHtml(A);A=A.replace(FCKRegexLib.InvalidSelfCloseTags,'$1></$2>');A=FCK.ProtectEvents(A);A=FCK.ProtectUrls(A);A=FCK.ProtectTags(A);if (FCK.TempBaseTag.length>0&&!FCKRegexLib.HasBaseTag.test(A)) A=A.replace(FCKRegexLib.HeadOpener,'$&'+FCK.TempBaseTag);var C='';if (!FCKConfig.FullPage) C+=_FCK_GetEditorAreaStyleTags();if (FCKBrowserInfo.IsIE) C+=FCK._GetBehaviorsStyle();else if (FCKConfig.ShowBorders) C+=FCKTools.GetStyleHtml(FCK_ShowTableBordersCSS,true);C+=FCKTools.GetStyleHtml(FCK_InternalCSS,true);A=A.replace(FCKRegexLib.HeadCloser,C+'$&');this.EditingArea.OnLoad=_FCK_EditingArea_OnLoad;this.EditingArea.Start(A);}else{FCK.EditorWindow=null;FCK.EditorDocument=null;FCKDomTools.PaddingNode=null;this.EditingArea.OnLoad=null;this.EditingArea.Start(A);this.EditingArea.Textarea._FCKShowContextMenu=true;FCK.EnterKeyHandler=null;if (B) this.ResetIsDirty();FCK.KeystrokeHandler.AttachToElement(this.EditingArea.Textarea);this.EditingArea.Textarea.focus();FCK.Events.FireEvent('OnAfterSetHTML');};if (FCKBrowserInfo.IsGecko) window.onresize();},RedirectNamedCommands:{},ExecuteNamedCommand:function(A,B,C,D){if (!D) FCKUndo.SaveUndoStep();if (!C&&FCK.RedirectNamedCommands[A]!=null) FCK.ExecuteRedirectedNamedCommand(A,B);else{FCK.Focus();FCK.EditorDocument.execCommand(A,false,B);FCK.Events.FireEvent('OnSelectionChange');};if (!D) FCKUndo.SaveUndoStep();},GetNamedCommandState:function(A){try{if (FCKBrowserInfo.IsSafari&&FCK.EditorWindow&&A.IEquals('Paste')) return 0;if (!FCK.EditorDocument.queryCommandEnabled(A)) return -1;else{return FCK.EditorDocument.queryCommandState(A)?1:0;}}catch (e){return 0;}},GetNamedCommandValue:function(A){var B='';var C=FCK.GetNamedCommandState(A);if (C==-1) return null;try{B=this.EditorDocument.queryCommandValue(A);}catch(e) {};return B?B:'';},Paste:function(A){if (FCK.Status!=2||!FCK.Events.FireEvent('OnPaste')) return false;return A||FCK._ExecPaste();},PasteFromWord:function(){FCKDialog.OpenDialog('FCKDialog_Paste',FCKLang.PasteFromWord,'dialog/fck_paste.html',400,330,'Word');},Preview:function(){var A;if (FCKConfig.FullPage){if (FCK.TempBaseTag.length>0) A=FCK.TempBaseTag+FCK.GetXHTML();else A=FCK.GetXHTML();}else{A=FCKConfig.DocType+'<html dir="'+FCKConfig.ContentLangDirection+'"><head>'+FCK.TempBaseTag+'<title>'+FCKLang.Preview+'</title>'+_FCK_GetEditorAreaStyleTags()+'</head><body'+FCKConfig.GetBodyAttributes()+'>'+FCK.GetXHTML()+'</body></html>';};var B=FCKConfig.ScreenWidth*0.8;var C=FCKConfig.ScreenHeight*0.7;var D=(FCKConfig.ScreenWidth-B)/2;var E='';if (FCK_IS_CUSTOM_DOMAIN&&FCKBrowserInfo.IsIE){window._FCKHtmlToLoad=A;E='javascript:void( (function(){document.open() ;document.domain="'+document.domain+'" ;document.write( window.opener._FCKHtmlToLoad );document.close() ;window.opener._FCKHtmlToLoad = null ;})() )';};var F=window.open(E,null,'toolbar=yes,location=no,status=yes,menubar=yes,scrollbars=yes,resizable=yes,width='+B+',height='+C+',left='+D);if (!FCK_IS_CUSTOM_DOMAIN||!FCKBrowserInfo.IsIE){F.document.write(A);F.document.close();}},SwitchEditMode:function(A){var B=(FCK.EditMode==0);var C=FCK.IsDirty();var D;if (B){FCKCommands.GetCommand('ShowBlocks').SaveState();if (!A&&FCKBrowserInfo.IsIE) FCKUndo.SaveUndoStep();D=FCK.GetXHTML(FCKConfig.FormatSource);if (FCKBrowserInfo.IsIE) FCKTempBin.ToHtml();if (D==null) return false;}else D=this.EditingArea.Textarea.value;FCK.EditMode=B?1:0;FCK.SetData(D,!C);FCK.Focus();FCKTools.RunFunction(FCK.ToolbarSet.RefreshModeState,FCK.ToolbarSet);return true;},InsertElement:function(A){if (typeof A=='string') A=this.EditorDocument.createElement(A);var B=A.nodeName.toLowerCase();FCKSelection.Restore();var C=new FCKDomRange(this.EditorWindow);C.MoveToSelection();C.DeleteContents();if (FCKListsLib.BlockElements[B]!=null){if (C.StartBlock){if (C.CheckStartOfBlock()) C.MoveToPosition(C.StartBlock,3);else if (C.CheckEndOfBlock()) C.MoveToPosition(C.StartBlock,4);else C.SplitBlock();};C.InsertNode(A);var D=FCKDomTools.GetNextSourceElement(A,false,null,['hr','br','param','img','area','input'],true);if (!D&&FCKConfig.EnterMode!='br'){D=this.EditorDocument.body.appendChild(this.EditorDocument.createElement(FCKConfig.EnterMode));if (FCKBrowserInfo.IsGeckoLike) FCKTools.AppendBogusBr(D);};if (FCKListsLib.EmptyElements[B]==null) C.MoveToElementEditStart(A);else if (D) C.MoveToElementEditStart(D);else C.MoveToPosition(A,4);if (FCKBrowserInfo.IsGeckoLike){if (D) FCKDomTools.ScrollIntoView(D,false);FCKDomTools.ScrollIntoView(A,false);}}else{C.InsertNode(A);C.SetStart(A,4);C.SetEnd(A,4);};C.Select();C.Release();this.Focus();return A;},_InsertBlockElement:function(A){},_IsFunctionKey:function(A){if (A>=16&&A<=20) return true;if (A==27||(A>=33&&A<=40)) return true;if (A==45) return true;return false;},_KeyDownListener:function(A){if (!A) A=FCK.EditorWindow.event;if (FCK.EditorWindow){if (!FCK._IsFunctionKey(A.keyCode)&&!(A.ctrlKey||A.metaKey)&&!(A.keyCode==46)) FCK._KeyDownUndo();};return true;},_KeyDownUndo:function(){if (!FCKUndo.Typing){FCKUndo.SaveUndoStep();FCKUndo.Typing=true;FCK.Events.FireEvent("OnSelectionChange");};FCKUndo.TypesCount++;FCKUndo.Changed=1;if (FCKUndo.TypesCount>FCKUndo.MaxTypes){FCKUndo.TypesCount=0;FCKUndo.SaveUndoStep();}},_TabKeyHandler:function(A){if (!A) A=window.event;var B=A.keyCode;if (B==9&&FCK.EditMode!=0){if (FCKBrowserInfo.IsIE){var C=document.selection.createRange();if (C.parentElement()!=FCK.EditingArea.Textarea) return true;C.text='\t';C.select();}else{var a=[];var D=FCK.EditingArea.Textarea;var E=D.selectionStart;var F=D.selectionEnd;a.push(D.value.substr(0,E));a.push('\t');a.push(D.value.substr(F));D.value=a.join('');D.setSelectionRange(E+1,E+1);};if (A.preventDefault) return A.preventDefault();return A.returnValue=false;};return true;}};FCK.Events=new FCKEvents(FCK);FCK.GetHTML=FCK.GetXHTML=FCK.GetData;FCK.SetHTML=FCK.SetData;FCK.InsertElementAndGetIt=FCK.CreateElement=FCK.InsertElement;function _FCK_ProtectEvents_ReplaceTags(A){return A.replace(FCKRegexLib.EventAttributes,_FCK_ProtectEvents_ReplaceEvents);};function _FCK_ProtectEvents_ReplaceEvents(A,B){return ' '+B+'_fckprotectedatt="'+encodeURIComponent(A)+'"';};function _FCK_ProtectEvents_RestoreEvents(A,B){return decodeURIComponent(B);};function _FCK_MouseEventsListener(A){if (!A) A=window.event;if (A.type=='mousedown') FCK.MouseDownFlag=true;else if (A.type=='mouseup') FCK.MouseDownFlag=false;else if (A.type=='mousemove') FCK.Events.FireEvent('OnMouseMove',A);};function _FCK_PaddingNodeListener(){if (FCKConfig.EnterMode.IEquals('br')) return;FCKDomTools.EnforcePaddingNode(FCK.EditorDocument,FCKConfig.EnterMode);if (!FCKBrowserInfo.IsIE&&FCKDomTools.PaddingNode){var A=FCKSelection.GetSelection();if (A&&A.rangeCount==1){var B=A.getRangeAt(0);if (B.collapsed&&B.startContainer==FCK.EditorDocument.body&&B.startOffset==0){B.selectNodeContents(FCKDomTools.PaddingNode);B.collapse(true);A.removeAllRanges();A.addRange(B);}}}else if (FCKDomTools.PaddingNode){var C=FCKSelection.GetParentElement();var D=FCKDomTools.PaddingNode;if (C&&C.nodeName.IEquals('body')){if (FCK.EditorDocument.body.childNodes.length==1&&FCK.EditorDocument.body.firstChild==D){if (FCKSelection._GetSelectionDocument(FCK.EditorDocument.selection)!=FCK.EditorDocument) return;var B=FCK.EditorDocument.body.createTextRange();var F=false;if (!D.childNodes.firstChild){D.appendChild(FCKTools.GetElementDocument(D).createTextNode('\ufeff'));F=true;};B.moveToElementText(D);B.select();if (F) B.pasteHTML('');}}}};function _FCK_EditingArea_OnLoad(){FCK.EditorWindow=FCK.EditingArea.Window;FCK.EditorDocument=FCK.EditingArea.Document;if (FCKBrowserInfo.IsIE) FCKTempBin.ToElements();FCK.InitializeBehaviors();FCK.MouseDownFlag=false;FCKTools.AddEventListener(FCK.EditorDocument,'mousemove',_FCK_MouseEventsListener);FCKTools.AddEventListener(FCK.EditorDocument,'mousedown',_FCK_MouseEventsListener);FCKTools.AddEventListener(FCK.EditorDocument,'mouseup',_FCK_MouseEventsListener);if (FCKBrowserInfo.IsSafari){var A=function(evt){if (!(evt.ctrlKey||evt.metaKey)) return;if (FCK.EditMode!=0) return;switch (evt.keyCode){case 89:FCKUndo.Redo();break;case 90:FCKUndo.Undo();break;}};FCKTools.AddEventListener(FCK.EditorDocument,'keyup',A);};FCK.EnterKeyHandler=new FCKEnterKey(FCK.EditorWindow,FCKConfig.EnterMode,FCKConfig.ShiftEnterMode,FCKConfig.TabSpaces);FCK.KeystrokeHandler.AttachToElement(FCK.EditorDocument);if (FCK._ForceResetIsDirty) FCK.ResetIsDirty();if (FCKBrowserInfo.IsIE&&FCK.HasFocus) FCK.EditorDocument.body.setActive();FCK.OnAfterSetHTML();FCKCommands.GetCommand('ShowBlocks').RestoreState();if (FCK.Status!=0) return;FCK.SetStatus(1);};function _FCK_GetEditorAreaStyleTags(){return FCKTools.GetStyleHtml(FCKConfig.EditorAreaCSS)+FCKTools.GetStyleHtml(FCKConfig.EditorAreaStyles);};function _FCK_KeystrokeHandler_OnKeystroke(A,B){if (FCK.Status!=2) return false;if (FCK.EditMode==0){switch (B){case 'Paste':return!FCK.Paste();case 'Cut':FCKUndo.SaveUndoStep();return false;}}else{if (B.Equals('Paste','Undo','Redo','SelectAll','Cut')) return false;};var C=FCK.Commands.GetCommand(B);if (C.GetState()==-1) return false;return (C.Execute.apply(C,FCKTools.ArgumentsToArray(arguments,2))!==false);};(function(){var A=window.parent.document;var B=A.getElementById(FCK.Name);var i=0;while (B||i==0){if (B&&B.tagName.toLowerCase().Equals('input','textarea')){FCK.LinkedField=B;break;};B=A.getElementsByName(FCK.Name)[i++];}})();var FCKTempBin={Elements:[],AddElement:function(A){var B=this.Elements.length;this.Elements[B]=A;return B;},RemoveElement:function(A){var e=this.Elements[A];this.Elements[A]=null;return e;},Reset:function(){var i=0;while (i<this.Elements.length) this.Elements[i++]=null;this.Elements.length=0;},ToHtml:function(){for (var i=0;i<this.Elements.length;i++){this.Elements[i]='<div>&nbsp;'+this.Elements[i].outerHTML+'</div>';this.Elements[i].isHtml=true;}},ToElements:function(){var A=FCK.EditorDocument.createElement('div');for (var i=0;i<this.Elements.length;i++){if (this.Elements[i].isHtml){A.innerHTML=this.Elements[i];this.Elements[i]=A.firstChild.removeChild(A.firstChild.lastChild);}}}};var FCKFocusManager=FCK.FocusManager={IsLocked:false,AddWindow:function(A,B){var C;if (FCKBrowserInfo.IsIE) C=A.nodeType==1?A:A.frameElement?A.frameElement:A.document;else if (FCKBrowserInfo.IsSafari) C=A;else C=A.document;FCKTools.AddEventListener(C,'blur',FCKFocusManager_Win_OnBlur);FCKTools.AddEventListener(C,'focus',B?FCKFocusManager_Win_OnFocus_Area:FCKFocusManager_Win_OnFocus);},RemoveWindow:function(A){if (FCKBrowserInfo.IsIE) oTarget=A.nodeType==1?A:A.frameElement?A.frameElement:A.document;else oTarget=A.document;FCKTools.RemoveEventListener(oTarget,'blur',FCKFocusManager_Win_OnBlur);FCKTools.RemoveEventListener(oTarget,'focus',FCKFocusManager_Win_OnFocus_Area);FCKTools.RemoveEventListener(oTarget,'focus',FCKFocusManager_Win_OnFocus);},Lock:function(){this.IsLocked=true;},Unlock:function(){if (this._HasPendingBlur) FCKFocusManager._Timer=window.setTimeout(FCKFocusManager_FireOnBlur,100);this.IsLocked=false;},_ResetTimer:function(){this._HasPendingBlur=false;if (this._Timer){window.clearTimeout(this._Timer);delete this._Timer;}}};function FCKFocusManager_Win_OnBlur(){if (typeof(FCK)!='undefined'&&FCK.HasFocus){FCKFocusManager._ResetTimer();FCKFocusManager._Timer=window.setTimeout(FCKFocusManager_FireOnBlur,100);}};function FCKFocusManager_FireOnBlur(){if (FCKFocusManager.IsLocked) FCKFocusManager._HasPendingBlur=true;else{FCK.HasFocus=false;FCK.Events.FireEvent("OnBlur");}};function FCKFocusManager_Win_OnFocus_Area(){if (FCKFocusManager._IsFocusing) return;FCKFocusManager._IsFocusing=true;FCK.Focus();FCKFocusManager_Win_OnFocus();FCKTools.RunFunction(function(){delete FCKFocusManager._IsFocusing;});};function FCKFocusManager_Win_OnFocus(){FCKFocusManager._ResetTimer();if (!FCK.HasFocus&&!FCKFocusManager.IsLocked){FCK.HasFocus=true;FCK.Events.FireEvent("OnFocus");}};(function(){var A=window.frameElement;var B=A.width;var C=A.height;if (/^\d+$/.test(B)) B+='px';if (/^\d+$/.test(C)) C+='px';var D=A.style;D.border=D.padding=D.margin=0;D.backgroundColor='transparent';D.backgroundImage='none';D.width=B;D.height=C;})();
+FCK.Description="FCKeditor for Internet Explorer 5.5+";FCK._GetBehaviorsStyle=function(){if (!FCK._BehaviorsStyle){var A=FCKConfig.BasePath;var B='';var C;C='<style type="text/css" _fcktemp="true">';if (FCKConfig.ShowBorders) B='url('+A+'css/behaviors/showtableborders.htc)';C+='INPUT,TEXTAREA,SELECT,.FCK__Anchor,.FCK__PageBreak,.FCK__InputHidden';if (FCKConfig.DisableObjectResizing){C+=',IMG';B+=' url('+A+'css/behaviors/disablehandles.htc)';};C+=' { behavior: url('+A+'css/behaviors/disablehandles.htc) ; }';if (B.length>0) C+='TABLE { behavior: '+B+' ; }';C+='</style>';FCK._BehaviorsStyle=C;};return FCK._BehaviorsStyle;};function Doc_OnMouseUp(){if (FCK.EditorWindow.event.srcElement.tagName=='HTML'){FCK.Focus();FCK.EditorWindow.event.cancelBubble=true;FCK.EditorWindow.event.returnValue=false;}};function Doc_OnPaste(){var A=FCK.EditorDocument.body;A.detachEvent('onpaste',Doc_OnPaste);var B=FCK.Paste(!FCKConfig.ForcePasteAsPlainText&&!FCKConfig.AutoDetectPasteFromWord);A.attachEvent('onpaste',Doc_OnPaste);return B;};function Doc_OnDblClick(){FCK.OnDoubleClick(FCK.EditorWindow.event.srcElement);FCK.EditorWindow.event.cancelBubble=true;};function Doc_OnSelectionChange(){if (!FCK.IsSelectionChangeLocked&&FCK.EditorDocument) FCK.Events.FireEvent("OnSelectionChange");};function Doc_OnDrop(){if (FCK.MouseDownFlag){FCK.MouseDownFlag=false;return;};if (FCKConfig.ForcePasteAsPlainText){var A=FCK.EditorWindow.event;if (FCK._CheckIsPastingEnabled()||FCKConfig.ShowDropDialog) FCK.PasteAsPlainText(A.dataTransfer.getData('Text'));A.returnValue=false;A.cancelBubble=true;}};FCK.InitializeBehaviors=function(A){this.EditorDocument.attachEvent('onmouseup',Doc_OnMouseUp);this.EditorDocument.body.attachEvent('onpaste',Doc_OnPaste);this.EditorDocument.body.attachEvent('ondrop',Doc_OnDrop);FCK.ContextMenu._InnerContextMenu.AttachToElement(FCK.EditorDocument.body);this.EditorDocument.attachEvent("onkeydown",FCK._KeyDownListener);this.EditorDocument.attachEvent("ondblclick",Doc_OnDblClick);this.EditorDocument.attachEvent("onbeforedeactivate",function(){ FCKSelection.Save(true);});this.EditorDocument.attachEvent("onselectionchange",Doc_OnSelectionChange);FCKTools.AddEventListener(FCK.EditorDocument,'mousedown',Doc_OnMouseDown);};FCK.InsertHtml=function(A){A=FCKConfig.ProtectedSource.Protect(A);A=FCK.ProtectEvents(A);A=FCK.ProtectUrls(A);A=FCK.ProtectTags(A);FCKSelection.Restore();FCK.EditorWindow.focus();FCKUndo.SaveUndoStep();var B=FCKSelection.GetSelection();if (B.type.toLowerCase()=='control') B.clear();A='<span id="__fakeFCKRemove__" style="display:none;">fakeFCKRemove</span>'+A;B.createRange().pasteHTML(A);FCK.EditorDocument.getElementById('__fakeFCKRemove__').removeNode(true);FCKDocumentProcessor.Process(FCK.EditorDocument);this.Events.FireEvent("OnSelectionChange");};FCK.SetInnerHtml=function(A){var B=FCK.EditorDocument;B.body.innerHTML='<div id="__fakeFCKRemove__">&nbsp;</div>'+A;B.getElementById('__fakeFCKRemove__').removeNode(true);};function FCK_PreloadImages(){var A=new FCKImagePreloader();A.AddImages(FCKConfig.PreloadImages);A.AddImages(FCKConfig.SkinPath+'fck_strip.gif');A.OnComplete=LoadToolbarSetup;A.Start();};function Document_OnContextMenu(){return (event.srcElement._FCKShowContextMenu==true);};document.oncontextmenu=Document_OnContextMenu;function FCK_Cleanup(){this.LinkedField=null;this.EditorWindow=null;this.EditorDocument=null;};FCK._ExecPaste=function(){if (FCK._PasteIsRunning) return true;if (FCKConfig.ForcePasteAsPlainText){FCK.PasteAsPlainText();return false;};var A=FCK._CheckIsPastingEnabled(true);if (A===false) FCKTools.RunFunction(FCKDialog.OpenDialog,FCKDialog,['FCKDialog_Paste',FCKLang.Paste,'dialog/fck_paste.html',400,330,'Security']);else{if (FCKConfig.AutoDetectPasteFromWord&&A.length>0){var B=/<\w[^>]*(( class="?MsoNormal"?)|(="mso-))/gi;if (B.test(A)){if (confirm(FCKLang.PasteWordConfirm)){FCK.PasteFromWord();return false;}}};FCK._PasteIsRunning=true;FCK.ExecuteNamedCommand('Paste');delete FCK._PasteIsRunning;};return false;};FCK.PasteAsPlainText=function(A){if (!FCK._CheckIsPastingEnabled()){FCKDialog.OpenDialog('FCKDialog_Paste',FCKLang.PasteAsText,'dialog/fck_paste.html',400,330,'PlainText');return;};var B=null;if (!A) B=clipboardData.getData("Text");else B=A;if (B&&B.length>0){B=FCKTools.HTMLEncode(B);B=FCKTools.ProcessLineBreaks(window,FCKConfig,B);var C=B.search('</p>');var D=B.search('<p>');if ((C!=-1&&D!=-1&&C<D)||(C!=-1&&D==-1)){var E=B.substr(0,C);B=B.substr(C+4);this.InsertHtml(E);};FCKUndo.SaveLocked=true;this.InsertHtml(B);FCKUndo.SaveLocked=false;}};FCK._CheckIsPastingEnabled=function(A){FCK._PasteIsEnabled=false;document.body.attachEvent('onpaste',FCK_CheckPasting_Listener);var B=FCK.GetClipboardHTML();document.body.detachEvent('onpaste',FCK_CheckPasting_Listener);if (FCK._PasteIsEnabled){if (!A) B=true;}else B=false;delete FCK._PasteIsEnabled;return B;};function FCK_CheckPasting_Listener(){FCK._PasteIsEnabled=true;};FCK.GetClipboardHTML=function(){var A=document.getElementById('___FCKHiddenDiv');if (!A){A=document.createElement('DIV');A.id='___FCKHiddenDiv';var B=A.style;B.position='absolute';B.visibility=B.overflow='hidden';B.width=B.height=1;document.body.appendChild(A);};A.innerHTML='';var C=document.body.createTextRange();C.moveToElementText(A);C.execCommand('Paste');var D=A.innerHTML;A.innerHTML='';return D;};FCK.CreateLink=function(A,B){var C=[];FCK.ExecuteNamedCommand('Unlink',null,false,!!B);if (A.length>0){if (FCKSelection.GetType()=='Control'){var D=this.EditorDocument.createElement('A');D.href=A;var E=FCKSelection.GetSelectedElement();E.parentNode.insertBefore(D,E);E.parentNode.removeChild(E);D.appendChild(E);return [D];};var F='javascript:void(0);/*'+(new Date().getTime())+'*/';FCK.ExecuteNamedCommand('CreateLink',F,false,!!B);var G=this.EditorDocument.links;for (i=0;i<G.length;i++){var D=G[i];if (D.getAttribute('href',2)==F){var I=D.innerHTML;D.href=A;D.innerHTML=I;var J=D.lastChild;if (J&&J.nodeName=='BR'){FCKDomTools.InsertAfterNode(D,D.removeChild(J));};C.push(D);}}};return C;};function _FCK_RemoveDisabledAtt(){this.removeAttribute('disabled');};function Doc_OnMouseDown(A){var e=A.srcElement;if (e.nodeName.IEquals('input')&&e.type.IEquals(['radio','checkbox'])&&!e.disabled){e.disabled=true;FCKTools.SetTimeout(_FCK_RemoveDisabledAtt,1,e);}};
+var FCKConfig=FCK.Config={};if (document.location.protocol=='file:'){FCKConfig.BasePath=decodeURIComponent(document.location.pathname.substr(1));FCKConfig.BasePath=FCKConfig.BasePath.replace(/\\/gi,'/');var sFullProtocol=document.location.href.match(/^(file\:\/{2,3})/)[1];if (FCKBrowserInfo.IsOpera) sFullProtocol+='localhost/';FCKConfig.BasePath=sFullProtocol+FCKConfig.BasePath.substring(0,FCKConfig.BasePath.lastIndexOf('/')+1);}else FCKConfig.BasePath=document.location.protocol+'//'+document.location.host+document.location.pathname.substring(0,document.location.pathname.lastIndexOf('/')+1);FCKConfig.FullBasePath=FCKConfig.BasePath;FCKConfig.EditorPath=FCKConfig.BasePath.replace(/editor\/$/,'');try{FCKConfig.ScreenWidth=screen.width;FCKConfig.ScreenHeight=screen.height;}catch (e){FCKConfig.ScreenWidth=800;FCKConfig.ScreenHeight=600;};FCKConfig.ProcessHiddenField=function(){this.PageConfig={};var A=window.parent.document.getElementById(FCK.Name+'___Config');if (!A) return;var B=A.value.split('&');for (var i=0;i<B.length;i++){if (B[i].length==0) continue;var C=B[i].split('=');var D=decodeURIComponent(C[0]);var E=decodeURIComponent(C[1]);if (D=='CustomConfigurationsPath') FCKConfig[D]=E;else if (E.toLowerCase()=="true") this.PageConfig[D]=true;else if (E.toLowerCase()=="false") this.PageConfig[D]=false;else if (E.length>0&&!isNaN(E)) this.PageConfig[D]=parseInt(E,10);else this.PageConfig[D]=E;}};function FCKConfig_LoadPageConfig(){var A=FCKConfig.PageConfig;for (var B in A) FCKConfig[B]=A[B];};function FCKConfig_PreProcess(){var A=FCKConfig;if (A.AllowQueryStringDebug){try{if ((/fckdebug=true/i).test(window.top.location.search)) A.Debug=true;}catch (e) {  }};if (!A.PluginsPath.EndsWith('/')) A.PluginsPath+='/';var B=A.ToolbarComboPreviewCSS;if (!B||B.length==0) A.ToolbarComboPreviewCSS=A.EditorAreaCSS;A.RemoveAttributesArray=(A.RemoveAttributes||'').split(',');if (!FCKConfig.SkinEditorCSS||FCKConfig.SkinEditorCSS.length==0) FCKConfig.SkinEditorCSS=FCKConfig.SkinPath+'fck_editor.css';if (!FCKConfig.SkinDialogCSS||FCKConfig.SkinDialogCSS.length==0) FCKConfig.SkinDialogCSS=FCKConfig.SkinPath+'fck_dialog.css';};FCKConfig.ToolbarSets={};FCKConfig.Plugins={};FCKConfig.Plugins.Items=[];FCKConfig.Plugins.Add=function(A,B,C){FCKConfig.Plugins.Items.AddItem([A,B,C]);};FCKConfig.ProtectedSource={};FCKConfig.ProtectedSource._CodeTag=(new Date()).valueOf();FCKConfig.ProtectedSource.RegexEntries=[/<!--[\s\S]*?-->/g,/<script[\s\S]*?<\/script>/gi,/<noscript[\s\S]*?<\/noscript>/gi];FCKConfig.ProtectedSource.Add=function(A){this.RegexEntries.AddItem(A);};FCKConfig.ProtectedSource.Protect=function(A){var B=this._CodeTag;function _Replace(protectedSource){var C=FCKTempBin.AddElement(protectedSource);return '<!--{'+B+C+'}-->';};for (var i=0;i<this.RegexEntries.length;i++){A=A.replace(this.RegexEntries[i],_Replace);};return A;};FCKConfig.ProtectedSource.Revert=function(A,B){function _Replace(m,opener,index){var C=B?FCKTempBin.RemoveElement(index):FCKTempBin.Elements[index];return FCKConfig.ProtectedSource.Revert(C,B);};var D=new RegExp("(<|&lt;)!--\\{"+this._CodeTag+"(\\d+)\\}--(>|&gt;)","g");return A.replace(D,_Replace);};FCKConfig.GetBodyAttributes=function(){var A='';if (this.BodyId&&this.BodyId.length>0) A+=' id="'+this.BodyId+'"';if (this.BodyClass&&this.BodyClass.length>0) A+=' class="'+this.BodyClass+'"';return A;};FCKConfig.ApplyBodyAttributes=function(A){if (this.BodyId&&this.BodyId.length>0) A.id=FCKConfig.BodyId;if (this.BodyClass&&this.BodyClass.length>0) A.className+=' '+FCKConfig.BodyClass;};
+var FCKDebug={Output:function(){},OutputObject:function(){}};
+var FCKDomTools={MoveChildren:function(A,B,C){if (A==B) return;var D;if (C){while ((D=A.lastChild)) B.insertBefore(A.removeChild(D),B.firstChild);}else{while ((D=A.firstChild)) B.appendChild(A.removeChild(D));}},MoveNode:function(A,B,C){if (C) B.insertBefore(FCKDomTools.RemoveNode(A),B.firstChild);else B.appendChild(FCKDomTools.RemoveNode(A));},TrimNode:function(A){this.LTrimNode(A);this.RTrimNode(A);},LTrimNode:function(A){var B;while ((B=A.firstChild)){if (B.nodeType==3){var C=B.nodeValue.LTrim();var D=B.nodeValue.length;if (C.length==0){A.removeChild(B);continue;}else if (C.length<D){B.splitText(D-C.length);A.removeChild(A.firstChild);}};break;}},RTrimNode:function(A){var B;while ((B=A.lastChild)){if (B.nodeType==3){var C=B.nodeValue.RTrim();var D=B.nodeValue.length;if (C.length==0){B.parentNode.removeChild(B);continue;}else if (C.length<D){B.splitText(C.length);A.lastChild.parentNode.removeChild(A.lastChild);}};break;};if (!FCKBrowserInfo.IsIE&&!FCKBrowserInfo.IsOpera){B=A.lastChild;if (B&&B.nodeType==1&&B.nodeName.toLowerCase()=='br'){B.parentNode.removeChild(B);}}},RemoveNode:function(A,B){if (B){var C;while ((C=A.firstChild)) A.parentNode.insertBefore(A.removeChild(C),A);};return A.parentNode.removeChild(A);},GetFirstChild:function(A,B){if (typeof (B)=='string') B=[B];var C=A.firstChild;while(C){if (C.nodeType==1&&C.tagName.Equals.apply(C.tagName,B)) return C;C=C.nextSibling;};return null;},GetLastChild:function(A,B){if (typeof (B)=='string') B=[B];var C=A.lastChild;while(C){if (C.nodeType==1&&(!B||C.tagName.Equals(B))) return C;C=C.previousSibling;};return null;},GetPreviousSourceElement:function(A,B,C,D){if (!A) return null;if (C&&A.nodeType==1&&A.nodeName.IEquals(C)) return null;if (A.previousSibling) A=A.previousSibling;else return this.GetPreviousSourceElement(A.parentNode,B,C,D);while (A){if (A.nodeType==1){if (C&&A.nodeName.IEquals(C)) break;if (!D||!A.nodeName.IEquals(D)) return A;}else if (B&&A.nodeType==3&&A.nodeValue.RTrim().length>0) break;if (A.lastChild) A=A.lastChild;else return this.GetPreviousSourceElement(A,B,C,D);};return null;},GetNextSourceElement:function(A,B,C,D,E){while((A=this.GetNextSourceNode(A,E))){if (A.nodeType==1){if (C&&A.nodeName.IEquals(C)) break;if (D&&A.nodeName.IEquals(D)) return this.GetNextSourceElement(A,B,C,D);return A;}else if (B&&A.nodeType==3&&A.nodeValue.RTrim().length>0) break;};return null;},GetNextSourceNode:function(A,B,C,D){if (!A) return null;var E;if (!B&&A.firstChild) E=A.firstChild;else{if (D&&A==D) return null;E=A.nextSibling;if (!E&&(!D||D!=A.parentNode)) return this.GetNextSourceNode(A.parentNode,true,C,D);};if (C&&E&&E.nodeType!=C) return this.GetNextSourceNode(E,false,C,D);return E;},GetPreviousSourceNode:function(A,B,C,D){if (!A) return null;var E;if (!B&&A.lastChild) E=A.lastChild;else{if (D&&A==D) return null;E=A.previousSibling;if (!E&&(!D||D!=A.parentNode)) return this.GetPreviousSourceNode(A.parentNode,true,C,D);};if (C&&E&&E.nodeType!=C) return this.GetPreviousSourceNode(E,false,C,D);return E;},InsertAfterNode:function(A,B){return A.parentNode.insertBefore(B,A.nextSibling);},GetParents:function(A){var B=[];while (A){B.unshift(A);A=A.parentNode;};return B;},GetCommonParents:function(A,B){var C=this.GetParents(A);var D=this.GetParents(B);var E=[];for (var i=0;i<C.length;i++){if (C[i]==D[i]) E.push(C[i]);};return E;},GetCommonParentNode:function(A,B,C){var D={};if (!C.pop) C=[C];while (C.length>0) D[C.pop().toLowerCase()]=1;var E=this.GetCommonParents(A,B);var F=null;while ((F=E.pop())){if (D[F.nodeName.toLowerCase()]) return F;};return null;},GetIndexOf:function(A){var B=A.parentNode?A.parentNode.firstChild:null;var C=-1;while (B){C++;if (B==A) return C;B=B.nextSibling;};return-1;},PaddingNode:null,EnforcePaddingNode:function(A,B){try{if (!A||!A.body) return;}catch (e){return;};this.CheckAndRemovePaddingNode(A,B,true);try{if (A.body.lastChild&&(A.body.lastChild.nodeType!=1||A.body.lastChild.tagName.toLowerCase()==B.toLowerCase())) return;}catch (e){return;};var C=A.createElement(B);if (FCKBrowserInfo.IsGecko&&FCKListsLib.NonEmptyBlockElements[B]) FCKTools.AppendBogusBr(C);this.PaddingNode=C;if (A.body.childNodes.length==1&&A.body.firstChild.nodeType==1&&A.body.firstChild.tagName.toLowerCase()=='br'&&(A.body.firstChild.getAttribute('_moz_dirty')!=null||A.body.firstChild.getAttribute('type')=='_moz')) A.body.replaceChild(C,A.body.firstChild);else A.body.appendChild(C);},CheckAndRemovePaddingNode:function(A,B,C){var D=this.PaddingNode;if (!D) return;try{if (D.parentNode!=A.body||D.tagName.toLowerCase()!=B||(D.childNodes.length>1)||(D.firstChild&&D.firstChild.nodeValue!='\xa0'&&String(D.firstChild.tagName).toLowerCase()!='br')){this.PaddingNode=null;return;}}catch (e){this.PaddingNode=null;return;};if (!C){if (D.parentNode.childNodes.length>1) D.parentNode.removeChild(D);this.PaddingNode=null;}},HasAttribute:function(A,B){if (A.hasAttribute) return A.hasAttribute(B);else{var C=A.attributes[B];return (C!=undefined&&C.specified);}},HasAttributes:function(A){var B=A.attributes;for (var i=0;i<B.length;i++){if (FCKBrowserInfo.IsIE&&B[i].nodeName=='class'){if (A.className.length>0) return true;}else if (B[i].specified) return true;};return false;},RemoveAttribute:function(A,B){if (FCKBrowserInfo.IsIE&&B.toLowerCase()=='class') B='className';return A.removeAttribute(B,0);},RemoveAttributes:function (A,B){for (var i=0;i<B.length;i++) this.RemoveAttribute(A,B[i]);},GetAttributeValue:function(A,B){var C=B;if (typeof B=='string') B=A.attributes[B];else C=B.nodeName;if (B&&B.specified){if (C=='style') return A.style.cssText;else if (C=='class'||C.indexOf('on')==0) return B.nodeValue;else{return A.getAttribute(C,2);}};return null;},Contains:function(A,B){if (A.contains&&B.nodeType==1) return A.contains(B);while ((B=B.parentNode)){if (B==A) return true;};return false;},BreakParent:function(A,B,C){var D=C||new FCKDomRange(FCKTools.GetElementWindow(A));D.SetStart(A,4);D.SetEnd(B,4);var E=D.ExtractContents();D.InsertNode(A.parentNode.removeChild(A));E.InsertAfterNode(A);D.Release(!!C);},GetNodeAddress:function(A,B){var C=[];while (A&&A!=FCKTools.GetElementDocument(A).documentElement){var D=A.parentNode;var E=-1;for(var i=0;i<D.childNodes.length;i++){var F=D.childNodes[i];if (B===true&&F.nodeType==3&&F.previousSibling&&F.previousSibling.nodeType==3) continue;E++;if (D.childNodes[i]==A) break;};C.unshift(E);A=A.parentNode;};return C;},GetNodeFromAddress:function(A,B,C){var D=A.documentElement;for (var i=0;i<B.length;i++){var E=B[i];if (!C){D=D.childNodes[E];continue;};var F=-1;for (var j=0;j<D.childNodes.length;j++){var G=D.childNodes[j];if (C===true&&G.nodeType==3&&G.previousSibling&&G.previousSibling.nodeType==3) continue;F++;if (F==E){D=G;break;}}};return D;},CloneElement:function(A){A=A.cloneNode(false);A.removeAttribute('id',false);return A;},ClearElementJSProperty:function(A,B){if (FCKBrowserInfo.IsIE) A.removeAttribute(B);else delete A[B];},SetElementMarker:function (A,B,C,D){var E=String(parseInt(Math.random()*0xffffffff,10));B._FCKMarkerId=E;B[C]=D;if (!A[E]) A[E]={ 'element':B,'markers':{} };A[E]['markers'][C]=D;},ClearElementMarkers:function(A,B,C){var D=B._FCKMarkerId;if (!D) return;this.ClearElementJSProperty(B,'_FCKMarkerId');for (var j in A[D]['markers']) this.ClearElementJSProperty(B,j);if (C) delete A[D];},ClearAllMarkers:function(A){for (var i in A) this.ClearElementMarkers(A,A[i]['element'],true);},ListToArray:function(A,B,C,D,E){if (!A.nodeName.IEquals(['ul','ol'])) return [];if (!D) D=0;if (!C) C=[];for (var i=0;i<A.childNodes.length;i++){var F=A.childNodes[i];if (!F.nodeName.IEquals('li')) continue;var G={ 'parent':A,'indent':D,'contents':[] };if (!E){G.grandparent=A.parentNode;if (G.grandparent&&G.grandparent.nodeName.IEquals('li')) G.grandparent=G.grandparent.parentNode;}else G.grandparent=E;if (B) this.SetElementMarker(B,F,'_FCK_ListArray_Index',C.length);C.push(G);for (var j=0;j<F.childNodes.length;j++){var H=F.childNodes[j];if (H.nodeName.IEquals(['ul','ol'])) this.ListToArray(H,B,C,D+1,G.grandparent);else G.contents.push(H);}};return C;},ArrayToList:function(A,B,C){if (C==undefined) C=0;if (!A||A.length<C+1) return null;var D=FCKTools.GetElementDocument(A[C].parent);var E=D.createDocumentFragment();var F=null;var G=C;var H=Math.max(A[C].indent,0);var I=null;while (true){var J=A[G];if (J.indent==H){if (!F||A[G].parent.nodeName!=F.nodeName){F=A[G].parent.cloneNode(false);E.appendChild(F);};I=D.createElement('li');F.appendChild(I);for (var i=0;i<J.contents.length;i++) I.appendChild(J.contents[i].cloneNode(true));G++;}else if (J.indent==Math.max(H,0)+1){var K=this.ArrayToList(A,null,G);I.appendChild(K.listNode);G=K.nextIndex;}else if (J.indent==-1&&C==0&&J.grandparent){var I;if (J.grandparent.nodeName.IEquals(['ul','ol'])) I=D.createElement('li');else{if (FCKConfig.EnterMode.IEquals(['div','p'])&&!J.grandparent.nodeName.IEquals('td')) I=D.createElement(FCKConfig.EnterMode);else I=D.createDocumentFragment();};for (var i=0;i<J.contents.length;i++) I.appendChild(J.contents[i].cloneNode(true));if (I.nodeType==11){if (I.lastChild&&I.lastChild.getAttribute&&I.lastChild.getAttribute('type')=='_moz') I.removeChild(I.lastChild);I.appendChild(D.createElement('br'));};if (I.nodeName.IEquals(FCKConfig.EnterMode)&&I.firstChild){this.TrimNode(I);if (FCKListsLib.BlockBoundaries[I.firstChild.nodeName.toLowerCase()]){var M=D.createDocumentFragment();while (I.firstChild) M.appendChild(I.removeChild(I.firstChild));I=M;}};if (FCKBrowserInfo.IsGeckoLike&&I.nodeName.IEquals(['div','p'])) FCKTools.AppendBogusBr(I);E.appendChild(I);F=null;G++;}else return null;if (A.length<=G||Math.max(A[G].indent,0)<H){break;}};if (B){var N=E.firstChild;while (N){if (N.nodeType==1) this.ClearElementMarkers(B,N);N=this.GetNextSourceNode(N);}};return { 'listNode':E,'nextIndex':G };},GetNextSibling:function(A,B){A=A.nextSibling;while (A&&!B&&A.nodeType!=1&&(A.nodeType!=3||A.nodeValue.length==0)) A=A.nextSibling;return A;},GetPreviousSibling:function(A,B){A=A.previousSibling;while (A&&!B&&A.nodeType!=1&&(A.nodeType!=3||A.nodeValue.length==0)) A=A.previousSibling;return A;},CheckIsEmptyElement:function(A,B){var C=A.firstChild;var D;while (C){if (C.nodeType==1){if (D||!FCKListsLib.InlineNonEmptyElements[C.nodeName.toLowerCase()]) return false;if (!B||B(C)===true) D=C;}else if (C.nodeType==3&&C.nodeValue.length>0) return false;C=C.nextSibling;};return D?this.CheckIsEmptyElement(D,B):true;},SetElementStyles:function(A,B){var C=A.style;for (var D in B) C[D]=B[D];},SetOpacity:function(A,B){if (FCKBrowserInfo.IsIE){B=Math.round(B*100);A.style.filter=(B>100?'':'progid:DXImageTransform.Microsoft.Alpha(opacity='+B+')');}else A.style.opacity=B;},GetCurrentElementStyle:function(A,B){if (FCKBrowserInfo.IsIE) return A.currentStyle[B];else return A.ownerDocument.defaultView.getComputedStyle(A,'').getPropertyValue(B);},GetPositionedAncestor:function(A){var B=A;while (B!=FCKTools.GetElementDocument(B).documentElement){if (this.GetCurrentElementStyle(B,'position')!='static') return B;if (B==FCKTools.GetElementDocument(B).documentElement&&currentWindow!=w) B=currentWindow.frameElement;else B=B.parentNode;};return null;},ScrollIntoView:function(A,B){var C=FCKTools.GetElementWindow(A);var D=FCKTools.GetViewPaneSize(C).Height;var E=D*-1;if (B===false){E+=A.offsetHeight||0;E+=parseInt(this.GetCurrentElementStyle(A,'marginBottom')||0,10)||0;};var F=FCKTools.GetDocumentPosition(C,A);E+=F.y;var G=FCKTools.GetScrollPosition(C).Y;if (E>0&&(E>G||E<G-D)) C.scrollTo(0,E);},CheckIsEditable:function(A){var B=A.nodeName.toLowerCase();var C=FCK.DTD[B]||FCK.DTD.span;return (C['#']&&!FCKListsLib.NonEditableElements[B]);},GetSelectedDivContainers:function(){var A=[];var B=new FCKDomRange(FCK.EditorWindow);B.MoveToSelection();var C=B.GetTouchedStartNode();var D=B.GetTouchedEndNode();var E=C;if (C==D){while (D.nodeType==1&&D.lastChild) D=D.lastChild;D=FCKDomTools.GetNextSourceNode(D);}while (E&&E!=D){if (E.nodeType!=3||!/^[ \t\n]*$/.test(E.nodeValue)){var F=new FCKElementPath(E);var G=F.BlockLimit;if (G&&G.nodeName.IEquals('div')&&A.IndexOf(G)==-1) A.push(G);};E=FCKDomTools.GetNextSourceNode(E);};return A;}};
+var FCKTools={};FCKTools.CreateBogusBR=function(A){var B=A.createElement('br');B.setAttribute('type','_moz');return B;};FCKTools.FixCssUrls=function(A,B){if (!A||A.length==0) return B;return B.replace(/url\s*\(([\s'"]*)(.*?)([\s"']*)\)/g,function(match,opener,path,closer){if (/^\/|^\w?:/.test(path)) return match;else return 'url('+opener+A+path+closer+')';});};FCKTools._GetUrlFixedCss=function(A,B){var C=A.match(/^([^|]+)\|([\s\S]*)/);if (C) return FCKTools.FixCssUrls(C[1],C[2]);else return A;};FCKTools.AppendStyleSheet=function(A,B){if (!B) return [];if (typeof(B)=='string'){if (/[\\\/\.][^{}]*$/.test(B)){return this.AppendStyleSheet(A,B.split(','));}else return [this.AppendStyleString(A,FCKTools._GetUrlFixedCss(B))];}else{var C=[];for (var i=0;i<B.length;i++) C.push(this._AppendStyleSheet(A,B[i]));return C;}};FCKTools.GetStyleHtml=(function(){var A=function(styleDef,markTemp){if (styleDef.length==0) return '';var B=markTemp?' _fcktemp="true"':'';return '<style type="text/css"'+B+'>'+styleDef+'</style>';};var C=function(cssFileUrl,markTemp){if (cssFileUrl.length==0) return '';var B=markTemp?' _fcktemp="true"':'';return '<link href="'+cssFileUrl+'" type="text/css" rel="stylesheet" '+B+'/>';};return function(cssFileOrArrayOrDef,markTemp){if (!cssFileOrArrayOrDef) return '';if (typeof(cssFileOrArrayOrDef)=='string'){if (/[\\\/\.][^{}]*$/.test(cssFileOrArrayOrDef)){return this.GetStyleHtml(cssFileOrArrayOrDef.split(','),markTemp);}else return A(this._GetUrlFixedCss(cssFileOrArrayOrDef),markTemp);}else{var E='';for (var i=0;i<cssFileOrArrayOrDef.length;i++) E+=C(cssFileOrArrayOrDef[i],markTemp);return E;}}})();FCKTools.GetElementDocument=function (A){return A.ownerDocument||A.document;};FCKTools.GetElementWindow=function(A){return this.GetDocumentWindow(this.GetElementDocument(A));};FCKTools.GetDocumentWindow=function(A){if (FCKBrowserInfo.IsSafari&&!A.parentWindow) this.FixDocumentParentWindow(window.top);return A.parentWindow||A.defaultView;};FCKTools.FixDocumentParentWindow=function(A){if (A.document) A.document.parentWindow=A;for (var i=0;i<A.frames.length;i++) FCKTools.FixDocumentParentWindow(A.frames[i]);};FCKTools.HTMLEncode=function(A){if (!A) return '';A=A.replace(/&/g,'&amp;');A=A.replace(/</g,'&lt;');A=A.replace(/>/g,'&gt;');return A;};FCKTools.HTMLDecode=function(A){if (!A) return '';A=A.replace(/&gt;/g,'>');A=A.replace(/&lt;/g,'<');A=A.replace(/&amp;/g,'&');return A;};FCKTools._ProcessLineBreaksForPMode=function(A,B,C,D,E){var F=0;var G="<p>";var H="</p>";var I="<br />";if (C){G="<li>";H="</li>";F=1;}while (D&&D!=A.FCK.EditorDocument.body){if (D.tagName.toLowerCase()=='p'){F=1;break;};D=D.parentNode;};for (var i=0;i<B.length;i++){var c=B.charAt(i);if (c=='\r') continue;if (c!='\n'){E.push(c);continue;};var n=B.charAt(i+1);if (n=='\r'){i++;n=B.charAt(i+1);};if (n=='\n'){i++;if (F) E.push(H);E.push(G);F=1;}else E.push(I);}};FCKTools._ProcessLineBreaksForDivMode=function(A,B,C,D,E){var F=0;var G="<div>";var H="</div>";if (C){G="<li>";H="</li>";F=1;}while (D&&D!=A.FCK.EditorDocument.body){if (D.tagName.toLowerCase()=='div'){F=1;break;};D=D.parentNode;};for (var i=0;i<B.length;i++){var c=B.charAt(i);if (c=='\r') continue;if (c!='\n'){E.push(c);continue;};if (F){if (E[E.length-1]==G){E.push("&nbsp;");};E.push(H);};E.push(G);F=1;};if (F) E.push(H);};FCKTools._ProcessLineBreaksForBrMode=function(A,B,C,D,E){var F=0;var G="<br />";var H="";if (C){G="<li>";H="</li>";F=1;};for (var i=0;i<B.length;i++){var c=B.charAt(i);if (c=='\r') continue;if (c!='\n'){E.push(c);continue;};if (F&&H.length) E.push (H);E.push(G);F=1;}};FCKTools.ProcessLineBreaks=function(A,B,C){var D=B.EnterMode.toLowerCase();var E=[];var F=0;var G=new A.FCKDomRange(A.FCK.EditorWindow);G.MoveToSelection();var H=G._Range.startContainer;while (H&&H.nodeType!=1) H=H.parentNode;if (H&&H.tagName.toLowerCase()=='li') F=1;if (D=='p') this._ProcessLineBreaksForPMode(A,C,F,H,E);else if (D=='div') this._ProcessLineBreaksForDivMode(A,C,F,H,E);else if (D=='br') this._ProcessLineBreaksForBrMode(A,C,F,H,E);return E.join("");};FCKTools.AddSelectOption=function(A,B,C){var D=FCKTools.GetElementDocument(A).createElement("OPTION");D.text=B;D.value=C;A.options.add(D);return D;};FCKTools.RunFunction=function(A,B,C,D){if (A) this.SetTimeout(A,0,B,C,D);};FCKTools.SetTimeout=function(A,B,C,D,E){return (E||window).setTimeout(function(){if (D) A.apply(C,[].concat(D));else A.apply(C);},B);};FCKTools.SetInterval=function(A,B,C,D,E){return (E||window).setInterval(function(){A.apply(C,D||[]);},B);};FCKTools.ConvertStyleSizeToHtml=function(A){return A.EndsWith('%')?A:parseInt(A,10);};FCKTools.ConvertHtmlSizeToStyle=function(A){return A.EndsWith('%')?A:(A+'px');};FCKTools.GetElementAscensor=function(A,B){var e=A;var C=","+B.toUpperCase()+",";while (e){if (C.indexOf(","+e.nodeName.toUpperCase()+",")!=-1) return e;e=e.parentNode;};return null;};FCKTools.CreateEventListener=function(A,B){var f=function(){var C=[];for (var i=0;i<arguments.length;i++) C.push(arguments[i]);A.apply(this,C.concat(B));};return f;};FCKTools.IsStrictMode=function(A){return ('CSS1Compat'==(A.compatMode||(FCKBrowserInfo.IsSafari?'CSS1Compat':null)));};FCKTools.ArgumentsToArray=function(A,B,C){B=B||0;C=C||A.length;var D=[];for (var i=B;i<B+C&&i<A.length;i++) D.push(A[i]);return D;};FCKTools.CloneObject=function(A){var B=function() {};B.prototype=A;return new B;};FCKTools.AppendBogusBr=function(A){if (!A) return;var B=this.GetLastItem(A.getElementsByTagName('br'));if (!B||(B.getAttribute('type',2)!='_moz'&&B.getAttribute('_moz_dirty')==null)){var C=this.GetElementDocument(A);if (FCKBrowserInfo.IsOpera) A.appendChild(C.createTextNode(''));else A.appendChild(this.CreateBogusBR(C));}};FCKTools.GetLastItem=function(A){if (A.length>0) return A[A.length-1];return null;};FCKTools.GetDocumentPosition=function(w,A){var x=0;var y=0;var B=A;var C=null;var D=FCKTools.GetElementWindow(B);while (B&&!(D==w&&(B==w.document.body||B==w.document.documentElement))){x+=B.offsetLeft-B.scrollLeft;y+=B.offsetTop-B.scrollTop;if (!FCKBrowserInfo.IsOpera){var E=C;while (E&&E!=B){x-=E.scrollLeft;y-=E.scrollTop;E=E.parentNode;}};C=B;if (B.offsetParent) B=B.offsetParent;else{if (D!=w){B=D.frameElement;C=null;if (B) D=B.contentWindow.parent;}else B=null;}};if (FCKDomTools.GetCurrentElementStyle(w.document.body,'position')!='static'||(FCKBrowserInfo.IsIE&&FCKDomTools.GetPositionedAncestor(A)==null)){x+=w.document.body.offsetLeft;y+=w.document.body.offsetTop;};return { "x":x,"y":y };};FCKTools.GetWindowPosition=function(w,A){var B=this.GetDocumentPosition(w,A);var C=FCKTools.GetScrollPosition(w);B.x-=C.X;B.y-=C.Y;return B;};FCKTools.ProtectFormStyles=function(A){if (!A||A.nodeType!=1||A.tagName.toLowerCase()!='form') return [];var B=[];var C=['style','className'];for (var i=0;i<C.length;i++){var D=C[i];if (A.elements.namedItem(D)){var E=A.elements.namedItem(D);B.push([E,E.nextSibling]);A.removeChild(E);}};return B;};FCKTools.RestoreFormStyles=function(A,B){if (!A||A.nodeType!=1||A.tagName.toLowerCase()!='form') return;if (B.length>0){for (var i=B.length-1;i>=0;i--){var C=B[i][0];var D=B[i][1];if (D) A.insertBefore(C,D);else A.appendChild(C);}}};FCKTools.GetNextNode=function(A,B){if (A.firstChild) return A.firstChild;else if (A.nextSibling) return A.nextSibling;else{var C=A.parentNode;while (C){if (C==B) return null;if (C.nextSibling) return C.nextSibling;else C=C.parentNode;}};return null;};FCKTools.GetNextTextNode=function(A,B,C){node=this.GetNextNode(A,B);if (C&&node&&C(node)) return null;while (node&&node.nodeType!=3){node=this.GetNextNode(node,B);if (C&&node&&C(node)) return null;};return node;};FCKTools.Merge=function(){var A=arguments;var o=A[0];for (var i=1;i<A.length;i++){var B=A[i];for (var p in B) o[p]=B[p];};return o;};FCKTools.IsArray=function(A){return (A instanceof Array);};FCKTools.AppendLengthProperty=function(A,B){var C=0;for (var n in A) C++;return A[B||'length']=C;};FCKTools.NormalizeCssText=function(A){var B=document.createElement('span');B.style.cssText=A;return B.style.cssText;};FCKTools.Bind=function(A,B){return function(){ return B.apply(A,arguments);};};FCKTools.GetVoidUrl=function(){if (FCK_IS_CUSTOM_DOMAIN) return "javascript: void( function(){document.open();document.write('<html><head><title></title></head><body></body></html>');document.domain = '"+FCK_RUNTIME_DOMAIN+"';document.close();}() ) ;";if (FCKBrowserInfo.IsIE){if (FCKBrowserInfo.IsIE7||!FCKBrowserInfo.IsIE6) return "";else return "javascript: '';";};return "javascript: void(0);";};FCKTools.ResetStyles=function(A){A.style.cssText='margin:0;padding:0;border:0;background-color:transparent;background-image:none;';};
+FCKTools.CancelEvent=function(e){return false;};FCKTools._AppendStyleSheet=function(A,B){return A.createStyleSheet(B).owningElement;};FCKTools.AppendStyleString=function(A,B){if (!B) return null;var s=A.createStyleSheet("");s.cssText=B;return s;};FCKTools.ClearElementAttributes=function(A){A.clearAttributes();};FCKTools.GetAllChildrenIds=function(A){var B=[];for (var i=0;i<A.all.length;i++){var C=A.all[i].id;if (C&&C.length>0) B[B.length]=C;};return B;};FCKTools.RemoveOuterTags=function(e){e.insertAdjacentHTML('beforeBegin',e.innerHTML);e.parentNode.removeChild(e);};FCKTools.CreateXmlObject=function(A){var B;switch (A){case 'XmlHttp':if (document.location.protocol!='file:') try { return new XMLHttpRequest();} catch (e) {};B=['MSXML2.XmlHttp','Microsoft.XmlHttp'];break;case 'DOMDocument':B=['MSXML2.DOMDocument','Microsoft.XmlDom'];break;};for (var i=0;i<2;i++){try { return new ActiveXObject(B[i]);}catch (e){}};if (FCKLang.NoActiveX){alert(FCKLang.NoActiveX);FCKLang.NoActiveX=null;};return null;};FCKTools.DisableSelection=function(A){A.unselectable='on';var e,i=0;while ((e=A.all[i++])){switch (e.tagName){case 'IFRAME':case 'TEXTAREA':case 'INPUT':case 'SELECT':break;default:e.unselectable='on';}}};FCKTools.GetScrollPosition=function(A){var B=A.document;var C={ X:B.documentElement.scrollLeft,Y:B.documentElement.scrollTop };if (C.X>0||C.Y>0) return C;return { X:B.body.scrollLeft,Y:B.body.scrollTop };};FCKTools.AddEventListener=function(A,B,C){A.attachEvent('on'+B,C);};FCKTools.RemoveEventListener=function(A,B,C){A.detachEvent('on'+B,C);};FCKTools.AddEventListenerEx=function(A,B,C,D){var o={};o.Source=A;o.Params=D||[];o.Listener=function(ev){return C.apply(o.Source,[ev].concat(o.Params));};if (FCK.IECleanup) FCK.IECleanup.AddItem(null,function() { o.Source=null;o.Params=null;});A.attachEvent('on'+B,o.Listener);A=null;D=null;};FCKTools.GetViewPaneSize=function(A){var B;var C=A.document.documentElement;if (C&&C.clientWidth) B=C;else B=A.document.body;if (B) return { Width:B.clientWidth,Height:B.clientHeight };else return { Width:0,Height:0 };};FCKTools.SaveStyles=function(A){var B=FCKTools.ProtectFormStyles(A);var C={};if (A.className.length>0){C.Class=A.className;A.className='';};var D=A.style.cssText;if (D.length>0){C.Inline=D;A.style.cssText='';};FCKTools.RestoreFormStyles(A,B);return C;};FCKTools.RestoreStyles=function(A,B){var C=FCKTools.ProtectFormStyles(A);A.className=B.Class||'';A.style.cssText=B.Inline||'';FCKTools.RestoreFormStyles(A,C);};FCKTools.RegisterDollarFunction=function(A){A.$=A.document.getElementById;};FCKTools.AppendElement=function(A,B){return A.appendChild(this.GetElementDocument(A).createElement(B));};FCKTools.ToLowerCase=function(A){return A.toLowerCase();};
+var FCKeditorAPI;function InitializeAPI(){var A=window.parent;if (!(FCKeditorAPI=A.FCKeditorAPI)){var B='window.FCKeditorAPI = {Version : "2.6.3",VersionBuild : "19836",Instances : new Object(),GetInstance : function( name ){return this.Instances[ name ];},_FormSubmit : function(){for ( var name in FCKeditorAPI.Instances ){var oEditor = FCKeditorAPI.Instances[ name ] ;if ( oEditor.GetParentForm && oEditor.GetParentForm() == this )oEditor.UpdateLinkedField() ;}this._FCKOriginalSubmit() ;},_FunctionQueue	: {Functions : new Array(),IsRunning : false,Add : function( f ){this.Functions.push( f );if ( !this.IsRunning )this.StartNext();},StartNext : function(){var aQueue = this.Functions ;if ( aQueue.length > 0 ){this.IsRunning = true;aQueue[0].call();}else this.IsRunning = false;},Remove : function( f ){var aQueue = this.Functions;var i = 0, fFunc;while( (fFunc = aQueue[ i ]) ){if ( fFunc == f )aQueue.splice( i,1 );i++ ;}this.StartNext();}}}';if (A.execScript) A.execScript(B,'JavaScript');else{if (FCKBrowserInfo.IsGecko10){eval.call(A,B);}else if(FCKBrowserInfo.IsAIR){FCKAdobeAIR.FCKeditorAPI_Evaluate(A,B);}else if (FCKBrowserInfo.IsSafari){var C=A.document;var D=C.createElement('script');D.appendChild(C.createTextNode(B));C.documentElement.appendChild(D);}else A.eval(B);};FCKeditorAPI=A.FCKeditorAPI;FCKeditorAPI.__Instances=FCKeditorAPI.Instances;};FCKeditorAPI.Instances[FCK.Name]=FCK;};function _AttachFormSubmitToAPI(){var A=FCK.GetParentForm();if (A){FCKTools.AddEventListener(A,'submit',FCK.UpdateLinkedField);if (!A._FCKOriginalSubmit&&(typeof(A.submit)=='function'||(!A.submit.tagName&&!A.submit.length))){A._FCKOriginalSubmit=A.submit;A.submit=FCKeditorAPI._FormSubmit;}}};function FCKeditorAPI_Cleanup(){if (window.FCKConfig&&FCKConfig.MsWebBrowserControlCompat&&!window.FCKUnloadFlag) return;delete FCKeditorAPI.Instances[FCK.Name];};function FCKeditorAPI_ConfirmCleanup(){if (window.FCKConfig&&FCKConfig.MsWebBrowserControlCompat) window.FCKUnloadFlag=true;};FCKTools.AddEventListener(window,'unload',FCKeditorAPI_Cleanup);FCKTools.AddEventListener(window,'beforeunload',FCKeditorAPI_ConfirmCleanup);
 var FCKImagePreloader=function(){this._Images=[];};FCKImagePreloader.prototype={AddImages:function(A){if (typeof(A)=='string') A=A.split(';');this._Images=this._Images.concat(A);},Start:function(){var A=this._Images;this._PreloadCount=A.length;for (var i=0;i<A.length;i++){var B=document.createElement('img');FCKTools.AddEventListenerEx(B,'load',_FCKImagePreloader_OnImage,this);FCKTools.AddEventListenerEx(B,'error',_FCKImagePreloader_OnImage,this);B.src=A[i];_FCKImagePreloader_ImageCache.push(B);}}};var _FCKImagePreloader_ImageCache=[];function _FCKImagePreloader_OnImage(A,B){if ((--B._PreloadCount)==0&&B.OnComplete) B.OnComplete();};
-var FCKRegexLib={AposEntity:/&apos;/gi,ObjectElements:/^(?:IMG|TABLE|TR|TD|TH|INPUT|SELECT|TEXTAREA|HR|OBJECT|A|UL|OL|LI)$/i,NamedCommands:/^(?:Cut|Copy|Paste|Print|SelectAll|RemoveFormat|Unlink|Undo|Redo|Bold|Italic|Underline|StrikeThrough|Subscript|Superscript|JustifyLeft|JustifyCenter|JustifyRight|JustifyFull|Outdent|Indent|InsertOrderedList|InsertUnorderedList|InsertHorizontalRule)$/i,BeforeBody:/(^[\s\S]*\<body[^\>]*\>)/i,AfterBody:/(\<\/body\>[\s\S]*$)/i,ToReplace:/___fcktoreplace:([\w]+)/ig,MetaHttpEquiv:/http-equiv\s*=\s*["']?([^"' ]+)/i,HasBaseTag:/<base /i,HasBodyTag:/<body[\s|>]/i,HtmlOpener:/<html\s?[^>]*>/i,HeadOpener:/<head\s?[^>]*>/i,HeadCloser:/<\/head\s*>/i,FCK_Class:/\s*FCK__[^ ]*(?=\s+|$)/,ElementName:/(^[a-z_:][\w.\-:]*\w$)|(^[a-z_]$)/,ForceSimpleAmpersand:/___FCKAmp___/g,SpaceNoClose:/\/>/g,EmptyParagraph:/^<(p|div|address|h\d|center)(?=[ >])[^>]*>\s*(<\/\1>)?$/,EmptyOutParagraph:/^<(p|div|address|h\d|center)(?=[ >])[^>]*>(?:\s*|&nbsp;)(<\/\1>)?$/,TagBody:/></,GeckoEntitiesMarker:/#\?-\:/g,ProtectUrlsImg:/<img(?=\s).*?\ssrc=((?:(?:\s*)("|').*?\2)|(?:[^"'][^ >]+))/gi,ProtectUrlsA:/<a(?=\s).*?\shref=((?:(?:\s*)("|').*?\2)|(?:[^"'][^ >]+))/gi,ProtectUrlsArea:/<area(?=\s).*?\shref=((?:(?:\s*)("|').*?\2)|(?:[^"'][^ >]+))/gi,Html4DocType:/HTML 4\.0 Transitional/i,DocTypeTag:/<!DOCTYPE[^>]*>/i,TagsWithEvent:/<[^\>]+ on\w+[\s\r\n]*=[\s\r\n]*?('|")[\s\S]+?\>/g,EventAttributes:/\s(on\w+)[\s\r\n]*=[\s\r\n]*?('|")([\s\S]*?)\2/g,ProtectedEvents:/\s\w+_fckprotectedatt="([^"]+)"/g,StyleProperties:/\S+\s*:/g,InvalidSelfCloseTags:/(<(?!base|meta|link|hr|br|param|img|area|input)([a-zA-Z0-9:]+)[^>]*)\/>/gi,StyleVariableAttName:/#\(\s*("|')(.+?)\1[^\)]*\s*\)/g,RegExp:/^\/(.*)\/([gim]*)$/,HtmlTag:/<[^\s<>](?:"[^"]*"|'[^']*'|[^<])*>/};
+var FCKRegexLib={AposEntity:/&apos;/gi,ObjectElements:/^(?:IMG|TABLE|TR|TD|TH|INPUT|SELECT|TEXTAREA|HR|OBJECT|A|UL|OL|LI)$/i,NamedCommands:/^(?:Cut|Copy|Paste|Print|SelectAll|RemoveFormat|Unlink|Undo|Redo|Bold|Italic|Underline|StrikeThrough|Subscript|Superscript|JustifyLeft|JustifyCenter|JustifyRight|JustifyFull|Outdent|Indent|InsertOrderedList|InsertUnorderedList|InsertHorizontalRule)$/i,BeforeBody:/(^[\s\S]*\<body[^\>]*\>)/i,AfterBody:/(\<\/body\>[\s\S]*$)/i,ToReplace:/___fcktoreplace:([\w]+)/ig,MetaHttpEquiv:/http-equiv\s*=\s*["']?([^"' ]+)/i,HasBaseTag:/<base /i,HasBodyTag:/<body[\s|>]/i,HtmlOpener:/<html\s?[^>]*>/i,HeadOpener:/<head\s?[^>]*>/i,HeadCloser:/<\/head\s*>/i,FCK_Class:/\s*FCK__[^ ]*(?=\s+|$)/,ElementName:/(^[a-z_:][\w.\-:]*\w$)|(^[a-z_]$)/,ForceSimpleAmpersand:/___FCKAmp___/g,SpaceNoClose:/\/>/g,EmptyParagraph:/^<(p|div|address|h\d|center)(?=[ >])[^>]*>\s*(<\/\1>)?$/,EmptyOutParagraph:/^<(p|div|address|h\d|center)(?=[ >])[^>]*>(?:\s*|&nbsp;)(<\/\1>)?$/,TagBody:/></,GeckoEntitiesMarker:/#\?-\:/g,ProtectUrlsImg:/<img(?=\s).*?\ssrc=((?:(?:\s*)("|').*?\2)|(?:[^"'][^ >]+))/gi,ProtectUrlsA:/<a(?=\s).*?\shref=((?:(?:\s*)("|').*?\2)|(?:[^"'][^ >]+))/gi,ProtectUrlsArea:/<area(?=\s).*?\shref=((?:(?:\s*)("|').*?\2)|(?:[^"'][^ >]+))/gi,Html4DocType:/HTML 4\.0 Transitional/i,DocTypeTag:/<!DOCTYPE[^>]*>/i,HtmlDocType:/DTD HTML/,TagsWithEvent:/<[^\>]+ on\w+[\s\r\n]*=[\s\r\n]*?('|")[\s\S]+?\>/g,EventAttributes:/\s(on\w+)[\s\r\n]*=[\s\r\n]*?('|")([\s\S]*?)\2/g,ProtectedEvents:/\s\w+_fckprotectedatt="([^"]+)"/g,StyleProperties:/\S+\s*:/g,InvalidSelfCloseTags:/(<(?!base|meta|link|hr|br|param|img|area|input)([a-zA-Z0-9:]+)[^>]*)\/>/gi,StyleVariableAttName:/#\(\s*("|')(.+?)\1[^\)]*\s*\)/g,RegExp:/^\/(.*)\/([gim]*)$/,HtmlTag:/<[^\s<>](?:"[^"]*"|'[^']*'|[^<])*>/};
 var FCKListsLib={BlockElements:{ address:1,blockquote:1,center:1,div:1,dl:1,fieldset:1,form:1,h1:1,h2:1,h3:1,h4:1,h5:1,h6:1,hr:1,marquee:1,noscript:1,ol:1,p:1,pre:1,script:1,table:1,ul:1 },NonEmptyBlockElements:{ p:1,div:1,form:1,h1:1,h2:1,h3:1,h4:1,h5:1,h6:1,address:1,pre:1,ol:1,ul:1,li:1,td:1,th:1 },InlineChildReqElements:{ abbr:1,acronym:1,b:1,bdo:1,big:1,cite:1,code:1,del:1,dfn:1,em:1,font:1,i:1,ins:1,label:1,kbd:1,q:1,samp:1,small:1,span:1,strike:1,strong:1,sub:1,sup:1,tt:1,u:1,'var':1 },InlineNonEmptyElements:{ a:1,abbr:1,acronym:1,b:1,bdo:1,big:1,cite:1,code:1,del:1,dfn:1,em:1,font:1,i:1,ins:1,label:1,kbd:1,q:1,samp:1,small:1,span:1,strike:1,strong:1,sub:1,sup:1,tt:1,u:1,'var':1 },EmptyElements:{ base:1,col:1,meta:1,link:1,hr:1,br:1,param:1,img:1,area:1,input:1 },PathBlockElements:{ address:1,blockquote:1,dl:1,h1:1,h2:1,h3:1,h4:1,h5:1,h6:1,p:1,pre:1,li:1,dt:1,de:1 },PathBlockLimitElements:{ body:1,div:1,td:1,th:1,caption:1,form:1 },StyleBlockElements:{ address:1,div:1,h1:1,h2:1,h3:1,h4:1,h5:1,h6:1,p:1,pre:1 },StyleObjectElements:{ img:1,hr:1,li:1,table:1,tr:1,td:1,embed:1,object:1,ol:1,ul:1 },NonEditableElements:{ button:1,option:1,script:1,iframe:1,textarea:1,object:1,embed:1,map:1,applet:1 },BlockBoundaries:{ p:1,div:1,h1:1,h2:1,h3:1,h4:1,h5:1,h6:1,hr:1,address:1,pre:1,ol:1,ul:1,li:1,dt:1,de:1,table:1,thead:1,tbody:1,tfoot:1,tr:1,th:1,td:1,caption:1,col:1,colgroup:1,blockquote:1,body:1 },ListBoundaries:{ p:1,div:1,h1:1,h2:1,h3:1,h4:1,h5:1,h6:1,hr:1,address:1,pre:1,ol:1,ul:1,li:1,dt:1,de:1,table:1,thead:1,tbody:1,tfoot:1,tr:1,th:1,td:1,caption:1,col:1,colgroup:1,blockquote:1,body:1,br:1 }};
-var FCKLanguageManager=FCK.Language={AvailableLanguages:{af:'Afrikaans',ar:'Arabic',bg:'Bulgarian',bn:'Bengali/Bangla',bs:'Bosnian',ca:'Catalan',cs:'Czech',da:'Danish',de:'German',el:'Greek',en:'English','en-au':'English (Australia)','en-ca':'English (Canadian)','en-uk':'English (United Kingdom)',eo:'Esperanto',es:'Spanish',et:'Estonian',eu:'Basque',fa:'Persian',fi:'Finnish',fo:'Faroese',fr:'French','fr-ca':'French (Canada)',gl:'Galician',he:'Hebrew',hi:'Hindi',hr:'Croatian',hu:'Hungarian',it:'Italian',ja:'Japanese',km:'Khmer',ko:'Korean',lt:'Lithuanian',lv:'Latvian',mn:'Mongolian',ms:'Malay',nb:'Norwegian Bokmal',nl:'Dutch',no:'Norwegian',pl:'Polish',pt:'Portuguese (Portugal)','pt-br':'Portuguese (Brazil)',ro:'Romanian',ru:'Russian',sk:'Slovak',sl:'Slovenian',sr:'Serbian (Cyrillic)','sr-latn':'Serbian (Latin)',sv:'Swedish',th:'Thai',tr:'Turkish',uk:'Ukrainian',vi:'Vietnamese',zh:'Chinese Traditional','zh-cn':'Chinese Simplified'},GetActiveLanguage:function(){if (FCKConfig.AutoDetectLanguage){var A;if (navigator.userLanguage) A=navigator.userLanguage.toLowerCase();else if (navigator.language) A=navigator.language.toLowerCase();else{return FCKConfig.DefaultLanguage;};if (A.length>=5){A=A.substr(0,5);if (this.AvailableLanguages[A]) return A;};if (A.length>=2){A=A.substr(0,2);if (this.AvailableLanguages[A]) return A;}};return this.DefaultLanguage;},TranslateElements:function(A,B,C,D){var e=A.getElementsByTagName(B);var E,s;for (var i=0;i<e.length;i++){if ((E=e[i].getAttribute('fckLang'))){if ((s=FCKLang[E])){if (D) s=FCKTools.HTMLEncode(s);e[i][C]=s;}}}},TranslatePage:function(A){this.TranslateElements(A,'INPUT','value');this.TranslateElements(A,'SPAN','innerHTML');this.TranslateElements(A,'LABEL','innerHTML');this.TranslateElements(A,'OPTION','innerHTML',true);this.TranslateElements(A,'LEGEND','innerHTML');},Initialize:function(){if (this.AvailableLanguages[FCKConfig.DefaultLanguage]) this.DefaultLanguage=FCKConfig.DefaultLanguage;else this.DefaultLanguage='en';this.ActiveLanguage={};this.ActiveLanguage.Code=this.GetActiveLanguage();this.ActiveLanguage.Name=this.AvailableLanguages[this.ActiveLanguage.Code];}};
+var FCKLanguageManager=FCK.Language={AvailableLanguages:{af:'Afrikaans',ar:'Arabic',bg:'Bulgarian',bn:'Bengali/Bangla',bs:'Bosnian',ca:'Catalan',cs:'Czech',da:'Danish',de:'German',el:'Greek',en:'English','en-au':'English (Australia)','en-ca':'English (Canadian)','en-uk':'English (United Kingdom)',eo:'Esperanto',es:'Spanish',et:'Estonian',eu:'Basque',fa:'Persian',fi:'Finnish',fo:'Faroese',fr:'French','fr-ca':'French (Canada)',gl:'Galician',gu:'Gujarati',he:'Hebrew',hi:'Hindi',hr:'Croatian',hu:'Hungarian',it:'Italian',ja:'Japanese',km:'Khmer',ko:'Korean',lt:'Lithuanian',lv:'Latvian',mn:'Mongolian',ms:'Malay',nb:'Norwegian Bokmal',nl:'Dutch',no:'Norwegian',pl:'Polish',pt:'Portuguese (Portugal)','pt-br':'Portuguese (Brazil)',ro:'Romanian',ru:'Russian',sk:'Slovak',sl:'Slovenian',sr:'Serbian (Cyrillic)','sr-latn':'Serbian (Latin)',sv:'Swedish',th:'Thai',tr:'Turkish',uk:'Ukrainian',vi:'Vietnamese',zh:'Chinese Traditional','zh-cn':'Chinese Simplified'},GetActiveLanguage:function(){if (FCKConfig.AutoDetectLanguage){var A;if (navigator.userLanguage) A=navigator.userLanguage.toLowerCase();else if (navigator.language) A=navigator.language.toLowerCase();else{return FCKConfig.DefaultLanguage;};if (A.length>=5){A=A.substr(0,5);if (this.AvailableLanguages[A]) return A;};if (A.length>=2){A=A.substr(0,2);if (this.AvailableLanguages[A]) return A;}};return this.DefaultLanguage;},TranslateElements:function(A,B,C,D){var e=A.getElementsByTagName(B);var E,s;for (var i=0;i<e.length;i++){if ((E=e[i].getAttribute('fckLang'))){if ((s=FCKLang[E])){if (D) s=FCKTools.HTMLEncode(s);e[i][C]=s;}}}},TranslatePage:function(A){this.TranslateElements(A,'INPUT','value');this.TranslateElements(A,'SPAN','innerHTML');this.TranslateElements(A,'LABEL','innerHTML');this.TranslateElements(A,'OPTION','innerHTML',true);this.TranslateElements(A,'LEGEND','innerHTML');},Initialize:function(){if (this.AvailableLanguages[FCKConfig.DefaultLanguage]) this.DefaultLanguage=FCKConfig.DefaultLanguage;else this.DefaultLanguage='en';this.ActiveLanguage={};this.ActiveLanguage.Code=this.GetActiveLanguage();this.ActiveLanguage.Name=this.AvailableLanguages[this.ActiveLanguage.Code];}};
 var FCKXHtmlEntities={};FCKXHtmlEntities.Initialize=function(){if (FCKXHtmlEntities.Entities) return;var A='';var B,e;if (FCKConfig.ProcessHTMLEntities){FCKXHtmlEntities.Entities={' ':'nbsp','¡':'iexcl','¢':'cent','£':'pound','¤':'curren','¥':'yen','¦':'brvbar','§':'sect','¨':'uml','©':'copy','ª':'ordf','«':'laquo','¬':'not','­':'shy','®':'reg','¯':'macr','°':'deg','±':'plusmn','²':'sup2','³':'sup3','´':'acute','µ':'micro','¶':'para','·':'middot','¸':'cedil','¹':'sup1','º':'ordm','»':'raquo','¼':'frac14','½':'frac12','¾':'frac34','¿':'iquest','×':'times','÷':'divide','ƒ':'fnof','•':'bull','…':'hellip','′':'prime','″':'Prime','‾':'oline','⁄':'frasl','℘':'weierp','ℑ':'image','ℜ':'real','™':'trade','ℵ':'alefsym','←':'larr','↑':'uarr','→':'rarr','↓':'darr','↔':'harr','↵':'crarr','⇐':'lArr','⇑':'uArr','⇒':'rArr','⇓':'dArr','⇔':'hArr','∀':'forall','∂':'part','∃':'exist','∅':'empty','∇':'nabla','∈':'isin','∉':'notin','∋':'ni','∏':'prod','∑':'sum','−':'minus','∗':'lowast','√':'radic','∝':'prop','∞':'infin','∠':'ang','∧':'and','∨':'or','∩':'cap','∪':'cup','∫':'int','∴':'there4','∼':'sim','≅':'cong','≈':'asymp','≠':'ne','≡':'equiv','≤':'le','≥':'ge','⊂':'sub','⊃':'sup','⊄':'nsub','⊆':'sube','⊇':'supe','⊕':'oplus','⊗':'otimes','⊥':'perp','⋅':'sdot','\u2308':'lceil','\u2309':'rceil','\u230a':'lfloor','\u230b':'rfloor','\u2329':'lang','\u232a':'rang','◊':'loz','♠':'spades','♣':'clubs','♥':'hearts','♦':'diams','"':'quot','ˆ':'circ','˜':'tilde',' ':'ensp',' ':'emsp',' ':'thinsp','‌':'zwnj','‍':'zwj','‎':'lrm','‏':'rlm','–':'ndash','—':'mdash','‘':'lsquo','’':'rsquo','‚':'sbquo','“':'ldquo','”':'rdquo','„':'bdquo','†':'dagger','‡':'Dagger','‰':'permil','‹':'lsaquo','›':'rsaquo','€':'euro'};for (e in FCKXHtmlEntities.Entities) A+=e;if (FCKConfig.IncludeLatinEntities){B={'À':'Agrave','Á':'Aacute','Â':'Acirc','Ã':'Atilde','Ä':'Auml','Å':'Aring','Æ':'AElig','Ç':'Ccedil','È':'Egrave','É':'Eacute','Ê':'Ecirc','Ë':'Euml','Ì':'Igrave','Í':'Iacute','Î':'Icirc','Ï':'Iuml','Ð':'ETH','Ñ':'Ntilde','Ò':'Ograve','Ó':'Oacute','Ô':'Ocirc','Õ':'Otilde','Ö':'Ouml','Ø':'Oslash','Ù':'Ugrave','Ú':'Uacute','Û':'Ucirc','Ü':'Uuml','Ý':'Yacute','Þ':'THORN','ß':'szlig','à':'agrave','á':'aacute','â':'acirc','ã':'atilde','ä':'auml','å':'aring','æ':'aelig','ç':'ccedil','è':'egrave','é':'eacute','ê':'ecirc','ë':'euml','ì':'igrave','í':'iacute','î':'icirc','ï':'iuml','ð':'eth','ñ':'ntilde','ò':'ograve','ó':'oacute','ô':'ocirc','õ':'otilde','ö':'ouml','ø':'oslash','ù':'ugrave','ú':'uacute','û':'ucirc','ü':'uuml','ý':'yacute','þ':'thorn','ÿ':'yuml','Œ':'OElig','œ':'oelig','Š':'Scaron','š':'scaron','Ÿ':'Yuml'};for (e in B){FCKXHtmlEntities.Entities[e]=B[e];A+=e;};B=null;};if (FCKConfig.IncludeGreekEntities){B={'Α':'Alpha','Β':'Beta','Γ':'Gamma','Δ':'Delta','Ε':'Epsilon','Ζ':'Zeta','Η':'Eta','Θ':'Theta','Ι':'Iota','Κ':'Kappa','Λ':'Lambda','Μ':'Mu','Ν':'Nu','Ξ':'Xi','Ο':'Omicron','Π':'Pi','Ρ':'Rho','Σ':'Sigma','Τ':'Tau','Υ':'Upsilon','Φ':'Phi','Χ':'Chi','Ψ':'Psi','Ω':'Omega','α':'alpha','β':'beta','γ':'gamma','δ':'delta','ε':'epsilon','ζ':'zeta','η':'eta','θ':'theta','ι':'iota','κ':'kappa','λ':'lambda','μ':'mu','ν':'nu','ξ':'xi','ο':'omicron','π':'pi','ρ':'rho','ς':'sigmaf','σ':'sigma','τ':'tau','υ':'upsilon','φ':'phi','χ':'chi','ψ':'psi','ω':'omega','\u03d1':'thetasym','\u03d2':'upsih','\u03d6':'piv'};for (e in B){FCKXHtmlEntities.Entities[e]=B[e];A+=e;};B=null;}}else{FCKXHtmlEntities.Entities={};A=' ';};var C='['+A+']';if (FCKConfig.ProcessNumericEntities) C='[^ -~]|'+C;var D=FCKConfig.AdditionalNumericEntities;if (D&&D.length>0) C+='|'+FCKConfig.AdditionalNumericEntities;FCKXHtmlEntities.EntitiesRegex=new RegExp(C,'g');};
-var FCKXHtml={};FCKXHtml.CurrentJobNum=0;FCKXHtml.GetXHTML=function(A,B,C){FCKDomTools.CheckAndRemovePaddingNode(FCKTools.GetElementDocument(A),FCKConfig.EnterMode);FCKXHtmlEntities.Initialize();this._NbspEntity=(FCKConfig.ProcessHTMLEntities?'nbsp':'#160');var D=FCK.IsDirty();FCKXHtml.SpecialBlocks=[];this.XML=FCKTools.CreateXmlObject('DOMDocument');this.MainNode=this.XML.appendChild(this.XML.createElement('xhtml'));FCKXHtml.CurrentJobNum++;if (B) this._AppendNode(this.MainNode,A);else this._AppendChildNodes(this.MainNode,A,false);var E=this._GetMainXmlString();this.XML=null;if (FCKBrowserInfo.IsSafari) E=E.replace(/^<xhtml.*?>/,'<xhtml>');E=E.substr(7,E.length-15).Trim();E=E.replace(FCKRegexLib.SpaceNoClose,' />');if (FCKConfig.ForceSimpleAmpersand) E=E.replace(FCKRegexLib.ForceSimpleAmpersand,'&');if (C) E=FCKCodeFormatter.Format(E);for (var i=0;i<FCKXHtml.SpecialBlocks.length;i++){var F=new RegExp('___FCKsi___'+i);E=E.replace(F,FCKXHtml.SpecialBlocks[i]);};E=E.replace(FCKRegexLib.GeckoEntitiesMarker,'&');if (!D) FCK.ResetIsDirty();FCKDomTools.EnforcePaddingNode(FCKTools.GetElementDocument(A),FCKConfig.EnterMode);return E;};FCKXHtml._AppendAttribute=function(A,B,C){try{if (C==undefined||C==null) C='';else if (C.replace){if (FCKConfig.ForceSimpleAmpersand) C=C.replace(/&/g,'___FCKAmp___');C=C.replace(FCKXHtmlEntities.EntitiesRegex,FCKXHtml_GetEntity);};var D=this.XML.createAttribute(B);D.value=C;A.attributes.setNamedItem(D);}catch (e){}};FCKXHtml._AppendChildNodes=function(A,B,C){var D=B.firstChild;while (D){this._AppendNode(A,D);D=D.nextSibling;};if (C&&B.tagName&&B.tagName.toLowerCase()!='pre'){FCKDomTools.TrimNode(A);if (FCKConfig.FillEmptyBlocks){var E=A.lastChild;if (E&&E.nodeType==1&&E.nodeName=='br') this._AppendEntity(A,this._NbspEntity);}};if (A.childNodes.length==0){if (C&&FCKConfig.FillEmptyBlocks){this._AppendEntity(A,this._NbspEntity);return A;};var F=A.nodeName;if (FCKListsLib.InlineChildReqElements[F]) return null;if (!FCKListsLib.EmptyElements[F]) A.appendChild(this.XML.createTextNode(''));};return A;};FCKXHtml._AppendNode=function(A,B){if (!B) return false;switch (B.nodeType){case 1:if (FCKBrowserInfo.IsGecko&&B.tagName.toLowerCase()=='br'&&B.parentNode.tagName.toLowerCase()=='pre'){var C='\r';if (B==B.parentNode.firstChild) C+='\r';return FCKXHtml._AppendNode(A,this.XML.createTextNode(C));};if (B.getAttribute('_fckfakelement')) return FCKXHtml._AppendNode(A,FCK.GetRealElement(B));if (FCKBrowserInfo.IsGecko&&B.nextSibling&&(B.hasAttribute('_moz_editor_bogus_node')||B.getAttribute('type')=='_moz')) return false;if (B.getAttribute('_fcktemp')) return false;var D=B.tagName.toLowerCase();if (FCKBrowserInfo.IsIE){if (B.scopeName&&B.scopeName!='HTML'&&B.scopeName!='FCK') D=B.scopeName.toLowerCase()+':'+D;}else{if (D.StartsWith('fck:')) D=D.Remove(0,4);};if (!FCKRegexLib.ElementName.test(D)) return false;if (B._fckxhtmljob&&B._fckxhtmljob==FCKXHtml.CurrentJobNum) return false;var E=this.XML.createElement(D);FCKXHtml._AppendAttributes(A,B,E,D);B._fckxhtmljob=FCKXHtml.CurrentJobNum;var F=FCKXHtml.TagProcessors[D];if (F) E=F(E,B,A);else E=this._AppendChildNodes(E,B,Boolean(FCKListsLib.NonEmptyBlockElements[D]));if (!E) return false;A.appendChild(E);break;case 3:if (B.parentNode&&B.parentNode.nodeName.IEquals('pre')) return this._AppendTextNode(A,B.nodeValue);return this._AppendTextNode(A,B.nodeValue.ReplaceNewLineChars(' '));case 8:if (FCKBrowserInfo.IsIE&&!B.innerHTML) break;try { A.appendChild(this.XML.createComment(B.nodeValue));}catch (e) {/*Do nothing... probably this is a wrong format comment.*/};break;default:A.appendChild(this.XML.createComment("Element not supported - Type: "+B.nodeType+" Name: "+B.nodeName));break;};return true;};FCKXHtml._AppendSpecialItem=function(A){return '___FCKsi___'+FCKXHtml.SpecialBlocks.AddItem(A);};FCKXHtml._AppendEntity=function(A,B){A.appendChild(this.XML.createTextNode('#?-:'+B+';'));};FCKXHtml._AppendTextNode=function(A,B){var C=B.length>0;if (C) A.appendChild(this.XML.createTextNode(B.replace(FCKXHtmlEntities.EntitiesRegex,FCKXHtml_GetEntity)));return C;};function FCKXHtml_GetEntity(A){var B=FCKXHtmlEntities.Entities[A]||('#'+A.charCodeAt(0));return '#?-:'+B+';';};FCKXHtml.TagProcessors={a:function(A,B){if (B.innerHTML.Trim().length==0&&!B.name) return false;var C=B.getAttribute('_fcksavedurl');if (C!=null) FCKXHtml._AppendAttribute(A,'href',C);if (FCKBrowserInfo.IsIE){if (B.name) FCKXHtml._AppendAttribute(A,'name',B.name);};A=FCKXHtml._AppendChildNodes(A,B,false);return A;},area:function(A,B){var C=B.getAttribute('_fcksavedurl');if (C!=null) FCKXHtml._AppendAttribute(A,'href',C);if (FCKBrowserInfo.IsIE){if (!A.attributes.getNamedItem('coords')){var D=B.getAttribute('coords',2);if (D&&D!='0,0,0') FCKXHtml._AppendAttribute(A,'coords',D);};if (!A.attributes.getNamedItem('shape')){var E=B.getAttribute('shape',2);if (E&&E.length>0) FCKXHtml._AppendAttribute(A,'shape',E.toLowerCase());}};return A;},body:function(A,B){A=FCKXHtml._AppendChildNodes(A,B,false);A.removeAttribute('spellcheck');return A;},iframe:function(A,B){var C=B.innerHTML;if (FCKBrowserInfo.IsGecko) C=FCKTools.HTMLDecode(C);C=C.replace(/\s_fcksavedurl="[^"]*"/g,'');A.appendChild(FCKXHtml.XML.createTextNode(FCKXHtml._AppendSpecialItem(C)));return A;},img:function(A,B){if (!A.attributes.getNamedItem('alt')) FCKXHtml._AppendAttribute(A,'alt','');var C=B.getAttribute('_fcksavedurl');if (C!=null) FCKXHtml._AppendAttribute(A,'src',C);return A;},li:function(A,B,C){if (C.nodeName.IEquals(['ul','ol'])) return FCKXHtml._AppendChildNodes(A,B,true);var D=FCKXHtml.XML.createElement('ul');B._fckxhtmljob=null;do{FCKXHtml._AppendNode(D,B);do{B=FCKDomTools.GetNextSibling(B);} while (B&&B.nodeType==3&&B.nodeValue.Trim().length==0)}	while (B&&B.nodeName.toLowerCase()=='li') return D;},ol:function(A,B,C){if (B.innerHTML.Trim().length==0) return false;var D=C.lastChild;if (D&&D.nodeType==3) D=D.previousSibling;if (D&&D.nodeName.toUpperCase()=='LI'){B._fckxhtmljob=null;FCKXHtml._AppendNode(D,B);return false;};A=FCKXHtml._AppendChildNodes(A,B);return A;},pre:function (A,B){var C=B.firstChild;if (C&&C.nodeType==3) A.appendChild(FCKXHtml.XML.createTextNode(FCKXHtml._AppendSpecialItem('\r\n')));FCKXHtml._AppendChildNodes(A,B,true);return A;},script:function(A,B){if (!A.attributes.getNamedItem('type')) FCKXHtml._AppendAttribute(A,'type','text/javascript');A.appendChild(FCKXHtml.XML.createTextNode(FCKXHtml._AppendSpecialItem(B.text)));return A;},span:function(A,B){if (B.innerHTML.length==0) return false;A=FCKXHtml._AppendChildNodes(A,B,false);return A;},style:function(A,B){if (!A.attributes.getNamedItem('type')) FCKXHtml._AppendAttribute(A,'type','text/css');var C=B.innerHTML;if (FCKBrowserInfo.IsIE) C=C.replace(/^(\r\n|\n|\r)/,'');A.appendChild(FCKXHtml.XML.createTextNode(FCKXHtml._AppendSpecialItem(C)));return A;},title:function(A,B){A.appendChild(FCKXHtml.XML.createTextNode(FCK.EditorDocument.title));return A;}};FCKXHtml.TagProcessors.ul=FCKXHtml.TagProcessors.ol;
-FCKXHtml._GetMainXmlString=function(){return this.MainNode.xml;};FCKXHtml._AppendAttributes=function(A,B,C,D){var E=B.attributes;for (var n=0;n<E.length;n++){var F=E[n];if (F.specified){var G=F.nodeName.toLowerCase();var H;if (G.StartsWith('_fck')) continue;else if (G=='style'){var I=FCKTools.ProtectFormStyles(B);H=B.style.cssText.replace(FCKRegexLib.StyleProperties,FCKTools.ToLowerCase);FCKTools.RestoreFormStyles(B,I);}else if (G=='class'){H=F.nodeValue.replace(FCKRegexLib.FCK_Class,'');if (H.length==0) continue;}else if (G.indexOf('on')==0) H=F.nodeValue;else if (D=='body'&&G=='contenteditable') continue;else if (F.nodeValue===true) H=G;else{try{H=B.getAttribute(G,2);}catch (e) {}};this._AppendAttribute(C,G,H||F.nodeValue);}}};FCKXHtml.TagProcessors['div']=function(A,B){if (B.align.length>0) FCKXHtml._AppendAttribute(A,'align',B.align);A=FCKXHtml._AppendChildNodes(A,B,true);return A;};FCKXHtml.TagProcessors['font']=function(A,B){if (A.attributes.length==0) A=FCKXHtml.XML.createDocumentFragment();A=FCKXHtml._AppendChildNodes(A,B);return A;};FCKXHtml.TagProcessors['form']=function(A,B){if (B.acceptCharset&&B.acceptCharset.length>0&&B.acceptCharset!='UNKNOWN') FCKXHtml._AppendAttribute(A,'accept-charset',B.acceptCharset);var C=B.attributes['name'];if (C&&C.value.length>0) FCKXHtml._AppendAttribute(A,'name',C.value);A=FCKXHtml._AppendChildNodes(A,B,true);return A;};FCKXHtml.TagProcessors['input']=function(A,B){if (B.name) FCKXHtml._AppendAttribute(A,'name',B.name);if (B.value&&!A.attributes.getNamedItem('value')) FCKXHtml._AppendAttribute(A,'value',B.value);if (!A.attributes.getNamedItem('type')) FCKXHtml._AppendAttribute(A,'type','text');return A;};FCKXHtml.TagProcessors['label']=function(A,B){if (B.htmlFor.length>0) FCKXHtml._AppendAttribute(A,'for',B.htmlFor);A=FCKXHtml._AppendChildNodes(A,B);return A;};FCKXHtml.TagProcessors['map']=function(A,B){if (!A.attributes.getNamedItem('name')){var C=B.name;if (C) FCKXHtml._AppendAttribute(A,'name',C);};A=FCKXHtml._AppendChildNodes(A,B,true);return A;};FCKXHtml.TagProcessors['meta']=function(A,B){var C=A.attributes.getNamedItem('http-equiv');if (C==null||C.value.length==0){var D=B.outerHTML.match(FCKRegexLib.MetaHttpEquiv);if (D){D=D[1];FCKXHtml._AppendAttribute(A,'http-equiv',D);}};return A;};FCKXHtml.TagProcessors['option']=function(A,B){if (B.selected&&!A.attributes.getNamedItem('selected')) FCKXHtml._AppendAttribute(A,'selected','selected');A=FCKXHtml._AppendChildNodes(A,B);return A;};FCKXHtml.TagProcessors['textarea']=FCKXHtml.TagProcessors['select']=function(A,B){if (B.name) FCKXHtml._AppendAttribute(A,'name',B.name);A=FCKXHtml._AppendChildNodes(A,B);return A;};
+var FCKXHtml={};FCKXHtml.CurrentJobNum=0;FCKXHtml.GetXHTML=function(A,B,C){FCKDomTools.CheckAndRemovePaddingNode(FCKTools.GetElementDocument(A),FCKConfig.EnterMode);FCKXHtmlEntities.Initialize();this._NbspEntity=(FCKConfig.ProcessHTMLEntities?'nbsp':'#160');var D=FCK.IsDirty();FCKXHtml.SpecialBlocks=[];this.XML=FCKTools.CreateXmlObject('DOMDocument');this.MainNode=this.XML.appendChild(this.XML.createElement('xhtml'));FCKXHtml.CurrentJobNum++;if (B) this._AppendNode(this.MainNode,A);else this._AppendChildNodes(this.MainNode,A,false);var E=this._GetMainXmlString();this.XML=null;if (FCKBrowserInfo.IsSafari) E=E.replace(/^<xhtml.*?>/,'<xhtml>');E=E.substr(7,E.length-15).Trim();if (FCKConfig.DocType.length>0&&FCKRegexLib.HtmlDocType.test(FCKConfig.DocType)) E=E.replace(FCKRegexLib.SpaceNoClose,'>');else E=E.replace(FCKRegexLib.SpaceNoClose,' />');if (FCKConfig.ForceSimpleAmpersand) E=E.replace(FCKRegexLib.ForceSimpleAmpersand,'&');if (C) E=FCKCodeFormatter.Format(E);for (var i=0;i<FCKXHtml.SpecialBlocks.length;i++){var F=new RegExp('___FCKsi___'+i);E=E.replace(F,FCKXHtml.SpecialBlocks[i]);};E=E.replace(FCKRegexLib.GeckoEntitiesMarker,'&');if (!D) FCK.ResetIsDirty();FCKDomTools.EnforcePaddingNode(FCKTools.GetElementDocument(A),FCKConfig.EnterMode);return E;};FCKXHtml._AppendAttribute=function(A,B,C){try{if (C==undefined||C==null) C='';else if (C.replace){if (FCKConfig.ForceSimpleAmpersand) C=C.replace(/&/g,'___FCKAmp___');C=C.replace(FCKXHtmlEntities.EntitiesRegex,FCKXHtml_GetEntity);};var D=this.XML.createAttribute(B);D.value=C;A.attributes.setNamedItem(D);}catch (e){}};FCKXHtml._AppendChildNodes=function(A,B,C){var D=B.firstChild;while (D){this._AppendNode(A,D);D=D.nextSibling;};if (C&&B.tagName&&B.tagName.toLowerCase()!='pre'){FCKDomTools.TrimNode(A);if (FCKConfig.FillEmptyBlocks){var E=A.lastChild;if (E&&E.nodeType==1&&E.nodeName=='br') this._AppendEntity(A,this._NbspEntity);}};if (A.childNodes.length==0){if (C&&FCKConfig.FillEmptyBlocks){this._AppendEntity(A,this._NbspEntity);return A;};var F=A.nodeName;if (FCKListsLib.InlineChildReqElements[F]) return null;if (!FCKListsLib.EmptyElements[F]) A.appendChild(this.XML.createTextNode(''));};return A;};FCKXHtml._AppendNode=function(A,B){if (!B) return false;switch (B.nodeType){case 1:if (FCKBrowserInfo.IsGecko&&B.tagName.toLowerCase()=='br'&&B.parentNode.tagName.toLowerCase()=='pre'){var C='\r';if (B==B.parentNode.firstChild) C+='\r';return FCKXHtml._AppendNode(A,this.XML.createTextNode(C));};if (B.getAttribute('_fckfakelement')) return FCKXHtml._AppendNode(A,FCK.GetRealElement(B));if (FCKBrowserInfo.IsGecko&&(B.hasAttribute('_moz_editor_bogus_node')||B.getAttribute('type')=='_moz')){if (B.nextSibling) return false;else{B.removeAttribute('_moz_editor_bogus_node');B.removeAttribute('type');}};if (B.getAttribute('_fcktemp')) return false;var D=B.tagName.toLowerCase();if (FCKBrowserInfo.IsIE){if (B.scopeName&&B.scopeName!='HTML'&&B.scopeName!='FCK') D=B.scopeName.toLowerCase()+':'+D;}else{if (D.StartsWith('fck:')) D=D.Remove(0,4);};if (!FCKRegexLib.ElementName.test(D)) return false;if (B._fckxhtmljob&&B._fckxhtmljob==FCKXHtml.CurrentJobNum) return false;var E=this.XML.createElement(D);FCKXHtml._AppendAttributes(A,B,E,D);B._fckxhtmljob=FCKXHtml.CurrentJobNum;var F=FCKXHtml.TagProcessors[D];if (F) E=F(E,B,A);else E=this._AppendChildNodes(E,B,Boolean(FCKListsLib.NonEmptyBlockElements[D]));if (!E) return false;A.appendChild(E);break;case 3:if (B.parentNode&&B.parentNode.nodeName.IEquals('pre')) return this._AppendTextNode(A,B.nodeValue);return this._AppendTextNode(A,B.nodeValue.ReplaceNewLineChars(' '));case 8:if (FCKBrowserInfo.IsIE&&!B.innerHTML) break;try { A.appendChild(this.XML.createComment(B.nodeValue));}catch (e) {};break;default:A.appendChild(this.XML.createComment("Element not supported - Type: "+B.nodeType+" Name: "+B.nodeName));break;};return true;};FCKXHtml._AppendSpecialItem=function(A){return '___FCKsi___'+FCKXHtml.SpecialBlocks.AddItem(A);};FCKXHtml._AppendEntity=function(A,B){A.appendChild(this.XML.createTextNode('#?-:'+B+';'));};FCKXHtml._AppendTextNode=function(A,B){var C=B.length>0;if (C) A.appendChild(this.XML.createTextNode(B.replace(FCKXHtmlEntities.EntitiesRegex,FCKXHtml_GetEntity)));return C;};function FCKXHtml_GetEntity(A){var B=FCKXHtmlEntities.Entities[A]||('#'+A.charCodeAt(0));return '#?-:'+B+';';};FCKXHtml.TagProcessors={a:function(A,B){if (B.innerHTML.Trim().length==0&&!B.name) return false;var C=B.getAttribute('_fcksavedurl');if (C!=null) FCKXHtml._AppendAttribute(A,'href',C);if (FCKBrowserInfo.IsIE){if (B.name) FCKXHtml._AppendAttribute(A,'name',B.name);};A=FCKXHtml._AppendChildNodes(A,B,false);return A;},area:function(A,B){var C=B.getAttribute('_fcksavedurl');if (C!=null) FCKXHtml._AppendAttribute(A,'href',C);if (FCKBrowserInfo.IsIE){if (!A.attributes.getNamedItem('coords')){var D=B.getAttribute('coords',2);if (D&&D!='0,0,0') FCKXHtml._AppendAttribute(A,'coords',D);};if (!A.attributes.getNamedItem('shape')){var E=B.getAttribute('shape',2);if (E&&E.length>0) FCKXHtml._AppendAttribute(A,'shape',E.toLowerCase());}};return A;},body:function(A,B){A=FCKXHtml._AppendChildNodes(A,B,false);A.removeAttribute('spellcheck');return A;},iframe:function(A,B){var C=B.innerHTML;if (FCKBrowserInfo.IsGecko) C=FCKTools.HTMLDecode(C);C=C.replace(/\s_fcksavedurl="[^"]*"/g,'');A.appendChild(FCKXHtml.XML.createTextNode(FCKXHtml._AppendSpecialItem(C)));return A;},img:function(A,B){if (!A.attributes.getNamedItem('alt')) FCKXHtml._AppendAttribute(A,'alt','');var C=B.getAttribute('_fcksavedurl');if (C!=null) FCKXHtml._AppendAttribute(A,'src',C);if (B.style.width) A.removeAttribute('width');if (B.style.height) A.removeAttribute('height');return A;},li:function(A,B,C){if (C.nodeName.IEquals(['ul','ol'])) return FCKXHtml._AppendChildNodes(A,B,true);var D=FCKXHtml.XML.createElement('ul');B._fckxhtmljob=null;do{FCKXHtml._AppendNode(D,B);do{B=FCKDomTools.GetNextSibling(B);} while (B&&B.nodeType==3&&B.nodeValue.Trim().length==0)}	while (B&&B.nodeName.toLowerCase()=='li') return D;},ol:function(A,B,C){if (B.innerHTML.Trim().length==0) return false;var D=C.lastChild;if (D&&D.nodeType==3) D=D.previousSibling;if (D&&D.nodeName.toUpperCase()=='LI'){B._fckxhtmljob=null;FCKXHtml._AppendNode(D,B);return false;};A=FCKXHtml._AppendChildNodes(A,B);return A;},pre:function (A,B){var C=B.firstChild;if (C&&C.nodeType==3) A.appendChild(FCKXHtml.XML.createTextNode(FCKXHtml._AppendSpecialItem('\r\n')));FCKXHtml._AppendChildNodes(A,B,true);return A;},script:function(A,B){if (!A.attributes.getNamedItem('type')) FCKXHtml._AppendAttribute(A,'type','text/javascript');A.appendChild(FCKXHtml.XML.createTextNode(FCKXHtml._AppendSpecialItem(B.text)));return A;},span:function(A,B){if (B.innerHTML.length==0) return false;A=FCKXHtml._AppendChildNodes(A,B,false);return A;},style:function(A,B){if (!A.attributes.getNamedItem('type')) FCKXHtml._AppendAttribute(A,'type','text/css');var C=B.innerHTML;if (FCKBrowserInfo.IsIE) C=C.replace(/^(\r\n|\n|\r)/,'');A.appendChild(FCKXHtml.XML.createTextNode(FCKXHtml._AppendSpecialItem(C)));return A;},title:function(A,B){A.appendChild(FCKXHtml.XML.createTextNode(FCK.EditorDocument.title));return A;}};FCKXHtml.TagProcessors.ul=FCKXHtml.TagProcessors.ol;
+FCKXHtml._GetMainXmlString=function(){return this.MainNode.xml;};FCKXHtml._AppendAttributes=function(A,B,C,D){var E=B.attributes,bHasStyle;for (var n=0;n<E.length;n++){var F=E[n];if (F.specified){var G=F.nodeName.toLowerCase();var H;if (G.StartsWith('_fck')) continue;else if (G=='style'){bHasStyle=true;continue;}else if (G=='class'){H=F.nodeValue.replace(FCKRegexLib.FCK_Class,'');if (H.length==0) continue;}else if (G.indexOf('on')==0) H=F.nodeValue;else if (D=='body'&&G=='contenteditable') continue;else if (F.nodeValue===true) H=G;else{try{H=B.getAttribute(G,2);}catch (e) {}};this._AppendAttribute(C,G,H||F.nodeValue);}};if (bHasStyle||B.style.cssText.length>0){var I=FCKTools.ProtectFormStyles(B);var J=B.style.cssText.replace(FCKRegexLib.StyleProperties,FCKTools.ToLowerCase);FCKTools.RestoreFormStyles(B,I);this._AppendAttribute(C,'style',J);}};FCKXHtml.TagProcessors['div']=function(A,B){if (B.align.length>0) FCKXHtml._AppendAttribute(A,'align',B.align);A=FCKXHtml._AppendChildNodes(A,B,true);return A;};FCKXHtml.TagProcessors['font']=function(A,B){if (A.attributes.length==0) A=FCKXHtml.XML.createDocumentFragment();A=FCKXHtml._AppendChildNodes(A,B);return A;};FCKXHtml.TagProcessors['form']=function(A,B){if (B.acceptCharset&&B.acceptCharset.length>0&&B.acceptCharset!='UNKNOWN') FCKXHtml._AppendAttribute(A,'accept-charset',B.acceptCharset);var C=B.attributes['name'];if (C&&C.value.length>0) FCKXHtml._AppendAttribute(A,'name',C.value);A=FCKXHtml._AppendChildNodes(A,B,true);return A;};FCKXHtml.TagProcessors['input']=function(A,B){if (B.name) FCKXHtml._AppendAttribute(A,'name',B.name);if (B.value&&!A.attributes.getNamedItem('value')) FCKXHtml._AppendAttribute(A,'value',B.value);if (!A.attributes.getNamedItem('type')) FCKXHtml._AppendAttribute(A,'type','text');return A;};FCKXHtml.TagProcessors['label']=function(A,B){if (B.htmlFor.length>0) FCKXHtml._AppendAttribute(A,'for',B.htmlFor);A=FCKXHtml._AppendChildNodes(A,B);return A;};FCKXHtml.TagProcessors['map']=function(A,B){if (!A.attributes.getNamedItem('name')){var C=B.name;if (C) FCKXHtml._AppendAttribute(A,'name',C);};A=FCKXHtml._AppendChildNodes(A,B,true);return A;};FCKXHtml.TagProcessors['meta']=function(A,B){var C=A.attributes.getNamedItem('http-equiv');if (C==null||C.value.length==0){var D=B.outerHTML.match(FCKRegexLib.MetaHttpEquiv);if (D){D=D[1];FCKXHtml._AppendAttribute(A,'http-equiv',D);}};return A;};FCKXHtml.TagProcessors['option']=function(A,B){if (B.selected&&!A.attributes.getNamedItem('selected')) FCKXHtml._AppendAttribute(A,'selected','selected');A=FCKXHtml._AppendChildNodes(A,B);return A;};FCKXHtml.TagProcessors['textarea']=FCKXHtml.TagProcessors['select']=function(A,B){if (B.name) FCKXHtml._AppendAttribute(A,'name',B.name);A=FCKXHtml._AppendChildNodes(A,B);return A;};
 var FCKCodeFormatter={};FCKCodeFormatter.Init=function(){var A=this.Regex={};A.BlocksOpener=/\<(P|DIV|H1|H2|H3|H4|H5|H6|ADDRESS|PRE|OL|UL|LI|TITLE|META|LINK|BASE|SCRIPT|LINK|TD|TH|AREA|OPTION)[^\>]*\>/gi;A.BlocksCloser=/\<\/(P|DIV|H1|H2|H3|H4|H5|H6|ADDRESS|PRE|OL|UL|LI|TITLE|META|LINK|BASE|SCRIPT|LINK|TD|TH|AREA|OPTION)[^\>]*\>/gi;A.NewLineTags=/\<(BR|HR)[^\>]*\>/gi;A.MainTags=/\<\/?(HTML|HEAD|BODY|FORM|TABLE|TBODY|THEAD|TR)[^\>]*\>/gi;A.LineSplitter=/\s*\n+\s*/g;A.IncreaseIndent=/^\<(HTML|HEAD|BODY|FORM|TABLE|TBODY|THEAD|TR|UL|OL)[ \/\>]/i;A.DecreaseIndent=/^\<\/(HTML|HEAD|BODY|FORM|TABLE|TBODY|THEAD|TR|UL|OL)[ \>]/i;A.FormatIndentatorRemove=new RegExp('^'+FCKConfig.FormatIndentator);A.ProtectedTags=/(<PRE[^>]*>)([\s\S]*?)(<\/PRE>)/gi;};FCKCodeFormatter._ProtectData=function(A,B,C,D){return B+'___FCKpd___'+FCKCodeFormatter.ProtectedData.AddItem(C)+D;};FCKCodeFormatter.Format=function(A){if (!this.Regex) this.Init();FCKCodeFormatter.ProtectedData=[];var B=A.replace(this.Regex.ProtectedTags,FCKCodeFormatter._ProtectData);B=B.replace(this.Regex.BlocksOpener,'\n$&');B=B.replace(this.Regex.BlocksCloser,'$&\n');B=B.replace(this.Regex.NewLineTags,'$&\n');B=B.replace(this.Regex.MainTags,'\n$&\n');var C='';var D=B.split(this.Regex.LineSplitter);B='';for (var i=0;i<D.length;i++){var E=D[i];if (E.length==0) continue;if (this.Regex.DecreaseIndent.test(E)) C=C.replace(this.Regex.FormatIndentatorRemove,'');B+=C+E+'\n';if (this.Regex.IncreaseIndent.test(E)) C+=FCKConfig.FormatIndentator;};for (var j=0;j<FCKCodeFormatter.ProtectedData.length;j++){var F=new RegExp('___FCKpd___'+j);B=B.replace(F,FCKCodeFormatter.ProtectedData[j].replace(/\$/g,'$$$$'));};return B.Trim();};
 var FCKUndo={};FCKUndo.SavedData=[];FCKUndo.CurrentIndex=-1;FCKUndo.TypesCount=0;FCKUndo.Changed=false;FCKUndo.MaxTypes=25;FCKUndo.Typing=false;FCKUndo.SaveLocked=false;FCKUndo._GetBookmark=function(){FCKSelection.Restore();var A=new FCKDomRange(FCK.EditorWindow);try{A.MoveToSelection();}catch (e){return null;};if (FCKBrowserInfo.IsIE){var B=A.CreateBookmark();var C=FCK.EditorDocument.body.innerHTML;A.MoveToBookmark(B);return [B,C];};return A.CreateBookmark2();};FCKUndo._SelectBookmark=function(A){if (!A) return;var B=new FCKDomRange(FCK.EditorWindow);if (A instanceof Object){if (FCKBrowserInfo.IsIE) B.MoveToBookmark(A[0]);else B.MoveToBookmark2(A);try{B.Select();}catch (e){B.MoveToPosition(FCK.EditorDocument.body,4);B.Select();}}};FCKUndo._CompareCursors=function(A,B){for (var i=0;i<Math.min(A.length,B.length);i++){if (A[i]<B[i]) return-1;else if (A[i]>B[i]) return 1;};if (A.length<B.length) return-1;else if (A.length>B.length) return 1;return 0;};FCKUndo._CheckIsBookmarksEqual=function(A,B){if (!(A&&B)) return false;if (FCKBrowserInfo.IsIE){var C=A[1].search(A[0].StartId);var D=B[1].search(B[0].StartId);var E=A[1].search(A[0].EndId);var F=B[1].search(B[0].EndId);return C==D&&E==F;}else{return this._CompareCursors(A.Start,B.Start)==0&&this._CompareCursors(A.End,B.End)==0;}};FCKUndo.SaveUndoStep=function(){if (FCK.EditMode!=0||this.SaveLocked) return;if (this.SavedData.length) this.Changed=true;var A=FCK.EditorDocument.body.innerHTML;var B=this._GetBookmark();this.SavedData=this.SavedData.slice(0,this.CurrentIndex+1);if (this.CurrentIndex>0&&A==this.SavedData[this.CurrentIndex][0]&&this._CheckIsBookmarksEqual(B,this.SavedData[this.CurrentIndex][1])) return;else if (this.CurrentIndex==0&&this.SavedData.length&&A==this.SavedData[0][0]){this.SavedData[0][1]=B;return;};if (this.CurrentIndex+1>=FCKConfig.MaxUndoLevels) this.SavedData.shift();else this.CurrentIndex++;this.SavedData[this.CurrentIndex]=[A,B];FCK.Events.FireEvent("OnSelectionChange");};FCKUndo.CheckUndoState=function(){return (this.Changed||this.CurrentIndex>0);};FCKUndo.CheckRedoState=function(){return (this.CurrentIndex<(this.SavedData.length-1));};FCKUndo.Undo=function(){if (this.CheckUndoState()){if (this.CurrentIndex==(this.SavedData.length-1)){this.SaveUndoStep();};this._ApplyUndoLevel(--this.CurrentIndex);FCK.Events.FireEvent("OnSelectionChange");}};FCKUndo.Redo=function(){if (this.CheckRedoState()){this._ApplyUndoLevel(++this.CurrentIndex);FCK.Events.FireEvent("OnSelectionChange");}};FCKUndo._ApplyUndoLevel=function(A){var B=this.SavedData[A];if (!B) return;if (FCKBrowserInfo.IsIE){if (B[1]&&B[1][1]) FCK.SetInnerHtml(B[1][1]);else FCK.SetInnerHtml(B[0]);}else FCK.EditorDocument.body.innerHTML=B[0];this._SelectBookmark(B[1]);this.TypesCount=0;this.Changed=false;this.Typing=false;};
-var FCKEditingArea=function(A){this.TargetElement=A;this.Mode=0;if (FCK.IECleanup) FCK.IECleanup.AddItem(this,FCKEditingArea_Cleanup);};FCKEditingArea.prototype.Start=function(A,B){var C=this.TargetElement;var D=FCKTools.GetElementDocument(C);while(C.firstChild) C.removeChild(C.firstChild);if (this.Mode==0){if (FCK_IS_CUSTOM_DOMAIN) A='<script>document.domain="'+FCK_RUNTIME_DOMAIN+'";</script>'+A;if (FCKBrowserInfo.IsIE) A=A.replace(/(<base[^>]*?)\s*\/?>(?!\s*<\/base>)/gi,'$1></base>');else if (!B){var E=A.match(FCKRegexLib.BeforeBody);var F=A.match(FCKRegexLib.AfterBody);if (E&&F){var G=A.substr(E[1].length,A.length-E[1].length-F[1].length);A=E[1]+'&nbsp;'+F[1];if (FCKBrowserInfo.IsGecko&&(G.length==0||FCKRegexLib.EmptyParagraph.test(G))) G='<br type="_moz">';this._BodyHTML=G;}else this._BodyHTML=A;};var H=this.IFrame=D.createElement('iframe');var I='<script type="text/javascript" _fcktemp="true">window.onerror=function(){return true;};</script>';H.frameBorder=0;H.width=H.height='100%';if (FCK_IS_CUSTOM_DOMAIN&&FCKBrowserInfo.IsIE){window._FCKHtmlToLoad=I+A;H.src='javascript:void( (function(){document.open() ;document.domain="'+document.domain+'" ;document.write( window.parent._FCKHtmlToLoad );document.close() ;window.parent._FCKHtmlToLoad = null ;})() )';}else if (!FCKBrowserInfo.IsGecko){H.src='javascript:void(0)';};C.appendChild(H);this.Window=H.contentWindow;if (!FCK_IS_CUSTOM_DOMAIN||!FCKBrowserInfo.IsIE){var J=this.Window.document;J.open();J.write(I+A);J.close();};if (FCKBrowserInfo.IsAIR) FCKAdobeAIR.EditingArea_Start(J,A);if (FCKBrowserInfo.IsGecko10&&!B){this.Start(A,true);return;};if (H.readyState&&H.readyState!='completed'){var K=this;(H.onreadystatechange=function(){if (H.readyState=='complete'){H.onreadystatechange=null;K.Window._FCKEditingArea=K;FCKEditingArea_CompleteStart.call(K.Window);}})();}else{this.Window._FCKEditingArea=this;if (FCKBrowserInfo.IsGecko10) this.Window.setTimeout(FCKEditingArea_CompleteStart,500);else FCKEditingArea_CompleteStart.call(this.Window);}}else{var L=this.Textarea=D.createElement('textarea');L.className='SourceField';L.dir='ltr';FCKDomTools.SetElementStyles(L,{width:'100%',height:'100%',border:'none',resize:'none',outline:'none'});C.appendChild(L);L.value=A;FCKTools.RunFunction(this.OnLoad);}};function FCKEditingArea_CompleteStart(){if (!this.document.body){this.setTimeout(FCKEditingArea_CompleteStart,50);return;};var A=this._FCKEditingArea;A.Document=A.Window.document;A.MakeEditable();FCKTools.RunFunction(A.OnLoad);};FCKEditingArea.prototype.MakeEditable=function(){var A=this.Document;if (FCKBrowserInfo.IsIE){A.body.disabled=true;A.body.contentEditable=true;A.body.removeAttribute("disabled");}else{try{A.body.spellcheck=(this.FFSpellChecker!==false);if (this._BodyHTML){A.body.innerHTML=this._BodyHTML;this._BodyHTML=null;};A.designMode='on';A.execCommand('enableObjectResizing',false,!FCKConfig.DisableObjectResizing);A.execCommand('enableInlineTableEditing',false,!FCKConfig.DisableFFTableHandles);}catch (e){FCKTools.AddEventListener(this.Window.frameElement,'DOMAttrModified',FCKEditingArea_Document_AttributeNodeModified);}}};function FCKEditingArea_Document_AttributeNodeModified(A){var B=A.currentTarget.contentWindow._FCKEditingArea;if (B._timer) window.clearTimeout(B._timer);B._timer=FCKTools.SetTimeout(FCKEditingArea_MakeEditableByMutation,1000,B);};function FCKEditingArea_MakeEditableByMutation(){delete this._timer;FCKTools.RemoveEventListener(this.Window.frameElement,'DOMAttrModified',FCKEditingArea_Document_AttributeNodeModified);this.MakeEditable();};FCKEditingArea.prototype.Focus=function(){try{if (this.Mode==0){if (FCKBrowserInfo.IsIE) this._FocusIE();else this.Window.focus();}else{var A=FCKTools.GetElementDocument(this.Textarea);if ((!A.hasFocus||A.hasFocus())&&A.activeElement==this.Textarea) return;this.Textarea.focus();}}catch(e) {}};FCKEditingArea.prototype._FocusIE=function(){this.Document.body.setActive();this.Window.focus();var A=this.Document.selection.createRange();var B=A.parentElement();var C=B.nodeName.toLowerCase();if (B.childNodes.length>0||!(FCKListsLib.BlockElements[C]||FCKListsLib.NonEmptyBlockElements[C])){return;};A=new FCKDomRange(this.Window);A.MoveToElementEditStart(B);A.Select();};function FCKEditingArea_Cleanup(){if (this.Document) this.Document.body.innerHTML="";this.TargetElement=null;this.IFrame=null;this.Document=null;this.Textarea=null;if (this.Window){this.Window._FCKEditingArea=null;this.Window=null;}};
+var FCKEditingArea=function(A){this.TargetElement=A;this.Mode=0;if (FCK.IECleanup) FCK.IECleanup.AddItem(this,FCKEditingArea_Cleanup);};FCKEditingArea.prototype.Start=function(A,B){var C=this.TargetElement;var D=FCKTools.GetElementDocument(C);while(C.firstChild) C.removeChild(C.firstChild);if (this.Mode==0){if (FCK_IS_CUSTOM_DOMAIN) A='<script>document.domain="'+FCK_RUNTIME_DOMAIN+'";</script>'+A;if (FCKBrowserInfo.IsIE) A=A.replace(/(<base[^>]*?)\s*\/?>(?!\s*<\/base>)/gi,'$1></base>');else if (!B){var E=A.match(FCKRegexLib.BeforeBody);var F=A.match(FCKRegexLib.AfterBody);if (E&&F){var G=A.substr(E[1].length,A.length-E[1].length-F[1].length);A=E[1]+'&nbsp;'+F[1];if (FCKBrowserInfo.IsGecko&&(G.length==0||FCKRegexLib.EmptyParagraph.test(G))) G='<br type="_moz">';this._BodyHTML=G;}else this._BodyHTML=A;};var H=this.IFrame=D.createElement('iframe');var I='<script type="text/javascript" _fcktemp="true">window.onerror=function(){return true;};</script>';H.frameBorder=0;H.style.width=H.style.height='100%';if (FCK_IS_CUSTOM_DOMAIN&&FCKBrowserInfo.IsIE){window._FCKHtmlToLoad=A.replace(/<head>/i,'<head>'+I);H.src='javascript:void( (function(){document.open() ;document.domain="'+document.domain+'" ;document.write( window.parent._FCKHtmlToLoad );document.close() ;window.parent._FCKHtmlToLoad = null ;})() )';}else if (!FCKBrowserInfo.IsGecko){H.src='javascript:void(0)';};C.appendChild(H);this.Window=H.contentWindow;if (!FCK_IS_CUSTOM_DOMAIN||!FCKBrowserInfo.IsIE){var J=this.Window.document;J.open();J.write(A.replace(/<head>/i,'<head>'+I));J.close();};if (FCKBrowserInfo.IsAIR) FCKAdobeAIR.EditingArea_Start(J,A);if (FCKBrowserInfo.IsGecko10&&!B){this.Start(A,true);return;};if (H.readyState&&H.readyState!='completed'){var K=this;setTimeout(function(){try{K.Window.document.documentElement.doScroll("left");}catch(e){setTimeout(arguments.callee,0);return;};K.Window._FCKEditingArea=K;FCKEditingArea_CompleteStart.call(K.Window);},0);}else{this.Window._FCKEditingArea=this;if (FCKBrowserInfo.IsGecko10) this.Window.setTimeout(FCKEditingArea_CompleteStart,500);else FCKEditingArea_CompleteStart.call(this.Window);}}else{var L=this.Textarea=D.createElement('textarea');L.className='SourceField';L.dir='ltr';FCKDomTools.SetElementStyles(L,{width:'100%',height:'100%',border:'none',resize:'none',outline:'none'});C.appendChild(L);L.value=A;FCKTools.RunFunction(this.OnLoad);}};function FCKEditingArea_CompleteStart(){if (!this.document.body){this.setTimeout(FCKEditingArea_CompleteStart,50);return;};var A=this._FCKEditingArea;A.Document=A.Window.document;A.MakeEditable();FCKTools.RunFunction(A.OnLoad);};FCKEditingArea.prototype.MakeEditable=function(){var A=this.Document;if (FCKBrowserInfo.IsIE){A.body.disabled=true;A.body.contentEditable=true;A.body.removeAttribute("disabled");}else{try{A.body.spellcheck=(this.FFSpellChecker!==false);if (this._BodyHTML){A.body.innerHTML=this._BodyHTML;A.body.offsetLeft;this._BodyHTML=null;};A.designMode='on';A.execCommand('enableObjectResizing',false,!FCKConfig.DisableObjectResizing);A.execCommand('enableInlineTableEditing',false,!FCKConfig.DisableFFTableHandles);}catch (e){FCKTools.AddEventListener(this.Window.frameElement,'DOMAttrModified',FCKEditingArea_Document_AttributeNodeModified);}}};function FCKEditingArea_Document_AttributeNodeModified(A){var B=A.currentTarget.contentWindow._FCKEditingArea;if (B._timer) window.clearTimeout(B._timer);B._timer=FCKTools.SetTimeout(FCKEditingArea_MakeEditableByMutation,1000,B);};function FCKEditingArea_MakeEditableByMutation(){delete this._timer;FCKTools.RemoveEventListener(this.Window.frameElement,'DOMAttrModified',FCKEditingArea_Document_AttributeNodeModified);this.MakeEditable();};FCKEditingArea.prototype.Focus=function(){try{if (this.Mode==0){if (FCKBrowserInfo.IsIE) this._FocusIE();else this.Window.focus();}else{var A=FCKTools.GetElementDocument(this.Textarea);if ((!A.hasFocus||A.hasFocus())&&A.activeElement==this.Textarea) return;this.Textarea.focus();}}catch(e) {}};FCKEditingArea.prototype._FocusIE=function(){this.Document.body.setActive();this.Window.focus();var A=this.Document.selection.createRange();var B=A.parentElement();var C=B.nodeName.toLowerCase();if (B.childNodes.length>0||!(FCKListsLib.BlockElements[C]||FCKListsLib.NonEmptyBlockElements[C])){return;};A=new FCKDomRange(this.Window);A.MoveToElementEditStart(B);A.Select();};function FCKEditingArea_Cleanup(){if (this.Document) this.Document.body.innerHTML="";this.TargetElement=null;this.IFrame=null;this.Document=null;this.Textarea=null;if (this.Window){this.Window._FCKEditingArea=null;this.Window=null;}};
 var FCKKeystrokeHandler=function(A){this.Keystrokes={};this.CancelCtrlDefaults=(A!==false);};FCKKeystrokeHandler.prototype.AttachToElement=function(A){FCKTools.AddEventListenerEx(A,'keydown',_FCKKeystrokeHandler_OnKeyDown,this);if (FCKBrowserInfo.IsGecko10||FCKBrowserInfo.IsOpera||(FCKBrowserInfo.IsGecko&&FCKBrowserInfo.IsMac)) FCKTools.AddEventListenerEx(A,'keypress',_FCKKeystrokeHandler_OnKeyPress,this);};FCKKeystrokeHandler.prototype.SetKeystrokes=function(){for (var i=0;i<arguments.length;i++){var A=arguments[i];if (!A) continue;if (typeof(A[0])=='object') this.SetKeystrokes.apply(this,A);else{if (A.length==1) delete this.Keystrokes[A[0]];else this.Keystrokes[A[0]]=A[1]===true?true:A;}}};function _FCKKeystrokeHandler_OnKeyDown(A,B){var C=A.keyCode||A.which;var D=0;if (A.ctrlKey||A.metaKey) D+=CTRL;if (A.shiftKey) D+=SHIFT;if (A.altKey) D+=ALT;var E=C+D;var F=B._CancelIt=false;var G=B.Keystrokes[E];if (G){if (G===true||!(B.OnKeystroke&&B.OnKeystroke.apply(B,G))) return true;F=true;};if (F||(B.CancelCtrlDefaults&&D==CTRL&&(C<33||C>40))){B._CancelIt=true;if (A.preventDefault) return A.preventDefault();A.returnValue=false;A.cancelBubble=true;return false;};return true;};function _FCKKeystrokeHandler_OnKeyPress(A,B){if (B._CancelIt){if (A.preventDefault) return A.preventDefault();return false;};return true;};
 FCK.DTD=(function(){var X=FCKTools.Merge;var A,L,J,M,N,O,D,H,P,K,Q,F,G,C,B,E,I;A={isindex:1,fieldset:1};B={input:1,button:1,select:1,textarea:1,label:1};C=X({a:1},B);D=X({iframe:1},C);E={hr:1,ul:1,menu:1,div:1,blockquote:1,noscript:1,table:1,center:1,address:1,dir:1,pre:1,h5:1,dl:1,h4:1,noframes:1,h6:1,ol:1,h1:1,h3:1,h2:1};F={ins:1,del:1,script:1};G=X({b:1,acronym:1,bdo:1,'var':1,'#':1,abbr:1,code:1,br:1,i:1,cite:1,kbd:1,u:1,strike:1,s:1,tt:1,strong:1,q:1,samp:1,em:1,dfn:1,span:1},F);H=X({sub:1,img:1,object:1,sup:1,basefont:1,map:1,applet:1,font:1,big:1,small:1},G);I=X({p:1},H);J=X({iframe:1},H,B);K={img:1,noscript:1,br:1,kbd:1,center:1,button:1,basefont:1,h5:1,h4:1,samp:1,h6:1,ol:1,h1:1,h3:1,h2:1,form:1,font:1,'#':1,select:1,menu:1,ins:1,abbr:1,label:1,code:1,table:1,script:1,cite:1,input:1,iframe:1,strong:1,textarea:1,noframes:1,big:1,small:1,span:1,hr:1,sub:1,bdo:1,'var':1,div:1,object:1,sup:1,strike:1,dir:1,map:1,dl:1,applet:1,del:1,isindex:1,fieldset:1,ul:1,b:1,acronym:1,a:1,blockquote:1,i:1,u:1,s:1,tt:1,address:1,q:1,pre:1,p:1,em:1,dfn:1};L=X({a:1},J);M={tr:1};N={'#':1};O=X({param:1},K);P=X({form:1},A,D,E,I);Q={li:1};return {col:{},tr:{td:1,th:1},img:{},colgroup:{col:1},noscript:P,td:P,br:{},th:P,center:P,kbd:L,button:X(I,E),basefont:{},h5:L,h4:L,samp:L,h6:L,ol:Q,h1:L,h3:L,option:N,h2:L,form:X(A,D,E,I),select:{optgroup:1,option:1},font:J,ins:P,menu:Q,abbr:L,label:L,table:{thead:1,col:1,tbody:1,tr:1,colgroup:1,caption:1,tfoot:1},code:L,script:N,tfoot:M,cite:L,li:P,input:{},iframe:P,strong:J,textarea:N,noframes:P,big:J,small:J,span:J,hr:{},dt:L,sub:J,optgroup:{option:1},param:{},bdo:L,'var':J,div:P,object:O,sup:J,dd:P,strike:J,area:{},dir:Q,map:X({area:1,form:1,p:1},A,F,E),applet:O,dl:{dt:1,dd:1},del:P,isindex:{},fieldset:X({legend:1},K),thead:M,ul:Q,acronym:L,b:J,a:J,blockquote:P,caption:L,i:J,u:J,tbody:M,s:L,address:X(D,I),tt:J,legend:L,q:L,pre:X(G,C),p:L,em:J,dfn:L};})();
-var FCKStyle=function(A){this.Element=(A.Element||'span').toLowerCase();this._StyleDesc=A;};FCKStyle.prototype={GetType:function(){var A=this.GetType_$;if (A!=undefined) return A;var B=this.Element;if (B=='#'||FCKListsLib.StyleBlockElements[B]) A=0;else if (FCKListsLib.StyleObjectElements[B]) A=2;else A=1;return (this.GetType_$=A);},ApplyToSelection:function(A){var B=new FCKDomRange(A);B.MoveToSelection();this.ApplyToRange(B,true);},ApplyToRange:function(A,B,C){switch (this.GetType()){case 0:this.ApplyToRange=this._ApplyBlockStyle;break;case 1:this.ApplyToRange=this._ApplyInlineStyle;break;default:return;};this.ApplyToRange(A,B,C);},ApplyToObject:function(A){if (!A) return;this.BuildElement(null,A);},RemoveFromSelection:function(A){var B=new FCKDomRange(A);B.MoveToSelection();this.RemoveFromRange(B,true);},RemoveFromRange:function(A,B,C){var D;var E=this._GetAttribsForComparison();var F=this._GetOverridesForComparison();if (A.CheckIsCollapsed()){var D=A.CreateBookmark(true);var H=A.GetBookmarkNode(D,true);var I=new FCKElementPath(H.parentNode);var J=[];var K=!FCKDomTools.GetNextSibling(H);var L=K||!FCKDomTools.GetPreviousSibling(H);var M;var N=-1;for (var i=0;i<I.Elements.length;i++){var O=I.Elements[i];if (this.CheckElementRemovable(O)){if (L&&!FCKDomTools.CheckIsEmptyElement(O,function(el){return (el!=H);})){M=O;N=J.length-1;}else{var P=O.nodeName.toLowerCase();if (P==this.Element){for (var Q in E){if (FCKDomTools.HasAttribute(O,Q)){switch (Q){case 'style':this._RemoveStylesFromElement(O);break;case 'class':if (FCKDomTools.GetAttributeValue(O,Q)!=this.GetFinalAttributeValue(Q)) continue;default:FCKDomTools.RemoveAttribute(O,Q);}}}};this._RemoveOverrides(O,F[P]);if (this.GetType()==1) this._RemoveNoAttribElement(O);}}else if (L) J.push(O);L=L&&((K&&!FCKDomTools.GetNextSibling(O))||(!K&&!FCKDomTools.GetPreviousSibling(O)));if (M&&(!L||(i==I.Elements.length-1))){var R=FCKDomTools.RemoveNode(H);for (var j=0;j<=N;j++){var S=FCKDomTools.CloneElement(J[j]);S.appendChild(R);R=S;};if (K) FCKDomTools.InsertAfterNode(M,R);else M.parentNode.insertBefore(R,M);L=false;M=null;}};if (B) A.SelectBookmark(D);if (C) A.MoveToBookmark(D);return;};A.Expand('inline_elements');D=A.CreateBookmark(true);var T=A.GetBookmarkNode(D,true);var U=A.GetBookmarkNode(D,false);A.Release(true);var I=new FCKElementPath(T);var X=I.Elements;var O;for (var i=1;i<X.length;i++){O=X[i];if (O==I.Block||O==I.BlockLimit) break;if (this.CheckElementRemovable(O)) FCKDomTools.BreakParent(T,O,A);};I=new FCKElementPath(U);X=I.Elements;for (var i=1;i<X.length;i++){O=X[i];if (O==I.Block||O==I.BlockLimit) break;b=O.nodeName.toLowerCase();if (this.CheckElementRemovable(O)) FCKDomTools.BreakParent(U,O,A);};var Z=FCKDomTools.GetNextSourceNode(T,true);while (Z){var a=FCKDomTools.GetNextSourceNode(Z);if (Z.nodeType==1){var b=Z.nodeName.toLowerCase();var c=(b==this.Element);if (c){for (var Q in E){if (FCKDomTools.HasAttribute(Z,Q)){switch (Q){case 'style':this._RemoveStylesFromElement(Z);break;case 'class':if (FCKDomTools.GetAttributeValue(Z,Q)!=this.GetFinalAttributeValue(Q)) continue;default:FCKDomTools.RemoveAttribute(Z,Q);}}}}else c=!!F[b];if (c){this._RemoveOverrides(Z,F[b]);this._RemoveNoAttribElement(Z);}};if (a==U) break;Z=a;};this._FixBookmarkStart(T);if (B) A.SelectBookmark(D);if (C) A.MoveToBookmark(D);},CheckElementRemovable:function(A,B){if (!A) return false;var C=A.nodeName.toLowerCase();if (C==this.Element){if (!B&&!FCKDomTools.HasAttributes(A)) return true;var D=this._GetAttribsForComparison();var E=(D._length==0);for (var F in D){if (F=='_length') continue;if (this._CompareAttributeValues(F,FCKDomTools.GetAttributeValue(A,F),(this.GetFinalAttributeValue(F)||''))){E=true;if (!B) break;}else{E=false;if (B) return false;}};if (E) return true;};var G=this._GetOverridesForComparison()[C];if (G){if (!(D=G.Attributes)) return true;for (var i=0;i<D.length;i++){var H=D[i][0];if (FCKDomTools.HasAttribute(A,H)){var I=D[i][1];if (I==null||(typeof I=='string'&&FCKDomTools.GetAttributeValue(A,H)==I)||I.test(FCKDomTools.GetAttributeValue(A,H))) return true;}}};return false;},CheckActive:function(A){switch (this.GetType()){case 0:return this.CheckElementRemovable(A.Block||A.BlockLimit,true);case 1:var B=A.Elements;for (var i=0;i<B.length;i++){var C=B[i];if (C==A.Block||C==A.BlockLimit) continue;if (this.CheckElementRemovable(C,true)) return true;}};return false;},RemoveFromElement:function(A){var B=this._GetAttribsForComparison();var C=this._GetOverridesForComparison();var D=A.getElementsByTagName(this.Element);for (var i=D.length-1;i>=0;i--){var E=D[i];for (var F in B){if (FCKDomTools.HasAttribute(E,F)){switch (F){case 'style':this._RemoveStylesFromElement(E);break;case 'class':if (FCKDomTools.GetAttributeValue(E,F)!=this.GetFinalAttributeValue(F)) continue;default:FCKDomTools.RemoveAttribute(E,F);}}};this._RemoveOverrides(E,C[this.Element]);this._RemoveNoAttribElement(E);};for (var G in C){if (G!=this.Element){D=A.getElementsByTagName(G);for (var i=D.length-1;i>=0;i--){var E=D[i];this._RemoveOverrides(E,C[G]);this._RemoveNoAttribElement(E);}}}},_RemoveStylesFromElement:function(A){var B=A.style.cssText;var C=this.GetFinalStyleValue();if (B.length>0&&C.length==0) return;C='(^|;)\\s*('+C.replace(/\s*([^ ]+):.*?(;|$)/g,'$1|').replace(/\|$/,'')+'):[^;]+';var D=new RegExp(C,'gi');B=B.replace(D,'').Trim();if (B.length==0||B==';') FCKDomTools.RemoveAttribute(A,'style');else A.style.cssText=B.replace(D,'');},_RemoveOverrides:function(A,B){var C=B&&B.Attributes;if (C){for (var i=0;i<C.length;i++){var D=C[i][0];if (FCKDomTools.HasAttribute(A,D)){var E=C[i][1];if (E==null||(E.test&&E.test(FCKDomTools.GetAttributeValue(A,D)))||(typeof E=='string'&&FCKDomTools.GetAttributeValue(A,D)==E)) FCKDomTools.RemoveAttribute(A,D);}}}},_RemoveNoAttribElement:function(A){if (!FCKDomTools.HasAttributes(A)){var B=A.firstChild;var C=A.lastChild;FCKDomTools.RemoveNode(A,true);this._MergeSiblings(B);if (B!=C) this._MergeSiblings(C);}},BuildElement:function(A,B){var C=B||A.createElement(this.Element);var D=this._StyleDesc.Attributes;var E;if (D){for (var F in D){E=this.GetFinalAttributeValue(F);if (F.toLowerCase()=='class') C.className=E;else C.setAttribute(F,E);}};if (this._GetStyleText().length>0) C.style.cssText=this.GetFinalStyleValue();return C;},_CompareAttributeValues:function(A,B,C){if (A=='style'&&B&&C){B=B.replace(/;$/,'').toLowerCase();C=C.replace(/;$/,'').toLowerCase();};return (B==C||((B===null||B==='')&&(C===null||C==='')))},GetFinalAttributeValue:function(A){var B=this._StyleDesc.Attributes;var B=B?B[A]:null;if (!B&&A=='style') return this.GetFinalStyleValue();if (B&&this._Variables) B=B.Replace(FCKRegexLib.StyleVariableAttName,this._GetVariableReplace,this);return B;},GetFinalStyleValue:function(){var A=this._GetStyleText();if (A.length>0&&this._Variables){A=A.Replace(FCKRegexLib.StyleVariableAttName,this._GetVariableReplace,this);A=FCKTools.NormalizeCssText(A);};return A;},_GetVariableReplace:function(){return this._Variables[arguments[2]]||arguments[0];},SetVariable:function(A,B){var C=this._Variables;if (!C) C=this._Variables={};this._Variables[A]=B;},_FromPre:function(A,B,C){var D=B.innerHTML;D=D.replace(/(\r\n|\r)/g,'\n');D=D.replace(/^[ \t]*\n/,'');D=D.replace(/\n$/,'');D=D.replace(/^[ \t]+|[ \t]+$/g,function(match,offset,s){if (match.length==1) return '&nbsp;';else if (offset==0) return new Array(match.length).join('&nbsp;')+' ';else return ' '+new Array(match.length).join('&nbsp;');});var E=new FCKHtmlIterator(D);var F=[];E.Each(function(isTag,value){if (!isTag){value=value.replace(/\n/g,'<BR>');value=value.replace(/[ \t]{2,}/g,function (match){return new Array(match.length).join('&nbsp;')+' ';});};F.push(value);});C.innerHTML=F.join('');return C;},_ToPre:function(A,B,C){var D=B.innerHTML.Trim();D=D.replace(/[ \t\r\n]*(<br[^>]*>)[ \t\r\n]*/gi,'<BR />');var E=new FCKHtmlIterator(D);var F=[];E.Each(function(isTag,value){if (!isTag) value=value.replace(/([ \t\n\r]+|&nbsp;)/g,' ');else if (isTag&&value=='<BR />') value='\n';F.push(value);});if (FCKBrowserInfo.IsIE){var G=A.createElement('div');G.appendChild(C);C.outerHTML='<PRE>\n'+F.join('')+'</PRE>';C=G.removeChild(G.firstChild);}else C.innerHTML=F.join('');return C;},_ApplyBlockStyle:function(A,B,C){var D;if (B) D=A.CreateBookmark();var E=new FCKDomRangeIterator(A);E.EnforceRealBlocks=true;var F;var G=A.Window.document;var H=[];var I=[];while((F=E.GetNextParagraph())){var J=this.BuildElement(G);var K=J.nodeName.IEquals('pre');var L=F.nodeName.IEquals('pre');if (K&&!L){J=this._ToPre(G,F,J);H.push(J);}else if (!K&&L){J=this._FromPre(G,F,J);I.push(J);}else FCKDomTools.MoveChildren(F,J);F.parentNode.insertBefore(J,F);FCKDomTools.RemoveNode(F);};for (var i=0;i<H.length-1;i++){if (FCKDomTools.GetNextSourceElement(H[i],true,[],[],true)!=H[i+1]) continue;H[i+1].innerHTML=H[i].innerHTML+'\n\n'+H[i+1].innerHTML;FCKDomTools.RemoveNode(H[i]);};for (var i=0;i<I.length;i++){var M=I[i];var N=null;for (var j=0;j<M.childNodes.length;j++){var O=M.childNodes[j];if (O.nodeName.IEquals('br')&&j!=0&&j!=M.childNodes.length-2&&O.nextSibling&&O.nextSibling.nodeName.IEquals('br')){FCKDomTools.RemoveNode(O.nextSibling);FCKDomTools.RemoveNode(O);j--;N=FCKDomTools.InsertAfterNode(N||M,G.createElement(M.nodeName));continue;};if (N){FCKDomTools.MoveNode(O,N);j--;}}};if (B) A.SelectBookmark(D);if (C) A.MoveToBookmark(D);},_ApplyInlineStyle:function(A,B,C){var D=A.Window.document;if (A.CheckIsCollapsed()){var E=this.BuildElement(D);A.InsertNode(E);A.MoveToPosition(E,2);A.Select();return;};var F=this.Element;var G=FCK.DTD[F]||FCK.DTD.span;var H=this._GetAttribsForComparison();var I;A.Expand('inline_elements');var J=A.CreateBookmark(true);var K=A.GetBookmarkNode(J,true);var L=A.GetBookmarkNode(J,false);A.Release(true);var M=FCKDomTools.GetNextSourceNode(K,true);while (M){var N=false;var O=M.nodeType;var P=O==1?M.nodeName.toLowerCase():null;if (!P||G[P]){if ((FCK.DTD[M.parentNode.nodeName.toLowerCase()]||FCK.DTD.span)[F]||!FCK.DTD[F]){if (!A.CheckHasRange()) A.SetStart(M,3);if (O!=1||M.childNodes.length==0){var Q=M;var R=Q.parentNode;while (Q==R.lastChild&&G[R.nodeName.toLowerCase()]){Q=R;};A.SetEnd(Q,4);if (Q==Q.parentNode.lastChild&&!G[Q.parentNode.nodeName.toLowerCase()]) N=true;}else{A.SetEnd(M,3);}}else N=true;}else N=true;M=FCKDomTools.GetNextSourceNode(M);if (M==L){M=null;N=true;};if (N&&A.CheckHasRange()&&!A.CheckIsCollapsed()){I=this.BuildElement(D);A.ExtractContents().AppendTo(I);if (I.innerHTML.RTrim().length>0){A.InsertNode(I);this.RemoveFromElement(I);this._MergeSiblings(I,this._GetAttribsForComparison());if (!FCKBrowserInfo.IsIE) I.normalize();};A.Release(true);}};this._FixBookmarkStart(K);if (B) A.SelectBookmark(J);if (C) A.MoveToBookmark(J);},_FixBookmarkStart:function(A){var B;while ((B=A.nextSibling)){if (B.nodeType==1&&FCKListsLib.InlineNonEmptyElements[B.nodeName.toLowerCase()]){if (!B.firstChild) FCKDomTools.RemoveNode(B);else FCKDomTools.MoveNode(A,B,true);continue;};if (B.nodeType==3&&B.length==0){FCKDomTools.RemoveNode(B);continue;};break;}},_MergeSiblings:function(A,B){if (!A||A.nodeType!=1||!FCKListsLib.InlineNonEmptyElements[A.nodeName.toLowerCase()]) return;this._MergeNextSibling(A,B);this._MergePreviousSibling(A,B);},_MergeNextSibling:function(A,B){var C=A.nextSibling;var D=(C&&C.nodeType==1&&C.getAttribute('_fck_bookmark'));if (D) C=C.nextSibling;if (C&&C.nodeType==1&&C.nodeName==A.nodeName){if (!B) B=this._CreateElementAttribsForComparison(A);if (this._CheckAttributesMatch(C,B)){var E=A.lastChild;if (D) FCKDomTools.MoveNode(A.nextSibling,A);FCKDomTools.MoveChildren(C,A);FCKDomTools.RemoveNode(C);if (E) this._MergeNextSibling(E);}}},_MergePreviousSibling:function(A,B){var C=A.previousSibling;var D=(C&&C.nodeType==1&&C.getAttribute('_fck_bookmark'));if (D) C=C.previousSibling;if (C&&C.nodeType==1&&C.nodeName==A.nodeName){if (!B) B=this._CreateElementAttribsForComparison(A);if (this._CheckAttributesMatch(C,B)){var E=A.firstChild;if (D) FCKDomTools.MoveNode(A.previousSibling,A,true);FCKDomTools.MoveChildren(C,A,true);FCKDomTools.RemoveNode(C);if (E) this._MergePreviousSibling(E);}}},_GetStyleText:function(){var A=this._StyleDesc.Styles;var B=(this._StyleDesc.Attributes?this._StyleDesc.Attributes['style']||'':'');if (B.length>0) B+=';';for (var C in A) B+=C+':'+A[C]+';';if (B.length>0&&!(/#\(/.test(B))){B=FCKTools.NormalizeCssText(B);};return (this._GetStyleText=function() { return B;})();},_GetAttribsForComparison:function(){var A=this._GetAttribsForComparison_$;if (A) return A;A={};var B=this._StyleDesc.Attributes;if (B){for (var C in B){A[C.toLowerCase()]=B[C].toLowerCase();}};if (this._GetStyleText().length>0){A['style']=this._GetStyleText().toLowerCase();};FCKTools.AppendLengthProperty(A,'_length');return (this._GetAttribsForComparison_$=A);},_GetOverridesForComparison:function(){var A=this._GetOverridesForComparison_$;if (A) return A;A={};var B=this._StyleDesc.Overrides;if (B){if (!FCKTools.IsArray(B)) B=[B];for (var i=0;i<B.length;i++){var C=B[i];var D;var E;var F;if (typeof C=='string') D=C.toLowerCase();else{D=C.Element?C.Element.toLowerCase():this.Element;F=C.Attributes;};E=A[D]||(A[D]={});if (F){var G=(E.Attributes=E.Attributes||[]);for (var H in F){G.push([H.toLowerCase(),F[H]]);}}}};return (this._GetOverridesForComparison_$=A);},_CreateElementAttribsForComparison:function(A){var B={};var C=0;for (var i=0;i<A.attributes.length;i++){var D=A.attributes[i];if (D.specified){B[D.nodeName.toLowerCase()]=FCKDomTools.GetAttributeValue(A,D).toLowerCase();C++;}};B._length=C;return B;},_CheckAttributesMatch:function(A,B){var C=A.attributes;var D=0;for (var i=0;i<C.length;i++){var E=C[i];if (E.specified){var F=E.nodeName.toLowerCase();var G=B[F];if (!G) break;if (G!=FCKDomTools.GetAttributeValue(A,E).toLowerCase()) break;D++;}};return (D==B._length);}};
+var FCKStyle=function(A){this.Element=(A.Element||'span').toLowerCase();this._StyleDesc=A;};FCKStyle.prototype={GetType:function(){var A=this.GetType_$;if (A!=undefined) return A;var B=this.Element;if (B=='#'||FCKListsLib.StyleBlockElements[B]) A=0;else if (FCKListsLib.StyleObjectElements[B]) A=2;else A=1;return (this.GetType_$=A);},ApplyToSelection:function(A){var B=new FCKDomRange(A);B.MoveToSelection();this.ApplyToRange(B,true);},ApplyToRange:function(A,B,C){switch (this.GetType()){case 0:this.ApplyToRange=this._ApplyBlockStyle;break;case 1:this.ApplyToRange=this._ApplyInlineStyle;break;default:return;};this.ApplyToRange(A,B,C);},ApplyToObject:function(A){if (!A) return;this.BuildElement(null,A);},RemoveFromSelection:function(A){var B=new FCKDomRange(A);B.MoveToSelection();this.RemoveFromRange(B,true);},RemoveFromRange:function(A,B,C){var D;var E=this._GetAttribsForComparison();var F=this._GetOverridesForComparison();if (A.CheckIsCollapsed()){var D=A.CreateBookmark(true);var H=A.GetBookmarkNode(D,true);var I=new FCKElementPath(H.parentNode);var J=[];var K=!FCKDomTools.GetNextSibling(H);var L=K||!FCKDomTools.GetPreviousSibling(H);var M;var N=-1;for (var i=0;i<I.Elements.length;i++){var O=I.Elements[i];if (this.CheckElementRemovable(O)){if (L&&!FCKDomTools.CheckIsEmptyElement(O,function(el){return (el!=H);})){M=O;N=J.length-1;}else{var P=O.nodeName.toLowerCase();if (P==this.Element){for (var Q in E){if (FCKDomTools.HasAttribute(O,Q)){switch (Q){case 'style':this._RemoveStylesFromElement(O);break;case 'class':if (FCKDomTools.GetAttributeValue(O,Q)!=this.GetFinalAttributeValue(Q)) continue;default:FCKDomTools.RemoveAttribute(O,Q);}}}};this._RemoveOverrides(O,F[P]);if (this.GetType()==1) this._RemoveNoAttribElement(O);}}else if (L) J.push(O);L=L&&((K&&!FCKDomTools.GetNextSibling(O))||(!K&&!FCKDomTools.GetPreviousSibling(O)));if (M&&(!L||(i==I.Elements.length-1))){var R=FCKDomTools.RemoveNode(H);for (var j=0;j<=N;j++){var S=FCKDomTools.CloneElement(J[j]);S.appendChild(R);R=S;};if (K) FCKDomTools.InsertAfterNode(M,R);else M.parentNode.insertBefore(R,M);L=false;M=null;}};if (B) A.SelectBookmark(D);if (C) A.MoveToBookmark(D);return;};A.Expand('inline_elements');D=A.CreateBookmark(true);var T=A.GetBookmarkNode(D,true);var U=A.GetBookmarkNode(D,false);A.Release(true);var I=new FCKElementPath(T);var X=I.Elements;var O;for (var i=1;i<X.length;i++){O=X[i];if (O==I.Block||O==I.BlockLimit) break;if (this.CheckElementRemovable(O)) FCKDomTools.BreakParent(T,O,A);};I=new FCKElementPath(U);X=I.Elements;for (var i=1;i<X.length;i++){O=X[i];if (O==I.Block||O==I.BlockLimit) break;b=O.nodeName.toLowerCase();if (this.CheckElementRemovable(O)) FCKDomTools.BreakParent(U,O,A);};var Z=FCKDomTools.GetNextSourceNode(T,true);while (Z){var a=FCKDomTools.GetNextSourceNode(Z);if (Z.nodeType==1){var b=Z.nodeName.toLowerCase();var c=(b==this.Element);if (c){for (var Q in E){if (FCKDomTools.HasAttribute(Z,Q)){switch (Q){case 'style':this._RemoveStylesFromElement(Z);break;case 'class':if (FCKDomTools.GetAttributeValue(Z,Q)!=this.GetFinalAttributeValue(Q)) continue;default:FCKDomTools.RemoveAttribute(Z,Q);}}}}else c=!!F[b];if (c){this._RemoveOverrides(Z,F[b]);this._RemoveNoAttribElement(Z);}};if (a==U) break;Z=a;};this._FixBookmarkStart(T);if (B) A.SelectBookmark(D);if (C) A.MoveToBookmark(D);},CheckElementRemovable:function(A,B){if (!A) return false;var C=A.nodeName.toLowerCase();if (C==this.Element){if (!B&&!FCKDomTools.HasAttributes(A)) return true;var D=this._GetAttribsForComparison();var E=(D._length==0);for (var F in D){if (F=='_length') continue;if (this._CompareAttributeValues(F,FCKDomTools.GetAttributeValue(A,F),(this.GetFinalAttributeValue(F)||''))){E=true;if (!B) break;}else{E=false;if (B) return false;}};if (E) return true;};var G=this._GetOverridesForComparison()[C];if (G){if (!(D=G.Attributes)) return true;for (var i=0;i<D.length;i++){var H=D[i][0];if (FCKDomTools.HasAttribute(A,H)){var I=D[i][1];if (I==null||(typeof I=='string'&&FCKDomTools.GetAttributeValue(A,H)==I)||I.test(FCKDomTools.GetAttributeValue(A,H))) return true;}}};return false;},CheckActive:function(A){switch (this.GetType()){case 0:return this.CheckElementRemovable(A.Block||A.BlockLimit,true);case 1:var B=A.Elements;for (var i=0;i<B.length;i++){var C=B[i];if (C==A.Block||C==A.BlockLimit) continue;if (this.CheckElementRemovable(C,true)) return true;}};return false;},RemoveFromElement:function(A){var B=this._GetAttribsForComparison();var C=this._GetOverridesForComparison();var D=A.getElementsByTagName(this.Element);for (var i=D.length-1;i>=0;i--){var E=D[i];for (var F in B){if (FCKDomTools.HasAttribute(E,F)){switch (F){case 'style':this._RemoveStylesFromElement(E);break;case 'class':if (FCKDomTools.GetAttributeValue(E,F)!=this.GetFinalAttributeValue(F)) continue;default:FCKDomTools.RemoveAttribute(E,F);}}};this._RemoveOverrides(E,C[this.Element]);this._RemoveNoAttribElement(E);};for (var G in C){if (G!=this.Element){D=A.getElementsByTagName(G);for (var i=D.length-1;i>=0;i--){var E=D[i];this._RemoveOverrides(E,C[G]);this._RemoveNoAttribElement(E);}}}},_RemoveStylesFromElement:function(A){var B=A.style.cssText;var C=this.GetFinalStyleValue();if (B.length>0&&C.length==0) return;C='(^|;)\\s*('+C.replace(/\s*([^ ]+):.*?(;|$)/g,'$1|').replace(/\|$/,'')+'):[^;]+';var D=new RegExp(C,'gi');B=B.replace(D,'').Trim();if (B.length==0||B==';') FCKDomTools.RemoveAttribute(A,'style');else A.style.cssText=B.replace(D,'');},_RemoveOverrides:function(A,B){var C=B&&B.Attributes;if (C){for (var i=0;i<C.length;i++){var D=C[i][0];if (FCKDomTools.HasAttribute(A,D)){var E=C[i][1];if (E==null||(E.test&&E.test(FCKDomTools.GetAttributeValue(A,D)))||(typeof E=='string'&&FCKDomTools.GetAttributeValue(A,D)==E)) FCKDomTools.RemoveAttribute(A,D);}}}},_RemoveNoAttribElement:function(A){if (!FCKDomTools.HasAttributes(A)){var B=A.firstChild;var C=A.lastChild;FCKDomTools.RemoveNode(A,true);this._MergeSiblings(B);if (B!=C) this._MergeSiblings(C);}},BuildElement:function(A,B){var C=B||A.createElement(this.Element);var D=this._StyleDesc.Attributes;var E;if (D){for (var F in D){E=this.GetFinalAttributeValue(F);if (F.toLowerCase()=='class') C.className=E;else C.setAttribute(F,E);}};if (this._GetStyleText().length>0) C.style.cssText=this.GetFinalStyleValue();return C;},_CompareAttributeValues:function(A,B,C){if (A=='style'&&B&&C){B=B.replace(/;$/,'').toLowerCase();C=C.replace(/;$/,'').toLowerCase();};return (B==C||((B===null||B==='')&&(C===null||C==='')))},GetFinalAttributeValue:function(A){var B=this._StyleDesc.Attributes;var B=B?B[A]:null;if (!B&&A=='style') return this.GetFinalStyleValue();if (B&&this._Variables) B=B.Replace(FCKRegexLib.StyleVariableAttName,this._GetVariableReplace,this);return B;},GetFinalStyleValue:function(){var A=this._GetStyleText();if (A.length>0&&this._Variables){A=A.Replace(FCKRegexLib.StyleVariableAttName,this._GetVariableReplace,this);A=FCKTools.NormalizeCssText(A);};return A;},_GetVariableReplace:function(){return this._Variables[arguments[2]]||arguments[0];},SetVariable:function(A,B){var C=this._Variables;if (!C) C=this._Variables={};this._Variables[A]=B;},_FromPre:function(A,B,C){var D=B.innerHTML;D=D.replace(/(\r\n|\r)/g,'\n');D=D.replace(/^[ \t]*\n/,'');D=D.replace(/\n$/,'');D=D.replace(/^[ \t]+|[ \t]+$/g,function(match,offset,s){if (match.length==1) return '&nbsp;';else if (offset==0) return new Array(match.length).join('&nbsp;')+' ';else return ' '+new Array(match.length).join('&nbsp;');});var E=new FCKHtmlIterator(D);var F=[];E.Each(function(isTag,value){if (!isTag){value=value.replace(/\n/g,'<br>');value=value.replace(/[ \t]{2,}/g,function (match){return new Array(match.length).join('&nbsp;')+' ';});};F.push(value);});C.innerHTML=F.join('');return C;},_ToPre:function(A,B,C){var D=B.innerHTML.Trim();D=D.replace(/[ \t\r\n]*(<br[^>]*>)[ \t\r\n]*/gi,'<br />');var E=new FCKHtmlIterator(D);var F=[];E.Each(function(isTag,value){if (!isTag) value=value.replace(/([ \t\n\r]+|&nbsp;)/g,' ');else if (isTag&&value=='<br />') value='\n';F.push(value);});if (FCKBrowserInfo.IsIE){var G=A.createElement('div');G.appendChild(C);C.outerHTML='<pre>\n'+F.join('')+'</pre>';C=G.removeChild(G.firstChild);}else C.innerHTML=F.join('');return C;},_CheckAndMergePre:function(A,B){if (A!=FCKDomTools.GetPreviousSourceElement(B,true)) return;var C=A.innerHTML.replace(/\n$/,'')+'\n\n'+B.innerHTML.replace(/^\n/,'');if (FCKBrowserInfo.IsIE) B.outerHTML='<pre>'+C+'</pre>';else B.innerHTML=C;FCKDomTools.RemoveNode(A);},_CheckAndSplitPre:function(A){var B;var C=A.firstChild;C=C&&C.nextSibling;while (C){var D=C.nextSibling;if (D&&D.nextSibling&&C.nodeName.IEquals('br')&&D.nodeName.IEquals('br')){FCKDomTools.RemoveNode(C);C=D.nextSibling;FCKDomTools.RemoveNode(D);B=FCKDomTools.InsertAfterNode(B||A,FCKDomTools.CloneElement(A));continue;};if (B){C=C.previousSibling;FCKDomTools.MoveNode(C.nextSibling,B);};C=C.nextSibling;}},_ApplyBlockStyle:function(A,B,C){var D;if (B) D=A.CreateBookmark();var E=new FCKDomRangeIterator(A);E.EnforceRealBlocks=true;var F;var G=A.Window.document;var H;while((F=E.GetNextParagraph())){var I=this.BuildElement(G);var J=I.nodeName.IEquals('pre');var K=F.nodeName.IEquals('pre');var L=J&&!K;var M=!J&&K;if (L) I=this._ToPre(G,F,I);else if (M) I=this._FromPre(G,F,I);else FCKDomTools.MoveChildren(F,I);F.parentNode.insertBefore(I,F);FCKDomTools.RemoveNode(F);if (J){if (H) this._CheckAndMergePre(H,I);H=I;}else if (M) this._CheckAndSplitPre(I);};if (B) A.SelectBookmark(D);if (C) A.MoveToBookmark(D);},_ApplyInlineStyle:function(A,B,C){var D=A.Window.document;if (A.CheckIsCollapsed()){var E=this.BuildElement(D);A.InsertNode(E);A.MoveToPosition(E,2);A.Select();return;};var F=this.Element;var G=FCK.DTD[F]||FCK.DTD.span;var H=this._GetAttribsForComparison();var I;A.Expand('inline_elements');var J=A.CreateBookmark(true);var K=A.GetBookmarkNode(J,true);var L=A.GetBookmarkNode(J,false);A.Release(true);var M=FCKDomTools.GetNextSourceNode(K,true);while (M){var N=false;var O=M.nodeType;var P=O==1?M.nodeName.toLowerCase():null;if (!P||G[P]){if ((FCK.DTD[M.parentNode.nodeName.toLowerCase()]||FCK.DTD.span)[F]||!FCK.DTD[F]){if (!A.CheckHasRange()) A.SetStart(M,3);if (O!=1||M.childNodes.length==0){var Q=M;var R=Q.parentNode;while (Q==R.lastChild&&G[R.nodeName.toLowerCase()]){Q=R;};A.SetEnd(Q,4);if (Q==Q.parentNode.lastChild&&!G[Q.parentNode.nodeName.toLowerCase()]) N=true;}else{A.SetEnd(M,3);}}else N=true;}else N=true;M=FCKDomTools.GetNextSourceNode(M);if (M==L){M=null;N=true;};if (N&&A.CheckHasRange()&&!A.CheckIsCollapsed()){I=this.BuildElement(D);A.ExtractContents().AppendTo(I);if (I.innerHTML.RTrim().length>0){A.InsertNode(I);this.RemoveFromElement(I);this._MergeSiblings(I,this._GetAttribsForComparison());if (!FCKBrowserInfo.IsIE) I.normalize();};A.Release(true);}};this._FixBookmarkStart(K);if (B) A.SelectBookmark(J);if (C) A.MoveToBookmark(J);},_FixBookmarkStart:function(A){var B;while ((B=A.nextSibling)){if (B.nodeType==1&&FCKListsLib.InlineNonEmptyElements[B.nodeName.toLowerCase()]){if (!B.firstChild) FCKDomTools.RemoveNode(B);else FCKDomTools.MoveNode(A,B,true);continue;};if (B.nodeType==3&&B.length==0){FCKDomTools.RemoveNode(B);continue;};break;}},_MergeSiblings:function(A,B){if (!A||A.nodeType!=1||!FCKListsLib.InlineNonEmptyElements[A.nodeName.toLowerCase()]) return;this._MergeNextSibling(A,B);this._MergePreviousSibling(A,B);},_MergeNextSibling:function(A,B){var C=A.nextSibling;var D=(C&&C.nodeType==1&&C.getAttribute('_fck_bookmark'));if (D) C=C.nextSibling;if (C&&C.nodeType==1&&C.nodeName==A.nodeName){if (!B) B=this._CreateElementAttribsForComparison(A);if (this._CheckAttributesMatch(C,B)){var E=A.lastChild;if (D) FCKDomTools.MoveNode(A.nextSibling,A);FCKDomTools.MoveChildren(C,A);FCKDomTools.RemoveNode(C);if (E) this._MergeNextSibling(E);}}},_MergePreviousSibling:function(A,B){var C=A.previousSibling;var D=(C&&C.nodeType==1&&C.getAttribute('_fck_bookmark'));if (D) C=C.previousSibling;if (C&&C.nodeType==1&&C.nodeName==A.nodeName){if (!B) B=this._CreateElementAttribsForComparison(A);if (this._CheckAttributesMatch(C,B)){var E=A.firstChild;if (D) FCKDomTools.MoveNode(A.previousSibling,A,true);FCKDomTools.MoveChildren(C,A,true);FCKDomTools.RemoveNode(C);if (E) this._MergePreviousSibling(E);}}},_GetStyleText:function(){var A=this._StyleDesc.Styles;var B=(this._StyleDesc.Attributes?this._StyleDesc.Attributes['style']||'':'');if (B.length>0) B+=';';for (var C in A) B+=C+':'+A[C]+';';if (B.length>0&&!(/#\(/.test(B))){B=FCKTools.NormalizeCssText(B);};return (this._GetStyleText=function() { return B;})();},_GetAttribsForComparison:function(){var A=this._GetAttribsForComparison_$;if (A) return A;A={};var B=this._StyleDesc.Attributes;if (B){for (var C in B){A[C.toLowerCase()]=B[C].toLowerCase();}};if (this._GetStyleText().length>0){A['style']=this._GetStyleText().toLowerCase();};FCKTools.AppendLengthProperty(A,'_length');return (this._GetAttribsForComparison_$=A);},_GetOverridesForComparison:function(){var A=this._GetOverridesForComparison_$;if (A) return A;A={};var B=this._StyleDesc.Overrides;if (B){if (!FCKTools.IsArray(B)) B=[B];for (var i=0;i<B.length;i++){var C=B[i];var D;var E;var F;if (typeof C=='string') D=C.toLowerCase();else{D=C.Element?C.Element.toLowerCase():this.Element;F=C.Attributes;};E=A[D]||(A[D]={});if (F){var G=(E.Attributes=E.Attributes||[]);for (var H in F){G.push([H.toLowerCase(),F[H]]);}}}};return (this._GetOverridesForComparison_$=A);},_CreateElementAttribsForComparison:function(A){var B={};var C=0;for (var i=0;i<A.attributes.length;i++){var D=A.attributes[i];if (D.specified){B[D.nodeName.toLowerCase()]=FCKDomTools.GetAttributeValue(A,D).toLowerCase();C++;}};B._length=C;return B;},_CheckAttributesMatch:function(A,B){var C=A.attributes;var D=0;for (var i=0;i<C.length;i++){var E=C[i];if (E.specified){var F=E.nodeName.toLowerCase();var G=B[F];if (!G) break;if (G!=FCKDomTools.GetAttributeValue(A,E).toLowerCase()) break;D++;}};return (D==B._length);}};
 var FCKStyles=FCK.Styles={_Callbacks:{},_ObjectStyles:{},ApplyStyle:function(A){if (typeof A=='string') A=this.GetStyles()[A];if (A){if (A.GetType()==2) A.ApplyToObject(FCKSelection.GetSelectedElement());else A.ApplyToSelection(FCK.EditorWindow);FCK.Events.FireEvent('OnSelectionChange');}},RemoveStyle:function(A){if (typeof A=='string') A=this.GetStyles()[A];if (A){A.RemoveFromSelection(FCK.EditorWindow);FCK.Events.FireEvent('OnSelectionChange');}},AttachStyleStateChange:function(A,B,C){var D=this._Callbacks[A];if (!D) D=this._Callbacks[A]=[];D.push([B,C]);},CheckSelectionChanges:function(){var A=FCKSelection.GetBoundaryParentElement(true);if (!A) return;var B=new FCKElementPath(A);var C=this.GetStyles();for (var D in C){var E=this._Callbacks[D];if (E){var F=C[D];var G=F.CheckActive(B);if (G!=(F._LastState||null)){F._LastState=G;for (var i=0;i<E.length;i++){var H=E[i][0];var I=E[i][1];H.call(I||window,D,G);}}}}},CheckStyleInSelection:function(A){return false;},_GetRemoveFormatTagsRegex:function (){var A=new RegExp('^(?:'+FCKConfig.RemoveFormatTags.replace(/,/g,'|')+')$','i');return (this._GetRemoveFormatTagsRegex=function(){return A;})&&A;},RemoveAll:function(){var A=new FCKDomRange(FCK.EditorWindow);A.MoveToSelection();if (A.CheckIsCollapsed()) return;A.Expand('inline_elements');var B=A.CreateBookmark(true);var C=A.GetBookmarkNode(B,true);var D=A.GetBookmarkNode(B,false);A.Release(true);var E=this._GetRemoveFormatTagsRegex();var F=new FCKElementPath(C);var G=F.Elements;var H;for (var i=1;i<G.length;i++){H=G[i];if (H==F.Block||H==F.BlockLimit) break;if (E.test(H.nodeName)) FCKDomTools.BreakParent(C,H,A);};F=new FCKElementPath(D);G=F.Elements;for (var i=1;i<G.length;i++){H=G[i];if (H==F.Block||H==F.BlockLimit) break;elementName=H.nodeName.toLowerCase();if (E.test(H.nodeName)) FCKDomTools.BreakParent(D,H,A);};var I=FCKDomTools.GetNextSourceNode(C,true,1);while (I){if (I==D) break;var J=FCKDomTools.GetNextSourceNode(I,false,1);if (E.test(I.nodeName)) FCKDomTools.RemoveNode(I,true);else FCKDomTools.RemoveAttributes(I,FCKConfig.RemoveAttributesArray);I=J;};A.SelectBookmark(B);FCK.Events.FireEvent('OnSelectionChange');},GetStyle:function(A){return this.GetStyles()[A];},GetStyles:function(){var A=this._GetStyles;if (!A){A=this._GetStyles=FCKTools.Merge(this._LoadStylesCore(),this._LoadStylesCustom(),this._LoadStylesXml());};return A;},CheckHasObjectStyle:function(A){return!!this._ObjectStyles[A];},_LoadStylesCore:function(){var A={};var B=FCKConfig.CoreStyles;for (var C in B){var D=A['_FCK_'+C]=new FCKStyle(B[C]);D.IsCore=true;};return A;},_LoadStylesCustom:function(){var A={};var B=FCKConfig.CustomStyles;if (B){for (var C in B){var D=A[C]=new FCKStyle(B[C]);D.Name=C;}};return A;},_LoadStylesXml:function(){var A={};var B=FCKConfig.StylesXmlPath;if (!B||B.length==0) return A;var C=new FCKXml();C.LoadUrl(B);var D=FCKXml.TransformToObject(C.SelectSingleNode('Styles'));var E=D.$Style;if (!E) return A;for (var i=0;i<E.length;i++){var F=E[i];var G=(F.element||'').toLowerCase();if (G.length==0) throw('The element name is required. Error loading "'+B+'"');var H={Element:G,Attributes:{},Styles:{},Overrides:[]};var I=F.$Attribute||[];for (var j=0;j<I.length;j++){H.Attributes[I[j].name]=I[j].value;};var J=F.$Style||[];for (j=0;j<J.length;j++){H.Styles[J[j].name]=J[j].value;};var K=F.$Override;if (K){for (j=0;j<K.length;j++){var L=K[j];var M={Element:L.element};var N=L.$Attribute;if (N){M.Attributes={};for (var k=0;k<N.length;k++){var O=N[k].value||null;if (O){var P=O&&FCKRegexLib.RegExp.exec(O);if (P) O=new RegExp(P[1],P[2]||'');};M.Attributes[N[k].name]=O;}};H.Overrides.push(M);}};var Q=new FCKStyle(H);Q.Name=F.name||G;if (Q.GetType()==2) this._ObjectStyles[G]=true;A[Q.Name]=Q;};return A;}};
 var FCKListHandler={OutdentListItem:function(A){var B=A.parentNode;if (B.tagName.toUpperCase().Equals('UL','OL')){var C=FCKTools.GetElementDocument(A);var D=new FCKDocumentFragment(C);var E=D.RootNode;var F=false;var G=FCKDomTools.GetFirstChild(A,['UL','OL']);if (G){F=true;var H;while ((H=G.firstChild)) E.appendChild(G.removeChild(H));FCKDomTools.RemoveNode(G);};var I;var J=false;while ((I=A.nextSibling)){if (!F&&I.nodeType==1&&I.nodeName.toUpperCase()=='LI') J=F=true;E.appendChild(I.parentNode.removeChild(I));if (!J&&I.nodeType==1&&I.nodeName.toUpperCase().Equals('UL','OL')) FCKDomTools.RemoveNode(I,true);};var K=B.parentNode.tagName.toUpperCase();var L=(K=='LI');if (L||K.Equals('UL','OL')){if (F){var G=B.cloneNode(false);D.AppendTo(G);A.appendChild(G);}else if (L) D.InsertAfterNode(B.parentNode);else D.InsertAfterNode(B);if (L) FCKDomTools.InsertAfterNode(B.parentNode,B.removeChild(A));else FCKDomTools.InsertAfterNode(B,B.removeChild(A));}else{if (F){var N=B.cloneNode(false);D.AppendTo(N);FCKDomTools.InsertAfterNode(B,N);};var O=C.createElement(FCKConfig.EnterMode=='p'?'p':'div');FCKDomTools.MoveChildren(B.removeChild(A),O);FCKDomTools.InsertAfterNode(B,O);if (FCKConfig.EnterMode=='br'){if (FCKBrowserInfo.IsGecko) O.parentNode.insertBefore(FCKTools.CreateBogusBR(C),O);else FCKDomTools.InsertAfterNode(O,FCKTools.CreateBogusBR(C));FCKDomTools.RemoveNode(O,true);}};if (this.CheckEmptyList(B)) FCKDomTools.RemoveNode(B,true);}},CheckEmptyList:function(A){return (FCKDomTools.GetFirstChild(A,'LI')==null);},CheckListHasContents:function(A){var B=A.firstChild;while (B){switch (B.nodeType){case 1:if (!B.nodeName.IEquals('UL','LI')) return true;break;case 3:if (B.nodeValue.Trim().length>0) return true;};B=B.nextSibling;};return false;}};
 var FCKElementPath=function(A){var B=null;var C=null;var D=[];var e=A;while (e){if (e.nodeType==1){if (!this.LastElement) this.LastElement=e;var E=e.nodeName.toLowerCase();if (FCKBrowserInfo.IsIE&&e.scopeName!='HTML') E=e.scopeName.toLowerCase()+':'+E;if (!C){if (!B&&FCKListsLib.PathBlockElements[E]!=null) B=e;if (FCKListsLib.PathBlockLimitElements[E]!=null){if (!B&&E=='div'&&!FCKElementPath._CheckHasBlock(e)) B=e;else C=e;}};D.push(e);if (E=='body') break;};e=e.parentNode;};this.Block=B;this.BlockLimit=C;this.Elements=D;};FCKElementPath._CheckHasBlock=function(A){var B=A.childNodes;for (var i=0,count=B.length;i<count;i++){var C=B[i];if (C.nodeType==1&&FCKListsLib.BlockElements[C.nodeName.toLowerCase()]) return true;};return false;};
-var FCKDomRange=function(A){this.Window=A;this._Cache={};};FCKDomRange.prototype={_UpdateElementInfo:function(){var A=this._Range;if (!A) this.Release(true);else{var B=A.startContainer;var C=A.endContainer;var D=new FCKElementPath(B);this.StartNode=B.nodeType==3?B:B.childNodes[A.startOffset];this.StartContainer=B;this.StartBlock=D.Block;this.StartBlockLimit=D.BlockLimit;if (B!=C) D=new FCKElementPath(C);var E=C;if (A.endOffset==0){while (E&&!E.previousSibling) E=E.parentNode;if (E) E=E.previousSibling;}else if (E.nodeType==1) E=E.childNodes[A.endOffset-1];this.EndNode=E;this.EndContainer=C;this.EndBlock=D.Block;this.EndBlockLimit=D.BlockLimit;};this._Cache={};},CreateRange:function(){return new FCKW3CRange(this.Window.document);},DeleteContents:function(){if (this._Range){this._Range.deleteContents();this._UpdateElementInfo();}},ExtractContents:function(){if (this._Range){var A=this._Range.extractContents();this._UpdateElementInfo();return A;};return null;},CheckIsCollapsed:function(){if (this._Range) return this._Range.collapsed;return false;},Collapse:function(A){if (this._Range) this._Range.collapse(A);this._UpdateElementInfo();},Clone:function(){var A=FCKTools.CloneObject(this);if (this._Range) A._Range=this._Range.cloneRange();return A;},MoveToNodeContents:function(A){if (!this._Range) this._Range=this.CreateRange();this._Range.selectNodeContents(A);this._UpdateElementInfo();},MoveToElementStart:function(A){this.SetStart(A,1);this.SetEnd(A,1);},MoveToElementEditStart:function(A){var B;while (A&&A.nodeType==1){if (FCKDomTools.CheckIsEditable(A)) B=A;else if (B) break;A=A.firstChild;};if (B) this.MoveToElementStart(B);},InsertNode:function(A){if (this._Range) this._Range.insertNode(A);},CheckIsEmpty:function(){if (this.CheckIsCollapsed()) return true;var A=this.Window.document.createElement('div');this._Range.cloneContents().AppendTo(A);FCKDomTools.TrimNode(A);return (A.innerHTML.length==0);},CheckStartOfBlock:function(){var A=this._Cache;var B=A.IsStartOfBlock;if (B!=undefined) return B;var C=this.StartBlock||this.StartBlockLimit;var D=this._Range.startContainer;var E=this._Range.startOffset;var F;if (E>0){if (D.nodeType==3){var G=D.nodeValue.substr(0,E).Trim();if (G.length!=0) return A.IsStartOfBlock=false;}else F=D.childNodes[E-1];};if (!F) F=FCKDomTools.GetPreviousSourceNode(D,true,null,C);while (F){switch (F.nodeType){case 1:if (!FCKListsLib.InlineChildReqElements[F.nodeName.toLowerCase()]) return A.IsStartOfBlock=false;break;case 3:if (F.nodeValue.Trim().length>0) return A.IsStartOfBlock=false;};F=FCKDomTools.GetPreviousSourceNode(F,false,null,C);};return A.IsStartOfBlock=true;},CheckEndOfBlock:function(A){var B=this._Cache.IsEndOfBlock;if (B!=undefined) return B;var C=this.EndBlock||this.EndBlockLimit;var D=this._Range.endContainer;var E=this._Range.endOffset;var F;if (D.nodeType==3){var G=D.nodeValue;if (E<G.length){G=G.substr(E);if (G.Trim().length!=0) return this._Cache.IsEndOfBlock=false;}}else F=D.childNodes[E];if (!F) F=FCKDomTools.GetNextSourceNode(D,true,null,C);var H=false;while (F){switch (F.nodeType){case 1:var I=F.nodeName.toLowerCase();if (FCKListsLib.InlineChildReqElements[I]) break;if (I=='br'&&!H){H=true;break;};return this._Cache.IsEndOfBlock=false;case 3:if (F.nodeValue.Trim().length>0) return this._Cache.IsEndOfBlock=false;};F=FCKDomTools.GetNextSourceNode(F,false,null,C);};if (A) this.Select();return this._Cache.IsEndOfBlock=true;},CreateBookmark:function(A){var B={StartId:(new Date()).valueOf()+Math.floor(Math.random()*1000)+'S',EndId:(new Date()).valueOf()+Math.floor(Math.random()*1000)+'E'};var C=this.Window.document;var D;var E;var F;if (!this.CheckIsCollapsed()){E=C.createElement('span');E.style.display='none';E.id=B.EndId;E.setAttribute('_fck_bookmark',true);E.innerHTML='&nbsp;';F=this.Clone();F.Collapse(false);F.InsertNode(E);};D=C.createElement('span');D.style.display='none';D.id=B.StartId;D.setAttribute('_fck_bookmark',true);D.innerHTML='&nbsp;';F=this.Clone();F.Collapse(true);F.InsertNode(D);if (A){B.StartNode=D;B.EndNode=E;};if (E){this.SetStart(D,4);this.SetEnd(E,3);}else this.MoveToPosition(D,4);return B;},GetBookmarkNode:function(A,B){var C=this.Window.document;if (B) return A.StartNode||C.getElementById(A.StartId);else return A.EndNode||C.getElementById(A.EndId);},MoveToBookmark:function(A,B){var C=this.GetBookmarkNode(A,true);var D=this.GetBookmarkNode(A,false);this.SetStart(C,3);if (!B) FCKDomTools.RemoveNode(C);if (D){this.SetEnd(D,3);if (!B) FCKDomTools.RemoveNode(D);}else this.Collapse(true);this._UpdateElementInfo();},CreateBookmark2:function(){if (!this._Range) return { "Start":0,"End":0 };var A={"Start":[this._Range.startOffset],"End":[this._Range.endOffset]};var B=this._Range.startContainer.previousSibling;var C=this._Range.endContainer.previousSibling;var D=this._Range.startContainer;var E=this._Range.endContainer;while (B&&B.nodeType==3){A.Start[0]+=B.length;D=B;B=B.previousSibling;};while (C&&C.nodeType==3){A.End[0]+=C.length;E=C;C=C.previousSibling;};if (D.nodeType==1&&D.childNodes[A.Start[0]]&&D.childNodes[A.Start[0]].nodeType==3){var F=D.childNodes[A.Start[0]];var G=0;while (F.previousSibling&&F.previousSibling.nodeType==3){F=F.previousSibling;G+=F.length;};D=F;A.Start[0]=G;};if (E.nodeType==1&&E.childNodes[A.End[0]]&&E.childNodes[A.End[0]].nodeType==3){var F=E.childNodes[A.End[0]];var G=0;while (F.previousSibling&&F.previousSibling.nodeType==3){F=F.previousSibling;G+=F.length;};E=F;A.End[0]=G;};A.Start=FCKDomTools.GetNodeAddress(D,true).concat(A.Start);A.End=FCKDomTools.GetNodeAddress(E,true).concat(A.End);return A;},MoveToBookmark2:function(A){var B=FCKDomTools.GetNodeFromAddress(this.Window.document,A.Start.slice(0,-1),true);var C=FCKDomTools.GetNodeFromAddress(this.Window.document,A.End.slice(0,-1),true);this.Release(true);this._Range=new FCKW3CRange(this.Window.document);var D=A.Start[A.Start.length-1];var E=A.End[A.End.length-1];while (B.nodeType==3&&D>B.length){if (!B.nextSibling||B.nextSibling.nodeType!=3) break;D-=B.length;B=B.nextSibling;};while (C.nodeType==3&&E>C.length){if (!C.nextSibling||C.nextSibling.nodeType!=3) break;E-=C.length;C=C.nextSibling;};this._Range.setStart(B,D);this._Range.setEnd(C,E);this._UpdateElementInfo();},MoveToPosition:function(A,B){this.SetStart(A,B);this.Collapse(true);},SetStart:function(A,B,C){var D=this._Range;if (!D) D=this._Range=this.CreateRange();switch(B){case 1:D.setStart(A,0);break;case 2:D.setStart(A,A.childNodes.length);break;case 3:D.setStartBefore(A);break;case 4:D.setStartAfter(A);};if (!C) this._UpdateElementInfo();},SetEnd:function(A,B,C){var D=this._Range;if (!D) D=this._Range=this.CreateRange();switch(B){case 1:D.setEnd(A,0);break;case 2:D.setEnd(A,A.childNodes.length);break;case 3:D.setEndBefore(A);break;case 4:D.setEndAfter(A);};if (!C) this._UpdateElementInfo();},Expand:function(A){var B,oSibling;switch (A){case 'inline_elements':if (this._Range.startOffset==0){B=this._Range.startContainer;if (B.nodeType!=1) B=B.previousSibling?null:B.parentNode;if (B){while (FCKListsLib.InlineNonEmptyElements[B.nodeName.toLowerCase()]){this._Range.setStartBefore(B);if (B!=B.parentNode.firstChild) break;B=B.parentNode;}}};B=this._Range.endContainer;var C=this._Range.endOffset;if ((B.nodeType==3&&C>=B.nodeValue.length)||(B.nodeType==1&&C>=B.childNodes.length)||(B.nodeType!=1&&B.nodeType!=3)){if (B.nodeType!=1) B=B.nextSibling?null:B.parentNode;if (B){while (FCKListsLib.InlineNonEmptyElements[B.nodeName.toLowerCase()]){this._Range.setEndAfter(B);if (B!=B.parentNode.lastChild) break;B=B.parentNode;}}};break;case 'block_contents':case 'list_contents':var D=FCKListsLib.BlockBoundaries;if (A=='list_contents'||FCKConfig.EnterMode=='br') D=FCKListsLib.ListBoundaries;if (this.StartBlock&&FCKConfig.EnterMode!='br'&&A=='block_contents') this.SetStart(this.StartBlock,1);else{B=this._Range.startContainer;if (B.nodeType==1){var E=B.childNodes[this._Range.startOffset];if (E) B=FCKDomTools.GetPreviousSourceNode(E,true);else B=B.lastChild||B;};while (B&&(B.nodeType!=1||(B!=this.StartBlockLimit&&!D[B.nodeName.toLowerCase()]))){this._Range.setStartBefore(B);B=B.previousSibling||B.parentNode;}};if (this.EndBlock&&FCKConfig.EnterMode!='br'&&A=='block_contents'&&this.EndBlock.nodeName.toLowerCase()!='li') this.SetEnd(this.EndBlock,2);else{B=this._Range.endContainer;if (B.nodeType==1) B=B.childNodes[this._Range.endOffset]||B.lastChild;while (B&&(B.nodeType!=1||(B!=this.StartBlockLimit&&!D[B.nodeName.toLowerCase()]))){this._Range.setEndAfter(B);B=B.nextSibling||B.parentNode;};if (B&&B.nodeName.toLowerCase()=='br') this._Range.setEndAfter(B);};this._UpdateElementInfo();}},SplitBlock:function(A){var B=A||FCKConfig.EnterMode;if (!this._Range) this.MoveToSelection();if (this.StartBlockLimit==this.EndBlockLimit){var C=this.StartBlock;var D=this.EndBlock;var E=null;if (B!='br'){if (!C){C=this.FixBlock(true,B);D=this.EndBlock;};if (!D) D=this.FixBlock(false,B);};var F=(C!=null&&this.CheckStartOfBlock());var G=(D!=null&&this.CheckEndOfBlock());if (!this.CheckIsEmpty()) this.DeleteContents();if (C&&D&&C==D){if (G){E=new FCKElementPath(this.StartContainer);this.MoveToPosition(D,4);D=null;}else if (F){E=new FCKElementPath(this.StartContainer);this.MoveToPosition(C,3);C=null;}else{this.SetEnd(C,2);var H=this.ExtractContents();D=C.cloneNode(false);D.removeAttribute('id',false);H.AppendTo(D);FCKDomTools.InsertAfterNode(C,D);this.MoveToPosition(C,4);if (FCKBrowserInfo.IsGecko&&!C.nodeName.IEquals(['ul','ol'])) FCKTools.AppendBogusBr(C);}};return {PreviousBlock:C,NextBlock:D,WasStartOfBlock:F,WasEndOfBlock:G,ElementPath:E};};return null;},FixBlock:function(A,B){var C=this.CreateBookmark();this.Collapse(A);this.Expand('block_contents');var D=this.Window.document.createElement(B);this.ExtractContents().AppendTo(D);FCKDomTools.TrimNode(D);this.InsertNode(D);this.MoveToBookmark(C);return D;},Release:function(A){if (!A) this.Window=null;this.StartNode=null;this.StartContainer=null;this.StartBlock=null;this.StartBlockLimit=null;this.EndNode=null;this.EndContainer=null;this.EndBlock=null;this.EndBlockLimit=null;this._Range=null;this._Cache=null;},CheckHasRange:function(){return!!this._Range;},GetTouchedStartNode:function(){var A=this._Range;var B=A.startContainer;if (A.collapsed||B.nodeType!=1) return B;return B.childNodes[A.startOffset]||B;},GetTouchedEndNode:function(){var A=this._Range;var B=A.endContainer;if (A.collapsed||B.nodeType!=1) return B;return B.childNodes[A.endOffset-1]||B;}};
+var FCKDomRange=function(A){this.Window=A;this._Cache={};};FCKDomRange.prototype={_UpdateElementInfo:function(){var A=this._Range;if (!A) this.Release(true);else{var B=A.startContainer;var C=new FCKElementPath(B);this.StartNode=B.nodeType==3?B:B.childNodes[A.startOffset];this.StartContainer=B;this.StartBlock=C.Block;this.StartBlockLimit=C.BlockLimit;if (A.collapsed){this.EndNode=this.StartNode;this.EndContainer=this.StartContainer;this.EndBlock=this.StartBlock;this.EndBlockLimit=this.StartBlockLimit;}else{var D=A.endContainer;if (B!=D) C=new FCKElementPath(D);var E=D;if (A.endOffset==0){while (E&&!E.previousSibling) E=E.parentNode;if (E) E=E.previousSibling;}else if (E.nodeType==1) E=E.childNodes[A.endOffset-1];this.EndNode=E;this.EndContainer=D;this.EndBlock=C.Block;this.EndBlockLimit=C.BlockLimit;}};this._Cache={};},CreateRange:function(){return new FCKW3CRange(this.Window.document);},DeleteContents:function(){if (this._Range){this._Range.deleteContents();this._UpdateElementInfo();}},ExtractContents:function(){if (this._Range){var A=this._Range.extractContents();this._UpdateElementInfo();return A;};return null;},CheckIsCollapsed:function(){if (this._Range) return this._Range.collapsed;return false;},Collapse:function(A){if (this._Range) this._Range.collapse(A);this._UpdateElementInfo();},Clone:function(){var A=FCKTools.CloneObject(this);if (this._Range) A._Range=this._Range.cloneRange();return A;},MoveToNodeContents:function(A){if (!this._Range) this._Range=this.CreateRange();this._Range.selectNodeContents(A);this._UpdateElementInfo();},MoveToElementStart:function(A){this.SetStart(A,1);this.SetEnd(A,1);},MoveToElementEditStart:function(A){var B;while (A&&A.nodeType==1){if (FCKDomTools.CheckIsEditable(A)) B=A;else if (B) break;A=A.firstChild;};if (B) this.MoveToElementStart(B);},InsertNode:function(A){if (this._Range) this._Range.insertNode(A);},CheckIsEmpty:function(){if (this.CheckIsCollapsed()) return true;var A=this.Window.document.createElement('div');this._Range.cloneContents().AppendTo(A);FCKDomTools.TrimNode(A);return (A.innerHTML.length==0);},CheckStartOfBlock:function(){var A=this._Cache;var B=A.IsStartOfBlock;if (B!=undefined) return B;var C=this.StartBlock||this.StartBlockLimit;var D=this._Range.startContainer;var E=this._Range.startOffset;var F;if (E>0){if (D.nodeType==3){var G=D.nodeValue.substr(0,E).Trim();if (G.length!=0) return A.IsStartOfBlock=false;}else F=D.childNodes[E-1];};if (!F) F=FCKDomTools.GetPreviousSourceNode(D,true,null,C);while (F){switch (F.nodeType){case 1:if (!FCKListsLib.InlineChildReqElements[F.nodeName.toLowerCase()]) return A.IsStartOfBlock=false;break;case 3:if (F.nodeValue.Trim().length>0) return A.IsStartOfBlock=false;};F=FCKDomTools.GetPreviousSourceNode(F,false,null,C);};return A.IsStartOfBlock=true;},CheckEndOfBlock:function(A){var B=this._Cache.IsEndOfBlock;if (B!=undefined) return B;var C=this.EndBlock||this.EndBlockLimit;var D=this._Range.endContainer;var E=this._Range.endOffset;var F;if (D.nodeType==3){var G=D.nodeValue;if (E<G.length){G=G.substr(E);if (G.Trim().length!=0) return this._Cache.IsEndOfBlock=false;}}else F=D.childNodes[E];if (!F) F=FCKDomTools.GetNextSourceNode(D,true,null,C);var H=false;while (F){switch (F.nodeType){case 1:var I=F.nodeName.toLowerCase();if (FCKListsLib.InlineChildReqElements[I]) break;if (I=='br'&&!H){H=true;break;};return this._Cache.IsEndOfBlock=false;case 3:if (F.nodeValue.Trim().length>0) return this._Cache.IsEndOfBlock=false;};F=FCKDomTools.GetNextSourceNode(F,false,null,C);};if (A) this.Select();return this._Cache.IsEndOfBlock=true;},CreateBookmark:function(A){var B={StartId:(new Date()).valueOf()+Math.floor(Math.random()*1000)+'S',EndId:(new Date()).valueOf()+Math.floor(Math.random()*1000)+'E'};var C=this.Window.document;var D;var E;var F;if (!this.CheckIsCollapsed()){E=C.createElement('span');E.style.display='none';E.id=B.EndId;E.setAttribute('_fck_bookmark',true);E.innerHTML='&nbsp;';F=this.Clone();F.Collapse(false);F.InsertNode(E);};D=C.createElement('span');D.style.display='none';D.id=B.StartId;D.setAttribute('_fck_bookmark',true);D.innerHTML='&nbsp;';F=this.Clone();F.Collapse(true);F.InsertNode(D);if (A){B.StartNode=D;B.EndNode=E;};if (E){this.SetStart(D,4);this.SetEnd(E,3);}else this.MoveToPosition(D,4);return B;},GetBookmarkNode:function(A,B){var C=this.Window.document;if (B) return A.StartNode||C.getElementById(A.StartId);else return A.EndNode||C.getElementById(A.EndId);},MoveToBookmark:function(A,B){var C=this.GetBookmarkNode(A,true);var D=this.GetBookmarkNode(A,false);this.SetStart(C,3);if (!B) FCKDomTools.RemoveNode(C);if (D){this.SetEnd(D,3);if (!B) FCKDomTools.RemoveNode(D);}else this.Collapse(true);this._UpdateElementInfo();},CreateBookmark2:function(){if (!this._Range) return { "Start":0,"End":0 };var A={"Start":[this._Range.startOffset],"End":[this._Range.endOffset]};var B=this._Range.startContainer.previousSibling;var C=this._Range.endContainer.previousSibling;var D=this._Range.startContainer;var E=this._Range.endContainer;while (B&&D.nodeType==3){A.Start[0]+=B.length;D=B;B=B.previousSibling;}while (C&&E.nodeType==3){A.End[0]+=C.length;E=C;C=C.previousSibling;};if (D.nodeType==1&&D.childNodes[A.Start[0]]&&D.childNodes[A.Start[0]].nodeType==3){var F=D.childNodes[A.Start[0]];var G=0;while (F.previousSibling&&F.previousSibling.nodeType==3){F=F.previousSibling;G+=F.length;};D=F;A.Start[0]=G;};if (E.nodeType==1&&E.childNodes[A.End[0]]&&E.childNodes[A.End[0]].nodeType==3){var F=E.childNodes[A.End[0]];var G=0;while (F.previousSibling&&F.previousSibling.nodeType==3){F=F.previousSibling;G+=F.length;};E=F;A.End[0]=G;};A.Start=FCKDomTools.GetNodeAddress(D,true).concat(A.Start);A.End=FCKDomTools.GetNodeAddress(E,true).concat(A.End);return A;},MoveToBookmark2:function(A){var B=FCKDomTools.GetNodeFromAddress(this.Window.document,A.Start.slice(0,-1),true);var C=FCKDomTools.GetNodeFromAddress(this.Window.document,A.End.slice(0,-1),true);this.Release(true);this._Range=new FCKW3CRange(this.Window.document);var D=A.Start[A.Start.length-1];var E=A.End[A.End.length-1];while (B.nodeType==3&&D>B.length){if (!B.nextSibling||B.nextSibling.nodeType!=3) break;D-=B.length;B=B.nextSibling;}while (C.nodeType==3&&E>C.length){if (!C.nextSibling||C.nextSibling.nodeType!=3) break;E-=C.length;C=C.nextSibling;};this._Range.setStart(B,D);this._Range.setEnd(C,E);this._UpdateElementInfo();},MoveToPosition:function(A,B){this.SetStart(A,B);this.Collapse(true);},SetStart:function(A,B,C){var D=this._Range;if (!D) D=this._Range=this.CreateRange();switch(B){case 1:D.setStart(A,0);break;case 2:D.setStart(A,A.childNodes.length);break;case 3:D.setStartBefore(A);break;case 4:D.setStartAfter(A);};if (!C) this._UpdateElementInfo();},SetEnd:function(A,B,C){var D=this._Range;if (!D) D=this._Range=this.CreateRange();switch(B){case 1:D.setEnd(A,0);break;case 2:D.setEnd(A,A.childNodes.length);break;case 3:D.setEndBefore(A);break;case 4:D.setEndAfter(A);};if (!C) this._UpdateElementInfo();},Expand:function(A){var B,oSibling;switch (A){case 'inline_elements':if (this._Range.startOffset==0){B=this._Range.startContainer;if (B.nodeType!=1) B=B.previousSibling?null:B.parentNode;if (B){while (FCKListsLib.InlineNonEmptyElements[B.nodeName.toLowerCase()]){this._Range.setStartBefore(B);if (B!=B.parentNode.firstChild) break;B=B.parentNode;}}};B=this._Range.endContainer;var C=this._Range.endOffset;if ((B.nodeType==3&&C>=B.nodeValue.length)||(B.nodeType==1&&C>=B.childNodes.length)||(B.nodeType!=1&&B.nodeType!=3)){if (B.nodeType!=1) B=B.nextSibling?null:B.parentNode;if (B){while (FCKListsLib.InlineNonEmptyElements[B.nodeName.toLowerCase()]){this._Range.setEndAfter(B);if (B!=B.parentNode.lastChild) break;B=B.parentNode;}}};break;case 'block_contents':case 'list_contents':var D=FCKListsLib.BlockBoundaries;if (A=='list_contents'||FCKConfig.EnterMode=='br') D=FCKListsLib.ListBoundaries;if (this.StartBlock&&FCKConfig.EnterMode!='br'&&A=='block_contents') this.SetStart(this.StartBlock,1);else{B=this._Range.startContainer;if (B.nodeType==1){var E=B.childNodes[this._Range.startOffset];if (E) B=FCKDomTools.GetPreviousSourceNode(E,true);else B=B.lastChild||B;}while (B&&(B.nodeType!=1||(B!=this.StartBlockLimit&&!D[B.nodeName.toLowerCase()]))){this._Range.setStartBefore(B);B=B.previousSibling||B.parentNode;}};if (this.EndBlock&&FCKConfig.EnterMode!='br'&&A=='block_contents'&&this.EndBlock.nodeName.toLowerCase()!='li') this.SetEnd(this.EndBlock,2);else{B=this._Range.endContainer;if (B.nodeType==1) B=B.childNodes[this._Range.endOffset]||B.lastChild;while (B&&(B.nodeType!=1||(B!=this.StartBlockLimit&&!D[B.nodeName.toLowerCase()]))){this._Range.setEndAfter(B);B=B.nextSibling||B.parentNode;};if (B&&B.nodeName.toLowerCase()=='br') this._Range.setEndAfter(B);};this._UpdateElementInfo();}},SplitBlock:function(A){var B=A||FCKConfig.EnterMode;if (!this._Range) this.MoveToSelection();if (this.StartBlockLimit==this.EndBlockLimit){var C=this.StartBlock;var D=this.EndBlock;var E=null;if (B!='br'){if (!C){C=this.FixBlock(true,B);D=this.EndBlock;};if (!D) D=this.FixBlock(false,B);};var F=(C!=null&&this.CheckStartOfBlock());var G=(D!=null&&this.CheckEndOfBlock());if (!this.CheckIsEmpty()) this.DeleteContents();if (C&&D&&C==D){if (G){E=new FCKElementPath(this.StartContainer);this.MoveToPosition(D,4);D=null;}else if (F){E=new FCKElementPath(this.StartContainer);this.MoveToPosition(C,3);C=null;}else{this.SetEnd(C,2);var H=this.ExtractContents();D=C.cloneNode(false);D.removeAttribute('id',false);H.AppendTo(D);FCKDomTools.InsertAfterNode(C,D);this.MoveToPosition(C,4);if (FCKBrowserInfo.IsGecko&&!C.nodeName.IEquals(['ul','ol'])) FCKTools.AppendBogusBr(C);}};return {PreviousBlock:C,NextBlock:D,WasStartOfBlock:F,WasEndOfBlock:G,ElementPath:E};};return null;},FixBlock:function(A,B){var C=this.CreateBookmark();this.Collapse(A);this.Expand('block_contents');var D=this.Window.document.createElement(B);this.ExtractContents().AppendTo(D);FCKDomTools.TrimNode(D);if (FCKDomTools.CheckIsEmptyElement(D,function(element) { return element.getAttribute('_fck_bookmark')!='true';})&&FCKBrowserInfo.IsGeckoLike) FCKTools.AppendBogusBr(D);this.InsertNode(D);this.MoveToBookmark(C);return D;},Release:function(A){if (!A) this.Window=null;this.StartNode=null;this.StartContainer=null;this.StartBlock=null;this.StartBlockLimit=null;this.EndNode=null;this.EndContainer=null;this.EndBlock=null;this.EndBlockLimit=null;this._Range=null;this._Cache=null;},CheckHasRange:function(){return!!this._Range;},GetTouchedStartNode:function(){var A=this._Range;var B=A.startContainer;if (A.collapsed||B.nodeType!=1) return B;return B.childNodes[A.startOffset]||B;},GetTouchedEndNode:function(){var A=this._Range;var B=A.endContainer;if (A.collapsed||B.nodeType!=1) return B;return B.childNodes[A.endOffset-1]||B;}};
 FCKDomRange.prototype.MoveToSelection=function(){this.Release(true);this._Range=new FCKW3CRange(this.Window.document);var A=this.Window.document.selection;if (A.type!='Control'){var B=this._GetSelectionMarkerTag(true);var C=this._GetSelectionMarkerTag(false);if (!B&&!C){this._Range.setStart(this.Window.document.body,0);this._UpdateElementInfo();return;};this._Range.setStart(B.parentNode,FCKDomTools.GetIndexOf(B));B.parentNode.removeChild(B);this._Range.setEnd(C.parentNode,FCKDomTools.GetIndexOf(C));C.parentNode.removeChild(C);this._UpdateElementInfo();}else{var D=A.createRange().item(0);if (D){this._Range.setStartBefore(D);this._Range.setEndAfter(D);this._UpdateElementInfo();}}};FCKDomRange.prototype.Select=function(A){if (this._Range) this.SelectBookmark(this.CreateBookmark(true),A);};FCKDomRange.prototype.SelectBookmark=function(A,B){var C=this.CheckIsCollapsed();var D;var E;var F=this.GetBookmarkNode(A,true);if (!F) return;var G;if (!C) G=this.GetBookmarkNode(A,false);var H=this.Window.document.body.createTextRange();H.moveToElementText(F);H.moveStart('character',1);if (G){var I=this.Window.document.body.createTextRange();I.moveToElementText(G);H.setEndPoint('EndToEnd',I);H.moveEnd('character',-1);}else{D=(B||!F.previousSibling||F.previousSibling.nodeName.toLowerCase()=='br')&&!F.nextSibing;E=this.Window.document.createElement('span');E.innerHTML='&#65279;';F.parentNode.insertBefore(E,F);if (D){F.parentNode.insertBefore(this.Window.document.createTextNode('\ufeff'),F);}};if (!this._Range) this._Range=this.CreateRange();this._Range.setStartBefore(F);F.parentNode.removeChild(F);if (C){if (D){H.moveStart('character',-1);H.select();this.Window.document.selection.clear();}else H.select();FCKDomTools.RemoveNode(E);}else{this._Range.setEndBefore(G);G.parentNode.removeChild(G);H.select();}};FCKDomRange.prototype._GetSelectionMarkerTag=function(A){var B=this.Window.document;var C=B.selection;var D;try{D=C.createRange();}catch (e){return null;};if (D.parentElement().document!=B) return null;D.collapse(A===true);var E='fck_dom_range_temp_'+(new Date()).valueOf()+'_'+Math.floor(Math.random()*1000);D.pasteHTML('<span id="'+E+'"></span>');return B.getElementById(E);};
-var FCKDomRangeIterator=function(A){this.Range=A;this.ForceBrBreak=false;this.EnforceRealBlocks=false;};FCKDomRangeIterator.CreateFromSelection=function(A){var B=new FCKDomRange(A);B.MoveToSelection();return new FCKDomRangeIterator(B);};FCKDomRangeIterator.prototype={GetNextParagraph:function(){var A;var B;var C;var D;var E;var F=this.ForceBrBreak?FCKListsLib.ListBoundaries:FCKListsLib.BlockBoundaries;if (!this._LastNode){var B=this.Range.Clone();B.Expand(this.ForceBrBreak?'list_contents':'block_contents');this._NextNode=B.GetTouchedStartNode();this._LastNode=B.GetTouchedEndNode();B=null;};var H=this._NextNode;var I=this._LastNode;this._NextNode=null;while (H){var J=false;var K=(H.nodeType!=1);var L=false;if (!K){var M=H.nodeName.toLowerCase();if (F[M]&&(!FCKBrowserInfo.IsIE||H.scopeName=='HTML')){if (M=='br') K=true;else if (!B&&H.childNodes.length==0&&M!='hr'){A=H;C=H==I;break;};if (B){B.SetEnd(H,3,true);if (M!='br') this._NextNode=H;};J=true;}else{if (H.firstChild){if (!B){B=new FCKDomRange(this.Range.Window);B.SetStart(H,3,true);};H=H.firstChild;continue;};K=true;}}else if (H.nodeType==3){if (/^[\r\n\t ]+$/.test(H.nodeValue)) K=false;};if (K&&!B){B=new FCKDomRange(this.Range.Window);B.SetStart(H,3,true);};C=((!J||K)&&H==I);if (B&&!J){while (!H.nextSibling&&!C){var N=H.parentNode;if (F[N.nodeName.toLowerCase()]){J=true;C=C||(N==I);break;};H=N;K=true;C=(H==I);L=true;}};if (K) B.SetEnd(H,4,true);if ((J||C)&&B){B._UpdateElementInfo();if (B.StartNode==B.EndNode&&B.StartNode.parentNode==B.StartBlockLimit&&B.StartNode.getAttribute&&B.StartNode.getAttribute('_fck_bookmark')) B=null;else break;};if (C) break;H=FCKDomTools.GetNextSourceNode(H,L,null,I);};if (!A){if (!B){this._NextNode=null;return null;};A=B.StartBlock;if (!A&&!this.EnforceRealBlocks&&B.StartBlockLimit.nodeName.IEquals('DIV','TH','TD')&&B.CheckStartOfBlock()&&B.CheckEndOfBlock()){A=B.StartBlockLimit;}else if (!A||(this.EnforceRealBlocks&&A.nodeName.toLowerCase()=='li')){A=this.Range.Window.document.createElement(FCKConfig.EnterMode=='p'?'p':'div');B.ExtractContents().AppendTo(A);FCKDomTools.TrimNode(A);B.InsertNode(A);D=true;E=true;}else if (A.nodeName.toLowerCase()!='li'){if (!B.CheckStartOfBlock()||!B.CheckEndOfBlock()){A=A.cloneNode(false);B.ExtractContents().AppendTo(A);FCKDomTools.TrimNode(A);var O=B.SplitBlock();D=!O.WasStartOfBlock;E=!O.WasEndOfBlock;B.InsertNode(A);}}else if (!C){this._NextNode=A==I?null:FCKDomTools.GetNextSourceNode(B.EndNode,true,null,I);return A;}};if (D){var P=A.previousSibling;if (P&&P.nodeType==1){if (P.nodeName.toLowerCase()=='br') P.parentNode.removeChild(P);else if (P.lastChild&&P.lastChild.nodeName.IEquals('br')) P.removeChild(P.lastChild);}};if (E){var Q=A.lastChild;if (Q&&Q.nodeType==1&&Q.nodeName.toLowerCase()=='br') A.removeChild(Q);};if (!this._NextNode) this._NextNode=(C||A==I)?null:FCKDomTools.GetNextSourceNode(A,true,null,I);return A;}};
+var FCKDomRangeIterator=function(A){this.Range=A;this.ForceBrBreak=false;this.EnforceRealBlocks=false;};FCKDomRangeIterator.CreateFromSelection=function(A){var B=new FCKDomRange(A);B.MoveToSelection();return new FCKDomRangeIterator(B);};FCKDomRangeIterator.prototype={GetNextParagraph:function(){var A;var B;var C;var D;var E;var F=this.ForceBrBreak?FCKListsLib.ListBoundaries:FCKListsLib.BlockBoundaries;if (!this._LastNode){var B=this.Range.Clone();B.Expand(this.ForceBrBreak?'list_contents':'block_contents');this._NextNode=B.GetTouchedStartNode();this._LastNode=B.GetTouchedEndNode();B=null;};var H=this._NextNode;var I=this._LastNode;this._NextNode=null;while (H){var J=false;var K=(H.nodeType!=1);var L=false;if (!K){var M=H.nodeName.toLowerCase();if (F[M]&&(!FCKBrowserInfo.IsIE||H.scopeName=='HTML')){if (M=='br') K=true;else if (!B&&H.childNodes.length==0&&M!='hr'){A=H;C=H==I;break;};if (B){B.SetEnd(H,3,true);if (M!='br') this._NextNode=FCKDomTools.GetNextSourceNode(H,true,null,I);};J=true;}else{if (H.firstChild){if (!B){B=new FCKDomRange(this.Range.Window);B.SetStart(H,3,true);};H=H.firstChild;continue;};K=true;}}else if (H.nodeType==3){if (/^[\r\n\t ]+$/.test(H.nodeValue)) K=false;};if (K&&!B){B=new FCKDomRange(this.Range.Window);B.SetStart(H,3,true);};C=((!J||K)&&H==I);if (B&&!J){while (!H.nextSibling&&!C){var N=H.parentNode;if (F[N.nodeName.toLowerCase()]){J=true;C=C||(N==I);break;};H=N;K=true;C=(H==I);L=true;}};if (K) B.SetEnd(H,4,true);if ((J||C)&&B){B._UpdateElementInfo();if (B.StartNode==B.EndNode&&B.StartNode.parentNode==B.StartBlockLimit&&B.StartNode.getAttribute&&B.StartNode.getAttribute('_fck_bookmark')) B=null;else break;};if (C) break;H=FCKDomTools.GetNextSourceNode(H,L,null,I);};if (!A){if (!B){this._NextNode=null;return null;};A=B.StartBlock;if (!A&&!this.EnforceRealBlocks&&B.StartBlockLimit.nodeName.IEquals('DIV','TH','TD')&&B.CheckStartOfBlock()&&B.CheckEndOfBlock()){A=B.StartBlockLimit;}else if (!A||(this.EnforceRealBlocks&&A.nodeName.toLowerCase()=='li')){A=this.Range.Window.document.createElement(FCKConfig.EnterMode=='p'?'p':'div');B.ExtractContents().AppendTo(A);FCKDomTools.TrimNode(A);B.InsertNode(A);D=true;E=true;}else if (A.nodeName.toLowerCase()!='li'){if (!B.CheckStartOfBlock()||!B.CheckEndOfBlock()){A=A.cloneNode(false);B.ExtractContents().AppendTo(A);FCKDomTools.TrimNode(A);var O=B.SplitBlock();D=!O.WasStartOfBlock;E=!O.WasEndOfBlock;B.InsertNode(A);}}else if (!C){this._NextNode=A==I?null:FCKDomTools.GetNextSourceNode(B.EndNode,true,null,I);return A;}};if (D){var P=A.previousSibling;if (P&&P.nodeType==1){if (P.nodeName.toLowerCase()=='br') P.parentNode.removeChild(P);else if (P.lastChild&&P.lastChild.nodeName.IEquals('br')) P.removeChild(P.lastChild);}};if (E){var Q=A.lastChild;if (Q&&Q.nodeType==1&&Q.nodeName.toLowerCase()=='br') A.removeChild(Q);};if (!this._NextNode) this._NextNode=(C||A==I)?null:FCKDomTools.GetNextSourceNode(A,true,null,I);return A;}};
 var FCKDocumentFragment=function(A){this._Document=A;this.RootNode=A.createElement('div');};FCKDocumentFragment.prototype={AppendTo:function(A){FCKDomTools.MoveChildren(this.RootNode,A);},AppendHtml:function(A){var B=this._Document.createElement('div');B.innerHTML=A;FCKDomTools.MoveChildren(B,this.RootNode);},InsertAfterNode:function(A){var B=this.RootNode;var C;while((C=B.lastChild)) FCKDomTools.InsertAfterNode(A,B.removeChild(C));}};
 var FCKW3CRange=function(A){this._Document=A;this.startContainer=null;this.startOffset=null;this.endContainer=null;this.endOffset=null;this.collapsed=true;};FCKW3CRange.CreateRange=function(A){return new FCKW3CRange(A);};FCKW3CRange.CreateFromRange=function(A,B){var C=FCKW3CRange.CreateRange(A);C.setStart(B.startContainer,B.startOffset);C.setEnd(B.endContainer,B.endOffset);return C;};FCKW3CRange.prototype={_UpdateCollapsed:function(){this.collapsed=(this.startContainer==this.endContainer&&this.startOffset==this.endOffset);},setStart:function(A,B){this.startContainer=A;this.startOffset=B;if (!this.endContainer){this.endContainer=A;this.endOffset=B;};this._UpdateCollapsed();},setEnd:function(A,B){this.endContainer=A;this.endOffset=B;if (!this.startContainer){this.startContainer=A;this.startOffset=B;};this._UpdateCollapsed();},setStartAfter:function(A){this.setStart(A.parentNode,FCKDomTools.GetIndexOf(A)+1);},setStartBefore:function(A){this.setStart(A.parentNode,FCKDomTools.GetIndexOf(A));},setEndAfter:function(A){this.setEnd(A.parentNode,FCKDomTools.GetIndexOf(A)+1);},setEndBefore:function(A){this.setEnd(A.parentNode,FCKDomTools.GetIndexOf(A));},collapse:function(A){if (A){this.endContainer=this.startContainer;this.endOffset=this.startOffset;}else{this.startContainer=this.endContainer;this.startOffset=this.endOffset;};this.collapsed=true;},selectNodeContents:function(A){this.setStart(A,0);this.setEnd(A,A.nodeType==3?A.data.length:A.childNodes.length);},insertNode:function(A){var B=this.startContainer;var C=this.startOffset;if (B.nodeType==3){B.splitText(C);if (B==this.endContainer) this.setEnd(B.nextSibling,this.endOffset-this.startOffset);FCKDomTools.InsertAfterNode(B,A);return;}else{B.insertBefore(A,B.childNodes[C]||null);if (B==this.endContainer){this.endOffset++;this.collapsed=false;}}},deleteContents:function(){if (this.collapsed) return;this._ExecContentsAction(0);},extractContents:function(){var A=new FCKDocumentFragment(this._Document);if (!this.collapsed) this._ExecContentsAction(1,A);return A;},cloneContents:function(){var A=new FCKDocumentFragment(this._Document);if (!this.collapsed) this._ExecContentsAction(2,A);return A;},_ExecContentsAction:function(A,B){var C=this.startContainer;var D=this.endContainer;var E=this.startOffset;var F=this.endOffset;var G=false;var H=false;if (D.nodeType==3) D=D.splitText(F);else{if (D.childNodes.length>0){if (F>D.childNodes.length-1){D=FCKDomTools.InsertAfterNode(D.lastChild,this._Document.createTextNode(''));H=true;}else D=D.childNodes[F];}};if (C.nodeType==3){C.splitText(E);if (C==D) D=C.nextSibling;}else{if (E==0){C=C.insertBefore(this._Document.createTextNode(''),C.firstChild);G=true;}else if (E>C.childNodes.length-1){C=C.appendChild(this._Document.createTextNode(''));G=true;}else C=C.childNodes[E].previousSibling;};var I=FCKDomTools.GetParents(C);var J=FCKDomTools.GetParents(D);var i,topStart,topEnd;for (i=0;i<I.length;i++){topStart=I[i];topEnd=J[i];if (topStart!=topEnd) break;};var K,levelStartNode,levelClone,currentNode,currentSibling;if (B) K=B.RootNode;for (var j=i;j<I.length;j++){levelStartNode=I[j];if (K&&levelStartNode!=C) levelClone=K.appendChild(levelStartNode.cloneNode(levelStartNode==C));currentNode=levelStartNode.nextSibling;while(currentNode){if (currentNode==J[j]||currentNode==D) break;currentSibling=currentNode.nextSibling;if (A==2) K.appendChild(currentNode.cloneNode(true));else{currentNode.parentNode.removeChild(currentNode);if (A==1) K.appendChild(currentNode);};currentNode=currentSibling;};if (K) K=levelClone;};if (B) K=B.RootNode;for (var k=i;k<J.length;k++){levelStartNode=J[k];if (A>0&&levelStartNode!=D) levelClone=K.appendChild(levelStartNode.cloneNode(levelStartNode==D));if (!I[k]||levelStartNode.parentNode!=I[k].parentNode){currentNode=levelStartNode.previousSibling;while(currentNode){if (currentNode==I[k]||currentNode==C) break;currentSibling=currentNode.previousSibling;if (A==2) K.insertBefore(currentNode.cloneNode(true),K.firstChild);else{currentNode.parentNode.removeChild(currentNode);if (A==1) K.insertBefore(currentNode,K.firstChild);};currentNode=currentSibling;}};if (K) K=levelClone;};if (A==2){var L=this.startContainer;if (L.nodeType==3){L.data+=L.nextSibling.data;L.parentNode.removeChild(L.nextSibling);};var M=this.endContainer;if (M.nodeType==3&&M.nextSibling){M.data+=M.nextSibling.data;M.parentNode.removeChild(M.nextSibling);}}else{if (topStart&&topEnd&&(C.parentNode!=topStart.parentNode||D.parentNode!=topEnd.parentNode)){var N=FCKDomTools.GetIndexOf(topEnd);if (G&&topEnd.parentNode==C.parentNode) N--;this.setStart(topEnd.parentNode,N);};this.collapse(true);};if(G) C.parentNode.removeChild(C);if(H&&D.parentNode) D.parentNode.removeChild(D);},cloneRange:function(){return FCKW3CRange.CreateFromRange(this._Document,this);}};
-var FCKEnterKey=function(A,B,C,D){this.Window=A;this.EnterMode=B||'p';this.ShiftEnterMode=C||'br';var E=new FCKKeystrokeHandler(false);E._EnterKey=this;E.OnKeystroke=FCKEnterKey_OnKeystroke;E.SetKeystrokes([[13,'Enter'],[SHIFT+13,'ShiftEnter'],[9,'Tab'],[8,'Backspace'],[CTRL+8,'CtrlBackspace'],[46,'Delete']]);if (D>0){this.TabText='';while (D-->0) this.TabText+='\xa0';};E.AttachToElement(A.document);};function FCKEnterKey_OnKeystroke(A,B){var C=this._EnterKey;try{switch (B){case 'Enter':return C.DoEnter();break;case 'ShiftEnter':return C.DoShiftEnter();break;case 'Backspace':return C.DoBackspace();break;case 'Delete':return C.DoDelete();break;case 'Tab':return C.DoTab();break;case 'CtrlBackspace':return C.DoCtrlBackspace();break;}}catch (e){};return false;};FCKEnterKey.prototype.DoEnter=function(A,B){FCKUndo.SaveUndoStep();this._HasShift=(B===true);var C=FCKSelection.GetParentElement();var D=new FCKElementPath(C);var E=A||this.EnterMode;if (E=='br'||D.Block&&D.Block.tagName.toLowerCase()=='pre') return this._ExecuteEnterBr();else return this._ExecuteEnterBlock(E);};FCKEnterKey.prototype.DoShiftEnter=function(){return this.DoEnter(this.ShiftEnterMode,true);};FCKEnterKey.prototype.DoBackspace=function(){var A=false;var B=new FCKDomRange(this.Window);B.MoveToSelection();if (FCKBrowserInfo.IsIE&&this._CheckIsAllContentsIncluded(B,this.Window.document.body)){this._FixIESelectAllBug(B);return true;};var C=B.CheckIsCollapsed();if (!C){if (FCKBrowserInfo.IsIE&&this.Window.document.selection.type.toLowerCase()=="control"){var D=this.Window.document.selection.createRange();for (var i=D.length-1;i>=0;i--){var E=D.item(i);E.parentNode.removeChild(E);};return true;};return false;};var F=B.StartBlock;var G=B.EndBlock;if (B.StartBlockLimit==B.EndBlockLimit&&F&&G){if (!C){var H=B.CheckEndOfBlock();B.DeleteContents();if (F!=G){B.SetStart(G,1);B.SetEnd(G,1);};B.Select();A=(F==G);};if (B.CheckStartOfBlock()){var I=B.StartBlock;var J=FCKDomTools.GetPreviousSourceElement(I,true,['BODY',B.StartBlockLimit.nodeName],['UL','OL']);A=this._ExecuteBackspace(B,J,I);}else if (FCKBrowserInfo.IsGeckoLike){B.Select();}};B.Release();return A;};FCKEnterKey.prototype.DoCtrlBackspace=function(){FCKUndo.SaveUndoStep();var A=new FCKDomRange(this.Window);A.MoveToSelection();if (FCKBrowserInfo.IsIE&&this._CheckIsAllContentsIncluded(A,this.Window.document.body)){this._FixIESelectAllBug(A);return true;};return false;};FCKEnterKey.prototype._ExecuteBackspace=function(A,B,C){var D=false;if (!B&&C&&C.nodeName.IEquals('LI')&&C.parentNode.parentNode.nodeName.IEquals('LI')){this._OutdentWithSelection(C,A);return true;};if (B&&B.nodeName.IEquals('LI')){var E=FCKDomTools.GetLastChild(B,['UL','OL']);while (E){B=FCKDomTools.GetLastChild(E,'LI');E=FCKDomTools.GetLastChild(B,['UL','OL']);}};if (B&&C){if (C.nodeName.IEquals('LI')&&!B.nodeName.IEquals('LI')){this._OutdentWithSelection(C,A);return true;};var F=C.parentNode;var G=B.nodeName.toLowerCase();if (FCKListsLib.EmptyElements[G]!=null||G=='table'){FCKDomTools.RemoveNode(B);D=true;}else{FCKDomTools.RemoveNode(C);while (F.innerHTML.Trim().length==0){var H=F.parentNode;H.removeChild(F);F=H;};FCKDomTools.LTrimNode(C);FCKDomTools.RTrimNode(B);A.SetStart(B,2,true);A.Collapse(true);var I=A.CreateBookmark(true);if (!C.tagName.IEquals(['TABLE'])) FCKDomTools.MoveChildren(C,B);A.SelectBookmark(I);D=true;}};return D;};FCKEnterKey.prototype.DoDelete=function(){FCKUndo.SaveUndoStep();var A=false;var B=new FCKDomRange(this.Window);B.MoveToSelection();if (FCKBrowserInfo.IsIE&&this._CheckIsAllContentsIncluded(B,this.Window.document.body)){this._FixIESelectAllBug(B);return true;};if (B.CheckIsCollapsed()&&B.CheckEndOfBlock(FCKBrowserInfo.IsGeckoLike)){var C=B.StartBlock;var D=FCKTools.GetElementAscensor(C,'td');var E=FCKDomTools.GetNextSourceElement(C,true,[B.StartBlockLimit.nodeName],['UL','OL','TR'],true);if (D){var F=FCKTools.GetElementAscensor(E,'td');if (F!=D) return true;};A=this._ExecuteBackspace(B,C,E);};B.Release();return A;};FCKEnterKey.prototype.DoTab=function(){var A=new FCKDomRange(this.Window);A.MoveToSelection();var B=A._Range.startContainer;while (B){if (B.nodeType==1){var C=B.tagName.toLowerCase();if (C=="tr"||C=="td"||C=="th"||C=="tbody"||C=="table") return false;else break;};B=B.parentNode;};if (this.TabText){A.DeleteContents();A.InsertNode(this.Window.document.createTextNode(this.TabText));A.Collapse(false);A.Select();};return true;};FCKEnterKey.prototype._ExecuteEnterBlock=function(A,B){var C=B||new FCKDomRange(this.Window);var D=C.SplitBlock(A);if (D){var E=D.PreviousBlock;var F=D.NextBlock;var G=D.WasStartOfBlock;var H=D.WasEndOfBlock;if (F){if (F.parentNode.nodeName.IEquals('li')){FCKDomTools.BreakParent(F,F.parentNode);FCKDomTools.MoveNode(F,F.nextSibling,true);}}else if (E&&E.parentNode.nodeName.IEquals('li')){FCKDomTools.BreakParent(E,E.parentNode);C.MoveToElementEditStart(E.nextSibling);FCKDomTools.MoveNode(E,E.previousSibling);};if (!G&&!H){if (F.nodeName.IEquals('li')&&F.firstChild&&F.firstChild.nodeName.IEquals(['ul','ol'])) F.insertBefore(FCKTools.GetElementDocument(F).createTextNode('\xa0'),F.firstChild);if (F) C.MoveToElementEditStart(F);}else{if (G&&H&&E.tagName.toUpperCase()=='LI'){C.MoveToElementStart(E);this._OutdentWithSelection(E,C);C.Release();return true;};var I;if (E){var J=E.tagName.toUpperCase();if (!this._HasShift&&!(/^H[1-6]$/).test(J)){I=FCKDomTools.CloneElement(E);}}else if (F) I=FCKDomTools.CloneElement(F);if (!I) I=this.Window.document.createElement(A);var K=D.ElementPath;if (K){for (var i=0,len=K.Elements.length;i<len;i++){var L=K.Elements[i];if (L==K.Block||L==K.BlockLimit) break;if (FCKListsLib.InlineChildReqElements[L.nodeName.toLowerCase()]){L=FCKDomTools.CloneElement(L);FCKDomTools.MoveChildren(I,L);I.appendChild(L);}}};if (FCKBrowserInfo.IsGeckoLike) FCKTools.AppendBogusBr(I);C.InsertNode(I);if (FCKBrowserInfo.IsIE){C.MoveToElementEditStart(I);C.Select();};C.MoveToElementEditStart(G&&!H?F:I);};if (FCKBrowserInfo.IsSafari) FCKDomTools.ScrollIntoView(F||I,false);else if (FCKBrowserInfo.IsGeckoLike) (F||I).scrollIntoView(false);C.Select();};C.Release();return true;};FCKEnterKey.prototype._ExecuteEnterBr=function(A){var B=new FCKDomRange(this.Window);B.MoveToSelection();if (B.StartBlockLimit==B.EndBlockLimit){B.DeleteContents();B.MoveToSelection();var C=B.CheckStartOfBlock();var D=B.CheckEndOfBlock();var E=B.StartBlock?B.StartBlock.tagName.toUpperCase():'';var F=this._HasShift;var G=false;if (!F&&E=='LI') return this._ExecuteEnterBlock(null,B);if (!F&&D&&(/^H[1-6]$/).test(E)){FCKDomTools.InsertAfterNode(B.StartBlock,this.Window.document.createElement('br'));if (FCKBrowserInfo.IsGecko) FCKDomTools.InsertAfterNode(B.StartBlock,this.Window.document.createTextNode(''));B.SetStart(B.StartBlock.nextSibling,FCKBrowserInfo.IsIE?3:1);}else{var H;G=E.IEquals('pre');if (G) H=this.Window.document.createTextNode(FCKBrowserInfo.IsIE?'\r':'\n');else H=this.Window.document.createElement('br');B.InsertNode(H);if (FCKBrowserInfo.IsGecko) FCKDomTools.InsertAfterNode(H,this.Window.document.createTextNode(''));if (D&&FCKBrowserInfo.IsGeckoLike) FCKTools.AppendBogusBr(H.parentNode);if (FCKBrowserInfo.IsIE) B.SetStart(H,4);else B.SetStart(H.nextSibling,1);if (!FCKBrowserInfo.IsIE){var I=null;if (FCKBrowserInfo.IsOpera) I=this.Window.document.createElement('span');else I=this.Window.document.createElement('br');H.parentNode.insertBefore(I,H.nextSibling);if (FCKBrowserInfo.IsSafari) FCKDomTools.ScrollIntoView(I,false);else I.scrollIntoView(false);I.parentNode.removeChild(I);}};B.Collapse(true);B.Select(G);};B.Release();return true;};FCKEnterKey.prototype._OutdentWithSelection=function(A,B){var C=B.CreateBookmark();FCKListHandler.OutdentListItem(A);B.MoveToBookmark(C);B.Select();};FCKEnterKey.prototype._CheckIsAllContentsIncluded=function(A,B){var C=false;var D=false;if (A.StartContainer==B||A.StartContainer==B.firstChild) C=(A._Range.startOffset==0);if (A.EndContainer==B||A.EndContainer==B.lastChild){var E=A.EndContainer.nodeType==3?A.EndContainer.length:A.EndContainer.childNodes.length;D=(A._Range.endOffset==E);};return C&&D;};FCKEnterKey.prototype._FixIESelectAllBug=function(A){var B=this.Window.document;B.body.innerHTML='';var C;if (FCKConfig.EnterMode.IEquals(['div','p'])){C=B.createElement(FCKConfig.EnterMode);B.body.appendChild(C);}else C=B.body;A.MoveToNodeContents(C);A.Collapse(true);A.Select();A.Release();};
-var FCKDocumentProcessor={};FCKDocumentProcessor._Items=[];FCKDocumentProcessor.AppendNew=function(){var A={};this._Items.AddItem(A);return A;};FCKDocumentProcessor.Process=function(A){var B=FCK.IsDirty();var C,i=0;while((C=this._Items[i++])) C.ProcessDocument(A);if (!B) FCK.ResetIsDirty();};var FCKDocumentProcessor_CreateFakeImage=function(A,B){var C=FCKTools.GetElementDocument(B).createElement('IMG');C.className=A;C.src=FCKConfig.FullBasePath+'images/spacer.gif';C.setAttribute('_fckfakelement','true',0);C.setAttribute('_fckrealelement',FCKTempBin.AddElement(B),0);return C;};if (FCKBrowserInfo.IsIE||FCKBrowserInfo.IsOpera){var FCKAnchorsProcessor=FCKDocumentProcessor.AppendNew();FCKAnchorsProcessor.ProcessDocument=function(A){var B=A.getElementsByTagName('A');var C;var i=B.length-1;while (i>=0&&(C=B[i--])){if (C.name.length>0){if (C.innerHTML!==''){if (FCKBrowserInfo.IsIE) C.className+=' FCK__AnchorC';}else{var D=FCKDocumentProcessor_CreateFakeImage('FCK__Anchor',C.cloneNode(true));D.setAttribute('_fckanchor','true',0);C.parentNode.insertBefore(D,C);C.parentNode.removeChild(C);}}}}};var FCKPageBreaksProcessor=FCKDocumentProcessor.AppendNew();FCKPageBreaksProcessor.ProcessDocument=function(A){var B=A.getElementsByTagName('DIV');var C;var i=B.length-1;while (i>=0&&(C=B[i--])){if (C.style.pageBreakAfter=='always'&&C.childNodes.length==1&&C.childNodes[0].style&&C.childNodes[0].style.display=='none'){var D=FCKDocumentProcessor_CreateFakeImage('FCK__PageBreak',C.cloneNode(true));C.parentNode.insertBefore(D,C);C.parentNode.removeChild(C);}}};FCKEmbedAndObjectProcessor=(function(){var A=[];var B=function(el){var C=el.cloneNode(true);var D;var E=D=FCKDocumentProcessor_CreateFakeImage('FCK__UnknownObject',C);FCKEmbedAndObjectProcessor.RefreshView(E,el);for (var i=0;i<A.length;i++) D=A[i](el,D)||D;if (D!=E) FCKTempBin.RemoveElement(E.getAttribute('_fckrealelement'));el.parentNode.replaceChild(D,el);};return FCKTools.Merge(FCKDocumentProcessor.AppendNew(),{ProcessDocument:function(doc){FCKTools.RunFunction(function(){var F=doc.getElementsByTagName('object');for (var i=F.length-1;i>=0;i--) B(F[i]);var G=doc.getElementsByTagName('embed');for (var i=G.length-1;i>=0;i--) B(G[i]);});},RefreshView:function(placeHolder,original){if (original.getAttribute('width')>0) placeHolder.style.width=FCKTools.ConvertHtmlSizeToStyle(original.getAttribute('width'));if (original.getAttribute('height')>0) placeHolder.style.height=FCKTools.ConvertHtmlSizeToStyle(original.getAttribute('height'));},AddCustomHandler:function(func){A.push(func);}});})();FCK.GetRealElement=function(A){var e=FCKTempBin.Elements[A.getAttribute('_fckrealelement')];if (A.getAttribute('_fckflash')){if (A.style.width.length>0) e.width=FCKTools.ConvertStyleSizeToHtml(A.style.width);if (A.style.height.length>0) e.height=FCKTools.ConvertStyleSizeToHtml(A.style.height);};return e;};if (FCKBrowserInfo.IsIE){FCKDocumentProcessor.AppendNew().ProcessDocument=function(A){var B=A.getElementsByTagName('HR');var C;var i=B.length-1;while (i>=0&&(C=B[i--])){var D=A.createElement('hr');D.mergeAttributes(C,true);FCKDomTools.InsertAfterNode(C,D);C.parentNode.removeChild(C);}}};FCKDocumentProcessor.AppendNew().ProcessDocument=function(A){var B=A.getElementsByTagName('INPUT');var C;var i=B.length-1;while (i>=0&&(C=B[i--])){if (C.type=='hidden'){var D=FCKDocumentProcessor_CreateFakeImage('FCK__InputHidden',C.cloneNode(true));D.setAttribute('_fckinputhidden','true',0);C.parentNode.insertBefore(D,C);C.parentNode.removeChild(C);}}};FCKEmbedAndObjectProcessor.AddCustomHandler(function(A,B){if (!(A.nodeName.IEquals('embed')&&(A.type=='application/x-shockwave-flash'||/\.swf($|#|\?)/i.test(A.src)))) return;B.className='FCK__Flash';B.setAttribute('_fckflash','true',0);});
+var FCKEnterKey=function(A,B,C,D){this.Window=A;this.EnterMode=B||'p';this.ShiftEnterMode=C||'br';var E=new FCKKeystrokeHandler(false);E._EnterKey=this;E.OnKeystroke=FCKEnterKey_OnKeystroke;E.SetKeystrokes([[13,'Enter'],[SHIFT+13,'ShiftEnter'],[8,'Backspace'],[CTRL+8,'CtrlBackspace'],[46,'Delete']]);this.TabText='';if (D>0||FCKBrowserInfo.IsSafari){while (D--) this.TabText+='\xa0';E.SetKeystrokes([9,'Tab']);};E.AttachToElement(A.document);};function FCKEnterKey_OnKeystroke(A,B){var C=this._EnterKey;try{switch (B){case 'Enter':return C.DoEnter();break;case 'ShiftEnter':return C.DoShiftEnter();break;case 'Backspace':return C.DoBackspace();break;case 'Delete':return C.DoDelete();break;case 'Tab':return C.DoTab();break;case 'CtrlBackspace':return C.DoCtrlBackspace();break;}}catch (e){};return false;};FCKEnterKey.prototype.DoEnter=function(A,B){FCKUndo.SaveUndoStep();this._HasShift=(B===true);var C=FCKSelection.GetParentElement();var D=new FCKElementPath(C);var E=A||this.EnterMode;if (E=='br'||D.Block&&D.Block.tagName.toLowerCase()=='pre') return this._ExecuteEnterBr();else return this._ExecuteEnterBlock(E);};FCKEnterKey.prototype.DoShiftEnter=function(){return this.DoEnter(this.ShiftEnterMode,true);};FCKEnterKey.prototype.DoBackspace=function(){var A=false;var B=new FCKDomRange(this.Window);B.MoveToSelection();if (FCKBrowserInfo.IsIE&&this._CheckIsAllContentsIncluded(B,this.Window.document.body)){this._FixIESelectAllBug(B);return true;};var C=B.CheckIsCollapsed();if (!C){if (FCKBrowserInfo.IsIE&&this.Window.document.selection.type.toLowerCase()=="control"){var D=this.Window.document.selection.createRange();for (var i=D.length-1;i>=0;i--){var E=D.item(i);E.parentNode.removeChild(E);};return true;};return false;};if (FCKBrowserInfo.IsIE){var F=FCKDomTools.GetPreviousSourceElement(B.StartNode,true);if (F&&F.nodeName.toLowerCase()=='br'){var G=B.Clone();G.SetStart(F,4);if (G.CheckIsEmpty()){F.parentNode.removeChild(F);return true;}}};var H=B.StartBlock;var I=B.EndBlock;if (B.StartBlockLimit==B.EndBlockLimit&&H&&I){if (!C){var J=B.CheckEndOfBlock();B.DeleteContents();if (H!=I){B.SetStart(I,1);B.SetEnd(I,1);};B.Select();A=(H==I);};if (B.CheckStartOfBlock()){var K=B.StartBlock;var L=FCKDomTools.GetPreviousSourceElement(K,true,['BODY',B.StartBlockLimit.nodeName],['UL','OL']);A=this._ExecuteBackspace(B,L,K);}else if (FCKBrowserInfo.IsGeckoLike){B.Select();}};B.Release();return A;};FCKEnterKey.prototype.DoCtrlBackspace=function(){FCKUndo.SaveUndoStep();var A=new FCKDomRange(this.Window);A.MoveToSelection();if (FCKBrowserInfo.IsIE&&this._CheckIsAllContentsIncluded(A,this.Window.document.body)){this._FixIESelectAllBug(A);return true;};return false;};FCKEnterKey.prototype._ExecuteBackspace=function(A,B,C){var D=false;if (!B&&C&&C.nodeName.IEquals('LI')&&C.parentNode.parentNode.nodeName.IEquals('LI')){this._OutdentWithSelection(C,A);return true;};if (B&&B.nodeName.IEquals('LI')){var E=FCKDomTools.GetLastChild(B,['UL','OL']);while (E){B=FCKDomTools.GetLastChild(E,'LI');E=FCKDomTools.GetLastChild(B,['UL','OL']);}};if (B&&C){if (C.nodeName.IEquals('LI')&&!B.nodeName.IEquals('LI')){this._OutdentWithSelection(C,A);return true;};var F=C.parentNode;var G=B.nodeName.toLowerCase();if (FCKListsLib.EmptyElements[G]!=null||G=='table'){FCKDomTools.RemoveNode(B);D=true;}else{FCKDomTools.RemoveNode(C);while (F.innerHTML.Trim().length==0){var H=F.parentNode;H.removeChild(F);F=H;};FCKDomTools.LTrimNode(C);FCKDomTools.RTrimNode(B);A.SetStart(B,2,true);A.Collapse(true);var I=A.CreateBookmark(true);if (!C.tagName.IEquals(['TABLE'])) FCKDomTools.MoveChildren(C,B);A.SelectBookmark(I);D=true;}};return D;};FCKEnterKey.prototype.DoDelete=function(){FCKUndo.SaveUndoStep();var A=false;var B=new FCKDomRange(this.Window);B.MoveToSelection();if (FCKBrowserInfo.IsIE&&this._CheckIsAllContentsIncluded(B,this.Window.document.body)){this._FixIESelectAllBug(B);return true;};if (B.CheckIsCollapsed()&&B.CheckEndOfBlock(FCKBrowserInfo.IsGeckoLike)){var C=B.StartBlock;var D=FCKTools.GetElementAscensor(C,'td');var E=FCKDomTools.GetNextSourceElement(C,true,[B.StartBlockLimit.nodeName],['UL','OL','TR'],true);if (D){var F=FCKTools.GetElementAscensor(E,'td');if (F!=D) return true;};A=this._ExecuteBackspace(B,C,E);};B.Release();return A;};FCKEnterKey.prototype.DoTab=function(){var A=new FCKDomRange(this.Window);A.MoveToSelection();var B=A._Range.startContainer;while (B){if (B.nodeType==1){var C=B.tagName.toLowerCase();if (C=="tr"||C=="td"||C=="th"||C=="tbody"||C=="table") return false;else break;};B=B.parentNode;};if (this.TabText){A.DeleteContents();A.InsertNode(this.Window.document.createTextNode(this.TabText));A.Collapse(false);A.Select();};return true;};FCKEnterKey.prototype._ExecuteEnterBlock=function(A,B){var C=B||new FCKDomRange(this.Window);var D=C.SplitBlock(A);if (D){var E=D.PreviousBlock;var F=D.NextBlock;var G=D.WasStartOfBlock;var H=D.WasEndOfBlock;if (F){if (F.parentNode.nodeName.IEquals('li')){FCKDomTools.BreakParent(F,F.parentNode);FCKDomTools.MoveNode(F,F.nextSibling,true);}}else if (E&&E.parentNode.nodeName.IEquals('li')){FCKDomTools.BreakParent(E,E.parentNode);C.MoveToElementEditStart(E.nextSibling);FCKDomTools.MoveNode(E,E.previousSibling);};if (!G&&!H){if (F.nodeName.IEquals('li')&&F.firstChild&&F.firstChild.nodeName.IEquals(['ul','ol'])) F.insertBefore(FCKTools.GetElementDocument(F).createTextNode('\xa0'),F.firstChild);if (F) C.MoveToElementEditStart(F);}else{if (G&&H&&E.tagName.toUpperCase()=='LI'){C.MoveToElementStart(E);this._OutdentWithSelection(E,C);C.Release();return true;};var I;if (E){var J=E.tagName.toUpperCase();if (!this._HasShift&&!(/^H[1-6]$/).test(J)){I=FCKDomTools.CloneElement(E);}}else if (F) I=FCKDomTools.CloneElement(F);if (!I) I=this.Window.document.createElement(A);var K=D.ElementPath;if (K){for (var i=0,len=K.Elements.length;i<len;i++){var L=K.Elements[i];if (L==K.Block||L==K.BlockLimit) break;if (FCKListsLib.InlineChildReqElements[L.nodeName.toLowerCase()]){L=FCKDomTools.CloneElement(L);FCKDomTools.MoveChildren(I,L);I.appendChild(L);}}};if (FCKBrowserInfo.IsGeckoLike) FCKTools.AppendBogusBr(I);C.InsertNode(I);if (FCKBrowserInfo.IsIE){C.MoveToElementEditStart(I);C.Select();};C.MoveToElementEditStart(G&&!H?F:I);};if (FCKBrowserInfo.IsGeckoLike) FCKDomTools.ScrollIntoView(F||I,false);C.Select();};C.Release();return true;};FCKEnterKey.prototype._ExecuteEnterBr=function(A){var B=new FCKDomRange(this.Window);B.MoveToSelection();if (B.StartBlockLimit==B.EndBlockLimit){B.DeleteContents();B.MoveToSelection();var C=B.CheckStartOfBlock();var D=B.CheckEndOfBlock();var E=B.StartBlock?B.StartBlock.tagName.toUpperCase():'';var F=this._HasShift;var G=false;if (!F&&E=='LI') return this._ExecuteEnterBlock(null,B);if (!F&&D&&(/^H[1-6]$/).test(E)){FCKDomTools.InsertAfterNode(B.StartBlock,this.Window.document.createElement('br'));if (FCKBrowserInfo.IsGecko) FCKDomTools.InsertAfterNode(B.StartBlock,this.Window.document.createTextNode(''));B.SetStart(B.StartBlock.nextSibling,FCKBrowserInfo.IsIE?3:1);}else{var H;G=E.IEquals('pre');if (G) H=this.Window.document.createTextNode(FCKBrowserInfo.IsIE?'\r':'\n');else H=this.Window.document.createElement('br');B.InsertNode(H);if (FCKBrowserInfo.IsGecko) FCKDomTools.InsertAfterNode(H,this.Window.document.createTextNode(''));if (D&&FCKBrowserInfo.IsGeckoLike) FCKTools.AppendBogusBr(H.parentNode);if (FCKBrowserInfo.IsIE) B.SetStart(H,4);else B.SetStart(H.nextSibling,1);if (!FCKBrowserInfo.IsIE){var I=null;if (FCKBrowserInfo.IsOpera) I=this.Window.document.createElement('span');else I=this.Window.document.createElement('br');H.parentNode.insertBefore(I,H.nextSibling);FCKDomTools.ScrollIntoView(I,false);I.parentNode.removeChild(I);}};B.Collapse(true);B.Select(G);};B.Release();return true;};FCKEnterKey.prototype._OutdentWithSelection=function(A,B){var C=B.CreateBookmark();FCKListHandler.OutdentListItem(A);B.MoveToBookmark(C);B.Select();};FCKEnterKey.prototype._CheckIsAllContentsIncluded=function(A,B){var C=false;var D=false;if (A.StartContainer==B||A.StartContainer==B.firstChild) C=(A._Range.startOffset==0);if (A.EndContainer==B||A.EndContainer==B.lastChild){var E=A.EndContainer.nodeType==3?A.EndContainer.length:A.EndContainer.childNodes.length;D=(A._Range.endOffset==E);};return C&&D;};FCKEnterKey.prototype._FixIESelectAllBug=function(A){var B=this.Window.document;B.body.innerHTML='';var C;if (FCKConfig.EnterMode.IEquals(['div','p'])){C=B.createElement(FCKConfig.EnterMode);B.body.appendChild(C);}else C=B.body;A.MoveToNodeContents(C);A.Collapse(true);A.Select();A.Release();};
+var FCKDocumentProcessor={};FCKDocumentProcessor._Items=[];FCKDocumentProcessor.AppendNew=function(){var A={};this._Items.AddItem(A);return A;};FCKDocumentProcessor.Process=function(A){var B=FCK.IsDirty();var C,i=0;while((C=this._Items[i++])) C.ProcessDocument(A);if (!B) FCK.ResetIsDirty();};var FCKDocumentProcessor_CreateFakeImage=function(A,B){var C=FCKTools.GetElementDocument(B).createElement('IMG');C.className=A;C.src=FCKConfig.BasePath+'images/spacer.gif';C.setAttribute('_fckfakelement','true',0);C.setAttribute('_fckrealelement',FCKTempBin.AddElement(B),0);return C;};if (FCKBrowserInfo.IsIE||FCKBrowserInfo.IsOpera){var FCKAnchorsProcessor=FCKDocumentProcessor.AppendNew();FCKAnchorsProcessor.ProcessDocument=function(A){var B=A.getElementsByTagName('A');var C;var i=B.length-1;while (i>=0&&(C=B[i--])){if (C.name.length>0){if (C.innerHTML!==''){if (FCKBrowserInfo.IsIE) C.className+=' FCK__AnchorC';}else{var D=FCKDocumentProcessor_CreateFakeImage('FCK__Anchor',C.cloneNode(true));D.setAttribute('_fckanchor','true',0);C.parentNode.insertBefore(D,C);C.parentNode.removeChild(C);}}}}};var FCKPageBreaksProcessor=FCKDocumentProcessor.AppendNew();FCKPageBreaksProcessor.ProcessDocument=function(A){var B=A.getElementsByTagName('DIV');var C;var i=B.length-1;while (i>=0&&(C=B[i--])){if (C.style.pageBreakAfter=='always'&&C.childNodes.length==1&&C.childNodes[0].style&&C.childNodes[0].style.display=='none'){var D=FCKDocumentProcessor_CreateFakeImage('FCK__PageBreak',C.cloneNode(true));C.parentNode.insertBefore(D,C);C.parentNode.removeChild(C);}}};FCKEmbedAndObjectProcessor=(function(){var A=[];var B=function(el){var C=el.cloneNode(true);var D;var E=D=FCKDocumentProcessor_CreateFakeImage('FCK__UnknownObject',C);FCKEmbedAndObjectProcessor.RefreshView(E,el);for (var i=0;i<A.length;i++) D=A[i](el,D)||D;if (D!=E) FCKTempBin.RemoveElement(E.getAttribute('_fckrealelement'));el.parentNode.replaceChild(D,el);};var F=function(elementName,doc){var G=doc.getElementsByTagName(elementName);for (var i=G.length-1;i>=0;i--) B(G[i]);};var H=function(doc){F('object',doc);F('embed',doc);};return FCKTools.Merge(FCKDocumentProcessor.AppendNew(),{ProcessDocument:function(doc){if (FCKBrowserInfo.IsGecko) FCKTools.RunFunction(H,this,[doc]);else H(doc);},RefreshView:function(placeHolder,original){if (original.getAttribute('width')>0) placeHolder.style.width=FCKTools.ConvertHtmlSizeToStyle(original.getAttribute('width'));if (original.getAttribute('height')>0) placeHolder.style.height=FCKTools.ConvertHtmlSizeToStyle(original.getAttribute('height'));},AddCustomHandler:function(func){A.push(func);}});})();FCK.GetRealElement=function(A){var e=FCKTempBin.Elements[A.getAttribute('_fckrealelement')];if (A.getAttribute('_fckflash')){if (A.style.width.length>0) e.width=FCKTools.ConvertStyleSizeToHtml(A.style.width);if (A.style.height.length>0) e.height=FCKTools.ConvertStyleSizeToHtml(A.style.height);};return e;};if (FCKBrowserInfo.IsIE){FCKDocumentProcessor.AppendNew().ProcessDocument=function(A){var B=A.getElementsByTagName('HR');var C;var i=B.length-1;while (i>=0&&(C=B[i--])){var D=A.createElement('hr');D.mergeAttributes(C,true);FCKDomTools.InsertAfterNode(C,D);C.parentNode.removeChild(C);}}};FCKDocumentProcessor.AppendNew().ProcessDocument=function(A){var B=A.getElementsByTagName('INPUT');var C;var i=B.length-1;while (i>=0&&(C=B[i--])){if (C.type=='hidden'){var D=FCKDocumentProcessor_CreateFakeImage('FCK__InputHidden',C.cloneNode(true));D.setAttribute('_fckinputhidden','true',0);C.parentNode.insertBefore(D,C);C.parentNode.removeChild(C);}}};FCKEmbedAndObjectProcessor.AddCustomHandler(function(A,B){if (!(A.nodeName.IEquals('embed')&&(A.type=='application/x-shockwave-flash'||/\.swf($|#|\?)/i.test(A.src)))) return;B.className='FCK__Flash';B.setAttribute('_fckflash','true',0);});if (FCKBrowserInfo.IsSafari){FCKDocumentProcessor.AppendNew().ProcessDocument=function(A){var B=A.getElementsByClassName?A.getElementsByClassName('Apple-style-span'):Array.prototype.filter.call(A.getElementsByTagName('span'),function(item){ return item.className=='Apple-style-span';});for (var i=B.length-1;i>=0;i--) FCKDomTools.RemoveNode(B[i],true);}};
 var FCKSelection=FCK.Selection={GetParentBlock:function(){var A=this.GetParentElement();while (A){if (FCKListsLib.BlockBoundaries[A.nodeName.toLowerCase()]) break;A=A.parentNode;};return A;},ApplyStyle:function(A){FCKStyles.ApplyStyle(new FCKStyle(A));}};
-FCKSelection.GetType=function(){try{var A=FCKSelection.GetSelection().type;if (A=='Control'||A=='Text') return A;if (this.GetSelection().createRange().parentElement) return 'Text';}catch(e){};return 'None';};FCKSelection.GetSelectedElement=function(){if (this.GetType()=='Control'){var A=this.GetSelection().createRange();if (A&&A.item) return this.GetSelection().createRange().item(0);};return null;};FCKSelection.GetParentElement=function(){switch (this.GetType()){case 'Control':var A=FCKSelection.GetSelectedElement();return A?A.parentElement:null;case 'None':return null;default:return this.GetSelection().createRange().parentElement();}};FCKSelection.GetBoundaryParentElement=function(A){switch (this.GetType()){case 'Control':var B=FCKSelection.GetSelectedElement();return B?B.parentElement:null;case 'None':return null;default:var C=FCK.EditorDocument;var D=C.selection.createRange();D.collapse(A!==false);var B=D.parentElement();return FCKTools.GetElementDocument(B)==C?B:null;}};FCKSelection.SelectNode=function(A){FCK.Focus();this.GetSelection().empty();var B;try{B=FCK.EditorDocument.body.createControlRange();B.addElement(A);}catch(e){B=FCK.EditorDocument.body.createTextRange();B.moveToElementText(A);};B.select();};FCKSelection.Collapse=function(A){FCK.Focus();if (this.GetType()=='Text'){var B=this.GetSelection().createRange();B.collapse(A==null||A===true);B.select();}};FCKSelection.HasAncestorNode=function(A){var B;if (this.GetSelection().type=="Control"){B=this.GetSelectedElement();}else{var C=this.GetSelection().createRange();B=C.parentElement();};while (B){if (B.tagName==A) return true;B=B.parentNode;};return false;};FCKSelection.MoveToAncestorNode=function(A){var B,oRange;if (!FCK.EditorDocument) return null;if (this.GetSelection().type=="Control"){oRange=this.GetSelection().createRange();for (i=0;i<oRange.length;i++){if (oRange(i).parentNode){B=oRange(i).parentNode;break;}}}else{oRange=this.GetSelection().createRange();B=oRange.parentElement();};while (B&&B.nodeName!=A) B=B.parentNode;return B;};FCKSelection.Delete=function(){var A=this.GetSelection();if (A.type.toLowerCase()!="none"){A.clear();};return A;};FCKSelection.GetSelection=function(){this.Restore();return FCK.EditorDocument.selection;};FCKSelection.Save=function(){FCK.Focus();var A=FCK.EditorDocument;if (!A) return;var B=A.selection;var C;if (B){C=B.createRange();if (C){if (C.parentElement&&FCKTools.GetElementDocument(C.parentElement())!=A) C=null;else if (C.item&&FCKTools.GetElementDocument(C.item(0))!=A) C=null;}};this.SelectionData=C;};FCKSelection._GetSelectionDocument=function(A){var B=A.createRange();if (!B) return null;else if (B.item) return FCKTools.GetElementDocument(B.item(0));else return FCKTools.GetElementDocument(B.parentElement());};FCKSelection.Restore=function(){if (this.SelectionData){FCK.IsSelectionChangeLocked=true;try{if (this._GetSelectionDocument(FCK.EditorDocument.selection)==FCK.EditorDocument) return;this.SelectionData.select();}catch (e) {};FCK.IsSelectionChangeLocked=false;}};FCKSelection.Release=function(){delete this.SelectionData;};
-var FCKTableHandler={};FCKTableHandler.InsertRow=function(A){var B=FCKSelection.MoveToAncestorNode('TR');if (!B) return;var C=B.cloneNode(true);B.parentNode.insertBefore(C,B);FCKTableHandler.ClearRow(A?C:B);};FCKTableHandler.DeleteRows=function(A){if (!A){var B=FCKTableHandler.GetSelectedCells();var C=[];for (var i=0;i<B.length;i++){var D=FCKTools.GetElementAscensor(B[i],'TR');C[D.rowIndex]=D;};for (var i=C.length;i>=0;i--){if (C[i]) FCKTableHandler.DeleteRows(C[i]);};return;};var E=FCKTools.GetElementAscensor(A,'TABLE');if (E.rows.length==1){FCKTableHandler.DeleteTable(E);return;};A.parentNode.removeChild(A);};FCKTableHandler.DeleteTable=function(A){if (!A){A=FCKSelection.GetSelectedElement();if (!A||A.tagName!='TABLE') A=FCKSelection.MoveToAncestorNode('TABLE');};if (!A) return;FCKSelection.SelectNode(A);FCKSelection.Collapse();if (A.parentNode.childNodes.length==1) A.parentNode.parentNode.removeChild(A.parentNode);else A.parentNode.removeChild(A);};FCKTableHandler.InsertColumn=function(A){var B=null;var C=this.GetSelectedCells();if (C&&C.length) B=C[A?0:(C.length-1)];if (!B) return;var D=FCKTools.GetElementAscensor(B,'TABLE');var E=B.cellIndex;for (var i=0;i<D.rows.length;i++){var F=D.rows[i];if (F.cells.length<(E+1)) continue;B=F.cells[E].cloneNode(false);if (FCKBrowserInfo.IsGeckoLike) FCKTools.AppendBogusBr(B);var G=F.cells[E];if (A) F.insertBefore(B,G);else if (G.nextSibling) F.insertBefore(B,G.nextSibling);else F.appendChild(B);}};FCKTableHandler.DeleteColumns=function(A){if (!A){var B=FCKTableHandler.GetSelectedCells();for (var i=B.length;i>=0;i--){if (B[i]) FCKTableHandler.DeleteColumns(B[i]);};return;};if (!A) return;var C=FCKTools.GetElementAscensor(A,'TABLE');var D=A.cellIndex;for (var i=C.rows.length-1;i>=0;i--){var E=C.rows[i];if (D==0&&E.cells.length==1){FCKTableHandler.DeleteRows(E);continue;};if (E.cells[D]) E.removeChild(E.cells[D]);}};FCKTableHandler.InsertCell=function(A,B){var C=null;var D=this.GetSelectedCells();if (D&&D.length) C=D[B?0:(D.length-1)];if (!C) return null;var E=FCK.EditorDocument.createElement('TD');if (FCKBrowserInfo.IsGeckoLike) FCKTools.AppendBogusBr(E);if (!B&&C.cellIndex==C.parentNode.cells.length-1) C.parentNode.appendChild(E);else C.parentNode.insertBefore(E,B?C:C.nextSibling);return E;};FCKTableHandler.DeleteCell=function(A){if (A.parentNode.cells.length==1){FCKTableHandler.DeleteRows(FCKTools.GetElementAscensor(A,'TR'));return;};A.parentNode.removeChild(A);};FCKTableHandler.DeleteCells=function(){var A=FCKTableHandler.GetSelectedCells();for (var i=A.length-1;i>=0;i--){FCKTableHandler.DeleteCell(A[i]);}};FCKTableHandler._MarkCells=function(A,B){for (var i=0;i<A.length;i++) A[i][B]=true;};FCKTableHandler._UnmarkCells=function(A,B){for (var i=0;i<A.length;i++){if (FCKBrowserInfo.IsIE) A[i].removeAttribute(B);else delete A[i][B];}};FCKTableHandler._ReplaceCellsByMarker=function(A,B,C){for (var i=0;i<A.length;i++){for (var j=0;j<A[i].length;j++){if (A[i][j][B]) A[i][j]=C;}}};FCKTableHandler._GetMarkerGeometry=function(A,B,C,D){var E=0;var F=0;var G=0;var H=0;for (var i=C;A[B][i]&&A[B][i][D];i++) E++;for (var i=C-1;A[B][i]&&A[B][i][D];i--){E++;G++;};for (var i=B;A[i]&&A[i][C]&&A[i][C][D];i++) F++;for (var i=B-1;A[i]&&A[i][C]&&A[i][C][D];i--){F++;H++;};return { 'width':E,'height':F,'x':G,'y':H };};FCKTableHandler.CheckIsSelectionRectangular=function(){var A=FCKTableHandler.GetSelectedCells();if (A.length<1) return false;this._MarkCells(A,'_CellSelected');var B=this._CreateTableMap(A[0].parentNode.parentNode);var C=A[0].parentNode.rowIndex;var D=this._GetCellIndexSpan(B,C,A[0]);var E=this._GetMarkerGeometry(B,C,D,'_CellSelected');var F=D-E.x;var G=C-E.y;if (E.width>=E.height){for (D=F;D<F+E.width;D++){C=G+(D-F) % E.height;if (!B[C]||!B[C][D]){this._UnmarkCells(A,'_CellSelected');return false;};var g=this._GetMarkerGeometry(B,C,D,'_CellSelected');if (g.width!=E.width||g.height!=E.height){this._UnmarkCells(A,'_CellSelected');return false;}}}else{for (C=G;C<G+E.height;C++){D=F+(C-G) % E.width;if (!B[C]||!B[C][D]){this._UnmarkCells(A,'_CellSelected');return false;};var g=this._GetMarkerGeometry(B,C,D,'_CellSelected');if (g.width!=E.width||g.height!=E.height){this._UnmarkCells(A,'_CellSelected');return false;}}};this._UnmarkCells(A,'_CellSelected');return true;};FCKTableHandler.MergeCells=function(){var A=this.GetSelectedCells();if (A.length<2) return;var B=A[0];var C=this._CreateTableMap(B.parentNode.parentNode);var D=B.parentNode.rowIndex;var E=this._GetCellIndexSpan(C,D,B);this._MarkCells(A,'_SelectedCells');var F=this._GetMarkerGeometry(C,D,E,'_SelectedCells');var G=E-F.x;var H=D-F.y;var I=FCKTools.GetElementDocument(B).createDocumentFragment();for (var i=0;i<F.height;i++){var J=0;for (var j=0;j<F.width;j++){var K=C[H+i][G+j];while (K.childNodes.length>0){var L=K.removeChild(K.firstChild);if (L.nodeType!=1||(L.getAttribute('type',2)!='_moz'&&L.getAttribute('_moz_dirty')!=null)){I.appendChild(L);J++;}}};if (J>0) I.appendChild(FCKTools.GetElementDocument(B).createElement('br'));};this._ReplaceCellsByMarker(C,'_SelectedCells',B);this._UnmarkCells(A,'_SelectedCells');this._InstallTableMap(C,B.parentNode.parentNode);B.appendChild(I);if (FCKBrowserInfo.IsGeckoLike&&(!B.firstChild)) FCKTools.AppendBogusBr(B);this._MoveCaretToCell(B,false);};FCKTableHandler.MergeRight=function(){var A=this.GetMergeRightTarget();if (A==null) return;var B=A.refCell;var C=A.tableMap;var D=A.nextCell;var E=FCK.EditorDocument.createDocumentFragment();while (D&&D.childNodes&&D.childNodes.length>0) E.appendChild(D.removeChild(D.firstChild));D.parentNode.removeChild(D);B.appendChild(E);this._MarkCells([D],'_Replace');this._ReplaceCellsByMarker(C,'_Replace',B);this._InstallTableMap(C,B.parentNode.parentNode);this._MoveCaretToCell(B,false);};FCKTableHandler.MergeDown=function(){var A=this.GetMergeDownTarget();if (A==null) return;var B=A.refCell;var C=A.tableMap;var D=A.nextCell;var E=FCKTools.GetElementDocument(B).createDocumentFragment();while (D&&D.childNodes&&D.childNodes.length>0) E.appendChild(D.removeChild(D.firstChild));if (E.firstChild) E.insertBefore(FCKTools.GetElementDocument(D).createElement('br'),E.firstChild);B.appendChild(E);this._MarkCells([D],'_Replace');this._ReplaceCellsByMarker(C,'_Replace',B);this._InstallTableMap(C,B.parentNode.parentNode);this._MoveCaretToCell(B,false);};FCKTableHandler.HorizontalSplitCell=function(){var A=FCKTableHandler.GetSelectedCells();if (A.length!=1) return;var B=A[0];var C=this._CreateTableMap(B.parentNode.parentNode);var D=B.parentNode.rowIndex;var E=FCKTableHandler._GetCellIndexSpan(C,D,B);var F=isNaN(B.colSpan)?1:B.colSpan;if (F>1){var G=Math.ceil(F/2);var H=FCKTools.GetElementDocument(B).createElement('td');if (FCKBrowserInfo.IsGeckoLike) FCKTools.AppendBogusBr(H);var I=E+G;var J=E+F;var K=isNaN(B.rowSpan)?1:B.rowSpan;for (var r=D;r<D+K;r++){for (var i=I;i<J;i++) C[r][i]=H;}}else{var L=[];for (var i=0;i<C.length;i++){var M=C[i].slice(0,E);if (C[i].length<=E){L.push(M);continue;};if (C[i][E]==B){M.push(B);M.push(FCKTools.GetElementDocument(B).createElement('td'));if (FCKBrowserInfo.IsGeckoLike) FCKTools.AppendBogusBr(M[M.length-1]);}else{M.push(C[i][E]);M.push(C[i][E]);};for (var j=E+1;j<C[i].length;j++) M.push(C[i][j]);L.push(M);};C=L;};this._InstallTableMap(C,B.parentNode.parentNode);};FCKTableHandler.VerticalSplitCell=function(){var A=FCKTableHandler.GetSelectedCells();if (A.length!=1) return;var B=A[0];var C=this._CreateTableMap(B.parentNode.parentNode);var D=FCKTableHandler._GetCellIndexSpan(C,B.parentNode.rowIndex,B);var E=B.rowSpan;var F=B.parentNode.rowIndex;if (isNaN(E)) E=1;if (E>1){B.rowSpan=Math.ceil(E/2);var G=F+Math.ceil(E/2);var H=null;for (var i=D+1;i<C[G].length;i++){if (C[G][i].parentNode.rowIndex==G){H=C[G][i];break;}};var I=FCK.EditorDocument.createElement('td');I.rowSpan=Math.floor(E/2);if (FCKBrowserInfo.IsGeckoLike) FCKTools.AppendBogusBr(I);B.parentNode.parentNode.rows[G].insertBefore(I,H);}else{var G=F+1;var K=FCK.EditorDocument.createElement('tr');B.parentNode.parentNode.insertBefore(K,B.parentNode.parentNode.rows[G]);for (var i=0;i<C[F].length;){var L=C[F][i].colSpan;if (isNaN(L)||L<1) L=1;if (i==D){i+=L;continue;};var M=C[F][i].rowSpan;if (isNaN(M)) M=1;C[F][i].rowSpan=M+1;i+=L;};var I=FCK.EditorDocument.createElement('td');if (FCKBrowserInfo.IsGeckoLike) FCKTools.AppendBogusBr(I);K.appendChild(I);}};FCKTableHandler._GetCellIndexSpan=function(A,B,C){if (A.length<B+1) return null;var D=A[B];for (var c=0;c<D.length;c++){if (D[c]==C) return c;};return null;};FCKTableHandler._GetCellLocation=function(A,B){for (var i=0;i<A.length;i++){for (var c=0;c<A[i].length;c++){if (A[i][c]==B) return [i,c];}};return null;};FCKTableHandler._GetColumnCells=function(A,B){var C=[];for (var r=0;r<A.length;r++){var D=A[r][B];if (D&&(C.length==0||C[C.length-1]!=D)) C[C.length]=D;};return C;};FCKTableHandler._CreateTableMap=function(A){var B=A.rows;var r=-1;var C=[];for (var i=0;i<B.length;i++){r++;if (!C[r]) C[r]=[];var c=-1;for (var j=0;j<B[i].cells.length;j++){var D=B[i].cells[j];c++;while (C[r][c]) c++;var E=isNaN(D.colSpan)?1:D.colSpan;var F=isNaN(D.rowSpan)?1:D.rowSpan;for (var G=0;G<F;G++){if (!C[r+G]) C[r+G]=[];for (var H=0;H<E;H++){C[r+G][c+H]=B[i].cells[j];}};c+=E-1;}};return C;};FCKTableHandler._InstallTableMap=function(A,B){while (B.rows.length>0){var C=B.rows[0];C.parentNode.removeChild(C);};for (var i=0;i<A.length;i++){for (var j=0;j<A[i].length;j++){var D=A[i][j];if (D.parentNode) D.parentNode.removeChild(D);D.colSpan=D.rowSpan=1;}};var E=0;for (var i=0;i<A.length;i++){for (var j=0;j<A[i].length;j++){var D=A[i][j];if (!D) continue;if (j>E) E=j;if (D._colScanned===true) continue;if (A[i][j-1]==D) D.colSpan++;if (A[i][j+1]!=D) D._colScanned=true;}};for (var i=0;i<=E;i++){for (var j=0;j<A.length;j++){if (!A[j]) continue;var D=A[j][i];if (!D||D._rowScanned===true) continue;if (A[j-1]&&A[j-1][i]==D) D.rowSpan++;if (!A[j+1]||A[j+1][i]!=D) D._rowScanned=true;}};for (var i=0;i<A.length;i++){for (var j=0;j<A[i].length;j++){var D=A[i][j];if (FCKBrowserInfo.IsIE){D.removeAttribute('_colScanned');D.removeAttribute('_rowScanned');}else{delete D._colScanned;delete D._rowScanned;}}};for (var i=0;i<A.length;i++){var I=FCKTools.GetElementDocument(B).createElement('tr');for (var j=0;j<A[i].length;){var D=A[i][j];if (A[i-1]&&A[i-1][j]==D){j+=D.colSpan;continue;};I.appendChild(D);j+=D.colSpan;if (D.colSpan==1) D.removeAttribute('colspan');if (D.rowSpan==1) D.removeAttribute('rowspan');};B.appendChild(I);}};FCKTableHandler._MoveCaretToCell=function (A,B){var C=new FCKDomRange(FCK.EditorWindow);C.MoveToNodeContents(A);C.Collapse(B);C.Select();};FCKTableHandler.ClearRow=function(A){var B=A.cells;for (var i=0;i<B.length;i++){B[i].innerHTML='';if (FCKBrowserInfo.IsGeckoLike) FCKTools.AppendBogusBr(B[i]);}};FCKTableHandler.GetMergeRightTarget=function(){var A=this.GetSelectedCells();if (A.length!=1) return null;var B=A[0];var C=this._CreateTableMap(B.parentNode.parentNode);var D=B.parentNode.rowIndex;var E=this._GetCellIndexSpan(C,D,B);var F=E+(isNaN(B.colSpan)?1:B.colSpan);var G=C[D][F];if (!G) return null;this._MarkCells([B,G],'_SizeTest');var H=this._GetMarkerGeometry(C,D,E,'_SizeTest');var I=this._GetMarkerGeometry(C,D,F,'_SizeTest');this._UnmarkCells([B,G],'_SizeTest');if (H.height!=I.height||H.y!=I.y) return null;return { 'refCell':B,'nextCell':G,'tableMap':C };};FCKTableHandler.GetMergeDownTarget=function(){var A=this.GetSelectedCells();if (A.length!=1) return null;var B=A[0];var C=this._CreateTableMap(B.parentNode.parentNode);var D=B.parentNode.rowIndex;var E=this._GetCellIndexSpan(C,D,B);var F=D+(isNaN(B.rowSpan)?1:B.rowSpan);if (!C[F]) return null;var G=C[F][E];if (!G) return null;this._MarkCells([B,G],'_SizeTest');var H=this._GetMarkerGeometry(C,D,E,'_SizeTest');var I=this._GetMarkerGeometry(C,F,E,'_SizeTest');this._UnmarkCells([B,G],'_SizeTest');if (H.width!=I.width||H.x!=I.x) return null;return { 'refCell':B,'nextCell':G,'tableMap':C };};
+FCKSelection.GetType=function(){try{var A=FCKSelection.GetSelection().type;if (A=='Control'||A=='Text') return A;if (this.GetSelection().createRange().parentElement) return 'Text';}catch(e){};return 'None';};FCKSelection.GetSelectedElement=function(){if (this.GetType()=='Control'){var A=this.GetSelection().createRange();if (A&&A.item) return this.GetSelection().createRange().item(0);};return null;};FCKSelection.GetParentElement=function(){switch (this.GetType()){case 'Control':var A=FCKSelection.GetSelectedElement();return A?A.parentElement:null;case 'None':return null;default:return this.GetSelection().createRange().parentElement();}};FCKSelection.GetBoundaryParentElement=function(A){switch (this.GetType()){case 'Control':var B=FCKSelection.GetSelectedElement();return B?B.parentElement:null;case 'None':return null;default:var C=FCK.EditorDocument;var D=C.selection.createRange();D.collapse(A!==false);var B=D.parentElement();return FCKTools.GetElementDocument(B)==C?B:null;}};FCKSelection.SelectNode=function(A){FCK.Focus();this.GetSelection().empty();var B;try{B=FCK.EditorDocument.body.createControlRange();B.addElement(A);}catch(e){B=FCK.EditorDocument.body.createTextRange();B.moveToElementText(A);};B.select();};FCKSelection.Collapse=function(A){FCK.Focus();if (this.GetType()=='Text'){var B=this.GetSelection().createRange();B.collapse(A==null||A===true);B.select();}};FCKSelection.HasAncestorNode=function(A){var B;if (this.GetSelection().type=="Control"){B=this.GetSelectedElement();}else{var C=this.GetSelection().createRange();B=C.parentElement();}while (B){if (B.nodeName.IEquals(A)) return true;B=B.parentNode;};return false;};FCKSelection.MoveToAncestorNode=function(A){var B,oRange;if (!FCK.EditorDocument) return null;if (this.GetSelection().type=="Control"){oRange=this.GetSelection().createRange();for (i=0;i<oRange.length;i++){if (oRange(i).parentNode){B=oRange(i).parentNode;break;}}}else{oRange=this.GetSelection().createRange();B=oRange.parentElement();}while (B&&B.nodeName!=A) B=B.parentNode;return B;};FCKSelection.Delete=function(){var A=this.GetSelection();if (A.type.toLowerCase()!="none"){A.clear();};return A;};FCKSelection.GetSelection=function(){this.Restore();return FCK.EditorDocument.selection;};FCKSelection.Save=function(A){if (!A) FCK.Focus();var B=FCK.EditorDocument;if (!B) return;var C=B.selection;var D;if (C){D=C.createRange();if (D){if (D.parentElement&&FCKTools.GetElementDocument(D.parentElement())!=B) D=null;else if (D.item&&FCKTools.GetElementDocument(D.item(0))!=B) D=null;}};this.SelectionData=D;};FCKSelection._GetSelectionDocument=function(A){var B=A.createRange();if (!B) return null;else if (B.item) return FCKTools.GetElementDocument(B.item(0));else return FCKTools.GetElementDocument(B.parentElement());};FCKSelection.Restore=function(){if (this.SelectionData){FCK.IsSelectionChangeLocked=true;try{if (String(this._GetSelectionDocument(FCK.EditorDocument.selection).body.contentEditable)=='true'){FCK.IsSelectionChangeLocked=false;return;};this.SelectionData.select();}catch (e) {};FCK.IsSelectionChangeLocked=false;}};FCKSelection.Release=function(){delete this.SelectionData;};
+var FCKTableHandler={};FCKTableHandler.InsertRow=function(A){var B=FCKSelection.MoveToAncestorNode('TR');if (!B) return;var C=B.cloneNode(true);B.parentNode.insertBefore(C,B);FCKTableHandler.ClearRow(A?C:B);};FCKTableHandler.DeleteRows=function(A){if (!A){var B=FCKTableHandler.GetSelectedCells();var C=[];for (var i=0;i<B.length;i++){var D=FCKTools.GetElementAscensor(B[i],'TR');C[D.rowIndex]=D;};for (var i=C.length;i>=0;i--){if (C[i]) FCKTableHandler.DeleteRows(C[i]);};return;};var E=FCKTools.GetElementAscensor(A,'TABLE');if (E.rows.length==1){FCKTableHandler.DeleteTable(E);return;};A.parentNode.removeChild(A);};FCKTableHandler.DeleteTable=function(A){if (!A){A=FCKSelection.GetSelectedElement();if (!A||A.tagName!='TABLE') A=FCKSelection.MoveToAncestorNode('TABLE');};if (!A) return;FCKSelection.SelectNode(A);FCKSelection.Collapse();if (A.parentNode.childNodes.length==1) A.parentNode.parentNode.removeChild(A.parentNode);else A.parentNode.removeChild(A);};FCKTableHandler.InsertColumn=function(A){var B=null;var C=this.GetSelectedCells();if (C&&C.length) B=C[A?0:(C.length-1)];if (!B) return;var D=FCKTools.GetElementAscensor(B,'TABLE');var E=B.cellIndex;for (var i=0;i<D.rows.length;i++){var F=D.rows[i];if (F.cells.length<(E+1)) continue;B=F.cells[E].cloneNode(false);if (FCKBrowserInfo.IsGeckoLike) FCKTools.AppendBogusBr(B);var G=F.cells[E];if (A) F.insertBefore(B,G);else if (G.nextSibling) F.insertBefore(B,G.nextSibling);else F.appendChild(B);}};FCKTableHandler.DeleteColumns=function(A){if (!A){var B=FCKTableHandler.GetSelectedCells();for (var i=B.length;i>=0;i--){if (B[i]) FCKTableHandler.DeleteColumns(B[i]);};return;};if (!A) return;var C=FCKTools.GetElementAscensor(A,'TABLE');var D=A.cellIndex;for (var i=C.rows.length-1;i>=0;i--){var E=C.rows[i];if (D==0&&E.cells.length==1){FCKTableHandler.DeleteRows(E);continue;};if (E.cells[D]) E.removeChild(E.cells[D]);}};FCKTableHandler.InsertCell=function(A,B){var C=null;var D=this.GetSelectedCells();if (D&&D.length) C=D[B?0:(D.length-1)];if (!C) return null;var E=FCK.EditorDocument.createElement('TD');if (FCKBrowserInfo.IsGeckoLike) FCKTools.AppendBogusBr(E);if (!B&&C.cellIndex==C.parentNode.cells.length-1) C.parentNode.appendChild(E);else C.parentNode.insertBefore(E,B?C:C.nextSibling);return E;};FCKTableHandler.DeleteCell=function(A){if (A.parentNode.cells.length==1){FCKTableHandler.DeleteRows(FCKTools.GetElementAscensor(A,'TR'));return;};A.parentNode.removeChild(A);};FCKTableHandler.DeleteCells=function(){var A=FCKTableHandler.GetSelectedCells();for (var i=A.length-1;i>=0;i--){FCKTableHandler.DeleteCell(A[i]);}};FCKTableHandler._MarkCells=function(A,B){for (var i=0;i<A.length;i++) A[i][B]=true;};FCKTableHandler._UnmarkCells=function(A,B){for (var i=0;i<A.length;i++){if (FCKBrowserInfo.IsIE) A[i].removeAttribute(B);else delete A[i][B];}};FCKTableHandler._ReplaceCellsByMarker=function(A,B,C){for (var i=0;i<A.length;i++){for (var j=0;j<A[i].length;j++){if (A[i][j][B]) A[i][j]=C;}}};FCKTableHandler._GetMarkerGeometry=function(A,B,C,D){var E=0;var F=0;var G=0;var H=0;for (var i=C;A[B][i]&&A[B][i][D];i++) E++;for (var i=C-1;A[B][i]&&A[B][i][D];i--){E++;G++;};for (var i=B;A[i]&&A[i][C]&&A[i][C][D];i++) F++;for (var i=B-1;A[i]&&A[i][C]&&A[i][C][D];i--){F++;H++;};return { 'width':E,'height':F,'x':G,'y':H };};FCKTableHandler.CheckIsSelectionRectangular=function(){var A=FCKTableHandler.GetSelectedCells();if (A.length<1) return false;this._MarkCells(A,'_CellSelected');var B=this._CreateTableMap(A[0].parentNode.parentNode);var C=A[0].parentNode.rowIndex;var D=this._GetCellIndexSpan(B,C,A[0]);var E=this._GetMarkerGeometry(B,C,D,'_CellSelected');var F=D-E.x;var G=C-E.y;if (E.width>=E.height){for (D=F;D<F+E.width;D++){C=G+(D-F) % E.height;if (!B[C]||!B[C][D]){this._UnmarkCells(A,'_CellSelected');return false;};var g=this._GetMarkerGeometry(B,C,D,'_CellSelected');if (g.width!=E.width||g.height!=E.height){this._UnmarkCells(A,'_CellSelected');return false;}}}else{for (C=G;C<G+E.height;C++){D=F+(C-G) % E.width;if (!B[C]||!B[C][D]){this._UnmarkCells(A,'_CellSelected');return false;};var g=this._GetMarkerGeometry(B,C,D,'_CellSelected');if (g.width!=E.width||g.height!=E.height){this._UnmarkCells(A,'_CellSelected');return false;}}};this._UnmarkCells(A,'_CellSelected');return true;};FCKTableHandler.MergeCells=function(){var A=this.GetSelectedCells();if (A.length<2) return;var B=A[0];var C=this._CreateTableMap(B.parentNode.parentNode);var D=B.parentNode.rowIndex;var E=this._GetCellIndexSpan(C,D,B);this._MarkCells(A,'_SelectedCells');var F=this._GetMarkerGeometry(C,D,E,'_SelectedCells');var G=E-F.x;var H=D-F.y;var I=FCKTools.GetElementDocument(B).createDocumentFragment();for (var i=0;i<F.height;i++){var J=0;for (var j=0;j<F.width;j++){var K=C[H+i][G+j];while (K.childNodes.length>0){var L=K.removeChild(K.firstChild);if (L.nodeType!=1||(L.getAttribute('type',2)!='_moz'&&L.getAttribute('_moz_dirty')!=null)){I.appendChild(L);J++;}}};if (J>0) I.appendChild(FCKTools.GetElementDocument(B).createElement('br'));};this._ReplaceCellsByMarker(C,'_SelectedCells',B);this._UnmarkCells(A,'_SelectedCells');this._InstallTableMap(C,B.parentNode.parentNode);B.appendChild(I);if (FCKBrowserInfo.IsGeckoLike&&(!B.firstChild)) FCKTools.AppendBogusBr(B);this._MoveCaretToCell(B,false);};FCKTableHandler.MergeRight=function(){var A=this.GetMergeRightTarget();if (A==null) return;var B=A.refCell;var C=A.tableMap;var D=A.nextCell;var E=FCK.EditorDocument.createDocumentFragment();while (D&&D.childNodes&&D.childNodes.length>0) E.appendChild(D.removeChild(D.firstChild));D.parentNode.removeChild(D);B.appendChild(E);this._MarkCells([D],'_Replace');this._ReplaceCellsByMarker(C,'_Replace',B);this._InstallTableMap(C,B.parentNode.parentNode);this._MoveCaretToCell(B,false);};FCKTableHandler.MergeDown=function(){var A=this.GetMergeDownTarget();if (A==null) return;var B=A.refCell;var C=A.tableMap;var D=A.nextCell;var E=FCKTools.GetElementDocument(B).createDocumentFragment();while (D&&D.childNodes&&D.childNodes.length>0) E.appendChild(D.removeChild(D.firstChild));if (E.firstChild) E.insertBefore(FCKTools.GetElementDocument(D).createElement('br'),E.firstChild);B.appendChild(E);this._MarkCells([D],'_Replace');this._ReplaceCellsByMarker(C,'_Replace',B);this._InstallTableMap(C,B.parentNode.parentNode);this._MoveCaretToCell(B,false);};FCKTableHandler.HorizontalSplitCell=function(){var A=FCKTableHandler.GetSelectedCells();if (A.length!=1) return;var B=A[0];var C=this._CreateTableMap(B.parentNode.parentNode);var D=B.parentNode.rowIndex;var E=FCKTableHandler._GetCellIndexSpan(C,D,B);var F=isNaN(B.colSpan)?1:B.colSpan;if (F>1){var G=Math.ceil(F/2);var H=FCKTools.GetElementDocument(B).createElement('td');if (FCKBrowserInfo.IsGeckoLike) FCKTools.AppendBogusBr(H);var I=E+G;var J=E+F;var K=isNaN(B.rowSpan)?1:B.rowSpan;for (var r=D;r<D+K;r++){for (var i=I;i<J;i++) C[r][i]=H;}}else{var L=[];for (var i=0;i<C.length;i++){var M=C[i].slice(0,E);if (C[i].length<=E){L.push(M);continue;};if (C[i][E]==B){M.push(B);M.push(FCKTools.GetElementDocument(B).createElement('td'));if (FCKBrowserInfo.IsGeckoLike) FCKTools.AppendBogusBr(M[M.length-1]);}else{M.push(C[i][E]);M.push(C[i][E]);};for (var j=E+1;j<C[i].length;j++) M.push(C[i][j]);L.push(M);};C=L;};this._InstallTableMap(C,B.parentNode.parentNode);};FCKTableHandler.VerticalSplitCell=function(){var A=FCKTableHandler.GetSelectedCells();if (A.length!=1) return;var B=A[0];var C=this._CreateTableMap(B.parentNode.parentNode);var D=FCKTableHandler._GetCellIndexSpan(C,B.parentNode.rowIndex,B);var E=B.rowSpan;var F=B.parentNode.rowIndex;if (isNaN(E)) E=1;if (E>1){B.rowSpan=Math.ceil(E/2);var G=F+Math.ceil(E/2);var H=null;for (var i=D+1;i<C[G].length;i++){if (C[G][i].parentNode.rowIndex==G){H=C[G][i];break;}};var I=FCK.EditorDocument.createElement('td');I.rowSpan=Math.floor(E/2);if (FCKBrowserInfo.IsGeckoLike) FCKTools.AppendBogusBr(I);B.parentNode.parentNode.rows[G].insertBefore(I,H);}else{var G=F+1;var K=FCK.EditorDocument.createElement('tr');var L=B.parentNode.parentNode;if (L.rows.length>G) L.insertBefore(K,L.rows[G]);else L.appendChild(K);for (var i=0;i<C[F].length;){var M=C[F][i].colSpan;if (isNaN(M)||M<1) M=1;if (i==D){i+=M;continue;};var N=C[F][i].rowSpan;if (isNaN(N)) N=1;C[F][i].rowSpan=N+1;i+=M;};var I=FCK.EditorDocument.createElement('td');if (FCKBrowserInfo.IsGeckoLike) FCKTools.AppendBogusBr(I);K.appendChild(I);}};FCKTableHandler._GetCellIndexSpan=function(A,B,C){if (A.length<B+1) return null;var D=A[B];for (var c=0;c<D.length;c++){if (D[c]==C) return c;};return null;};FCKTableHandler._GetCellLocation=function(A,B){for (var i=0;i<A.length;i++){for (var c=0;c<A[i].length;c++){if (A[i][c]==B) return [i,c];}};return null;};FCKTableHandler._GetColumnCells=function(A,B){var C=[];for (var r=0;r<A.length;r++){var D=A[r][B];if (D&&(C.length==0||C[C.length-1]!=D)) C[C.length]=D;};return C;};FCKTableHandler._CreateTableMap=function(A){var B=A.rows;var r=-1;var C=[];for (var i=0;i<B.length;i++){r++;if (!C[r]) C[r]=[];var c=-1;for (var j=0;j<B[i].cells.length;j++){var D=B[i].cells[j];c++;while (C[r][c]) c++;var E=isNaN(D.colSpan)?1:D.colSpan;var F=isNaN(D.rowSpan)?1:D.rowSpan;for (var G=0;G<F;G++){if (!C[r+G]) C[r+G]=[];for (var H=0;H<E;H++){C[r+G][c+H]=B[i].cells[j];}};c+=E-1;}};return C;};FCKTableHandler._InstallTableMap=function(A,B){var C=FCKBrowserInfo.IsIE?"_fckrowspan":"rowSpan";while (B.rows.length>0){var D=B.rows[0];D.parentNode.removeChild(D);};for (var i=0;i<A.length;i++){for (var j=0;j<A[i].length;j++){var E=A[i][j];if (E.parentNode) E.parentNode.removeChild(E);E.colSpan=E[C]=1;}};var F=0;for (var i=0;i<A.length;i++){for (var j=0;j<A[i].length;j++){var E=A[i][j];if (!E) continue;if (j>F) F=j;if (E._colScanned===true) continue;if (A[i][j-1]==E) E.colSpan++;if (A[i][j+1]!=E) E._colScanned=true;}};for (var i=0;i<=F;i++){for (var j=0;j<A.length;j++){if (!A[j]) continue;var E=A[j][i];if (!E||E._rowScanned===true) continue;if (A[j-1]&&A[j-1][i]==E) E[C]++;if (!A[j+1]||A[j+1][i]!=E) E._rowScanned=true;}};for (var i=0;i<A.length;i++){for (var j=0;j<A[i].length;j++){var E=A[i][j];if (FCKBrowserInfo.IsIE){E.removeAttribute('_colScanned');E.removeAttribute('_rowScanned');}else{delete E._colScanned;delete E._rowScanned;}}};for (var i=0;i<A.length;i++){var J=FCKTools.GetElementDocument(B).createElement('tr');for (var j=0;j<A[i].length;){var E=A[i][j];if (A[i-1]&&A[i-1][j]==E){j+=E.colSpan;continue;};J.appendChild(E);if (C!='rowSpan'){E.rowSpan=E[C];E.removeAttribute(C);};j+=E.colSpan;if (E.colSpan==1) E.removeAttribute('colspan');if (E.rowSpan==1) E.removeAttribute('rowspan');};B.appendChild(J);}};FCKTableHandler._MoveCaretToCell=function (A,B){var C=new FCKDomRange(FCK.EditorWindow);C.MoveToNodeContents(A);C.Collapse(B);C.Select();};FCKTableHandler.ClearRow=function(A){var B=A.cells;for (var i=0;i<B.length;i++){B[i].innerHTML='';if (FCKBrowserInfo.IsGeckoLike) FCKTools.AppendBogusBr(B[i]);}};FCKTableHandler.GetMergeRightTarget=function(){var A=this.GetSelectedCells();if (A.length!=1) return null;var B=A[0];var C=this._CreateTableMap(B.parentNode.parentNode);var D=B.parentNode.rowIndex;var E=this._GetCellIndexSpan(C,D,B);var F=E+(isNaN(B.colSpan)?1:B.colSpan);var G=C[D][F];if (!G) return null;this._MarkCells([B,G],'_SizeTest');var H=this._GetMarkerGeometry(C,D,E,'_SizeTest');var I=this._GetMarkerGeometry(C,D,F,'_SizeTest');this._UnmarkCells([B,G],'_SizeTest');if (H.height!=I.height||H.y!=I.y) return null;return { 'refCell':B,'nextCell':G,'tableMap':C };};FCKTableHandler.GetMergeDownTarget=function(){var A=this.GetSelectedCells();if (A.length!=1) return null;var B=A[0];var C=this._CreateTableMap(B.parentNode.parentNode);var D=B.parentNode.rowIndex;var E=this._GetCellIndexSpan(C,D,B);var F=D+(isNaN(B.rowSpan)?1:B.rowSpan);if (!C[F]) return null;var G=C[F][E];if (!G) return null;this._MarkCells([B,G],'_SizeTest');var H=this._GetMarkerGeometry(C,D,E,'_SizeTest');var I=this._GetMarkerGeometry(C,F,E,'_SizeTest');this._UnmarkCells([B,G],'_SizeTest');if (H.width!=I.width||H.x!=I.x) return null;return { 'refCell':B,'nextCell':G,'tableMap':C };};
 FCKTableHandler.GetSelectedCells=function(){if (FCKSelection.GetType()=='Control'){var A=FCKSelection.MoveToAncestorNode('TD');return A?[A]:[];};var B=[];var C=FCKSelection.GetSelection().createRange();var D=FCKSelection.GetParentElement();if (D&&D.tagName.Equals('TD','TH')) B[0]=D;else{D=FCKSelection.MoveToAncestorNode('TABLE');if (D){for (var i=0;i<D.cells.length;i++){var E=FCK.EditorDocument.body.createTextRange();E.moveToElementText(D.cells[i]);if (C.inRange(E)||(C.compareEndPoints('StartToStart',E)>=0&&C.compareEndPoints('StartToEnd',E)<=0)||(C.compareEndPoints('EndToStart',E)>=0&&C.compareEndPoints('EndToEnd',E)<=0)){B[B.length]=D.cells[i];}}}};return B;};
 var FCKXml=function(){this.Error=false;};FCKXml.GetAttribute=function(A,B,C){var D=A.attributes.getNamedItem(B);return D?D.value:C;};FCKXml.TransformToObject=function(A){if (!A) return null;var B={};var C=A.attributes;for (var i=0;i<C.length;i++){var D=C[i];B[D.name]=D.value;};var E=A.childNodes;for (i=0;i<E.length;i++){var F=E[i];if (F.nodeType==1){var G='$'+F.nodeName;var H=B[G];if (!H) H=B[G]=[];H.push(this.TransformToObject(F));}};return B;};
-FCKXml.prototype={LoadUrl:function(A){this.Error=false;var B=FCKTools.CreateXmlObject('XmlHttp');if (!B){this.Error=true;return;};B.open("GET",A,false);B.send(null);if (B.status==200||B.status==304) this.DOMDocument=B.responseXML;else if (B.status==0&&B.readyState==4){this.DOMDocument=FCKTools.CreateXmlObject('DOMDocument');this.DOMDocument.async=false;this.DOMDocument.resolveExternals=false;this.DOMDocument.loadXML(B.responseText);}else{this.DOMDocument=null;};if (this.DOMDocument==null||this.DOMDocument.firstChild==null){this.Error=true;if (window.confirm('Error loading "'+A+'"\r\nDo you want to see more info?')) alert('URL requested: "'+A+'"\r\nServer response:\r\nStatus: '+B.status+'\r\nResponse text:\r\n'+B.responseText);}},SelectNodes:function(A,B){if (this.Error) return [];if (B) return B.selectNodes(A);else return this.DOMDocument.selectNodes(A);},SelectSingleNode:function(A,B){if (this.Error) return null;if (B) return B.selectSingleNode(A);else return this.DOMDocument.selectSingleNode(A);}};
+FCKXml.prototype={LoadUrl:function(A){this.Error=false;var B=FCKTools.CreateXmlObject('XmlHttp');if (!B){this.Error=true;return;};B.open("GET",A,false);B.send(null);if (B.status==200||B.status==304||(B.status==0&&B.readyState==4)){this.DOMDocument=B.responseXML;if (!this.DOMDocument||this.DOMDocument.firstChild==null){this.DOMDocument=FCKTools.CreateXmlObject('DOMDocument');this.DOMDocument.async=false;this.DOMDocument.resolveExternals=false;this.DOMDocument.loadXML(B.responseText);}}else{this.DOMDocument=null;};if (this.DOMDocument==null||this.DOMDocument.firstChild==null){this.Error=true;if (window.confirm('Error loading "'+A+'"\r\nDo you want to see more info?')) alert('URL requested: "'+A+'"\r\nServer response:\r\nStatus: '+B.status+'\r\nResponse text:\r\n'+B.responseText);}},SelectNodes:function(A,B){if (this.Error) return [];if (B) return B.selectNodes(A);else return this.DOMDocument.selectNodes(A);},SelectSingleNode:function(A,B){if (this.Error) return null;if (B) return B.selectSingleNode(A);else return this.DOMDocument.selectSingleNode(A);}};
 var FCKNamedCommand=function(A){this.Name=A;};FCKNamedCommand.prototype.Execute=function(){FCK.ExecuteNamedCommand(this.Name);};FCKNamedCommand.prototype.GetState=function(){if (FCK.EditMode!=0) return -1;return FCK.GetNamedCommandState(this.Name);};
 var FCKStyleCommand=function(){};FCKStyleCommand.prototype={Name:'Style',Execute:function(A,B){FCKUndo.SaveUndoStep();if (B.Selected) FCK.Styles.RemoveStyle(B.Style);else FCK.Styles.ApplyStyle(B.Style);FCKUndo.SaveUndoStep();FCK.Focus();FCK.Events.FireEvent('OnSelectionChange');},GetState:function(){if (FCK.EditMode!=0||!FCK.EditorDocument) return -1;if (FCKSelection.GetType()=='Control'){var A=FCKSelection.GetSelectedElement();if (!A||!FCKStyles.CheckHasObjectStyle(A.nodeName.toLowerCase())) return -1;};return 0;}};
-var FCKDialogCommand=function(A,B,C,D,E,F,G,H){this.Name=A;this.Title=B;this.Url=C;this.Width=D;this.Height=E;this.CustomValue=H;this.GetStateFunction=F;this.GetStateParam=G;this.Resizable=false;};FCKDialogCommand.prototype.Execute=function(){FCKDialog.OpenDialog('FCKDialog_'+this.Name,this.Title,this.Url,this.Width,this.Height,this.CustomValue,null,this.Resizable);};FCKDialogCommand.prototype.GetState=function(){if (this.GetStateFunction) return this.GetStateFunction(this.GetStateParam);else return FCK.EditMode==0?0:-1;};var FCKUndefinedCommand=function(){this.Name='Undefined';};FCKUndefinedCommand.prototype.Execute=function(){alert(FCKLang.NotImplemented);};FCKUndefinedCommand.prototype.GetState=function(){return 0;};var FCKFormatBlockCommand=function(){};FCKFormatBlockCommand.prototype={Name:'FormatBlock',Execute:FCKStyleCommand.prototype.Execute,GetState:function(){return FCK.EditorDocument?0:-1;}};var FCKFontNameCommand=function(){};FCKFontNameCommand.prototype={Name:'FontName',Execute:FCKStyleCommand.prototype.Execute,GetState:FCKFormatBlockCommand.prototype.GetState};var FCKFontSizeCommand=function(){};FCKFontSizeCommand.prototype={Name:'FontSize',Execute:FCKStyleCommand.prototype.Execute,GetState:FCKFormatBlockCommand.prototype.GetState};var FCKPreviewCommand=function(){this.Name='Preview';};FCKPreviewCommand.prototype.Execute=function(){FCK.Preview();};FCKPreviewCommand.prototype.GetState=function(){return 0;};var FCKSaveCommand=function(){this.Name='Save';};FCKSaveCommand.prototype.Execute=function(){var A=FCK.GetParentForm();if (typeof(A.onsubmit)=='function'){var B=A.onsubmit();if (B!=null&&B===false) return;};if (typeof(A.submit)=='function') A.submit();else A.submit.click();};FCKSaveCommand.prototype.GetState=function(){return 0;};var FCKNewPageCommand=function(){this.Name='NewPage';};FCKNewPageCommand.prototype.Execute=function(){FCKUndo.SaveUndoStep();FCK.SetData('');FCKUndo.Typing=true;FCK.Focus();};FCKNewPageCommand.prototype.GetState=function(){return 0;};var FCKSourceCommand=function(){this.Name='Source';};FCKSourceCommand.prototype.Execute=function(){if (FCKConfig.SourcePopup){var A=FCKConfig.ScreenWidth*0.65;var B=FCKConfig.ScreenHeight*0.65;FCKDialog.OpenDialog('FCKDialog_Source',FCKLang.Source,'dialog/fck_source.html',A,B,null,null,true);}else FCK.SwitchEditMode();};FCKSourceCommand.prototype.GetState=function(){return (FCK.EditMode==0?0:1);};var FCKUndoCommand=function(){this.Name='Undo';};FCKUndoCommand.prototype.Execute=function(){FCKUndo.Undo();};FCKUndoCommand.prototype.GetState=function(){if (FCK.EditMode!=0) return -1;return (FCKUndo.CheckUndoState()?0:-1);};var FCKRedoCommand=function(){this.Name='Redo';};FCKRedoCommand.prototype.Execute=function(){FCKUndo.Redo();};FCKRedoCommand.prototype.GetState=function(){if (FCK.EditMode!=0) return -1;return (FCKUndo.CheckRedoState()?0:-1);};var FCKPageBreakCommand=function(){this.Name='PageBreak';};FCKPageBreakCommand.prototype.Execute=function(){FCKUndo.SaveUndoStep();var e=FCK.EditorDocument.createElement('DIV');e.style.pageBreakAfter='always';e.innerHTML='<span style="DISPLAY:none">&nbsp;</span>';var A=FCKDocumentProcessor_CreateFakeImage('FCK__PageBreak',e);var B=new FCKDomRange(FCK.EditorWindow);B.MoveToSelection();var C=B.SplitBlock();B.InsertNode(A);FCK.Events.FireEvent('OnSelectionChange');};FCKPageBreakCommand.prototype.GetState=function(){if (FCK.EditMode!=0) return -1;return 0;};var FCKUnlinkCommand=function(){this.Name='Unlink';};FCKUnlinkCommand.prototype.Execute=function(){FCKUndo.SaveUndoStep();if (FCKBrowserInfo.IsGeckoLike){var A=FCK.Selection.MoveToAncestorNode('A');if (A) FCKTools.RemoveOuterTags(A);return;};FCK.ExecuteNamedCommand(this.Name);};FCKUnlinkCommand.prototype.GetState=function(){if (FCK.EditMode!=0) return -1;var A=FCK.GetNamedCommandState(this.Name);if (A==0&&FCK.EditMode==0){var B=FCKSelection.MoveToAncestorNode('A');var C=(B&&B.name.length>0&&B.href.length==0);if (C) A=-1;};return A;};var FCKSelectAllCommand=function(){this.Name='SelectAll';};FCKSelectAllCommand.prototype.Execute=function(){if (FCK.EditMode==0){FCK.ExecuteNamedCommand('SelectAll');}else{var A=FCK.EditingArea.Textarea;if (FCKBrowserInfo.IsIE){A.createTextRange().execCommand('SelectAll');}else{A.selectionStart=0;A.selectionEnd=A.value.length;};A.focus();}};FCKSelectAllCommand.prototype.GetState=function(){if (FCK.EditMode!=0) return -1;return 0;};var FCKPasteCommand=function(){this.Name='Paste';};FCKPasteCommand.prototype={Execute:function(){if (FCKBrowserInfo.IsIE) FCK.Paste();else FCK.ExecuteNamedCommand('Paste');},GetState:function(){if (FCK.EditMode!=0) return -1;return FCK.GetNamedCommandState('Paste');}};var FCKRuleCommand=function(){this.Name='Rule';};FCKRuleCommand.prototype={Execute:function(){FCKUndo.SaveUndoStep();FCK.InsertElement('hr');},GetState:function(){if (FCK.EditMode!=0) return -1;return FCK.GetNamedCommandState('InsertHorizontalRule');}};var FCKCutCopyCommand=function(A){this.Name=A?'Cut':'Copy';};FCKCutCopyCommand.prototype={Execute:function(){var A=false;if (FCKBrowserInfo.IsIE){var B=function(){A=true;};var C='on'+this.Name.toLowerCase();FCK.EditorDocument.body.attachEvent(C,B);FCK.ExecuteNamedCommand(this.Name);FCK.EditorDocument.body.detachEvent(C,B);}else{try{FCK.ExecuteNamedCommand(this.Name);A=true;}catch(e){}};if (!A) alert(FCKLang['PasteError'+this.Name]);},GetState:function(){return FCK.EditMode!=0?-1:FCK.GetNamedCommandState('Cut');}};var FCKAnchorDeleteCommand=function(){this.Name='AnchorDelete';};FCKAnchorDeleteCommand.prototype={Execute:function(){if (FCK.Selection.GetType()=='Control'){FCK.Selection.Delete();}else{var A=FCK.Selection.GetSelectedElement();if (A){if (A.tagName=='IMG'&&A.getAttribute('_fckanchor')) oAnchor=FCK.GetRealElement(A);else A=null;};if (!A){oAnchor=FCK.Selection.MoveToAncestorNode('A');if (oAnchor) FCK.Selection.SelectNode(oAnchor);};if (oAnchor.href.length!=0){oAnchor.removeAttribute('name');if (FCKBrowserInfo.IsIE) oAnchor.className=oAnchor.className.replace(FCKRegexLib.FCK_Class,'');return;};if (A){A.parentNode.removeChild(A);return;};if (oAnchor.innerHTML.length==0){oAnchor.parentNode.removeChild(oAnchor);return;};FCKTools.RemoveOuterTags(oAnchor);};if (FCKBrowserInfo.IsGecko) FCK.Selection.Collapse(true);},GetState:function(){if (FCK.EditMode!=0) return -1;return FCK.GetNamedCommandState('Unlink');}};
-var FCKShowBlockCommand=function(A,B){this.Name=A;if (B!=undefined) this._SavedState=B;else this._SavedState=null;};FCKShowBlockCommand.prototype.Execute=function(){var A=this.GetState();if (A==-1) return;var B=FCK.EditorDocument.body;if (A==1) B.className=B.className.replace(/(^| )FCK__ShowBlocks/g,'');else B.className+=' FCK__ShowBlocks';FCK.Events.FireEvent('OnSelectionChange');};FCKShowBlockCommand.prototype.GetState=function(){if (FCK.EditMode!=0) return -1;if (!FCK.EditorDocument) return 0;if (/FCK__ShowBlocks(?:\s|$)/.test(FCK.EditorDocument.body.className)) return 1;return 0;};FCKShowBlockCommand.prototype.SaveState=function(){this._SavedState=this.GetState();};FCKShowBlockCommand.prototype.RestoreState=function(){if (this._SavedState!=null&&this.GetState()!=this._SavedState) this.Execute();};
+var FCKDialogCommand=function(A,B,C,D,E,F,G,H){this.Name=A;this.Title=B;this.Url=C;this.Width=D;this.Height=E;this.CustomValue=H;this.GetStateFunction=F;this.GetStateParam=G;this.Resizable=false;};FCKDialogCommand.prototype.Execute=function(){FCKDialog.OpenDialog('FCKDialog_'+this.Name,this.Title,this.Url,this.Width,this.Height,this.CustomValue,null,this.Resizable);};FCKDialogCommand.prototype.GetState=function(){if (this.GetStateFunction) return this.GetStateFunction(this.GetStateParam);else return FCK.EditMode==0?0:-1;};var FCKUndefinedCommand=function(){this.Name='Undefined';};FCKUndefinedCommand.prototype.Execute=function(){alert(FCKLang.NotImplemented);};FCKUndefinedCommand.prototype.GetState=function(){return 0;};var FCKFormatBlockCommand=function(){};FCKFormatBlockCommand.prototype={Name:'FormatBlock',Execute:FCKStyleCommand.prototype.Execute,GetState:function(){return FCK.EditorDocument?0:-1;}};var FCKFontNameCommand=function(){};FCKFontNameCommand.prototype={Name:'FontName',Execute:FCKStyleCommand.prototype.Execute,GetState:FCKFormatBlockCommand.prototype.GetState};var FCKFontSizeCommand=function(){};FCKFontSizeCommand.prototype={Name:'FontSize',Execute:FCKStyleCommand.prototype.Execute,GetState:FCKFormatBlockCommand.prototype.GetState};var FCKPreviewCommand=function(){this.Name='Preview';};FCKPreviewCommand.prototype.Execute=function(){FCK.Preview();};FCKPreviewCommand.prototype.GetState=function(){return 0;};var FCKSaveCommand=function(){this.Name='Save';};FCKSaveCommand.prototype.Execute=function(){var A=FCK.GetParentForm();if (typeof(A.onsubmit)=='function'){var B=A.onsubmit();if (B!=null&&B===false) return;};if (typeof(A.submit)=='function') A.submit();else A.submit.click();};FCKSaveCommand.prototype.GetState=function(){return 0;};var FCKNewPageCommand=function(){this.Name='NewPage';};FCKNewPageCommand.prototype.Execute=function(){FCKUndo.SaveUndoStep();FCK.SetData('');FCKUndo.Typing=true;FCK.Focus();};FCKNewPageCommand.prototype.GetState=function(){return 0;};var FCKSourceCommand=function(){this.Name='Source';};FCKSourceCommand.prototype.Execute=function(){if (FCKConfig.SourcePopup){var A=FCKConfig.ScreenWidth*0.65;var B=FCKConfig.ScreenHeight*0.65;FCKDialog.OpenDialog('FCKDialog_Source',FCKLang.Source,'dialog/fck_source.html',A,B,null,null,true);}else FCK.SwitchEditMode();};FCKSourceCommand.prototype.GetState=function(){return (FCK.EditMode==0?0:1);};var FCKUndoCommand=function(){this.Name='Undo';};FCKUndoCommand.prototype.Execute=function(){FCKUndo.Undo();};FCKUndoCommand.prototype.GetState=function(){if (FCK.EditMode!=0) return -1;return (FCKUndo.CheckUndoState()?0:-1);};var FCKRedoCommand=function(){this.Name='Redo';};FCKRedoCommand.prototype.Execute=function(){FCKUndo.Redo();};FCKRedoCommand.prototype.GetState=function(){if (FCK.EditMode!=0) return -1;return (FCKUndo.CheckRedoState()?0:-1);};var FCKPageBreakCommand=function(){this.Name='PageBreak';};FCKPageBreakCommand.prototype.Execute=function(){FCKUndo.SaveUndoStep();var e=FCK.EditorDocument.createElement('DIV');e.style.pageBreakAfter='always';e.innerHTML='<span style="DISPLAY:none">&nbsp;</span>';var A=FCKDocumentProcessor_CreateFakeImage('FCK__PageBreak',e);var B=new FCKDomRange(FCK.EditorWindow);B.MoveToSelection();var C=B.SplitBlock();B.InsertNode(A);FCK.Events.FireEvent('OnSelectionChange');};FCKPageBreakCommand.prototype.GetState=function(){if (FCK.EditMode!=0) return -1;return 0;};var FCKUnlinkCommand=function(){this.Name='Unlink';};FCKUnlinkCommand.prototype.Execute=function(){FCKUndo.SaveUndoStep();if (FCKBrowserInfo.IsGeckoLike){var A=FCK.Selection.MoveToAncestorNode('A');if (A) FCKTools.RemoveOuterTags(A);return;};FCK.ExecuteNamedCommand(this.Name);};FCKUnlinkCommand.prototype.GetState=function(){if (FCK.EditMode!=0) return -1;var A=FCK.GetNamedCommandState(this.Name);if (A==0&&FCK.EditMode==0){var B=FCKSelection.MoveToAncestorNode('A');var C=(B&&B.name.length>0&&B.href.length==0);if (C) A=-1;};return A;};FCKVisitLinkCommand=function(){this.Name='VisitLink';};FCKVisitLinkCommand.prototype={GetState:function(){if (FCK.EditMode!=0) return -1;var A=FCK.GetNamedCommandState('Unlink');if (A==0){var B=FCKSelection.MoveToAncestorNode('A');if (!B.href) A=-1;};return A;},Execute:function(){var A=FCKSelection.MoveToAncestorNode('A');var B=A.getAttribute('_fcksavedurl')||A.getAttribute('href',2);if (!/:\/\//.test(B)){var C=FCKConfig.BaseHref;var D=FCK.GetInstanceObject('parent');if (!C){C=D.document.location.href;C=C.substring(0,C.lastIndexOf('/')+1);};if (/^\//.test(B)){try{C=C.match(/^.*:\/\/+[^\/]+/)[0];}catch (e){C=D.document.location.protocol+'://'+D.parent.document.location.host;}};B=C+B;};if (!window.open(B,'_blank')) alert(FCKLang.VisitLinkBlocked);}};var FCKSelectAllCommand=function(){this.Name='SelectAll';};FCKSelectAllCommand.prototype.Execute=function(){if (FCK.EditMode==0){FCK.ExecuteNamedCommand('SelectAll');}else{var A=FCK.EditingArea.Textarea;if (FCKBrowserInfo.IsIE){A.createTextRange().execCommand('SelectAll');}else{A.selectionStart=0;A.selectionEnd=A.value.length;};A.focus();}};FCKSelectAllCommand.prototype.GetState=function(){if (FCK.EditMode!=0) return -1;return 0;};var FCKPasteCommand=function(){this.Name='Paste';};FCKPasteCommand.prototype={Execute:function(){if (FCKBrowserInfo.IsIE) FCK.Paste();else FCK.ExecuteNamedCommand('Paste');},GetState:function(){if (FCK.EditMode!=0) return -1;return FCK.GetNamedCommandState('Paste');}};var FCKRuleCommand=function(){this.Name='Rule';};FCKRuleCommand.prototype={Execute:function(){FCKUndo.SaveUndoStep();FCK.InsertElement('hr');},GetState:function(){if (FCK.EditMode!=0) return -1;return FCK.GetNamedCommandState('InsertHorizontalRule');}};var FCKCutCopyCommand=function(A){this.Name=A?'Cut':'Copy';};FCKCutCopyCommand.prototype={Execute:function(){var A=false;if (FCKBrowserInfo.IsIE){var B=function(){A=true;};var C='on'+this.Name.toLowerCase();FCK.EditorDocument.body.attachEvent(C,B);FCK.ExecuteNamedCommand(this.Name);FCK.EditorDocument.body.detachEvent(C,B);}else{try{FCK.ExecuteNamedCommand(this.Name);A=true;}catch(e){}};if (!A) alert(FCKLang['PasteError'+this.Name]);},GetState:function(){return FCK.EditMode!=0?-1:FCK.GetNamedCommandState('Cut');}};var FCKAnchorDeleteCommand=function(){this.Name='AnchorDelete';};FCKAnchorDeleteCommand.prototype={Execute:function(){if (FCK.Selection.GetType()=='Control'){FCK.Selection.Delete();}else{var A=FCK.Selection.GetSelectedElement();if (A){if (A.tagName=='IMG'&&A.getAttribute('_fckanchor')) oAnchor=FCK.GetRealElement(A);else A=null;};if (!A){oAnchor=FCK.Selection.MoveToAncestorNode('A');if (oAnchor) FCK.Selection.SelectNode(oAnchor);};if (oAnchor.href.length!=0){oAnchor.removeAttribute('name');if (FCKBrowserInfo.IsIE) oAnchor.className=oAnchor.className.replace(FCKRegexLib.FCK_Class,'');return;};if (A){A.parentNode.removeChild(A);return;};if (oAnchor.innerHTML.length==0){oAnchor.parentNode.removeChild(oAnchor);return;};FCKTools.RemoveOuterTags(oAnchor);};if (FCKBrowserInfo.IsGecko) FCK.Selection.Collapse(true);},GetState:function(){if (FCK.EditMode!=0) return -1;return FCK.GetNamedCommandState('Unlink');}};var FCKDeleteDivCommand=function(){};FCKDeleteDivCommand.prototype={GetState:function(){if (FCK.EditMode!=0) return -1;var A=FCKSelection.GetParentElement();var B=new FCKElementPath(A);return B.BlockLimit&&B.BlockLimit.nodeName.IEquals('div')?0:-1;},Execute:function(){FCKUndo.SaveUndoStep();var A=FCKDomTools.GetSelectedDivContainers();var B=new FCKDomRange(FCK.EditorWindow);B.MoveToSelection();var C=B.CreateBookmark();for (var i=0;i<A.length;i++) FCKDomTools.RemoveNode(A[i],true);B.MoveToBookmark(C);B.Select();}};var FCKNbsp=function(){this.Name='Non Breaking Space';};FCKNbsp.prototype={Execute:function(){FCK.InsertHtml('&nbsp;');},GetState:function(){return (FCK.EditMode!=0?-1:0);}};
+var FCKShowBlockCommand=function(A,B){this.Name=A;if (B!=undefined) this._SavedState=B;else this._SavedState=null;};FCKShowBlockCommand.prototype.Execute=function(){var A=this.GetState();if (A==-1) return;var B=FCK.EditorDocument.body;if (A==1) B.className=B.className.replace(/(^| )FCK__ShowBlocks/g,'');else B.className+=' FCK__ShowBlocks';if (FCKBrowserInfo.IsIE){try{FCK.EditorDocument.selection.createRange().select();}catch (e){}}else{var C=FCK.EditorWindow.getSelection().focusNode;if (C.nodeType!=1) C=C.parentNode;FCKDomTools.ScrollIntoView(C,false);};FCK.Events.FireEvent('OnSelectionChange');};FCKShowBlockCommand.prototype.GetState=function(){if (FCK.EditMode!=0) return -1;if (!FCK.EditorDocument) return 0;if (/FCK__ShowBlocks(?:\s|$)/.test(FCK.EditorDocument.body.className)) return 1;return 0;};FCKShowBlockCommand.prototype.SaveState=function(){this._SavedState=this.GetState();};FCKShowBlockCommand.prototype.RestoreState=function(){if (this._SavedState!=null&&this.GetState()!=this._SavedState) this.Execute();};
 var FCKSpellCheckCommand=function(){this.Name='SpellCheck';this.IsEnabled=(FCKConfig.SpellChecker=='ieSpell'||FCKConfig.SpellChecker=='SpellerPages');};FCKSpellCheckCommand.prototype.Execute=function(){switch (FCKConfig.SpellChecker){case 'ieSpell':this._RunIeSpell();break;case 'SpellerPages':FCKDialog.OpenDialog('FCKDialog_SpellCheck','Spell Check','dialog/fck_spellerpages.html',440,480);break;}};FCKSpellCheckCommand.prototype._RunIeSpell=function(){try{var A=new ActiveXObject("ieSpell.ieSpellExtension");A.CheckAllLinkedDocuments(FCK.EditorDocument);}catch(e){if(e.number==-2146827859){if (confirm(FCKLang.IeSpellDownload)) window.open(FCKConfig.IeSpellDownloadUrl,'IeSpellDownload');}else alert('Error Loading ieSpell: '+e.message+' ('+e.number+')');}};FCKSpellCheckCommand.prototype.GetState=function(){if (FCK.EditMode!=0) return -1;return this.IsEnabled?0:-1;};
 var FCKTextColorCommand=function(A){this.Name=A=='ForeColor'?'TextColor':'BGColor';this.Type=A;var B;if (FCKBrowserInfo.IsIE) B=window;else if (FCK.ToolbarSet._IFrame) B=FCKTools.GetElementWindow(FCK.ToolbarSet._IFrame);else B=window.parent;this._Panel=new FCKPanel(B);this._Panel.AppendStyleSheet(FCKConfig.SkinEditorCSS);this._Panel.MainNode.className='FCK_Panel';this._CreatePanelBody(this._Panel.Document,this._Panel.MainNode);FCK.ToolbarSet.ToolbarItems.GetItem(this.Name).RegisterPanel(this._Panel);FCKTools.DisableSelection(this._Panel.Document.body);};FCKTextColorCommand.prototype.Execute=function(A,B,C){this._Panel.Show(A,B,C);};FCKTextColorCommand.prototype.SetColor=function(A){FCKUndo.SaveUndoStep();var B=FCKStyles.GetStyle('_FCK_'+(this.Type=='ForeColor'?'Color':'BackColor'));if (!A||A.length==0) FCK.Styles.RemoveStyle(B);else{B.SetVariable('Color',A);FCKStyles.ApplyStyle(B);};FCKUndo.SaveUndoStep();FCK.Focus();FCK.Events.FireEvent('OnSelectionChange');};FCKTextColorCommand.prototype.GetState=function(){if (FCK.EditMode!=0) return -1;return 0;};function FCKTextColorCommand_OnMouseOver(){this.className='ColorSelected';};function FCKTextColorCommand_OnMouseOut(){this.className='ColorDeselected';};function FCKTextColorCommand_OnClick(A,B,C){this.className='ColorDeselected';B.SetColor(C);B._Panel.Hide();};function FCKTextColorCommand_AutoOnClick(A,B){this.className='ColorDeselected';B.SetColor('');B._Panel.Hide();};function FCKTextColorCommand_MoreOnClick(A,B){this.className='ColorDeselected';B._Panel.Hide();FCKDialog.OpenDialog('FCKDialog_Color',FCKLang.DlgColorTitle,'dialog/fck_colorselector.html',410,320,FCKTools.Bind(B,B.SetColor));};FCKTextColorCommand.prototype._CreatePanelBody=function(A,B){function CreateSelectionDiv(){var C=A.createElement("DIV");C.className='ColorDeselected';FCKTools.AddEventListenerEx(C,'mouseover',FCKTextColorCommand_OnMouseOver);FCKTools.AddEventListenerEx(C,'mouseout',FCKTextColorCommand_OnMouseOut);return C;};var D=B.appendChild(A.createElement("TABLE"));D.className='ForceBaseFont';D.style.tableLayout='fixed';D.cellPadding=0;D.cellSpacing=0;D.border=0;D.width=150;var E=D.insertRow(-1).insertCell(-1);E.colSpan=8;var C=E.appendChild(CreateSelectionDiv());C.innerHTML='<table cellspacing="0" cellpadding="0" width="100%" border="0">\n			<tr>\n				<td><div class="ColorBoxBorder"><div class="ColorBox" style="background-color: #000000"></div></div></td>\n				<td nowrap width="100%" align="center">'+FCKLang.ColorAutomatic+'</td>\n			</tr>\n		</table>';FCKTools.AddEventListenerEx(C,'click',FCKTextColorCommand_AutoOnClick,this);if (!FCKBrowserInfo.IsIE) C.style.width='96%';var G=FCKConfig.FontColors.toString().split(',');var H=0;while (H<G.length){var I=D.insertRow(-1);for (var i=0;i<8;i++,H++){if (H<G.length){var J=G[H].split('/');var K='#'+J[0];var L=J[1]||K;};C=I.insertCell(-1).appendChild(CreateSelectionDiv());C.innerHTML='<div class="ColorBoxBorder"><div class="ColorBox" style="background-color: '+K+'"></div></div>';if (H>=G.length) C.style.visibility='hidden';else FCKTools.AddEventListenerEx(C,'click',FCKTextColorCommand_OnClick,[this,L]);}};if (FCKConfig.EnableMoreFontColors){E=D.insertRow(-1).insertCell(-1);E.colSpan=8;C=E.appendChild(CreateSelectionDiv());C.innerHTML='<table width="100%" cellpadding="0" cellspacing="0" border="0"><tr><td nowrap align="center">'+FCKLang.ColorMoreColors+'</td></tr></table>';FCKTools.AddEventListenerEx(C,'click',FCKTextColorCommand_MoreOnClick,this);};if (!FCKBrowserInfo.IsIE) C.style.width='96%';};
 var FCKPastePlainTextCommand=function(){this.Name='PasteText';};FCKPastePlainTextCommand.prototype.Execute=function(){FCK.PasteAsPlainText();};FCKPastePlainTextCommand.prototype.GetState=function(){if (FCK.EditMode!=0) return -1;return FCK.GetNamedCommandState('Paste');};
 var FCKPasteWordCommand=function(){this.Name='PasteWord';};FCKPasteWordCommand.prototype.Execute=function(){FCK.PasteFromWord();};FCKPasteWordCommand.prototype.GetState=function(){if (FCK.EditMode!=0||FCKConfig.ForcePasteAsPlainText) return -1;else return FCK.GetNamedCommandState('Paste');};
 var FCKTableCommand=function(A){this.Name=A;};FCKTableCommand.prototype.Execute=function(){FCKUndo.SaveUndoStep();if (!FCKBrowserInfo.IsGecko){switch (this.Name){case 'TableMergeRight':return FCKTableHandler.MergeRight();case 'TableMergeDown':return FCKTableHandler.MergeDown();}};switch (this.Name){case 'TableInsertRowAfter':return FCKTableHandler.InsertRow(false);case 'TableInsertRowBefore':return FCKTableHandler.InsertRow(true);case 'TableDeleteRows':return FCKTableHandler.DeleteRows();case 'TableInsertColumnAfter':return FCKTableHandler.InsertColumn(false);case 'TableInsertColumnBefore':return FCKTableHandler.InsertColumn(true);case 'TableDeleteColumns':return FCKTableHandler.DeleteColumns();case 'TableInsertCellAfter':return FCKTableHandler.InsertCell(null,false);case 'TableInsertCellBefore':return FCKTableHandler.InsertCell(null,true);case 'TableDeleteCells':return FCKTableHandler.DeleteCells();case 'TableMergeCells':return FCKTableHandler.MergeCells();case 'TableHorizontalSplitCell':return FCKTableHandler.HorizontalSplitCell();case 'TableVerticalSplitCell':return FCKTableHandler.VerticalSplitCell();case 'TableDelete':return FCKTableHandler.DeleteTable();default:return alert(FCKLang.UnknownCommand.replace(/%1/g,this.Name));}};FCKTableCommand.prototype.GetState=function(){if (FCK.EditorDocument!=null&&FCKSelection.HasAncestorNode('TABLE')){switch (this.Name){case 'TableHorizontalSplitCell':case 'TableVerticalSplitCell':if (FCKTableHandler.GetSelectedCells().length==1) return 0;else return -1;case 'TableMergeCells':if (FCKTableHandler.CheckIsSelectionRectangular()&&FCKTableHandler.GetSelectedCells().length>1) return 0;else return -1;case 'TableMergeRight':return FCKTableHandler.GetMergeRightTarget()?0:-1;case 'TableMergeDown':return FCKTableHandler.GetMergeDownTarget()?0:-1;default:return 0;}}else return -1;};
-var FCKFitWindow=function(){this.Name='FitWindow';};FCKFitWindow.prototype.Execute=function(){var A=window.frameElement;var B=A.style;var C=parent;var D=C.document.documentElement;var E=C.document.body;var F=E.style;var G;if (!this.IsMaximized){if(FCKBrowserInfo.IsIE) C.attachEvent('onresize',FCKFitWindow_Resize);else C.addEventListener('resize',FCKFitWindow_Resize,true);this._ScrollPos=FCKTools.GetScrollPosition(C);G=A;while((G=G.parentNode)){if (G.nodeType==1){G._fckSavedStyles=FCKTools.SaveStyles(G);G.style.zIndex=FCKConfig.FloatingPanelsZIndex-1;}};if (FCKBrowserInfo.IsIE){this.documentElementOverflow=D.style.overflow;D.style.overflow='hidden';F.overflow='hidden';}else{F.overflow='hidden';F.width='0px';F.height='0px';};this._EditorFrameStyles=FCKTools.SaveStyles(A);var H=FCKTools.GetViewPaneSize(C);B.position="absolute";B.zIndex=FCKConfig.FloatingPanelsZIndex-1;B.left="0px";B.top="0px";B.width=H.Width+"px";B.height=H.Height+"px";if (!FCKBrowserInfo.IsIE){B.borderRight=B.borderBottom="9999px solid white";B.backgroundColor="white";};C.scrollTo(0,0);var I=FCKTools.GetWindowPosition(C,A);if (I.x!=0) B.left=(-1*I.x)+"px";if (I.y!=0) B.top=(-1*I.y)+"px";this.IsMaximized=true;}else{if(FCKBrowserInfo.IsIE) C.detachEvent("onresize",FCKFitWindow_Resize);else C.removeEventListener("resize",FCKFitWindow_Resize,true);G=A;while((G=G.parentNode)){if (G._fckSavedStyles){FCKTools.RestoreStyles(G,G._fckSavedStyles);G._fckSavedStyles=null;}};if (FCKBrowserInfo.IsIE) D.style.overflow=this.documentElementOverflow;FCKTools.RestoreStyles(A,this._EditorFrameStyles);C.scrollTo(this._ScrollPos.X,this._ScrollPos.Y);this.IsMaximized=false;};FCKToolbarItems.GetItem('FitWindow').RefreshState();if (FCK.EditMode==0) FCK.EditingArea.MakeEditable();FCK.Focus();};FCKFitWindow.prototype.GetState=function(){if (FCKConfig.ToolbarLocation!='In') return -1;else return (this.IsMaximized?1:0);};function FCKFitWindow_Resize(){var A=FCKTools.GetViewPaneSize(parent);var B=window.frameElement.style;B.width=A.Width+'px';B.height=A.Height+'px';};
+var FCKFitWindow=function(){this.Name='FitWindow';};FCKFitWindow.prototype.Execute=function(){var A=window.frameElement;var B=A.style;var C=parent;var D=C.document.documentElement;var E=C.document.body;var F=E.style;var G;var H=new FCKDomRange(FCK.EditorWindow);H.MoveToSelection();var I=FCKTools.GetScrollPosition(FCK.EditorWindow);if (!this.IsMaximized){if(FCKBrowserInfo.IsIE) C.attachEvent('onresize',FCKFitWindow_Resize);else C.addEventListener('resize',FCKFitWindow_Resize,true);this._ScrollPos=FCKTools.GetScrollPosition(C);G=A;while((G=G.parentNode)){if (G.nodeType==1){G._fckSavedStyles=FCKTools.SaveStyles(G);G.style.zIndex=FCKConfig.FloatingPanelsZIndex-1;}};if (FCKBrowserInfo.IsIE){this.documentElementOverflow=D.style.overflow;D.style.overflow='hidden';F.overflow='hidden';}else{F.overflow='hidden';F.width='0px';F.height='0px';};this._EditorFrameStyles=FCKTools.SaveStyles(A);var J=FCKTools.GetViewPaneSize(C);B.position="absolute";A.offsetLeft;B.zIndex=FCKConfig.FloatingPanelsZIndex-1;B.left="0px";B.top="0px";B.width=J.Width+"px";B.height=J.Height+"px";if (!FCKBrowserInfo.IsIE){B.borderRight=B.borderBottom="9999px solid white";B.backgroundColor="white";};C.scrollTo(0,0);var K=FCKTools.GetWindowPosition(C,A);if (K.x!=0) B.left=(-1*K.x)+"px";if (K.y!=0) B.top=(-1*K.y)+"px";this.IsMaximized=true;}else{if(FCKBrowserInfo.IsIE) C.detachEvent("onresize",FCKFitWindow_Resize);else C.removeEventListener("resize",FCKFitWindow_Resize,true);G=A;while((G=G.parentNode)){if (G._fckSavedStyles){FCKTools.RestoreStyles(G,G._fckSavedStyles);G._fckSavedStyles=null;}};if (FCKBrowserInfo.IsIE) D.style.overflow=this.documentElementOverflow;FCKTools.RestoreStyles(A,this._EditorFrameStyles);C.scrollTo(this._ScrollPos.X,this._ScrollPos.Y);this.IsMaximized=false;};FCKToolbarItems.GetItem('FitWindow').RefreshState();if (FCK.EditMode==0) FCK.EditingArea.MakeEditable();FCK.Focus();H.Select();FCK.EditorWindow.scrollTo(I.X,I.Y);};FCKFitWindow.prototype.GetState=function(){if (FCKConfig.ToolbarLocation!='In') return -1;else return (this.IsMaximized?1:0);};function FCKFitWindow_Resize(){var A=FCKTools.GetViewPaneSize(parent);var B=window.frameElement.style;B.width=A.Width+'px';B.height=A.Height+'px';};
 var FCKListCommand=function(A,B){this.Name=A;this.TagName=B;};FCKListCommand.prototype={GetState:function(){if (FCK.EditMode!=0||!FCK.EditorWindow) return -1;var A=FCKSelection.GetBoundaryParentElement(true);var B=A;while (B){if (B.nodeName.IEquals(['ul','ol'])) break;B=B.parentNode;};if (B&&B.nodeName.IEquals(this.TagName)) return 1;else return 0;},Execute:function(){FCKUndo.SaveUndoStep();var A=FCK.EditorDocument;var B=new FCKDomRange(FCK.EditorWindow);B.MoveToSelection();var C=this.GetState();if (C==0){FCKDomTools.TrimNode(A.body);if (!A.body.firstChild){var D=A.createElement('p');A.body.appendChild(D);B.MoveToNodeContents(D);}};var E=B.CreateBookmark();var F=[];var G={};var H=new FCKDomRangeIterator(B);var I;H.ForceBrBreak=(C==0);var J=true;var K=null;while (J){while ((I=H.GetNextParagraph())){var L=new FCKElementPath(I);var M=null;var N=false;var O=L.BlockLimit;for (var i=L.Elements.length-1;i>=0;i--){var P=L.Elements[i];if (P.nodeName.IEquals(['ol','ul'])){if (O._FCK_ListGroupObject) O._FCK_ListGroupObject=null;var Q=P._FCK_ListGroupObject;if (Q) Q.contents.push(I);else{Q={ 'root':P,'contents':[I] };F.push(Q);FCKDomTools.SetElementMarker(G,P,'_FCK_ListGroupObject',Q);};N=true;break;}};if (N) continue;var R=O;if (R._FCK_ListGroupObject) R._FCK_ListGroupObject.contents.push(I);else{var Q={ 'root':R,'contents':[I] };FCKDomTools.SetElementMarker(G,R,'_FCK_ListGroupObject',Q);F.push(Q);}};if (FCKBrowserInfo.IsIE) J=false;else{if (K==null){K=[];var T=FCKSelection.GetSelection();if (T&&F.length==0) K.push(T.getRangeAt(0));for (var i=1;T&&i<T.rangeCount;i++) K.push(T.getRangeAt(i));};if (K.length<1) J=false;else{var U=FCKW3CRange.CreateFromRange(A,K.shift());B._Range=U;B._UpdateElementInfo();if (B.StartNode.nodeName.IEquals('td')) B.SetStart(B.StartNode,1);if (B.EndNode.nodeName.IEquals('td')) B.SetEnd(B.EndNode,2);H=new FCKDomRangeIterator(B);H.ForceBrBreak=(C==0);}}};var W=[];while (F.length>0){var Q=F.shift();if (C==0){if (Q.root.nodeName.IEquals(['ul','ol'])) this._ChangeListType(Q,G,W);else this._CreateList(Q,W);}else if (C==1&&Q.root.nodeName.IEquals(['ul','ol'])) this._RemoveList(Q,G);};for (var i=0;i<W.length;i++){var M=W[i];var Z=false;var a=M;while (!Z){a=a.nextSibling;if (a&&a.nodeType==3&&a.nodeValue.search(/^[\n\r\t ]*$/)==0) continue;Z=true;};if (a&&a.nodeName.IEquals(this.TagName)){a.parentNode.removeChild(a);while (a.firstChild) M.appendChild(a.removeChild(a.firstChild));};Z=false;a=M;while (!Z){a=a.previousSibling;if (a&&a.nodeType==3&&a.nodeValue.search(/^[\n\r\t ]*$/)==0) continue;Z=true;};if (a&&a.nodeName.IEquals(this.TagName)){a.parentNode.removeChild(a);while (a.lastChild) M.insertBefore(a.removeChild(a.lastChild),M.firstChild);}};FCKDomTools.ClearAllMarkers(G);B.MoveToBookmark(E);B.Select();FCK.Focus();FCK.Events.FireEvent('OnSelectionChange');},_ChangeListType:function(A,B,C){var D=FCKDomTools.ListToArray(A.root,B);var E=[];for (var i=0;i<A.contents.length;i++){var F=A.contents[i];F=FCKTools.GetElementAscensor(F,'li');if (!F||F._FCK_ListItem_Processed) continue;E.push(F);FCKDomTools.SetElementMarker(B,F,'_FCK_ListItem_Processed',true);};var G=FCKTools.GetElementDocument(A.root).createElement(this.TagName);for (var i=0;i<E.length;i++){var H=E[i]._FCK_ListArray_Index;D[H].parent=G;};var I=FCKDomTools.ArrayToList(D,B);for (var i=0;i<I.listNode.childNodes.length;i++){if (I.listNode.childNodes[i].nodeName.IEquals(this.TagName)) C.push(I.listNode.childNodes[i]);};A.root.parentNode.replaceChild(I.listNode,A.root);},_CreateList:function(A,B){var C=A.contents;var D=FCKTools.GetElementDocument(A.root);var E=[];if (C.length==1&&C[0]==A.root){var F=D.createElement('div');while (C[0].firstChild) F.appendChild(C[0].removeChild(C[0].firstChild));C[0].appendChild(F);C[0]=F;};var G=A.contents[0].parentNode;for (var i=0;i<C.length;i++) G=FCKDomTools.GetCommonParents(G,C[i].parentNode).pop();for (var i=0;i<C.length;i++){var H=C[i];while (H.parentNode){if (H.parentNode==G){E.push(H);break;};H=H.parentNode;}};if (E.length<1) return;var I=E[E.length-1].nextSibling;var J=D.createElement(this.TagName);B.push(J);while (E.length){var K=E.shift();var L=D.createDocumentFragment();while (K.firstChild) L.appendChild(K.removeChild(K.firstChild));K.parentNode.removeChild(K);var M=D.createElement('li');M.appendChild(L);J.appendChild(M);};G.insertBefore(J,I);},_RemoveList:function(A,B){var C=FCKDomTools.ListToArray(A.root,B);var D=[];for (var i=0;i<A.contents.length;i++){var E=A.contents[i];E=FCKTools.GetElementAscensor(E,'li');if (!E||E._FCK_ListItem_Processed) continue;D.push(E);FCKDomTools.SetElementMarker(B,E,'_FCK_ListItem_Processed',true);};var F=null;for (var i=0;i<D.length;i++){var G=D[i]._FCK_ListArray_Index;C[G].indent=-1;F=G;};for (var i=F+1;i<C.length;i++){if (C[i].indent>C[i-1].indent+1){var H=C[i-1].indent+1-C[i].indent;var I=C[i].indent;while (C[i]&&C[i].indent>=I){C[i].indent+=H;i++;};i--;}};var J=FCKDomTools.ArrayToList(C,B);if (A.root.nextSibling==null||A.root.nextSibling.nodeName.IEquals('br')){if (J.listNode.lastChild.nodeName.IEquals('br')) J.listNode.removeChild(J.listNode.lastChild);};A.root.parentNode.replaceChild(J.listNode,A.root);}};
 var FCKJustifyCommand=function(A){this.AlignValue=A;var B=FCKConfig.ContentLangDirection.toLowerCase();this.IsDefaultAlign=(A=='left'&&B=='ltr')||(A=='right'&&B=='rtl');var C=this._CssClassName=(function(){var D=FCKConfig.JustifyClasses;if (D){switch (A){case 'left':return D[0]||null;case 'center':return D[1]||null;case 'right':return D[2]||null;case 'justify':return D[3]||null;}};return null;})();if (C&&C.length>0) this._CssClassRegex=new RegExp('(?:^|\\s+)'+C+'(?=$|\\s)');};FCKJustifyCommand._GetClassNameRegex=function(){var A=FCKJustifyCommand._ClassRegex;if (A!=undefined) return A;var B=[];var C=FCKConfig.JustifyClasses;if (C){for (var i=0;i<4;i++){var D=C[i];if (D&&D.length>0) B.push(D);}};if (B.length>0) A=new RegExp('(?:^|\\s+)(?:'+B.join('|')+')(?=$|\\s)');else A=null;return FCKJustifyCommand._ClassRegex=A;};FCKJustifyCommand.prototype={Execute:function(){FCKUndo.SaveUndoStep();var A=new FCKDomRange(FCK.EditorWindow);A.MoveToSelection();var B=this.GetState();if (B==-1) return;var C=A.CreateBookmark();var D=this._CssClassName;var E=new FCKDomRangeIterator(A);var F;while ((F=E.GetNextParagraph())){F.removeAttribute('align');if (D){var G=F.className.replace(FCKJustifyCommand._GetClassNameRegex(),'');if (B==0){if (G.length>0) G+=' ';F.className=G+D;}else if (G.length==0) FCKDomTools.RemoveAttribute(F,'class');}else{var H=F.style;if (B==0) H.textAlign=this.AlignValue;else{H.textAlign='';if (H.cssText.length==0) F.removeAttribute('style');}}};A.MoveToBookmark(C);A.Select();FCK.Focus();FCK.Events.FireEvent('OnSelectionChange');},GetState:function(){if (FCK.EditMode!=0||!FCK.EditorWindow) return -1;var A=new FCKElementPath(FCKSelection.GetBoundaryParentElement(true));var B=A.Block||A.BlockLimit;if (!B||B.nodeName.toLowerCase()=='body') return 0;var C;if (FCKBrowserInfo.IsIE) C=B.currentStyle.textAlign;else C=FCK.EditorWindow.getComputedStyle(B,'').getPropertyValue('text-align');C=C.replace(/(-moz-|-webkit-|start|auto)/i,'');if ((!C&&this.IsDefaultAlign)||C==this.AlignValue) return 1;return 0;}};
 var FCKIndentCommand=function(A,B){this.Name=A;this.Offset=B;this.IndentCSSProperty=FCKConfig.ContentLangDirection.IEquals('ltr')?'marginLeft':'marginRight';};FCKIndentCommand._InitIndentModeParameters=function(){if (FCKConfig.IndentClasses&&FCKConfig.IndentClasses.length>0){this._UseIndentClasses=true;this._IndentClassMap={};for (var i=0;i<FCKConfig.IndentClasses.length;i++) this._IndentClassMap[FCKConfig.IndentClasses[i]]=i+1;this._ClassNameRegex=new RegExp('(?:^|\\s+)('+FCKConfig.IndentClasses.join('|')+')(?=$|\\s)');}else this._UseIndentClasses=false;};FCKIndentCommand.prototype={Execute:function(){FCKUndo.SaveUndoStep();var A=new FCKDomRange(FCK.EditorWindow);A.MoveToSelection();var B=A.CreateBookmark();var C=FCKDomTools.GetCommonParentNode(A.StartNode||A.StartContainer,A.EndNode||A.EndContainer,['ul','ol']);if (C) this._IndentList(A,C);else this._IndentBlock(A);A.MoveToBookmark(B);A.Select();FCK.Focus();FCK.Events.FireEvent('OnSelectionChange');},GetState:function(){if (FCK.EditMode!=0||!FCK.EditorWindow) return -1;if (FCKIndentCommand._UseIndentClasses==undefined) FCKIndentCommand._InitIndentModeParameters();var A=FCKSelection.GetBoundaryParentElement(true);var B=FCKSelection.GetBoundaryParentElement(false);var C=FCKDomTools.GetCommonParentNode(A,B,['ul','ol']);if (C){if (this.Name.IEquals('outdent')) return 0;var D=FCKTools.GetElementAscensor(A,'li');if (!D||!D.previousSibling) return -1;return 0;};if (!FCKIndentCommand._UseIndentClasses&&this.Name.IEquals('indent')) return 0;var E=new FCKElementPath(A);var F=E.Block||E.BlockLimit;if (!F) return -1;if (FCKIndentCommand._UseIndentClasses){var G=F.className.match(FCKIndentCommand._ClassNameRegex);var H=0;if (G!=null){G=G[1];H=FCKIndentCommand._IndentClassMap[G];};if ((this.Name=='outdent'&&H==0)||(this.Name=='indent'&&H==FCKConfig.IndentClasses.length)) return -1;return 0;}else{var I=parseInt(F.style[this.IndentCSSProperty],10);if (isNaN(I)) I=0;if (I<=0) return -1;return 0;}},_IndentBlock:function(A){var B=new FCKDomRangeIterator(A);B.EnforceRealBlocks=true;A.Expand('block_contents');var C=FCKDomTools.GetCommonParents(A.StartContainer,A.EndContainer);var D=C[C.length-1];var E;while ((E=B.GetNextParagraph())){if (!(E==D||E.parentNode==D)) continue;if (FCKIndentCommand._UseIndentClasses){var F=E.className.match(FCKIndentCommand._ClassNameRegex);var G=0;if (F!=null){F=F[1];G=FCKIndentCommand._IndentClassMap[F];};if (this.Name.IEquals('outdent')) G--;else if (this.Name.IEquals('indent')) G++;G=Math.min(G,FCKConfig.IndentClasses.length);G=Math.max(G,0);var H=E.className.replace(FCKIndentCommand._ClassNameRegex,'');if (G<1) E.className=H;else E.className=(H.length>0?H+' ':'')+FCKConfig.IndentClasses[G-1];}else{var I=parseInt(E.style[this.IndentCSSProperty],10);if (isNaN(I)) I=0;I+=this.Offset;I=Math.max(I,0);I=Math.ceil(I/this.Offset)*this.Offset;E.style[this.IndentCSSProperty]=I?I+FCKConfig.IndentUnit:'';if (E.getAttribute('style')=='') E.removeAttribute('style');}}},_IndentList:function(A,B){var C=A.StartContainer;var D=A.EndContainer;while (C&&C.parentNode!=B) C=C.parentNode;while (D&&D.parentNode!=B) D=D.parentNode;if (!C||!D) return;var E=C;var F=[];var G=false;while (G==false){if (E==D) G=true;F.push(E);E=E.nextSibling;};if (F.length<1) return;var H=FCKDomTools.GetParents(B);for (var i=0;i<H.length;i++){if (H[i].nodeName.IEquals(['ul','ol'])){B=H[i];break;}};var I=this.Name.IEquals('indent')?1:-1;var J=F[0];var K=F[F.length-1];var L={};var M=FCKDomTools.ListToArray(B,L);var N=M[K._FCK_ListArray_Index].indent;for (var i=J._FCK_ListArray_Index;i<=K._FCK_ListArray_Index;i++) M[i].indent+=I;for (var i=K._FCK_ListArray_Index+1;i<M.length&&M[i].indent>N;i++) M[i].indent+=I;var O=FCKDomTools.ArrayToList(M);if (O) B.parentNode.replaceChild(O.listNode,B);FCKDomTools.ClearAllMarkers(L);}};
-var FCKBlockQuoteCommand=function(){};FCKBlockQuoteCommand.prototype={Execute:function(){FCKUndo.SaveUndoStep();var A=this.GetState();var B=new FCKDomRange(FCK.EditorWindow);B.MoveToSelection();var C=B.CreateBookmark();if (FCKBrowserInfo.IsIE){var D=B.GetBookmarkNode(C,true);var E=B.GetBookmarkNode(C,false);var F;if (D&&D.parentNode.nodeName.IEquals('blockquote')&&!D.previousSibling){F=D;while ((F=F.nextSibling)){if (FCKListsLib.BlockElements[F.nodeName.toLowerCase()]) FCKDomTools.MoveNode(D,F,true);}};if (E&&E.parentNode.nodeName.IEquals('blockquote')&&!E.previousSibling){F=E;while ((F=F.nextSibling)){if (FCKListsLib.BlockElements[F.nodeName.toLowerCase()]){if (F.firstChild==D) FCKDomTools.InsertAfterNode(D,E);else FCKDomTools.MoveNode(E,F,true);}}}};var G=new FCKDomRangeIterator(B);var H;if (A==0){G.EnforceRealBlocks=true;var I=[];while ((H=G.GetNextParagraph())) I.push(H);if (I.length<1){para=B.Window.document.createElement(FCKConfig.EnterMode.IEquals('p')?'p':'div');B.InsertNode(para);para.appendChild(B.Window.document.createTextNode('\ufeff'));B.MoveToBookmark(C);B.MoveToNodeContents(para);B.Collapse(true);C=B.CreateBookmark();I.push(para);};var J=I[0].parentNode;var K=[];for (var i=0;i<I.length;i++){H=I[i];J=FCKDomTools.GetCommonParents(H.parentNode,J).pop();};var L=null;while (I.length>0){H=I.shift();while (H.parentNode!=J) H=H.parentNode;if (H!=L) K.push(H);L=H;};while (K.length>0){H=K.shift();if (H.nodeName.IEquals('blockquote')){var M=FCKTools.GetElementDocument(H).createDocumentFragment();while (H.firstChild){M.appendChild(H.removeChild(H.firstChild));I.push(M.lastChild);};H.parentNode.replaceChild(M,H);}else I.push(H);};var N=B.Window.document.createElement('blockquote');J.insertBefore(N,I[0]);while (I.length>0){H=I.shift();N.appendChild(H);}}else if (A==1){var O=[];while ((H=G.GetNextParagraph())){var P=null;var Q=null;while (H.parentNode){if (H.parentNode.nodeName.IEquals('blockquote')){P=H.parentNode;Q=H;break;};H=H.parentNode;};if (P&&Q) O.push(Q);};var R=[];while (O.length>0){var S=O.shift();var N=S.parentNode;if (S==S.parentNode.firstChild){N.parentNode.insertBefore(N.removeChild(S),N);if (!N.firstChild) N.parentNode.removeChild(N);}else if (S==S.parentNode.lastChild){N.parentNode.insertBefore(N.removeChild(S),N.nextSibling);if (!N.firstChild) N.parentNode.removeChild(N);}else FCKDomTools.BreakParent(S,S.parentNode,B);R.push(S);};if (FCKConfig.EnterMode.IEquals('br')){while (R.length){var S=R.shift();var W=true;if (S.nodeName.IEquals('div')){var M=FCKTools.GetElementDocument(S).createDocumentFragment();var Y=W&&S.previousSibling&&!FCKListsLib.BlockBoundaries[S.previousSibling.nodeName.toLowerCase()];if (W&&Y) M.appendChild(FCKTools.GetElementDocument(S).createElement('br'));var Z=S.nextSibling&&!FCKListsLib.BlockBoundaries[S.nextSibling.nodeName.toLowerCase()];while (S.firstChild) M.appendChild(S.removeChild(S.firstChild));if (Z) M.appendChild(FCKTools.GetElementDocument(S).createElement('br'));S.parentNode.replaceChild(M,S);W=false;}}}};B.MoveToBookmark(C);B.Select();FCK.Focus();FCK.Events.FireEvent('OnSelectionChange');},GetState:function(){if (FCK.EditMode!=0||!FCK.EditorWindow) return -1;var A=new FCKElementPath(FCKSelection.GetBoundaryParentElement(true));var B=A.Block||A.BlockLimit;if (!B||B.nodeName.toLowerCase()=='body') return 0;for (var i=0;i<A.Elements.length;i++){if (A.Elements[i].nodeName.IEquals('blockquote')) return 1;};return 0;}};
+var FCKBlockQuoteCommand=function(){};FCKBlockQuoteCommand.prototype={Execute:function(){FCKUndo.SaveUndoStep();var A=this.GetState();var B=new FCKDomRange(FCK.EditorWindow);B.MoveToSelection();var C=B.CreateBookmark();if (FCKBrowserInfo.IsIE){var D=B.GetBookmarkNode(C,true);var E=B.GetBookmarkNode(C,false);var F;if (D&&D.parentNode.nodeName.IEquals('blockquote')&&!D.previousSibling){F=D;while ((F=F.nextSibling)){if (FCKListsLib.BlockElements[F.nodeName.toLowerCase()]) FCKDomTools.MoveNode(D,F,true);}};if (E&&E.parentNode.nodeName.IEquals('blockquote')&&!E.previousSibling){F=E;while ((F=F.nextSibling)){if (FCKListsLib.BlockElements[F.nodeName.toLowerCase()]){if (F.firstChild==D) FCKDomTools.InsertAfterNode(D,E);else FCKDomTools.MoveNode(E,F,true);}}}};var G=new FCKDomRangeIterator(B);var H;if (A==0){G.EnforceRealBlocks=true;var I=[];while ((H=G.GetNextParagraph())) I.push(H);if (I.length<1){para=B.Window.document.createElement(FCKConfig.EnterMode.IEquals('p')?'p':'div');B.InsertNode(para);para.appendChild(B.Window.document.createTextNode('\ufeff'));B.MoveToBookmark(C);B.MoveToNodeContents(para);B.Collapse(true);C=B.CreateBookmark();I.push(para);};var J=I[0].parentNode;var K=[];for (var i=0;i<I.length;i++){H=I[i];J=FCKDomTools.GetCommonParents(H.parentNode,J).pop();};var L=null;while (I.length>0){H=I.shift();while (H.parentNode!=J) H=H.parentNode;if (H!=L) K.push(H);L=H;}while (K.length>0){H=K.shift();if (H.nodeName.IEquals('blockquote')){var M=FCKTools.GetElementDocument(H).createDocumentFragment();while (H.firstChild){M.appendChild(H.removeChild(H.firstChild));I.push(M.lastChild);};H.parentNode.replaceChild(M,H);}else I.push(H);};var N=B.Window.document.createElement('blockquote');J.insertBefore(N,I[0]);while (I.length>0){H=I.shift();N.appendChild(H);}}else if (A==1){var O=[];while ((H=G.GetNextParagraph())){var P=null;var Q=null;while (H.parentNode){if (H.parentNode.nodeName.IEquals('blockquote')){P=H.parentNode;Q=H;break;};H=H.parentNode;};if (P&&Q) O.push(Q);};var R=[];while (O.length>0){var S=O.shift();var N=S.parentNode;if (S==S.parentNode.firstChild){N.parentNode.insertBefore(N.removeChild(S),N);if (!N.firstChild) N.parentNode.removeChild(N);}else if (S==S.parentNode.lastChild){N.parentNode.insertBefore(N.removeChild(S),N.nextSibling);if (!N.firstChild) N.parentNode.removeChild(N);}else FCKDomTools.BreakParent(S,S.parentNode,B);R.push(S);};if (FCKConfig.EnterMode.IEquals('br')){while (R.length){var S=R.shift();var W=true;if (S.nodeName.IEquals('div')){var M=FCKTools.GetElementDocument(S).createDocumentFragment();var Y=W&&S.previousSibling&&!FCKListsLib.BlockBoundaries[S.previousSibling.nodeName.toLowerCase()];if (W&&Y) M.appendChild(FCKTools.GetElementDocument(S).createElement('br'));var Z=S.nextSibling&&!FCKListsLib.BlockBoundaries[S.nextSibling.nodeName.toLowerCase()];while (S.firstChild) M.appendChild(S.removeChild(S.firstChild));if (Z) M.appendChild(FCKTools.GetElementDocument(S).createElement('br'));S.parentNode.replaceChild(M,S);W=false;}}}};B.MoveToBookmark(C);B.Select();FCK.Focus();FCK.Events.FireEvent('OnSelectionChange');},GetState:function(){if (FCK.EditMode!=0||!FCK.EditorWindow) return -1;var A=new FCKElementPath(FCKSelection.GetBoundaryParentElement(true));var B=A.Block||A.BlockLimit;if (!B||B.nodeName.toLowerCase()=='body') return 0;for (var i=0;i<A.Elements.length;i++){if (A.Elements[i].nodeName.IEquals('blockquote')) return 1;};return 0;}};
 var FCKCoreStyleCommand=function(A){this.Name='CoreStyle';this.StyleName='_FCK_'+A;this.IsActive=false;FCKStyles.AttachStyleStateChange(this.StyleName,this._OnStyleStateChange,this);};FCKCoreStyleCommand.prototype={Execute:function(){FCKUndo.SaveUndoStep();if (this.IsActive) FCKStyles.RemoveStyle(this.StyleName);else FCKStyles.ApplyStyle(this.StyleName);FCK.Focus();FCK.Events.FireEvent('OnSelectionChange');},GetState:function(){if (FCK.EditMode!=0) return -1;return this.IsActive?1:0;},_OnStyleStateChange:function(A,B){this.IsActive=B;}};
 var FCKRemoveFormatCommand=function(){this.Name='RemoveFormat';};FCKRemoveFormatCommand.prototype={Execute:function(){FCKStyles.RemoveAll();FCK.Focus();FCK.Events.FireEvent('OnSelectionChange');},GetState:function(){return FCK.EditorWindow?0:-1;}};
-var FCKCommands=FCK.Commands={};FCKCommands.LoadedCommands={};FCKCommands.RegisterCommand=function(A,B){this.LoadedCommands[A]=B;};FCKCommands.GetCommand=function(A){var B=FCKCommands.LoadedCommands[A];if (B) return B;switch (A){case 'Bold':case 'Italic':case 'Underline':case 'StrikeThrough':case 'Subscript':case 'Superscript':B=new FCKCoreStyleCommand(A);break;case 'RemoveFormat':B=new FCKRemoveFormatCommand();break;case 'DocProps':B=new FCKDialogCommand('DocProps',FCKLang.DocProps,'dialog/fck_docprops.html',400,380,FCKCommands.GetFullPageState);break;case 'Templates':B=new FCKDialogCommand('Templates',FCKLang.DlgTemplatesTitle,'dialog/fck_template.html',380,450);break;case 'Link':B=new FCKDialogCommand('Link',FCKLang.DlgLnkWindowTitle,'dialog/fck_link.html',400,300);break;case 'Unlink':B=new FCKUnlinkCommand();break;case 'Anchor':B=new FCKDialogCommand('Anchor',FCKLang.DlgAnchorTitle,'dialog/fck_anchor.html',370,160);break;case 'AnchorDelete':B=new FCKAnchorDeleteCommand();break;case 'BulletedList':B=new FCKDialogCommand('BulletedList',FCKLang.BulletedListProp,'dialog/fck_listprop.html?UL',370,160);break;case 'NumberedList':B=new FCKDialogCommand('NumberedList',FCKLang.NumberedListProp,'dialog/fck_listprop.html?OL',370,160);break;case 'About':B=new FCKDialogCommand('About',FCKLang.About,'dialog/fck_about.html',420,330,function(){ return 0;});break;case 'Find':B=new FCKDialogCommand('Find',FCKLang.DlgFindAndReplaceTitle,'dialog/fck_replace.html',340,230,null,null,'Find');break;case 'Replace':B=new FCKDialogCommand('Replace',FCKLang.DlgFindAndReplaceTitle,'dialog/fck_replace.html',340,230,null,null,'Replace');break;case 'Image':B=new FCKDialogCommand('Image',FCKLang.DlgImgTitle,'dialog/fck_image.html',450,390);break;case 'Flash':B=new FCKDialogCommand('Flash',FCKLang.DlgFlashTitle,'dialog/fck_flash.html',450,390);break;case 'SpecialChar':B=new FCKDialogCommand('SpecialChar',FCKLang.DlgSpecialCharTitle,'dialog/fck_specialchar.html',400,290);break;case 'Smiley':B=new FCKDialogCommand('Smiley',FCKLang.DlgSmileyTitle,'dialog/fck_smiley.html',FCKConfig.SmileyWindowWidth,FCKConfig.SmileyWindowHeight);break;case 'Table':B=new FCKDialogCommand('Table',FCKLang.DlgTableTitle,'dialog/fck_table.html',480,250);break;case 'TableProp':B=new FCKDialogCommand('Table',FCKLang.DlgTableTitle,'dialog/fck_table.html?Parent',480,250);break;case 'TableCellProp':B=new FCKDialogCommand('TableCell',FCKLang.DlgCellTitle,'dialog/fck_tablecell.html',550,240);break;case 'Style':B=new FCKStyleCommand();break;case 'FontName':B=new FCKFontNameCommand();break;case 'FontSize':B=new FCKFontSizeCommand();break;case 'FontFormat':B=new FCKFormatBlockCommand();break;case 'Source':B=new FCKSourceCommand();break;case 'Preview':B=new FCKPreviewCommand();break;case 'Save':B=new FCKSaveCommand();break;case 'NewPage':B=new FCKNewPageCommand();break;case 'PageBreak':B=new FCKPageBreakCommand();break;case 'Rule':B=new FCKRuleCommand();break;case 'TextColor':B=new FCKTextColorCommand('ForeColor');break;case 'BGColor':B=new FCKTextColorCommand('BackColor');break;case 'Paste':B=new FCKPasteCommand();break;case 'PasteText':B=new FCKPastePlainTextCommand();break;case 'PasteWord':B=new FCKPasteWordCommand();break;case 'JustifyLeft':B=new FCKJustifyCommand('left');break;case 'JustifyCenter':B=new FCKJustifyCommand('center');break;case 'JustifyRight':B=new FCKJustifyCommand('right');break;case 'JustifyFull':B=new FCKJustifyCommand('justify');break;case 'Indent':B=new FCKIndentCommand('indent',FCKConfig.IndentLength);break;case 'Outdent':B=new FCKIndentCommand('outdent',FCKConfig.IndentLength*-1);break;case 'Blockquote':B=new FCKBlockQuoteCommand();break;case 'TableInsertRowAfter':B=new FCKTableCommand('TableInsertRowAfter');break;case 'TableInsertRowBefore':B=new FCKTableCommand('TableInsertRowBefore');break;case 'TableDeleteRows':B=new FCKTableCommand('TableDeleteRows');break;case 'TableInsertColumnAfter':B=new FCKTableCommand('TableInsertColumnAfter');break;case 'TableInsertColumnBefore':B=new FCKTableCommand('TableInsertColumnBefore');break;case 'TableDeleteColumns':B=new FCKTableCommand('TableDeleteColumns');break;case 'TableInsertCellAfter':B=new FCKTableCommand('TableInsertCellAfter');break;case 'TableInsertCellBefore':B=new FCKTableCommand('TableInsertCellBefore');break;case 'TableDeleteCells':B=new FCKTableCommand('TableDeleteCells');break;case 'TableMergeCells':B=new FCKTableCommand('TableMergeCells');break;case 'TableMergeRight':B=new FCKTableCommand('TableMergeRight');break;case 'TableMergeDown':B=new FCKTableCommand('TableMergeDown');break;case 'TableHorizontalSplitCell':B=new FCKTableCommand('TableHorizontalSplitCell');break;case 'TableVerticalSplitCell':B=new FCKTableCommand('TableVerticalSplitCell');break;case 'TableDelete':B=new FCKTableCommand('TableDelete');break;case 'Form':B=new FCKDialogCommand('Form',FCKLang.Form,'dialog/fck_form.html',380,210);break;case 'Checkbox':B=new FCKDialogCommand('Checkbox',FCKLang.Checkbox,'dialog/fck_checkbox.html',380,200);break;case 'Radio':B=new FCKDialogCommand('Radio',FCKLang.RadioButton,'dialog/fck_radiobutton.html',380,200);break;case 'TextField':B=new FCKDialogCommand('TextField',FCKLang.TextField,'dialog/fck_textfield.html',380,210);break;case 'Textarea':B=new FCKDialogCommand('Textarea',FCKLang.Textarea,'dialog/fck_textarea.html',380,210);break;case 'HiddenField':B=new FCKDialogCommand('HiddenField',FCKLang.HiddenField,'dialog/fck_hiddenfield.html',380,190);break;case 'Button':B=new FCKDialogCommand('Button',FCKLang.Button,'dialog/fck_button.html',380,210);break;case 'Select':B=new FCKDialogCommand('Select',FCKLang.SelectionField,'dialog/fck_select.html',400,340);break;case 'ImageButton':B=new FCKDialogCommand('ImageButton',FCKLang.ImageButton,'dialog/fck_image.html?ImageButton',450,390);break;case 'SpellCheck':B=new FCKSpellCheckCommand();break;case 'FitWindow':B=new FCKFitWindow();break;case 'Undo':B=new FCKUndoCommand();break;case 'Redo':B=new FCKRedoCommand();break;case 'Copy':B=new FCKCutCopyCommand(false);break;case 'Cut':B=new FCKCutCopyCommand(true);break;case 'SelectAll':B=new FCKSelectAllCommand();break;case 'InsertOrderedList':B=new FCKListCommand('insertorderedlist','ol');break;case 'InsertUnorderedList':B=new FCKListCommand('insertunorderedlist','ul');break;case 'ShowBlocks':B=new FCKShowBlockCommand('ShowBlocks',FCKConfig.StartupShowBlocks?1:0);break;case 'Undefined':B=new FCKUndefinedCommand();break;default:if (FCKRegexLib.NamedCommands.test(A)) B=new FCKNamedCommand(A);else{alert(FCKLang.UnknownCommand.replace(/%1/g,A));return null;}};FCKCommands.LoadedCommands[A]=B;return B;};FCKCommands.GetFullPageState=function(){return FCKConfig.FullPage?0:-1;};FCKCommands.GetBooleanState=function(A){return A?-1:0;};
-var FCKPanel=function(A){this.IsRTL=(FCKLang.Dir=='rtl');this.IsContextMenu=false;this._LockCounter=0;this._Window=A||window;var B;if (FCKBrowserInfo.IsIE){this._Popup=this._Window.createPopup();var C=this._Window.document;if (FCK_IS_CUSTOM_DOMAIN&&!FCKBrowserInfo.IsIE7){C.domain=FCK_ORIGINAL_DOMAIN;document.domain=FCK_ORIGINAL_DOMAIN;};B=this.Document=this._Popup.document;if (FCK_IS_CUSTOM_DOMAIN){B.domain=FCK_RUNTIME_DOMAIN;C.domain=FCK_RUNTIME_DOMAIN;document.domain=FCK_RUNTIME_DOMAIN;};FCK.IECleanup.AddItem(this,FCKPanel_Cleanup);}else{var D=this._IFrame=this._Window.document.createElement('iframe');D.src='javascript:void(0)';D.allowTransparency=true;D.frameBorder='0';D.scrolling='no';D.width=D.height=0;FCKDomTools.SetElementStyles(D,{position:'absolute',zIndex:FCKConfig.FloatingPanelsZIndex});this._Window.document.body.appendChild(D);var E=D.contentWindow;B=this.Document=E.document;var F='';if (FCKBrowserInfo.IsSafari) F='<base href="'+window.document.location+'">';B.open();B.write('<html><head>'+F+'<\/head><body style="margin:0px;padding:0px;"><\/body><\/html>');B.close();if(FCKBrowserInfo.IsAIR) FCKAdobeAIR.Panel_Contructor(B,window.document.location);FCKTools.AddEventListenerEx(E,'focus',FCKPanel_Window_OnFocus,this);FCKTools.AddEventListenerEx(E,'blur',FCKPanel_Window_OnBlur,this);};B.dir=FCKLang.Dir;FCKTools.AddEventListener(B,'contextmenu',FCKTools.CancelEvent);this.MainNode=B.body.appendChild(B.createElement('DIV'));this.MainNode.style.cssFloat=this.IsRTL?'right':'left';};FCKPanel.prototype.AppendStyleSheet=function(A){FCKTools.AppendStyleSheet(this.Document,A);};FCKPanel.prototype.Preload=function(x,y,A){if (this._Popup) this._Popup.show(x,y,0,0,A);};FCKPanel.prototype.Show=function(x,y,A,B,C){var D;var E=this.MainNode;if (this._Popup){this._Popup.show(x,y,0,0,A);FCKDomTools.SetElementStyles(E,{B:B?B+'px':'',C:C?C+'px':''});D=E.offsetWidth;if (this.IsRTL){if (this.IsContextMenu) x=x-D+1;else if (A) x=(x*-1)+A.offsetWidth-D;};this._Popup.show(x,y,D,E.offsetHeight,A);if (this.OnHide){if (this._Timer) CheckPopupOnHide.call(this,true);this._Timer=FCKTools.SetInterval(CheckPopupOnHide,100,this);}}else{if (typeof(FCK.ToolbarSet.CurrentInstance.FocusManager)!='undefined') FCK.ToolbarSet.CurrentInstance.FocusManager.Lock();if (this.ParentPanel){this.ParentPanel.Lock();FCKPanel_Window_OnBlur(null,this.ParentPanel);};if (FCKBrowserInfo.IsGecko&&FCKBrowserInfo.IsMac){this._IFrame.scrolling='';FCKTools.RunFunction(function(){ this._IFrame.scrolling='no';},this);};if (FCK.ToolbarSet.CurrentInstance.GetInstanceObject('FCKPanel')._OpenedPanel&&FCK.ToolbarSet.CurrentInstance.GetInstanceObject('FCKPanel')._OpenedPanel!=this) FCK.ToolbarSet.CurrentInstance.GetInstanceObject('FCKPanel')._OpenedPanel.Hide(false,true);FCKDomTools.SetElementStyles(E,{B:B?B+'px':'',C:C?C+'px':''});D=E.offsetWidth;if (!B)	this._IFrame.width=1;if (!C)	this._IFrame.height=1;D=E.offsetWidth||E.firstChild.offsetWidth;var F=FCKTools.GetDocumentPosition(this._Window,A.nodeType==9?(FCKTools.IsStrictMode(A)?A.documentElement:A.body):A);var G=FCKDomTools.GetPositionedAncestor(this._IFrame.parentNode);if (G){var H=FCKTools.GetDocumentPosition(FCKTools.GetElementWindow(G),G);F.x-=H.x;F.y-=H.y;};if (this.IsRTL&&!this.IsContextMenu) x=(x*-1);x+=F.x;y+=F.y;if (this.IsRTL){if (this.IsContextMenu) x=x-D+1;else if (A) x=x+A.offsetWidth-D;}else{var I=FCKTools.GetViewPaneSize(this._Window);var J=FCKTools.GetScrollPosition(this._Window);var K=I.Height+J.Y;var L=I.Width+J.X;if ((x+D)>L) x-=x+D-L;if ((y+E.offsetHeight)>K) y-=y+E.offsetHeight-K;};FCKDomTools.SetElementStyles(this._IFrame,{left:x+'px',top:y+'px'});this._IFrame.contentWindow.focus();this._IsOpened=true;var M=this;this._resizeTimer=setTimeout(function(){var N=E.offsetWidth||E.firstChild.offsetWidth;var O=E.offsetHeight;M._IFrame.width=N;M._IFrame.height=O;},0);FCK.ToolbarSet.CurrentInstance.GetInstanceObject('FCKPanel')._OpenedPanel=this;};FCKTools.RunFunction(this.OnShow,this);};FCKPanel.prototype.Hide=function(A,B){if (this._Popup) this._Popup.hide();else{if (!this._IsOpened||this._LockCounter>0) return;if (typeof(FCKFocusManager)!='undefined'&&!B) FCKFocusManager.Unlock();this._IFrame.width=this._IFrame.height=0;this._IsOpened=false;if (this._resizeTimer){clearTimeout(this._resizeTimer);this._resizeTimer=null;};if (this.ParentPanel) this.ParentPanel.Unlock();if (!A) FCKTools.RunFunction(this.OnHide,this);}};FCKPanel.prototype.CheckIsOpened=function(){if (this._Popup) return this._Popup.isOpen;else return this._IsOpened;};FCKPanel.prototype.CreateChildPanel=function(){var A=this._Popup?FCKTools.GetDocumentWindow(this.Document):this._Window;var B=new FCKPanel(A);B.ParentPanel=this;return B;};FCKPanel.prototype.Lock=function(){this._LockCounter++;};FCKPanel.prototype.Unlock=function(){if (--this._LockCounter==0&&!this.HasFocus) this.Hide();};function FCKPanel_Window_OnFocus(e,A){A.HasFocus=true;};function FCKPanel_Window_OnBlur(e,A){A.HasFocus=false;if (A._LockCounter==0) FCKTools.RunFunction(A.Hide,A);};function CheckPopupOnHide(A){if (A||!this._Popup.isOpen){window.clearInterval(this._Timer);this._Timer=null;FCKTools.RunFunction(this.OnHide,this);}};function FCKPanel_Cleanup(){this._Popup=null;this._Window=null;this.Document=null;this.MainNode=null;};
+var FCKCommands=FCK.Commands={};FCKCommands.LoadedCommands={};FCKCommands.RegisterCommand=function(A,B){this.LoadedCommands[A]=B;};FCKCommands.GetCommand=function(A){var B=FCKCommands.LoadedCommands[A];if (B) return B;switch (A){case 'Bold':case 'Italic':case 'Underline':case 'StrikeThrough':case 'Subscript':case 'Superscript':B=new FCKCoreStyleCommand(A);break;case 'RemoveFormat':B=new FCKRemoveFormatCommand();break;case 'DocProps':B=new FCKDialogCommand('DocProps',FCKLang.DocProps,'dialog/fck_docprops.html',400,380,FCKCommands.GetFullPageState);break;case 'Templates':B=new FCKDialogCommand('Templates',FCKLang.DlgTemplatesTitle,'dialog/fck_template.html',380,450);break;case 'Link':B=new FCKDialogCommand('Link',FCKLang.DlgLnkWindowTitle,'dialog/fck_link.html',400,300);break;case 'Unlink':B=new FCKUnlinkCommand();break;case 'VisitLink':B=new FCKVisitLinkCommand();break;case 'Anchor':B=new FCKDialogCommand('Anchor',FCKLang.DlgAnchorTitle,'dialog/fck_anchor.html',370,160);break;case 'AnchorDelete':B=new FCKAnchorDeleteCommand();break;case 'BulletedList':B=new FCKDialogCommand('BulletedList',FCKLang.BulletedListProp,'dialog/fck_listprop.html?UL',370,160);break;case 'NumberedList':B=new FCKDialogCommand('NumberedList',FCKLang.NumberedListProp,'dialog/fck_listprop.html?OL',370,160);break;case 'About':B=new FCKDialogCommand('About',FCKLang.About,'dialog/fck_about.html',420,330,function(){ return 0;});break;case 'Find':B=new FCKDialogCommand('Find',FCKLang.DlgFindAndReplaceTitle,'dialog/fck_replace.html',340,230,null,null,'Find');break;case 'Replace':B=new FCKDialogCommand('Replace',FCKLang.DlgFindAndReplaceTitle,'dialog/fck_replace.html',340,230,null,null,'Replace');break;case 'Image':B=new FCKDialogCommand('Image',FCKLang.DlgImgTitle,'dialog/fck_image.html',450,390);break;case 'Flash':B=new FCKDialogCommand('Flash',FCKLang.DlgFlashTitle,'dialog/fck_flash.html',450,390);break;case 'SpecialChar':B=new FCKDialogCommand('SpecialChar',FCKLang.DlgSpecialCharTitle,'dialog/fck_specialchar.html',400,290);break;case 'Smiley':B=new FCKDialogCommand('Smiley',FCKLang.DlgSmileyTitle,'dialog/fck_smiley.html',FCKConfig.SmileyWindowWidth,FCKConfig.SmileyWindowHeight);break;case 'Table':B=new FCKDialogCommand('Table',FCKLang.DlgTableTitle,'dialog/fck_table.html',480,250);break;case 'TableProp':B=new FCKDialogCommand('Table',FCKLang.DlgTableTitle,'dialog/fck_table.html?Parent',480,250);break;case 'TableCellProp':B=new FCKDialogCommand('TableCell',FCKLang.DlgCellTitle,'dialog/fck_tablecell.html',550,240);break;case 'Style':B=new FCKStyleCommand();break;case 'FontName':B=new FCKFontNameCommand();break;case 'FontSize':B=new FCKFontSizeCommand();break;case 'FontFormat':B=new FCKFormatBlockCommand();break;case 'Source':B=new FCKSourceCommand();break;case 'Preview':B=new FCKPreviewCommand();break;case 'Save':B=new FCKSaveCommand();break;case 'NewPage':B=new FCKNewPageCommand();break;case 'PageBreak':B=new FCKPageBreakCommand();break;case 'Rule':B=new FCKRuleCommand();break;case 'Nbsp':B=new FCKNbsp();break;case 'TextColor':B=new FCKTextColorCommand('ForeColor');break;case 'BGColor':B=new FCKTextColorCommand('BackColor');break;case 'Paste':B=new FCKPasteCommand();break;case 'PasteText':B=new FCKPastePlainTextCommand();break;case 'PasteWord':B=new FCKPasteWordCommand();break;case 'JustifyLeft':B=new FCKJustifyCommand('left');break;case 'JustifyCenter':B=new FCKJustifyCommand('center');break;case 'JustifyRight':B=new FCKJustifyCommand('right');break;case 'JustifyFull':B=new FCKJustifyCommand('justify');break;case 'Indent':B=new FCKIndentCommand('indent',FCKConfig.IndentLength);break;case 'Outdent':B=new FCKIndentCommand('outdent',FCKConfig.IndentLength*-1);break;case 'Blockquote':B=new FCKBlockQuoteCommand();break;case 'CreateDiv':B=new FCKDialogCommand('CreateDiv',FCKLang.CreateDiv,'dialog/fck_div.html',380,210,null,null,true);break;case 'EditDiv':B=new FCKDialogCommand('EditDiv',FCKLang.EditDiv,'dialog/fck_div.html',380,210,null,null,false);break;case 'DeleteDiv':B=new FCKDeleteDivCommand();break;case 'TableInsertRowAfter':B=new FCKTableCommand('TableInsertRowAfter');break;case 'TableInsertRowBefore':B=new FCKTableCommand('TableInsertRowBefore');break;case 'TableDeleteRows':B=new FCKTableCommand('TableDeleteRows');break;case 'TableInsertColumnAfter':B=new FCKTableCommand('TableInsertColumnAfter');break;case 'TableInsertColumnBefore':B=new FCKTableCommand('TableInsertColumnBefore');break;case 'TableDeleteColumns':B=new FCKTableCommand('TableDeleteColumns');break;case 'TableInsertCellAfter':B=new FCKTableCommand('TableInsertCellAfter');break;case 'TableInsertCellBefore':B=new FCKTableCommand('TableInsertCellBefore');break;case 'TableDeleteCells':B=new FCKTableCommand('TableDeleteCells');break;case 'TableMergeCells':B=new FCKTableCommand('TableMergeCells');break;case 'TableMergeRight':B=new FCKTableCommand('TableMergeRight');break;case 'TableMergeDown':B=new FCKTableCommand('TableMergeDown');break;case 'TableHorizontalSplitCell':B=new FCKTableCommand('TableHorizontalSplitCell');break;case 'TableVerticalSplitCell':B=new FCKTableCommand('TableVerticalSplitCell');break;case 'TableDelete':B=new FCKTableCommand('TableDelete');break;case 'Form':B=new FCKDialogCommand('Form',FCKLang.Form,'dialog/fck_form.html',380,210);break;case 'Checkbox':B=new FCKDialogCommand('Checkbox',FCKLang.Checkbox,'dialog/fck_checkbox.html',380,200);break;case 'Radio':B=new FCKDialogCommand('Radio',FCKLang.RadioButton,'dialog/fck_radiobutton.html',380,200);break;case 'TextField':B=new FCKDialogCommand('TextField',FCKLang.TextField,'dialog/fck_textfield.html',380,210);break;case 'Textarea':B=new FCKDialogCommand('Textarea',FCKLang.Textarea,'dialog/fck_textarea.html',380,210);break;case 'HiddenField':B=new FCKDialogCommand('HiddenField',FCKLang.HiddenField,'dialog/fck_hiddenfield.html',380,190);break;case 'Button':B=new FCKDialogCommand('Button',FCKLang.Button,'dialog/fck_button.html',380,210);break;case 'Select':B=new FCKDialogCommand('Select',FCKLang.SelectionField,'dialog/fck_select.html',400,340);break;case 'ImageButton':B=new FCKDialogCommand('ImageButton',FCKLang.ImageButton,'dialog/fck_image.html?ImageButton',450,390);break;case 'SpellCheck':B=new FCKSpellCheckCommand();break;case 'FitWindow':B=new FCKFitWindow();break;case 'Undo':B=new FCKUndoCommand();break;case 'Redo':B=new FCKRedoCommand();break;case 'Copy':B=new FCKCutCopyCommand(false);break;case 'Cut':B=new FCKCutCopyCommand(true);break;case 'SelectAll':B=new FCKSelectAllCommand();break;case 'InsertOrderedList':B=new FCKListCommand('insertorderedlist','ol');break;case 'InsertUnorderedList':B=new FCKListCommand('insertunorderedlist','ul');break;case 'ShowBlocks':B=new FCKShowBlockCommand('ShowBlocks',FCKConfig.StartupShowBlocks?1:0);break;case 'Undefined':B=new FCKUndefinedCommand();break;default:if (FCKRegexLib.NamedCommands.test(A)) B=new FCKNamedCommand(A);else{alert(FCKLang.UnknownCommand.replace(/%1/g,A));return null;}};FCKCommands.LoadedCommands[A]=B;return B;};FCKCommands.GetFullPageState=function(){return FCKConfig.FullPage?0:-1;};FCKCommands.GetBooleanState=function(A){return A?-1:0;};
+var FCKPanel=function(A){this.IsRTL=(FCKLang.Dir=='rtl');this.IsContextMenu=false;this._LockCounter=0;this._Window=A||window;var B;if (FCKBrowserInfo.IsIE){this._Popup=this._Window.createPopup();var C=this._Window.document;if (FCK_IS_CUSTOM_DOMAIN&&!FCKBrowserInfo.IsIE7){C.domain=FCK_ORIGINAL_DOMAIN;document.domain=FCK_ORIGINAL_DOMAIN;};B=this.Document=this._Popup.document;if (FCK_IS_CUSTOM_DOMAIN){B.domain=FCK_RUNTIME_DOMAIN;C.domain=FCK_RUNTIME_DOMAIN;document.domain=FCK_RUNTIME_DOMAIN;};FCK.IECleanup.AddItem(this,FCKPanel_Cleanup);}else{var D=this._IFrame=this._Window.document.createElement('iframe');FCKTools.ResetStyles(D);D.src='javascript:void(0)';D.allowTransparency=true;D.frameBorder='0';D.scrolling='no';D.style.width=D.style.height='0px';FCKDomTools.SetElementStyles(D,{position:'absolute',zIndex:FCKConfig.FloatingPanelsZIndex});this._Window.document.body.appendChild(D);var E=D.contentWindow;B=this.Document=E.document;var F='';if (FCKBrowserInfo.IsSafari) F='<base href="'+window.document.location+'">';B.open();B.write('<html><head>'+F+'<\/head><body style="margin:0px;padding:0px;"><\/body><\/html>');B.close();if(FCKBrowserInfo.IsAIR) FCKAdobeAIR.Panel_Contructor(B,window.document.location);FCKTools.AddEventListenerEx(E,'focus',FCKPanel_Window_OnFocus,this);FCKTools.AddEventListenerEx(E,'blur',FCKPanel_Window_OnBlur,this);};B.dir=FCKLang.Dir;FCKTools.AddEventListener(B,'contextmenu',FCKTools.CancelEvent);this.MainNode=B.body.appendChild(B.createElement('DIV'));this.MainNode.style.cssFloat=this.IsRTL?'right':'left';};FCKPanel.prototype.AppendStyleSheet=function(A){FCKTools.AppendStyleSheet(this.Document,A);};FCKPanel.prototype.Preload=function(x,y,A){if (this._Popup) this._Popup.show(x,y,0,0,A);};FCKPanel.prototype.Show=function(x,y,A,B,C){var D;var E=this.MainNode;if (this._Popup){this._Popup.show(x,y,0,0,A);FCKDomTools.SetElementStyles(E,{B:B?B+'px':'',C:C?C+'px':''});D=E.offsetWidth;if (this.IsRTL){if (this.IsContextMenu) x=x-D+1;else if (A) x=(x*-1)+A.offsetWidth-D;};this._Popup.show(x,y,D,E.offsetHeight,A);if (this.OnHide){if (this._Timer) CheckPopupOnHide.call(this,true);this._Timer=FCKTools.SetInterval(CheckPopupOnHide,100,this);}}else{if (typeof(FCK.ToolbarSet.CurrentInstance.FocusManager)!='undefined') FCK.ToolbarSet.CurrentInstance.FocusManager.Lock();if (this.ParentPanel){this.ParentPanel.Lock();FCKPanel_Window_OnBlur(null,this.ParentPanel);};if (FCKBrowserInfo.IsGecko&&FCKBrowserInfo.IsMac){this._IFrame.scrolling='';FCKTools.RunFunction(function(){ this._IFrame.scrolling='no';},this);};if (FCK.ToolbarSet.CurrentInstance.GetInstanceObject('FCKPanel')._OpenedPanel&&FCK.ToolbarSet.CurrentInstance.GetInstanceObject('FCKPanel')._OpenedPanel!=this) FCK.ToolbarSet.CurrentInstance.GetInstanceObject('FCKPanel')._OpenedPanel.Hide(false,true);FCKDomTools.SetElementStyles(E,{B:B?B+'px':'',C:C?C+'px':''});D=E.offsetWidth;if (!B)	this._IFrame.width=1;if (!C)	this._IFrame.height=1;D=E.offsetWidth||E.firstChild.offsetWidth;var F=FCKTools.GetDocumentPosition(this._Window,A.nodeType==9?(FCKTools.IsStrictMode(A)?A.documentElement:A.body):A);var G=FCKDomTools.GetPositionedAncestor(this._IFrame.parentNode);if (G){var H=FCKTools.GetDocumentPosition(FCKTools.GetElementWindow(G),G);F.x-=H.x;F.y-=H.y;};if (this.IsRTL&&!this.IsContextMenu) x=(x*-1);x+=F.x;y+=F.y;if (this.IsRTL){if (this.IsContextMenu) x=x-D+1;else if (A) x=x+A.offsetWidth-D;}else{var I=FCKTools.GetViewPaneSize(this._Window);var J=FCKTools.GetScrollPosition(this._Window);var K=I.Height+J.Y;var L=I.Width+J.X;if ((x+D)>L) x-=x+D-L;if ((y+E.offsetHeight)>K) y-=y+E.offsetHeight-K;};FCKDomTools.SetElementStyles(this._IFrame,{left:x+'px',top:y+'px'});this._IFrame.contentWindow.focus();this._IsOpened=true;var M=this;this._resizeTimer=setTimeout(function(){var N=E.offsetWidth||E.firstChild.offsetWidth;var O=E.offsetHeight;M._IFrame.style.width=N+'px';M._IFrame.style.height=O+'px';},0);FCK.ToolbarSet.CurrentInstance.GetInstanceObject('FCKPanel')._OpenedPanel=this;};FCKTools.RunFunction(this.OnShow,this);};FCKPanel.prototype.Hide=function(A,B){if (this._Popup) this._Popup.hide();else{if (!this._IsOpened||this._LockCounter>0) return;if (typeof(FCKFocusManager)!='undefined'&&!B) FCKFocusManager.Unlock();this._IFrame.style.width=this._IFrame.style.height='0px';this._IsOpened=false;if (this._resizeTimer){clearTimeout(this._resizeTimer);this._resizeTimer=null;};if (this.ParentPanel) this.ParentPanel.Unlock();if (!A) FCKTools.RunFunction(this.OnHide,this);}};FCKPanel.prototype.CheckIsOpened=function(){if (this._Popup) return this._Popup.isOpen;else return this._IsOpened;};FCKPanel.prototype.CreateChildPanel=function(){var A=this._Popup?FCKTools.GetDocumentWindow(this.Document):this._Window;var B=new FCKPanel(A);B.ParentPanel=this;return B;};FCKPanel.prototype.Lock=function(){this._LockCounter++;};FCKPanel.prototype.Unlock=function(){if (--this._LockCounter==0&&!this.HasFocus) this.Hide();};function FCKPanel_Window_OnFocus(e,A){A.HasFocus=true;};function FCKPanel_Window_OnBlur(e,A){A.HasFocus=false;if (A._LockCounter==0) FCKTools.RunFunction(A.Hide,A);};function CheckPopupOnHide(A){if (A||!this._Popup.isOpen){window.clearInterval(this._Timer);this._Timer=null;FCKTools.RunFunction(this.OnHide,this);}};function FCKPanel_Cleanup(){this._Popup=null;this._Window=null;this.Document=null;this.MainNode=null;};
 var FCKIcon=function(A){var B=A?typeof(A):'undefined';switch (B){case 'number':this.Path=FCKConfig.SkinPath+'fck_strip.gif';this.Size=16;this.Position=A;break;case 'undefined':this.Path=FCK_SPACER_PATH;break;case 'string':this.Path=A;break;default:this.Path=A[0];this.Size=A[1];this.Position=A[2];}};FCKIcon.prototype.CreateIconElement=function(A){var B,eIconImage;if (this.Position){var C='-'+((this.Position-1)*this.Size)+'px';if (FCKBrowserInfo.IsIE){B=A.createElement('DIV');eIconImage=B.appendChild(A.createElement('IMG'));eIconImage.src=this.Path;eIconImage.style.top=C;}else{B=A.createElement('IMG');B.src=FCK_SPACER_PATH;B.style.backgroundPosition='0px '+C;B.style.backgroundImage='url("'+this.Path+'")';}}else{if (FCKBrowserInfo.IsIE){B=A.createElement('DIV');eIconImage=B.appendChild(A.createElement('IMG'));eIconImage.src=this.Path?this.Path:FCK_SPACER_PATH;}else{B=A.createElement('IMG');B.src=this.Path?this.Path:FCK_SPACER_PATH;}};B.className='TB_Button_Image';return B;};
 var FCKToolbarButtonUI=function(A,B,C,D,E,F){this.Name=A;this.Label=B||A;this.Tooltip=C||this.Label;this.Style=E||0;this.State=F||0;this.Icon=new FCKIcon(D);if (FCK.IECleanup) FCK.IECleanup.AddItem(this,FCKToolbarButtonUI_Cleanup);};FCKToolbarButtonUI.prototype._CreatePaddingElement=function(A){var B=A.createElement('IMG');B.className='TB_Button_Padding';B.src=FCK_SPACER_PATH;return B;};FCKToolbarButtonUI.prototype.Create=function(A){var B=FCKTools.GetElementDocument(A);var C=this.MainElement=B.createElement('DIV');C.title=this.Tooltip;if (FCKBrowserInfo.IsGecko) C.onmousedown=FCKTools.CancelEvent;FCKTools.AddEventListenerEx(C,'mouseover',FCKToolbarButtonUI_OnMouseOver,this);FCKTools.AddEventListenerEx(C,'mouseout',FCKToolbarButtonUI_OnMouseOut,this);FCKTools.AddEventListenerEx(C,'click',FCKToolbarButtonUI_OnClick,this);this.ChangeState(this.State,true);if (this.Style==0&&!this.ShowArrow){C.appendChild(this.Icon.CreateIconElement(B));}else{var D=C.appendChild(B.createElement('TABLE'));D.cellPadding=0;D.cellSpacing=0;var E=D.insertRow(-1);var F=E.insertCell(-1);if (this.Style==0||this.Style==2) F.appendChild(this.Icon.CreateIconElement(B));else F.appendChild(this._CreatePaddingElement(B));if (this.Style==1||this.Style==2){F=E.insertCell(-1);F.className='TB_Button_Text';F.noWrap=true;F.appendChild(B.createTextNode(this.Label));};if (this.ShowArrow){if (this.Style!=0){E.insertCell(-1).appendChild(this._CreatePaddingElement(B));};F=E.insertCell(-1);var G=F.appendChild(B.createElement('IMG'));G.src=FCKConfig.SkinPath+'images/toolbar.buttonarrow.gif';G.width=5;G.height=3;};F=E.insertCell(-1);F.appendChild(this._CreatePaddingElement(B));};A.appendChild(C);};FCKToolbarButtonUI.prototype.ChangeState=function(A,B){if (!B&&this.State==A) return;var e=this.MainElement;if (!e) return;switch (parseInt(A,10)){case 0:e.className='TB_Button_Off';break;case 1:e.className='TB_Button_On';break;case -1:e.className='TB_Button_Disabled';break;};this.State=A;};function FCKToolbarButtonUI_OnMouseOver(A,B){if (B.State==0) this.className='TB_Button_Off_Over';else if (B.State==1) this.className='TB_Button_On_Over';};function FCKToolbarButtonUI_OnMouseOut(A,B){if (B.State==0) this.className='TB_Button_Off';else if (B.State==1) this.className='TB_Button_On';};function FCKToolbarButtonUI_OnClick(A,B){if (B.OnClick&&B.State!=-1) B.OnClick(B);};function FCKToolbarButtonUI_Cleanup(){this.MainElement=null;};
 var FCKToolbarButton=function(A,B,C,D,E,F,G){this.CommandName=A;this.Label=B;this.Tooltip=C;this.Style=D;this.SourceView=E?true:false;this.ContextSensitive=F?true:false;if (G==null) this.IconPath=FCKConfig.SkinPath+'toolbar/'+A.toLowerCase()+'.gif';else if (typeof(G)=='number') this.IconPath=[FCKConfig.SkinPath+'fck_strip.gif',16,G];else this.IconPath=G;};FCKToolbarButton.prototype.Create=function(A){this._UIButton=new FCKToolbarButtonUI(this.CommandName,this.Label,this.Tooltip,this.IconPath,this.Style);this._UIButton.OnClick=this.Click;this._UIButton._ToolbarButton=this;this._UIButton.Create(A);};FCKToolbarButton.prototype.RefreshState=function(){var A=this._UIButton;if (!A) return;var B=FCK.ToolbarSet.CurrentInstance.Commands.GetCommand(this.CommandName).GetState();if (B==A.State) return;A.ChangeState(B);};FCKToolbarButton.prototype.Click=function(){var A=this._ToolbarButton||this;FCK.ToolbarSet.CurrentInstance.Commands.GetCommand(A.CommandName).Execute();};FCKToolbarButton.prototype.Enable=function(){this.RefreshState();};FCKToolbarButton.prototype.Disable=function(){this._UIButton.ChangeState(-1);};
@@ -94,16 +94,16 @@
 var FCKToolbarFontsCombo=function(A,B){this.CommandName='FontName';this.Label=this.GetLabel();this.Tooltip=A?A:this.Label;this.Style=B?B:2;this.DefaultLabel=FCKConfig.DefaultFontLabel||'';};FCKToolbarFontsCombo.prototype=new FCKToolbarFontFormatCombo(false);FCKToolbarFontsCombo.prototype.GetLabel=function(){return FCKLang.Font;};FCKToolbarFontsCombo.prototype.GetStyles=function(){var A=FCKStyles.GetStyle('_FCK_FontFace');if (!A){alert("The FCKConfig.CoreStyles['Size'] setting was not found. Please check the fckconfig.js file");return {};};var B={};var C=FCKConfig.FontNames.split(';');for (var i=0;i<C.length;i++){var D=C[i].split('/');var E=D[0];var F=D[1]||E;var G=FCKTools.CloneObject(A);G.SetVariable('Font',E);G.Label=F;B[F]=G;};return B;};FCKToolbarFontsCombo.prototype.RefreshActiveItems=FCKToolbarStyleCombo.prototype.RefreshActiveItems;FCKToolbarFontsCombo.prototype.StyleCombo_OnBeforeClick=function(A){A.DeselectAll();var B=FCKSelection.GetBoundaryParentElement(true);if (B){var C=new FCKElementPath(B);for (var i in A.Items){var D=A.Items[i];var E=D.Style;if (E.CheckActive(C)){A.SelectItem(D);return;}}}};
 var FCKToolbarFontSizeCombo=function(A,B){this.CommandName='FontSize';this.Label=this.GetLabel();this.Tooltip=A?A:this.Label;this.Style=B?B:2;this.DefaultLabel=FCKConfig.DefaultFontSizeLabel||'';this.FieldWidth=70;};FCKToolbarFontSizeCombo.prototype=new FCKToolbarFontFormatCombo(false);FCKToolbarFontSizeCombo.prototype.GetLabel=function(){return FCKLang.FontSize;};FCKToolbarFontSizeCombo.prototype.GetStyles=function(){var A=FCKStyles.GetStyle('_FCK_Size');if (!A){alert("The FCKConfig.CoreStyles['FontFace'] setting was not found. Please check the fckconfig.js file");return {};};var B={};var C=FCKConfig.FontSizes.split(';');for (var i=0;i<C.length;i++){var D=C[i].split('/');var E=D[0];var F=D[1]||E;var G=FCKTools.CloneObject(A);G.SetVariable('Size',E);G.Label=F;B[F]=G;};return B;};FCKToolbarFontSizeCombo.prototype.RefreshActiveItems=FCKToolbarStyleCombo.prototype.RefreshActiveItems;FCKToolbarFontSizeCombo.prototype.StyleCombo_OnBeforeClick=FCKToolbarFontsCombo.prototype.StyleCombo_OnBeforeClick;
 var FCKToolbarPanelButton=function(A,B,C,D,E){this.CommandName=A;var F;if (E==null) F=FCKConfig.SkinPath+'toolbar/'+A.toLowerCase()+'.gif';else if (typeof(E)=='number') F=[FCKConfig.SkinPath+'fck_strip.gif',16,E];var G=this._UIButton=new FCKToolbarButtonUI(A,B,C,F,D);G._FCKToolbarPanelButton=this;G.ShowArrow=true;G.OnClick=FCKToolbarPanelButton_OnButtonClick;};FCKToolbarPanelButton.prototype.TypeName='FCKToolbarPanelButton';FCKToolbarPanelButton.prototype.Create=function(A){A.className+='Menu';this._UIButton.Create(A);var B=FCK.ToolbarSet.CurrentInstance.Commands.GetCommand(this.CommandName)._Panel;this.RegisterPanel(B);};FCKToolbarPanelButton.prototype.RegisterPanel=function(A){if (A._FCKToolbarPanelButton) return;A._FCKToolbarPanelButton=this;var B=A.Document.body.appendChild(A.Document.createElement('div'));B.style.position='absolute';B.style.top='0px';var C=A._FCKToolbarPanelButtonLineDiv=B.appendChild(A.Document.createElement('IMG'));C.className='TB_ConnectionLine';C.style.position='absolute';C.src=FCK_SPACER_PATH;A.OnHide=FCKToolbarPanelButton_OnPanelHide;};function FCKToolbarPanelButton_OnButtonClick(A){var B=this._FCKToolbarPanelButton;var e=B._UIButton.MainElement;B._UIButton.ChangeState(1);var C=FCK.ToolbarSet.CurrentInstance.Commands.GetCommand(B.CommandName);var D=C._Panel;D._FCKToolbarPanelButtonLineDiv.style.width=(e.offsetWidth-2)+'px';C.Execute(0,e.offsetHeight-1,e);};function FCKToolbarPanelButton_OnPanelHide(){var A=this._FCKToolbarPanelButton;A._UIButton.ChangeState(0);};FCKToolbarPanelButton.prototype.RefreshState=FCKToolbarButton.prototype.RefreshState;FCKToolbarPanelButton.prototype.Enable=FCKToolbarButton.prototype.Enable;FCKToolbarPanelButton.prototype.Disable=FCKToolbarButton.prototype.Disable;
-var FCKToolbarItems={};FCKToolbarItems.LoadedItems={};FCKToolbarItems.RegisterItem=function(A,B){this.LoadedItems[A]=B;};FCKToolbarItems.GetItem=function(A){var B=FCKToolbarItems.LoadedItems[A];if (B) return B;switch (A){case 'Source':B=new FCKToolbarButton('Source',FCKLang.Source,null,2,true,true,1);break;case 'DocProps':B=new FCKToolbarButton('DocProps',FCKLang.DocProps,null,null,null,null,2);break;case 'Save':B=new FCKToolbarButton('Save',FCKLang.Save,null,null,true,null,3);break;case 'NewPage':B=new FCKToolbarButton('NewPage',FCKLang.NewPage,null,null,true,null,4);break;case 'Preview':B=new FCKToolbarButton('Preview',FCKLang.Preview,null,null,true,null,5);break;case 'Templates':B=new FCKToolbarButton('Templates',FCKLang.Templates,null,null,null,null,6);break;case 'About':B=new FCKToolbarButton('About',FCKLang.About,null,null,true,null,47);break;case 'Cut':B=new FCKToolbarButton('Cut',FCKLang.Cut,null,null,false,true,7);break;case 'Copy':B=new FCKToolbarButton('Copy',FCKLang.Copy,null,null,false,true,8);break;case 'Paste':B=new FCKToolbarButton('Paste',FCKLang.Paste,null,null,false,true,9);break;case 'PasteText':B=new FCKToolbarButton('PasteText',FCKLang.PasteText,null,null,false,true,10);break;case 'PasteWord':B=new FCKToolbarButton('PasteWord',FCKLang.PasteWord,null,null,false,true,11);break;case 'Print':B=new FCKToolbarButton('Print',FCKLang.Print,null,null,false,true,12);break;case 'SpellCheck':B=new FCKToolbarButton('SpellCheck',FCKLang.SpellCheck,null,null,null,null,13);break;case 'Undo':B=new FCKToolbarButton('Undo',FCKLang.Undo,null,null,false,true,14);break;case 'Redo':B=new FCKToolbarButton('Redo',FCKLang.Redo,null,null,false,true,15);break;case 'SelectAll':B=new FCKToolbarButton('SelectAll',FCKLang.SelectAll,null,null,true,null,18);break;case 'RemoveFormat':B=new FCKToolbarButton('RemoveFormat',FCKLang.RemoveFormat,null,null,false,true,19);break;case 'FitWindow':B=new FCKToolbarButton('FitWindow',FCKLang.FitWindow,null,null,true,true,66);break;case 'Bold':B=new FCKToolbarButton('Bold',FCKLang.Bold,null,null,false,true,20);break;case 'Italic':B=new FCKToolbarButton('Italic',FCKLang.Italic,null,null,false,true,21);break;case 'Underline':B=new FCKToolbarButton('Underline',FCKLang.Underline,null,null,false,true,22);break;case 'StrikeThrough':B=new FCKToolbarButton('StrikeThrough',FCKLang.StrikeThrough,null,null,false,true,23);break;case 'Subscript':B=new FCKToolbarButton('Subscript',FCKLang.Subscript,null,null,false,true,24);break;case 'Superscript':B=new FCKToolbarButton('Superscript',FCKLang.Superscript,null,null,false,true,25);break;case 'OrderedList':B=new FCKToolbarButton('InsertOrderedList',FCKLang.NumberedListLbl,FCKLang.NumberedList,null,false,true,26);break;case 'UnorderedList':B=new FCKToolbarButton('InsertUnorderedList',FCKLang.BulletedListLbl,FCKLang.BulletedList,null,false,true,27);break;case 'Outdent':B=new FCKToolbarButton('Outdent',FCKLang.DecreaseIndent,null,null,false,true,28);break;case 'Indent':B=new FCKToolbarButton('Indent',FCKLang.IncreaseIndent,null,null,false,true,29);break;case 'Blockquote':B=new FCKToolbarButton('Blockquote',FCKLang.Blockquote,null,null,false,true,73);break;case 'Link':B=new FCKToolbarButton('Link',FCKLang.InsertLinkLbl,FCKLang.InsertLink,null,false,true,34);break;case 'Unlink':B=new FCKToolbarButton('Unlink',FCKLang.RemoveLink,null,null,false,true,35);break;case 'Anchor':B=new FCKToolbarButton('Anchor',FCKLang.Anchor,null,null,null,null,36);break;case 'Image':B=new FCKToolbarButton('Image',FCKLang.InsertImageLbl,FCKLang.InsertImage,null,false,true,37);break;case 'Flash':B=new FCKToolbarButton('Flash',FCKLang.InsertFlashLbl,FCKLang.InsertFlash,null,false,true,38);break;case 'Table':B=new FCKToolbarButton('Table',FCKLang.InsertTableLbl,FCKLang.InsertTable,null,false,true,39);break;case 'SpecialChar':B=new FCKToolbarButton('SpecialChar',FCKLang.InsertSpecialCharLbl,FCKLang.InsertSpecialChar,null,false,true,42);break;case 'Smiley':B=new FCKToolbarButton('Smiley',FCKLang.InsertSmileyLbl,FCKLang.InsertSmiley,null,false,true,41);break;case 'PageBreak':B=new FCKToolbarButton('PageBreak',FCKLang.PageBreakLbl,FCKLang.PageBreak,null,false,true,43);break;case 'Rule':B=new FCKToolbarButton('Rule',FCKLang.InsertLineLbl,FCKLang.InsertLine,null,false,true,40);break;case 'JustifyLeft':B=new FCKToolbarButton('JustifyLeft',FCKLang.LeftJustify,null,null,false,true,30);break;case 'JustifyCenter':B=new FCKToolbarButton('JustifyCenter',FCKLang.CenterJustify,null,null,false,true,31);break;case 'JustifyRight':B=new FCKToolbarButton('JustifyRight',FCKLang.RightJustify,null,null,false,true,32);break;case 'JustifyFull':B=new FCKToolbarButton('JustifyFull',FCKLang.BlockJustify,null,null,false,true,33);break;case 'Style':B=new FCKToolbarStyleCombo();break;case 'FontName':B=new FCKToolbarFontsCombo();break;case 'FontSize':B=new FCKToolbarFontSizeCombo();break;case 'FontFormat':B=new FCKToolbarFontFormatCombo();break;case 'TextColor':B=new FCKToolbarPanelButton('TextColor',FCKLang.TextColor,null,null,45);break;case 'BGColor':B=new FCKToolbarPanelButton('BGColor',FCKLang.BGColor,null,null,46);break;case 'Find':B=new FCKToolbarButton('Find',FCKLang.Find,null,null,null,null,16);break;case 'Replace':B=new FCKToolbarButton('Replace',FCKLang.Replace,null,null,null,null,17);break;case 'Form':B=new FCKToolbarButton('Form',FCKLang.Form,null,null,null,null,48);break;case 'Checkbox':B=new FCKToolbarButton('Checkbox',FCKLang.Checkbox,null,null,null,null,49);break;case 'Radio':B=new FCKToolbarButton('Radio',FCKLang.RadioButton,null,null,null,null,50);break;case 'TextField':B=new FCKToolbarButton('TextField',FCKLang.TextField,null,null,null,null,51);break;case 'Textarea':B=new FCKToolbarButton('Textarea',FCKLang.Textarea,null,null,null,null,52);break;case 'HiddenField':B=new FCKToolbarButton('HiddenField',FCKLang.HiddenField,null,null,null,null,56);break;case 'Button':B=new FCKToolbarButton('Button',FCKLang.Button,null,null,null,null,54);break;case 'Select':B=new FCKToolbarButton('Select',FCKLang.SelectionField,null,null,null,null,53);break;case 'ImageButton':B=new FCKToolbarButton('ImageButton',FCKLang.ImageButton,null,null,null,null,55);break;case 'ShowBlocks':B=new FCKToolbarButton('ShowBlocks',FCKLang.ShowBlocks,null,null,null,true,72);break;default:alert(FCKLang.UnknownToolbarItem.replace(/%1/g,A));return null;};FCKToolbarItems.LoadedItems[A]=B;return B;};
+var FCKToolbarItems={};FCKToolbarItems.LoadedItems={};FCKToolbarItems.RegisterItem=function(A,B){this.LoadedItems[A]=B;};FCKToolbarItems.GetItem=function(A){var B=FCKToolbarItems.LoadedItems[A];if (B) return B;switch (A){case 'Source':B=new FCKToolbarButton('Source',FCKLang.Source,null,2,true,true,1);break;case 'DocProps':B=new FCKToolbarButton('DocProps',FCKLang.DocProps,null,null,null,null,2);break;case 'Save':B=new FCKToolbarButton('Save',FCKLang.Save,null,null,true,null,3);break;case 'NewPage':B=new FCKToolbarButton('NewPage',FCKLang.NewPage,null,null,true,null,4);break;case 'Preview':B=new FCKToolbarButton('Preview',FCKLang.Preview,null,null,true,null,5);break;case 'Templates':B=new FCKToolbarButton('Templates',FCKLang.Templates,null,null,null,null,6);break;case 'About':B=new FCKToolbarButton('About',FCKLang.About,null,null,true,null,47);break;case 'Cut':B=new FCKToolbarButton('Cut',FCKLang.Cut,null,null,false,true,7);break;case 'Copy':B=new FCKToolbarButton('Copy',FCKLang.Copy,null,null,false,true,8);break;case 'Paste':B=new FCKToolbarButton('Paste',FCKLang.Paste,null,null,false,true,9);break;case 'PasteText':B=new FCKToolbarButton('PasteText',FCKLang.PasteText,null,null,false,true,10);break;case 'PasteWord':B=new FCKToolbarButton('PasteWord',FCKLang.PasteWord,null,null,false,true,11);break;case 'Print':B=new FCKToolbarButton('Print',FCKLang.Print,null,null,false,true,12);break;case 'SpellCheck':B=new FCKToolbarButton('SpellCheck',FCKLang.SpellCheck,null,null,null,null,13);break;case 'Undo':B=new FCKToolbarButton('Undo',FCKLang.Undo,null,null,false,true,14);break;case 'Redo':B=new FCKToolbarButton('Redo',FCKLang.Redo,null,null,false,true,15);break;case 'SelectAll':B=new FCKToolbarButton('SelectAll',FCKLang.SelectAll,null,null,true,null,18);break;case 'RemoveFormat':B=new FCKToolbarButton('RemoveFormat',FCKLang.RemoveFormat,null,null,false,true,19);break;case 'FitWindow':B=new FCKToolbarButton('FitWindow',FCKLang.FitWindow,null,null,true,true,66);break;case 'Bold':B=new FCKToolbarButton('Bold',FCKLang.Bold,null,null,false,true,20);break;case 'Italic':B=new FCKToolbarButton('Italic',FCKLang.Italic,null,null,false,true,21);break;case 'Underline':B=new FCKToolbarButton('Underline',FCKLang.Underline,null,null,false,true,22);break;case 'StrikeThrough':B=new FCKToolbarButton('StrikeThrough',FCKLang.StrikeThrough,null,null,false,true,23);break;case 'Subscript':B=new FCKToolbarButton('Subscript',FCKLang.Subscript,null,null,false,true,24);break;case 'Superscript':B=new FCKToolbarButton('Superscript',FCKLang.Superscript,null,null,false,true,25);break;case 'OrderedList':B=new FCKToolbarButton('InsertOrderedList',FCKLang.NumberedListLbl,FCKLang.NumberedList,null,false,true,26);break;case 'UnorderedList':B=new FCKToolbarButton('InsertUnorderedList',FCKLang.BulletedListLbl,FCKLang.BulletedList,null,false,true,27);break;case 'Outdent':B=new FCKToolbarButton('Outdent',FCKLang.DecreaseIndent,null,null,false,true,28);break;case 'Indent':B=new FCKToolbarButton('Indent',FCKLang.IncreaseIndent,null,null,false,true,29);break;case 'Blockquote':B=new FCKToolbarButton('Blockquote',FCKLang.Blockquote,null,null,false,true,73);break;case 'CreateDiv':B=new FCKToolbarButton('CreateDiv',FCKLang.CreateDiv,null,null,false,true,74);break;case 'Link':B=new FCKToolbarButton('Link',FCKLang.InsertLinkLbl,FCKLang.InsertLink,null,false,true,34);break;case 'Unlink':B=new FCKToolbarButton('Unlink',FCKLang.RemoveLink,null,null,false,true,35);break;case 'Anchor':B=new FCKToolbarButton('Anchor',FCKLang.Anchor,null,null,null,null,36);break;case 'Image':B=new FCKToolbarButton('Image',FCKLang.InsertImageLbl,FCKLang.InsertImage,null,false,true,37);break;case 'Flash':B=new FCKToolbarButton('Flash',FCKLang.InsertFlashLbl,FCKLang.InsertFlash,null,false,true,38);break;case 'Table':B=new FCKToolbarButton('Table',FCKLang.InsertTableLbl,FCKLang.InsertTable,null,false,true,39);break;case 'SpecialChar':B=new FCKToolbarButton('SpecialChar',FCKLang.InsertSpecialCharLbl,FCKLang.InsertSpecialChar,null,false,true,42);break;case 'Smiley':B=new FCKToolbarButton('Smiley',FCKLang.InsertSmileyLbl,FCKLang.InsertSmiley,null,false,true,41);break;case 'PageBreak':B=new FCKToolbarButton('PageBreak',FCKLang.PageBreakLbl,FCKLang.PageBreak,null,false,true,43);break;case 'Rule':B=new FCKToolbarButton('Rule',FCKLang.InsertLineLbl,FCKLang.InsertLine,null,false,true,40);break;case 'JustifyLeft':B=new FCKToolbarButton('JustifyLeft',FCKLang.LeftJustify,null,null,false,true,30);break;case 'JustifyCenter':B=new FCKToolbarButton('JustifyCenter',FCKLang.CenterJustify,null,null,false,true,31);break;case 'JustifyRight':B=new FCKToolbarButton('JustifyRight',FCKLang.RightJustify,null,null,false,true,32);break;case 'JustifyFull':B=new FCKToolbarButton('JustifyFull',FCKLang.BlockJustify,null,null,false,true,33);break;case 'Style':B=new FCKToolbarStyleCombo();break;case 'FontName':B=new FCKToolbarFontsCombo();break;case 'FontSize':B=new FCKToolbarFontSizeCombo();break;case 'FontFormat':B=new FCKToolbarFontFormatCombo();break;case 'TextColor':B=new FCKToolbarPanelButton('TextColor',FCKLang.TextColor,null,null,45);break;case 'BGColor':B=new FCKToolbarPanelButton('BGColor',FCKLang.BGColor,null,null,46);break;case 'Find':B=new FCKToolbarButton('Find',FCKLang.Find,null,null,null,null,16);break;case 'Replace':B=new FCKToolbarButton('Replace',FCKLang.Replace,null,null,null,null,17);break;case 'Form':B=new FCKToolbarButton('Form',FCKLang.Form,null,null,null,null,48);break;case 'Checkbox':B=new FCKToolbarButton('Checkbox',FCKLang.Checkbox,null,null,null,null,49);break;case 'Radio':B=new FCKToolbarButton('Radio',FCKLang.RadioButton,null,null,null,null,50);break;case 'TextField':B=new FCKToolbarButton('TextField',FCKLang.TextField,null,null,null,null,51);break;case 'Textarea':B=new FCKToolbarButton('Textarea',FCKLang.Textarea,null,null,null,null,52);break;case 'HiddenField':B=new FCKToolbarButton('HiddenField',FCKLang.HiddenField,null,null,null,null,56);break;case 'Button':B=new FCKToolbarButton('Button',FCKLang.Button,null,null,null,null,54);break;case 'Select':B=new FCKToolbarButton('Select',FCKLang.SelectionField,null,null,null,null,53);break;case 'ImageButton':B=new FCKToolbarButton('ImageButton',FCKLang.ImageButton,null,null,null,null,55);break;case 'ShowBlocks':B=new FCKToolbarButton('ShowBlocks',FCKLang.ShowBlocks,null,null,null,true,72);break;default:alert(FCKLang.UnknownToolbarItem.replace(/%1/g,A));return null;};FCKToolbarItems.LoadedItems[A]=B;return B;};
 var FCKToolbar=function(){this.Items=[];};FCKToolbar.prototype.AddItem=function(A){return this.Items[this.Items.length]=A;};FCKToolbar.prototype.AddButton=function(A,B,C,D,E,F){if (typeof(D)=='number') D=[this.DefaultIconsStrip,this.DefaultIconSize,D];var G=new FCKToolbarButtonUI(A,B,C,D,E,F);G._FCKToolbar=this;G.OnClick=FCKToolbar_OnItemClick;return this.AddItem(G);};function FCKToolbar_OnItemClick(A){var B=A._FCKToolbar;if (B.OnItemClick) B.OnItemClick(B,A);};FCKToolbar.prototype.AddSeparator=function(){this.AddItem(new FCKToolbarSeparator());};FCKToolbar.prototype.Create=function(A){var B=FCKTools.GetElementDocument(A);var e=B.createElement('table');e.className='TB_Toolbar';e.style.styleFloat=e.style.cssFloat=(FCKLang.Dir=='ltr'?'left':'right');e.dir=FCKLang.Dir;e.cellPadding=0;e.cellSpacing=0;var C=e.insertRow(-1);var D;if (!this.HideStart){D=C.insertCell(-1);D.appendChild(B.createElement('div')).className='TB_Start';};for (var i=0;i<this.Items.length;i++){this.Items[i].Create(C.insertCell(-1));};if (!this.HideEnd){D=C.insertCell(-1);D.appendChild(B.createElement('div')).className='TB_End';};A.appendChild(e);};var FCKToolbarSeparator=function(){};FCKToolbarSeparator.prototype.Create=function(A){FCKTools.AppendElement(A,'div').className='TB_Separator';};
 var FCKToolbarBreak=function(){};FCKToolbarBreak.prototype.Create=function(A){var B=FCKTools.GetElementDocument(A).createElement('div');B.className='TB_Break';B.style.clear=FCKLang.Dir=='rtl'?'left':'right';A.appendChild(B);};
 function FCKToolbarSet_Create(A){var B;var C=A||FCKConfig.ToolbarLocation;switch (C){case 'In':document.getElementById('xToolbarRow').style.display='';B=new FCKToolbarSet(document);break;case 'None':B=new FCKToolbarSet(document);break;default:FCK.Events.AttachEvent('OnBlur',FCK_OnBlur);FCK.Events.AttachEvent('OnFocus',FCK_OnFocus);var D;var E=C.match(/^Out:(.+)\((\w+)\)$/);if (E){if (FCKBrowserInfo.IsAIR) FCKAdobeAIR.ToolbarSet_GetOutElement(window,E);else D=eval('parent.'+E[1]).document.getElementById(E[2]);}else{E=C.match(/^Out:(\w+)$/);if (E) D=parent.document.getElementById(E[1]);};if (!D){alert('Invalid value for "ToolbarLocation"');return arguments.callee('In');};B=D.__FCKToolbarSet;if (B) break;var F=FCKTools.GetElementDocument(D).createElement('iframe');F.src='javascript:void(0)';F.frameBorder=0;F.width='100%';F.height='10';D.appendChild(F);F.unselectable='on';var G=F.contentWindow.document;var H='';if (FCKBrowserInfo.IsSafari) H='<base href="'+window.document.location+'">';G.open();G.write('<html><head>'+H+'<script type="text/javascript"> var adjust = function() { window.frameElement.height = document.body.scrollHeight ; }; window.onresize = window.onload = function(){var timer = null;var lastHeight = -1;var lastChange = 0;var poller = function(){var currentHeight = document.body.scrollHeight || 0;var currentTime = (new Date()).getTime();if (currentHeight != lastHeight){lastChange = currentTime;adjust();lastHeight = document.body.scrollHeight;}if (lastChange < currentTime - 1000) clearInterval(timer);};timer = setInterval(poller, 100);}</script></head><body style="overflow: hidden">'+document.getElementById('xToolbarSpace').innerHTML+'</body></html>');G.close();if(FCKBrowserInfo.IsAIR) FCKAdobeAIR.ToolbarSet_InitOutFrame(G);FCKTools.AddEventListener(G,'contextmenu',FCKTools.CancelEvent);FCKTools.AppendStyleSheet(G,FCKConfig.SkinEditorCSS);B=D.__FCKToolbarSet=new FCKToolbarSet(G);B._IFrame=F;if (FCK.IECleanup) FCK.IECleanup.AddItem(D,FCKToolbarSet_Target_Cleanup);};B.CurrentInstance=FCK;if (!B.ToolbarItems) B.ToolbarItems=FCKToolbarItems;FCK.AttachToOnSelectionChange(B.RefreshItemsState);return B;};function FCK_OnBlur(A){var B=A.ToolbarSet;if (B.CurrentInstance==A) B.Disable();};function FCK_OnFocus(A){var B=A.ToolbarSet;var C=A||FCK;B.CurrentInstance.FocusManager.RemoveWindow(B._IFrame.contentWindow);B.CurrentInstance=C;C.FocusManager.AddWindow(B._IFrame.contentWindow,true);B.Enable();};function FCKToolbarSet_Cleanup(){this._TargetElement=null;this._IFrame=null;};function FCKToolbarSet_Target_Cleanup(){this.__FCKToolbarSet=null;};var FCKToolbarSet=function(A){this._Document=A;this._TargetElement=A.getElementById('xToolbar');var B=A.getElementById('xExpandHandle');var C=A.getElementById('xCollapseHandle');B.title=FCKLang.ToolbarExpand;FCKTools.AddEventListener(B,'click',FCKToolbarSet_Expand_OnClick);C.title=FCKLang.ToolbarCollapse;FCKTools.AddEventListener(C,'click',FCKToolbarSet_Collapse_OnClick);if (!FCKConfig.ToolbarCanCollapse||FCKConfig.ToolbarStartExpanded) this.Expand();else this.Collapse();C.style.display=FCKConfig.ToolbarCanCollapse?'':'none';if (FCKConfig.ToolbarCanCollapse) C.style.display='';else A.getElementById('xTBLeftBorder').style.display='';this.Toolbars=[];this.IsLoaded=false;if (FCK.IECleanup) FCK.IECleanup.AddItem(this,FCKToolbarSet_Cleanup);};function FCKToolbarSet_Expand_OnClick(){FCK.ToolbarSet.Expand();};function FCKToolbarSet_Collapse_OnClick(){FCK.ToolbarSet.Collapse();};FCKToolbarSet.prototype.Expand=function(){this._ChangeVisibility(false);};FCKToolbarSet.prototype.Collapse=function(){this._ChangeVisibility(true);};FCKToolbarSet.prototype._ChangeVisibility=function(A){this._Document.getElementById('xCollapsed').style.display=A?'':'none';this._Document.getElementById('xExpanded').style.display=A?'none':'';if (FCKBrowserInfo.IsGecko){FCKTools.RunFunction(window.onresize);}};FCKToolbarSet.prototype.Load=function(A){this.Name=A;this.Items=[];this.ItemsWysiwygOnly=[];this.ItemsContextSensitive=[];this._TargetElement.innerHTML='';var B=FCKConfig.ToolbarSets[A];if (!B){alert(FCKLang.UnknownToolbarSet.replace(/%1/g,A));return;};this.Toolbars=[];for (var x=0;x<B.length;x++){var C=B[x];if (!C) continue;var D;if (typeof(C)=='string'){if (C=='/') D=new FCKToolbarBreak();}else{D=new FCKToolbar();for (var j=0;j<C.length;j++){var E=C[j];if (E=='-') D.AddSeparator();else{var F=FCKToolbarItems.GetItem(E);if (F){D.AddItem(F);this.Items.push(F);if (!F.SourceView) this.ItemsWysiwygOnly.push(F);if (F.ContextSensitive) this.ItemsContextSensitive.push(F);}}}};D.Create(this._TargetElement);this.Toolbars[this.Toolbars.length]=D;};FCKTools.DisableSelection(this._Document.getElementById('xCollapseHandle').parentNode);if (FCK.Status!=2) FCK.Events.AttachEvent('OnStatusChange',this.RefreshModeState);else this.RefreshModeState();this.IsLoaded=true;this.IsEnabled=true;FCKTools.RunFunction(this.OnLoad);};FCKToolbarSet.prototype.Enable=function(){if (this.IsEnabled) return;this.IsEnabled=true;var A=this.Items;for (var i=0;i<A.length;i++) A[i].RefreshState();};FCKToolbarSet.prototype.Disable=function(){if (!this.IsEnabled) return;this.IsEnabled=false;var A=this.Items;for (var i=0;i<A.length;i++) A[i].Disable();};FCKToolbarSet.prototype.RefreshModeState=function(A){if (FCK.Status!=2) return;var B=A?A.ToolbarSet:this;var C=B.ItemsWysiwygOnly;if (FCK.EditMode==0){for (var i=0;i<C.length;i++) C[i].Enable();B.RefreshItemsState(A);}else{B.RefreshItemsState(A);for (var j=0;j<C.length;j++) C[j].Disable();}};FCKToolbarSet.prototype.RefreshItemsState=function(A){var B=(A?A.ToolbarSet:this).ItemsContextSensitive;for (var i=0;i<B.length;i++) B[i].RefreshState();};
-var FCKDialog=(function(){var A;var B;var C;var D=window.parent;while (D.parent&&D.parent!=D){try{if (D.parent.document.domain!=document.domain) break;if (D.parent.document.getElementsByTagName('frameset').length>0) break;}catch (e){break;};D=D.parent;};var E=D.document;var F=function(){if (!B) B=FCKConfig.FloatingPanelsZIndex+999;return++B;};var G=function(){if (!C) return;var H=FCKTools.IsStrictMode(E)?E.documentElement:E.body;FCKDomTools.SetElementStyles(C,{'width':Math.max(H.scrollWidth,H.clientWidth,E.scrollWidth||0)-1+'px','height':Math.max(H.scrollHeight,H.clientHeight,E.scrollHeight||0)-1+'px'});};var I=function(element){element.style.cssText='margin:0;padding:0;border:0;background-color:transparent;background-image:none;';};return {OpenDialog:function(dialogName,dialogTitle,dialogPage,width,height,customValue,parentWindow,resizable){if (!A) this.DisplayMainCover();var J={Title:dialogTitle,Page:dialogPage,Editor:window,CustomValue:customValue,TopWindow:D};FCK.ToolbarSet.CurrentInstance.Selection.Save();var K=FCKTools.GetViewPaneSize(D);var L=FCKTools.GetScrollPosition(D);var M=Math.max(L.Y+(K.Height-height-20)/2,0);var N=Math.max(L.X+(K.Width-width-20)/2,0);var O=E.createElement('iframe');I(O);O.src=FCKConfig.BasePath+'fckdialog.html';O.frameBorder=0;O.allowTransparency=true;FCKDomTools.SetElementStyles(O,{'position':'absolute','top':M+'px','left':N+'px','width':width+'px','height':height+'px','zIndex':F()});O._DialogArguments=J;E.body.appendChild(O);O._ParentDialog=A;A=O;},OnDialogClose:function(dialogWindow){var O=dialogWindow.frameElement;FCKDomTools.RemoveNode(O);if (O._ParentDialog){A=O._ParentDialog;O._ParentDialog.contentWindow.SetEnabled(true);}else{if (!FCKBrowserInfo.IsIE) FCK.Focus();this.HideMainCover();setTimeout(function(){ A=null;},0);FCK.ToolbarSet.CurrentInstance.Selection.Release();}},DisplayMainCover:function(){C=E.createElement('div');I(C);FCKDomTools.SetElementStyles(C,{'position':'absolute','zIndex':F(),'top':'0px','left':'0px','backgroundColor':FCKConfig.BackgroundBlockerColor});FCKDomTools.SetOpacity(C,FCKConfig.BackgroundBlockerOpacity);if (FCKBrowserInfo.IsIE&&!FCKBrowserInfo.IsIE7){var Q=E.createElement('iframe');I(Q);Q.hideFocus=true;Q.frameBorder=0;Q.src=FCKTools.GetVoidUrl();FCKDomTools.SetElementStyles(Q,{'width':'100%','height':'100%','position':'absolute','left':'0px','top':'0px','filter':'progid:DXImageTransform.Microsoft.Alpha(opacity=0)'});C.appendChild(Q);};FCKTools.AddEventListener(D,'resize',G);G();E.body.appendChild(C);FCKFocusManager.Lock();},HideMainCover:function(){FCKDomTools.RemoveNode(C);FCKFocusManager.Unlock();},GetCover:function(){return C;}};})();
+var FCKDialog=(function(){var A;var B;var C;var D=window.parent;while (D.parent&&D.parent!=D){try{if (D.parent.document.domain!=document.domain) break;if (D.parent.document.getElementsByTagName('frameset').length>0) break;}catch (e){break;};D=D.parent;};var E=D.document;var F=function(){if (!B) B=FCKConfig.FloatingPanelsZIndex+999;return++B;};var G=function(){if (!C) return;var H=FCKTools.IsStrictMode(E)?E.documentElement:E.body;FCKDomTools.SetElementStyles(C,{'width':Math.max(H.scrollWidth,H.clientWidth,E.scrollWidth||0)-1+'px','height':Math.max(H.scrollHeight,H.clientHeight,E.scrollHeight||0)-1+'px'});};return {OpenDialog:function(dialogName,dialogTitle,dialogPage,width,height,customValue,parentWindow,resizable){if (!A) this.DisplayMainCover();var I={Title:dialogTitle,Page:dialogPage,Editor:window,CustomValue:customValue,TopWindow:D};FCK.ToolbarSet.CurrentInstance.Selection.Save();var J=FCKTools.GetViewPaneSize(D);var K={ 'X':0,'Y':0 };var L=FCKBrowserInfo.IsIE&&(!FCKBrowserInfo.IsIE7||!FCKTools.IsStrictMode(D.document));if (L) K=FCKTools.GetScrollPosition(D);var M=Math.max(K.Y+(J.Height-height-20)/2,0);var N=Math.max(K.X+(J.Width-width-20)/2,0);var O=E.createElement('iframe');FCKTools.ResetStyles(O);O.src=FCKConfig.BasePath+'fckdialog.html';O.frameBorder=0;O.allowTransparency=true;FCKDomTools.SetElementStyles(O,{'position':(L)?'absolute':'fixed','top':M+'px','left':N+'px','width':width+'px','height':height+'px','zIndex':F()});O._DialogArguments=I;E.body.appendChild(O);O._ParentDialog=A;A=O;},OnDialogClose:function(dialogWindow){var O=dialogWindow.frameElement;FCKDomTools.RemoveNode(O);if (O._ParentDialog){A=O._ParentDialog;O._ParentDialog.contentWindow.SetEnabled(true);}else{if (!FCKBrowserInfo.IsIE) FCK.Focus();this.HideMainCover();setTimeout(function(){ A=null;},0);FCK.ToolbarSet.CurrentInstance.Selection.Release();}},DisplayMainCover:function(){C=E.createElement('div');FCKTools.ResetStyles(C);FCKDomTools.SetElementStyles(C,{'position':'absolute','zIndex':F(),'top':'0px','left':'0px','backgroundColor':FCKConfig.BackgroundBlockerColor});FCKDomTools.SetOpacity(C,FCKConfig.BackgroundBlockerOpacity);if (FCKBrowserInfo.IsIE&&!FCKBrowserInfo.IsIE7){var Q=E.createElement('iframe');FCKTools.ResetStyles(Q);Q.hideFocus=true;Q.frameBorder=0;Q.src=FCKTools.GetVoidUrl();FCKDomTools.SetElementStyles(Q,{'width':'100%','height':'100%','position':'absolute','left':'0px','top':'0px','filter':'progid:DXImageTransform.Microsoft.Alpha(opacity=0)'});C.appendChild(Q);};FCKTools.AddEventListener(D,'resize',G);G();E.body.appendChild(C);FCKFocusManager.Lock();var R=FCK.ToolbarSet.CurrentInstance.GetInstanceObject('frameElement');R._fck_originalTabIndex=R.tabIndex;R.tabIndex=-1;},HideMainCover:function(){FCKDomTools.RemoveNode(C);FCKFocusManager.Unlock();var R=FCK.ToolbarSet.CurrentInstance.GetInstanceObject('frameElement');R.tabIndex=R._fck_originalTabIndex;FCKDomTools.ClearElementJSProperty(R,'_fck_originalTabIndex');},GetCover:function(){return C;}};})();
 var FCKMenuItem=function(A,B,C,D,E,F){this.Name=B;this.Label=C||B;this.IsDisabled=E;this.Icon=new FCKIcon(D);this.SubMenu=new FCKMenuBlockPanel();this.SubMenu.Parent=A;this.SubMenu.OnClick=FCKTools.CreateEventListener(FCKMenuItem_SubMenu_OnClick,this);this.CustomData=F;if (FCK.IECleanup) FCK.IECleanup.AddItem(this,FCKMenuItem_Cleanup);};FCKMenuItem.prototype.AddItem=function(A,B,C,D,E){this.HasSubMenu=true;return this.SubMenu.AddItem(A,B,C,D,E);};FCKMenuItem.prototype.AddSeparator=function(){this.SubMenu.AddSeparator();};FCKMenuItem.prototype.Create=function(A){var B=this.HasSubMenu;var C=FCKTools.GetElementDocument(A);var r=this.MainElement=A.insertRow(-1);r.className=this.IsDisabled?'MN_Item_Disabled':'MN_Item';if (!this.IsDisabled){FCKTools.AddEventListenerEx(r,'mouseover',FCKMenuItem_OnMouseOver,[this]);FCKTools.AddEventListenerEx(r,'click',FCKMenuItem_OnClick,[this]);if (!B) FCKTools.AddEventListenerEx(r,'mouseout',FCKMenuItem_OnMouseOut,[this]);};var D=r.insertCell(-1);D.className='MN_Icon';D.appendChild(this.Icon.CreateIconElement(C));D=r.insertCell(-1);D.className='MN_Label';D.noWrap=true;D.appendChild(C.createTextNode(this.Label));D=r.insertCell(-1);if (B){D.className='MN_Arrow';var E=D.appendChild(C.createElement('IMG'));E.src=FCK_IMAGES_PATH+'arrow_'+FCKLang.Dir+'.gif';E.width=4;E.height=7;this.SubMenu.Create();this.SubMenu.Panel.OnHide=FCKTools.CreateEventListener(FCKMenuItem_SubMenu_OnHide,this);}};FCKMenuItem.prototype.Activate=function(){this.MainElement.className='MN_Item_Over';if (this.HasSubMenu){this.SubMenu.Show(this.MainElement.offsetWidth+2,-2,this.MainElement);};FCKTools.RunFunction(this.OnActivate,this);};FCKMenuItem.prototype.Deactivate=function(){this.MainElement.className='MN_Item';if (this.HasSubMenu) this.SubMenu.Hide();};function FCKMenuItem_SubMenu_OnClick(A,B){FCKTools.RunFunction(B.OnClick,B,[A]);};function FCKMenuItem_SubMenu_OnHide(A){A.Deactivate();};function FCKMenuItem_OnClick(A,B){if (B.HasSubMenu) B.Activate();else{B.Deactivate();FCKTools.RunFunction(B.OnClick,B,[B]);}};function FCKMenuItem_OnMouseOver(A,B){B.Activate();};function FCKMenuItem_OnMouseOut(A,B){B.Deactivate();};function FCKMenuItem_Cleanup(){this.MainElement=null;};
 var FCKMenuBlock=function(){this._Items=[];};FCKMenuBlock.prototype.Count=function(){return this._Items.length;};FCKMenuBlock.prototype.AddItem=function(A,B,C,D,E){var F=new FCKMenuItem(this,A,B,C,D,E);F.OnClick=FCKTools.CreateEventListener(FCKMenuBlock_Item_OnClick,this);F.OnActivate=FCKTools.CreateEventListener(FCKMenuBlock_Item_OnActivate,this);this._Items.push(F);return F;};FCKMenuBlock.prototype.AddSeparator=function(){this._Items.push(new FCKMenuSeparator());};FCKMenuBlock.prototype.RemoveAllItems=function(){this._Items=[];var A=this._ItemsTable;if (A){while (A.rows.length>0) A.deleteRow(0);}};FCKMenuBlock.prototype.Create=function(A){if (!this._ItemsTable){if (FCK.IECleanup) FCK.IECleanup.AddItem(this,FCKMenuBlock_Cleanup);this._Window=FCKTools.GetElementWindow(A);var B=FCKTools.GetElementDocument(A);var C=A.appendChild(B.createElement('table'));C.cellPadding=0;C.cellSpacing=0;FCKTools.DisableSelection(C);var D=C.insertRow(-1).insertCell(-1);D.className='MN_Menu';var E=this._ItemsTable=D.appendChild(B.createElement('table'));E.cellPadding=0;E.cellSpacing=0;};for (var i=0;i<this._Items.length;i++) this._Items[i].Create(this._ItemsTable);};function FCKMenuBlock_Item_OnClick(A,B){if (B.Hide) B.Hide();FCKTools.RunFunction(B.OnClick,B,[A]);};function FCKMenuBlock_Item_OnActivate(A){var B=A._ActiveItem;if (B&&B!=this){if (!FCKBrowserInfo.IsIE&&B.HasSubMenu&&!this.HasSubMenu){A._Window.focus();A.Panel.HasFocus=true;};B.Deactivate();};A._ActiveItem=this;};function FCKMenuBlock_Cleanup(){this._Window=null;this._ItemsTable=null;};var FCKMenuSeparator=function(){};FCKMenuSeparator.prototype.Create=function(A){var B=FCKTools.GetElementDocument(A);var r=A.insertRow(-1);var C=r.insertCell(-1);C.className='MN_Separator MN_Icon';C=r.insertCell(-1);C.className='MN_Separator';C.appendChild(B.createElement('DIV')).className='MN_Separator_Line';C=r.insertCell(-1);C.className='MN_Separator';C.appendChild(B.createElement('DIV')).className='MN_Separator_Line';};
 var FCKMenuBlockPanel=function(){FCKMenuBlock.call(this);};FCKMenuBlockPanel.prototype=new FCKMenuBlock();FCKMenuBlockPanel.prototype.Create=function(){var A=this.Panel=(this.Parent&&this.Parent.Panel?this.Parent.Panel.CreateChildPanel():new FCKPanel());A.AppendStyleSheet(FCKConfig.SkinEditorCSS);FCKMenuBlock.prototype.Create.call(this,A.MainNode);};FCKMenuBlockPanel.prototype.Show=function(x,y,A){if (!this.Panel.CheckIsOpened()) this.Panel.Show(x,y,A);};FCKMenuBlockPanel.prototype.Hide=function(){if (this.Panel.CheckIsOpened()) this.Panel.Hide();};
-var FCKContextMenu=function(A,B){this.CtrlDisable=false;var C=this._Panel=new FCKPanel(A);C.AppendStyleSheet(FCKConfig.SkinEditorCSS);C.IsContextMenu=true;if (FCKBrowserInfo.IsGecko) C.Document.addEventListener('draggesture',function(e) {e.preventDefault();return false;},true);var D=this._MenuBlock=new FCKMenuBlock();D.Panel=C;D.OnClick=FCKTools.CreateEventListener(FCKContextMenu_MenuBlock_OnClick,this);this._Redraw=true;};FCKContextMenu.prototype.SetMouseClickWindow=function(A){if (!FCKBrowserInfo.IsIE){this._Document=A.document;if (FCKBrowserInfo.IsOpera&&!('oncontextmenu' in document.createElement('foo'))){this._Document.addEventListener('mousedown',FCKContextMenu_Document_OnMouseDown,false);this._Document.addEventListener('mouseup',FCKContextMenu_Document_OnMouseUp,false);};this._Document.addEventListener('contextmenu',FCKContextMenu_Document_OnContextMenu,false);}};FCKContextMenu.prototype.AddItem=function(A,B,C,D,E){var F=this._MenuBlock.AddItem(A,B,C,D,E);this._Redraw=true;return F;};FCKContextMenu.prototype.AddSeparator=function(){this._MenuBlock.AddSeparator();this._Redraw=true;};FCKContextMenu.prototype.RemoveAllItems=function(){this._MenuBlock.RemoveAllItems();this._Redraw=true;};FCKContextMenu.prototype.AttachToElement=function(A){if (FCKBrowserInfo.IsIE) FCKTools.AddEventListenerEx(A,'contextmenu',FCKContextMenu_AttachedElement_OnContextMenu,this);else A._FCKContextMenu=this;};function FCKContextMenu_Document_OnContextMenu(e){var A=e.target;while (A){if (A._FCKContextMenu){if (A._FCKContextMenu.CtrlDisable&&(e.ctrlKey||e.metaKey)) return true;FCKTools.CancelEvent(e);FCKContextMenu_AttachedElement_OnContextMenu(e,A._FCKContextMenu,A);return false;};A=A.parentNode;};return true;};var FCKContextMenu_OverrideButton;function FCKContextMenu_Document_OnMouseDown(e){if(!e||e.button!=2) return false;var A=e.target;while (A){if (A._FCKContextMenu){if (A._FCKContextMenu.CtrlDisable&&(e.ctrlKey||e.metaKey)) return true;var B=FCKContextMenu_OverrideButton;if(!B){var C=FCKTools.GetElementDocument(e.target);B=FCKContextMenu_OverrideButton=C.createElement('input');B.type='button';var D=C.createElement('p');C.body.appendChild(D);D.appendChild(B);};B.style.cssText='position:absolute;top:'+(e.clientY-2)+'px;left:'+(e.clientX-2)+'px;width:5px;height:5px;opacity:0.01';};A=A.parentNode;};return false;};function FCKContextMenu_Document_OnMouseUp(e){var A=FCKContextMenu_OverrideButton;if (A){var B=A.parentNode;B.parentNode.removeChild(B);FCKContextMenu_OverrideButton=undefined;if(e&&e.button==2){FCKContextMenu_Document_OnContextMenu(e);return false;}};return true;};function FCKContextMenu_AttachedElement_OnContextMenu(A,B,C){if (B.CtrlDisable&&(A.ctrlKey||A.metaKey)) return true;var D=C||this;if (B.OnBeforeOpen) B.OnBeforeOpen.call(B,D);if (B._MenuBlock.Count()==0) return false;if (B._Redraw){B._MenuBlock.Create(B._Panel.MainNode);B._Redraw=false;};FCKTools.DisableSelection(B._Panel.Document.body);var x=0;var y=0;if (FCKBrowserInfo.IsIE){x=A.screenX;y=A.screenY;}else if (FCKBrowserInfo.IsSafari){x=A.clientX;y=A.clientY;}else{x=A.pageX;y=A.pageY;};B._Panel.Show(x,y,A.currentTarget||null);return false;};function FCKContextMenu_MenuBlock_OnClick(A,B){B._Panel.Hide();FCKTools.RunFunction(B.OnItemClick,B,A);};
-FCK.ContextMenu={};FCK.ContextMenu.Listeners=[];FCK.ContextMenu.RegisterListener=function(A){if (A) this.Listeners.push(A);};function FCK_ContextMenu_Init(){var A=FCK.ContextMenu._InnerContextMenu=new FCKContextMenu(FCKBrowserInfo.IsIE?window:window.parent,FCKLang.Dir);A.CtrlDisable=FCKConfig.BrowserContextMenuOnCtrl;A.OnBeforeOpen=FCK_ContextMenu_OnBeforeOpen;A.OnItemClick=FCK_ContextMenu_OnItemClick;var B=FCK.ContextMenu;for (var i=0;i<FCKConfig.ContextMenu.length;i++) B.RegisterListener(FCK_ContextMenu_GetListener(FCKConfig.ContextMenu[i]));};function FCK_ContextMenu_GetListener(A){switch (A){case 'Generic':return {AddItems:function(menu,tag,tagName){menu.AddItem('Cut',FCKLang.Cut,7,FCKCommands.GetCommand('Cut').GetState()==-1);menu.AddItem('Copy',FCKLang.Copy,8,FCKCommands.GetCommand('Copy').GetState()==-1);menu.AddItem('Paste',FCKLang.Paste,9,FCKCommands.GetCommand('Paste').GetState()==-1);}};case 'Table':return {AddItems:function(menu,tag,tagName){var B=(tagName=='TABLE');var C=(!B&&FCKSelection.HasAncestorNode('TABLE'));if (C){menu.AddSeparator();var D=menu.AddItem('Cell',FCKLang.CellCM);D.AddItem('TableInsertCellBefore',FCKLang.InsertCellBefore,69);D.AddItem('TableInsertCellAfter',FCKLang.InsertCellAfter,58);D.AddItem('TableDeleteCells',FCKLang.DeleteCells,59);if (FCKBrowserInfo.IsGecko) D.AddItem('TableMergeCells',FCKLang.MergeCells,60,FCKCommands.GetCommand('TableMergeCells').GetState()==-1);else{D.AddItem('TableMergeRight',FCKLang.MergeRight,60,FCKCommands.GetCommand('TableMergeRight').GetState()==-1);D.AddItem('TableMergeDown',FCKLang.MergeDown,60,FCKCommands.GetCommand('TableMergeDown').GetState()==-1);};D.AddItem('TableHorizontalSplitCell',FCKLang.HorizontalSplitCell,61,FCKCommands.GetCommand('TableHorizontalSplitCell').GetState()==-1);D.AddItem('TableVerticalSplitCell',FCKLang.VerticalSplitCell,61,FCKCommands.GetCommand('TableVerticalSplitCell').GetState()==-1);D.AddSeparator();D.AddItem('TableCellProp',FCKLang.CellProperties,57,FCKCommands.GetCommand('TableCellProp').GetState()==-1);menu.AddSeparator();D=menu.AddItem('Row',FCKLang.RowCM);D.AddItem('TableInsertRowBefore',FCKLang.InsertRowBefore,70);D.AddItem('TableInsertRowAfter',FCKLang.InsertRowAfter,62);D.AddItem('TableDeleteRows',FCKLang.DeleteRows,63);menu.AddSeparator();D=menu.AddItem('Column',FCKLang.ColumnCM);D.AddItem('TableInsertColumnBefore',FCKLang.InsertColumnBefore,71);D.AddItem('TableInsertColumnAfter',FCKLang.InsertColumnAfter,64);D.AddItem('TableDeleteColumns',FCKLang.DeleteColumns,65);};if (B||C){menu.AddSeparator();menu.AddItem('TableDelete',FCKLang.TableDelete);menu.AddItem('TableProp',FCKLang.TableProperties,39);}}};case 'Link':return {AddItems:function(menu,tag,tagName){var E=(tagName=='A'||FCKSelection.HasAncestorNode('A'));if (E||FCK.GetNamedCommandState('Unlink')!=-1){var F=FCKSelection.MoveToAncestorNode('A');var G=(F&&F.name.length>0&&F.href.length==0);if (G) return;menu.AddSeparator();if (E) menu.AddItem('Link',FCKLang.EditLink,34);menu.AddItem('Unlink',FCKLang.RemoveLink,35);}}};case 'Image':return {AddItems:function(menu,tag,tagName){if (tagName=='IMG'&&!tag.getAttribute('_fckfakelement')){menu.AddSeparator();menu.AddItem('Image',FCKLang.ImageProperties,37);}}};case 'Anchor':return {AddItems:function(menu,tag,tagName){var F=FCKSelection.MoveToAncestorNode('A');var G=(F&&F.name.length>0);if (G||(tagName=='IMG'&&tag.getAttribute('_fckanchor'))){menu.AddSeparator();menu.AddItem('Anchor',FCKLang.AnchorProp,36);menu.AddItem('AnchorDelete',FCKLang.AnchorDelete);}}};case 'Flash':return {AddItems:function(menu,tag,tagName){if (tagName=='IMG'&&tag.getAttribute('_fckflash')){menu.AddSeparator();menu.AddItem('Flash',FCKLang.FlashProperties,38);}}};case 'Form':return {AddItems:function(menu,tag,tagName){if (FCKSelection.HasAncestorNode('FORM')){menu.AddSeparator();menu.AddItem('Form',FCKLang.FormProp,48);}}};case 'Checkbox':return {AddItems:function(menu,tag,tagName){if (tagName=='INPUT'&&tag.type=='checkbox'){menu.AddSeparator();menu.AddItem('Checkbox',FCKLang.CheckboxProp,49);}}};case 'Radio':return {AddItems:function(menu,tag,tagName){if (tagName=='INPUT'&&tag.type=='radio'){menu.AddSeparator();menu.AddItem('Radio',FCKLang.RadioButtonProp,50);}}};case 'TextField':return {AddItems:function(menu,tag,tagName){if (tagName=='INPUT'&&(tag.type=='text'||tag.type=='password')){menu.AddSeparator();menu.AddItem('TextField',FCKLang.TextFieldProp,51);}}};case 'HiddenField':return {AddItems:function(menu,tag,tagName){if (tagName=='IMG'&&tag.getAttribute('_fckinputhidden')){menu.AddSeparator();menu.AddItem('HiddenField',FCKLang.HiddenFieldProp,56);}}};case 'ImageButton':return {AddItems:function(menu,tag,tagName){if (tagName=='INPUT'&&tag.type=='image'){menu.AddSeparator();menu.AddItem('ImageButton',FCKLang.ImageButtonProp,55);}}};case 'Button':return {AddItems:function(menu,tag,tagName){if (tagName=='INPUT'&&(tag.type=='button'||tag.type=='submit'||tag.type=='reset')){menu.AddSeparator();menu.AddItem('Button',FCKLang.ButtonProp,54);}}};case 'Select':return {AddItems:function(menu,tag,tagName){if (tagName=='SELECT'){menu.AddSeparator();menu.AddItem('Select',FCKLang.SelectionFieldProp,53);}}};case 'Textarea':return {AddItems:function(menu,tag,tagName){if (tagName=='TEXTAREA'){menu.AddSeparator();menu.AddItem('Textarea',FCKLang.TextareaProp,52);}}};case 'BulletedList':return {AddItems:function(menu,tag,tagName){if (FCKSelection.HasAncestorNode('UL')){menu.AddSeparator();menu.AddItem('BulletedList',FCKLang.BulletedListProp,27);}}};case 'NumberedList':return {AddItems:function(menu,tag,tagName){if (FCKSelection.HasAncestorNode('OL')){menu.AddSeparator();menu.AddItem('NumberedList',FCKLang.NumberedListProp,26);}}};};return null;};function FCK_ContextMenu_OnBeforeOpen(){FCK.Events.FireEvent('OnSelectionChange');var A,sTagName;if ((A=FCKSelection.GetSelectedElement())) sTagName=A.tagName;var B=FCK.ContextMenu._InnerContextMenu;B.RemoveAllItems();var C=FCK.ContextMenu.Listeners;for (var i=0;i<C.length;i++) C[i].AddItems(B,A,sTagName);};function FCK_ContextMenu_OnItemClick(A){FCK.Focus();FCKCommands.GetCommand(A.Name).Execute(A.CustomData);};
+var FCKContextMenu=function(A,B){this.CtrlDisable=false;var C=this._Panel=new FCKPanel(A);C.AppendStyleSheet(FCKConfig.SkinEditorCSS);C.IsContextMenu=true;if (FCKBrowserInfo.IsGecko) C.Document.addEventListener('draggesture',function(e) {e.preventDefault();return false;},true);var D=this._MenuBlock=new FCKMenuBlock();D.Panel=C;D.OnClick=FCKTools.CreateEventListener(FCKContextMenu_MenuBlock_OnClick,this);this._Redraw=true;};FCKContextMenu.prototype.SetMouseClickWindow=function(A){if (!FCKBrowserInfo.IsIE){this._Document=A.document;if (FCKBrowserInfo.IsOpera&&!('oncontextmenu' in document.createElement('foo'))){this._Document.addEventListener('mousedown',FCKContextMenu_Document_OnMouseDown,false);this._Document.addEventListener('mouseup',FCKContextMenu_Document_OnMouseUp,false);};this._Document.addEventListener('contextmenu',FCKContextMenu_Document_OnContextMenu,false);}};FCKContextMenu.prototype.AddItem=function(A,B,C,D,E){var F=this._MenuBlock.AddItem(A,B,C,D,E);this._Redraw=true;return F;};FCKContextMenu.prototype.AddSeparator=function(){this._MenuBlock.AddSeparator();this._Redraw=true;};FCKContextMenu.prototype.RemoveAllItems=function(){this._MenuBlock.RemoveAllItems();this._Redraw=true;};FCKContextMenu.prototype.AttachToElement=function(A){if (FCKBrowserInfo.IsIE) FCKTools.AddEventListenerEx(A,'contextmenu',FCKContextMenu_AttachedElement_OnContextMenu,this);else A._FCKContextMenu=this;};function FCKContextMenu_Document_OnContextMenu(e){if (FCKConfig.BrowserContextMenu) return true;var A=e.target;while (A){if (A._FCKContextMenu){if (A._FCKContextMenu.CtrlDisable&&(e.ctrlKey||e.metaKey)) return true;FCKTools.CancelEvent(e);FCKContextMenu_AttachedElement_OnContextMenu(e,A._FCKContextMenu,A);return false;};A=A.parentNode;};return true;};var FCKContextMenu_OverrideButton;function FCKContextMenu_Document_OnMouseDown(e){if(!e||e.button!=2) return false;if (FCKConfig.BrowserContextMenu) return true;var A=e.target;while (A){if (A._FCKContextMenu){if (A._FCKContextMenu.CtrlDisable&&(e.ctrlKey||e.metaKey)) return true;var B=FCKContextMenu_OverrideButton;if(!B){var C=FCKTools.GetElementDocument(e.target);B=FCKContextMenu_OverrideButton=C.createElement('input');B.type='button';var D=C.createElement('p');C.body.appendChild(D);D.appendChild(B);};B.style.cssText='position:absolute;top:'+(e.clientY-2)+'px;left:'+(e.clientX-2)+'px;width:5px;height:5px;opacity:0.01';};A=A.parentNode;};return false;};function FCKContextMenu_Document_OnMouseUp(e){if (FCKConfig.BrowserContextMenu) return true;var A=FCKContextMenu_OverrideButton;if (A){var B=A.parentNode;B.parentNode.removeChild(B);FCKContextMenu_OverrideButton=undefined;if(e&&e.button==2){FCKContextMenu_Document_OnContextMenu(e);return false;}};return true;};function FCKContextMenu_AttachedElement_OnContextMenu(A,B,C){if ((B.CtrlDisable&&(A.ctrlKey||A.metaKey))||FCKConfig.BrowserContextMenu) return true;var D=C||this;if (B.OnBeforeOpen) B.OnBeforeOpen.call(B,D);if (B._MenuBlock.Count()==0) return false;if (B._Redraw){B._MenuBlock.Create(B._Panel.MainNode);B._Redraw=false;};FCKTools.DisableSelection(B._Panel.Document.body);var x=0;var y=0;if (FCKBrowserInfo.IsIE){x=A.screenX;y=A.screenY;}else if (FCKBrowserInfo.IsSafari){x=A.clientX;y=A.clientY;}else{x=A.pageX;y=A.pageY;};B._Panel.Show(x,y,A.currentTarget||null);return false;};function FCKContextMenu_MenuBlock_OnClick(A,B){B._Panel.Hide();FCKTools.RunFunction(B.OnItemClick,B,A);};
+FCK.ContextMenu={};FCK.ContextMenu.Listeners=[];FCK.ContextMenu.RegisterListener=function(A){if (A) this.Listeners.push(A);};function FCK_ContextMenu_Init(){var A=FCK.ContextMenu._InnerContextMenu=new FCKContextMenu(FCKBrowserInfo.IsIE?window:window.parent,FCKLang.Dir);A.CtrlDisable=FCKConfig.BrowserContextMenuOnCtrl;A.OnBeforeOpen=FCK_ContextMenu_OnBeforeOpen;A.OnItemClick=FCK_ContextMenu_OnItemClick;var B=FCK.ContextMenu;for (var i=0;i<FCKConfig.ContextMenu.length;i++) B.RegisterListener(FCK_ContextMenu_GetListener(FCKConfig.ContextMenu[i]));};function FCK_ContextMenu_GetListener(A){switch (A){case 'Generic':return {AddItems:function(menu,tag,tagName){menu.AddItem('Cut',FCKLang.Cut,7,FCKCommands.GetCommand('Cut').GetState()==-1);menu.AddItem('Copy',FCKLang.Copy,8,FCKCommands.GetCommand('Copy').GetState()==-1);menu.AddItem('Paste',FCKLang.Paste,9,FCKCommands.GetCommand('Paste').GetState()==-1);}};case 'Table':return {AddItems:function(menu,tag,tagName){var B=(tagName=='TABLE');var C=(!B&&FCKSelection.HasAncestorNode('TABLE'));if (C){menu.AddSeparator();var D=menu.AddItem('Cell',FCKLang.CellCM);D.AddItem('TableInsertCellBefore',FCKLang.InsertCellBefore,69);D.AddItem('TableInsertCellAfter',FCKLang.InsertCellAfter,58);D.AddItem('TableDeleteCells',FCKLang.DeleteCells,59);if (FCKBrowserInfo.IsGecko) D.AddItem('TableMergeCells',FCKLang.MergeCells,60,FCKCommands.GetCommand('TableMergeCells').GetState()==-1);else{D.AddItem('TableMergeRight',FCKLang.MergeRight,60,FCKCommands.GetCommand('TableMergeRight').GetState()==-1);D.AddItem('TableMergeDown',FCKLang.MergeDown,60,FCKCommands.GetCommand('TableMergeDown').GetState()==-1);};D.AddItem('TableHorizontalSplitCell',FCKLang.HorizontalSplitCell,61,FCKCommands.GetCommand('TableHorizontalSplitCell').GetState()==-1);D.AddItem('TableVerticalSplitCell',FCKLang.VerticalSplitCell,61,FCKCommands.GetCommand('TableVerticalSplitCell').GetState()==-1);D.AddSeparator();D.AddItem('TableCellProp',FCKLang.CellProperties,57,FCKCommands.GetCommand('TableCellProp').GetState()==-1);menu.AddSeparator();D=menu.AddItem('Row',FCKLang.RowCM);D.AddItem('TableInsertRowBefore',FCKLang.InsertRowBefore,70);D.AddItem('TableInsertRowAfter',FCKLang.InsertRowAfter,62);D.AddItem('TableDeleteRows',FCKLang.DeleteRows,63);menu.AddSeparator();D=menu.AddItem('Column',FCKLang.ColumnCM);D.AddItem('TableInsertColumnBefore',FCKLang.InsertColumnBefore,71);D.AddItem('TableInsertColumnAfter',FCKLang.InsertColumnAfter,64);D.AddItem('TableDeleteColumns',FCKLang.DeleteColumns,65);};if (B||C){menu.AddSeparator();menu.AddItem('TableDelete',FCKLang.TableDelete);menu.AddItem('TableProp',FCKLang.TableProperties,39);}}};case 'Link':return {AddItems:function(menu,tag,tagName){var E=(tagName=='A'||FCKSelection.HasAncestorNode('A'));if (E||FCK.GetNamedCommandState('Unlink')!=-1){var F=FCKSelection.MoveToAncestorNode('A');var G=(F&&F.name.length>0&&F.href.length==0);if (G) return;menu.AddSeparator();menu.AddItem('VisitLink',FCKLang.VisitLink);menu.AddSeparator();if (E) menu.AddItem('Link',FCKLang.EditLink,34);menu.AddItem('Unlink',FCKLang.RemoveLink,35);}}};case 'Image':return {AddItems:function(menu,tag,tagName){if (tagName=='IMG'&&!tag.getAttribute('_fckfakelement')){menu.AddSeparator();menu.AddItem('Image',FCKLang.ImageProperties,37);}}};case 'Anchor':return {AddItems:function(menu,tag,tagName){var F=FCKSelection.MoveToAncestorNode('A');var G=(F&&F.name.length>0);if (G||(tagName=='IMG'&&tag.getAttribute('_fckanchor'))){menu.AddSeparator();menu.AddItem('Anchor',FCKLang.AnchorProp,36);menu.AddItem('AnchorDelete',FCKLang.AnchorDelete);}}};case 'Flash':return {AddItems:function(menu,tag,tagName){if (tagName=='IMG'&&tag.getAttribute('_fckflash')){menu.AddSeparator();menu.AddItem('Flash',FCKLang.FlashProperties,38);}}};case 'Form':return {AddItems:function(menu,tag,tagName){if (FCKSelection.HasAncestorNode('FORM')){menu.AddSeparator();menu.AddItem('Form',FCKLang.FormProp,48);}}};case 'Checkbox':return {AddItems:function(menu,tag,tagName){if (tagName=='INPUT'&&tag.type=='checkbox'){menu.AddSeparator();menu.AddItem('Checkbox',FCKLang.CheckboxProp,49);}}};case 'Radio':return {AddItems:function(menu,tag,tagName){if (tagName=='INPUT'&&tag.type=='radio'){menu.AddSeparator();menu.AddItem('Radio',FCKLang.RadioButtonProp,50);}}};case 'TextField':return {AddItems:function(menu,tag,tagName){if (tagName=='INPUT'&&(tag.type=='text'||tag.type=='password')){menu.AddSeparator();menu.AddItem('TextField',FCKLang.TextFieldProp,51);}}};case 'HiddenField':return {AddItems:function(menu,tag,tagName){if (tagName=='IMG'&&tag.getAttribute('_fckinputhidden')){menu.AddSeparator();menu.AddItem('HiddenField',FCKLang.HiddenFieldProp,56);}}};case 'ImageButton':return {AddItems:function(menu,tag,tagName){if (tagName=='INPUT'&&tag.type=='image'){menu.AddSeparator();menu.AddItem('ImageButton',FCKLang.ImageButtonProp,55);}}};case 'Button':return {AddItems:function(menu,tag,tagName){if (tagName=='INPUT'&&(tag.type=='button'||tag.type=='submit'||tag.type=='reset')){menu.AddSeparator();menu.AddItem('Button',FCKLang.ButtonProp,54);}}};case 'Select':return {AddItems:function(menu,tag,tagName){if (tagName=='SELECT'){menu.AddSeparator();menu.AddItem('Select',FCKLang.SelectionFieldProp,53);}}};case 'Textarea':return {AddItems:function(menu,tag,tagName){if (tagName=='TEXTAREA'){menu.AddSeparator();menu.AddItem('Textarea',FCKLang.TextareaProp,52);}}};case 'BulletedList':return {AddItems:function(menu,tag,tagName){if (FCKSelection.HasAncestorNode('UL')){menu.AddSeparator();menu.AddItem('BulletedList',FCKLang.BulletedListProp,27);}}};case 'NumberedList':return {AddItems:function(menu,tag,tagName){if (FCKSelection.HasAncestorNode('OL')){menu.AddSeparator();menu.AddItem('NumberedList',FCKLang.NumberedListProp,26);}}};case 'DivContainer':return {AddItems:function(menu,tag,tagName){var J=FCKDomTools.GetSelectedDivContainers();if (J.length>0){menu.AddSeparator();menu.AddItem('EditDiv',FCKLang.EditDiv,75);menu.AddItem('DeleteDiv',FCKLang.DeleteDiv,76);}}};};return null;};function FCK_ContextMenu_OnBeforeOpen(){FCK.Events.FireEvent('OnSelectionChange');var A,sTagName;if ((A=FCKSelection.GetSelectedElement())) sTagName=A.tagName;var B=FCK.ContextMenu._InnerContextMenu;B.RemoveAllItems();var C=FCK.ContextMenu.Listeners;for (var i=0;i<C.length;i++) C[i].AddItems(B,A,sTagName);};function FCK_ContextMenu_OnItemClick(A){FCK.Focus();FCKCommands.GetCommand(A.Name).Execute(A.CustomData);};
 var FCKHtmlIterator=function(A){this._sourceHtml=A;};FCKHtmlIterator.prototype={Next:function(){var A=this._sourceHtml;if (A==null) return null;var B=FCKRegexLib.HtmlTag.exec(A);var C=false;var D="";if (B){if (B.index>0){D=A.substr(0,B.index);this._sourceHtml=A.substr(B.index);}else{C=true;D=B[0];this._sourceHtml=A.substr(B[0].length);}}else{D=A;this._sourceHtml=null;};return { 'isTag':C,'value':D };},Each:function(A){var B;while ((B=this.Next())) A(B.isTag,B.value);}};var FCKHtmlIterator=function(A){this._sourceHtml=A;};FCKHtmlIterator.prototype={Next:function(){var A=this._sourceHtml;if (A==null) return null;var B=FCKRegexLib.HtmlTag.exec(A);var C=false;var D="";if (B){if (B.index>0){D=A.substr(0,B.index);this._sourceHtml=A.substr(B.index);}else{C=true;D=B[0];this._sourceHtml=A.substr(B[0].length);}}else{D=A;this._sourceHtml=null;};return { 'isTag':C,'value':D };},Each:function(A){var B;while ((B=this.Next())) A(B.isTag,B.value);}};
 var FCKPlugin=function(A,B,C){this.Name=A;this.BasePath=C?C:FCKConfig.PluginsPath;this.Path=this.BasePath+A+'/';if (!B||B.length==0) this.AvailableLangs=[];else this.AvailableLangs=B.split(',');};FCKPlugin.prototype.Load=function(){if (this.AvailableLangs.length>0){var A;if (this.AvailableLangs.IndexOf(FCKLanguageManager.ActiveLanguage.Code)>=0) A=FCKLanguageManager.ActiveLanguage.Code;else A=this.AvailableLangs[0];LoadScript(this.Path+'lang/'+A+'.js');};LoadScript(this.Path+'fckplugin.js');};
 var FCKPlugins=FCK.Plugins={};FCKPlugins.ItemsCount=0;FCKPlugins.Items={};FCKPlugins.Load=function(){var A=FCKPlugins.Items;for (var i=0;i<FCKConfig.Plugins.Items.length;i++){var B=FCKConfig.Plugins.Items[i];var C=A[B[0]]=new FCKPlugin(B[0],B[1],B[2]);FCKPlugins.ItemsCount++;};for (var s in A) A[s].Load();FCKPlugins.Load=null;};

Deleted: pal-wcm/trunk/src/main/webapp/fckeditor/editor/lang/_getfontformat.html
===================================================================
--- pal-wcm/trunk/src/main/webapp/fckeditor/editor/lang/_getfontformat.html	2008-09-03 08:05:44 UTC (rev 1112)
+++ pal-wcm/trunk/src/main/webapp/fckeditor/editor/lang/_getfontformat.html	2008-09-04 02:44:24 UTC (rev 1113)
@@ -1,85 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
-<!--
- * FCKeditor - The text editor for Internet - http://www.fckeditor.net
- * Copyright (C) 2003-2007 Frederico Caldeira Knabben
- *
- * == BEGIN LICENSE ==
- *
- * Licensed under the terms of any of the following licenses at your
- * choice:
- *
- *  - GNU General Public License Version 2 or later (the "GPL")
- *    http://www.gnu.org/licenses/gpl.html
- *
- *  - GNU Lesser General Public License Version 2.1 or later (the "LGPL")
- *    http://www.gnu.org/licenses/lgpl.html
- *
- *  - Mozilla Public License Version 1.1 or later (the "MPL")
- *    http://www.mozilla.org/MPL/MPL-1.1.html
- *
- * == END LICENSE ==
--->
-<html>
-	<head>
-		<title></title>
-	</head>
-	<script language="javascript">
-
-window.onload = function()
-{
-	var oRange = document.selection.createRange() ;
-
-	var sNormal ;
-	var sFormats = '' ;
-	for ( var i = 1 ; i <= 9 ; i++ )
-	{
-		oRange.moveToElementText( document.getElementById( 'x' + i ) ) ;
-		sFormats += oRange.queryCommandValue( 'FormatBlock' ) ;
-		if ( i == 1 )
-			sNormal = sFormats ;
-		sFormats += ';' ;
-	}
-
-	document.getElementById('xFontFormats').innerHTML = sFormats + sNormal + ' (DIV)' ;
-}
-	</script>
-	<body>
-		<table width="70%" align="center">
-			<tr>
-				<td>
-					<h3>FontFormats Localization</h3>
-					<p>
-						IE has some limits when handling the "Font Format". It actually uses localized
-						strings to retrieve the current format value. This makes it very difficult to
-						make a system that works on every single computer in the world.
-					</p>
-					<p>
-						With FCKeditor, this problem impacts in the "Format" toolbar command that
-						doesn't reflects the format of the current cursor position.
-					</p>
-					<p>
-						There is only one way to make it work. We must localize FCKeditor using the
-						strings used by IE. In this way, we will have the expected behavior at least
-						when using FCKeditor in the same language as the browser. So, when localizing
-						FCKeditor, go to a computer with IE in the target language, open this page and
-						use the following string to the "FontFormats" value:
-					</p>
-					<div style="white-space: nowrap">
-						FontFormats : "<span id="xFontFormats" style="COLOR: #000099"></span>",
-					</div>
-				</td>
-			</tr>
-		</table>
-		<div style="DISPLAY: none">
-			<p id="x1">&nbsp;</p>
-			<pre id="x2">&nbsp;</pre>
-			<address id="x3">&nbsp;</address>
-			<h1 id="x4">&nbsp;</h1>
-			<h2 id="x5">&nbsp;</h2>
-			<h3 id="x6">&nbsp;</h3>
-			<h4 id="x7">&nbsp;</h4>
-			<h5 id="x8">&nbsp;</h5>
-			<h6 id="x9">&nbsp;</h6>
-		</div>
-	</body>
-</html>

Deleted: pal-wcm/trunk/src/main/webapp/fckeditor/editor/lang/_translationstatus.txt
===================================================================
--- pal-wcm/trunk/src/main/webapp/fckeditor/editor/lang/_translationstatus.txt	2008-09-03 08:05:44 UTC (rev 1112)
+++ pal-wcm/trunk/src/main/webapp/fckeditor/editor/lang/_translationstatus.txt	2008-09-04 02:44:24 UTC (rev 1113)
@@ -1,77 +0,0 @@
-/*
- * FCKeditor - The text editor for Internet - http://www.fckeditor.net
- * Copyright (C) 2003-2008 Frederico Caldeira Knabben
- *
- * == BEGIN LICENSE ==
- *
- * Licensed under the terms of any of the following licenses at your
- * choice:
- *
- *  - GNU General Public License Version 2 or later (the "GPL")
- *    http://www.gnu.org/licenses/gpl.html
- *
- *  - GNU Lesser General Public License Version 2.1 or later (the "LGPL")
- *    http://www.gnu.org/licenses/lgpl.html
- *
- *  - Mozilla Public License Version 1.1 or later (the "MPL")
- *    http://www.mozilla.org/MPL/MPL-1.1.html
- *
- * == END LICENSE ==
- *
- * Translations Status.
- */
-
-af.js      Found: 396   Missing: 15
-ar.js      Found: 411   Missing: 0
-bg.js      Found: 373   Missing: 38
-bn.js      Found: 380   Missing: 31
-bs.js      Found: 226   Missing: 185
-ca.js      Found: 411   Missing: 0
-cs.js      Found: 411   Missing: 0
-da.js      Found: 381   Missing: 30
-de.js      Found: 411   Missing: 0
-el.js      Found: 396   Missing: 15
-en-au.js   Found: 411   Missing: 0
-en-ca.js   Found: 411   Missing: 0
-en-uk.js   Found: 411   Missing: 0
-eo.js      Found: 346   Missing: 65
-es.js      Found: 411   Missing: 0
-et.js      Found: 411   Missing: 0
-eu.js      Found: 411   Missing: 0
-fa.js      Found: 397   Missing: 14
-fi.js      Found: 411   Missing: 0
-fo.js      Found: 396   Missing: 15
-fr-ca.js   Found: 411   Missing: 0
-fr.js      Found: 411   Missing: 0
-gl.js      Found: 381   Missing: 30
-he.js      Found: 411   Missing: 0
-hi.js      Found: 411   Missing: 0
-hr.js      Found: 411   Missing: 0
-hu.js      Found: 411   Missing: 0
-it.js      Found: 396   Missing: 15
-ja.js      Found: 411   Missing: 0
-km.js      Found: 370   Missing: 41
-ko.js      Found: 390   Missing: 21
-lt.js      Found: 376   Missing: 35
-lv.js      Found: 381   Missing: 30
-mn.js      Found: 411   Missing: 0
-ms.js      Found: 352   Missing: 59
-nb.js      Found: 395   Missing: 16
-nl.js      Found: 411   Missing: 0
-no.js      Found: 395   Missing: 16
-pl.js      Found: 411   Missing: 0
-pt-br.js   Found: 411   Missing: 0
-pt.js      Found: 381   Missing: 30
-ro.js      Found: 410   Missing: 1
-ru.js      Found: 411   Missing: 0
-sk.js      Found: 396   Missing: 15
-sl.js      Found: 411   Missing: 0
-sr-latn.js Found: 368   Missing: 43
-sr.js      Found: 368   Missing: 43
-sv.js      Found: 396   Missing: 15
-th.js      Found: 393   Missing: 18
-tr.js      Found: 396   Missing: 15
-uk.js      Found: 397   Missing: 14
-vi.js      Found: 396   Missing: 15
-zh-cn.js   Found: 411   Missing: 0
-zh.js      Found: 411   Missing: 0

Modified: pal-wcm/trunk/src/main/webapp/fckeditor/editor/lang/af.js
===================================================================
--- pal-wcm/trunk/src/main/webapp/fckeditor/editor/lang/af.js	2008-09-03 08:05:44 UTC (rev 1112)
+++ pal-wcm/trunk/src/main/webapp/fckeditor/editor/lang/af.js	2008-09-04 02:44:24 UTC (rev 1113)
@@ -44,6 +44,7 @@
 InsertLinkLbl		: "Skakel",
 InsertLink			: "Skakel byvoeg/verander",
 RemoveLink			: "Skakel verweider",
+VisitLink			: "Open Link",	//MISSING
 Anchor				: "Plekhouer byvoeg/verander",
 AnchorDelete		: "Remove Anchor",	//MISSING
 InsertImageLbl		: "Beeld",
@@ -72,6 +73,9 @@
 DecreaseIndent		: "Paradeering verkort",
 IncreaseIndent		: "Paradeering verleng",
 Blockquote			: "Blockquote",	//MISSING
+CreateDiv			: "Create Div Container",	//MISSING
+EditDiv				: "Edit Div Container",	//MISSING
+DeleteDiv			: "Remove Div Container",	//MISSING
 Undo				: "Ont-skep",
 Redo				: "Her-skep",
 NumberedListLbl		: "Genommerde lys",
@@ -157,6 +161,7 @@
 NoActiveX			: "U browser sekuriteit instellings kan die funksies van die editor behinder. U moet die opsie \"Run ActiveX controls and plug-ins\" aktiveer. U ondervinding mag problematies geskiet of sekere funksionaliteit mag verhinder word.",
 BrowseServerBlocked : "Die vorraad venster word geblok! Verseker asseblief dat U die \"popup blocker\" instelling verander.",
 DialogBlocked		: "Die dialoog venster vir verdere informasie word geblok. De-aktiveer asseblief die \"popup blocker\" instellings wat dit behinder.",
+VisitLinkBlocked	: "It was not possible to open a new window. Make sure all popup blockers are disabled.",	//MISSING
 
 // Dialogs
 DlgBtnOK			: "OK",
@@ -511,5 +516,11 @@
 DlgAboutBrowserInfoTab	: "Blaai Informasie deur",
 DlgAboutLicenseTab	: "Lesensie",
 DlgAboutVersion		: "weergawe",
-DlgAboutInfo		: "Vir meer informasie gaan na "
+DlgAboutInfo		: "Vir meer informasie gaan na ",
+
+// Div Dialog
+DlgDivGeneralTab	: "General",	//MISSING
+DlgDivAdvancedTab	: "Advanced",	//MISSING
+DlgDivStyle		: "Style",	//MISSING
+DlgDivInlineStyle	: "Inline Style"	//MISSING
 };

Modified: pal-wcm/trunk/src/main/webapp/fckeditor/editor/lang/ar.js
===================================================================
--- pal-wcm/trunk/src/main/webapp/fckeditor/editor/lang/ar.js	2008-09-03 08:05:44 UTC (rev 1112)
+++ pal-wcm/trunk/src/main/webapp/fckeditor/editor/lang/ar.js	2008-09-04 02:44:24 UTC (rev 1113)
@@ -44,6 +44,7 @@
 InsertLinkLbl		: "رابط",
 InsertLink			: "إدراج/تحرير رابط",
 RemoveLink			: "إزالة رابط",
+VisitLink			: "Open Link",	//MISSING
 Anchor				: "إدراج/تحرير إشارة مرجعية",
 AnchorDelete		: "إزالة إشارة مرجعية",
 InsertImageLbl		: "صورة",
@@ -72,6 +73,9 @@
 DecreaseIndent		: "إنقاص المسافة البادئة",
 IncreaseIndent		: "زيادة المسافة البادئة",
 Blockquote			: "اقتباس",
+CreateDiv			: "Create Div Container",	//MISSING
+EditDiv				: "Edit Div Container",	//MISSING
+DeleteDiv			: "Remove Div Container",	//MISSING
 Undo				: "تراجع",
 Redo				: "إعادة",
 NumberedListLbl		: "تعداد رقمي",
@@ -157,6 +161,7 @@
 NoActiveX			: "لتأمين متصفحك يجب أن تحدد بعض مميزات المحرر. يتوجب عليك تمكين الخيار \"Run ActiveX controls and plug-ins\". قد تواجة أخطاء وتلاحظ مميزات مفقودة",
 BrowseServerBlocked : "لايمكن فتح مصدر المتصفح. فضلا يجب التأكد بأن جميع موانع النوافذ المنبثقة معطلة",
 DialogBlocked		: "لايمكن فتح نافذة الحوار . فضلا تأكد من أن  مانع النوافذ المنبثة معطل .",
+VisitLinkBlocked	: "It was not possible to open a new window. Make sure all popup blockers are disabled.",	//MISSING
 
 // Dialogs
 DlgBtnOK			: "موافق",
@@ -511,5 +516,11 @@
 DlgAboutBrowserInfoTab	: "معلومات متصفحك",
 DlgAboutLicenseTab	: "الترخيص",
 DlgAboutVersion		: "الإصدار",
-DlgAboutInfo		: "لمزيد من المعلومات تفضل بزيارة"
+DlgAboutInfo		: "لمزيد من المعلومات تفضل بزيارة",
+
+// Div Dialog
+DlgDivGeneralTab	: "General",	//MISSING
+DlgDivAdvancedTab	: "Advanced",	//MISSING
+DlgDivStyle		: "Style",	//MISSING
+DlgDivInlineStyle	: "Inline Style"	//MISSING
 };

Modified: pal-wcm/trunk/src/main/webapp/fckeditor/editor/lang/bg.js
===================================================================
--- pal-wcm/trunk/src/main/webapp/fckeditor/editor/lang/bg.js	2008-09-03 08:05:44 UTC (rev 1112)
+++ pal-wcm/trunk/src/main/webapp/fckeditor/editor/lang/bg.js	2008-09-04 02:44:24 UTC (rev 1113)
@@ -44,6 +44,7 @@
 InsertLinkLbl		: "Връзка",
 InsertLink			: "Добави/Редактирай връзка",
 RemoveLink			: "Изтрий връзка",
+VisitLink			: "Open Link",	//MISSING
 Anchor				: "Добави/Редактирай котва",
 AnchorDelete		: "Remove Anchor",	//MISSING
 InsertImageLbl		: "Изображение",
@@ -72,6 +73,9 @@
 DecreaseIndent		: "Намали отстъпа",
 IncreaseIndent		: "Увеличи отстъпа",
 Blockquote			: "Blockquote",	//MISSING
+CreateDiv			: "Create Div Container",	//MISSING
+EditDiv				: "Edit Div Container",	//MISSING
+DeleteDiv			: "Remove Div Container",	//MISSING
 Undo				: "Отмени",
 Redo				: "Повтори",
 NumberedListLbl		: "Нумериран списък",
@@ -157,6 +161,7 @@
 NoActiveX			: "Your browser's security settings could limit some features of the editor. You must enable the option \"Run ActiveX controls and plug-ins\". You may experience errors and notice missing features.",	//MISSING
 BrowseServerBlocked : "The resources browser could not be opened. Make sure that all popup blockers are disabled.",	//MISSING
 DialogBlocked		: "It was not possible to open the dialog window. Make sure all popup blockers are disabled.",	//MISSING
+VisitLinkBlocked	: "It was not possible to open a new window. Make sure all popup blockers are disabled.",	//MISSING
 
 // Dialogs
 DlgBtnOK			: "ОК",
@@ -511,5 +516,11 @@
 DlgAboutBrowserInfoTab	: "Информация за браузъра",
 DlgAboutLicenseTab	: "License",	//MISSING
 DlgAboutVersion		: "версия",
-DlgAboutInfo		: "За повече информация посетете"
+DlgAboutInfo		: "За повече информация посетете",
+
+// Div Dialog
+DlgDivGeneralTab	: "General",	//MISSING
+DlgDivAdvancedTab	: "Advanced",	//MISSING
+DlgDivStyle		: "Style",	//MISSING
+DlgDivInlineStyle	: "Inline Style"	//MISSING
 };

Modified: pal-wcm/trunk/src/main/webapp/fckeditor/editor/lang/bn.js
===================================================================
--- pal-wcm/trunk/src/main/webapp/fckeditor/editor/lang/bn.js	2008-09-03 08:05:44 UTC (rev 1112)
+++ pal-wcm/trunk/src/main/webapp/fckeditor/editor/lang/bn.js	2008-09-04 02:44:24 UTC (rev 1113)
@@ -44,6 +44,7 @@
 InsertLinkLbl		: "লিংকের যুক্ত করার লেবেল",
 InsertLink			: "লিংক যুক্ত কর",
 RemoveLink			: "লিংক সরাও",
+VisitLink			: "Open Link",	//MISSING
 Anchor				: "নোঙ্গর",
 AnchorDelete		: "Remove Anchor",	//MISSING
 InsertImageLbl		: "ছবির লেবেল যুক্ত কর",
@@ -72,6 +73,9 @@
 DecreaseIndent		: "ইনডেন্ট কমাও",
 IncreaseIndent		: "ইনডেন্ট বাড়াও",
 Blockquote			: "Blockquote",	//MISSING
+CreateDiv			: "Create Div Container",	//MISSING
+EditDiv				: "Edit Div Container",	//MISSING
+DeleteDiv			: "Remove Div Container",	//MISSING
 Undo				: "আনডু",
 Redo				: "রি-ডু",
 NumberedListLbl		: "সাংখ্যিক লিস্টের লেবেল",
@@ -157,6 +161,7 @@
 NoActiveX			: "আপনার ব্রাউজারের সুরক্ষা সেটিংস কারনে এডিটরের কিছু ফিচার পাওয়া নাও যেতে পারে। আপনাকে অবশ্যই \"Run ActiveX controls and plug-ins\" এনাবেল করে নিতে হবে। আপনি ভুলভ্রান্তি কিছু কিছু ফিচারের অনুপস্থিতি উপলব্ধি করতে পারেন।",
 BrowseServerBlocked : "রিসোর্স ব্রাউজার খোলা গেল না। নিশ্চিত করুন যে সব পপআপ ব্লকার বন্ধ করা আছে।",
 DialogBlocked		: "ডায়ালগ ইউন্ডো খোলা গেল না। নিশ্চিত করুন যে সব পপআপ ব্লকার বন্ধ করা আছে।",
+VisitLinkBlocked	: "It was not possible to open a new window. Make sure all popup blockers are disabled.",	//MISSING
 
 // Dialogs
 DlgBtnOK			: "ওকে",
@@ -511,5 +516,11 @@
 DlgAboutBrowserInfoTab	: "ব্রাউজারের ব্যাপারে তথ্য",
 DlgAboutLicenseTab	: "লাইসেন্স",
 DlgAboutVersion		: "ভার্সন",
-DlgAboutInfo		: "আরও তথ্যের জন্য যান"
+DlgAboutInfo		: "আরও তথ্যের জন্য যান",
+
+// Div Dialog
+DlgDivGeneralTab	: "General",	//MISSING
+DlgDivAdvancedTab	: "Advanced",	//MISSING
+DlgDivStyle		: "Style",	//MISSING
+DlgDivInlineStyle	: "Inline Style"	//MISSING
 };

Modified: pal-wcm/trunk/src/main/webapp/fckeditor/editor/lang/bs.js
===================================================================
--- pal-wcm/trunk/src/main/webapp/fckeditor/editor/lang/bs.js	2008-09-03 08:05:44 UTC (rev 1112)
+++ pal-wcm/trunk/src/main/webapp/fckeditor/editor/lang/bs.js	2008-09-04 02:44:24 UTC (rev 1113)
@@ -44,6 +44,7 @@
 InsertLinkLbl		: "Link",
 InsertLink			: "Ubaci/Izmjeni link",
 RemoveLink			: "Izbriši link",
+VisitLink			: "Open Link",	//MISSING
 Anchor				: "Insert/Edit Anchor",	//MISSING
 AnchorDelete		: "Remove Anchor",	//MISSING
 InsertImageLbl		: "Slika",
@@ -72,6 +73,9 @@
 DecreaseIndent		: "Smanji uvod",
 IncreaseIndent		: "Poveæaj uvod",
 Blockquote			: "Blockquote",	//MISSING
+CreateDiv			: "Create Div Container",	//MISSING
+EditDiv				: "Edit Div Container",	//MISSING
+DeleteDiv			: "Remove Div Container",	//MISSING
 Undo				: "Vrati",
 Redo				: "Ponovi",
 NumberedListLbl		: "Numerisana lista",
@@ -157,6 +161,7 @@
 NoActiveX			: "Your browser's security settings could limit some features of the editor. You must enable the option \"Run ActiveX controls and plug-ins\". You may experience errors and notice missing features.",	//MISSING
 BrowseServerBlocked : "The resources browser could not be opened. Make sure that all popup blockers are disabled.",	//MISSING
 DialogBlocked		: "It was not possible to open the dialog window. Make sure all popup blockers are disabled.",	//MISSING
+VisitLinkBlocked	: "It was not possible to open a new window. Make sure all popup blockers are disabled.",	//MISSING
 
 // Dialogs
 DlgBtnOK			: "OK",
@@ -511,5 +516,11 @@
 DlgAboutBrowserInfoTab	: "Browser Info",	//MISSING
 DlgAboutLicenseTab	: "License",	//MISSING
 DlgAboutVersion		: "verzija",
-DlgAboutInfo		: "Za više informacija posjetite"
+DlgAboutInfo		: "Za više informacija posjetite",
+
+// Div Dialog
+DlgDivGeneralTab	: "General",	//MISSING
+DlgDivAdvancedTab	: "Advanced",	//MISSING
+DlgDivStyle		: "Style",	//MISSING
+DlgDivInlineStyle	: "Inline Style"	//MISSING
 };

Modified: pal-wcm/trunk/src/main/webapp/fckeditor/editor/lang/ca.js
===================================================================
--- pal-wcm/trunk/src/main/webapp/fckeditor/editor/lang/ca.js	2008-09-03 08:05:44 UTC (rev 1112)
+++ pal-wcm/trunk/src/main/webapp/fckeditor/editor/lang/ca.js	2008-09-04 02:44:24 UTC (rev 1113)
@@ -43,7 +43,8 @@
 RemoveFormat		: "Elimina Format",
 InsertLinkLbl		: "Enllaç",
 InsertLink			: "Insereix/Edita enllaç",
-RemoveLink			: "Elimina enllaç",
+RemoveLink			: "Elimina l'enllaç",
+VisitLink			: "Obre l'enllaç",
 Anchor				: "Insereix/Edita àncora",
 AnchorDelete		: "Elimina àncora",
 InsertImageLbl		: "Imatge",
@@ -72,6 +73,9 @@
 DecreaseIndent		: "Redueix el sagnat",
 IncreaseIndent		: "Augmenta el sagnat",
 Blockquote			: "Bloc de cita",
+CreateDiv			: "Crea un contenidor Div",
+EditDiv				: "Edita el contenidor Div",
+DeleteDiv			: "Elimina el contenidor Div",
 Undo				: "Desfés",
 Redo				: "Refés",
 NumberedListLbl		: "Llista numerada",
@@ -156,7 +160,8 @@
 UnknownToolbarSet	: "Conjunt de barra d'eines \"%1\" inexistent",
 NoActiveX			: "Les preferències del navegador poden limitar algunes funcions d'aquest editor. Cal habilitar l'opció \"Executa controls ActiveX i plug-ins\". Poden sorgir errors i poden faltar algunes funcions.",
 BrowseServerBlocked : "El visualitzador de recursos no s'ha pogut obrir. Assegura't de que els bloquejos de finestres emergents estan desactivats.",
-DialogBlocked		: "No ha estat possible obrir una finestra de diàleg. Assegura't de que els bloquejos de finestres emergents estan desactivats.",
+DialogBlocked		: "No ha estat possible obrir una finestra de diàleg. Assegureu-vos que els bloquejos de finestres emergents estan desactivats.",
+VisitLinkBlocked	: "No ha estat possible obrir una nova finestra. Assegureu-vos que els bloquejos de finestres emergents estan desactivats.",
 
 // Dialogs
 DlgBtnOK			: "D'acord",
@@ -511,5 +516,11 @@
 DlgAboutBrowserInfoTab	: "Informació del navegador",
 DlgAboutLicenseTab	: "Llicència",
 DlgAboutVersion		: "versió",
-DlgAboutInfo		: "Per a més informació aneu a"
+DlgAboutInfo		: "Per a més informació aneu a",
+
+// Div Dialog
+DlgDivGeneralTab	: "General",
+DlgDivAdvancedTab	: "Avançat",
+DlgDivStyle		: "Estil",
+DlgDivInlineStyle	: "Estil en línia"
 };

Modified: pal-wcm/trunk/src/main/webapp/fckeditor/editor/lang/cs.js
===================================================================
--- pal-wcm/trunk/src/main/webapp/fckeditor/editor/lang/cs.js	2008-09-03 08:05:44 UTC (rev 1112)
+++ pal-wcm/trunk/src/main/webapp/fckeditor/editor/lang/cs.js	2008-09-04 02:44:24 UTC (rev 1113)
@@ -44,6 +44,7 @@
 InsertLinkLbl		: "Odkaz",
 InsertLink			: "Vložit/změnit odkaz",
 RemoveLink			: "Odstranit odkaz",
+VisitLink			: "Otevřít odkaz",
 Anchor				: "Vložít/změnit záložku",
 AnchorDelete		: "Odstranit kotvu",
 InsertImageLbl		: "Obrázek",
@@ -72,6 +73,9 @@
 DecreaseIndent		: "Zmenšit odsazení",
 IncreaseIndent		: "Zvětšit odsazení",
 Blockquote			: "Citace",
+CreateDiv			: "Vytvořit Div kontejner",
+EditDiv				: "Upravit Div kontejner",
+DeleteDiv			: "Odstranit Div kontejner",
 Undo				: "Zpět",
 Redo				: "Znovu",
 NumberedListLbl		: "Číslování",
@@ -157,6 +161,7 @@
 NoActiveX			: "Nastavení bezpečnosti Vašeho prohlížeče omezuje funkčnost některých jeho možností. Je třeba zapnout volbu \"Spouštět ovládáací prvky ActiveX a moduly plug-in\", jinak nebude možné využívat všechny dosputné schopnosti editoru.",
 BrowseServerBlocked : "Průzkumník zdrojů nelze otevřít. Prověřte, zda nemáte aktivováno blokování popup oken.",
 DialogBlocked		: "Nelze otevřít dialogové okno. Prověřte, zda nemáte aktivováno blokování popup oken.",
+VisitLinkBlocked	: "Není možné otevřít nové okno. Prověřte, zda všechny nástroje pro blokování vyskakovacích oken jsou vypnuty.",
 
 // Dialogs
 DlgBtnOK			: "OK",
@@ -511,5 +516,11 @@
 DlgAboutBrowserInfoTab	: "Informace o prohlížeči",
 DlgAboutLicenseTab	: "Licence",
 DlgAboutVersion		: "verze",
-DlgAboutInfo		: "Více informací získáte na"
+DlgAboutInfo		: "Více informací získáte na",
+
+// Div Dialog
+DlgDivGeneralTab	: "Obecné",
+DlgDivAdvancedTab	: "Rozšířené",
+DlgDivStyle		: "Styl",
+DlgDivInlineStyle	: "Vložený styl"
 };

Modified: pal-wcm/trunk/src/main/webapp/fckeditor/editor/lang/da.js
===================================================================
--- pal-wcm/trunk/src/main/webapp/fckeditor/editor/lang/da.js	2008-09-03 08:05:44 UTC (rev 1112)
+++ pal-wcm/trunk/src/main/webapp/fckeditor/editor/lang/da.js	2008-09-04 02:44:24 UTC (rev 1113)
@@ -44,6 +44,7 @@
 InsertLinkLbl		: "Hyperlink",
 InsertLink			: "Indsæt/rediger hyperlink",
 RemoveLink			: "Fjern hyperlink",
+VisitLink			: "Open Link",	//MISSING
 Anchor				: "Indsæt/rediger bogmærke",
 AnchorDelete		: "Remove Anchor",	//MISSING
 InsertImageLbl		: "Indsæt billede",
@@ -72,6 +73,9 @@
 DecreaseIndent		: "Formindsk indrykning",
 IncreaseIndent		: "Forøg indrykning",
 Blockquote			: "Blockquote",	//MISSING
+CreateDiv			: "Create Div Container",	//MISSING
+EditDiv				: "Edit Div Container",	//MISSING
+DeleteDiv			: "Remove Div Container",	//MISSING
 Undo				: "Fortryd",
 Redo				: "Annuller fortryd",
 NumberedListLbl		: "Talopstilling",
@@ -157,6 +161,7 @@
 NoActiveX			: "Din browsers sikkerhedsindstillinger begrænser nogle af editorens muligheder.<br>Slå \"Kør ActiveX-objekter og plug-ins\" til, ellers vil du opleve fejl og manglende muligheder.",
 BrowseServerBlocked : "Browseren kunne ikke åbne de nødvendige ressourcer!<br>Slå pop-up blokering fra.",
 DialogBlocked		: "Dialogvinduet kunne ikke åbnes!<br>Slå pop-up blokering fra.",
+VisitLinkBlocked	: "It was not possible to open a new window. Make sure all popup blockers are disabled.",	//MISSING
 
 // Dialogs
 DlgBtnOK			: "OK",
@@ -511,5 +516,11 @@
 DlgAboutBrowserInfoTab	: "Generelt",
 DlgAboutLicenseTab	: "Licens",
 DlgAboutVersion		: "version",
-DlgAboutInfo		: "For yderlig information gå til"
+DlgAboutInfo		: "For yderlig information gå til",
+
+// Div Dialog
+DlgDivGeneralTab	: "General",	//MISSING
+DlgDivAdvancedTab	: "Advanced",	//MISSING
+DlgDivStyle		: "Style",	//MISSING
+DlgDivInlineStyle	: "Inline Style"	//MISSING
 };

Modified: pal-wcm/trunk/src/main/webapp/fckeditor/editor/lang/de.js
===================================================================
--- pal-wcm/trunk/src/main/webapp/fckeditor/editor/lang/de.js	2008-09-03 08:05:44 UTC (rev 1112)
+++ pal-wcm/trunk/src/main/webapp/fckeditor/editor/lang/de.js	2008-09-04 02:44:24 UTC (rev 1113)
@@ -44,6 +44,7 @@
 InsertLinkLbl		: "Link",
 InsertLink			: "Link einfügen/editieren",
 RemoveLink			: "Link entfernen",
+VisitLink			: "Link aufrufen",
 Anchor				: "Anker einfügen/editieren",
 AnchorDelete		: "Anker entfernen",
 InsertImageLbl		: "Bild",
@@ -72,6 +73,9 @@
 DecreaseIndent		: "Einzug verringern",
 IncreaseIndent		: "Einzug erhöhen",
 Blockquote			: "Zitatblock",
+CreateDiv			: "Erzeuge Div Block",
+EditDiv				: "Bearbeite Div Block",
+DeleteDiv			: "Entferne Div Block",
 Undo				: "Rückgängig",
 Redo				: "Wiederherstellen",
 NumberedListLbl		: "Nummerierte Liste",
@@ -157,6 +161,7 @@
 NoActiveX			: "Die Sicherheitseinstellungen Ihres Browsers beschränken evtl. einige Funktionen des Editors. Aktivieren Sie die Option \"ActiveX-Steuerelemente und Plugins ausführen\" in den Sicherheitseinstellungen, um diese Funktionen nutzen zu können",
 BrowseServerBlocked : "Ein Auswahlfenster konnte nicht geöffnet werden. Stellen Sie sicher, das alle Popup-Blocker ausgeschaltet sind.",
 DialogBlocked		: "Das Dialog-Fenster konnte nicht geöffnet werden. Stellen Sie sicher, das alle Popup-Blocker ausgeschaltet sind.",
+VisitLinkBlocked	: "It was not possible to open a new window. Make sure all popup blockers are disabled.",	//MISSING
 
 // Dialogs
 DlgBtnOK			: "OK",
@@ -511,5 +516,11 @@
 DlgAboutBrowserInfoTab	: "Browser-Info",
 DlgAboutLicenseTab	: "Lizenz",
 DlgAboutVersion		: "Version",
-DlgAboutInfo		: "Für weitere Informationen siehe"
+DlgAboutInfo		: "Für weitere Informationen siehe",
+
+// Div Dialog
+DlgDivGeneralTab	: "Allgemein",
+DlgDivAdvancedTab	: "Erweitert",
+DlgDivStyle		: "Style",
+DlgDivInlineStyle	: "Inline Style"
 };

Modified: pal-wcm/trunk/src/main/webapp/fckeditor/editor/lang/el.js
===================================================================
--- pal-wcm/trunk/src/main/webapp/fckeditor/editor/lang/el.js	2008-09-03 08:05:44 UTC (rev 1112)
+++ pal-wcm/trunk/src/main/webapp/fckeditor/editor/lang/el.js	2008-09-04 02:44:24 UTC (rev 1113)
@@ -44,6 +44,7 @@
 InsertLinkLbl		: "Σύνδεσμος (Link)",
 InsertLink			: "Εισαγωγή/Μεταβολή Συνδέσμου (Link)",
 RemoveLink			: "Αφαίρεση Συνδέσμου (Link)",
+VisitLink			: "Open Link",	//MISSING
 Anchor				: "Εισαγωγή/επεξεργασία Anchor",
 AnchorDelete		: "Remove Anchor",	//MISSING
 InsertImageLbl		: "Εικόνα",
@@ -72,6 +73,9 @@
 DecreaseIndent		: "Μείωση Εσοχής",
 IncreaseIndent		: "Αύξηση Εσοχής",
 Blockquote			: "Blockquote",	//MISSING
+CreateDiv			: "Create Div Container",	//MISSING
+EditDiv				: "Edit Div Container",	//MISSING
+DeleteDiv			: "Remove Div Container",	//MISSING
 Undo				: "Αναίρεση",
 Redo				: "Επαναφορά",
 NumberedListLbl		: "Λίστα με Αριθμούς",
@@ -157,6 +161,7 @@
 NoActiveX			: "Οι ρυθμίσεις ασφαλείας του browser σας μπορεί να περιορίσουν κάποιες ρυθμίσεις του προγράμματος. Χρειάζεται να ενεργοποιήσετε την επιλογή \"Run ActiveX controls and plug-ins\". Ίσως παρουσιαστούν λάθη και παρατηρήσετε ελειπείς λειτουργίες.",
 BrowseServerBlocked : "Οι πόροι του browser σας δεν είναι προσπελάσιμοι. Σιγουρευτείτε ότι δεν υπάρχουν ενεργοί popup blockers.",
 DialogBlocked		: "Δεν ήταν δυνατό να ανοίξει το παράθυρο διαλόγου. Σιγουρευτείτε ότι δεν υπάρχουν ενεργοί popup blockers.",
+VisitLinkBlocked	: "It was not possible to open a new window. Make sure all popup blockers are disabled.",	//MISSING
 
 // Dialogs
 DlgBtnOK			: "OK",
@@ -511,5 +516,11 @@
 DlgAboutBrowserInfoTab	: "Πληροφορίες Browser",
 DlgAboutLicenseTab	: "Άδεια",
 DlgAboutVersion		: "έκδοση",
-DlgAboutInfo		: "Για περισσότερες πληροφορίες"
+DlgAboutInfo		: "Για περισσότερες πληροφορίες",
+
+// Div Dialog
+DlgDivGeneralTab	: "General",	//MISSING
+DlgDivAdvancedTab	: "Advanced",	//MISSING
+DlgDivStyle		: "Style",	//MISSING
+DlgDivInlineStyle	: "Inline Style"	//MISSING
 };

Modified: pal-wcm/trunk/src/main/webapp/fckeditor/editor/lang/en-au.js
===================================================================
--- pal-wcm/trunk/src/main/webapp/fckeditor/editor/lang/en-au.js	2008-09-03 08:05:44 UTC (rev 1112)
+++ pal-wcm/trunk/src/main/webapp/fckeditor/editor/lang/en-au.js	2008-09-04 02:44:24 UTC (rev 1113)
@@ -44,6 +44,7 @@
 InsertLinkLbl		: "Link",
 InsertLink			: "Insert/Edit Link",
 RemoveLink			: "Remove Link",
+VisitLink			: "Open Link",
 Anchor				: "Insert/Edit Anchor",
 AnchorDelete		: "Remove Anchor",
 InsertImageLbl		: "Image",
@@ -72,6 +73,9 @@
 DecreaseIndent		: "Decrease Indent",
 IncreaseIndent		: "Increase Indent",
 Blockquote			: "Blockquote",
+CreateDiv			: "Create Div Container",
+EditDiv				: "Edit Div Container",
+DeleteDiv			: "Remove Div Container",
 Undo				: "Undo",
 Redo				: "Redo",
 NumberedListLbl		: "Numbered List",
@@ -157,6 +161,7 @@
 NoActiveX			: "Your browser's security settings could limit some features of the editor. You must enable the option \"Run ActiveX controls and plug-ins\". You may experience errors and notice missing features.",
 BrowseServerBlocked : "The resources browser could not be opened. Make sure that all popup blockers are disabled.",
 DialogBlocked		: "It was not possible to open the dialog window. Make sure all popup blockers are disabled.",
+VisitLinkBlocked	: "It was not possible to open a new window. Make sure all popup blockers are disabled.",
 
 // Dialogs
 DlgBtnOK			: "OK",
@@ -355,7 +360,7 @@
 PasteAsText		: "Paste as Plain Text",
 PasteFromWord	: "Paste from Word",
 
-DlgPasteMsg2	: "Please paste inside the following box using the keyboard (<STRONG>Ctrl+V</STRONG>) and hit <STRONG>OK</STRONG>.",
+DlgPasteMsg2	: "Please paste inside the following box using the keyboard (<strong>Ctrl+V</strong>) and hit <strong>OK</strong>.",
 DlgPasteSec		: "Because of your browser security settings, the editor is not able to access your clipboard data directly. You are required to paste it again in this window.",
 DlgPasteIgnoreFont		: "Ignore Font Face definitions",
 DlgPasteRemoveStyles	: "Remove Styles definitions",
@@ -501,7 +506,7 @@
 // Templates Dialog
 Templates			: "Templates",
 DlgTemplatesTitle	: "Content Templates",
-DlgTemplatesSelMsg	: "Please select the template to open in the editor<br>(the actual contents will be lost):",
+DlgTemplatesSelMsg	: "Please select the template to open in the editor<br />(the actual contents will be lost):",
 DlgTemplatesLoading	: "Loading templates list. Please wait...",
 DlgTemplatesNoTpl	: "(No templates defined)",
 DlgTemplatesReplace	: "Replace actual contents",
@@ -511,5 +516,11 @@
 DlgAboutBrowserInfoTab	: "Browser Info",
 DlgAboutLicenseTab	: "License",
 DlgAboutVersion		: "version",
-DlgAboutInfo		: "For further information go to"
+DlgAboutInfo		: "For further information go to",
+
+// Div Dialog
+DlgDivGeneralTab	: "General",
+DlgDivAdvancedTab	: "Advanced",
+DlgDivStyle		: "Style",
+DlgDivInlineStyle	: "Inline Style"
 };

Modified: pal-wcm/trunk/src/main/webapp/fckeditor/editor/lang/en-ca.js
===================================================================
--- pal-wcm/trunk/src/main/webapp/fckeditor/editor/lang/en-ca.js	2008-09-03 08:05:44 UTC (rev 1112)
+++ pal-wcm/trunk/src/main/webapp/fckeditor/editor/lang/en-ca.js	2008-09-04 02:44:24 UTC (rev 1113)
@@ -44,6 +44,7 @@
 InsertLinkLbl		: "Link",
 InsertLink			: "Insert/Edit Link",
 RemoveLink			: "Remove Link",
+VisitLink			: "Open Link",
 Anchor				: "Insert/Edit Anchor",
 AnchorDelete		: "Remove Anchor",
 InsertImageLbl		: "Image",
@@ -72,6 +73,9 @@
 DecreaseIndent		: "Decrease Indent",
 IncreaseIndent		: "Increase Indent",
 Blockquote			: "Blockquote",
+CreateDiv			: "Create Div Container",
+EditDiv				: "Edit Div Container",
+DeleteDiv			: "Remove Div Container",
 Undo				: "Undo",
 Redo				: "Redo",
 NumberedListLbl		: "Numbered List",
@@ -157,6 +161,7 @@
 NoActiveX			: "Your browser's security settings could limit some features of the editor. You must enable the option \"Run ActiveX controls and plug-ins\". You may experience errors and notice missing features.",
 BrowseServerBlocked : "The resources browser could not be opened. Make sure that all popup blockers are disabled.",
 DialogBlocked		: "It was not possible to open the dialog window. Make sure all popup blockers are disabled.",
+VisitLinkBlocked	: "It was not possible to open a new window. Make sure all popup blockers are disabled.",
 
 // Dialogs
 DlgBtnOK			: "OK",
@@ -355,7 +360,7 @@
 PasteAsText		: "Paste as Plain Text",
 PasteFromWord	: "Paste from Word",
 
-DlgPasteMsg2	: "Please paste inside the following box using the keyboard (<STRONG>Ctrl+V</STRONG>) and hit <STRONG>OK</STRONG>.",
+DlgPasteMsg2	: "Please paste inside the following box using the keyboard (<strong>Ctrl+V</strong>) and hit <strong>OK</strong>.",
 DlgPasteSec		: "Because of your browser security settings, the editor is not able to access your clipboard data directly. You are required to paste it again in this window.",
 DlgPasteIgnoreFont		: "Ignore Font Face definitions",
 DlgPasteRemoveStyles	: "Remove Styles definitions",
@@ -501,7 +506,7 @@
 // Templates Dialog
 Templates			: "Templates",
 DlgTemplatesTitle	: "Content Templates",
-DlgTemplatesSelMsg	: "Please select the template to open in the editor<br>(the actual contents will be lost):",
+DlgTemplatesSelMsg	: "Please select the template to open in the editor<br />(the actual contents will be lost):",
 DlgTemplatesLoading	: "Loading templates list. Please wait...",
 DlgTemplatesNoTpl	: "(No templates defined)",
 DlgTemplatesReplace	: "Replace actual contents",
@@ -511,5 +516,11 @@
 DlgAboutBrowserInfoTab	: "Browser Info",
 DlgAboutLicenseTab	: "License",
 DlgAboutVersion		: "version",
-DlgAboutInfo		: "For further information go to"
+DlgAboutInfo		: "For further information go to",
+
+// Div Dialog
+DlgDivGeneralTab	: "General",
+DlgDivAdvancedTab	: "Advanced",
+DlgDivStyle		: "Style",
+DlgDivInlineStyle	: "Inline Style"
 };

Modified: pal-wcm/trunk/src/main/webapp/fckeditor/editor/lang/en-uk.js
===================================================================
--- pal-wcm/trunk/src/main/webapp/fckeditor/editor/lang/en-uk.js	2008-09-03 08:05:44 UTC (rev 1112)
+++ pal-wcm/trunk/src/main/webapp/fckeditor/editor/lang/en-uk.js	2008-09-04 02:44:24 UTC (rev 1113)
@@ -44,6 +44,7 @@
 InsertLinkLbl		: "Link",
 InsertLink			: "Insert/Edit Link",
 RemoveLink			: "Remove Link",
+VisitLink			: "Open Link",
 Anchor				: "Insert/Edit Anchor",
 AnchorDelete		: "Remove Anchor",
 InsertImageLbl		: "Image",
@@ -72,6 +73,9 @@
 DecreaseIndent		: "Decrease Indent",
 IncreaseIndent		: "Increase Indent",
 Blockquote			: "Blockquote",
+CreateDiv			: "Create Div Container",
+EditDiv				: "Edit Div Container",
+DeleteDiv			: "Remove Div Container",
 Undo				: "Undo",
 Redo				: "Redo",
 NumberedListLbl		: "Numbered List",
@@ -157,6 +161,7 @@
 NoActiveX			: "Your browser's security settings could limit some features of the editor. You must enable the option \"Run ActiveX controls and plug-ins\". You may experience errors and notice missing features.",
 BrowseServerBlocked : "The resources browser could not be opened. Make sure that all popup blockers are disabled.",
 DialogBlocked		: "It was not possible to open the dialog window. Make sure all popup blockers are disabled.",
+VisitLinkBlocked	: "It was not possible to open a new window. Make sure all popup blockers are disabled.",
 
 // Dialogs
 DlgBtnOK			: "OK",
@@ -355,7 +360,7 @@
 PasteAsText		: "Paste as Plain Text",
 PasteFromWord	: "Paste from Word",
 
-DlgPasteMsg2	: "Please paste inside the following box using the keyboard (<STRONG>Ctrl+V</STRONG>) and hit <STRONG>OK</STRONG>.",
+DlgPasteMsg2	: "Please paste inside the following box using the keyboard (<strong>Ctrl+V</strong>) and hit <strong>OK</strong>.",
 DlgPasteSec		: "Because of your browser security settings, the editor is not able to access your clipboard data directly. You are required to paste it again in this window.",
 DlgPasteIgnoreFont		: "Ignore Font Face definitions",
 DlgPasteRemoveStyles	: "Remove Styles definitions",
@@ -501,7 +506,7 @@
 // Templates Dialog
 Templates			: "Templates",
 DlgTemplatesTitle	: "Content Templates",
-DlgTemplatesSelMsg	: "Please select the template to open in the editor<br>(the actual contents will be lost):",
+DlgTemplatesSelMsg	: "Please select the template to open in the editor<br />(the actual contents will be lost):",
 DlgTemplatesLoading	: "Loading templates list. Please wait...",
 DlgTemplatesNoTpl	: "(No templates defined)",
 DlgTemplatesReplace	: "Replace actual contents",
@@ -511,5 +516,11 @@
 DlgAboutBrowserInfoTab	: "Browser Info",
 DlgAboutLicenseTab	: "License",
 DlgAboutVersion		: "version",
-DlgAboutInfo		: "For further information go to"
+DlgAboutInfo		: "For further information go to",
+
+// Div Dialog
+DlgDivGeneralTab	: "General",
+DlgDivAdvancedTab	: "Advanced",
+DlgDivStyle		: "Style",
+DlgDivInlineStyle	: "Inline Style"
 };

Modified: pal-wcm/trunk/src/main/webapp/fckeditor/editor/lang/en.js
===================================================================
--- pal-wcm/trunk/src/main/webapp/fckeditor/editor/lang/en.js	2008-09-03 08:05:44 UTC (rev 1112)
+++ pal-wcm/trunk/src/main/webapp/fckeditor/editor/lang/en.js	2008-09-04 02:44:24 UTC (rev 1113)
@@ -44,6 +44,7 @@
 InsertLinkLbl		: "Link",
 InsertLink			: "Insert/Edit Link",
 RemoveLink			: "Remove Link",
+VisitLink			: "Open Link",
 Anchor				: "Insert/Edit Anchor",
 AnchorDelete		: "Remove Anchor",
 InsertImageLbl		: "Image",
@@ -72,6 +73,9 @@
 DecreaseIndent		: "Decrease Indent",
 IncreaseIndent		: "Increase Indent",
 Blockquote			: "Blockquote",
+CreateDiv			: "Create Div Container",
+EditDiv				: "Edit Div Container",
+DeleteDiv			: "Remove Div Container",
 Undo				: "Undo",
 Redo				: "Redo",
 NumberedListLbl		: "Numbered List",
@@ -157,6 +161,7 @@
 NoActiveX			: "Your browser's security settings could limit some features of the editor. You must enable the option \"Run ActiveX controls and plug-ins\". You may experience errors and notice missing features.",
 BrowseServerBlocked : "The resources browser could not be opened. Make sure that all popup blockers are disabled.",
 DialogBlocked		: "It was not possible to open the dialog window. Make sure all popup blockers are disabled.",
+VisitLinkBlocked	: "It was not possible to open a new window. Make sure all popup blockers are disabled.",
 
 // Dialogs
 DlgBtnOK			: "OK",
@@ -511,5 +516,11 @@
 DlgAboutBrowserInfoTab	: "Browser Info",
 DlgAboutLicenseTab	: "License",
 DlgAboutVersion		: "version",
-DlgAboutInfo		: "For further information go to"
+DlgAboutInfo		: "For further information go to",
+
+// Div Dialog
+DlgDivGeneralTab	: "General",
+DlgDivAdvancedTab	: "Advanced",
+DlgDivStyle		: "Style",
+DlgDivInlineStyle	: "Inline Style"
 };

Modified: pal-wcm/trunk/src/main/webapp/fckeditor/editor/lang/eo.js
===================================================================
--- pal-wcm/trunk/src/main/webapp/fckeditor/editor/lang/eo.js	2008-09-03 08:05:44 UTC (rev 1112)
+++ pal-wcm/trunk/src/main/webapp/fckeditor/editor/lang/eo.js	2008-09-04 02:44:24 UTC (rev 1113)
@@ -44,6 +44,7 @@
 InsertLinkLbl		: "Ligilo",
 InsertLink			: "Enmeti/Ŝanĝi Ligilon",
 RemoveLink			: "Forigi Ligilon",
+VisitLink			: "Open Link",	//MISSING
 Anchor				: "Enmeti/Ŝanĝi Ankron",
 AnchorDelete		: "Remove Anchor",	//MISSING
 InsertImageLbl		: "Bildo",
@@ -72,6 +73,9 @@
 DecreaseIndent		: "Malpligrandigi Krommarĝenon",
 IncreaseIndent		: "Pligrandigi Krommarĝenon",
 Blockquote			: "Blockquote",	//MISSING
+CreateDiv			: "Create Div Container",	//MISSING
+EditDiv				: "Edit Div Container",	//MISSING
+DeleteDiv			: "Remove Div Container",	//MISSING
 Undo				: "Malfari",
 Redo				: "Refari",
 NumberedListLbl		: "Numera Listo",
@@ -157,6 +161,7 @@
 NoActiveX			: "Your browser's security settings could limit some features of the editor. You must enable the option \"Run ActiveX controls and plug-ins\". You may experience errors and notice missing features.",	//MISSING
 BrowseServerBlocked : "The resources browser could not be opened. Make sure that all popup blockers are disabled.",	//MISSING
 DialogBlocked		: "It was not possible to open the dialog window. Make sure all popup blockers are disabled.",	//MISSING
+VisitLinkBlocked	: "It was not possible to open a new window. Make sure all popup blockers are disabled.",	//MISSING
 
 // Dialogs
 DlgBtnOK			: "Akcepti",
@@ -511,5 +516,11 @@
 DlgAboutBrowserInfoTab	: "Informoj pri TTT-legilo",
 DlgAboutLicenseTab	: "License",	//MISSING
 DlgAboutVersion		: "versio",
-DlgAboutInfo		: "Por pli da informoj, vizitu"
+DlgAboutInfo		: "Por pli da informoj, vizitu",
+
+// Div Dialog
+DlgDivGeneralTab	: "General",	//MISSING
+DlgDivAdvancedTab	: "Advanced",	//MISSING
+DlgDivStyle		: "Style",	//MISSING
+DlgDivInlineStyle	: "Inline Style"	//MISSING
 };

Modified: pal-wcm/trunk/src/main/webapp/fckeditor/editor/lang/es.js
===================================================================
--- pal-wcm/trunk/src/main/webapp/fckeditor/editor/lang/es.js	2008-09-03 08:05:44 UTC (rev 1112)
+++ pal-wcm/trunk/src/main/webapp/fckeditor/editor/lang/es.js	2008-09-04 02:44:24 UTC (rev 1113)
@@ -44,6 +44,7 @@
 InsertLinkLbl		: "Vínculo",
 InsertLink			: "Insertar/Editar Vínculo",
 RemoveLink			: "Eliminar Vínculo",
+VisitLink			: "Abrir enlace",
 Anchor				: "Referencia",
 AnchorDelete		: "Eliminar Referencia",
 InsertImageLbl		: "Imagen",
@@ -72,6 +73,9 @@
 DecreaseIndent		: "Disminuir Sangría",
 IncreaseIndent		: "Aumentar Sangría",
 Blockquote			: "Cita",
+CreateDiv			: "Crear contenedor (div)",
+EditDiv				: "Editar contenedor (div)",
+DeleteDiv			: "Eliminar contenedor (div)",
 Undo				: "Deshacer",
 Redo				: "Rehacer",
 NumberedListLbl		: "Numeración",
@@ -157,6 +161,7 @@
 NoActiveX			: "La configuración de las opciones de seguridad de su navegador puede estar limitando algunas características del editor. Por favor active la opción \"Ejecutar controles y complementos de ActiveX \", de lo contrario puede experimentar errores o ausencia de funcionalidades.",
 BrowseServerBlocked : "La ventana de visualización del servidor no pudo ser abierta. Verifique que su navegador no esté bloqueando las ventanas emergentes (pop up).",
 DialogBlocked		: "No se ha podido abrir la ventana de diálogo. Verifique que su navegador no esté bloqueando las ventanas emergentes (pop up).",
+VisitLinkBlocked	: "Nose ha podido abrir la ventana. Asegurese de que todos los bloqueadores de popups están deshabilitados.",
 
 // Dialogs
 DlgBtnOK			: "OK",
@@ -511,5 +516,11 @@
 DlgAboutBrowserInfoTab	: "Información de Navegador",
 DlgAboutLicenseTab	: "Licencia",
 DlgAboutVersion		: "versión",
-DlgAboutInfo		: "Para mayor información por favor dirigirse a"
+DlgAboutInfo		: "Para mayor información por favor dirigirse a",
+
+// Div Dialog
+DlgDivGeneralTab	: "General",
+DlgDivAdvancedTab	: "Avanzado",
+DlgDivStyle		: "Estilo",
+DlgDivInlineStyle	: "Estilos CSS"
 };

Modified: pal-wcm/trunk/src/main/webapp/fckeditor/editor/lang/et.js
===================================================================
--- pal-wcm/trunk/src/main/webapp/fckeditor/editor/lang/et.js	2008-09-03 08:05:44 UTC (rev 1112)
+++ pal-wcm/trunk/src/main/webapp/fckeditor/editor/lang/et.js	2008-09-04 02:44:24 UTC (rev 1113)
@@ -44,6 +44,7 @@
 InsertLinkLbl		: "Link",
 InsertLink			: "Sisesta link / Muuda linki",
 RemoveLink			: "Eemalda link",
+VisitLink			: "Open Link",	//MISSING
 Anchor				: "Sisesta ankur / Muuda ankrut",
 AnchorDelete		: "Eemalda ankur",
 InsertImageLbl		: "Pilt",
@@ -72,6 +73,9 @@
 DecreaseIndent		: "Vähenda taanet",
 IncreaseIndent		: "Suurenda taanet",
 Blockquote			: "Blokktsitaat",
+CreateDiv			: "Create Div Container",	//MISSING
+EditDiv				: "Edit Div Container",	//MISSING
+DeleteDiv			: "Remove Div Container",	//MISSING
 Undo				: "Võta tagasi",
 Redo				: "Korda toimingut",
 NumberedListLbl		: "Nummerdatud loetelu",
@@ -157,6 +161,7 @@
 NoActiveX			: "Sinu veebisirvija turvalisuse seaded võivad limiteerida mõningaid tekstirdaktori kasutusvõimalusi. Sa peaksid võimaldama valiku \"Run ActiveX controls and plug-ins\" oma veebisirvija seadetes. Muidu võid sa täheldada vigu tekstiredaktori töös ja märgata puuduvaid funktsioone.",
 BrowseServerBlocked : "Ressursside sirvija avamine ebaõnnestus. Võimalda pop-up akende avanemine.",
 DialogBlocked		: "Ei olenud võimalik avada dialoogi akent. Võimalda pop-up akende avanemine.",
+VisitLinkBlocked	: "It was not possible to open a new window. Make sure all popup blockers are disabled.",	//MISSING
 
 // Dialogs
 DlgBtnOK			: "OK",
@@ -511,5 +516,11 @@
 DlgAboutBrowserInfoTab	: "Veebisirvija info",
 DlgAboutLicenseTab	: "Litsents",
 DlgAboutVersion		: "versioon",
-DlgAboutInfo		: "Täpsema info saamiseks mine"
+DlgAboutInfo		: "Täpsema info saamiseks mine",
+
+// Div Dialog
+DlgDivGeneralTab	: "General",	//MISSING
+DlgDivAdvancedTab	: "Advanced",	//MISSING
+DlgDivStyle		: "Style",	//MISSING
+DlgDivInlineStyle	: "Inline Style"	//MISSING
 };

Modified: pal-wcm/trunk/src/main/webapp/fckeditor/editor/lang/eu.js
===================================================================
--- pal-wcm/trunk/src/main/webapp/fckeditor/editor/lang/eu.js	2008-09-03 08:05:44 UTC (rev 1112)
+++ pal-wcm/trunk/src/main/webapp/fckeditor/editor/lang/eu.js	2008-09-04 02:44:24 UTC (rev 1113)
@@ -45,6 +45,7 @@
 InsertLinkLbl		: "Esteka",
 InsertLink			: "Txertatu/Editatu Esteka",
 RemoveLink			: "Kendu Esteka",
+VisitLink			: "Open Link",	//MISSING
 Anchor				: "Aingura",
 AnchorDelete		: "Ezabatu Aingura",
 InsertImageLbl		: "Irudia",
@@ -73,6 +74,9 @@
 DecreaseIndent		: "Txikitu Koska",
 IncreaseIndent		: "Handitu Koska",
 Blockquote			: "Aipamen blokea",
+CreateDiv			: "Create Div Container",	//MISSING
+EditDiv				: "Edit Div Container",	//MISSING
+DeleteDiv			: "Remove Div Container",	//MISSING
 Undo				: "Desegin",
 Redo				: "Berregin",
 NumberedListLbl		: "Zenbakidun Zerrenda",
@@ -158,6 +162,7 @@
 NoActiveX			: "Zure nabigatzailearen segustasun hobespenak editore honen zenbait ezaugarri mugatu ditzake. \"ActiveX kontrolak eta plug-inak\" aktibatu beharko zenituzke, bestela erroreak eta ezaugarrietan mugak egon daitezke.",
 BrowseServerBlocked : "Baliabideen arakatzailea ezin da ireki. Ziurtatu popup blokeatzaileak desgaituta dituzula.",
 DialogBlocked		: "Ezin da elkarrizketa-leihoa ireki. Ziurtatu popup blokeatzaileak desgaituta dituzula.",
+VisitLinkBlocked	: "It was not possible to open a new window. Make sure all popup blockers are disabled.",	//MISSING
 
 // Dialogs
 DlgBtnOK			: "Ados",
@@ -512,5 +517,11 @@
 DlgAboutBrowserInfoTab	: "Nabigatzailearen Informazioa",
 DlgAboutLicenseTab	: "Lizentzia",
 DlgAboutVersion		: "bertsioa",
-DlgAboutInfo		: "Informazio gehiago eskuratzeko hona joan"
+DlgAboutInfo		: "Informazio gehiago eskuratzeko hona joan",
+
+// Div Dialog
+DlgDivGeneralTab	: "General",	//MISSING
+DlgDivAdvancedTab	: "Advanced",	//MISSING
+DlgDivStyle		: "Style",	//MISSING
+DlgDivInlineStyle	: "Inline Style"	//MISSING
 };

Modified: pal-wcm/trunk/src/main/webapp/fckeditor/editor/lang/fa.js
===================================================================
--- pal-wcm/trunk/src/main/webapp/fckeditor/editor/lang/fa.js	2008-09-03 08:05:44 UTC (rev 1112)
+++ pal-wcm/trunk/src/main/webapp/fckeditor/editor/lang/fa.js	2008-09-04 02:44:24 UTC (rev 1113)
@@ -44,8 +44,9 @@
 InsertLinkLbl		: "پیوند",
 InsertLink			: "گنجاندن/ویرایش ِپیوند",
 RemoveLink			: "برداشتن پیوند",
+VisitLink			: "باز کردن پیوند",
 Anchor				: "گنجاندن/ویرایش ِلنگر",
-AnchorDelete		: "Remove Anchor",	//MISSING
+AnchorDelete		: "برداشتن لنگر",
 InsertImageLbl		: "تصویر",
 InsertImage			: "گنجاندن/ویرایش ِتصویر",
 InsertFlashLbl		: "Flash",
@@ -71,7 +72,10 @@
 BlockJustify		: "بلوک‌چین",
 DecreaseIndent		: "کاهش تورفتگی",
 IncreaseIndent		: "افزایش تورفتگی",
-Blockquote			: "Blockquote",	//MISSING
+Blockquote			: "بلوک نقل قول",
+CreateDiv			: "Create Div Container",	//MISSING
+EditDiv				: "Edit Div Container",	//MISSING
+DeleteDiv			: "Remove Div Container",	//MISSING
 Undo				: "واچیدن",
 Redo				: "بازچیدن",
 NumberedListLbl		: "فهرست شماره‌دار",
@@ -105,27 +109,27 @@
 ImageButton		: "دکمهٴ تصویری",
 
 FitWindow		: "بیشینه‌سازی ِاندازهٴ ویرایشگر",
-ShowBlocks		: "Show Blocks",	//MISSING
+ShowBlocks		: "نمایش بلوک‌ها",
 
 // Context Menu
 EditLink			: "ویرایش پیوند",
 CellCM				: "سلول",
 RowCM				: "سطر",
 ColumnCM			: "ستون",
-InsertRowAfter		: "Insert Row After",	//MISSING
-InsertRowBefore		: "Insert Row Before",	//MISSING
+InsertRowAfter		: "افزودن سطر بعد از",
+InsertRowBefore		: "افزودن سطر قبل از",
 DeleteRows			: "حذف سطرها",
-InsertColumnAfter	: "Insert Column After",	//MISSING
-InsertColumnBefore	: "Insert Column Before",	//MISSING
+InsertColumnAfter	: "افزودن ستون بعد از",
+InsertColumnBefore	: "افزودن ستون قبل از",
 DeleteColumns		: "حذف ستونها",
-InsertCellAfter		: "Insert Cell After",	//MISSING
-InsertCellBefore	: "Insert Cell Before",	//MISSING
+InsertCellAfter		: "افزودن سلول بعد از",
+InsertCellBefore	: "افزودن سلول قبل از",
 DeleteCells			: "حذف سلولها",
 MergeCells			: "ادغام سلولها",
-MergeRight			: "Merge Right",	//MISSING
-MergeDown			: "Merge Down",	//MISSING
-HorizontalSplitCell	: "Split Cell Horizontally",	//MISSING
-VerticalSplitCell	: "Split Cell Vertically",	//MISSING
+MergeRight			: "ادغام به راست",
+MergeDown			: "ادغام به پایین",
+HorizontalSplitCell	: "جدا کردن افقی سلول",
+VerticalSplitCell	: "جدا کردن عمودی سلول",
 TableDelete			: "پاک‌کردن جدول",
 CellProperties		: "ویژگیهای سلول",
 TableProperties		: "ویژگیهای جدول",
@@ -157,6 +161,7 @@
 NoActiveX			: "تنظیمات امنیتی مرورگر شما ممکن است در بعضی از ویژگیهای مرورگر محدودیت ایجاد کند. شما باید گزینهٴ \"Run ActiveX controls and plug-ins\" را فعال کنید. ممکن است شما با خطاهایی روبرو باشید و متوجه کمبود ویژگیهایی شوید.",
 BrowseServerBlocked : "توانایی بازگشایی مرورگر منابع فراهم نیست. اطمینان حاصل کنید که تمامی برنامه‌های پیشگیری از نمایش popup را از کار بازداشته‌اید.",
 DialogBlocked		: "توانایی بازگشایی پنجرهٴ کوچک ِگفتگو فراهم نیست. اطمینان حاصل کنید که تمامی برنامه‌های پیشگیری از نمایش popup را از کار بازداشته‌اید.",
+VisitLinkBlocked	: "امکان بازکردن یک پنجره جدید نیست. اطمینان حاصل کنید که تمامی برنامه‌های پیشگیری از نمایش popup را از کار بازداشته‌اید.",
 
 // Dialogs
 DlgBtnOK			: "پذیرش",
@@ -332,7 +337,7 @@
 DlgCellBtnSelect	: "برگزینید...",
 
 // Find and Replace Dialog
-DlgFindAndReplaceTitle	: "Find and Replace",	//MISSING
+DlgFindAndReplaceTitle	: "جستجو و جایگزینی",
 
 // Find Dialog
 DlgFindTitle		: "یافتن",
@@ -511,5 +516,11 @@
 DlgAboutBrowserInfoTab	: "اطلاعات مرورگر",
 DlgAboutLicenseTab	: "گواهینامه",
 DlgAboutVersion		: "نگارش",
-DlgAboutInfo		: "برای آگاهی بیشتر به این نشانی بروید"
+DlgAboutInfo		: "برای آگاهی بیشتر به این نشانی بروید",
+
+// Div Dialog
+DlgDivGeneralTab	: "General",	//MISSING
+DlgDivAdvancedTab	: "Advanced",	//MISSING
+DlgDivStyle		: "Style",	//MISSING
+DlgDivInlineStyle	: "Inline Style"	//MISSING
 };

Modified: pal-wcm/trunk/src/main/webapp/fckeditor/editor/lang/fi.js
===================================================================
--- pal-wcm/trunk/src/main/webapp/fckeditor/editor/lang/fi.js	2008-09-03 08:05:44 UTC (rev 1112)
+++ pal-wcm/trunk/src/main/webapp/fckeditor/editor/lang/fi.js	2008-09-04 02:44:24 UTC (rev 1113)
@@ -44,6 +44,7 @@
 InsertLinkLbl		: "Linkki",
 InsertLink			: "Lisää linkki/muokkaa linkkiä",
 RemoveLink			: "Poista linkki",
+VisitLink			: "Open Link",	//MISSING
 Anchor				: "Lisää ankkuri/muokkaa ankkuria",
 AnchorDelete		: "Poista ankkuri",
 InsertImageLbl		: "Kuva",
@@ -72,6 +73,9 @@
 DecreaseIndent		: "Pienennä sisennystä",
 IncreaseIndent		: "Suurenna sisennystä",
 Blockquote			: "Lainaus",
+CreateDiv			: "Create Div Container",	//MISSING
+EditDiv				: "Edit Div Container",	//MISSING
+DeleteDiv			: "Remove Div Container",	//MISSING
 Undo				: "Kumoa",
 Redo				: "Toista",
 NumberedListLbl		: "Numerointi",
@@ -157,6 +161,7 @@
 NoActiveX			: "Selaimesi turvallisuusasetukset voivat rajoittaa joitain editorin ominaisuuksia. Sinun pitää ottaa käyttöön asetuksista \"Suorita ActiveX komponentit ja -plugin-laajennukset\". Saatat kohdata virheitä ja huomata puuttuvia ominaisuuksia.",
 BrowseServerBlocked : "Resurssiselainta ei voitu avata. Varmista, että ponnahdusikkunoiden estäjät eivät ole päällä.",
 DialogBlocked		: "Apuikkunaa ei voitu avaata. Varmista, että ponnahdusikkunoiden estäjät eivät ole päällä.",
+VisitLinkBlocked	: "It was not possible to open a new window. Make sure all popup blockers are disabled.",	//MISSING
 
 // Dialogs
 DlgBtnOK			: "OK",
@@ -511,5 +516,11 @@
 DlgAboutBrowserInfoTab	: "Selaimen tiedot",
 DlgAboutLicenseTab	: "Lisenssi",
 DlgAboutVersion		: "versio",
-DlgAboutInfo		: "Lisää tietoa osoitteesta"
+DlgAboutInfo		: "Lisää tietoa osoitteesta",
+
+// Div Dialog
+DlgDivGeneralTab	: "General",	//MISSING
+DlgDivAdvancedTab	: "Advanced",	//MISSING
+DlgDivStyle		: "Style",	//MISSING
+DlgDivInlineStyle	: "Inline Style"	//MISSING
 };

Modified: pal-wcm/trunk/src/main/webapp/fckeditor/editor/lang/fo.js
===================================================================
--- pal-wcm/trunk/src/main/webapp/fckeditor/editor/lang/fo.js	2008-09-03 08:05:44 UTC (rev 1112)
+++ pal-wcm/trunk/src/main/webapp/fckeditor/editor/lang/fo.js	2008-09-04 02:44:24 UTC (rev 1113)
@@ -44,8 +44,9 @@
 InsertLinkLbl		: "Tilknýti",
 InsertLink			: "Ger/broyt tilknýti",
 RemoveLink			: "Strika tilknýti",
+VisitLink			: "Opna tilknýti",
 Anchor				: "Ger/broyt marknastein",
-AnchorDelete		: "Remove Anchor",	//MISSING
+AnchorDelete		: "Strika marknastein",
 InsertImageLbl		: "Myndir",
 InsertImage			: "Set inn/broyt mynd",
 InsertFlashLbl		: "Flash",
@@ -71,7 +72,10 @@
 BlockJustify		: "Javnir tekstkantar",
 DecreaseIndent		: "Minka reglubrotarinntriv",
 IncreaseIndent		: "Økja reglubrotarinntriv",
-Blockquote			: "Blockquote",	//MISSING
+Blockquote			: "Blockquote",
+CreateDiv			: "Ger DIV øki",
+EditDiv				: "Broyt DIV øki",
+DeleteDiv			: "Strika DIV øki",
 Undo				: "Angra",
 Redo				: "Vend aftur",
 NumberedListLbl		: "Talmerktur listi",
@@ -105,27 +109,27 @@
 ImageButton		: "Myndaknøttur",
 
 FitWindow		: "Set tekstviðgera til fulla stødd",
-ShowBlocks		: "Show Blocks",	//MISSING
+ShowBlocks		: "Vís blokkar",
 
 // Context Menu
 EditLink			: "Broyt tilknýti",
 CellCM				: "Meski",
 RowCM				: "Rað",
 ColumnCM			: "Kolonna",
-InsertRowAfter		: "Insert Row After",	//MISSING
-InsertRowBefore		: "Insert Row Before",	//MISSING
+InsertRowAfter		: "Set rað inn aftaná",
+InsertRowBefore		: "Set rað inn áðrenn",
 DeleteRows			: "Strika røðir",
-InsertColumnAfter	: "Insert Column After",	//MISSING
-InsertColumnBefore	: "Insert Column Before",	//MISSING
+InsertColumnAfter	: "Set kolonnu inn aftaná",
+InsertColumnBefore	: "Set kolonnu inn áðrenn",
 DeleteColumns		: "Strika kolonnur",
-InsertCellAfter		: "Insert Cell After",	//MISSING
-InsertCellBefore	: "Insert Cell Before",	//MISSING
+InsertCellAfter		: "Set meska inn aftaná",
+InsertCellBefore	: "Set meska inn áðrenn",
 DeleteCells			: "Strika meskar",
 MergeCells			: "Flætta meskar",
-MergeRight			: "Merge Right",	//MISSING
-MergeDown			: "Merge Down",	//MISSING
-HorizontalSplitCell	: "Split Cell Horizontally",	//MISSING
-VerticalSplitCell	: "Split Cell Vertically",	//MISSING
+MergeRight			: "Flætta meskar til høgru",
+MergeDown			: "Flætta saman",
+HorizontalSplitCell	: "Kloyv meska vatnrætt",
+VerticalSplitCell	: "Kloyv meska loddrætt",
 TableDelete			: "Strika tabell",
 CellProperties		: "Meskueginleikar",
 TableProperties		: "Tabelleginleikar",
@@ -157,6 +161,7 @@
 NoActiveX			: "Trygdaruppsetingin í alnótskaganum kann sum er avmarka onkrar hentleikar í tekstviðgeranum. Tú mást loyva møguleikanum \"Run/Kør ActiveX controls and plug-ins\". Tú kanst uppliva feilir og ávaringar um tvørrandi hentleikar.",
 BrowseServerBlocked : "Ambætarakagin kundi ikki opnast. Tryggja tær, at allar pop-up forðingar eru óvirknar.",
 DialogBlocked		: "Tað eyðnaðist ikki at opna samskiftisrútin. Tryggja tær, at allar pop-up forðingar eru óvirknar.",
+VisitLinkBlocked	: "Tað eyðnaðist ikki at opna nýggjan rút. Tryggja tær, at allar pop-up forðingar eru óvirknar.",
 
 // Dialogs
 DlgBtnOK			: "Góðkent",
@@ -332,7 +337,7 @@
 DlgCellBtnSelect	: "Vel...",
 
 // Find and Replace Dialog
-DlgFindAndReplaceTitle	: "Find and Replace",	//MISSING
+DlgFindAndReplaceTitle	: "Finn og broyt",
 
 // Find Dialog
 DlgFindTitle		: "Finn",
@@ -349,19 +354,19 @@
 DlgReplaceWordChk		: "Bert heil orð",
 
 // Paste Operations / Dialog
-PasteErrorCut	: "Trygdaruppseting alnótskagans forðar tekstviðgeranum í at kvetta tekstin. vinarliga nýt knappaborðið til at kvetta tekstin (CTRL+X).",
+PasteErrorCut	: "Trygdaruppseting alnótskagans forðar tekstviðgeranum í at kvetta tekstin. Vinarliga nýt knappaborðið til at kvetta tekstin (CTRL+X).",
 PasteErrorCopy	: "Trygdaruppseting alnótskagans forðar tekstviðgeranum í at avrita tekstin. Vinarliga nýt knappaborðið til at avrita tekstin (CTRL+C).",
 
 PasteAsText		: "Innrita som reinan tekst",
 PasteFromWord	: "Innrita fra Word",
 
 DlgPasteMsg2	: "Vinarliga koyr tekstin í hendan rútin við knappaborðinum (<strong>CTRL+V</strong>) og klikk á <strong>Góðtak</strong>.",
-DlgPasteSec		: "Because of your browser security settings, the editor is not able to access your clipboard data directly. You are required to paste it again in this window.",	//MISSING
+DlgPasteSec		: "Trygdaruppseting alnótskagans forðar tekstviðgeranum í beinleiðis atgongd til avritingarminnið. Tygum mugu royna aftur í hesum rútinum.",
 DlgPasteIgnoreFont		: "Forfjóna Font definitiónirnar",
-DlgPasteRemoveStyles	: "Strika Styles definitiónir",
+DlgPasteRemoveStyles	: "Strika typografi definitiónir",
 
 // Color Picker
-ColorAutomatic	: "Av sær sjálvum",
+ColorAutomatic	: "Automatiskt",
 ColorMoreColors	: "Fleiri litir...",
 
 // Document Properties
@@ -511,5 +516,11 @@
 DlgAboutBrowserInfoTab	: "Upplýsingar um alnótskagan",
 DlgAboutLicenseTab	: "License",
 DlgAboutVersion		: "version",
-DlgAboutInfo		: "Fyri fleiri upplýsingar, far til"
+DlgAboutInfo		: "Fyri fleiri upplýsingar, far til",
+
+// Div Dialog
+DlgDivGeneralTab	: "Generelt",
+DlgDivAdvancedTab	: "Fjølbroytt",
+DlgDivStyle		: "Typografi",
+DlgDivInlineStyle	: "Inline typografi"
 };

Modified: pal-wcm/trunk/src/main/webapp/fckeditor/editor/lang/fr-ca.js
===================================================================
--- pal-wcm/trunk/src/main/webapp/fckeditor/editor/lang/fr-ca.js	2008-09-03 08:05:44 UTC (rev 1112)
+++ pal-wcm/trunk/src/main/webapp/fckeditor/editor/lang/fr-ca.js	2008-09-04 02:44:24 UTC (rev 1113)
@@ -44,6 +44,7 @@
 InsertLinkLbl		: "Lien",
 InsertLink			: "Insérer/modifier le lien",
 RemoveLink			: "Supprimer le lien",
+VisitLink			: "Suivre le lien",
 Anchor				: "Insérer/modifier l'ancre",
 AnchorDelete		: "Supprimer l'ancre",
 InsertImageLbl		: "Image",
@@ -72,6 +73,9 @@
 DecreaseIndent		: "Diminuer le retrait",
 IncreaseIndent		: "Augmenter le retrait",
 Blockquote			: "Citation",
+CreateDiv			: "Créer Balise Div",
+EditDiv				: "Modifier Balise Div",
+DeleteDiv			: "Supprimer Balise Div",
 Undo				: "Annuler",
 Redo				: "Refaire",
 NumberedListLbl		: "Liste numérotée",
@@ -157,6 +161,7 @@
 NoActiveX			: "Les paramètres de sécurité de votre navigateur peuvent limiter quelques fonctionnalités de l'éditeur. Veuillez activer l'option \"Exécuter les contrôles ActiveX et les plug-ins\". Il se peut que vous rencontriez des erreurs et remarquiez quelques limitations.",
 BrowseServerBlocked : "Le navigateur n'a pas pu être ouvert. Assurez-vous que les bloqueurs de popups soient désactivés.",
 DialogBlocked		: "La fenêtre de dialogue n'a pas pu s'ouvrir. Assurez-vous que les bloqueurs de popups soient désactivés.",
+VisitLinkBlocked	: "It was not possible to open a new window. Make sure all popup blockers are disabled.",	//MISSING
 
 // Dialogs
 DlgBtnOK			: "OK",
@@ -511,5 +516,11 @@
 DlgAboutBrowserInfoTab	: "Navigateur",
 DlgAboutLicenseTab	: "License",
 DlgAboutVersion		: "Version",
-DlgAboutInfo		: "Pour plus d'informations, visiter"
+DlgAboutInfo		: "Pour plus d'informations, visiter",
+
+// Div Dialog
+DlgDivGeneralTab	: "Général",
+DlgDivAdvancedTab	: "Avancé",
+DlgDivStyle		: "Style",
+DlgDivInlineStyle	: "Attribut Style"
 };

Modified: pal-wcm/trunk/src/main/webapp/fckeditor/editor/lang/fr.js
===================================================================
--- pal-wcm/trunk/src/main/webapp/fckeditor/editor/lang/fr.js	2008-09-03 08:05:44 UTC (rev 1112)
+++ pal-wcm/trunk/src/main/webapp/fckeditor/editor/lang/fr.js	2008-09-04 02:44:24 UTC (rev 1113)
@@ -44,6 +44,7 @@
 InsertLinkLbl		: "Lien",
 InsertLink			: "Insérer/modifier le lien",
 RemoveLink			: "Supprimer le lien",
+VisitLink			: "Suivre le lien",
 Anchor				: "Insérer/modifier l'ancre",
 AnchorDelete		: "Supprimer l'ancre",
 InsertImageLbl		: "Image",
@@ -72,6 +73,9 @@
 DecreaseIndent		: "Diminuer le retrait",
 IncreaseIndent		: "Augmenter le retrait",
 Blockquote			: "Citation",
+CreateDiv			: "Créer Balise Div",
+EditDiv				: "Modifier Balise Div",
+DeleteDiv			: "Supprimer Balise Div",
 Undo				: "Annuler",
 Redo				: "Refaire",
 NumberedListLbl		: "Liste numérotée",
@@ -157,6 +161,7 @@
 NoActiveX			: "Les paramètres de sécurité de votre navigateur peuvent limiter quelques fonctionnalités de l'éditeur. Veuillez activer l'option \"Exécuter les contrôles ActiveX et les plug-ins\". Il se peut que vous rencontriez des erreurs et remarquiez quelques limitations.",
 BrowseServerBlocked : "Le navigateur n'a pas pu être ouvert. Assurez-vous que les bloqueurs de popups soient désactivés.",
 DialogBlocked		: "La fenêtre de dialogue n'a pas pu s'ouvrir. Assurez-vous que les bloqueurs de popups soient désactivés.",
+VisitLinkBlocked	: "Impossible d'ouvrir une nouvelle fenêtre. Assurez-vous que les bloqueurs de popups soient désactivés.",
 
 // Dialogs
 DlgBtnOK			: "OK",
@@ -511,5 +516,11 @@
 DlgAboutBrowserInfoTab	: "Navigateur",
 DlgAboutLicenseTab	: "Licence",
 DlgAboutVersion		: "Version",
-DlgAboutInfo		: "Pour plus d'informations, aller à"
+DlgAboutInfo		: "Pour plus d'informations, aller à",
+
+// Div Dialog
+DlgDivGeneralTab	: "Général",
+DlgDivAdvancedTab	: "Avancé",
+DlgDivStyle		: "Style",
+DlgDivInlineStyle	: "Attribut Style"
 };

Modified: pal-wcm/trunk/src/main/webapp/fckeditor/editor/lang/gl.js
===================================================================
--- pal-wcm/trunk/src/main/webapp/fckeditor/editor/lang/gl.js	2008-09-03 08:05:44 UTC (rev 1112)
+++ pal-wcm/trunk/src/main/webapp/fckeditor/editor/lang/gl.js	2008-09-04 02:44:24 UTC (rev 1113)
@@ -44,6 +44,7 @@
 InsertLinkLbl		: "Ligazón",
 InsertLink			: "Inserir/Editar Ligazón",
 RemoveLink			: "Eliminar Ligazón",
+VisitLink			: "Open Link",	//MISSING
 Anchor				: "Inserir/Editar Referencia",
 AnchorDelete		: "Remove Anchor",	//MISSING
 InsertImageLbl		: "Imaxe",
@@ -72,6 +73,9 @@
 DecreaseIndent		: "Disminuir Sangría",
 IncreaseIndent		: "Aumentar Sangría",
 Blockquote			: "Blockquote",	//MISSING
+CreateDiv			: "Create Div Container",	//MISSING
+EditDiv				: "Edit Div Container",	//MISSING
+DeleteDiv			: "Remove Div Container",	//MISSING
 Undo				: "Desfacer",
 Redo				: "Refacer",
 NumberedListLbl		: "Lista Numerada",
@@ -157,6 +161,7 @@
 NoActiveX			: "As opcións de seguridade do seu navegador poderían limitar algunha das características de editor. Debe activar a opción \"Executar controis ActiveX e plug-ins\". Pode notar que faltan características e experimentar erros",
 BrowseServerBlocked : "Non se poido abrir o navegador de recursos. Asegúrese de que están desactivados os bloqueadores de xanelas emerxentes",
 DialogBlocked		: "Non foi posible abrir a xanela de diálogo. Asegúrese de que están desactivados os bloqueadores de xanelas emerxentes",
+VisitLinkBlocked	: "It was not possible to open a new window. Make sure all popup blockers are disabled.",	//MISSING
 
 // Dialogs
 DlgBtnOK			: "OK",
@@ -511,5 +516,11 @@
 DlgAboutBrowserInfoTab	: "Información do Navegador",
 DlgAboutLicenseTab	: "Licencia",
 DlgAboutVersion		: "versión",
-DlgAboutInfo		: "Para máis información visitar:"
+DlgAboutInfo		: "Para máis información visitar:",
+
+// Div Dialog
+DlgDivGeneralTab	: "General",	//MISSING
+DlgDivAdvancedTab	: "Advanced",	//MISSING
+DlgDivStyle		: "Style",	//MISSING
+DlgDivInlineStyle	: "Inline Style"	//MISSING
 };

Added: pal-wcm/trunk/src/main/webapp/fckeditor/editor/lang/gu.js
===================================================================
--- pal-wcm/trunk/src/main/webapp/fckeditor/editor/lang/gu.js	                        (rev 0)
+++ pal-wcm/trunk/src/main/webapp/fckeditor/editor/lang/gu.js	2008-09-04 02:44:24 UTC (rev 1113)
@@ -0,0 +1,526 @@
+/*
+ * FCKeditor - The text editor for Internet - http://www.fckeditor.net
+ * Copyright (C) 2003-2008 Frederico Caldeira Knabben
+ *
+ * == BEGIN LICENSE ==
+ *
+ * Licensed under the terms of any of the following licenses at your
+ * choice:
+ *
+ *  - GNU General Public License Version 2 or later (the "GPL")
+ *    http://www.gnu.org/licenses/gpl.html
+ *
+ *  - GNU Lesser General Public License Version 2.1 or later (the "LGPL")
+ *    http://www.gnu.org/licenses/lgpl.html
+ *
+ *  - Mozilla Public License Version 1.1 or later (the "MPL")
+ *    http://www.mozilla.org/MPL/MPL-1.1.html
+ *
+ * == END LICENSE ==
+ *
+ * Gujarati language file.
+ */
+
+var FCKLang =
+{
+// Language direction : "ltr" (left to right) or "rtl" (right to left).
+Dir					: "ltr",
+
+ToolbarCollapse		: "ટૂલબાર નાનું કરવું",
+ToolbarExpand		: "ટૂલબાર મોટું કરવું",
+
+// Toolbar Items and Context Menu
+Save				: "સેવ",
+NewPage				: "નવુ પાનું",
+Preview				: "પૂર્વદર્શન",
+Cut					: "કાપવું",
+Copy				: "નકલ",
+Paste				: "પેસ્ટ",
+PasteText			: "પેસ્ટ (સાદી ટેક્સ્ટ)",
+PasteWord			: "પેસ્ટ (વડૅ ટેક્સ્ટ)",
+Print				: "પ્રિન્ટ",
+SelectAll			: "બઘું પસંદ કરવું",
+RemoveFormat		: "ફૉર્મટ કાઢવું",
+InsertLinkLbl		: "સંબંધન, લિંક",
+InsertLink			: "લિંક ઇન્સર્ટ/દાખલ કરવી",
+RemoveLink			: "લિંક કાઢવી",
+VisitLink			: "Open Link",	//MISSING
+Anchor				: "ઍંકર ઇન્સર્ટ/દાખલ કરવી",
+AnchorDelete		: "ઍંકર કાઢવી",
+InsertImageLbl		: "ચિત્ર",
+InsertImage			: "ચિત્ર ઇન્સર્ટ/દાખલ કરવું",
+InsertFlashLbl		: "ફ્લૅશ",
+InsertFlash			: "ફ્લૅશ ઇન્સર્ટ/દાખલ કરવું",
+InsertTableLbl		: "ટેબલ, કોઠો",
+InsertTable			: "ટેબલ, કોઠો ઇન્સર્ટ/દાખલ કરવું",
+InsertLineLbl		: "રેખા",
+InsertLine			: "સમસ્તરીય રેખા ઇન્સર્ટ/દાખલ કરવી",
+InsertSpecialCharLbl: "વિશિષ્ટ અક્ષર",
+InsertSpecialChar	: "વિશિષ્ટ અક્ષર ઇન્સર્ટ/દાખલ કરવું",
+InsertSmileyLbl		: "સ્માઇલી",
+InsertSmiley		: "સ્માઇલી ઇન્સર્ટ/દાખલ કરવી",
+About				: "FCKeditorના વિષે",
+Bold				: "બોલ્ડ/સ્પષ્ટ",
+Italic				: "ઇટેલિક, ત્રાંસા",
+Underline			: "અન્ડર્લાઇન, નીચે લીટી",
+StrikeThrough		: "છેકી નાખવું",
+Subscript			: "એક ચિહ્નની નીચે કરેલું બીજું ચિહ્ન",
+Superscript			: "એક ચિહ્ન ઉપર કરેલું બીજું ચિહ્ન.",
+LeftJustify			: "ડાબી બાજુએ/બાજુ તરફ",
+CenterJustify		: "સંકેંદ્રણ/સેંટરિંગ",
+RightJustify		: "જમણી બાજુએ/બાજુ તરફ",
+BlockJustify		: "બ્લૉક, અંતરાય જસ્ટિફાઇ",
+DecreaseIndent		: "ઇન્ડેન્ટ લીટીના આરંભમાં જગ્યા ઘટાડવી",
+IncreaseIndent		: "ઇન્ડેન્ટ, લીટીના આરંભમાં જગ્યા વધારવી",
+Blockquote			: "બ્લૉક-કોટ, અવતરણચિહ્નો",
+CreateDiv			: "Create Div Container",	//MISSING
+EditDiv				: "Edit Div Container",	//MISSING
+DeleteDiv			: "Remove Div Container",	//MISSING
+Undo				: "રદ કરવું; પહેલાં હતી એવી સ્થિતિ પાછી લાવવી",
+Redo				: "રિડૂ; પછી હતી એવી સ્થિતિ પાછી લાવવી",
+NumberedListLbl		: "સંખ્યાંકન સૂચિ",
+NumberedList		: "સંખ્યાંકન સૂચિ ઇન્સર્ટ/દાખલ કરવી",
+BulletedListLbl		: "બુલેટ સૂચિ",
+BulletedList		: "બુલેટ સૂચિ ઇન્સર્ટ/દાખલ કરવી",
+ShowTableBorders	: "ટેબલ, કોઠાની બાજુ(બોર્ડર) બતાવવી",
+ShowDetails			: "વિસ્તૃત વિગતવાર બતાવવું",
+Style				: "શૈલી/રીત",
+FontFormat			: "ફૉન્ટ ફૉર્મટ, રચનાની શૈલી",
+Font				: "ફૉન્ટ",
+FontSize			: "ફૉન્ટ સાઇઝ/કદ",
+TextColor			: "શબ્દનો રંગ",
+BGColor				: "બૅકગ્રાઉન્ડ રંગ,",
+Source				: "મૂળ કે પ્રાથમિક દસ્તાવેજ",
+Find				: "શોધવું",
+Replace				: "રિપ્લેસ/બદલવું",
+SpellCheck			: "જોડણી (સ્પેલિંગ) તપાસવી",
+UniversalKeyboard	: "યૂનિવર્સલ/વિશ્વવ્યાપક કીબૉર્ડ",
+PageBreakLbl		: "પેજબ્રેક/પાનાને અલગ કરવું",
+PageBreak			: "ઇન્સર્ટ પેજબ્રેક/પાનાને અલગ કરવું/દાખલ કરવું",
+
+Form			: "ફૉર્મ/પત્રક",
+Checkbox		: "ચેક બોક્સ",
+RadioButton		: "રેડિઓ બટન",
+TextField		: "ટેક્સ્ટ ફીલ્ડ, શબ્દ ક્ષેત્ર",
+Textarea		: "ટેક્સ્ટ એરિઆ, શબ્દ વિસ્તાર",
+HiddenField		: "ગુપ્ત ક્ષેત્ર",
+Button			: "બટન",
+SelectionField	: "પસંદગી ક્ષેત્ર",
+ImageButton		: "ચિત્ર બટન",
+
+FitWindow		: "એડિટરની સાઇઝ અધિકતમ કરવી",
+ShowBlocks		: "બ્લૉક બતાવવું",
+
+// Context Menu
+EditLink			: " લિંક એડિટ/માં ફેરફાર કરવો",
+CellCM				: "કોષના ખાના",
+RowCM				: "પંક્તિના ખાના",
+ColumnCM			: "કૉલમ/ઊભી કટાર",
+InsertRowAfter		: "પછી પંક્તિ ઉમેરવી",
+InsertRowBefore		: "પહેલાં પંક્તિ ઉમેરવી",
+DeleteRows			: "પંક્તિઓ ડિલીટ/કાઢી નાખવી",
+InsertColumnAfter	: "પછી કૉલમ/ઊભી કટાર ઉમેરવી",
+InsertColumnBefore	: "પહેલાં કૉલમ/ઊભી કટાર ઉમેરવી",
+DeleteColumns		: "કૉલમ/ઊભી કટાર ડિલીટ/કાઢી નાખવી",
+InsertCellAfter		: "પછી કોષ ઉમેરવો",
+InsertCellBefore	: "પહેલાં કોષ ઉમેરવો",
+DeleteCells			: "કોષ ડિલીટ/કાઢી નાખવો",
+MergeCells			: "કોષ ભેગા કરવા",
+MergeRight			: "જમણી બાજુ ભેગા કરવા",
+MergeDown			: "નીચે ભેગા કરવા",
+HorizontalSplitCell	: "કોષને સમસ્તરીય વિભાજન કરવું",
+VerticalSplitCell	: "કોષને સીધું ને ઊભું વિભાજન કરવું",
+TableDelete			: "કોઠો ડિલીટ/કાઢી નાખવું",
+CellProperties		: "કોષના ગુણ",
+TableProperties		: "કોઠાના  ગુણ",
+ImageProperties		: "ચિત્રના ગુણ",
+FlashProperties		: "ફ્લૅશના ગુણ",
+
+AnchorProp			: "ઍંકરના ગુણ",
+ButtonProp			: "બટનના ગુણ",
+CheckboxProp		: "ચેક બોક્સ ગુણ",
+HiddenFieldProp		: "ગુપ્ત ક્ષેત્રના ગુણ",
+RadioButtonProp		: "રેડિઓ બટનના ગુણ",
+ImageButtonProp		: "ચિત્ર બટનના ગુણ",
+TextFieldProp		: "ટેક્સ્ટ ફીલ્ડ, શબ્દ ક્ષેત્રના ગુણ",
+SelectionFieldProp	: "પસંદગી ક્ષેત્રના ગુણ",
+TextareaProp		: "ટેક્સ્ટ એઅરિઆ, શબ્દ વિસ્તારના ગુણ",
+FormProp			: "ફૉર્મ/પત્રકના ગુણ",
+
+FontFormats			: "સામાન્ય;ફૉર્મટેડ;સરનામું;શીર્ષક 1;શીર્ષક 2;શીર્ષક 3;શીર્ષક 4;શીર્ષક 5;શીર્ષક 6;શીર્ષક (DIV)",
+
+// Alerts and Messages
+ProcessingXHTML		: "XHTML પ્રક્રિયા ચાલુ છે. મહેરબાની કરીને રાહ જોવો...",
+Done				: "પતી ગયું",
+PasteWordConfirm	: "તમે જે ટેક્સ્ટ પેસ્ટ કરવા માંગો છો, તે વડૅમાંથી કોપી કરેલુ લાગે છે. પેસ્ટ કરતા પહેલાં ટેક્સ્ટ સાફ કરવી છે?",
+NotCompatiblePaste	: "આ કમાન્ડ ઈનટરનેટ એક્સપ્લોરર(Internet Explorer) 5.5 અથવા એના પછીના વર્ઝન માટેજ છે. ટેક્સ્ટને સાફ કયૅા પહેલાં પેસ્ટ કરવી છે?",
+UnknownToolbarItem	: "અજાણી ટૂલબાર આઇટમ \"%1\"",
+UnknownCommand		: "અજાણયો કમાન્ડ \"%1\"",
+NotImplemented		: "કમાન્ડ ઇમ્પ્લિમન્ટ નથી કરોયો",
+UnknownToolbarSet	: "ટૂલબાર સેટ \"%1\" ઉપલબ્ધ નથી",
+NoActiveX			: "તમારા બ્રાઉઝરની સુરક્ષા સેટિંગસ એડિટરના અમુક ફીચરને પરવાનગી આપતી નથી. કૃપયા \"Run ActiveX controls and plug-ins\" વિકલ્પને ઇનેબલ/સમર્થ કરો. તમારા બ્રાઉઝરમાં એરર ઇન્વિઝિબલ ફીચરનો અનુભવ થઈ શકે છે. કૃપયા પૉપ-અપ બ્લૉકર ડિસેબલ કરો.",
+BrowseServerBlocked : "રિસૉર્સ બ્રાઉઝર ખોલી ન સકાયું.",
+DialogBlocked		: "ડાયલૉગ વિન્ડો ખોલી ન સકાયું. કૃપયા પૉપ-અપ બ્લૉકર ડિસેબલ કરો.",
+VisitLinkBlocked	: "It was not possible to open a new window. Make sure all popup blockers are disabled.",	//MISSING
+
+// Dialogs
+DlgBtnOK			: "ઠીક છે",
+DlgBtnCancel		: "રદ કરવું",
+DlgBtnClose			: "બંધ કરવું",
+DlgBtnBrowseServer	: "સર્વર બ્રાઉઝ કરો",
+DlgAdvancedTag		: "અડ્વાન્સડ",
+DlgOpOther			: "<અન્ય>",
+DlgInfoTab			: "સૂચના",
+DlgAlertUrl			: "URL ઇન્સર્ટ કરો",
+
+// General Dialogs Labels
+DlgGenNotSet		: "<સેટ નથી>",
+DlgGenId			: "Id",
+DlgGenLangDir		: "ભાષા લેખવાની પદ્ધતિ",
+DlgGenLangDirLtr	: "ડાબે થી જમણે (LTR)",
+DlgGenLangDirRtl	: "જમણે થી ડાબે (RTL)",
+DlgGenLangCode		: "ભાષા કોડ",
+DlgGenAccessKey		: "ઍક્સેસ કી",
+DlgGenName			: "નામ",
+DlgGenTabIndex		: "ટૅબ ઇન્ડેક્સ",
+DlgGenLongDescr		: "વધારે માહિતી માટે URL",
+DlgGenClass			: "સ્ટાઇલ-શીટ ક્લાસ",
+DlgGenTitle			: "મુખ્ય મથાળું",
+DlgGenContType		: "મુખ્ય કન્ટેન્ટ પ્રકાર",
+DlgGenLinkCharset	: "લિંક રિસૉર્સ કૅરિક્ટર સેટ",
+DlgGenStyle			: "સ્ટાઇલ",
+
+// Image Dialog
+DlgImgTitle			: "ચિત્રના ગુણ",
+DlgImgInfoTab		: "ચિત્ર ની જાણકારી",
+DlgImgBtnUpload		: "આ સર્વરને મોકલવું",
+DlgImgURL			: "URL",
+DlgImgUpload		: "અપલોડ",
+DlgImgAlt			: "ઑલ્ટર્નટ ટેક્સ્ટ",
+DlgImgWidth			: "પહોળાઈ",
+DlgImgHeight		: "ઊંચાઈ",
+DlgImgLockRatio		: "લૉક ગુણોત્તર",
+DlgBtnResetSize		: "રીસેટ સાઇઝ",
+DlgImgBorder		: "બોર્ડર",
+DlgImgHSpace		: "સમસ્તરીય જગ્યા",
+DlgImgVSpace		: "લંબરૂપ જગ્યા",
+DlgImgAlign			: "લાઇનદોરીમાં ગોઠવવું",
+DlgImgAlignLeft		: "ડાબી બાજુ ગોઠવવું",
+DlgImgAlignAbsBottom: "Abs નીચે",
+DlgImgAlignAbsMiddle: "Abs ઉપર",
+DlgImgAlignBaseline	: "આધાર લીટી",
+DlgImgAlignBottom	: "નીચે",
+DlgImgAlignMiddle	: "વચ્ચે",
+DlgImgAlignRight	: "જમણી",
+DlgImgAlignTextTop	: "ટેક્સ્ટ ઉપર",
+DlgImgAlignTop		: "ઉપર",
+DlgImgPreview		: "પૂર્વદર્શન",
+DlgImgAlertUrl		: "ચિત્રની URL ટાઇપ કરો",
+DlgImgLinkTab		: "લિંક",
+
+// Flash Dialog
+DlgFlashTitle		: "ફ્લૅશ ગુણ",
+DlgFlashChkPlay		: "ઑટો/સ્વયં પ્લે",
+DlgFlashChkLoop		: "લૂપ",
+DlgFlashChkMenu		: "ફ્લૅશ મેન્યૂ નો પ્રયોગ કરો",
+DlgFlashScale		: "સ્કેલ",
+DlgFlashScaleAll	: "સ્કેલ ઓલ/બધુ બતાવો",
+DlgFlashScaleNoBorder	: "સ્કેલ બોર્ડર વગર",
+DlgFlashScaleFit	: "સ્કેલ એકદમ ફીટ",
+
+// Link Dialog
+DlgLnkWindowTitle	: "લિંક",
+DlgLnkInfoTab		: "લિંક ઇન્ફૉ ટૅબ",
+DlgLnkTargetTab		: "ટાર્ગેટ/લક્ષ્ય ટૅબ",
+
+DlgLnkType			: "લિંક પ્રકાર",
+DlgLnkTypeURL		: "URL",
+DlgLnkTypeAnchor	: "આ પેજનો ઍંકર",
+DlgLnkTypeEMail		: "ઈ-મેલ",
+DlgLnkProto			: "પ્રોટોકૉલ",
+DlgLnkProtoOther	: "<અન્ય>",
+DlgLnkURL			: "URL",
+DlgLnkAnchorSel		: "ઍંકર પસંદ કરો",
+DlgLnkAnchorByName	: "ઍંકર નામથી પસંદ કરો",
+DlgLnkAnchorById	: "ઍંકર એલિમન્ટ Id થી પસંદ કરો",
+DlgLnkNoAnchors		: "(ડૉક્યુમન્ટમાં ઍંકરની સંખ્યા)",
+DlgLnkEMail			: "ઈ-મેલ સરનામું",
+DlgLnkEMailSubject	: "ઈ-મેલ વિષય",
+DlgLnkEMailBody		: "સંદેશ",
+DlgLnkUpload		: "અપલોડ",
+DlgLnkBtnUpload		: "આ સર્વરને મોકલવું",
+
+DlgLnkTarget		: "ટાર્ગેટ/લક્ષ્ય",
+DlgLnkTargetFrame	: "<ફ્રેમ>",
+DlgLnkTargetPopup	: "<પૉપ-અપ વિન્ડો>",
+DlgLnkTargetBlank	: "નવી  વિન્ડો (_blank)",
+DlgLnkTargetParent	: "મૂળ વિન્ડો (_parent)",
+DlgLnkTargetSelf	: "આજ વિન્ડો (_self)",
+DlgLnkTargetTop		: "ઉપરની વિન્ડો (_top)",
+DlgLnkTargetFrameName	: "ટાર્ગેટ ફ્રેમ નું નામ",
+DlgLnkPopWinName	: "પૉપ-અપ વિન્ડો નું નામ",
+DlgLnkPopWinFeat	: "પૉપ-અપ વિન્ડો ફીચરસૅ",
+DlgLnkPopResize		: "સાઇઝ બદલી સકાય છે",
+DlgLnkPopLocation	: "લોકેશન બાર",
+DlgLnkPopMenu		: "મેન્યૂ બાર",
+DlgLnkPopScroll		: "સ્ક્રોલ બાર",
+DlgLnkPopStatus		: "સ્ટૅટસ બાર",
+DlgLnkPopToolbar	: "ટૂલ બાર",
+DlgLnkPopFullScrn	: "ફુલ સ્ક્રીન (IE)",
+DlgLnkPopDependent	: "ડિપેન્ડન્ટ (Netscape)",
+DlgLnkPopWidth		: "પહોળાઈ",
+DlgLnkPopHeight		: "ઊંચાઈ",
+DlgLnkPopLeft		: "ડાબી બાજુ",
+DlgLnkPopTop		: "જમણી બાજુ",
+
+DlnLnkMsgNoUrl		: "લિંક  URL ટાઇપ કરો",
+DlnLnkMsgNoEMail	: "ઈ-મેલ સરનામું ટાઇપ કરો",
+DlnLnkMsgNoAnchor	: "ઍંકર પસંદ કરો",
+DlnLnkMsgInvPopName	: "પૉપ-અપ વિન્ડો નું નામ ઍલ્ફબેટથી શરૂ કરવો અને તેમાં સ્પેઇસ ન હોવી જોઈએ",
+
+// Color Dialog
+DlgColorTitle		: "રંગ  પસંદ કરો",
+DlgColorBtnClear	: "સાફ કરો",
+DlgColorHighlight	: "હાઈલાઇટ",
+DlgColorSelected	: "સિલેક્ટેડ/પસંદ કરવું",
+
+// Smiley Dialog
+DlgSmileyTitle		: "સ્માઇલી  પસંદ કરો",
+
+// Special Character Dialog
+DlgSpecialCharTitle	: "સ્પેશિઅલ વિશિષ્ટ અક્ષર પસંદ કરો",
+
+// Table Dialog
+DlgTableTitle		: "ટેબલ, કોઠાનું મથાળું",
+DlgTableRows		: "પંક્તિના ખાના",
+DlgTableColumns		: "કૉલમ/ઊભી કટાર",
+DlgTableBorder		: "કોઠાની બાજુ(બોર્ડર) સાઇઝ",
+DlgTableAlign		: "અલાઇનમન્ટ/ગોઠવાયેલું ",
+DlgTableAlignNotSet	: "<સેટ નથી>",
+DlgTableAlignLeft	: "ડાબી બાજુ",
+DlgTableAlignCenter	: "મધ્ય સેન્ટર",
+DlgTableAlignRight	: "જમણી બાજુ",
+DlgTableWidth		: "પહોળાઈ",
+DlgTableWidthPx		: "પિકસલ",
+DlgTableWidthPc		: "પ્રતિશત",
+DlgTableHeight		: "ઊંચાઈ",
+DlgTableCellSpace	: "સેલ અંતર",
+DlgTableCellPad		: "સેલ પૅડિંગ",
+DlgTableCaption		: "મથાળું/કૅપ્શન ",
+DlgTableSummary		: "ટૂંકો એહેવાલ",
+
+// Table Cell Dialog
+DlgCellTitle		: "પંક્તિના ખાનાના ગુણ",
+DlgCellWidth		: "પહોળાઈ",
+DlgCellWidthPx		: "પિકસલ",
+DlgCellWidthPc		: "પ્રતિશત",
+DlgCellHeight		: "ઊંચાઈ",
+DlgCellWordWrap		: "વર્ડ રૅપ",
+DlgCellWordWrapNotSet	: "<સેટ નથી>",
+DlgCellWordWrapYes	: "હા",
+DlgCellWordWrapNo	: "ના",
+DlgCellHorAlign		: "સમસ્તરીય ગોઠવવું",
+DlgCellHorAlignNotSet	: "<સેટ નથી>",
+DlgCellHorAlignLeft	: "ડાબી બાજુ",
+DlgCellHorAlignCenter	: "મધ્ય સેન્ટર",
+DlgCellHorAlignRight: "જમણી બાજુ",
+DlgCellVerAlign		: "લંબરૂપ ગોઠવવું",
+DlgCellVerAlignNotSet	: "<સેટ નથી>",
+DlgCellVerAlignTop	: "ઉપર",
+DlgCellVerAlignMiddle	: "મધ્ય સેન્ટર",
+DlgCellVerAlignBottom	: "નીચે",
+DlgCellVerAlignBaseline	: "મૂળ રેખા",
+DlgCellRowSpan		: "પંક્તિ સ્પાન",
+DlgCellCollSpan		: "કૉલમ/ઊભી કટાર સ્પાન",
+DlgCellBackColor	: "બૅકગ્રાઉન્ડ રંગ",
+DlgCellBorderColor	: "બોર્ડરનો રંગ",
+DlgCellBtnSelect	: "પસંદ કરો...",
+
+// Find and Replace Dialog
+DlgFindAndReplaceTitle	: "શોધવું અને બદલવું",
+
+// Find Dialog
+DlgFindTitle		: "શોધવું",
+DlgFindFindBtn		: "શોધવું",
+DlgFindNotFoundMsg	: "તમે શોધેલી ટેક્સ્ટ નથી મળી",
+
+// Replace Dialog
+DlgReplaceTitle			: "બદલવું",
+DlgReplaceFindLbl		: "આ શોધો",
+DlgReplaceReplaceLbl	: "આનાથી બદલો",
+DlgReplaceCaseChk		: "કેસ સરખા રાખો",
+DlgReplaceReplaceBtn	: "બદલવું",
+DlgReplaceReplAllBtn	: "બઘા બદલી ",
+DlgReplaceWordChk		: "બઘા શબ્દ સરખા રાખો",
+
+// Paste Operations / Dialog
+PasteErrorCut	: "તમારા બ્રાઉઝર ની સુરક્ષિત સેટિંગસ કટ કરવાની પરવાનગી નથી આપતી. (Ctrl+X) નો ઉપયોગ કરો.",
+PasteErrorCopy	: "તમારા બ્રાઉઝર ની સુરક્ષિત સેટિંગસ કોપી કરવાની પરવાનગી નથી આપતી.  (Ctrl+C) का प्रयोग करें।",
+
+PasteAsText		: "પેસ્ટ (ટેક્સ્ટ)",
+PasteFromWord	: "પેસ્ટ (વર્ડ થી)",
+
+DlgPasteMsg2	: "Ctrl+V નો પ્રયોગ કરી પેસ્ટ કરો",
+DlgPasteSec		: "તમારા બ્રાઉઝર ની સુરક્ષિત સેટિંગસના કારણે,એડિટર તમારા કિલ્પબોર્ડ ડેટા ને કોપી નથી કરી શકતો. તમારે આ વિન્ડોમાં ફરીથી પેસ્ટ કરવું પડશે.",
+DlgPasteIgnoreFont		: "ફૉન્ટફેસ વ્યાખ્યાની અવગણના",
+DlgPasteRemoveStyles	: "સ્ટાઇલ વ્યાખ્યા કાઢી નાખવી",
+
+// Color Picker
+ColorAutomatic	: "સ્વચાલિત",
+ColorMoreColors	: "ઔર રંગ...",
+
+// Document Properties
+DocProps		: "ડૉક્યુમન્ટ ગુણ/પ્રૉપર્ટિઝ",
+
+// Anchor Dialog
+DlgAnchorTitle		: "ઍંકર ગુણ/પ્રૉપર્ટિઝ",
+DlgAnchorName		: "ઍંકરનું નામ",
+DlgAnchorErrorName	: "ઍંકરનું નામ ટાઈપ કરો",
+
+// Speller Pages Dialog
+DlgSpellNotInDic		: "શબ્દકોશમાં નથી",
+DlgSpellChangeTo		: "આનાથી બદલવું",
+DlgSpellBtnIgnore		: "ઇગ્નોર/અવગણના કરવી",
+DlgSpellBtnIgnoreAll	: "બધાની ઇગ્નોર/અવગણના કરવી",
+DlgSpellBtnReplace		: "બદલવું",
+DlgSpellBtnReplaceAll	: "બધા બદલી કરો",
+DlgSpellBtnUndo			: "અન્ડૂ",
+DlgSpellNoSuggestions	: "- કઇ સજેશન નથી -",
+DlgSpellProgress		: "શબ્દની જોડણી/સ્પેલ ચેક ચાલુ છે...",
+DlgSpellNoMispell		: "શબ્દની જોડણી/સ્પેલ ચેક પૂર્ણ: ખોટી જોડણી મળી નથી",
+DlgSpellNoChanges		: "શબ્દની જોડણી/સ્પેલ ચેક પૂર્ણ: એકપણ શબ્દ બદલયો નથી",
+DlgSpellOneChange		: "શબ્દની જોડણી/સ્પેલ ચેક પૂર્ણ: એક શબ્દ બદલયો છે",
+DlgSpellManyChanges		: "શબ્દની જોડણી/સ્પેલ ચેક પૂર્ણ: %1 શબ્દ બદલયા છે",
+
+IeSpellDownload			: "સ્પેલ-ચેકર ઇન્સ્ટોલ નથી. શું તમે ડાઉનલોડ કરવા માંગો છો?",
+
+// Button Dialog
+DlgButtonText		: "ટેક્સ્ટ (વૅલ્યૂ)",
+DlgButtonType		: "પ્રકાર",
+DlgButtonTypeBtn	: "બટન",
+DlgButtonTypeSbm	: "સબ્મિટ",
+DlgButtonTypeRst	: "રિસેટ",
+
+// Checkbox and Radio Button Dialogs
+DlgCheckboxName		: "નામ",
+DlgCheckboxValue	: "વૅલ્યૂ",
+DlgCheckboxSelected	: "સિલેક્ટેડ",
+
+// Form Dialog
+DlgFormName		: "નામ",
+DlgFormAction	: "ક્રિયા",
+DlgFormMethod	: "પદ્ધતિ",
+
+// Select Field Dialog
+DlgSelectName		: "નામ",
+DlgSelectValue		: "વૅલ્યૂ",
+DlgSelectSize		: "સાઇઝ",
+DlgSelectLines		: "લીટીઓ",
+DlgSelectChkMulti	: "એકથી વધારે પસંદ કરી શકો",
+DlgSelectOpAvail	: "ઉપલબ્ધ વિકલ્પ",
+DlgSelectOpText		: "ટેક્સ્ટ",
+DlgSelectOpValue	: "વૅલ્યૂ",
+DlgSelectBtnAdd		: "ઉમેરવું",
+DlgSelectBtnModify	: "બદલવું",
+DlgSelectBtnUp		: "ઉપર",
+DlgSelectBtnDown	: "નીચે",
+DlgSelectBtnSetValue : "પસંદ કરલી વૅલ્યૂ સેટ કરો",
+DlgSelectBtnDelete	: "રદ કરવું",
+
+// Textarea Dialog
+DlgTextareaName	: "નામ",
+DlgTextareaCols	: "કૉલમ/ઊભી કટાર",
+DlgTextareaRows	: "પંક્તિઓ",
+
+// Text Field Dialog
+DlgTextName			: "નામ",
+DlgTextValue		: "વૅલ્યૂ",
+DlgTextCharWidth	: "કેરેક્ટરની પહોળાઈ",
+DlgTextMaxChars		: "અધિકતમ કેરેક્ટર",
+DlgTextType			: "ટાઇપ",
+DlgTextTypeText		: "ટેક્સ્ટ",
+DlgTextTypePass		: "પાસવર્ડ",
+
+// Hidden Field Dialog
+DlgHiddenName	: "નામ",
+DlgHiddenValue	: "વૅલ્યૂ",
+
+// Bulleted List Dialog
+BulletedListProp	: "બુલેટ સૂચિ ગુણ",
+NumberedListProp	: "સંખ્યાંક્તિ સૂચિ ગુણ",
+DlgLstStart			: "શરૂઆતથી",
+DlgLstType			: "પ્રકાર",
+DlgLstTypeCircle	: "વર્તુળ",
+DlgLstTypeDisc		: "ડિસ્ક",
+DlgLstTypeSquare	: "ચોરસ",
+DlgLstTypeNumbers	: "સંખ્યા (1, 2, 3)",
+DlgLstTypeLCase		: "નાના અક્ષર (a, b, c)",
+DlgLstTypeUCase		: "મોટા અક્ષર (A, B, C)",
+DlgLstTypeSRoman	: "નાના રોમન આંક (i, ii, iii)",
+DlgLstTypeLRoman	: "મોટા રોમન આંક (I, II, III)",
+
+// Document Properties Dialog
+DlgDocGeneralTab	: "સાધારણ",
+DlgDocBackTab		: "બૅકગ્રાઉન્ડ",
+DlgDocColorsTab		: "રંગ અને માર્જિન/કિનાર",
+DlgDocMetaTab		: "મેટાડૅટા",
+
+DlgDocPageTitle		: "પેજ મથાળું/ટાઇટલ",
+DlgDocLangDir		: "ભાષા લેખવાની પદ્ધતિ",
+DlgDocLangDirLTR	: "ડાબે થી જમણે (LTR)",
+DlgDocLangDirRTL	: "જમણે થી ડાબે (RTL)",
+DlgDocLangCode		: "ભાષા કોડ",
+DlgDocCharSet		: "કેરેક્ટર સેટ એન્કોડિંગ",
+DlgDocCharSetCE		: "મધ્ય યુરોપિઅન (Central European)",
+DlgDocCharSetCT		: "ચાઇનીઝ (Chinese Traditional Big5)",
+DlgDocCharSetCR		: "સિરીલિક (Cyrillic)",
+DlgDocCharSetGR		: "ગ્રીક (Greek)",
+DlgDocCharSetJP		: "જાપાનિઝ (Japanese)",
+DlgDocCharSetKR		: "કોરીયન (Korean)",
+DlgDocCharSetTR		: "ટર્કિ (Turkish)",
+DlgDocCharSetUN		: "યૂનિકોડ (UTF-8)",
+DlgDocCharSetWE		: "પશ્ચિમ યુરોપિઅન (Western European)",
+DlgDocCharSetOther	: "અન્ય કેરેક્ટર સેટ એન્કોડિંગ",
+
+DlgDocDocType		: "ડૉક્યુમન્ટ પ્રકાર શીર્ષક",
+DlgDocDocTypeOther	: "અન્ય ડૉક્યુમન્ટ પ્રકાર શીર્ષક",
+DlgDocIncXHTML		: "XHTML સૂચના સમાવિષ્ટ કરવી",
+DlgDocBgColor		: "બૅકગ્રાઉન્ડ રંગ",
+DlgDocBgImage		: "બૅકગ્રાઉન્ડ ચિત્ર URL",
+DlgDocBgNoScroll	: "સ્ક્રોલ ન થાય તેવું બૅકગ્રાઉન્ડ",
+DlgDocCText			: "ટેક્સ્ટ",
+DlgDocCLink			: "લિંક",
+DlgDocCVisited		: "વિઝિટેડ લિંક",
+DlgDocCActive		: "સક્રિય લિંક",
+DlgDocMargins		: "પેજ માર્જિન",
+DlgDocMaTop			: "ઉપર",
+DlgDocMaLeft		: "ડાબી",
+DlgDocMaRight		: "જમણી",
+DlgDocMaBottom		: "નીચે",
+DlgDocMeIndex		: "ડૉક્યુમન્ટ ઇન્ડેક્સ સંકેતશબ્દ (અલ્પવિરામ (,) થી અલગ કરો)",
+DlgDocMeDescr		: "ડૉક્યુમન્ટ વર્ણન",
+DlgDocMeAuthor		: "લેખક",
+DlgDocMeCopy		: "કૉપિરાઇટ",
+DlgDocPreview		: "પૂર્વદર્શન",
+
+// Templates Dialog
+Templates			: "ટેમ્પ્લેટ",
+DlgTemplatesTitle	: "કન્ટેન્ટ ટેમ્પ્લેટ",
+DlgTemplatesSelMsg	: "એડિટરમાં ઓપન કરવા ટેમ્પ્લેટ પસંદ કરો (વર્તમાન કન્ટેન્ટ સેવ નહીં થાય):",
+DlgTemplatesLoading	: "ટેમ્પ્લેટ સૂચિ લોડ થાય છે. રાહ જુઓ...",
+DlgTemplatesNoTpl	: "(કોઈ ટેમ્પ્લેટ ડિફાઇન નથી)",
+DlgTemplatesReplace	: "મૂળ શબ્દને બદલો",
+
+// About Dialog
+DlgAboutAboutTab	: "FCKEditor ના વિષે",
+DlgAboutBrowserInfoTab	: "બ્રાઉઝર ના વિષે",
+DlgAboutLicenseTab	: "લાઇસન્સ",
+DlgAboutVersion		: "વર્ઝન",
+DlgAboutInfo		: "વધારે માહિતી માટે:",
+
+// Div Dialog
+DlgDivGeneralTab	: "General",	//MISSING
+DlgDivAdvancedTab	: "Advanced",	//MISSING
+DlgDivStyle		: "Style",	//MISSING
+DlgDivInlineStyle	: "Inline Style"	//MISSING
+};


Property changes on: pal-wcm/trunk/src/main/webapp/fckeditor/editor/lang/gu.js
___________________________________________________________________
Name: svn:eol-style
   + native

Modified: pal-wcm/trunk/src/main/webapp/fckeditor/editor/lang/he.js
===================================================================
--- pal-wcm/trunk/src/main/webapp/fckeditor/editor/lang/he.js	2008-09-03 08:05:44 UTC (rev 1112)
+++ pal-wcm/trunk/src/main/webapp/fckeditor/editor/lang/he.js	2008-09-04 02:44:24 UTC (rev 1113)
@@ -44,6 +44,7 @@
 InsertLinkLbl		: "קישור",
 InsertLink			: "הוספת/עריכת קישור",
 RemoveLink			: "הסרת הקישור",
+VisitLink			: "פתח קישור",
 Anchor				: "הוספת/עריכת נקודת עיגון",
 AnchorDelete		: "הסר נקודת עיגון",
 InsertImageLbl		: "תמונה",
@@ -72,6 +73,9 @@
 DecreaseIndent		: "הקטנת אינדנטציה",
 IncreaseIndent		: "הגדלת אינדנטציה",
 Blockquote			: "בלוק ציטוט",
+CreateDiv			: "צור מיכל(תג)DIV",
+EditDiv				: "ערוך מיכל (תג)DIV",
+DeleteDiv			: "הסר מיכל(תג) DIV",
 Undo				: "ביטול צעד אחרון",
 Redo				: "חזרה על צעד אחרון",
 NumberedListLbl		: "רשימה ממוספרת",
@@ -157,6 +161,7 @@
 NoActiveX			: "הגדרות אבטחה של הדפדפן עלולות לגביל את אפשרויות העריכה.יש לאפשר את האופציה \"הרץ פקדים פעילים ותוספות\". תוכל לחוות טעויות וחיווים של אפשרויות שחסרים.",
 BrowseServerBlocked : "לא ניתן לגשת לדפדפן משאבים.אנא וודא שחוסם חלונות הקופצים לא פעיל.",
 DialogBlocked		: "לא היה ניתן לפתוח חלון דיאלוג. אנא וודא שחוסם חלונות קופצים לא פעיל.",
+VisitLinkBlocked	: "לא ניתן לפתוח חלון חדש.נא לוודא שחוסמי החלונות הקופצים לא פעילים.",
 
 // Dialogs
 DlgBtnOK			: "אישור",
@@ -166,7 +171,7 @@
 DlgAdvancedTag		: "אפשרויות מתקדמות",
 DlgOpOther			: "<אחר>",
 DlgInfoTab			: "מידע",
-DlgAlertUrl			: "אנה הזן URL",
+DlgAlertUrl			: "אנא הזן URL",
 
 // General Dialogs Labels
 DlgGenNotSet		: "<לא נקבע>",
@@ -511,5 +516,11 @@
 DlgAboutBrowserInfoTab	: "גירסת דפדפן",
 DlgAboutLicenseTab	: "רשיון",
 DlgAboutVersion		: "גירסא",
-DlgAboutInfo		: "מידע נוסף ניתן למצוא כאן:"
+DlgAboutInfo		: "מידע נוסף ניתן למצוא כאן:",
+
+// Div Dialog
+DlgDivGeneralTab	: "כללי",
+DlgDivAdvancedTab	: "מתקדם",
+DlgDivStyle		: "סגנון",
+DlgDivInlineStyle	: "סגנון בתוך השורה"
 };

Modified: pal-wcm/trunk/src/main/webapp/fckeditor/editor/lang/hi.js
===================================================================
--- pal-wcm/trunk/src/main/webapp/fckeditor/editor/lang/hi.js	2008-09-03 08:05:44 UTC (rev 1112)
+++ pal-wcm/trunk/src/main/webapp/fckeditor/editor/lang/hi.js	2008-09-04 02:44:24 UTC (rev 1113)
@@ -44,6 +44,7 @@
 InsertLinkLbl		: "लिंक",
 InsertLink			: "लिंक इन्सर्ट/संपादन",
 RemoveLink			: "लिंक हटायें",
+VisitLink			: "लिंक खोलें",
 Anchor				: "ऐंकर इन्सर्ट/संपादन",
 AnchorDelete		: "ऐंकर हटायें",
 InsertImageLbl		: "तस्वीर",
@@ -72,6 +73,9 @@
 DecreaseIndent		: "इन्डॅन्ट कम करें",
 IncreaseIndent		: "इन्डॅन्ट बढ़ायें",
 Blockquote			: "ब्लॉक-कोट",
+CreateDiv			: "डिव (Div) कन्टेनर बनायें",
+EditDiv				: "डिव (Div) कन्टेनर बदलें",
+DeleteDiv			: "डिव कन्टेनर हटायें",
 Undo				: "अन्डू",
 Redo				: "रीडू",
 NumberedListLbl		: "अंकीय सूची",
@@ -155,8 +159,9 @@
 NotImplemented		: "कमान्ड इम्प्लीमॅन्ट नहीं किया गया है",
 UnknownToolbarSet	: "टूलबार सॅट \"%1\" उपलब्ध नहीं है",
 NoActiveX			: "आपके ब्राउज़र् की सुरक्शा सेटिंग्स् एडिटर की कुछ् फ़ीचरों को सीमित कर् सकती हैं। क्रिपया \"Run ActiveX controls and plug-ins\" विकल्प को एनेबल करें. आपको एरर्स् और गायब फ़ीचर्स् का अनुभव हो सकता है।",
-BrowseServerBlocked : "रिसोर्सेज़ ब्राउज़र् नहीं खोला जा सका। क्रिपया सभी पॉप्-अप् ब्लॉकर्स् को डिसेबल करें।",
-DialogBlocked		: "डायलग विन्डो नहीं खोला जा सका। क्रिपया सभी पॉप्-अप् ब्लॉकर्स् को डिसेबल करें।",
+BrowseServerBlocked : "रिसोर्सेज़ ब्राउज़र् नहीं खोला जा सका। क्रिपया सभी पॉप्-अप् ब्लॉकर्स् को निष्क्रिय करें।",
+DialogBlocked		: "डायलग विन्डो नहीं खोला जा सका। क्रिपया सभी पॉप्-अप् ब्लॉकर्स् को निष्क्रिय करें।",
+VisitLinkBlocked	: "नया विन्डो नहीं खोला जा सका। क्रिपया सभी पॉप्-अप् ब्लॉकर्स् को निष्क्रिय करें।",
 
 // Dialogs
 DlgBtnOK			: "ठीक है",
@@ -511,5 +516,11 @@
 DlgAboutBrowserInfoTab	: "ब्राउज़र के बारे में",
 DlgAboutLicenseTab	: "लाइसैन्स",
 DlgAboutVersion		: "वर्ज़न",
-DlgAboutInfo		: "अधिक जानकारी के लिये यहाँ जायें:"
+DlgAboutInfo		: "अधिक जानकारी के लिये यहाँ जायें:",
+
+// Div Dialog
+DlgDivGeneralTab	: "सामान्य",
+DlgDivAdvancedTab	: "एड्वान्स्ड",
+DlgDivStyle		: "स्टाइल",
+DlgDivInlineStyle	: "इनलाइन स्टाइल"
 };

Modified: pal-wcm/trunk/src/main/webapp/fckeditor/editor/lang/hr.js
===================================================================
--- pal-wcm/trunk/src/main/webapp/fckeditor/editor/lang/hr.js	2008-09-03 08:05:44 UTC (rev 1112)
+++ pal-wcm/trunk/src/main/webapp/fckeditor/editor/lang/hr.js	2008-09-04 02:44:24 UTC (rev 1113)
@@ -44,6 +44,7 @@
 InsertLinkLbl		: "Link",
 InsertLink			: "Ubaci/promijeni link",
 RemoveLink			: "Ukloni link",
+VisitLink			: "Otvori link",
 Anchor				: "Ubaci/promijeni sidro",
 AnchorDelete		: "Ukloni sidro",
 InsertImageLbl		: "Slika",
@@ -72,6 +73,9 @@
 DecreaseIndent		: "Pomakni ulijevo",
 IncreaseIndent		: "Pomakni udesno",
 Blockquote			: "Blockquote",
+CreateDiv			: "Napravi Div kontejner",
+EditDiv				: "Uredi Div kontejner",
+DeleteDiv			: "Ukloni Div kontejner",
 Undo				: "Poništi",
 Redo				: "Ponovi",
 NumberedListLbl		: "Brojčana lista",
@@ -157,6 +161,7 @@
 NoActiveX			: "Vaše postavke pretraživača mogle bi ograničiti neke od mogućnosti editora. Morate uključiti opciju \"Run ActiveX controls and plug-ins\" u postavkama. Ukoliko to ne učinite, moguće su razliite greške tijekom rada.",
 BrowseServerBlocked : "Pretraivač nije moguće otvoriti. Provjerite da li je uključeno blokiranje pop-up prozora.",
 DialogBlocked		: "Nije moguće otvoriti novi prozor. Provjerite da li je uključeno blokiranje pop-up prozora.",
+VisitLinkBlocked	: "Nije moguće otvoriti novi prozor. Provjerite da li je uključeno blokiranje pop-up prozora.",
 
 // Dialogs
 DlgBtnOK			: "OK",
@@ -511,5 +516,11 @@
 DlgAboutBrowserInfoTab	: "Podaci o pretraživaču",
 DlgAboutLicenseTab	: "Licenca",
 DlgAboutVersion		: "inačica",
-DlgAboutInfo		: "Za više informacija posjetite"
+DlgAboutInfo		: "Za više informacija posjetite",
+
+// Div Dialog
+DlgDivGeneralTab	: "Općenito",
+DlgDivAdvancedTab	: "Napredno",
+DlgDivStyle		: "Stil",
+DlgDivInlineStyle	: "Stil u redu"
 };

Modified: pal-wcm/trunk/src/main/webapp/fckeditor/editor/lang/hu.js
===================================================================
--- pal-wcm/trunk/src/main/webapp/fckeditor/editor/lang/hu.js	2008-09-03 08:05:44 UTC (rev 1112)
+++ pal-wcm/trunk/src/main/webapp/fckeditor/editor/lang/hu.js	2008-09-04 02:44:24 UTC (rev 1113)
@@ -44,6 +44,7 @@
 InsertLinkLbl		: "Hivatkozás",
 InsertLink			: "Hivatkozás beillesztése/módosítása",
 RemoveLink			: "Hivatkozás törlése",
+VisitLink			: "Open Link",	//MISSING
 Anchor				: "Horgony beillesztése/szerkesztése",
 AnchorDelete		: "Horgony eltávolítása",
 InsertImageLbl		: "Kép",
@@ -72,6 +73,9 @@
 DecreaseIndent		: "Behúzás csökkentése",
 IncreaseIndent		: "Behúzás növelése",
 Blockquote			: "Idézet blokk",
+CreateDiv			: "Create Div Container",	//MISSING
+EditDiv				: "Edit Div Container",	//MISSING
+DeleteDiv			: "Remove Div Container",	//MISSING
 Undo				: "Visszavonás",
 Redo				: "Ismétlés",
 NumberedListLbl		: "Számozás",
@@ -157,6 +161,7 @@
 NoActiveX			: "A böngésző biztonsági beállításai korlátozzák a szerkesztő lehetőségeit. Engedélyezni kell ezt az opciót: \"Run ActiveX controls and plug-ins\". Ettől függetlenül előfordulhatnak hibaüzenetek ill. bizonyos funkciók hiányozhatnak.",
 BrowseServerBlocked : "Nem lehet megnyitni a fájlböngészőt. Bizonyosodjon meg róla, hogy a felbukkanó ablakok engedélyezve vannak.",
 DialogBlocked		: "Nem lehet megnyitni a párbeszédablakot. Bizonyosodjon meg róla, hogy a felbukkanó ablakok engedélyezve vannak.",
+VisitLinkBlocked	: "It was not possible to open a new window. Make sure all popup blockers are disabled.",	//MISSING
 
 // Dialogs
 DlgBtnOK			: "Rendben",
@@ -511,5 +516,11 @@
 DlgAboutBrowserInfoTab	: "Böngésző információ",
 DlgAboutLicenseTab	: "Licensz",
 DlgAboutVersion		: "verzió",
-DlgAboutInfo		: "További információkért látogasson el ide:"
+DlgAboutInfo		: "További információkért látogasson el ide:",
+
+// Div Dialog
+DlgDivGeneralTab	: "General",	//MISSING
+DlgDivAdvancedTab	: "Advanced",	//MISSING
+DlgDivStyle		: "Style",	//MISSING
+DlgDivInlineStyle	: "Inline Style"	//MISSING
 };

Modified: pal-wcm/trunk/src/main/webapp/fckeditor/editor/lang/it.js
===================================================================
--- pal-wcm/trunk/src/main/webapp/fckeditor/editor/lang/it.js	2008-09-03 08:05:44 UTC (rev 1112)
+++ pal-wcm/trunk/src/main/webapp/fckeditor/editor/lang/it.js	2008-09-04 02:44:24 UTC (rev 1113)
@@ -44,8 +44,9 @@
 InsertLinkLbl		: "Collegamento",
 InsertLink			: "Inserisci/Modifica collegamento",
 RemoveLink			: "Elimina collegamento",
+VisitLink			: "Open Link",	//MISSING
 Anchor				: "Inserisci/Modifica Ancora",
-AnchorDelete		: "Remove Anchor",	//MISSING
+AnchorDelete		: "Rimuovi Ancora",
 InsertImageLbl		: "Immagine",
 InsertImage			: "Inserisci/Modifica immagine",
 InsertFlashLbl		: "Oggetto Flash",
@@ -72,6 +73,9 @@
 DecreaseIndent		: "Riduci rientro",
 IncreaseIndent		: "Aumenta rientro",
 Blockquote			: "Blockquote",	//MISSING
+CreateDiv			: "Create Div Container",	//MISSING
+EditDiv				: "Edit Div Container",	//MISSING
+DeleteDiv			: "Remove Div Container",	//MISSING
 Undo				: "Annulla",
 Redo				: "Ripristina",
 NumberedListLbl		: "Elenco numerato",
@@ -105,27 +109,27 @@
 ImageButton		: "Bottone immagine",
 
 FitWindow		: "Massimizza l'area dell'editor",
-ShowBlocks		: "Show Blocks",	//MISSING
+ShowBlocks		: "Visualizza Blocchi",
 
 // Context Menu
 EditLink			: "Modifica collegamento",
 CellCM				: "Cella",
 RowCM				: "Riga",
 ColumnCM			: "Colonna",
-InsertRowAfter		: "Insert Row After",	//MISSING
-InsertRowBefore		: "Insert Row Before",	//MISSING
+InsertRowAfter		: "Inserisci Riga Dopo",
+InsertRowBefore		: "Inserisci Riga Prima",
 DeleteRows			: "Elimina righe",
-InsertColumnAfter	: "Insert Column After",	//MISSING
-InsertColumnBefore	: "Insert Column Before",	//MISSING
+InsertColumnAfter	: "Inserisci Colonna Dopo",
+InsertColumnBefore	: "Inserisci Colonna Prima",
 DeleteColumns		: "Elimina colonne",
-InsertCellAfter		: "Insert Cell After",	//MISSING
-InsertCellBefore	: "Insert Cell Before",	//MISSING
+InsertCellAfter		: "Inserisci Cella Dopo",
+InsertCellBefore	: "Inserisci Cella Prima",
 DeleteCells			: "Elimina celle",
 MergeCells			: "Unisce celle",
-MergeRight			: "Merge Right",	//MISSING
-MergeDown			: "Merge Down",	//MISSING
-HorizontalSplitCell	: "Split Cell Horizontally",	//MISSING
-VerticalSplitCell	: "Split Cell Vertically",	//MISSING
+MergeRight			: "Unisci a Destra",
+MergeDown			: "Unisci in Basso",
+HorizontalSplitCell	: "Dividi Cella Orizzontalmente",
+VerticalSplitCell	: "Dividi Cella Verticalmente",
 TableDelete			: "Cancella Tabella",
 CellProperties		: "Proprietà cella",
 TableProperties		: "Proprietà tabella",
@@ -157,6 +161,7 @@
 NoActiveX			: "Le impostazioni di sicurezza del tuo browser potrebbero limitare alcune funzionalità dell'editor. Devi abilitare l'opzione \"Esegui controlli e plug-in ActiveX\". Potresti avere errori e notare funzionalità mancanti.",
 BrowseServerBlocked : "Non è possibile aprire la finestra di espolorazione risorse. Verifica che tutti i blocca popup siano bloccati.",
 DialogBlocked		: "Non è possibile aprire la finestra di dialogo. Verifica che tutti i blocca popup siano bloccati.",
+VisitLinkBlocked	: "It was not possible to open a new window. Make sure all popup blockers are disabled.",	//MISSING
 
 // Dialogs
 DlgBtnOK			: "OK",
@@ -332,7 +337,7 @@
 DlgCellBtnSelect	: "Scegli...",
 
 // Find and Replace Dialog
-DlgFindAndReplaceTitle	: "Find and Replace",	//MISSING
+DlgFindAndReplaceTitle	: "Cerca e Sostituisci",
 
 // Find Dialog
 DlgFindTitle		: "Trova",
@@ -356,7 +361,7 @@
 PasteFromWord	: "Incolla da Word",
 
 DlgPasteMsg2	: "Incolla il testo all'interno dell'area sottostante usando la scorciatoia di tastiere (<STRONG>Ctrl+V</STRONG>) e premi <STRONG>OK</STRONG>.",
-DlgPasteSec		: "Because of your browser security settings, the editor is not able to access your clipboard data directly. You are required to paste it again in this window.",	//MISSING
+DlgPasteSec		: "A causa delle impostazioni di sicurezza del browser,l'editor non è in grado di accedere direttamente agli appunti. E' pertanto necessario incollarli di nuovo in questa finestra.",
 DlgPasteIgnoreFont		: "Ignora le definizioni di Font",
 DlgPasteRemoveStyles	: "Rimuovi le definizioni di Stile",
 
@@ -511,5 +516,11 @@
 DlgAboutBrowserInfoTab	: "Informazioni Browser",
 DlgAboutLicenseTab	: "Licenza",
 DlgAboutVersion		: "versione",
-DlgAboutInfo		: "Per maggiori informazioni visitare"
+DlgAboutInfo		: "Per maggiori informazioni visitare",
+
+// Div Dialog
+DlgDivGeneralTab	: "General",	//MISSING
+DlgDivAdvancedTab	: "Advanced",	//MISSING
+DlgDivStyle		: "Style",	//MISSING
+DlgDivInlineStyle	: "Inline Style"	//MISSING
 };

Modified: pal-wcm/trunk/src/main/webapp/fckeditor/editor/lang/ja.js
===================================================================
--- pal-wcm/trunk/src/main/webapp/fckeditor/editor/lang/ja.js	2008-09-03 08:05:44 UTC (rev 1112)
+++ pal-wcm/trunk/src/main/webapp/fckeditor/editor/lang/ja.js	2008-09-04 02:44:24 UTC (rev 1113)
@@ -44,6 +44,7 @@
 InsertLinkLbl		: "リンク",
 InsertLink			: "リンク挿入/編集",
 RemoveLink			: "リンク削除",
+VisitLink			: "リンクを開く",
 Anchor				: "アンカー挿入/編集",
 AnchorDelete		: "アンカー削除",
 InsertImageLbl		: "イメージ",
@@ -72,6 +73,9 @@
 DecreaseIndent		: "インデント解除",
 IncreaseIndent		: "インデント",
 Blockquote			: "ブロック引用",
+CreateDiv			: "Div 作成",
+EditDiv				: "Div 編集",
+DeleteDiv			: "Div 削除",
 Undo				: "元に戻す",
 Redo				: "やり直し",
 NumberedListLbl		: "段落番号",
@@ -157,6 +161,7 @@
 NoActiveX			: "エラー、警告メッセージなどが発生した場合、ブラウザーのセキュリティ設定によりエディタのいくつかの機能が制限されている可能性があります。セキュリティ設定のオプションで\"ActiveXコントロールとプラグインの実行\"を有効にするにしてください。",
 BrowseServerBlocked : "サーバーブラウザーを開くことができませんでした。ポップアップ・ブロック機能が無効になっているか確認してください。",
 DialogBlocked		: "ダイアログウィンドウを開くことができませんでした。ポップアップ・ブロック機能が無効になっているか確認してください。",
+VisitLinkBlocked	: "新しいウィンドウを開くことができませんでした。ポップアップ・ブロック機能が無効になっているか確認してください。",
 
 // Dialogs
 DlgBtnOK			: "OK",
@@ -511,5 +516,11 @@
 DlgAboutBrowserInfoTab	: "ブラウザ情報",
 DlgAboutLicenseTab	: "ライセンス",
 DlgAboutVersion		: "バージョン",
-DlgAboutInfo		: "より詳しい情報はこちらで"
+DlgAboutInfo		: "より詳しい情報はこちらで",
+
+// Div Dialog
+DlgDivGeneralTab	: "全般",
+DlgDivAdvancedTab	: "高度な設定",
+DlgDivStyle		: "スタイル",
+DlgDivInlineStyle	: "インラインスタイル"
 };

Modified: pal-wcm/trunk/src/main/webapp/fckeditor/editor/lang/km.js
===================================================================
--- pal-wcm/trunk/src/main/webapp/fckeditor/editor/lang/km.js	2008-09-03 08:05:44 UTC (rev 1112)
+++ pal-wcm/trunk/src/main/webapp/fckeditor/editor/lang/km.js	2008-09-04 02:44:24 UTC (rev 1113)
@@ -44,6 +44,7 @@
 InsertLinkLbl		: "ឈ្នាប់",
 InsertLink			: "បន្ថែម/កែប្រែ ឈ្នាប់",
 RemoveLink			: "លប់ឈ្នាប់",
+VisitLink			: "Open Link",	//MISSING
 Anchor				: "បន្ថែម/កែប្រែ យុថ្កា",
 AnchorDelete		: "Remove Anchor",	//MISSING
 InsertImageLbl		: "រូបភាព",
@@ -72,6 +73,9 @@
 DecreaseIndent		: "បន្ថយការចូលបន្ទាត់",
 IncreaseIndent		: "បន្ថែមការចូលបន្ទាត់",
 Blockquote			: "Blockquote",	//MISSING
+CreateDiv			: "Create Div Container",	//MISSING
+EditDiv				: "Edit Div Container",	//MISSING
+DeleteDiv			: "Remove Div Container",	//MISSING
 Undo				: "សារឡើងវិញ",
 Redo				: "ធ្វើឡើងវិញ",
 NumberedListLbl		: "បញ្ជីជាអក្សរ",
@@ -157,6 +161,7 @@
 NoActiveX			: "ការកំណត់សុវត្ថភាពរបស់កម្មវិធីរុករករបស់លោកអ្នក នេះ​អាចធ្វើអោយលោកអ្នកមិនអាចប្រើមុខងារខ្លះរបស់កម្មវិធីតាក់តែងអត្ថបទនេះ ។ លោកអ្នកត្រូវកំណត់អោយ \"ActiveX និង​កម្មវិធីជំនួយក្នុង (plug-ins)\" អោយដំណើរការ ។ លោកអ្នកអាចជួបប្រទះនឹង បញ្ហា ព្រមជាមួយនឹងការបាត់បង់មុខងារណាមួយរបស់កម្មវិធីតាក់តែងអត្ថបទនេះ ។",
 BrowseServerBlocked : "The resources browser could not be opened. Make sure that all popup blockers are disabled.",	//MISSING
 DialogBlocked		: "វីនដូវមិនអាចបើកបានទេ ។ សូមពិនិត្យចំពោះកម្មវិធីបិទ វីនដូវលោត (popup) ថាតើវាដំណើរការរឺទេ ។",
+VisitLinkBlocked	: "It was not possible to open a new window. Make sure all popup blockers are disabled.",	//MISSING
 
 // Dialogs
 DlgBtnOK			: "យល់ព្រម",
@@ -511,5 +516,11 @@
 DlgAboutBrowserInfoTab	: "ព៌តមានកម្មវិធីរុករក",
 DlgAboutLicenseTab	: "License",	//MISSING
 DlgAboutVersion		: "ជំនាន់",
-DlgAboutInfo		: "សំរាប់ព៌តមានផ្សេងទៀត សូមទាក់ទង"
+DlgAboutInfo		: "សំរាប់ព៌តមានផ្សេងទៀត សូមទាក់ទង",
+
+// Div Dialog
+DlgDivGeneralTab	: "General",	//MISSING
+DlgDivAdvancedTab	: "Advanced",	//MISSING
+DlgDivStyle		: "Style",	//MISSING
+DlgDivInlineStyle	: "Inline Style"	//MISSING
 };

Modified: pal-wcm/trunk/src/main/webapp/fckeditor/editor/lang/ko.js
===================================================================
--- pal-wcm/trunk/src/main/webapp/fckeditor/editor/lang/ko.js	2008-09-03 08:05:44 UTC (rev 1112)
+++ pal-wcm/trunk/src/main/webapp/fckeditor/editor/lang/ko.js	2008-09-04 02:44:24 UTC (rev 1113)
@@ -44,6 +44,7 @@
 InsertLinkLbl		: "링크",
 InsertLink			: "링크 삽입/변경",
 RemoveLink			: "링크 삭제",
+VisitLink			: "Open Link",	//MISSING
 Anchor				: "책갈피 삽입/변경",
 AnchorDelete		: "Remove Anchor",	//MISSING
 InsertImageLbl		: "이미지",
@@ -72,6 +73,9 @@
 DecreaseIndent		: "내어쓰기",
 IncreaseIndent		: "들여쓰기",
 Blockquote			: "Blockquote",	//MISSING
+CreateDiv			: "Create Div Container",	//MISSING
+EditDiv				: "Edit Div Container",	//MISSING
+DeleteDiv			: "Remove Div Container",	//MISSING
 Undo				: "취소",
 Redo				: "재실행",
 NumberedListLbl		: "순서있는 목록",
@@ -157,6 +161,7 @@
 NoActiveX			: "브러우저의 보안 설정으로 인해 몇몇 기능의 작동에 장애가 있을 수 있습니다. \"액티브-액스 기능과 플러그 인\" 옵션을 허용하여 주시지 않으면 오류가 발생할 수 있습니다.",
 BrowseServerBlocked : "브러우저 요소가 열리지 않습니다. 팝업차단 설정이 꺼져있는지 확인하여 주십시오.",
 DialogBlocked		: "윈도우 대화창을 열 수 없습니다. 팝업차단 설정이 꺼져있는지 확인하여 주십시오.",
+VisitLinkBlocked	: "It was not possible to open a new window. Make sure all popup blockers are disabled.",	//MISSING
 
 // Dialogs
 DlgBtnOK			: "예",
@@ -511,5 +516,11 @@
 DlgAboutBrowserInfoTab	: "브라우저 정보",
 DlgAboutLicenseTab	: "License",	//MISSING
 DlgAboutVersion		: "버전",
-DlgAboutInfo		: "더 많은 정보를 보시려면 다음 사이트로 가십시오."
+DlgAboutInfo		: "더 많은 정보를 보시려면 다음 사이트로 가십시오.",
+
+// Div Dialog
+DlgDivGeneralTab	: "General",	//MISSING
+DlgDivAdvancedTab	: "Advanced",	//MISSING
+DlgDivStyle		: "Style",	//MISSING
+DlgDivInlineStyle	: "Inline Style"	//MISSING
 };

Modified: pal-wcm/trunk/src/main/webapp/fckeditor/editor/lang/lt.js
===================================================================
--- pal-wcm/trunk/src/main/webapp/fckeditor/editor/lang/lt.js	2008-09-03 08:05:44 UTC (rev 1112)
+++ pal-wcm/trunk/src/main/webapp/fckeditor/editor/lang/lt.js	2008-09-04 02:44:24 UTC (rev 1113)
@@ -44,6 +44,7 @@
 InsertLinkLbl		: "Nuoroda",
 InsertLink			: "Įterpti/taisyti nuorodą",
 RemoveLink			: "Panaikinti nuorodą",
+VisitLink			: "Open Link",	//MISSING
 Anchor				: "Įterpti/modifikuoti žymę",
 AnchorDelete		: "Remove Anchor",	//MISSING
 InsertImageLbl		: "Vaizdas",
@@ -72,6 +73,9 @@
 DecreaseIndent		: "Sumažinti įtrauką",
 IncreaseIndent		: "Padidinti įtrauką",
 Blockquote			: "Blockquote",	//MISSING
+CreateDiv			: "Create Div Container",	//MISSING
+EditDiv				: "Edit Div Container",	//MISSING
+DeleteDiv			: "Remove Div Container",	//MISSING
 Undo				: "Atšaukti",
 Redo				: "Atstatyti",
 NumberedListLbl		: "Numeruotas sąrašas",
@@ -157,6 +161,7 @@
 NoActiveX			: "Jūsų naršyklės saugumo nuostatos gali riboti kai kurias redaktoriaus savybes. Jūs turite aktyvuoti opciją \"Run ActiveX controls and plug-ins\". Kitu atveju Jums bus pranešama apie klaidas ir trūkstamas savybes.",
 BrowseServerBlocked : "Neįmanoma atidaryti naujo naršyklės lango. Įsitikinkite, kad iškylančių langų blokavimo programos neveiksnios.",
 DialogBlocked		: "Neįmanoma atidaryti dialogo lango. Įsitikinkite, kad iškylančių langų blokavimo programos neveiksnios.",
+VisitLinkBlocked	: "It was not possible to open a new window. Make sure all popup blockers are disabled.",	//MISSING
 
 // Dialogs
 DlgBtnOK			: "OK",
@@ -511,5 +516,11 @@
 DlgAboutBrowserInfoTab	: "Naršyklės informacija",
 DlgAboutLicenseTab	: "License",	//MISSING
 DlgAboutVersion		: "versija",
-DlgAboutInfo		: "Papildomą informaciją galima gauti"
+DlgAboutInfo		: "Papildomą informaciją galima gauti",
+
+// Div Dialog
+DlgDivGeneralTab	: "General",	//MISSING
+DlgDivAdvancedTab	: "Advanced",	//MISSING
+DlgDivStyle		: "Style",	//MISSING
+DlgDivInlineStyle	: "Inline Style"	//MISSING
 };

Modified: pal-wcm/trunk/src/main/webapp/fckeditor/editor/lang/lv.js
===================================================================
--- pal-wcm/trunk/src/main/webapp/fckeditor/editor/lang/lv.js	2008-09-03 08:05:44 UTC (rev 1112)
+++ pal-wcm/trunk/src/main/webapp/fckeditor/editor/lang/lv.js	2008-09-04 02:44:24 UTC (rev 1113)
@@ -44,6 +44,7 @@
 InsertLinkLbl		: "Hipersaite",
 InsertLink			: "Ievietot/Labot hipersaiti",
 RemoveLink			: "Noņemt hipersaiti",
+VisitLink			: "Open Link",	//MISSING
 Anchor				: "Ievietot/Labot iezīmi",
 AnchorDelete		: "Remove Anchor",	//MISSING
 InsertImageLbl		: "Attēls",
@@ -72,6 +73,9 @@
 DecreaseIndent		: "Samazināt atkāpi",
 IncreaseIndent		: "Palielināt atkāpi",
 Blockquote			: "Blockquote",	//MISSING
+CreateDiv			: "Create Div Container",	//MISSING
+EditDiv				: "Edit Div Container",	//MISSING
+DeleteDiv			: "Remove Div Container",	//MISSING
 Undo				: "Atcelt",
 Redo				: "Atkārtot",
 NumberedListLbl		: "Numurēts saraksts",
@@ -157,6 +161,7 @@
 NoActiveX			: "Interneta pārlūkprogrammas drošības uzstādījumi varētu ietekmēt dažas no redaktora īpašībām. Jābūt aktivizētai sadaļai \"Run ActiveX controls and plug-ins\". Savādāk ir iespējamas kļūdas darbībā un kļūdu paziņojumu parādīšanās.",
 BrowseServerBlocked : "Resursu pārlūks nevar tikt atvērts. Pārliecinieties, ka uznirstošo logu bloķētāji ir atslēgti.",
 DialogBlocked		: "Nav iespējams atvērt dialoglogu. Pārliecinieties, ka uznirstošo logu bloķētāji ir atslēgti.",
+VisitLinkBlocked	: "It was not possible to open a new window. Make sure all popup blockers are disabled.",	//MISSING
 
 // Dialogs
 DlgBtnOK			: "Darīts!",
@@ -511,5 +516,11 @@
 DlgAboutBrowserInfoTab	: "Informācija par pārlūkprogrammu",
 DlgAboutLicenseTab	: "Licence",
 DlgAboutVersion		: "versija",
-DlgAboutInfo		: "Papildus informācija ir pieejama"
+DlgAboutInfo		: "Papildus informācija ir pieejama",
+
+// Div Dialog
+DlgDivGeneralTab	: "General",	//MISSING
+DlgDivAdvancedTab	: "Advanced",	//MISSING
+DlgDivStyle		: "Style",	//MISSING
+DlgDivInlineStyle	: "Inline Style"	//MISSING
 };

Modified: pal-wcm/trunk/src/main/webapp/fckeditor/editor/lang/mn.js
===================================================================
--- pal-wcm/trunk/src/main/webapp/fckeditor/editor/lang/mn.js	2008-09-03 08:05:44 UTC (rev 1112)
+++ pal-wcm/trunk/src/main/webapp/fckeditor/editor/lang/mn.js	2008-09-04 02:44:24 UTC (rev 1113)
@@ -44,6 +44,7 @@
 InsertLinkLbl		: "Линк",
 InsertLink			: "Линк Оруулах/Засварлах",
 RemoveLink			: "Линк авч хаях",
+VisitLink			: "Open Link",	//MISSING
 Anchor				: "Холбоос Оруулах/Засварлах",
 AnchorDelete		: "Холбоос Авах",
 InsertImageLbl		: "Зураг",
@@ -72,6 +73,9 @@
 DecreaseIndent		: "Догол мөр нэмэх",
 IncreaseIndent		: "Догол мөр хасах",
 Blockquote			: "Хайрцаглах",
+CreateDiv			: "Create Div Container",	//MISSING
+EditDiv				: "Edit Div Container",	//MISSING
+DeleteDiv			: "Remove Div Container",	//MISSING
 Undo				: "Хүчингүй болгох",
 Redo				: "Өмнөх үйлдлээ сэргээх",
 NumberedListLbl		: "Дугаарлагдсан жагсаалт",
@@ -157,6 +161,7 @@
 NoActiveX			: "Таны үзүүлэгч/browser-н хамгаалалтын тохиргоо editor-н зарим боломжийг хязгаарлаж байна. Та \"Run ActiveX controls ба plug-ins\" сонголыг идвэхитэй болго.",
 BrowseServerBlocked : "Нөөц үзүүгч нээж чадсангүй. Бүх popup blocker-г disabled болгоно уу.",
 DialogBlocked		: "Харилцах цонхонд энийг нээхэд боломжгүй ээ. Бүх popup blocker-г disabled болгоно уу.",
+VisitLinkBlocked	: "It was not possible to open a new window. Make sure all popup blockers are disabled.",	//MISSING
 
 // Dialogs
 DlgBtnOK			: "OK",
@@ -511,5 +516,11 @@
 DlgAboutBrowserInfoTab	: "Мэдээлэл үзүүлэгч",
 DlgAboutLicenseTab	: "Лиценз",
 DlgAboutVersion		: "Хувилбар",
-DlgAboutInfo		: "Мэдээллээр туслах"
+DlgAboutInfo		: "Мэдээллээр туслах",
+
+// Div Dialog
+DlgDivGeneralTab	: "General",	//MISSING
+DlgDivAdvancedTab	: "Advanced",	//MISSING
+DlgDivStyle		: "Style",	//MISSING
+DlgDivInlineStyle	: "Inline Style"	//MISSING
 };

Modified: pal-wcm/trunk/src/main/webapp/fckeditor/editor/lang/ms.js
===================================================================
--- pal-wcm/trunk/src/main/webapp/fckeditor/editor/lang/ms.js	2008-09-03 08:05:44 UTC (rev 1112)
+++ pal-wcm/trunk/src/main/webapp/fckeditor/editor/lang/ms.js	2008-09-04 02:44:24 UTC (rev 1113)
@@ -44,6 +44,7 @@
 InsertLinkLbl		: "Sambungan",
 InsertLink			: "Masukkan/Sunting Sambungan",
 RemoveLink			: "Buang Sambungan",
+VisitLink			: "Open Link",	//MISSING
 Anchor				: "Masukkan/Sunting Pautan",
 AnchorDelete		: "Remove Anchor",	//MISSING
 InsertImageLbl		: "Gambar",
@@ -72,6 +73,9 @@
 DecreaseIndent		: "Kurangkan Inden",
 IncreaseIndent		: "Tambahkan Inden",
 Blockquote			: "Blockquote",	//MISSING
+CreateDiv			: "Create Div Container",	//MISSING
+EditDiv				: "Edit Div Container",	//MISSING
+DeleteDiv			: "Remove Div Container",	//MISSING
 Undo				: "Batalkan",
 Redo				: "Ulangkan",
 NumberedListLbl		: "Senarai bernombor",
@@ -157,6 +161,7 @@
 NoActiveX			: "Your browser's security settings could limit some features of the editor. You must enable the option \"Run ActiveX controls and plug-ins\". You may experience errors and notice missing features.",	//MISSING
 BrowseServerBlocked : "The resources browser could not be opened. Make sure that all popup blockers are disabled.",	//MISSING
 DialogBlocked		: "It was not possible to open the dialog window. Make sure all popup blockers are disabled.",	//MISSING
+VisitLinkBlocked	: "It was not possible to open a new window. Make sure all popup blockers are disabled.",	//MISSING
 
 // Dialogs
 DlgBtnOK			: "OK",
@@ -511,5 +516,11 @@
 DlgAboutBrowserInfoTab	: "Maklumat Perisian Browser",
 DlgAboutLicenseTab	: "License",	//MISSING
 DlgAboutVersion		: "versi",
-DlgAboutInfo		: "Untuk maklumat lanjut sila pergi ke"
+DlgAboutInfo		: "Untuk maklumat lanjut sila pergi ke",
+
+// Div Dialog
+DlgDivGeneralTab	: "General",	//MISSING
+DlgDivAdvancedTab	: "Advanced",	//MISSING
+DlgDivStyle		: "Style",	//MISSING
+DlgDivInlineStyle	: "Inline Style"	//MISSING
 };

Modified: pal-wcm/trunk/src/main/webapp/fckeditor/editor/lang/nb.js
===================================================================
--- pal-wcm/trunk/src/main/webapp/fckeditor/editor/lang/nb.js	2008-09-03 08:05:44 UTC (rev 1112)
+++ pal-wcm/trunk/src/main/webapp/fckeditor/editor/lang/nb.js	2008-09-04 02:44:24 UTC (rev 1113)
@@ -44,8 +44,9 @@
 InsertLinkLbl		: "Lenke",
 InsertLink			: "Sett inn/Rediger lenke",
 RemoveLink			: "Fjern lenke",
+VisitLink			: "Åpne lenke",
 Anchor				: "Sett inn/Rediger anker",
-AnchorDelete		: "Remove Anchor",	//MISSING
+AnchorDelete		: "Fjern anker",
 InsertImageLbl		: "Bilde",
 InsertImage			: "Sett inn/Rediger bilde",
 InsertFlashLbl		: "Flash",
@@ -72,10 +73,13 @@
 DecreaseIndent		: "Senk nivå",
 IncreaseIndent		: "Øk nivå",
 Blockquote			: "Blockquote",	//MISSING
+CreateDiv			: "Create Div Container",	//MISSING
+EditDiv				: "Edit Div Container",	//MISSING
+DeleteDiv			: "Remove Div Container",	//MISSING
 Undo				: "Angre",
 Redo				: "Gjør om",
-NumberedListLbl		: "Numrert liste",
-NumberedList		: "Sett inn/Fjern numrert liste",
+NumberedListLbl		: "Nummerert liste",
+NumberedList		: "Sett inn/Fjern nummerert liste",
 BulletedListLbl		: "Uordnet liste",
 BulletedList		: "Sett inn/Fjern uordnet liste",
 ShowTableBorders	: "Vis tabellrammer",
@@ -87,7 +91,7 @@
 TextColor			: "Tekstfarge",
 BGColor				: "Bakgrunnsfarge",
 Source				: "Kilde",
-Find				: "Finn",
+Find				: "Søk",
 Replace				: "Erstatt",
 SpellCheck			: "Stavekontroll",
 UniversalKeyboard	: "Universelt tastatur",
@@ -95,13 +99,13 @@
 PageBreak			: "Sett inn sideskift",
 
 Form			: "Skjema",
-Checkbox		: "Sjekkboks",
-RadioButton		: "Radioknapp",
-TextField		: "Tekstfelt",
+Checkbox		: "Avmerkingsboks",
+RadioButton		: "Alternativknapp",
+TextField		: "Tekstboks",
 Textarea		: "Tekstområde",
 HiddenField		: "Skjult felt",
 Button			: "Knapp",
-SelectionField	: "Dropdown meny",
+SelectionField	: "Rullegardinliste",
 ImageButton		: "Bildeknapp",
 
 FitWindow		: "Maksimer størrelsen på redigeringsverktøyet",
@@ -112,51 +116,52 @@
 CellCM				: "Celle",
 RowCM				: "Rader",
 ColumnCM			: "Kolonne",
-InsertRowAfter		: "Insert Row After",	//MISSING
-InsertRowBefore		: "Insert Row Before",	//MISSING
+InsertRowAfter		: "Sett inn rad etter",
+InsertRowBefore		: "Sett inn rad før",
 DeleteRows			: "Slett rader",
-InsertColumnAfter	: "Insert Column After",	//MISSING
-InsertColumnBefore	: "Insert Column Before",	//MISSING
+InsertColumnAfter	: "Sett inn kolonne etter",
+InsertColumnBefore	: "Sett inn kolonne før",
 DeleteColumns		: "Slett kolonner",
-InsertCellAfter		: "Insert Cell After",	//MISSING
-InsertCellBefore	: "Insert Cell Before",	//MISSING
+InsertCellAfter		: "Sett inn celle etter",
+InsertCellBefore	: "Sett inn celle før",
 DeleteCells			: "Slett celler",
 MergeCells			: "Slå sammen celler",
-MergeRight			: "Merge Right",	//MISSING
-MergeDown			: "Merge Down",	//MISSING
-HorizontalSplitCell	: "Split Cell Horizontally",	//MISSING
-VerticalSplitCell	: "Split Cell Vertically",	//MISSING
+MergeRight			: "Slå sammen høyre",
+MergeDown			: "Slå sammen ned",
+HorizontalSplitCell	: "Del celle horisontalt",
+VerticalSplitCell	: "Del celle vertikalt",
 TableDelete			: "Slett tabell",
-CellProperties		: "Celleegenskaper",
-TableProperties		: "Tabellegenskaper",
-ImageProperties		: "Bildeegenskaper",
-FlashProperties		: "Flash Egenskaper",
+CellProperties		: "Egenskaper for celle",
+TableProperties		: "Egenskaper for tabell",
+ImageProperties		: "Egenskaper for bilde",
+FlashProperties		: "Egenskaper for Flash-objekt",
 
-AnchorProp			: "Ankeregenskaper",
-ButtonProp			: "Knappegenskaper",
-CheckboxProp		: "Sjekkboksegenskaper",
-HiddenFieldProp		: "Skjult felt egenskaper",
-RadioButtonProp		: "Radioknappegenskaper",
-ImageButtonProp		: "Bildeknappegenskaper",
-TextFieldProp		: "Tekstfeltegenskaper",
-SelectionFieldProp	: "Dropdown menyegenskaper",
-TextareaProp		: "Tekstfeltegenskaper",
-FormProp			: "Skjemaegenskaper",
+AnchorProp			: "Egenskaper for anker",
+ButtonProp			: "Egenskaper for knapp",
+CheckboxProp		: "Egenskaper for avmerkingsboks",
+HiddenFieldProp		: "Egenskaper for skjult felt",
+RadioButtonProp		: "Egenskaper for alternativknapp",
+ImageButtonProp		: "Egenskaper for bildeknapp",
+TextFieldProp		: "Egenskaper for tekstfelt",
+SelectionFieldProp	: "Egenskaper for rullegardinliste",
+TextareaProp		: "Egenskaper for tekstområde",
+FormProp			: "Egenskaper for skjema",
 
 FontFormats			: "Normal;Formatert;Adresse;Tittel 1;Tittel 2;Tittel 3;Tittel 4;Tittel 5;Tittel 6;Normal (DIV)",
 
 // Alerts and Messages
 ProcessingXHTML		: "Lager XHTML. Vennligst vent...",
 Done				: "Ferdig",
-PasteWordConfirm	: "Teksten du prøver å lime inn ser ut som om den kommer fra word , du bør rense den før du limer inn , vil du gjøre dette?",
-NotCompatiblePaste	: "Denne kommandoen er tilgjenglig kun for Internet Explorer version 5.5 eller bedre. Vil du fortsette uten å rense?(Du kan lime inn som ren tekst)",
+PasteWordConfirm	: "Teksten du prøver å lime inn ser ut som om den kommer fra Word. Vil du rense den for unødvendig kode før du limer inn?",
+NotCompatiblePaste	: "Denne kommandoen er kun tilgjenglig for Internet Explorer versjon 5.5 eller bedre. Vil du fortsette uten å rense? (Du kan lime inn som ren tekst)",
 UnknownToolbarItem	: "Ukjent menyvalg \"%1\"",
 UnknownCommand		: "Ukjent kommando \"%1\"",
-NotImplemented		: "Kommando ikke ennå implimentert",
+NotImplemented		: "Kommando ikke implimentert",
 UnknownToolbarSet	: "Verktøylinjesett \"%1\" finnes ikke",
-NoActiveX			: "Din nettleser's sikkerhetsinstillinger kan begrense noen av funksjonene i redigeringsverktøyet. Du må aktivere \"Kjør ActiveXkontroller og plugins\". Du kan oppleve feil og advarsler om manglende funksjoner",
-BrowseServerBlocked : "Kunne ikke åpne dialogboksen for filarkiv. Pass på at du har slått av popupstoppere.",
-DialogBlocked		: "Kunne ikke åpne dialogboksen. Pass på at du har slått av popupstoppere.",
+NoActiveX			: "Din nettlesers sikkerhetsinstillinger kan begrense noen av funksjonene i redigeringsverktøyet. Du må aktivere \"Kjør ActiveX-kontroller og plugin-modeller\". Du kan oppleve feil og advarsler om manglende funksjoner",
+BrowseServerBlocked : "Kunne ikke åpne dialogboksen for filarkiv. Sjekk at popup-blokkering er deaktivert.",
+DialogBlocked		: "Kunne ikke åpne dialogboksen. Sjekk at popup-blokkering er deaktivert.",
+VisitLinkBlocked	: "Kunne ikke åpne et nytt vindu. Sjekk at popup-blokkering er deaktivert.",
 
 // Dialogs
 DlgBtnOK			: "OK",
@@ -166,7 +171,7 @@
 DlgAdvancedTag		: "Avansert",
 DlgOpOther			: "<Annet>",
 DlgInfoTab			: "Info",
-DlgAlertUrl			: "Vennligst skriv inn URL'en",
+DlgAlertUrl			: "Vennligst skriv inn URL-en",
 
 // General Dialogs Labels
 DlgGenNotSet		: "<ikke satt>",
@@ -174,7 +179,7 @@
 DlgGenLangDir		: "Språkretning",
 DlgGenLangDirLtr	: "Venstre til høyre (VTH)",
 DlgGenLangDirRtl	: "Høyre til venstre (HTV)",
-DlgGenLangCode		: "Språk kode",
+DlgGenLangCode		: "Språkkode",
 DlgGenAccessKey		: "Aksessknapp",
 DlgGenName			: "Navn",
 DlgGenTabIndex		: "Tab Indeks",
@@ -210,18 +215,18 @@
 DlgImgAlignTextTop	: "Tekst topp",
 DlgImgAlignTop		: "Topp",
 DlgImgPreview		: "Forhåndsvis",
-DlgImgAlertUrl		: "Vennligst skriv bildeurlen",
+DlgImgAlertUrl		: "Vennligst skriv bilde-urlen",
 DlgImgLinkTab		: "Lenke",
 
 // Flash Dialog
-DlgFlashTitle		: "Flash Egenskaper",
-DlgFlashChkPlay		: "Auto Spill",
+DlgFlashTitle		: "Flash-egenskaper",
+DlgFlashChkPlay		: "Autospill",
 DlgFlashChkLoop		: "Loop",
-DlgFlashChkMenu		: "Slå på Flash meny",
+DlgFlashChkMenu		: "Slå på Flash-meny",
 DlgFlashScale		: "Skaler",
 DlgFlashScaleAll	: "Vis alt",
 DlgFlashScaleNoBorder	: "Ingen ramme",
-DlgFlashScaleFit	: "Skaler til å passeExact Fit",
+DlgFlashScaleFit	: "Skaler til å passe",
 
 // Link Dialog
 DlgLnkWindowTitle	: "Lenke",
@@ -235,7 +240,7 @@
 DlgLnkProto			: "Protokoll",
 DlgLnkProtoOther	: "<annet>",
 DlgLnkURL			: "URL",
-DlgLnkAnchorSel		: "Velg ett anker",
+DlgLnkAnchorSel		: "Velg et anker",
 DlgLnkAnchorByName	: "Anker etter navn",
 DlgLnkAnchorById	: "Element etter ID",
 DlgLnkNoAnchors		: "(Ingen anker i dokumentet)",
@@ -249,12 +254,12 @@
 DlgLnkTargetFrame	: "<ramme>",
 DlgLnkTargetPopup	: "<popup vindu>",
 DlgLnkTargetBlank	: "Nytt vindu (_blank)",
-DlgLnkTargetParent	: "Foreldre vindu (_parent)",
+DlgLnkTargetParent	: "Foreldrevindu (_parent)",
 DlgLnkTargetSelf	: "Samme vindu (_self)",
 DlgLnkTargetTop		: "Hele vindu (_top)",
 DlgLnkTargetFrameName	: "Målramme",
-DlgLnkPopWinName	: "Popup vindus navn",
-DlgLnkPopWinFeat	: "Popup vindus egenskaper",
+DlgLnkPopWinName	: "Navn på popup-vindus",
+DlgLnkPopWinFeat	: "Egenskaper for popup-vindu",
 DlgLnkPopResize		: "Endre størrelse",
 DlgLnkPopLocation	: "Adresselinje",
 DlgLnkPopMenu		: "Menylinje",
@@ -266,18 +271,18 @@
 DlgLnkPopWidth		: "Bredde",
 DlgLnkPopHeight		: "Høyde",
 DlgLnkPopLeft		: "Venstre posisjon",
-DlgLnkPopTop		: "Topp posisjon",
+DlgLnkPopTop		: "Topp-posisjon",
 
 DlnLnkMsgNoUrl		: "Vennligst skriv inn lenkens url",
 DlnLnkMsgNoEMail	: "Vennligst skriv inn e-postadressen",
-DlnLnkMsgNoAnchor	: "Vennligst velg ett anker",
-DlnLnkMsgInvPopName	: "Popup vinduets navn må begynne med en bokstav, og kan ikke inneholde mellomrom",
+DlnLnkMsgNoAnchor	: "Vennligst velg et anker",
+DlnLnkMsgInvPopName	: "Popup-vinduets navn må begynne med en bokstav, og kan ikke inneholde mellomrom",
 
 // Color Dialog
 DlgColorTitle		: "Velg farge",
 DlgColorBtnClear	: "Tøm",
 DlgColorHighlight	: "Marker",
-DlgColorSelected	: "Velg",
+DlgColorSelected	: "Valgt",
 
 // Smiley Dialog
 DlgSmileyTitle		: "Sett inn smil",
@@ -286,7 +291,7 @@
 DlgSpecialCharTitle	: "Velg spesielt tegn",
 
 // Table Dialog
-DlgTableTitle		: "Tabellegenskaper",
+DlgTableTitle		: "Egenskaper for tabell",
 DlgTableRows		: "Rader",
 DlgTableColumns		: "Kolonner",
 DlgTableBorder		: "Rammestørrelse",
@@ -299,8 +304,8 @@
 DlgTableWidthPx		: "piksler",
 DlgTableWidthPc		: "prosent",
 DlgTableHeight		: "Høyde",
-DlgTableCellSpace	: "Celle marg",
-DlgTableCellPad		: "Celle polstring",
+DlgTableCellSpace	: "Cellemarg",
+DlgTableCellPad		: "Cellepolstring",
 DlgTableCaption		: "Tittel",
 DlgTableSummary		: "Sammendrag",
 
@@ -332,31 +337,31 @@
 DlgCellBtnSelect	: "Velg...",
 
 // Find and Replace Dialog
-DlgFindAndReplaceTitle	: "Find and Replace",	//MISSING
+DlgFindAndReplaceTitle	: "Søk og erstatt",
 
 // Find Dialog
-DlgFindTitle		: "Finn",
-DlgFindFindBtn		: "Finn",
-DlgFindNotFoundMsg	: "Den spesifiserte teksten ble ikke funnet.",
+DlgFindTitle		: "Søk",
+DlgFindFindBtn		: "Søk",
+DlgFindNotFoundMsg	: "Fant ikke søketeksten.",
 
 // Replace Dialog
 DlgReplaceTitle			: "Erstatt",
-DlgReplaceFindLbl		: "Finn hva:",
+DlgReplaceFindLbl		: "Søk etter:",
 DlgReplaceReplaceLbl	: "Erstatt med:",
-DlgReplaceCaseChk		: "Riktig case",
+DlgReplaceCaseChk		: "Skill mellom store og små bokstaver",
 DlgReplaceReplaceBtn	: "Erstatt",
 DlgReplaceReplAllBtn	: "Erstatt alle",
-DlgReplaceWordChk		: "Finn hele ordet",
+DlgReplaceWordChk		: "Bare hele ord",
 
 // Paste Operations / Dialog
-PasteErrorCut	: "Din nettlesers sikkerhetsinstillinger tillater ikke automatisk klipping av tekst. Vennligst brukt snareveien (Ctrl+X).",
-PasteErrorCopy	: "Din nettlesers sikkerhetsinstillinger tillater ikke automatisk kopiering av tekst. Vennligst brukt snareveien (Ctrl+C).",
+PasteErrorCut	: "Din nettlesers sikkerhetsinstillinger tillater ikke automatisk klipping av tekst. Vennligst bruk snareveien (Ctrl+X).",
+PasteErrorCopy	: "Din nettlesers sikkerhetsinstillinger tillater ikke automatisk kopiering av tekst. Vennligst bruk snareveien (Ctrl+C).",
 
 PasteAsText		: "Lim inn som ren tekst",
-PasteFromWord	: "Lim inn fra word",
+PasteFromWord	: "Lim inn fra Word",
 
 DlgPasteMsg2	: "Vennligst lim inn i den følgende boksen med tastaturet (<STRONG>Ctrl+V</STRONG>) og trykk <STRONG>OK</STRONG>.",
-DlgPasteSec		: "Because of your browser security settings, the editor is not able to access your clipboard data directly. You are required to paste it again in this window.",	//MISSING
+DlgPasteSec		: "Din nettlesers sikkerhetsinstillinger gir ikke redigeringsverktøyet direkte tilgang til utklippstavlen. Du må lime det igjen i dette vinduet.",
 DlgPasteIgnoreFont		: "Fjern skrifttyper",
 DlgPasteRemoveStyles	: "Fjern stildefinisjoner",
 
@@ -380,17 +385,17 @@
 DlgSpellBtnReplace		: "Erstatt",
 DlgSpellBtnReplaceAll	: "Erstatt alle",
 DlgSpellBtnUndo			: "Angre",
-DlgSpellNoSuggestions	: "- ingen forslag -",
+DlgSpellNoSuggestions	: "- Ingen forslag -",
 DlgSpellProgress		: "Stavekontroll pågår...",
 DlgSpellNoMispell		: "Stavekontroll fullført: ingen feilstavinger funnet",
 DlgSpellNoChanges		: "Stavekontroll fullført: ingen ord endret",
 DlgSpellOneChange		: "Stavekontroll fullført: Ett ord endret",
 DlgSpellManyChanges		: "Stavekontroll fullført: %1 ord endret",
 
-IeSpellDownload			: "Stavekontroll ikke installert, vil du laste den ned nå?",
+IeSpellDownload			: "Stavekontroll er ikke installert. Vil du laste den ned nå?",
 
 // Button Dialog
-DlgButtonText		: "Tekst",
+DlgButtonText		: "Tekst (verdi)",
 DlgButtonType		: "Type",
 DlgButtonTypeBtn	: "Knapp",
 DlgButtonTypeSbm	: "Send",
@@ -429,7 +434,7 @@
 
 // Text Field Dialog
 DlgTextName			: "Navn",
-DlgTextValue		: "verdi",
+DlgTextValue		: "Verdi",
 DlgTextCharWidth	: "Tegnbredde",
 DlgTextMaxChars		: "Maks antall tegn",
 DlgTextType			: "Type",
@@ -441,24 +446,24 @@
 DlgHiddenValue	: "Verdi",
 
 // Bulleted List Dialog
-BulletedListProp	: "Uordnet listeegenskaper",
-NumberedListProp	: "Ordnet listeegenskaper",
+BulletedListProp	: "Egenskaper for uordnet liste",
+NumberedListProp	: "Egenskaper for ordnet liste",
 DlgLstStart			: "Start",
 DlgLstType			: "Type",
 DlgLstTypeCircle	: "Sirkel",
 DlgLstTypeDisc		: "Hel sirkel",
 DlgLstTypeSquare	: "Firkant",
-DlgLstTypeNumbers	: "Numre(1, 2, 3)",
+DlgLstTypeNumbers	: "Numre (1, 2, 3)",
 DlgLstTypeLCase		: "Små bokstaver (a, b, c)",
-DlgLstTypeUCase		: "Store bokstaver(A, B, C)",
-DlgLstTypeSRoman	: "Små romerske tall(i, ii, iii)",
-DlgLstTypeLRoman	: "Store romerske tall(I, II, III)",
+DlgLstTypeUCase		: "Store bokstaver (A, B, C)",
+DlgLstTypeSRoman	: "Små romerske tall (i, ii, iii)",
+DlgLstTypeLRoman	: "Store romerske tall (I, II, III)",
 
 // Document Properties Dialog
-DlgDocGeneralTab	: "Generalt",
+DlgDocGeneralTab	: "Generelt",
 DlgDocBackTab		: "Bakgrunn",
 DlgDocColorsTab		: "Farger og marginer",
-DlgDocMetaTab		: "Meta Data",
+DlgDocMetaTab		: "Meta-data",
 
 DlgDocPageTitle		: "Sidetittel",
 DlgDocLangDir		: "Språkretning",
@@ -473,16 +478,16 @@
 DlgDocCharSetJP		: "Japansk",
 DlgDocCharSetKR		: "Koreansk",
 DlgDocCharSetTR		: "Tyrkisk",
-DlgDocCharSetUN		: "Unikode (UTF-8)",
+DlgDocCharSetUN		: "Unicode (UTF-8)",
 DlgDocCharSetWE		: "Vesteuropeisk",
 DlgDocCharSetOther	: "Annet tegnsett",
 
 DlgDocDocType		: "Dokumenttype header",
 DlgDocDocTypeOther	: "Annet dokumenttype header",
-DlgDocIncXHTML		: "Inkulder XHTML deklarasjon",
+DlgDocIncXHTML		: "Inkluder XHTML-deklarasjon",
 DlgDocBgColor		: "Bakgrunnsfarge",
-DlgDocBgImage		: "Bakgrunnsbilde url",
-DlgDocBgNoScroll	: "Ikke scroll bakgrunnsbilde",
+DlgDocBgImage		: "URL for bakgrunnsbilde",
+DlgDocBgNoScroll	: "Lås bakgrunnsbilde",
 DlgDocCText			: "Tekst",
 DlgDocCLink			: "Link",
 DlgDocCVisited		: "Besøkt lenke",
@@ -511,5 +516,11 @@
 DlgAboutBrowserInfoTab	: "Nettleserinfo",
 DlgAboutLicenseTab	: "Lisens",
 DlgAboutVersion		: "versjon",
-DlgAboutInfo		: "For further information go to"	//MISSING
+DlgAboutInfo		: "For mer informasjon, se",
+
+// Div Dialog
+DlgDivGeneralTab	: "Generelt",
+DlgDivAdvancedTab	: "Avansert",
+DlgDivStyle		: "Stil",
+DlgDivInlineStyle	: "Inline Style"	//MISSING
 };

Modified: pal-wcm/trunk/src/main/webapp/fckeditor/editor/lang/nl.js
===================================================================
--- pal-wcm/trunk/src/main/webapp/fckeditor/editor/lang/nl.js	2008-09-03 08:05:44 UTC (rev 1112)
+++ pal-wcm/trunk/src/main/webapp/fckeditor/editor/lang/nl.js	2008-09-04 02:44:24 UTC (rev 1113)
@@ -44,6 +44,7 @@
 InsertLinkLbl		: "Link",
 InsertLink			: "Link invoegen/wijzigen",
 RemoveLink			: "Link verwijderen",
+VisitLink			: "Link volgen",
 Anchor				: "Interne link",
 AnchorDelete		: "Anker verwijderen",
 InsertImageLbl		: "Afbeelding",
@@ -72,6 +73,9 @@
 DecreaseIndent		: "Inspringen verkleinen",
 IncreaseIndent		: "Inspringen vergroten",
 Blockquote			: "Citaatblok",
+CreateDiv			: "DIV aanmaken",
+EditDiv				: "DIV wijzigen",
+DeleteDiv			: "DIV verwijderen",
 Undo				: "Ongedaan maken",
 Redo				: "Opnieuw uitvoeren",
 NumberedListLbl		: "Genummerde lijst",
@@ -157,6 +161,7 @@
 NoActiveX			: "De beveilingsinstellingen van je browser zouden sommige functies van de editor kunnen beperken. De optie \"Activeer ActiveX-elementen en plug-ins\" dient ingeschakeld te worden. Het kan zijn dat er nu functies ontbreken of niet werken.",
 BrowseServerBlocked : "De bestandsbrowser kon niet geopend worden. Zorg ervoor dat pop-up-blokkeerders uit staan.",
 DialogBlocked		: "Kan het dialoogvenster niet weergeven. Zorg ervoor dat pop-up-blokkeerders uit staan.",
+VisitLinkBlocked	: "Het was niet mogelijk een nieuw venster te openen. Controleer of er geen pop-up-blocker aktief is.",
 
 // Dialogs
 DlgBtnOK			: "OK",
@@ -511,5 +516,11 @@
 DlgAboutBrowserInfoTab	: "Browserinformatie",
 DlgAboutLicenseTab	: "Licentie",
 DlgAboutVersion		: "Versie",
-DlgAboutInfo		: "Voor meer informatie ga naar "
+DlgAboutInfo		: "Voor meer informatie ga naar ",
+
+// Div Dialog
+DlgDivGeneralTab	: "Algemeen",
+DlgDivAdvancedTab	: "Geavanceerd",
+DlgDivStyle		: "Style",
+DlgDivInlineStyle	: "Inline Style"
 };

Modified: pal-wcm/trunk/src/main/webapp/fckeditor/editor/lang/no.js
===================================================================
--- pal-wcm/trunk/src/main/webapp/fckeditor/editor/lang/no.js	2008-09-03 08:05:44 UTC (rev 1112)
+++ pal-wcm/trunk/src/main/webapp/fckeditor/editor/lang/no.js	2008-09-04 02:44:24 UTC (rev 1113)
@@ -44,8 +44,9 @@
 InsertLinkLbl		: "Lenke",
 InsertLink			: "Sett inn/Rediger lenke",
 RemoveLink			: "Fjern lenke",
+VisitLink			: "Åpne lenke",
 Anchor				: "Sett inn/Rediger anker",
-AnchorDelete		: "Remove Anchor",	//MISSING
+AnchorDelete		: "Fjern anker",
 InsertImageLbl		: "Bilde",
 InsertImage			: "Sett inn/Rediger bilde",
 InsertFlashLbl		: "Flash",
@@ -72,10 +73,13 @@
 DecreaseIndent		: "Senk nivå",
 IncreaseIndent		: "Øk nivå",
 Blockquote			: "Blockquote",	//MISSING
+CreateDiv			: "Create Div Container",	//MISSING
+EditDiv				: "Edit Div Container",	//MISSING
+DeleteDiv			: "Remove Div Container",	//MISSING
 Undo				: "Angre",
 Redo				: "Gjør om",
-NumberedListLbl		: "Numrert liste",
-NumberedList		: "Sett inn/Fjern numrert liste",
+NumberedListLbl		: "Nummerert liste",
+NumberedList		: "Sett inn/Fjern nummerert liste",
 BulletedListLbl		: "Uordnet liste",
 BulletedList		: "Sett inn/Fjern uordnet liste",
 ShowTableBorders	: "Vis tabellrammer",
@@ -87,7 +91,7 @@
 TextColor			: "Tekstfarge",
 BGColor				: "Bakgrunnsfarge",
 Source				: "Kilde",
-Find				: "Finn",
+Find				: "Søk",
 Replace				: "Erstatt",
 SpellCheck			: "Stavekontroll",
 UniversalKeyboard	: "Universelt tastatur",
@@ -95,13 +99,13 @@
 PageBreak			: "Sett inn sideskift",
 
 Form			: "Skjema",
-Checkbox		: "Sjekkboks",
-RadioButton		: "Radioknapp",
-TextField		: "Tekstfelt",
+Checkbox		: "Avmerkingsboks",
+RadioButton		: "Alternativknapp",
+TextField		: "Tekstboks",
 Textarea		: "Tekstområde",
 HiddenField		: "Skjult felt",
 Button			: "Knapp",
-SelectionField	: "Dropdown meny",
+SelectionField	: "Rullegardinliste",
 ImageButton		: "Bildeknapp",
 
 FitWindow		: "Maksimer størrelsen på redigeringsverktøyet",
@@ -112,51 +116,52 @@
 CellCM				: "Celle",
 RowCM				: "Rader",
 ColumnCM			: "Kolonne",
-InsertRowAfter		: "Insert Row After",	//MISSING
-InsertRowBefore		: "Insert Row Before",	//MISSING
+InsertRowAfter		: "Sett inn rad etter",
+InsertRowBefore		: "Sett inn rad før",
 DeleteRows			: "Slett rader",
-InsertColumnAfter	: "Insert Column After",	//MISSING
-InsertColumnBefore	: "Insert Column Before",	//MISSING
+InsertColumnAfter	: "Sett inn kolonne etter",
+InsertColumnBefore	: "Sett inn kolonne før",
 DeleteColumns		: "Slett kolonner",
-InsertCellAfter		: "Insert Cell After",	//MISSING
-InsertCellBefore	: "Insert Cell Before",	//MISSING
+InsertCellAfter		: "Sett inn celle etter",
+InsertCellBefore	: "Sett inn celle før",
 DeleteCells			: "Slett celler",
 MergeCells			: "Slå sammen celler",
-MergeRight			: "Merge Right",	//MISSING
-MergeDown			: "Merge Down",	//MISSING
-HorizontalSplitCell	: "Split Cell Horizontally",	//MISSING
-VerticalSplitCell	: "Split Cell Vertically",	//MISSING
+MergeRight			: "Slå sammen høyre",
+MergeDown			: "Slå sammen ned",
+HorizontalSplitCell	: "Del celle horisontalt",
+VerticalSplitCell	: "Del celle vertikalt",
 TableDelete			: "Slett tabell",
-CellProperties		: "Celleegenskaper",
-TableProperties		: "Tabellegenskaper",
-ImageProperties		: "Bildeegenskaper",
-FlashProperties		: "Flash Egenskaper",
+CellProperties		: "Egenskaper for celle",
+TableProperties		: "Egenskaper for tabell",
+ImageProperties		: "Egenskaper for bilde",
+FlashProperties		: "Egenskaper for Flash-objekt",
 
-AnchorProp			: "Ankeregenskaper",
-ButtonProp			: "Knappegenskaper",
-CheckboxProp		: "Sjekkboksegenskaper",
-HiddenFieldProp		: "Skjult felt egenskaper",
-RadioButtonProp		: "Radioknappegenskaper",
-ImageButtonProp		: "Bildeknappegenskaper",
-TextFieldProp		: "Tekstfeltegenskaper",
-SelectionFieldProp	: "Dropdown menyegenskaper",
-TextareaProp		: "Tekstfeltegenskaper",
-FormProp			: "Skjemaegenskaper",
+AnchorProp			: "Egenskaper for anker",
+ButtonProp			: "Egenskaper for knapp",
+CheckboxProp		: "Egenskaper for avmerkingsboks",
+HiddenFieldProp		: "Egenskaper for skjult felt",
+RadioButtonProp		: "Egenskaper for alternativknapp",
+ImageButtonProp		: "Egenskaper for bildeknapp",
+TextFieldProp		: "Egenskaper for tekstfelt",
+SelectionFieldProp	: "Egenskaper for rullegardinliste",
+TextareaProp		: "Egenskaper for tekstområde",
+FormProp			: "Egenskaper for skjema",
 
 FontFormats			: "Normal;Formatert;Adresse;Tittel 1;Tittel 2;Tittel 3;Tittel 4;Tittel 5;Tittel 6;Normal (DIV)",
 
 // Alerts and Messages
 ProcessingXHTML		: "Lager XHTML. Vennligst vent...",
 Done				: "Ferdig",
-PasteWordConfirm	: "Teksten du prøver å lime inn ser ut som om den kommer fra word , du bør rense den før du limer inn , vil du gjøre dette?",
-NotCompatiblePaste	: "Denne kommandoen er tilgjenglig kun for Internet Explorer version 5.5 eller bedre. Vil du fortsette uten å rense?(Du kan lime inn som ren tekst)",
+PasteWordConfirm	: "Teksten du prøver å lime inn ser ut som om den kommer fra Word. Vil du rense den for unødvendig kode før du limer inn?",
+NotCompatiblePaste	: "Denne kommandoen er kun tilgjenglig for Internet Explorer versjon 5.5 eller bedre. Vil du fortsette uten å rense? (Du kan lime inn som ren tekst)",
 UnknownToolbarItem	: "Ukjent menyvalg \"%1\"",
 UnknownCommand		: "Ukjent kommando \"%1\"",
-NotImplemented		: "Kommando ikke ennå implimentert",
+NotImplemented		: "Kommando ikke implimentert",
 UnknownToolbarSet	: "Verktøylinjesett \"%1\" finnes ikke",
-NoActiveX			: "Din nettleser's sikkerhetsinstillinger kan begrense noen av funksjonene i redigeringsverktøyet. Du må aktivere \"Kjør ActiveXkontroller og plugins\". Du kan oppleve feil og advarsler om manglende funksjoner",
-BrowseServerBlocked : "Kunne ikke åpne dialogboksen for filarkiv. Pass på at du har slått av popupstoppere.",
-DialogBlocked		: "Kunne ikke åpne dialogboksen. Pass på at du har slått av popupstoppere.",
+NoActiveX			: "Din nettlesers sikkerhetsinstillinger kan begrense noen av funksjonene i redigeringsverktøyet. Du må aktivere \"Kjør ActiveX-kontroller og plugin-modeller\". Du kan oppleve feil og advarsler om manglende funksjoner",
+BrowseServerBlocked : "Kunne ikke åpne dialogboksen for filarkiv. Sjekk at popup-blokkering er deaktivert.",
+DialogBlocked		: "Kunne ikke åpne dialogboksen. Sjekk at popup-blokkering er deaktivert.",
+VisitLinkBlocked	: "Kunne ikke åpne et nytt vindu. Sjekk at popup-blokkering er deaktivert.",
 
 // Dialogs
 DlgBtnOK			: "OK",
@@ -166,7 +171,7 @@
 DlgAdvancedTag		: "Avansert",
 DlgOpOther			: "<Annet>",
 DlgInfoTab			: "Info",
-DlgAlertUrl			: "Vennligst skriv inn URL'en",
+DlgAlertUrl			: "Vennligst skriv inn URL-en",
 
 // General Dialogs Labels
 DlgGenNotSet		: "<ikke satt>",
@@ -174,7 +179,7 @@
 DlgGenLangDir		: "Språkretning",
 DlgGenLangDirLtr	: "Venstre til høyre (VTH)",
 DlgGenLangDirRtl	: "Høyre til venstre (HTV)",
-DlgGenLangCode		: "Språk kode",
+DlgGenLangCode		: "Språkkode",
 DlgGenAccessKey		: "Aksessknapp",
 DlgGenName			: "Navn",
 DlgGenTabIndex		: "Tab Indeks",
@@ -210,18 +215,18 @@
 DlgImgAlignTextTop	: "Tekst topp",
 DlgImgAlignTop		: "Topp",
 DlgImgPreview		: "Forhåndsvis",
-DlgImgAlertUrl		: "Vennligst skriv bildeurlen",
+DlgImgAlertUrl		: "Vennligst skriv bilde-urlen",
 DlgImgLinkTab		: "Lenke",
 
 // Flash Dialog
-DlgFlashTitle		: "Flash Egenskaper",
-DlgFlashChkPlay		: "Auto Spill",
+DlgFlashTitle		: "Flash-egenskaper",
+DlgFlashChkPlay		: "Autospill",
 DlgFlashChkLoop		: "Loop",
-DlgFlashChkMenu		: "Slå på Flash meny",
+DlgFlashChkMenu		: "Slå på Flash-meny",
 DlgFlashScale		: "Skaler",
 DlgFlashScaleAll	: "Vis alt",
 DlgFlashScaleNoBorder	: "Ingen ramme",
-DlgFlashScaleFit	: "Skaler til å passeExact Fit",
+DlgFlashScaleFit	: "Skaler til å passe",
 
 // Link Dialog
 DlgLnkWindowTitle	: "Lenke",
@@ -235,7 +240,7 @@
 DlgLnkProto			: "Protokoll",
 DlgLnkProtoOther	: "<annet>",
 DlgLnkURL			: "URL",
-DlgLnkAnchorSel		: "Velg ett anker",
+DlgLnkAnchorSel		: "Velg et anker",
 DlgLnkAnchorByName	: "Anker etter navn",
 DlgLnkAnchorById	: "Element etter ID",
 DlgLnkNoAnchors		: "(Ingen anker i dokumentet)",
@@ -249,12 +254,12 @@
 DlgLnkTargetFrame	: "<ramme>",
 DlgLnkTargetPopup	: "<popup vindu>",
 DlgLnkTargetBlank	: "Nytt vindu (_blank)",
-DlgLnkTargetParent	: "Foreldre vindu (_parent)",
+DlgLnkTargetParent	: "Foreldrevindu (_parent)",
 DlgLnkTargetSelf	: "Samme vindu (_self)",
 DlgLnkTargetTop		: "Hele vindu (_top)",
 DlgLnkTargetFrameName	: "Målramme",
-DlgLnkPopWinName	: "Popup vindus navn",
-DlgLnkPopWinFeat	: "Popup vindus egenskaper",
+DlgLnkPopWinName	: "Navn på popup-vindus",
+DlgLnkPopWinFeat	: "Egenskaper for popup-vindu",
 DlgLnkPopResize		: "Endre størrelse",
 DlgLnkPopLocation	: "Adresselinje",
 DlgLnkPopMenu		: "Menylinje",
@@ -266,18 +271,18 @@
 DlgLnkPopWidth		: "Bredde",
 DlgLnkPopHeight		: "Høyde",
 DlgLnkPopLeft		: "Venstre posisjon",
-DlgLnkPopTop		: "Topp posisjon",
+DlgLnkPopTop		: "Topp-posisjon",
 
 DlnLnkMsgNoUrl		: "Vennligst skriv inn lenkens url",
 DlnLnkMsgNoEMail	: "Vennligst skriv inn e-postadressen",
-DlnLnkMsgNoAnchor	: "Vennligst velg ett anker",
-DlnLnkMsgInvPopName	: "Popup vinduets navn må begynne med en bokstav, og kan ikke inneholde mellomrom",
+DlnLnkMsgNoAnchor	: "Vennligst velg et anker",
+DlnLnkMsgInvPopName	: "Popup-vinduets navn må begynne med en bokstav, og kan ikke inneholde mellomrom",
 
 // Color Dialog
 DlgColorTitle		: "Velg farge",
 DlgColorBtnClear	: "Tøm",
 DlgColorHighlight	: "Marker",
-DlgColorSelected	: "Velg",
+DlgColorSelected	: "Valgt",
 
 // Smiley Dialog
 DlgSmileyTitle		: "Sett inn smil",
@@ -286,7 +291,7 @@
 DlgSpecialCharTitle	: "Velg spesielt tegn",
 
 // Table Dialog
-DlgTableTitle		: "Tabellegenskaper",
+DlgTableTitle		: "Egenskaper for tabell",
 DlgTableRows		: "Rader",
 DlgTableColumns		: "Kolonner",
 DlgTableBorder		: "Rammestørrelse",
@@ -299,8 +304,8 @@
 DlgTableWidthPx		: "piksler",
 DlgTableWidthPc		: "prosent",
 DlgTableHeight		: "Høyde",
-DlgTableCellSpace	: "Celle marg",
-DlgTableCellPad		: "Celle polstring",
+DlgTableCellSpace	: "Cellemarg",
+DlgTableCellPad		: "Cellepolstring",
 DlgTableCaption		: "Tittel",
 DlgTableSummary		: "Sammendrag",
 
@@ -332,31 +337,31 @@
 DlgCellBtnSelect	: "Velg...",
 
 // Find and Replace Dialog
-DlgFindAndReplaceTitle	: "Find and Replace",	//MISSING
+DlgFindAndReplaceTitle	: "Søk og erstatt",
 
 // Find Dialog
-DlgFindTitle		: "Finn",
-DlgFindFindBtn		: "Finn",
-DlgFindNotFoundMsg	: "Den spesifiserte teksten ble ikke funnet.",
+DlgFindTitle		: "Søk",
+DlgFindFindBtn		: "Søk",
+DlgFindNotFoundMsg	: "Fant ikke søketeksten.",
 
 // Replace Dialog
 DlgReplaceTitle			: "Erstatt",
-DlgReplaceFindLbl		: "Finn hva:",
+DlgReplaceFindLbl		: "Søk etter:",
 DlgReplaceReplaceLbl	: "Erstatt med:",
-DlgReplaceCaseChk		: "Riktig case",
+DlgReplaceCaseChk		: "Skill mellom store og små bokstaver",
 DlgReplaceReplaceBtn	: "Erstatt",
 DlgReplaceReplAllBtn	: "Erstatt alle",
-DlgReplaceWordChk		: "Finn hele ordet",
+DlgReplaceWordChk		: "Bare hele ord",
 
 // Paste Operations / Dialog
-PasteErrorCut	: "Din nettlesers sikkerhetsinstillinger tillater ikke automatisk klipping av tekst. Vennligst brukt snareveien (Ctrl+X).",
-PasteErrorCopy	: "Din nettlesers sikkerhetsinstillinger tillater ikke automatisk kopiering av tekst. Vennligst brukt snareveien (Ctrl+C).",
+PasteErrorCut	: "Din nettlesers sikkerhetsinstillinger tillater ikke automatisk klipping av tekst. Vennligst bruk snareveien (Ctrl+X).",
+PasteErrorCopy	: "Din nettlesers sikkerhetsinstillinger tillater ikke automatisk kopiering av tekst. Vennligst bruk snareveien (Ctrl+C).",
 
 PasteAsText		: "Lim inn som ren tekst",
-PasteFromWord	: "Lim inn fra word",
+PasteFromWord	: "Lim inn fra Word",
 
 DlgPasteMsg2	: "Vennligst lim inn i den følgende boksen med tastaturet (<STRONG>Ctrl+V</STRONG>) og trykk <STRONG>OK</STRONG>.",
-DlgPasteSec		: "Because of your browser security settings, the editor is not able to access your clipboard data directly. You are required to paste it again in this window.",	//MISSING
+DlgPasteSec		: "Din nettlesers sikkerhetsinstillinger gir ikke redigeringsverktøyet direkte tilgang til utklippstavlen. Du må lime det igjen i dette vinduet.",
 DlgPasteIgnoreFont		: "Fjern skrifttyper",
 DlgPasteRemoveStyles	: "Fjern stildefinisjoner",
 
@@ -380,17 +385,17 @@
 DlgSpellBtnReplace		: "Erstatt",
 DlgSpellBtnReplaceAll	: "Erstatt alle",
 DlgSpellBtnUndo			: "Angre",
-DlgSpellNoSuggestions	: "- ingen forslag -",
+DlgSpellNoSuggestions	: "- Ingen forslag -",
 DlgSpellProgress		: "Stavekontroll pågår...",
 DlgSpellNoMispell		: "Stavekontroll fullført: ingen feilstavinger funnet",
 DlgSpellNoChanges		: "Stavekontroll fullført: ingen ord endret",
 DlgSpellOneChange		: "Stavekontroll fullført: Ett ord endret",
 DlgSpellManyChanges		: "Stavekontroll fullført: %1 ord endret",
 
-IeSpellDownload			: "Stavekontroll ikke installert, vil du laste den ned nå?",
+IeSpellDownload			: "Stavekontroll er ikke installert. Vil du laste den ned nå?",
 
 // Button Dialog
-DlgButtonText		: "Tekst",
+DlgButtonText		: "Tekst (verdi)",
 DlgButtonType		: "Type",
 DlgButtonTypeBtn	: "Knapp",
 DlgButtonTypeSbm	: "Send",
@@ -429,7 +434,7 @@
 
 // Text Field Dialog
 DlgTextName			: "Navn",
-DlgTextValue		: "verdi",
+DlgTextValue		: "Verdi",
 DlgTextCharWidth	: "Tegnbredde",
 DlgTextMaxChars		: "Maks antall tegn",
 DlgTextType			: "Type",
@@ -441,24 +446,24 @@
 DlgHiddenValue	: "Verdi",
 
 // Bulleted List Dialog
-BulletedListProp	: "Uordnet listeegenskaper",
-NumberedListProp	: "Ordnet listeegenskaper",
+BulletedListProp	: "Egenskaper for uordnet liste",
+NumberedListProp	: "Egenskaper for ordnet liste",
 DlgLstStart			: "Start",
 DlgLstType			: "Type",
 DlgLstTypeCircle	: "Sirkel",
 DlgLstTypeDisc		: "Hel sirkel",
 DlgLstTypeSquare	: "Firkant",
-DlgLstTypeNumbers	: "Numre(1, 2, 3)",
+DlgLstTypeNumbers	: "Numre (1, 2, 3)",
 DlgLstTypeLCase		: "Små bokstaver (a, b, c)",
-DlgLstTypeUCase		: "Store bokstaver(A, B, C)",
-DlgLstTypeSRoman	: "Små romerske tall(i, ii, iii)",
-DlgLstTypeLRoman	: "Store romerske tall(I, II, III)",
+DlgLstTypeUCase		: "Store bokstaver (A, B, C)",
+DlgLstTypeSRoman	: "Små romerske tall (i, ii, iii)",
+DlgLstTypeLRoman	: "Store romerske tall (I, II, III)",
 
 // Document Properties Dialog
-DlgDocGeneralTab	: "Generalt",
+DlgDocGeneralTab	: "Generelt",
 DlgDocBackTab		: "Bakgrunn",
 DlgDocColorsTab		: "Farger og marginer",
-DlgDocMetaTab		: "Meta Data",
+DlgDocMetaTab		: "Meta-data",
 
 DlgDocPageTitle		: "Sidetittel",
 DlgDocLangDir		: "Språkretning",
@@ -473,16 +478,16 @@
 DlgDocCharSetJP		: "Japansk",
 DlgDocCharSetKR		: "Koreansk",
 DlgDocCharSetTR		: "Tyrkisk",
-DlgDocCharSetUN		: "Unikode (UTF-8)",
+DlgDocCharSetUN		: "Unicode (UTF-8)",
 DlgDocCharSetWE		: "Vesteuropeisk",
 DlgDocCharSetOther	: "Annet tegnsett",
 
 DlgDocDocType		: "Dokumenttype header",
 DlgDocDocTypeOther	: "Annet dokumenttype header",
-DlgDocIncXHTML		: "Inkulder XHTML deklarasjon",
+DlgDocIncXHTML		: "Inkluder XHTML-deklarasjon",
 DlgDocBgColor		: "Bakgrunnsfarge",
-DlgDocBgImage		: "Bakgrunnsbilde url",
-DlgDocBgNoScroll	: "Ikke scroll bakgrunnsbilde",
+DlgDocBgImage		: "URL for bakgrunnsbilde",
+DlgDocBgNoScroll	: "Lås bakgrunnsbilde",
 DlgDocCText			: "Tekst",
 DlgDocCLink			: "Link",
 DlgDocCVisited		: "Besøkt lenke",
@@ -511,5 +516,11 @@
 DlgAboutBrowserInfoTab	: "Nettleserinfo",
 DlgAboutLicenseTab	: "Lisens",
 DlgAboutVersion		: "versjon",
-DlgAboutInfo		: "For further information go to"	//MISSING
+DlgAboutInfo		: "For mer informasjon, se",
+
+// Div Dialog
+DlgDivGeneralTab	: "Generelt",
+DlgDivAdvancedTab	: "Avansert",
+DlgDivStyle		: "Stil",
+DlgDivInlineStyle	: "Inline Style"	//MISSING
 };

Modified: pal-wcm/trunk/src/main/webapp/fckeditor/editor/lang/pl.js
===================================================================
--- pal-wcm/trunk/src/main/webapp/fckeditor/editor/lang/pl.js	2008-09-03 08:05:44 UTC (rev 1112)
+++ pal-wcm/trunk/src/main/webapp/fckeditor/editor/lang/pl.js	2008-09-04 02:44:24 UTC (rev 1113)
@@ -44,6 +44,7 @@
 InsertLinkLbl		: "Hiperłącze",
 InsertLink			: "Wstaw/edytuj hiperłącze",
 RemoveLink			: "Usuń hiperłącze",
+VisitLink			: "Open Link",	//MISSING
 Anchor				: "Wstaw/edytuj kotwicę",
 AnchorDelete		: "Usuń kotwicę",
 InsertImageLbl		: "Obrazek",
@@ -72,6 +73,9 @@
 DecreaseIndent		: "Zmniejsz wcięcie",
 IncreaseIndent		: "Zwiększ wcięcie",
 Blockquote			: "Cytat",
+CreateDiv			: "Create Div Container",	//MISSING
+EditDiv				: "Edit Div Container",	//MISSING
+DeleteDiv			: "Remove Div Container",	//MISSING
 Undo				: "Cofnij",
 Redo				: "Ponów",
 NumberedListLbl		: "Lista numerowana",
@@ -157,6 +161,7 @@
 NoActiveX			: "Ustawienia zabezpieczeń twojej przeglądarki mogą ograniczyć niektóre funkcje edytora. Musisz włączyć opcję \"Uruchamianie formantów Activex i dodatków plugin\". W przeciwnym wypadku mogą pojawiać się błędy.",
 BrowseServerBlocked : "Nie można otworzyć okno menadżera plików. Upewnij się, że wszystkie blokady wyskakujących okienek są wyłączone.",
 DialogBlocked		: "Nie można otworzyć okna dialogowego. Upewnij się, że wszystkie blokady wyskakujących okienek są wyłączone.",
+VisitLinkBlocked	: "It was not possible to open a new window. Make sure all popup blockers are disabled.",	//MISSING
 
 // Dialogs
 DlgBtnOK			: "OK",
@@ -511,5 +516,11 @@
 DlgAboutBrowserInfoTab	: "O przeglądarce",
 DlgAboutLicenseTab	: "Licencja",
 DlgAboutVersion		: "wersja",
-DlgAboutInfo		: "Więcej informacji uzyskasz pod adresem"
+DlgAboutInfo		: "Więcej informacji uzyskasz pod adresem",
+
+// Div Dialog
+DlgDivGeneralTab	: "General",	//MISSING
+DlgDivAdvancedTab	: "Advanced",	//MISSING
+DlgDivStyle		: "Style",	//MISSING
+DlgDivInlineStyle	: "Inline Style"	//MISSING
 };

Modified: pal-wcm/trunk/src/main/webapp/fckeditor/editor/lang/pt-br.js
===================================================================
--- pal-wcm/trunk/src/main/webapp/fckeditor/editor/lang/pt-br.js	2008-09-03 08:05:44 UTC (rev 1112)
+++ pal-wcm/trunk/src/main/webapp/fckeditor/editor/lang/pt-br.js	2008-09-04 02:44:24 UTC (rev 1113)
@@ -44,6 +44,7 @@
 InsertLinkLbl		: "Hiperlink",
 InsertLink			: "Inserir/Editar Hiperlink",
 RemoveLink			: "Remover Hiperlink",
+VisitLink			: "Open Link",	//MISSING
 Anchor				: "Inserir/Editar Âncora",
 AnchorDelete		: "Remover Âncora",
 InsertImageLbl		: "Figura",
@@ -72,6 +73,9 @@
 DecreaseIndent		: "Diminuir Recuo",
 IncreaseIndent		: "Aumentar Recuo",
 Blockquote			: "Recuo",
+CreateDiv			: "Create Div Container",	//MISSING
+EditDiv				: "Edit Div Container",	//MISSING
+DeleteDiv			: "Remove Div Container",	//MISSING
 Undo				: "Desfazer",
 Redo				: "Refazer",
 NumberedListLbl		: "Numeração",
@@ -157,6 +161,7 @@
 NoActiveX			: "As configurações de segurança do seu browser podem limitar algumas características do editor. Você precisa habilitar a opção \"Executar controles e plug-ins ActiveX\". Você pode experimentar erros e alertas de características faltantes.",
 BrowseServerBlocked : "Os recursos do browser não puderam ser abertos. Tenha certeza que todos os bloqueadores de popup estão desabilitados.",
 DialogBlocked		: "Não foi possível abrir a janela de diálogo. Tenha certeza que todos os bloqueadores de popup estão desabilitados.",
+VisitLinkBlocked	: "It was not possible to open a new window. Make sure all popup blockers are disabled.",	//MISSING
 
 // Dialogs
 DlgBtnOK			: "OK",
@@ -511,5 +516,11 @@
 DlgAboutBrowserInfoTab	: "Informações do Navegador",
 DlgAboutLicenseTab	: "Licença",
 DlgAboutVersion		: "versão",
-DlgAboutInfo		: "Para maiores informações visite"
+DlgAboutInfo		: "Para maiores informações visite",
+
+// Div Dialog
+DlgDivGeneralTab	: "General",	//MISSING
+DlgDivAdvancedTab	: "Advanced",	//MISSING
+DlgDivStyle		: "Style",	//MISSING
+DlgDivInlineStyle	: "Inline Style"	//MISSING
 };

Modified: pal-wcm/trunk/src/main/webapp/fckeditor/editor/lang/pt.js
===================================================================
--- pal-wcm/trunk/src/main/webapp/fckeditor/editor/lang/pt.js	2008-09-03 08:05:44 UTC (rev 1112)
+++ pal-wcm/trunk/src/main/webapp/fckeditor/editor/lang/pt.js	2008-09-04 02:44:24 UTC (rev 1113)
@@ -44,6 +44,7 @@
 InsertLinkLbl		: "Hiperligação",
 InsertLink			: "Inserir/Editar Hiperligação",
 RemoveLink			: "Eliminar Hiperligação",
+VisitLink			: "Open Link",	//MISSING
 Anchor				: " Inserir/Editar Âncora",
 AnchorDelete		: "Remove Anchor",	//MISSING
 InsertImageLbl		: "Imagem",
@@ -72,6 +73,9 @@
 DecreaseIndent		: "Diminuir Avanço",
 IncreaseIndent		: "Aumentar Avanço",
 Blockquote			: "Blockquote",	//MISSING
+CreateDiv			: "Create Div Container",	//MISSING
+EditDiv				: "Edit Div Container",	//MISSING
+DeleteDiv			: "Remove Div Container",	//MISSING
 Undo				: "Anular",
 Redo				: "Repetir",
 NumberedListLbl		: "Numeração",
@@ -157,6 +161,7 @@
 NoActiveX			: "As definições de segurança do navegador podem limitar algumas potencalidades do editr. Deve activar a opção \"Executar controlos e extensões ActiveX\". Pode ocorrer erros ou verificar que faltam potencialidades.",
 BrowseServerBlocked : "Não foi possível abrir o navegador de recursos. Certifique-se que todos os bloqueadores de popup estão desactivados.",
 DialogBlocked		: "Não foi possível abrir a janela de diálogo. Certifique-se que todos os bloqueadores de popup estão desactivados.",
+VisitLinkBlocked	: "It was not possible to open a new window. Make sure all popup blockers are disabled.",	//MISSING
 
 // Dialogs
 DlgBtnOK			: "OK",
@@ -511,5 +516,11 @@
 DlgAboutBrowserInfoTab	: "Informação do Nevegador",
 DlgAboutLicenseTab	: "Licença",
 DlgAboutVersion		: "versão",
-DlgAboutInfo		: "Para mais informações por favor dirija-se a"
+DlgAboutInfo		: "Para mais informações por favor dirija-se a",
+
+// Div Dialog
+DlgDivGeneralTab	: "General",	//MISSING
+DlgDivAdvancedTab	: "Advanced",	//MISSING
+DlgDivStyle		: "Style",	//MISSING
+DlgDivInlineStyle	: "Inline Style"	//MISSING
 };

Modified: pal-wcm/trunk/src/main/webapp/fckeditor/editor/lang/ro.js
===================================================================
--- pal-wcm/trunk/src/main/webapp/fckeditor/editor/lang/ro.js	2008-09-03 08:05:44 UTC (rev 1112)
+++ pal-wcm/trunk/src/main/webapp/fckeditor/editor/lang/ro.js	2008-09-04 02:44:24 UTC (rev 1113)
@@ -44,6 +44,7 @@
 InsertLinkLbl		: "Link (Legătură web)",
 InsertLink			: "Inserează/Editează link (legătură web)",
 RemoveLink			: "Înlătură link (legătură web)",
+VisitLink			: "Open Link",	//MISSING
 Anchor				: "Inserează/Editează ancoră",
 AnchorDelete		: "Şterge ancoră",
 InsertImageLbl		: "Imagine",
@@ -72,6 +73,9 @@
 DecreaseIndent		: "Scade indentarea",
 IncreaseIndent		: "Creşte indentarea",
 Blockquote			: "Citat",
+CreateDiv			: "Create Div Container",	//MISSING
+EditDiv				: "Edit Div Container",	//MISSING
+DeleteDiv			: "Remove Div Container",	//MISSING
 Undo				: "Starea anterioară (undo)",
 Redo				: "Starea ulterioară (redo)",
 NumberedListLbl		: "Listă numerotată",
@@ -157,6 +161,7 @@
 NoActiveX			: "Setările de securitate ale programului dvs. cu care navigaţi pe internet (browser) pot limita anumite funcţionalităţi ale editorului. Pentru a evita asta, trebuie să activaţi opţiunea \"Run ActiveX controls and plug-ins\". Poate veţi întâlni erori sau veţi observa funcţionalităţi lipsă.",
 BrowseServerBlocked : "The resources browser could not be opened. Asiguraţi-vă că nu e activ niciun \"popup blocker\" (funcţionalitate a programului de navigat (browser) sau a unui plug-in al acestuia de a bloca deschiderea unui noi ferestre).",
 DialogBlocked		: "Nu a fost posibilă deschiderea unei ferestre de dialog. Asiguraţi-vă că nu e activ niciun \"popup blocker\" (funcţionalitate a programului de navigat (browser) sau a unui plug-in al acestuia de a bloca deschiderea unui noi ferestre).",
+VisitLinkBlocked	: "It was not possible to open a new window. Make sure all popup blockers are disabled.",	//MISSING
 
 // Dialogs
 DlgBtnOK			: "Bine",
@@ -511,5 +516,11 @@
 DlgAboutBrowserInfoTab	: "Informaţii browser",
 DlgAboutLicenseTab	: "Licenţă",
 DlgAboutVersion		: "versiune",
-DlgAboutInfo		: "Pentru informaţii amănunţite, vizitaţi"
+DlgAboutInfo		: "Pentru informaţii amănunţite, vizitaţi",
+
+// Div Dialog
+DlgDivGeneralTab	: "General",	//MISSING
+DlgDivAdvancedTab	: "Advanced",	//MISSING
+DlgDivStyle		: "Style",	//MISSING
+DlgDivInlineStyle	: "Inline Style"	//MISSING
 };

Modified: pal-wcm/trunk/src/main/webapp/fckeditor/editor/lang/ru.js
===================================================================
--- pal-wcm/trunk/src/main/webapp/fckeditor/editor/lang/ru.js	2008-09-03 08:05:44 UTC (rev 1112)
+++ pal-wcm/trunk/src/main/webapp/fckeditor/editor/lang/ru.js	2008-09-04 02:44:24 UTC (rev 1113)
@@ -44,6 +44,7 @@
 InsertLinkLbl		: "Ссылка",
 InsertLink			: "Вставить/Редактировать ссылку",
 RemoveLink			: "Убрать ссылку",
+VisitLink			: "Open Link",	//MISSING
 Anchor				: "Вставить/Редактировать якорь",
 AnchorDelete		: "Убрать якорь",
 InsertImageLbl		: "Изображение",
@@ -72,6 +73,9 @@
 DecreaseIndent		: "Уменьшить отступ",
 IncreaseIndent		: "Увеличить отступ",
 Blockquote			: "Цитата",
+CreateDiv			: "Create Div Container",	//MISSING
+EditDiv				: "Edit Div Container",	//MISSING
+DeleteDiv			: "Remove Div Container",	//MISSING
 Undo				: "Отменить",
 Redo				: "Повторить",
 NumberedListLbl		: "Нумерованный список",
@@ -157,6 +161,7 @@
 NoActiveX			: "Настройки безопасности вашего браузера могут ограничивать некоторые свойства редактора. Вы должны включить опцию \"Запускать элементы управления ActiveX и плугины\". Вы можете видеть ошибки и замечать отсутствие возможностей.",
 BrowseServerBlocked : "Ресурсы браузера не могут быть открыты. Проверьте что блокировки всплывающих окон выключены.",
 DialogBlocked		: "Невозможно открыть окно диалога. Проверьте что блокировки всплывающих окон выключены.",
+VisitLinkBlocked	: "It was not possible to open a new window. Make sure all popup blockers are disabled.",	//MISSING
 
 // Dialogs
 DlgBtnOK			: "ОК",
@@ -511,5 +516,11 @@
 DlgAboutBrowserInfoTab	: "Информация браузера",
 DlgAboutLicenseTab	: "Лицензия",
 DlgAboutVersion		: "Версия",
-DlgAboutInfo		: "Для большей информации, посетите"
+DlgAboutInfo		: "Для большей информации, посетите",
+
+// Div Dialog
+DlgDivGeneralTab	: "General",	//MISSING
+DlgDivAdvancedTab	: "Advanced",	//MISSING
+DlgDivStyle		: "Style",	//MISSING
+DlgDivInlineStyle	: "Inline Style"	//MISSING
 };

Modified: pal-wcm/trunk/src/main/webapp/fckeditor/editor/lang/sk.js
===================================================================
--- pal-wcm/trunk/src/main/webapp/fckeditor/editor/lang/sk.js	2008-09-03 08:05:44 UTC (rev 1112)
+++ pal-wcm/trunk/src/main/webapp/fckeditor/editor/lang/sk.js	2008-09-04 02:44:24 UTC (rev 1113)
@@ -44,6 +44,7 @@
 InsertLinkLbl		: "Odkaz",
 InsertLink			: "Vložiť/zmeniť odkaz",
 RemoveLink			: "Odstrániť odkaz",
+VisitLink			: "Open Link",	//MISSING
 Anchor				: "Vložiť/zmeniť kotvu",
 AnchorDelete		: "Remove Anchor",	//MISSING
 InsertImageLbl		: "Obrázok",
@@ -72,6 +73,9 @@
 DecreaseIndent		: "Zmenšiť odsadenie",
 IncreaseIndent		: "Zväčšiť odsadenie",
 Blockquote			: "Blockquote",	//MISSING
+CreateDiv			: "Create Div Container",	//MISSING
+EditDiv				: "Edit Div Container",	//MISSING
+DeleteDiv			: "Remove Div Container",	//MISSING
 Undo				: "Späť",
 Redo				: "Znovu",
 NumberedListLbl		: "Číslovanie",
@@ -157,6 +161,7 @@
 NoActiveX			: "Bezpečnostné nastavenia vášho prehliadača môžu obmedzovať niektoré funkcie editora. Pre ich plnú funkčnosť musíte zapnúť voľbu \"Spúšťať ActiveX moduly a zásuvné moduly\", inak sa môžete stretnúť s chybami a nefunkčnosťou niektorých funkcií.",
 BrowseServerBlocked : "Prehliadač zdrojových prvkov nebolo možné otvoriť. Uistite sa, že máte vypnuté všetky blokovače vyskakujúcich okien.",
 DialogBlocked		: "Dialógové okno nebolo možné otvoriť. Uistite sa, že máte vypnuté všetky blokovače vyskakujúcich okien.",
+VisitLinkBlocked	: "It was not possible to open a new window. Make sure all popup blockers are disabled.",	//MISSING
 
 // Dialogs
 DlgBtnOK			: "OK",
@@ -511,5 +516,11 @@
 DlgAboutBrowserInfoTab	: "Informácie o prehliadači",
 DlgAboutLicenseTab	: "Licencia",
 DlgAboutVersion		: "verzia",
-DlgAboutInfo		: "Viac informácií získate na"
+DlgAboutInfo		: "Viac informácií získate na",
+
+// Div Dialog
+DlgDivGeneralTab	: "General",	//MISSING
+DlgDivAdvancedTab	: "Advanced",	//MISSING
+DlgDivStyle		: "Style",	//MISSING
+DlgDivInlineStyle	: "Inline Style"	//MISSING
 };

Modified: pal-wcm/trunk/src/main/webapp/fckeditor/editor/lang/sl.js
===================================================================
--- pal-wcm/trunk/src/main/webapp/fckeditor/editor/lang/sl.js	2008-09-03 08:05:44 UTC (rev 1112)
+++ pal-wcm/trunk/src/main/webapp/fckeditor/editor/lang/sl.js	2008-09-04 02:44:24 UTC (rev 1113)
@@ -44,6 +44,7 @@
 InsertLinkLbl		: "Povezava",
 InsertLink			: "Vstavi/uredi povezavo",
 RemoveLink			: "Odstrani povezavo",
+VisitLink			: "Open Link",	//MISSING
 Anchor				: "Vstavi/uredi zaznamek",
 AnchorDelete		: "Odstrani zaznamek",
 InsertImageLbl		: "Slika",
@@ -72,6 +73,9 @@
 DecreaseIndent		: "Zmanjšaj zamik",
 IncreaseIndent		: "Povečaj zamik",
 Blockquote			: "Citat",
+CreateDiv			: "Create Div Container",	//MISSING
+EditDiv				: "Edit Div Container",	//MISSING
+DeleteDiv			: "Remove Div Container",	//MISSING
 Undo				: "Razveljavi",
 Redo				: "Ponovi",
 NumberedListLbl		: "Oštevilčen seznam",
@@ -157,6 +161,7 @@
 NoActiveX			: "Varnostne nastavitve vašega brskalnika lahko omejijo delovanje nekaterih zmožnosti urejevalnika. Če ne želite zaznavati napak in sporočil o manjkajočih zmožnostih, omogočite možnost \"Zaženi ActiveX kontrolnike in vtičnike\".",
 BrowseServerBlocked : "Brskalnik virov se ne more odpreti. Prepričajte se, da je preprečevanje pojavnih oken onemogočeno.",
 DialogBlocked		: "Pogovorno okno se ni moglo odpreti. Prepričajte se, da je preprečevanje pojavnih oken onemogočeno.",
+VisitLinkBlocked	: "It was not possible to open a new window. Make sure all popup blockers are disabled.",	//MISSING
 
 // Dialogs
 DlgBtnOK			: "V redu",
@@ -511,5 +516,11 @@
 DlgAboutBrowserInfoTab	: "Informacije o brskalniku",
 DlgAboutLicenseTab	: "Dovoljenja",
 DlgAboutVersion		: "različica",
-DlgAboutInfo		: "Za več informacij obiščite"
+DlgAboutInfo		: "Za več informacij obiščite",
+
+// Div Dialog
+DlgDivGeneralTab	: "General",	//MISSING
+DlgDivAdvancedTab	: "Advanced",	//MISSING
+DlgDivStyle		: "Style",	//MISSING
+DlgDivInlineStyle	: "Inline Style"	//MISSING
 };

Modified: pal-wcm/trunk/src/main/webapp/fckeditor/editor/lang/sr-latn.js
===================================================================
--- pal-wcm/trunk/src/main/webapp/fckeditor/editor/lang/sr-latn.js	2008-09-03 08:05:44 UTC (rev 1112)
+++ pal-wcm/trunk/src/main/webapp/fckeditor/editor/lang/sr-latn.js	2008-09-04 02:44:24 UTC (rev 1113)
@@ -44,6 +44,7 @@
 InsertLinkLbl		: "Link",
 InsertLink			: "Unesi/izmeni link",
 RemoveLink			: "Ukloni link",
+VisitLink			: "Open Link",	//MISSING
 Anchor				: "Unesi/izmeni sidro",
 AnchorDelete		: "Remove Anchor",	//MISSING
 InsertImageLbl		: "Slika",
@@ -72,6 +73,9 @@
 DecreaseIndent		: "Smanji levu marginu",
 IncreaseIndent		: "Uvećaj levu marginu",
 Blockquote			: "Blockquote",	//MISSING
+CreateDiv			: "Create Div Container",	//MISSING
+EditDiv				: "Edit Div Container",	//MISSING
+DeleteDiv			: "Remove Div Container",	//MISSING
 Undo				: "Poni�ti akciju",
 Redo				: "Ponovi akciju",
 NumberedListLbl		: "Nabrojiva lista",
@@ -157,6 +161,7 @@
 NoActiveX			: "Your browser's security settings could limit some features of the editor. You must enable the option \"Run ActiveX controls and plug-ins\". You may experience errors and notice missing features.",	//MISSING
 BrowseServerBlocked : "The resources browser could not be opened. Make sure that all popup blockers are disabled.",	//MISSING
 DialogBlocked		: "It was not possible to open the dialog window. Make sure all popup blockers are disabled.",	//MISSING
+VisitLinkBlocked	: "It was not possible to open a new window. Make sure all popup blockers are disabled.",	//MISSING
 
 // Dialogs
 DlgBtnOK			: "OK",
@@ -511,5 +516,11 @@
 DlgAboutBrowserInfoTab	: "Informacije o pretraživacu",
 DlgAboutLicenseTab	: "License",	//MISSING
 DlgAboutVersion		: "verzija",
-DlgAboutInfo		: "Za više informacija posetite"
+DlgAboutInfo		: "Za više informacija posetite",
+
+// Div Dialog
+DlgDivGeneralTab	: "General",	//MISSING
+DlgDivAdvancedTab	: "Advanced",	//MISSING
+DlgDivStyle		: "Style",	//MISSING
+DlgDivInlineStyle	: "Inline Style"	//MISSING
 };

Modified: pal-wcm/trunk/src/main/webapp/fckeditor/editor/lang/sr.js
===================================================================
--- pal-wcm/trunk/src/main/webapp/fckeditor/editor/lang/sr.js	2008-09-03 08:05:44 UTC (rev 1112)
+++ pal-wcm/trunk/src/main/webapp/fckeditor/editor/lang/sr.js	2008-09-04 02:44:24 UTC (rev 1113)
@@ -44,6 +44,7 @@
 InsertLinkLbl		: "Линк",
 InsertLink			: "Унеси/измени линк",
 RemoveLink			: "Уклони линк",
+VisitLink			: "Open Link",	//MISSING
 Anchor				: "Унеси/измени сидро",
 AnchorDelete		: "Remove Anchor",	//MISSING
 InsertImageLbl		: "Слика",
@@ -72,6 +73,9 @@
 DecreaseIndent		: "Смањи леву маргину",
 IncreaseIndent		: "Увећај леву маргину",
 Blockquote			: "Blockquote",	//MISSING
+CreateDiv			: "Create Div Container",	//MISSING
+EditDiv				: "Edit Div Container",	//MISSING
+DeleteDiv			: "Remove Div Container",	//MISSING
 Undo				: "Поништи акцију",
 Redo				: "Понови акцију",
 NumberedListLbl		: "Набројиву листу",
@@ -157,6 +161,7 @@
 NoActiveX			: "Your browser's security settings could limit some features of the editor. You must enable the option \"Run ActiveX controls and plug-ins\". You may experience errors and notice missing features.",	//MISSING
 BrowseServerBlocked : "The resources browser could not be opened. Make sure that all popup blockers are disabled.",	//MISSING
 DialogBlocked		: "It was not possible to open the dialog window. Make sure all popup blockers are disabled.",	//MISSING
+VisitLinkBlocked	: "It was not possible to open a new window. Make sure all popup blockers are disabled.",	//MISSING
 
 // Dialogs
 DlgBtnOK			: "OK",
@@ -511,5 +516,11 @@
 DlgAboutBrowserInfoTab	: "Информације о претраживачу",
 DlgAboutLicenseTab	: "License",	//MISSING
 DlgAboutVersion		: "верзија",
-DlgAboutInfo		: "За више информација посетите"
+DlgAboutInfo		: "За више информација посетите",
+
+// Div Dialog
+DlgDivGeneralTab	: "General",	//MISSING
+DlgDivAdvancedTab	: "Advanced",	//MISSING
+DlgDivStyle		: "Style",	//MISSING
+DlgDivInlineStyle	: "Inline Style"	//MISSING
 };

Modified: pal-wcm/trunk/src/main/webapp/fckeditor/editor/lang/sv.js
===================================================================
--- pal-wcm/trunk/src/main/webapp/fckeditor/editor/lang/sv.js	2008-09-03 08:05:44 UTC (rev 1112)
+++ pal-wcm/trunk/src/main/webapp/fckeditor/editor/lang/sv.js	2008-09-04 02:44:24 UTC (rev 1113)
@@ -44,8 +44,9 @@
 InsertLinkLbl		: "Länk",
 InsertLink			: "Infoga/Redigera länk",
 RemoveLink			: "Radera länk",
+VisitLink			: "Open Link",	//MISSING
 Anchor				: "Infoga/Redigera ankarlänk",
-AnchorDelete		: "Remove Anchor",	//MISSING
+AnchorDelete		: "Radera ankarlänk",
 InsertImageLbl		: "Bild",
 InsertImage			: "Infoga/Redigera bild",
 InsertFlashLbl		: "Flash",
@@ -72,6 +73,9 @@
 DecreaseIndent		: "Minska indrag",
 IncreaseIndent		: "Öka indrag",
 Blockquote			: "Blockquote",	//MISSING
+CreateDiv			: "Create Div Container",	//MISSING
+EditDiv				: "Edit Div Container",	//MISSING
+DeleteDiv			: "Remove Div Container",	//MISSING
 Undo				: "Ångra",
 Redo				: "Gör om",
 NumberedListLbl		: "Numrerad lista",
@@ -112,20 +116,20 @@
 CellCM				: "Cell",
 RowCM				: "Rad",
 ColumnCM			: "Kolumn",
-InsertRowAfter		: "Insert Row After",	//MISSING
-InsertRowBefore		: "Insert Row Before",	//MISSING
+InsertRowAfter		: "Lägg till Rad Efter",
+InsertRowBefore		: "Lägg till Rad Före",
 DeleteRows			: "Radera rad",
-InsertColumnAfter	: "Insert Column After",	//MISSING
-InsertColumnBefore	: "Insert Column Before",	//MISSING
+InsertColumnAfter	: "Lägg till Kolumn Efter",
+InsertColumnBefore	: "Lägg till Kolumn Före",
 DeleteColumns		: "Radera kolumn",
-InsertCellAfter		: "Insert Cell After",	//MISSING
-InsertCellBefore	: "Insert Cell Before",	//MISSING
+InsertCellAfter		: "Lägg till Cell Efter",
+InsertCellBefore	: "Lägg till Cell Före",
 DeleteCells			: "Radera celler",
 MergeCells			: "Sammanfoga celler",
-MergeRight			: "Merge Right",	//MISSING
-MergeDown			: "Merge Down",	//MISSING
-HorizontalSplitCell	: "Split Cell Horizontally",	//MISSING
-VerticalSplitCell	: "Split Cell Vertically",	//MISSING
+MergeRight			: "Sammanfoga Höger",
+MergeDown			: "Sammanfoga Ner",
+HorizontalSplitCell	: "Dela Cell Horisontellt",
+VerticalSplitCell	: "Dela Cell Vertikalt",
 TableDelete			: "Radera tabell",
 CellProperties		: "Cellegenskaper",
 TableProperties		: "Tabellegenskaper",
@@ -157,6 +161,7 @@
 NoActiveX			: "Din webläsares säkerhetsinställningar kan begränsa funktionaliteten. Du bör aktivera \"Kör ActiveX kontroller och plug-ins\". Fel och avsaknad av funktioner kan annars uppstå.",
 BrowseServerBlocked : "Kunde Ej öppna resursfönstret. Var god och avaktivera alla popup-blockerare.",
 DialogBlocked		: "Kunde Ej öppna dialogfönstret. Var god och avaktivera alla popup-blockerare.",
+VisitLinkBlocked	: "It was not possible to open a new window. Make sure all popup blockers are disabled.",	//MISSING
 
 // Dialogs
 DlgBtnOK			: "OK",
@@ -332,7 +337,7 @@
 DlgCellBtnSelect	: "Välj...",
 
 // Find and Replace Dialog
-DlgFindAndReplaceTitle	: "Find and Replace",	//MISSING
+DlgFindAndReplaceTitle	: "Sök och ersätt",
 
 // Find Dialog
 DlgFindTitle		: "Sök",
@@ -443,7 +448,7 @@
 // Bulleted List Dialog
 BulletedListProp	: "Egenskaper för punktlista",
 NumberedListProp	: "Egenskaper för numrerad lista",
-DlgLstStart			: "Start",	//MISSING
+DlgLstStart			: "Start",
 DlgLstType			: "Typ",
 DlgLstTypeCircle	: "Cirkel",
 DlgLstTypeDisc		: "Punkt",
@@ -511,5 +516,11 @@
 DlgAboutBrowserInfoTab	: "Webläsare",
 DlgAboutLicenseTab	: "Licens",
 DlgAboutVersion		: "version",
-DlgAboutInfo		: "För mer information se"
+DlgAboutInfo		: "För mer information se",
+
+// Div Dialog
+DlgDivGeneralTab	: "General",	//MISSING
+DlgDivAdvancedTab	: "Advanced",	//MISSING
+DlgDivStyle		: "Style",	//MISSING
+DlgDivInlineStyle	: "Inline Style"	//MISSING
 };

Modified: pal-wcm/trunk/src/main/webapp/fckeditor/editor/lang/th.js
===================================================================
--- pal-wcm/trunk/src/main/webapp/fckeditor/editor/lang/th.js	2008-09-03 08:05:44 UTC (rev 1112)
+++ pal-wcm/trunk/src/main/webapp/fckeditor/editor/lang/th.js	2008-09-04 02:44:24 UTC (rev 1113)
@@ -44,6 +44,7 @@
 InsertLinkLbl		: "ลิงค์เชื่อมโยงเว็บ อีเมล์ รูปภาพ หรือไฟล์อื่นๆ",
 InsertLink			: "แทรก/แก้ไข ลิงค์",
 RemoveLink			: "ลบ ลิงค์",
+VisitLink			: "Open Link",	//MISSING
 Anchor				: "แทรก/แก้ไข Anchor",
 AnchorDelete		: "Remove Anchor",	//MISSING
 InsertImageLbl		: "รูปภาพ",
@@ -72,6 +73,9 @@
 DecreaseIndent		: "ลดระยะย่อหน้า",
 IncreaseIndent		: "เพิ่มระยะย่อหน้า",
 Blockquote			: "Blockquote",	//MISSING
+CreateDiv			: "Create Div Container",	//MISSING
+EditDiv				: "Edit Div Container",	//MISSING
+DeleteDiv			: "Remove Div Container",	//MISSING
 Undo				: "ยกเลิกคำสั่ง",
 Redo				: "ทำซ้ำคำสั่ง",
 NumberedListLbl		: "ลำดับรายการแบบตัวเลข",
@@ -157,6 +161,7 @@
 NoActiveX			: "โปรแกรมท่องอินเตอร์เน็ตของท่านไม่อนุญาติให้อีดิตเตอร์ทำงาน \"Run ActiveX controls and plug-ins\". หากไม่อนุญาติให้ใช้งาน ActiveX controls ท่านจะไม่สามารถใช้งานได้อย่างเต็มประสิทธิภาพ.",
 BrowseServerBlocked : "เปิดหน้าต่างป๊อบอัพเพื่อทำงานต่อไม่ได้ กรุณาปิดเครื่องมือป้องกันป๊อบอัพในโปรแกรมท่องอินเตอร์เน็ตของท่านด้วย",
 DialogBlocked		: "เปิดหน้าต่างป๊อบอัพเพื่อทำงานต่อไม่ได้ กรุณาปิดเครื่องมือป้องกันป๊อบอัพในโปรแกรมท่องอินเตอร์เน็ตของท่านด้วย",
+VisitLinkBlocked	: "It was not possible to open a new window. Make sure all popup blockers are disabled.",	//MISSING
 
 // Dialogs
 DlgBtnOK			: "ตกลง",
@@ -511,5 +516,11 @@
 DlgAboutBrowserInfoTab	: "โปรแกรมท่องเว็บที่ท่านใช้",
 DlgAboutLicenseTab	: "ลิขสิทธิ์",
 DlgAboutVersion		: "รุ่น",
-DlgAboutInfo		: "For further information go to"	//MISSING
+DlgAboutInfo		: "For further information go to",	//MISSING
+
+// Div Dialog
+DlgDivGeneralTab	: "General",	//MISSING
+DlgDivAdvancedTab	: "Advanced",	//MISSING
+DlgDivStyle		: "Style",	//MISSING
+DlgDivInlineStyle	: "Inline Style"	//MISSING
 };

Modified: pal-wcm/trunk/src/main/webapp/fckeditor/editor/lang/tr.js
===================================================================
--- pal-wcm/trunk/src/main/webapp/fckeditor/editor/lang/tr.js	2008-09-03 08:05:44 UTC (rev 1112)
+++ pal-wcm/trunk/src/main/webapp/fckeditor/editor/lang/tr.js	2008-09-04 02:44:24 UTC (rev 1113)
@@ -44,6 +44,7 @@
 InsertLinkLbl		: "Köprü",
 InsertLink			: "Köprü Ekle/Düzenle",
 RemoveLink			: "Köprü Kaldır",
+VisitLink			: "Open Link",	//MISSING
 Anchor				: "Çapa Ekle/Düzenle",
 AnchorDelete		: "Remove Anchor",	//MISSING
 InsertImageLbl		: "Resim",
@@ -72,6 +73,9 @@
 DecreaseIndent		: "Sekme Azalt",
 IncreaseIndent		: "Sekme Arttır",
 Blockquote			: "Blockquote",	//MISSING
+CreateDiv			: "Create Div Container",	//MISSING
+EditDiv				: "Edit Div Container",	//MISSING
+DeleteDiv			: "Remove Div Container",	//MISSING
 Undo				: "Geri Al",
 Redo				: "Tekrarla",
 NumberedListLbl		: "Numaralı Liste",
@@ -157,6 +161,7 @@
 NoActiveX			: "Kullandığınız tarayıcının güvenlik ayarları bazı özelliklerin kullanılmasını engelliyor. Bu özelliklerin çalışması için \"Run ActiveX controls and plug-ins (Activex ve eklentileri çalıştır)\" seçeneğinin aktif yapılması gerekiyor. Kullanılamayan eklentiler ve hatalar konusunda daha fazla bilgi sahibi olun.",
 BrowseServerBlocked : "Kaynak tarayıcısı açılamadı. Tüm \"popup blocker\" programlarının devre dışı olduğundan emin olun. (Yahoo toolbar, Msn toolbar, Google toolbar gibi)",
 DialogBlocked		: "Diyalog açmak mümkün olmadı. Tüm \"Popup Blocker\" programlarının devre dışı olduğundan emin olun.",
+VisitLinkBlocked	: "It was not possible to open a new window. Make sure all popup blockers are disabled.",	//MISSING
 
 // Dialogs
 DlgBtnOK			: "Tamam",
@@ -511,5 +516,11 @@
 DlgAboutBrowserInfoTab	: "Gezgin Bilgisi",
 DlgAboutLicenseTab	: "Lisans",
 DlgAboutVersion		: "sürüm",
-DlgAboutInfo		: "Daha fazla bilgi için:"
+DlgAboutInfo		: "Daha fazla bilgi için:",
+
+// Div Dialog
+DlgDivGeneralTab	: "General",	//MISSING
+DlgDivAdvancedTab	: "Advanced",	//MISSING
+DlgDivStyle		: "Style",	//MISSING
+DlgDivInlineStyle	: "Inline Style"	//MISSING
 };

Modified: pal-wcm/trunk/src/main/webapp/fckeditor/editor/lang/uk.js
===================================================================
--- pal-wcm/trunk/src/main/webapp/fckeditor/editor/lang/uk.js	2008-09-03 08:05:44 UTC (rev 1112)
+++ pal-wcm/trunk/src/main/webapp/fckeditor/editor/lang/uk.js	2008-09-04 02:44:24 UTC (rev 1113)
@@ -44,6 +44,7 @@
 InsertLinkLbl		: "Посилання",
 InsertLink			: "Вставити/Редагувати посилання",
 RemoveLink			: "Знищити посилання",
+VisitLink			: "Open Link",	//MISSING
 Anchor				: "Вставити/Редагувати якір",
 AnchorDelete		: "Remove Anchor",	//MISSING
 InsertImageLbl		: "Зображення",
@@ -72,6 +73,9 @@
 DecreaseIndent		: "Зменшити відступ",
 IncreaseIndent		: "Збільшити відступ",
 Blockquote			: "Blockquote",	//MISSING
+CreateDiv			: "Create Div Container",	//MISSING
+EditDiv				: "Edit Div Container",	//MISSING
+DeleteDiv			: "Remove Div Container",	//MISSING
 Undo				: "Повернути",
 Redo				: "Повторити",
 NumberedListLbl		: "Нумерований список",
@@ -157,6 +161,7 @@
 NoActiveX			: "Настройки безпеки вашого браузера можуть обмежувати деякі властивості редактора. Ви повинні включити опцію \"Запускати елементи управління ACTIVEX і плугіни\". Ви можете бачити помилки і помічати відсутність можливостей.",
 BrowseServerBlocked : "Ресурси браузера не можуть бути відкриті. Перевірте що блокування спливаючих вікон вимкнені.",
 DialogBlocked		: "Не можливо відкрити вікно діалогу. Перевірте що блокування спливаючих вікон вимкнені.",
+VisitLinkBlocked	: "It was not possible to open a new window. Make sure all popup blockers are disabled.",	//MISSING
 
 // Dialogs
 DlgBtnOK			: "ОК",
@@ -511,5 +516,11 @@
 DlgAboutBrowserInfoTab	: "Інформація браузера",
 DlgAboutLicenseTab	: "Ліцензія",
 DlgAboutVersion		: "Версія",
-DlgAboutInfo		: "Додаткову інформацію дивіться на "
+DlgAboutInfo		: "Додаткову інформацію дивіться на ",
+
+// Div Dialog
+DlgDivGeneralTab	: "General",	//MISSING
+DlgDivAdvancedTab	: "Advanced",	//MISSING
+DlgDivStyle		: "Style",	//MISSING
+DlgDivInlineStyle	: "Inline Style"	//MISSING
 };

Modified: pal-wcm/trunk/src/main/webapp/fckeditor/editor/lang/vi.js
===================================================================
--- pal-wcm/trunk/src/main/webapp/fckeditor/editor/lang/vi.js	2008-09-03 08:05:44 UTC (rev 1112)
+++ pal-wcm/trunk/src/main/webapp/fckeditor/editor/lang/vi.js	2008-09-04 02:44:24 UTC (rev 1113)
@@ -44,8 +44,9 @@
 InsertLinkLbl		: "Liên kết",
 InsertLink			: "Chèn/Sửa Liên kết",
 RemoveLink			: "Xoá Liên kết",
+VisitLink			: "Mở Liên Kết",
 Anchor				: "Chèn/Sửa Neo",
-AnchorDelete		: "Remove Anchor",	//MISSING
+AnchorDelete		: "Gỡ bỏ Neo",
 InsertImageLbl		: "Hình ảnh",
 InsertImage			: "Chèn/Sửa Hình ảnh",
 InsertFlashLbl		: "Flash",
@@ -71,7 +72,10 @@
 BlockJustify		: "Canh đều",
 DecreaseIndent		: "Dịch ra ngoài",
 IncreaseIndent		: "Dịch vào trong",
-Blockquote			: "Blockquote",	//MISSING
+Blockquote			: "Khối Trích dẫn",
+CreateDiv			: "Tạo Div Container",
+EditDiv				: "Chỉnh sửa Div Container",
+DeleteDiv			: "Gỡ bỏ Div Container",
 Undo				: "Khôi phục thao tác",
 Redo				: "Làm lại thao tác",
 NumberedListLbl		: "Danh sách có thứ tự",
@@ -105,27 +109,27 @@
 ImageButton		: "Nút hình ảnh",
 
 FitWindow		: "Mở rộng tối đa kích thước trình biên tập",
-ShowBlocks		: "Show Blocks",	//MISSING
+ShowBlocks		: "Hiển thị các Khối",
 
 // Context Menu
 EditLink			: "Sửa Liên kết",
 CellCM				: "Ô",
 RowCM				: "Hàng",
 ColumnCM			: "Cột",
-InsertRowAfter		: "Insert Row After",	//MISSING
-InsertRowBefore		: "Insert Row Before",	//MISSING
+InsertRowAfter		: "Chèn Hàng Phía sau",
+InsertRowBefore		: "Chèn Hàng Phía trước",
 DeleteRows			: "Xoá Hàng",
-InsertColumnAfter	: "Insert Column After",	//MISSING
-InsertColumnBefore	: "Insert Column Before",	//MISSING
+InsertColumnAfter	: "Chèn Cột Phía sau",
+InsertColumnBefore	: "Chèn Cột Phía trước",
 DeleteColumns		: "Xoá Cột",
-InsertCellAfter		: "Insert Cell After",	//MISSING
-InsertCellBefore	: "Insert Cell Before",	//MISSING
+InsertCellAfter		: "Chèn Ô Phía sau",
+InsertCellBefore	: "Chèn Ô Phía trước",
 DeleteCells			: "Xoá Ô",
-MergeCells			: "Trộn Ô",
-MergeRight			: "Merge Right",	//MISSING
-MergeDown			: "Merge Down",	//MISSING
-HorizontalSplitCell	: "Split Cell Horizontally",	//MISSING
-VerticalSplitCell	: "Split Cell Vertically",	//MISSING
+MergeCells			: "Kết hợp Ô",
+MergeRight			: "Kết hợp Sang phải",
+MergeDown			: "Kết hợp Xuống dưới",
+HorizontalSplitCell	: "Tách ngang Ô",
+VerticalSplitCell	: "Tách dọc Ô",
 TableDelete			: "Xóa Bảng",
 CellProperties		: "Thuộc tính Ô",
 TableProperties		: "Thuộc tính Bảng",
@@ -154,9 +158,10 @@
 UnknownCommand		: "Không rõ lệnh \"%1\"",
 NotImplemented		: "Lệnh không được thực hiện",
 UnknownToolbarSet	: "Thanh công cụ \"%1\" không tồn tại",
-NoActiveX			: "Các thiết lập bảo mật của trình duyệt có thể giới hạn một số chức năng của trình biên tập. Bạn phải bật tùy chọn \"Run ActiveX controls and plug-ins\". Bạn có thể gặp một số lỗi và thấy thiếu đi một số chức năng.",
+NoActiveX			: "Các thiết lập bảo mật của trình duyệt có thể giới hạn một số chức năng của trình biên tập. Bạn phải bật tùy chọn \"Run ActiveX controls and plug-ins\". Bạn có thể gặp một số lỗi và thấy thiếu một số chức năng.",
 BrowseServerBlocked : "Không thể mở được bộ duyệt tài nguyên. Hãy đảm bảo chức năng chặn popup đã bị vô hiệu hóa.",
 DialogBlocked		: "Không thể mở được cửa sổ hộp thoại. Hãy đảm bảo chức năng chặn popup đã bị vô hiệu hóa.",
+VisitLinkBlocked	: "Không thể mở được cửa sổ trình duyệt mới. Hãy đảm bảo chức năng chặn popup đã bị vô hiệu hóa.",
 
 // Dialogs
 DlgBtnOK			: "Đồng ý",
@@ -194,7 +199,7 @@
 DlgImgAlt			: "Chú thích Hình ảnh",
 DlgImgWidth			: "Rộng",
 DlgImgHeight		: "Cao",
-DlgImgLockRatio		: "Giữ tỷ lệ",
+DlgImgLockRatio		: "Giữ nguyên tỷ lệ",
 DlgBtnResetSize		: "Kích thước gốc",
 DlgImgBorder		: "Đường viền",
 DlgImgHSpace		: "HSpace",
@@ -203,7 +208,7 @@
 DlgImgAlignLeft		: "Trái",
 DlgImgAlignAbsBottom: "Dưới tuyệt đối",
 DlgImgAlignAbsMiddle: "Giữa tuyệt đối",
-DlgImgAlignBaseline	: "Baseline",
+DlgImgAlignBaseline	: "Đường cơ sở",
 DlgImgAlignBottom	: "Dưới",
 DlgImgAlignMiddle	: "Giữa",
 DlgImgAlignRight	: "Phải",
@@ -324,7 +329,7 @@
 DlgCellVerAlignTop	: "Trên",
 DlgCellVerAlignMiddle	: "Giữa",
 DlgCellVerAlignBottom	: "Dưới",
-DlgCellVerAlignBaseline	: "Baseline",
+DlgCellVerAlignBaseline	: "Đường cơ sở",
 DlgCellRowSpan		: "Nối Hàng",
 DlgCellCollSpan		: "Nối Cột",
 DlgCellBackColor	: "Màu nền",
@@ -332,7 +337,7 @@
 DlgCellBtnSelect	: "Chọn...",
 
 // Find and Replace Dialog
-DlgFindAndReplaceTitle	: "Find and Replace",	//MISSING
+DlgFindAndReplaceTitle	: "Tìm kiếm và Thay Thế",
 
 // Find Dialog
 DlgFindTitle		: "Tìm kiếm",
@@ -370,7 +375,7 @@
 // Anchor Dialog
 DlgAnchorTitle		: "Thuộc tính Neo",
 DlgAnchorName		: "Tên của Neo",
-DlgAnchorErrorName	: "Hãy đưa vào tên của Neo",
+DlgAnchorErrorName	: "Hãy nhập vào tên của Neo",
 
 // Speller Pages Dialog
 DlgSpellNotInDic		: "Không có trong từ điển",
@@ -511,5 +516,11 @@
 DlgAboutBrowserInfoTab	: "Thông tin trình duyệt",
 DlgAboutLicenseTab	: "Giấy phép",
 DlgAboutVersion		: "phiên bản",
-DlgAboutInfo		: "Để biết thêm thông tin, hãy truy cập"
+DlgAboutInfo		: "Để biết thêm thông tin, hãy truy cập",
+
+// Div Dialog
+DlgDivGeneralTab	: "Chung",
+DlgDivAdvancedTab	: "Nâng cao",
+DlgDivStyle		: "Kiểu Style",
+DlgDivInlineStyle	: "Kiểu Style Trực tiếp"
 };

Modified: pal-wcm/trunk/src/main/webapp/fckeditor/editor/lang/zh-cn.js
===================================================================
--- pal-wcm/trunk/src/main/webapp/fckeditor/editor/lang/zh-cn.js	2008-09-03 08:05:44 UTC (rev 1112)
+++ pal-wcm/trunk/src/main/webapp/fckeditor/editor/lang/zh-cn.js	2008-09-04 02:44:24 UTC (rev 1113)
@@ -44,6 +44,7 @@
 InsertLinkLbl		: "超链接",
 InsertLink			: "插入/编辑超链接",
 RemoveLink			: "取消超链接",
+VisitLink			: "打开超链接",
 Anchor				: "插入/编辑锚点链接",
 AnchorDelete		: "清除锚点链接",
 InsertImageLbl		: "图象",
@@ -71,7 +72,10 @@
 BlockJustify		: "两端对齐",
 DecreaseIndent		: "减少缩进量",
 IncreaseIndent		: "增加缩进量",
-Blockquote			: "引用文字",
+Blockquote			: "块引用",
+CreateDiv			: "新增 Div 标籤",
+EditDiv				: "更改 Div 标籤",
+DeleteDiv			: "删除 Div 标籤",
 Undo				: "撤消",
 Redo				: "重做",
 NumberedListLbl		: "编号列表",
@@ -157,6 +161,7 @@
 NoActiveX			: "浏览器安全设置限制了本编辑器的某些功能。您必须启用安全设置中的“运行 ActiveX 控件和插件”,否则将出现某些错误并缺少功能。",
 BrowseServerBlocked : "无法打开资源浏览器,请确认是否启用了禁止弹出窗口。",
 DialogBlocked		: "无法打开对话框窗口,请确认是否启用了禁止弹出窗口或网页对话框(IE)。",
+VisitLinkBlocked	: "无法打开新窗口,请确认是否启用了禁止弹出窗口或网页对话框(IE)。",
 
 // Dialogs
 DlgBtnOK			: "确定",
@@ -511,5 +516,11 @@
 DlgAboutBrowserInfoTab	: "浏览器信息",
 DlgAboutLicenseTab	: "许可证",
 DlgAboutVersion		: "版本",
-DlgAboutInfo		: "要获得更多信息请访问 "
+DlgAboutInfo		: "要获得更多信息请访问 ",
+
+// Div Dialog
+DlgDivGeneralTab	: "常规",
+DlgDivAdvancedTab	: "高级",
+DlgDivStyle		: "样式",
+DlgDivInlineStyle	: "CSS 样式"
 };

Modified: pal-wcm/trunk/src/main/webapp/fckeditor/editor/lang/zh.js
===================================================================
--- pal-wcm/trunk/src/main/webapp/fckeditor/editor/lang/zh.js	2008-09-03 08:05:44 UTC (rev 1112)
+++ pal-wcm/trunk/src/main/webapp/fckeditor/editor/lang/zh.js	2008-09-04 02:44:24 UTC (rev 1113)
@@ -44,6 +44,7 @@
 InsertLinkLbl		: "超連結",
 InsertLink			: "插入/編輯超連結",
 RemoveLink			: "移除超連結",
+VisitLink			: "開啟超連結",
 Anchor				: "插入/編輯錨點",
 AnchorDelete		: "移除錨點",
 InsertImageLbl		: "影像",
@@ -71,7 +72,10 @@
 BlockJustify		: "左右對齊",
 DecreaseIndent		: "減少縮排",
 IncreaseIndent		: "增加縮排",
-Blockquote			: "块引用",
+Blockquote			: "引用文字",
+CreateDiv			: "新增 Div 標籤",
+EditDiv				: "變更 Div 標籤",
+DeleteDiv			: "移除 Div 標籤",
 Undo				: "復原",
 Redo				: "重複",
 NumberedListLbl		: "編號清單",
@@ -157,6 +161,7 @@
 NoActiveX			: "瀏覽器的安全性設定限制了本編輯器的某些功能。您必須啟用安全性設定中的「執行ActiveX控制項與外掛程式」項目,否則本編輯器將會出現錯誤並缺少某些功能",
 BrowseServerBlocked : "無法開啟資源瀏覽器,請確定所有快顯視窗封鎖程式是否關閉",
 DialogBlocked		: "無法開啟對話視窗,請確定所有快顯視窗封鎖程式是否關閉",
+VisitLinkBlocked	: "無法開啟新視窗,請確定所有快顯視窗封鎖程式是否關閉",
 
 // Dialogs
 DlgBtnOK			: "確定",
@@ -511,5 +516,11 @@
 DlgAboutBrowserInfoTab	: "瀏覽器資訊",
 DlgAboutLicenseTab	: "許可證",
 DlgAboutVersion		: "版本",
-DlgAboutInfo		: "想獲得更多資訊請至 "
+DlgAboutInfo		: "想獲得更多資訊請至 ",
+
+// Div Dialog
+DlgDivGeneralTab	: "一般",
+DlgDivAdvancedTab	: "進階",
+DlgDivStyle		: "樣式",
+DlgDivInlineStyle	: "CSS 樣式"
 };

Deleted: pal-wcm/trunk/src/main/webapp/fckeditor/editor/plugins/bbcode/_sample/sample.config.js
===================================================================
--- pal-wcm/trunk/src/main/webapp/fckeditor/editor/plugins/bbcode/_sample/sample.config.js	2008-09-03 08:05:44 UTC (rev 1112)
+++ pal-wcm/trunk/src/main/webapp/fckeditor/editor/plugins/bbcode/_sample/sample.config.js	2008-09-04 02:44:24 UTC (rev 1113)
@@ -1,26 +0,0 @@
-/*
- * FCKeditor - The text editor for Internet - http://www.fckeditor.net
- * Copyright (C) 2003-2008 Frederico Caldeira Knabben
- *
- * == BEGIN LICENSE ==
- *
- * Licensed under the terms of any of the following licenses at your
- * choice:
- *
- *  - GNU General Public License Version 2 or later (the "GPL")
- *    http://www.gnu.org/licenses/gpl.html
- *
- *  - GNU Lesser General Public License Version 2.1 or later (the "LGPL")
- *    http://www.gnu.org/licenses/lgpl.html
- *
- *  - Mozilla Public License Version 1.1 or later (the "MPL")
- *    http://www.mozilla.org/MPL/MPL-1.1.html
- *
- * == END LICENSE ==
- *
- * Sample custom configuration settings used by the BBCode plugin. It simply
- * loads the plugin. All the rest is done by the plugin itself.
- */
-
-// Add the BBCode plugin.
-FCKConfig.Plugins.Add( 'bbcode' ) ;

Deleted: pal-wcm/trunk/src/main/webapp/fckeditor/editor/plugins/bbcode/_sample/sample.html
===================================================================
--- pal-wcm/trunk/src/main/webapp/fckeditor/editor/plugins/bbcode/_sample/sample.html	2008-09-03 08:05:44 UTC (rev 1112)
+++ pal-wcm/trunk/src/main/webapp/fckeditor/editor/plugins/bbcode/_sample/sample.html	2008-09-04 02:44:24 UTC (rev 1113)
@@ -1,67 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<!--
- * FCKeditor - The text editor for Internet - http://www.fckeditor.net
- * Copyright (C) 2003-2008 Frederico Caldeira Knabben
- *
- * == BEGIN LICENSE ==
- *
- * Licensed under the terms of any of the following licenses at your
- * choice:
- *
- *  - GNU General Public License Version 2 or later (the "GPL")
- *    http://www.gnu.org/licenses/gpl.html
- *
- *  - GNU Lesser General Public License Version 2.1 or later (the "LGPL")
- *    http://www.gnu.org/licenses/lgpl.html
- *
- *  - Mozilla Public License Version 1.1 or later (the "MPL")
- *    http://www.mozilla.org/MPL/MPL-1.1.html
- *
- * == END LICENSE ==
- *
- * Sample page.
--->
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-	<title>FCKeditor - BBCode Sample</title>
-	<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
-	<meta name="robots" content="noindex, nofollow" />
-	<link href="../../../../_samples/sample.css" rel="stylesheet" type="text/css" />
-	<script type="text/javascript" src="../../../../fckeditor.js"></script>
-</head>
-<body>
-	<h1>
-		FCKeditor - BBCode Sample</h1>
-	<p>
-		This is a sample of custom Data Processor implementation for (very) basic BBCode
-		syntax. Only <strong>[b]</strong>, <strong>[i]</strong>, <strong>[u]</strong> and
-		<strong>[url]</strong> may be used. It may be extended, but this is out of this
-		sample purpose.
-	</p>
-	<p>
-		Note that the input and output of the editor is not HTML, but BBCode
-	</p>
-	<hr />
-	<form action="../../../../_samples/html/sampleposteddata.asp" method="post" target="_blank">
-		<script type="text/javascript">
-<!--
-// Automatically calculates the editor base path based on the _samples directory.
-// This is usefull only for these samples. A real application should use something like this:
-// oFCKeditor.BasePath = '/fckeditor/' ;	// '/fckeditor/' is the default value.
-var sBasePath = document.location.pathname.substring(0,document.location.pathname.lastIndexOf('editor')) ;
-
-var oFCKeditor = new FCKeditor( 'FCKeditor1' ) ;
-oFCKeditor.BasePath	= sBasePath ;
-
-// Set the custom configurations file path (in this way the original file is mantained).
-oFCKeditor.Config['CustomConfigurationsPath'] = sBasePath + 'editor/plugins/bbcode/_sample/sample.config.js' ;
-
-oFCKeditor.Value = 'This is some [b]sample text[/b]. You are using [url=http://www.fckeditor.net/]FCKeditor[/url].' ;
-oFCKeditor.Create() ;
-//-->
-		</script>
-		<br />
-		<input type="submit" value="Submit" />
-	</form>
-</body>
-</html>

Modified: pal-wcm/trunk/src/main/webapp/fckeditor/editor/plugins/dragresizetable/fckplugin.js
===================================================================
--- pal-wcm/trunk/src/main/webapp/fckeditor/editor/plugins/dragresizetable/fckplugin.js	2008-09-03 08:05:44 UTC (rev 1112)
+++ pal-wcm/trunk/src/main/webapp/fckeditor/editor/plugins/dragresizetable/fckplugin.js	2008-09-04 02:44:24 UTC (rev 1113)
@@ -88,8 +88,6 @@
 	},
 	"_ResizeBarMouseDownListener" : function( evt )
 	{
-		if ( ! evt )
-			evt = window.event ;
 		if ( FCKDragTableHandler._LeftCell )
 			FCKDragTableHandler._MouseMoveMode = 1 ;
 		if ( FCKBrowserInfo.IsIE )
@@ -121,11 +119,14 @@
 		FCKDragTableHandler._MinimumX = minX + offset.x ;
 		FCKDragTableHandler._MaximumX = maxX + offset.x ;
 		FCKDragTableHandler._LastX = null ;
+
+		if (evt.preventDefault)
+			evt.preventDefault();
+		else
+			evt.returnValue = false;
 	},
 	"_ResizeBarMouseUpListener" : function( evt )
 	{
-		if ( ! evt )
-			evt = window.event ;
 		FCKDragTableHandler._MouseMoveMode = 0 ;
 		FCKDragTableHandler._HideResizeBar() ;
 
@@ -218,8 +219,6 @@
 	},
 	"_ResizeBarMouseMoveListener" : function( evt )
 	{
-		if ( ! evt )
-			evt = window.event ;
 		if ( FCKDragTableHandler._MouseMoveMode == 0 )
 			return FCKDragTableHandler._MouseFindHandler( FCK, evt ) ;
 		else
@@ -421,8 +420,6 @@
 			// Disable drag and drop, and selection for the filler image.
 			var disabledListener = function( evt )
 			{
-				if ( ! evt )
-					evt = window.event ;
 				if ( evt.preventDefault )
 					evt.preventDefault() ;
 				else

Deleted: pal-wcm/trunk/src/main/webapp/fckeditor/editor/skins/_fckviewstrips.html
===================================================================
--- pal-wcm/trunk/src/main/webapp/fckeditor/editor/skins/_fckviewstrips.html	2008-09-03 08:05:44 UTC (rev 1112)
+++ pal-wcm/trunk/src/main/webapp/fckeditor/editor/skins/_fckviewstrips.html	2008-09-04 02:44:24 UTC (rev 1113)
@@ -1,121 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
-<!--
- * FCKeditor - The text editor for Internet - http://www.fckeditor.net
- * Copyright (C) 2003-2008 Frederico Caldeira Knabben
- *
- * == BEGIN LICENSE ==
- *
- * Licensed under the terms of any of the following licenses at your
- * choice:
- *
- *  - GNU General Public License Version 2 or later (the "GPL")
- *    http://www.gnu.org/licenses/gpl.html
- *
- *  - GNU Lesser General Public License Version 2.1 or later (the "LGPL")
- *    http://www.gnu.org/licenses/lgpl.html
- *
- *  - Mozilla Public License Version 1.1 or later (the "MPL")
- *    http://www.mozilla.org/MPL/MPL-1.1.html
- *
- * == END LICENSE ==
- *
- * Useful page that enumerates all icons in the skins strips.
--->
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-	<title>FCKeditor - View Icons Strips</title>
-	<style type="text/css">
-		.TB_Button_Image
-		{
-			overflow: hidden;
-			width: 16px;
-			height: 16px;
-			margin: 3px;
-			background-repeat: no-repeat;
-		}
-
-		.TB_Button_Image img
-		{
-			position: relative;
-		}
-	</style>
-	<script type="text/javascript">
-
-window.onload = function()
-{
-	var eImg1 = document.createElement( 'img' ) ;
-	eImg1.onload = Img_OnLoad ;
-	eImg1.src = 'default/fck_strip.gif' ;
-
-	var eImg2 = document.createElement( 'img' ) ;
-	eImg2.onload = Img_OnLoad ;
-	eImg2.src = 'office2003/fck_strip.gif' ;
-
-	var eImg3 = document.createElement( 'img' ) ;
-	eImg3.onload = Img_OnLoad ;
-	eImg3.src = 'silver/fck_strip.gif' ;
-}
-
-var iTotalStrips = 3 ;
-var iMaxHeight = 0 ;
-
-function Img_OnLoad()
-{
-	if ( iMaxHeight < this.height )
-		iMaxHeight = this.height ;
-
-	iTotalStrips-- ;
-
-	if ( iTotalStrips == 0 )
-		LoadIcons( iMaxHeight / 16 ) ;
-}
-
-function LoadIcons( total )
-{
-	var xIconsTable = document.getElementById( 'xIconsTable' ) ;
-
-	for ( var i = 0 ; i < total ; i++ )
-	{
-		var eRow = xIconsTable.insertRow(-1) ;
-
-		var eCell = eRow.insertCell(-1) ;
-		eCell.innerHTML = i + 1 ;
-
-		eCell = eRow.insertCell(-1) ;
-		eCell.align = 'center' ;
-		eCell.style.border = '#dcdcdc 1px solid' ;
-		eCell.innerHTML = '<div class="TB_Button_Image"><img src="default/fck_strip.gif" style="top:-' + ( i * 16 ) + 'px;"><\/div>' ;
-
-		eCell = eRow.insertCell(-1) ;
-		eCell.align = 'center' ;
-		eCell.style.border = '#dcdcdc 1px solid' ;
-		eCell.innerHTML = '<div class="TB_Button_Image"><img src="office2003/fck_strip.gif" style="top:-' + ( i * 16 ) + 'px;"><\/div>' ;
-
-		eCell = eRow.insertCell(-1) ;
-		eCell.align = 'center' ;
-		eCell.style.border = '#dcdcdc 1px solid' ;
-		eCell.innerHTML = '<div class="TB_Button_Image"><img src="silver/fck_strip.gif" style="top:-' + ( i * 16 ) + 'px;"><\/div>' ;
-	}
-}
-
-	</script>
-</head>
-<body>
-	<table id="xIconsTable">
-		<tr>
-			<td rowspan="2">
-				Index</td>
-			<td align="center" colspan="3">
-				Skins</td>
-		</tr>
-		<tr>
-			<td width="80" align="center">
-				default</td>
-			<td width="80" align="center">
-				office2003</td>
-			<td width="80" align="center">
-				silver</td>
-		</tr>
-	</table>
-</body>
-</html>

Modified: pal-wcm/trunk/src/main/webapp/fckeditor/editor/skins/default/fck_strip.gif
===================================================================
(Binary files differ)

Modified: pal-wcm/trunk/src/main/webapp/fckeditor/editor/skins/office2003/fck_strip.gif
===================================================================
(Binary files differ)

Modified: pal-wcm/trunk/src/main/webapp/fckeditor/editor/skins/silver/fck_strip.gif
===================================================================
(Binary files differ)

Modified: pal-wcm/trunk/src/main/webapp/fckeditor/fckconfig.js
===================================================================
--- pal-wcm/trunk/src/main/webapp/fckeditor/fckconfig.js	2008-09-03 08:05:44 UTC (rev 1112)
+++ pal-wcm/trunk/src/main/webapp/fckeditor/fckconfig.js	2008-09-04 02:44:24 UTC (rev 1113)
@@ -21,7 +21,7 @@
  * Editor configuration settings.
  *
  * Follow this link for more information:
- * http://wiki.fckeditor.net/Developer%27s_Guide/Configuration/Configurations_Settings
+ * http://docs.fckeditor.net/FCKeditor_2.x/Developers_Guide/Configuration/Configuration_Options
  */
 
 FCKConfig.CustomConfigurationsPath = '' ;
@@ -76,6 +76,9 @@
 FCKConfig.FormatOutput		= true ;
 FCKConfig.FormatIndentator	= '    ' ;
 
+FCKConfig.EMailProtection = 'encode' ; // none | encode | function
+FCKConfig.EMailProtectionFunction = 'mt(NAME,DOMAIN,SUBJECT,BODY)' ;
+
 FCKConfig.StartupFocus	= false ;
 FCKConfig.ForcePasteAsPlainText	= false ;
 FCKConfig.AutoDetectPasteFromWord = true ;	// IE only.
@@ -87,7 +90,6 @@
 FCKConfig.ToolbarStartExpanded	= true ;
 FCKConfig.ToolbarCanCollapse	= true ;
 FCKConfig.IgnoreEmptyParagraphValue = true ;
-FCKConfig.PreserveSessionOnFileBrowser = false ;
 FCKConfig.FloatingPanelsZIndex = 10000 ;
 FCKConfig.HtmlEncodeOutput = false ;
 
@@ -103,7 +105,7 @@
 	['Form','Checkbox','Radio','TextField','Textarea','Select','Button','ImageButton','HiddenField'],
 	'/',
 	['Bold','Italic','Underline','StrikeThrough','-','Subscript','Superscript'],
-	['OrderedList','UnorderedList','-','Outdent','Indent','Blockquote'],
+	['OrderedList','UnorderedList','-','Outdent','Indent','Blockquote','CreateDiv'],
 	['JustifyLeft','JustifyCenter','JustifyRight','JustifyFull'],
 	['Link','Unlink','Anchor'],
 	['Image','Flash','Table','Rule','Smiley','SpecialChar','PageBreak'],
@@ -128,6 +130,7 @@
 	[ CTRL + 84 /*T*/, true ],
 	[ CTRL + 88 /*X*/, true ],
 	[ CTRL + 86 /*V*/, 'Paste' ],
+	[ CTRL + 45 /*INS*/, true ],
 	[ SHIFT + 45 /*INS*/, 'Paste' ],
 	[ CTRL + 88 /*X*/, 'Cut' ],
 	[ SHIFT + 46 /*DEL*/, 'Cut' ],
@@ -139,11 +142,13 @@
 	[ CTRL + 73 /*I*/, 'Italic' ],
 	[ CTRL + 85 /*U*/, 'Underline' ],
 	[ CTRL + SHIFT + 83 /*S*/, 'Save' ],
-	[ CTRL + ALT + 13 /*ENTER*/, 'FitWindow' ]
+	[ CTRL + ALT + 13 /*ENTER*/, 'FitWindow' ],
+	[ SHIFT + 32 /*SPACE*/, 'Nbsp' ]
 ] ;
 
-FCKConfig.ContextMenu = ['Generic','Link','Anchor','Image','Flash','Select','Textarea','Checkbox','Radio','TextField','HiddenField','ImageButton','Button','BulletedList','NumberedList','Table','Form'] ;
+FCKConfig.ContextMenu = ['Generic','Link','Anchor','Image','Flash','Select','Textarea','Checkbox','Radio','TextField','HiddenField','ImageButton','Button','BulletedList','NumberedList','Table','Form','DivContainer'] ;
 FCKConfig.BrowserContextMenuOnCtrl = false ;
+FCKConfig.BrowserContextMenu = false ;
 
 FCKConfig.EnableMoreFontColors = true ;
 FCKConfig.FontColors = '000000,993300,333300,003300,003366,000080,333399,333333,800000,FF6600,808000,808080,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' ;
@@ -278,37 +283,31 @@
 
 FCKConfig.LinkBrowser = true ;
 FCKConfig.LinkBrowserURL = FCKConfig.BasePath + 'filemanager/browser/default/browser.html?Connector=' + encodeURIComponent( FCKConfig.BasePath + 'filemanager/connectors/' + _FileBrowserLanguage + '/connector.' + _FileBrowserExtension ) ;
-//FCKConfig.LinkBrowserURL = FCKConfig.BasePath + 'filemanager/browser/default/browser.html?Type=Link&Connector=' + encodeURIComponent( FCKConfig.BasePath + '/fileconnector') ;
 FCKConfig.LinkBrowserWindowWidth	= FCKConfig.ScreenWidth * 0.7 ;		// 70%
 FCKConfig.LinkBrowserWindowHeight	= FCKConfig.ScreenHeight * 0.7 ;	// 70%
 
 FCKConfig.ImageBrowser = true ;
 FCKConfig.ImageBrowserURL = FCKConfig.BasePath + 'filemanager/browser/default/browser.html?Type=Image&Connector=' + encodeURIComponent( FCKConfig.BasePath + 'filemanager/connectors/' + _FileBrowserLanguage + '/connector.' + _FileBrowserExtension ) ;
-//FCKConfig.ImageBrowserURL = FCKConfig.BasePath + 'filemanager/browser/default/browser.html?Type=Image&Connector=' + encodeURIComponent( FCKConfig.BasePath + '/fileconnector') ;
 FCKConfig.ImageBrowserWindowWidth  = FCKConfig.ScreenWidth * 0.7 ;	// 70% ;
 FCKConfig.ImageBrowserWindowHeight = FCKConfig.ScreenHeight * 0.7 ;	// 70% ;
 
 FCKConfig.FlashBrowser = true ;
 FCKConfig.FlashBrowserURL = FCKConfig.BasePath + 'filemanager/browser/default/browser.html?Type=Flash&Connector=' + encodeURIComponent( FCKConfig.BasePath + 'filemanager/connectors/' + _FileBrowserLanguage + '/connector.' + _FileBrowserExtension ) ;
-//FCKConfig.FlashBrowserURL = FCKConfig.BasePath + 'filemanager/browser/default/browser.html?Type=Flash&Connector=' + encodeURIComponent( FCKConfig.BasePath + '/fileconnector') ;
 FCKConfig.FlashBrowserWindowWidth  = FCKConfig.ScreenWidth * 0.7 ;	//70% ;
 FCKConfig.FlashBrowserWindowHeight = FCKConfig.ScreenHeight * 0.7 ;	//70% ;
 
 FCKConfig.LinkUpload = true ;
 FCKConfig.LinkUploadURL = FCKConfig.BasePath + 'filemanager/connectors/' + _QuickUploadLanguage + '/upload.' + _QuickUploadExtension ;
-//FCKConfig.LinkUploadURL = FCKConfig.BasePath + 'filemanager/browser/default/browser.html?Type=Link' ;
 FCKConfig.LinkUploadAllowedExtensions	= ".(7z|aiff|asf|avi|bmp|csv|doc|fla|flv|gif|gz|gzip|jpeg|jpg|mid|mov|mp3|mp4|mpc|mpeg|mpg|ods|odt|pdf|png|ppt|pxd|qt|ram|rar|rm|rmi|rmvb|rtf|sdc|sitd|swf|sxc|sxw|tar|tgz|tif|tiff|txt|vsd|wav|wma|wmv|xls|xml|zip)$" ;			// empty for all
 FCKConfig.LinkUploadDeniedExtensions	= "" ;	// empty for no one
 
 FCKConfig.ImageUpload = true ;
 FCKConfig.ImageUploadURL = FCKConfig.BasePath + 'filemanager/connectors/' + _QuickUploadLanguage + '/upload.' + _QuickUploadExtension + '?Type=Image' ;
-//FCKConfig.ImageUploadURL = FCKConfig.BasePath + 'filemanager/browser/default/browser.html?Type=Image' ;
 FCKConfig.ImageUploadAllowedExtensions	= ".(jpg|gif|jpeg|png|bmp)$" ;		// empty for all
 FCKConfig.ImageUploadDeniedExtensions	= "" ;							// empty for no one
 
 FCKConfig.FlashUpload = true ;
 FCKConfig.FlashUploadURL = FCKConfig.BasePath + 'filemanager/connectors/' + _QuickUploadLanguage + '/upload.' + _QuickUploadExtension + '?Type=Flash' ;
-//FCKConfig.FlashUploadURL = FCKConfig.BasePath + 'filemanager/browser/default/browser.html?Type=Flash' ;
 FCKConfig.FlashUploadAllowedExtensions	= ".(swf|flv)$" ;		// empty for all
 FCKConfig.FlashUploadDeniedExtensions	= "" ;					// empty for no one
 
@@ -320,3 +319,7 @@
 
 FCKConfig.BackgroundBlockerColor = '#ffffff' ;
 FCKConfig.BackgroundBlockerOpacity = 0.50 ;
+
+FCKConfig.MsWebBrowserControlCompat = false ;
+
+FCKConfig.PreventSubmitHandler = false ;

Modified: pal-wcm/trunk/src/main/webapp/fckeditor/fckeditor.cfc
===================================================================
--- pal-wcm/trunk/src/main/webapp/fckeditor/fckeditor.cfc	2008-09-03 08:05:44 UTC (rev 1112)
+++ pal-wcm/trunk/src/main/webapp/fckeditor/fckeditor.cfc	2008-09-04 02:44:24 UTC (rev 1113)
@@ -190,7 +190,7 @@
 	lConfigKeys = lConfigKeys & ",FillEmptyBlocks,FormatSource,FormatOutput,FormatIndentator";
 	lConfigKeys = lConfigKeys & ",StartupFocus,ForcePasteAsPlainText,AutoDetectPasteFromWord,ForceSimpleAmpersand";
 	lConfigKeys = lConfigKeys & ",TabSpaces,ShowBorders,SourcePopup,ToolbarStartExpanded,ToolbarCanCollapse";
-	lConfigKeys = lConfigKeys & ",IgnoreEmptyParagraphValue,PreserveSessionOnFileBrowser,FloatingPanelsZIndex,TemplateReplaceAll,TemplateReplaceCheckbox";
+	lConfigKeys = lConfigKeys & ",IgnoreEmptyParagraphValue,FloatingPanelsZIndex,TemplateReplaceAll,TemplateReplaceCheckbox";
 	lConfigKeys = lConfigKeys & ",ToolbarLocation,ToolbarSets,EnterMode,ShiftEnterMode,Keystrokes";
 	lConfigKeys = lConfigKeys & ",ContextMenu,BrowserContextMenuOnCtrl,FontColors,FontNames,FontSizes";
 	lConfigKeys = lConfigKeys & ",FontFormats,StylesXmlPath,TemplatesXmlPath,SpellChecker,IeSpellDownloadUrl";

Modified: pal-wcm/trunk/src/main/webapp/fckeditor/fckeditor.cfm
===================================================================
--- pal-wcm/trunk/src/main/webapp/fckeditor/fckeditor.cfm	2008-09-03 08:05:44 UTC (rev 1112)
+++ pal-wcm/trunk/src/main/webapp/fckeditor/fckeditor.cfm	2008-09-04 02:44:24 UTC (rev 1113)
@@ -97,7 +97,7 @@
 		lConfigKeys = lConfigKeys & ",FillEmptyBlocks,FormatSource,FormatOutput,FormatIndentator";
 		lConfigKeys = lConfigKeys & ",StartupFocus,ForcePasteAsPlainText,AutoDetectPasteFromWord,ForceSimpleAmpersand";
 		lConfigKeys = lConfigKeys & ",TabSpaces,ShowBorders,SourcePopup,ToolbarStartExpanded,ToolbarCanCollapse";
-		lConfigKeys = lConfigKeys & ",IgnoreEmptyParagraphValue,PreserveSessionOnFileBrowser,FloatingPanelsZIndex,TemplateReplaceAll,TemplateReplaceCheckbox";
+		lConfigKeys = lConfigKeys & ",IgnoreEmptyParagraphValue,FloatingPanelsZIndex,TemplateReplaceAll,TemplateReplaceCheckbox";
 		lConfigKeys = lConfigKeys & ",ToolbarLocation,ToolbarSets,EnterMode,ShiftEnterMode,Keystrokes";
 		lConfigKeys = lConfigKeys & ",ContextMenu,BrowserContextMenuOnCtrl,FontColors,FontNames,FontSizes";
 		lConfigKeys = lConfigKeys & ",FontFormats,StylesXmlPath,TemplatesXmlPath,SpellChecker,IeSpellDownloadUrl";

Modified: pal-wcm/trunk/src/main/webapp/fckeditor/fckeditor.js
===================================================================
--- pal-wcm/trunk/src/main/webapp/fckeditor/fckeditor.js	2008-09-03 08:05:44 UTC (rev 1112)
+++ pal-wcm/trunk/src/main/webapp/fckeditor/fckeditor.js	2008-09-04 02:44:24 UTC (rev 1113)
@@ -59,8 +59,8 @@
  */
 FCKeditor.MinWidth = 750 ;
 
-FCKeditor.prototype.Version			= '2.6' ;
-FCKeditor.prototype.VersionBuild	= '18638' ;
+FCKeditor.prototype.Version			= '2.6.3' ;
+FCKeditor.prototype.VersionBuild	= '19836' ;
 
 FCKeditor.prototype.Create = function()
 {
@@ -88,7 +88,17 @@
 	{
 		var sWidth  = this.Width.toString().indexOf('%')  > 0 ? this.Width  : this.Width  + 'px' ;
 		var sHeight = this.Height.toString().indexOf('%') > 0 ? this.Height : this.Height + 'px' ;
-		sHtml += '<textarea name="' + this.InstanceName + '" rows="4" cols="40" style="width:' + sWidth + ';height:' + sHeight + '">' + this._HTMLEncode( this.Value ) + '<\/textarea>' ;
+
+		sHtml += '<textarea name="' + this.InstanceName +
+			'" rows="4" cols="40" style="width:' + sWidth +
+			';height:' + sHeight ;
+
+		if ( this.TabIndex )
+			sHtml += '" tabindex="' + this.TabIndex ;
+
+		sHtml += '">' +
+			this._HTMLEncode( this.Value ) +
+			'<\/textarea>' ;
 	}
 
 	return sHtml ;
@@ -116,6 +126,10 @@
 		}
 
 		oTextarea.style.display = 'none' ;
+
+		if ( oTextarea.tabIndex )
+			this.TabIndex = oTextarea.tabIndex ;
+
 		this._InsertHtmlBefore( this._GetConfigHtml(), oTextarea ) ;
 		this._InsertHtmlBefore( this._GetIFrameHtml(), oTextarea ) ;
 	}
@@ -158,9 +172,20 @@
 	catch (e) { /* Ignore it. Much probably we are inside a FRAME where the "top" is in another domain (security error). */ }
 
 	var sLink = this.BasePath + 'editor/' + sFile + '?InstanceName=' + encodeURIComponent( this.InstanceName ) ;
-	if (this.ToolbarSet) sLink += '&amp;Toolbar=' + this.ToolbarSet ;
+	if (this.ToolbarSet)
+		sLink += '&amp;Toolbar=' + this.ToolbarSet ;
 
-	return '<iframe id="' + this.InstanceName + '___Frame" src="' + sLink + '" width="' + this.Width + '" height="' + this.Height + '" frameborder="0" scrolling="no"></iframe>' ;
+	html = '<iframe id="' + this.InstanceName +
+		'___Frame" src="' + sLink +
+		'" width="' + this.Width +
+		'" height="' + this.Height ;
+
+	if ( this.TabIndex )
+		html += '" tabindex="' + this.TabIndex ;
+
+	html += '" frameborder="0" scrolling="no"></iframe>' ;
+
+	return html ;
 }
 
 FCKeditor.prototype._IsCompatibleBrowser = function()

Modified: pal-wcm/trunk/src/main/webapp/fckeditor/fckeditor.php
===================================================================
--- pal-wcm/trunk/src/main/webapp/fckeditor/fckeditor.php	2008-09-03 08:05:44 UTC (rev 1112)
+++ pal-wcm/trunk/src/main/webapp/fckeditor/fckeditor.php	2008-09-04 02:44:24 UTC (rev 1113)
@@ -25,52 +25,6 @@
  * strict error messages with PHP 5).
  */
 
-/**
- * Check if browser is compatible with FCKeditor.
- * Return true if is compatible.
- *
- * @return boolean
- */
-function FCKeditor_IsCompatibleBrowser()
-{
-	if ( isset( $_SERVER ) ) {
-		$sAgent = $_SERVER['HTTP_USER_AGENT'] ;
-	}
-	else {
-		global $HTTP_SERVER_VARS ;
-		if ( isset( $HTTP_SERVER_VARS ) ) {
-			$sAgent = $HTTP_SERVER_VARS['HTTP_USER_AGENT'] ;
-		}
-		else {
-			global $HTTP_USER_AGENT ;
-			$sAgent = $HTTP_USER_AGENT ;
-		}
-	}
-
-	if ( strpos($sAgent, 'MSIE') !== false && strpos($sAgent, 'mac') === false && strpos($sAgent, 'Opera') === false )
-	{
-		$iVersion = (float)substr($sAgent, strpos($sAgent, 'MSIE') + 5, 3) ;
-		return ($iVersion >= 5.5) ;
-	}
-	else if ( strpos($sAgent, 'Gecko/') !== false )
-	{
-		$iVersion = (int)substr($sAgent, strpos($sAgent, 'Gecko/') + 6, 8) ;
-		return ($iVersion >= 20030210) ;
-	}
-	else if ( strpos($sAgent, 'Opera/') !== false )
-	{
-		$fVersion = (float)substr($sAgent, strpos($sAgent, 'Opera/') + 6, 4) ;
-		return ($fVersion >= 9.5) ;
-	}
-	else if ( preg_match( "|AppleWebKit/(\d+)|i", $sAgent, $matches ) )
-	{
-		$iVersion = $matches[1] ;
-		return ( $matches[1] >= 522 ) ;
-	}
-	else
-		return false ;
-}
-
 if ( !function_exists('version_compare') || version_compare( phpversion(), '5', '<' ) )
 	include_once( 'fckeditor_php4.php' ) ;
 else

Modified: pal-wcm/trunk/src/main/webapp/fckeditor/fckeditor.py
===================================================================
--- pal-wcm/trunk/src/main/webapp/fckeditor/fckeditor.py	2008-09-03 08:05:44 UTC (rev 1112)
+++ pal-wcm/trunk/src/main/webapp/fckeditor/fckeditor.py	2008-09-04 02:44:24 UTC (rev 1113)
@@ -67,7 +67,7 @@
 					self.InstanceName
 					)
 			if (self.ToolbarSet is not None):
-				Link += "&amp;ToolBar=%s" % self.ToolbarSet
+				Link += "&amp;Toolbar=%s" % self.ToolbarSet
 
 			# Render the linked hidden field
 			Html += "<input type=\"hidden\" id=\"%s\" name=\"%s\" value=\"%s\" style=\"display:none\" />" % (

Modified: pal-wcm/trunk/src/main/webapp/fckeditor/fckeditor_php4.php
===================================================================
--- pal-wcm/trunk/src/main/webapp/fckeditor/fckeditor_php4.php	2008-09-03 08:05:44 UTC (rev 1112)
+++ pal-wcm/trunk/src/main/webapp/fckeditor/fckeditor_php4.php	2008-09-04 02:44:24 UTC (rev 1113)
@@ -25,6 +25,52 @@
  * instances in PHP pages on server side.
  */
 
+/**
+ * Check if browser is compatible with FCKeditor.
+ * Return true if is compatible.
+ *
+ * @return boolean
+ */
+function FCKeditor_IsCompatibleBrowser()
+{
+	if ( isset( $_SERVER ) ) {
+		$sAgent = $_SERVER['HTTP_USER_AGENT'] ;
+	}
+	else {
+		global $HTTP_SERVER_VARS ;
+		if ( isset( $HTTP_SERVER_VARS ) ) {
+			$sAgent = $HTTP_SERVER_VARS['HTTP_USER_AGENT'] ;
+		}
+		else {
+			global $HTTP_USER_AGENT ;
+			$sAgent = $HTTP_USER_AGENT ;
+		}
+	}
+
+	if ( strpos($sAgent, 'MSIE') !== false && strpos($sAgent, 'mac') === false && strpos($sAgent, 'Opera') === false )
+	{
+		$iVersion = (float)substr($sAgent, strpos($sAgent, 'MSIE') + 5, 3) ;
+		return ($iVersion >= 5.5) ;
+	}
+	else if ( strpos($sAgent, 'Gecko/') !== false )
+	{
+		$iVersion = (int)substr($sAgent, strpos($sAgent, 'Gecko/') + 6, 8) ;
+		return ($iVersion >= 20030210) ;
+	}
+	else if ( strpos($sAgent, 'Opera/') !== false )
+	{
+		$fVersion = (float)substr($sAgent, strpos($sAgent, 'Opera/') + 6, 4) ;
+		return ($fVersion >= 9.5) ;
+	}
+	else if ( preg_match( "|AppleWebKit/(\d+)|i", $sAgent, $matches ) )
+	{
+		$iVersion = $matches[1] ;
+		return ( $matches[1] >= 522 ) ;
+	}
+	else
+		return false ;
+}
+
 class FCKeditor
 {
 	/**

Modified: pal-wcm/trunk/src/main/webapp/fckeditor/fckeditor_php5.php
===================================================================
--- pal-wcm/trunk/src/main/webapp/fckeditor/fckeditor_php5.php	2008-09-03 08:05:44 UTC (rev 1112)
+++ pal-wcm/trunk/src/main/webapp/fckeditor/fckeditor_php5.php	2008-09-04 02:44:24 UTC (rev 1113)
@@ -25,6 +25,52 @@
  * instances in PHP pages on server side.
  */
 
+/**
+ * Check if browser is compatible with FCKeditor.
+ * Return true if is compatible.
+ *
+ * @return boolean
+ */
+function FCKeditor_IsCompatibleBrowser()
+{
+	if ( isset( $_SERVER ) ) {
+		$sAgent = $_SERVER['HTTP_USER_AGENT'] ;
+	}
+	else {
+		global $HTTP_SERVER_VARS ;
+		if ( isset( $HTTP_SERVER_VARS ) ) {
+			$sAgent = $HTTP_SERVER_VARS['HTTP_USER_AGENT'] ;
+		}
+		else {
+			global $HTTP_USER_AGENT ;
+			$sAgent = $HTTP_USER_AGENT ;
+		}
+	}
+
+	if ( strpos($sAgent, 'MSIE') !== false && strpos($sAgent, 'mac') === false && strpos($sAgent, 'Opera') === false )
+	{
+		$iVersion = (float)substr($sAgent, strpos($sAgent, 'MSIE') + 5, 3) ;
+		return ($iVersion >= 5.5) ;
+	}
+	else if ( strpos($sAgent, 'Gecko/') !== false )
+	{
+		$iVersion = (int)substr($sAgent, strpos($sAgent, 'Gecko/') + 6, 8) ;
+		return ($iVersion >= 20030210) ;
+	}
+	else if ( strpos($sAgent, 'Opera/') !== false )
+	{
+		$fVersion = (float)substr($sAgent, strpos($sAgent, 'Opera/') + 6, 4) ;
+		return ($fVersion >= 9.5) ;
+	}
+	else if ( preg_match( "|AppleWebKit/(\d+)|i", $sAgent, $matches ) )
+	{
+		$iVersion = $matches[1] ;
+		return ( $matches[1] >= 522 ) ;
+	}
+	else
+		return false ;
+}
+
 class FCKeditor
 {
 	/**

Modified: pal-wcm/trunk/src/main/webapp/fckeditor/fckpackager.xml
===================================================================
--- pal-wcm/trunk/src/main/webapp/fckeditor/fckpackager.xml	2008-09-03 08:05:44 UTC (rev 1112)
+++ pal-wcm/trunk/src/main/webapp/fckeditor/fckpackager.xml	2008-09-04 02:44:24 UTC (rev 1113)
@@ -77,7 +77,7 @@
 		<File path="editor/_source/internals/fck.js" />
 		<File path="editor/_source/internals/fck_ie.js" />
 		<File path="editor/_source/internals/fckconfig.js" />
-		<File path="editor/_source/internals/fckdebug.js" />
+		<File path="editor/_source/internals/fckdebug_empty.js" />
 		<File path="editor/_source/internals/fckdomtools.js" />
 		<File path="editor/_source/internals/fcktools.js" />
 		<File path="editor/_source/internals/fcktools_ie.js" />
@@ -173,7 +173,7 @@
 		<File path="editor/_source/internals/fck.js" />
 		<File path="editor/_source/internals/fck_gecko.js" />
 		<File path="editor/_source/internals/fckconfig.js" />
-		<File path="editor/_source/internals/fckdebug.js" />
+		<File path="editor/_source/internals/fckdebug_empty.js" />
 		<File path="editor/_source/internals/fckdomtools.js" />
 		<File path="editor/_source/internals/fcktools.js" />
 		<File path="editor/_source/internals/fcktools_gecko.js" />

Deleted: pal-wcm/trunk/src/main/webapp/fckeditor/htaccess.txt
===================================================================
--- pal-wcm/trunk/src/main/webapp/fckeditor/htaccess.txt	2008-09-03 08:05:44 UTC (rev 1112)
+++ pal-wcm/trunk/src/main/webapp/fckeditor/htaccess.txt	2008-09-04 02:44:24 UTC (rev 1113)
@@ -1,44 +0,0 @@
-#
-#  FCKeditor - The text editor for Internet - http://www.fckeditor.net
-#  Copyright (C) 2003-2007 Frederico Caldeira Knabben
-#
-#  == BEGIN LICENSE ==
-#
-#  Licensed under the terms of any of the following licenses at your
-#  choice:
-#
-#   - GNU General Public License Version 2 or later (the "GPL")
-#     http://www.gnu.org/licenses/gpl.html
-#
-#   - GNU Lesser General Public License Version 2.1 or later (the "LGPL")
-#     http://www.gnu.org/licenses/lgpl.html
-#
-#   - Mozilla Public License Version 1.1 or later (the "MPL")
-#     http://www.mozilla.org/MPL/MPL-1.1.html
-#
-#  == END LICENSE ==
-#
-# -----------------------------------------------------------------------------
-#
-# On some specific Linux installations you could face problems with Firefox.
-# It could give you errors when loading the editor saying that some illegal
-# characters were found (three strange chars in the beginning of the file).
-# This could happen if you map the .js or .css files to PHP, for example.
-#
-# Those characters are the Byte Order Mask (BOM) of the Unicode encoded files.
-# All FCKeditor files are Unicode encoded.
-#
-# Just rename this file to ".htaccess" and leave it in the editor directory.
-# There are no security issues on doing it. It just sets the ".js" and ".css"
-# files to their correct content types.
-#
-
-AddType application/x-javascript .js
-AddType text/css .css
-
-#
-# If PHP is mapped to handle XML files, you could have some issues. The
-# following will disable it.
-#
-
-AddType text/xml .xml

Added: pal-wcm/trunk/src/main/webapp/images/icons/arrow_undo.png
===================================================================
(Binary files differ)


Property changes on: pal-wcm/trunk/src/main/webapp/images/icons/arrow_undo.png
___________________________________________________________________
Name: svn:mime-type
   + image/png

Added: pal-wcm/trunk/src/main/webapp/images/icons/content.png
===================================================================
(Binary files differ)


Property changes on: pal-wcm/trunk/src/main/webapp/images/icons/content.png
___________________________________________________________________
Name: svn:mime-type
   + image/png

Added: pal-wcm/trunk/src/main/webapp/images/icons/folder.png
===================================================================
(Binary files differ)


Property changes on: pal-wcm/trunk/src/main/webapp/images/icons/folder.png
___________________________________________________________________
Name: svn:mime-type
   + image/png

Added: pal-wcm/trunk/src/main/webapp/images/icons/page.png
===================================================================
(Binary files differ)


Property changes on: pal-wcm/trunk/src/main/webapp/images/icons/page.png
___________________________________________________________________
Name: svn:mime-type
   + image/png

Added: pal-wcm/trunk/src/main/webapp/images/icons/page_save.png
===================================================================
(Binary files differ)


Property changes on: pal-wcm/trunk/src/main/webapp/images/icons/page_save.png
___________________________________________________________________
Name: svn:mime-type
   + image/png

Deleted: pal-wcm/trunk/src/main/webapp/index.jsp
===================================================================
--- pal-wcm/trunk/src/main/webapp/index.jsp	2008-09-03 08:05:44 UTC (rev 1112)
+++ pal-wcm/trunk/src/main/webapp/index.jsp	2008-09-04 02:44:24 UTC (rev 1113)
@@ -1,75 +0,0 @@
-<%@ taglib uri="/WEB-INF/tld/FCKeditor.tld" prefix="FCK" %>
-<%@ page language="java" import="jp.sf.pal.wcm.*, java.util.*, java.io.File, java.io.FileReader, java.io.BufferedReader, javax.servlet.ServletContext" %>
-<!--
- * FCKeditor - The text editor for internet
- * Copyright (C) 2003-2005 Frederico Caldeira Knabben
- * 
- * Licensed under the terms of the GNU Lesser General Public License:
- * 		http://www.opensource.org/licenses/lgpl-license.php
- * 
- * For further information visit:
- * 		http://www.fckeditor.net/
- * 
- * File Name: sample01.jsp
- * 	FCKeditor sample file 1.
- * 
- * Version:  2.1
- * Modified: 2005-03-29 21:30:00
- * 
- * File Authors:
- * 		Simone Chiaretta (simo****@users*****)
--->
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
-<html>
-	<head>
-		<title>PAL-WCM</title>
-		<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
-		<meta name="robots" content="noindex, nofollow">
-		<script type="text/javascript">
-
-function FCKeditor_OnComplete( editorInstance )
-{
-	window.status = editorInstance.Description ;
-}
-
-		</script>
-	</head>
-	<body>
-		<form action="/pal-wcm/filesave" method="post">
-<%
-ServletContext servletContext = getServletContext();
-String contents = "";
-String fragID = "test123";
-String outputFileName = "/content_jp.html";
-String outputFilePath = servletContext.getRealPath("/WEB-INF/data/" + fragID + outputFileName);
-File contentsFile = new File(outputFilePath);
-try{
-    if(contentsFile.exists()){
-	String line = "";
-	FileReader fr = new FileReader(outputFilePath);
-	BufferedReader reader = new BufferedReader(fr);
-	while ((line = reader.readLine()) != null){
-	    contents += line;
-	}
-	fr.close();
-    }
-} Catch (Exception e){
-    e.printStackTrace();
-}
-%>
-			<FCK:editor id="EditorDefault" basePath="/fckeditor/editor/"
-				imageBrowserURL="/pal-wcm/fckeditor/editor/filemanager/browser/default/browser.html?Type=Image&Connector=connectors/jsp/connector"
-				linkBrowserURL="/pal-wcm/fckeditor/editor/filemanager/browser/default/browser.html?Connector=connectors/jsp/connector"
-				flashBrowserURL="/pal-wcm/fckeditor/editor/filemanager/browser/default/browser.html?Type=Flash&Connector=connectors/jsp/connector"
-				imageUploadURL="/pal-wcm/fckeditor/editor/filemanager/upload/simpleuploader?Type=Image"
-				linkUploadURL="/pal-wcm/fckeditor/editor/filemanager/upload/simpleuploader?Type=File"
-				flashUploadURL="/pal-wcm/fckeditor/editor/filemanager/upload/simpleuploader?Type=Flash">
-				<%= contents %>
-			</FCK:editor>
-
-			<br>
-			<input type="submit" value="Submit">
-			<input type="hidden" name="fragID" value="<%=fragID%>">
-		</form>
-	</body>
-</html>


pal-cvs メーリングリストの案内
Back to archive index