Browse Source

Removing Fckeditor see #5875

Julio Montoya 11 years ago
parent
commit
7759d14600
100 changed files with 0 additions and 25923 deletions
  1. 0 38
      main/inc/lib/fckeditor/_documentation.html
  2. 0 39
      main/inc/lib/fckeditor/_upgrade.html
  3. 0 62
      main/inc/lib/fckeditor/_whatsnew.html
  4. 0 4124
      main/inc/lib/fckeditor/_whatsnew_history.html
  5. 0 223
      main/inc/lib/fckeditor/editor/_source/classes/fckcontextmenu.js
  6. 0 119
      main/inc/lib/fckeditor/editor/_source/classes/fckdataprocessor.js
  7. 0 53
      main/inc/lib/fckeditor/editor/_source/classes/fckdocumentfragment_gecko.js
  8. 0 58
      main/inc/lib/fckeditor/editor/_source/classes/fckdocumentfragment_ie.js
  9. 0 935
      main/inc/lib/fckeditor/editor/_source/classes/fckdomrange.js
  10. 0 104
      main/inc/lib/fckeditor/editor/_source/classes/fckdomrange_gecko.js
  11. 0 199
      main/inc/lib/fckeditor/editor/_source/classes/fckdomrange_ie.js
  12. 0 327
      main/inc/lib/fckeditor/editor/_source/classes/fckdomrangeiterator.js
  13. 0 372
      main/inc/lib/fckeditor/editor/_source/classes/fckeditingarea.js
  14. 0 89
      main/inc/lib/fckeditor/editor/_source/classes/fckelementpath.js
  15. 0 708
      main/inc/lib/fckeditor/editor/_source/classes/fckenterkey.js
  16. 0 71
      main/inc/lib/fckeditor/editor/_source/classes/fckevents.js
  17. 0 142
      main/inc/lib/fckeditor/editor/_source/classes/fckhtmliterator.js
  18. 0 103
      main/inc/lib/fckeditor/editor/_source/classes/fckicon.js
  19. 0 68
      main/inc/lib/fckeditor/editor/_source/classes/fckiecleanup.js
  20. 0 64
      main/inc/lib/fckeditor/editor/_source/classes/fckimagepreloader.js
  21. 0 141
      main/inc/lib/fckeditor/editor/_source/classes/fckkeystrokehandler.js
  22. 0 153
      main/inc/lib/fckeditor/editor/_source/classes/fckmenublock.js
  23. 0 54
      main/inc/lib/fckeditor/editor/_source/classes/fckmenublockpanel.js
  24. 0 161
      main/inc/lib/fckeditor/editor/_source/classes/fckmenuitem.js
  25. 0 466
      main/inc/lib/fckeditor/editor/_source/classes/fckpanel.js
  26. 0 56
      main/inc/lib/fckeditor/editor/_source/classes/fckplugin.js
  27. 0 376
      main/inc/lib/fckeditor/editor/_source/classes/fckspecialcombo.js
  28. 0 1500
      main/inc/lib/fckeditor/editor/_source/classes/fckstyle.js
  29. 0 103
      main/inc/lib/fckeditor/editor/_source/classes/fcktoolbar.js
  30. 0 36
      main/inc/lib/fckeditor/editor/_source/classes/fcktoolbarbreak_gecko.js
  31. 0 38
      main/inc/lib/fckeditor/editor/_source/classes/fcktoolbarbreak_ie.js
  32. 0 81
      main/inc/lib/fckeditor/editor/_source/classes/fcktoolbarbutton.js
  33. 0 198
      main/inc/lib/fckeditor/editor/_source/classes/fcktoolbarbuttonui.js
  34. 0 139
      main/inc/lib/fckeditor/editor/_source/classes/fcktoolbarfontformatcombo.js
  35. 0 98
      main/inc/lib/fckeditor/editor/_source/classes/fcktoolbarfontscombo.js
  36. 0 76
      main/inc/lib/fckeditor/editor/_source/classes/fcktoolbarfontsizecombo.js
  37. 0 103
      main/inc/lib/fckeditor/editor/_source/classes/fcktoolbarpanelbutton.js
  38. 0 146
      main/inc/lib/fckeditor/editor/_source/classes/fcktoolbarspecialcombo.js
  39. 0 200
      main/inc/lib/fckeditor/editor/_source/classes/fcktoolbarstylecombo.js
  40. 0 451
      main/inc/lib/fckeditor/editor/_source/classes/fckw3crange.js
  41. 0 108
      main/inc/lib/fckeditor/editor/_source/classes/fckxml.js
  42. 0 106
      main/inc/lib/fckeditor/editor/_source/classes/fckxml_gecko.js
  43. 0 93
      main/inc/lib/fckeditor/editor/_source/classes/fckxml_ie.js
  44. 0 8
      main/inc/lib/fckeditor/editor/_source/classes/index.html
  45. 0 634
      main/inc/lib/fckeditor/editor/_source/commandclasses/fck_othercommands.js
  46. 0 281
      main/inc/lib/fckeditor/editor/_source/commandclasses/fckblockquotecommand.js
  47. 0 61
      main/inc/lib/fckeditor/editor/_source/commandclasses/fckcorestylecommand.js
  48. 0 213
      main/inc/lib/fckeditor/editor/_source/commandclasses/fckfitwindow.js
  49. 0 282
      main/inc/lib/fckeditor/editor/_source/commandclasses/fckindentcommands.js
  50. 0 173
      main/inc/lib/fckeditor/editor/_source/commandclasses/fckjustifycommands.js
  51. 0 382
      main/inc/lib/fckeditor/editor/_source/commandclasses/fcklistcommands.js
  52. 0 39
      main/inc/lib/fckeditor/editor/_source/commandclasses/fcknamedcommand.js
  53. 0 40
      main/inc/lib/fckeditor/editor/_source/commandclasses/fckpasteplaintextcommand.js
  54. 0 40
      main/inc/lib/fckeditor/editor/_source/commandclasses/fckpastewordcommand.js
  55. 0 45
      main/inc/lib/fckeditor/editor/_source/commandclasses/fckremoveformatcommand.js
  56. 0 94
      main/inc/lib/fckeditor/editor/_source/commandclasses/fckshowblocks.js
  57. 0 49
      main/inc/lib/fckeditor/editor/_source/commandclasses/fckspellcheckcommand_gecko.js
  58. 0 72
      main/inc/lib/fckeditor/editor/_source/commandclasses/fckspellcheckcommand_ie.js
  59. 0 60
      main/inc/lib/fckeditor/editor/_source/commandclasses/fckstylecommand.js
  60. 0 106
      main/inc/lib/fckeditor/editor/_source/commandclasses/fcktablecommand.js
  61. 0 201
      main/inc/lib/fckeditor/editor/_source/commandclasses/fcktextcolorcommand.js
  62. 0 8
      main/inc/lib/fckeditor/editor/_source/commandclasses/index.html
  63. 0 56
      main/inc/lib/fckeditor/editor/_source/fckconstants.js
  64. 0 179
      main/inc/lib/fckeditor/editor/_source/fckeditorapi.js
  65. 0 159
      main/inc/lib/fckeditor/editor/_source/fckjscoreextensions.js
  66. 0 122
      main/inc/lib/fckeditor/editor/_source/fckscriptloader.js
  67. 0 8
      main/inc/lib/fckeditor/editor/_source/index.html
  68. 0 1296
      main/inc/lib/fckeditor/editor/_source/internals/fck.js
  69. 0 345
      main/inc/lib/fckeditor/editor/_source/internals/fck_contextmenu.js
  70. 0 507
      main/inc/lib/fckeditor/editor/_source/internals/fck_gecko.js
  71. 0 466
      main/inc/lib/fckeditor/editor/_source/internals/fck_ie.js
  72. 0 65
      main/inc/lib/fckeditor/editor/_source/internals/fckbrowserinfo.js
  73. 0 100
      main/inc/lib/fckeditor/editor/_source/internals/fckcodeformatter.js
  74. 0 175
      main/inc/lib/fckeditor/editor/_source/internals/fckcommands.js
  75. 0 237
      main/inc/lib/fckeditor/editor/_source/internals/fckconfig.js
  76. 0 59
      main/inc/lib/fckeditor/editor/_source/internals/fckdebug.js
  77. 0 31
      main/inc/lib/fckeditor/editor/_source/internals/fckdebug_empty.js
  78. 0 239
      main/inc/lib/fckeditor/editor/_source/internals/fckdialog.js
  79. 0 270
      main/inc/lib/fckeditor/editor/_source/internals/fckdocumentprocessor.js
  80. 0 1085
      main/inc/lib/fckeditor/editor/_source/internals/fckdomtools.js
  81. 0 165
      main/inc/lib/fckeditor/editor/_source/internals/fcklanguagemanager.js
  82. 0 152
      main/inc/lib/fckeditor/editor/_source/internals/fcklisthandler.js
  83. 0 63
      main/inc/lib/fckeditor/editor/_source/internals/fcklistslib.js
  84. 0 46
      main/inc/lib/fckeditor/editor/_source/internals/fckplugins.js
  85. 0 100
      main/inc/lib/fckeditor/editor/_source/internals/fckregexlib.js
  86. 0 447
      main/inc/lib/fckeditor/editor/_source/internals/fckscayt.js
  87. 0 42
      main/inc/lib/fckeditor/editor/_source/internals/fckselection.js
  88. 0 231
      main/inc/lib/fckeditor/editor/_source/internals/fckselection_gecko.js
  89. 0 288
      main/inc/lib/fckeditor/editor/_source/internals/fckselection_ie.js
  90. 0 381
      main/inc/lib/fckeditor/editor/_source/internals/fckstyles.js
  91. 0 863
      main/inc/lib/fckeditor/editor/_source/internals/fcktablehandler.js
  92. 0 56
      main/inc/lib/fckeditor/editor/_source/internals/fcktablehandler_gecko.js
  93. 0 64
      main/inc/lib/fckeditor/editor/_source/internals/fcktablehandler_ie.js
  94. 0 131
      main/inc/lib/fckeditor/editor/_source/internals/fcktoolbaritems.js
  95. 0 399
      main/inc/lib/fckeditor/editor/_source/internals/fcktoolbarset.js
  96. 0 749
      main/inc/lib/fckeditor/editor/_source/internals/fcktools.js
  97. 0 282
      main/inc/lib/fckeditor/editor/_source/internals/fcktools_gecko.js
  98. 0 234
      main/inc/lib/fckeditor/editor/_source/internals/fcktools_ie.js
  99. 0 223
      main/inc/lib/fckeditor/editor/_source/internals/fckundo.js
  100. 0 39
      main/inc/lib/fckeditor/editor/_source/internals/fckurlparams.js

+ 0 - 38
main/inc/lib/fckeditor/_documentation.html

@@ -1,38 +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-2010 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 xmlns="http://www.w3.org/1999/xhtml">
-<head>
-	<title>FCKeditor - Documentation</title>
-	<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
-	<style type="text/css">
-		body { font-family: arial, verdana, sans-serif }
-		p { margin-left: 20px }
-	</style>
-</head>
-<body>
-	<h1>
-		FCKeditor Documentation</h1>
-	<p>
-		You can find the official documentation for FCKeditor online, at <a href="http://docs.fckeditor.net/">
-			http://docs.fckeditor.net/</a>.</p>
-</body>
-</html>

+ 0 - 39
main/inc/lib/fckeditor/_upgrade.html

@@ -1,39 +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-2010 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 xmlns="http://www.w3.org/1999/xhtml">
-<head>
-	<title>FCKeditor - Upgrade</title>
-	<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
-	<style type="text/css">
-		body { font-family: arial, verdana, sans-serif }
-		p { margin-left: 20px }
-	</style>
-</head>
-<body>
-	<h1>
-		FCKeditor Upgrade</h1>
-	<p>
-		Please check the following URL for notes regarding upgrade:<br />
-		<a href="http://docs.fckeditor.net/FCKeditor_2.x/Developers_Guide/Installation/Upgrading">
-			http://docs.fckeditor.net/FCKeditor_2.x/Developers_Guide/Installation/Upgrading</a></p>
-</body>
-</html>

+ 0 - 62
main/inc/lib/fckeditor/_whatsnew.html

@@ -1,62 +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-2010 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 xmlns="http://www.w3.org/1999/xhtml">
-<head>
-	<title>FCKeditor ChangeLog - What's New?</title>
-	<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
-	<style type="text/css">
-		body { font-family: arial, verdana, sans-serif }
-		p { margin-left: 20px }
-		h1 { border-bottom: solid 1px gray; padding-bottom: 20px }
-	</style>
-</head>
-<body>
-	<h1>
-		FCKeditor ChangeLog - What's New?</h1>
-	<h3>
-		Version 2.6.6</h3>
-	<p>
-		New Features and Improvements:</p>
-	<ul>
-		<li>[<a target="_blank" href="http://dev.fckeditor.net/ticket/5104">#5104</a>] Fixed
-			compatibility with Gecko browsers released in 2010 in the ColdFusion server side integration files.</li>
-		<li>[<a target="_blank" href="http://dev.fckeditor.net/ticket/4765">#4765</a>] Fixed
-			a potential function name clash in the built-in file browser with future versions of ColdFusion.</li>
-	</ul>
-	<p>
-		Fixed Bugs:</p>
-	<ul>
-		<li>[<a target="_blank" href="http://dev.fckeditor.net/ticket/4642">#4642</a>] Avoided infinite 
-			loop in IE with invalid HTML.</li>
-		<li>[<a target="_blank" href="http://dev.fckeditor.net/ticket/4487">#4487</a>] The editor was not loading properly in Safari 3.</li>
-		<li>Language file updates for the following languages:
-			<ul>
-				<li>[<a target="_blank" href="http://dev.fckeditor.net/ticket/4465">#4465</a>] Czech </li>
-				<li>[<a target="_blank" href="http://dev.fckeditor.net/ticket/4759">#4759</a>] Swedish </li>
-				<li>[<a target="_blank" href="http://dev.fckeditor.net/ticket/2939">#2939</a>] Finnish </li>
-			</ul>
-		</li>
-	</ul>
-	<p>
-		<a href="_whatsnew_history.html">See previous versions history</a></p>
-</body>
-</html>

+ 0 - 4124
main/inc/lib/fckeditor/_whatsnew_history.html

@@ -1,4124 +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-2010 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 xmlns="http://www.w3.org/1999/xhtml">
-<head>
-	<title>FCKeditor ChangeLog - What's New?</title>
-	<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
-	<style type="text/css">
-		body { font-family: arial, verdana, sans-serif }
-		p { margin-left: 20px }
-		h1 { border-bottom: solid 1px gray; padding-bottom: 20px }
-	</style>
-</head>
-<body>
-	<h1>
-		FCKeditor ChangeLog - What's New?</h1>
-	<h3>
-		Version 2.6.5</h3>
-	<p>
-		New Features and Improvements:</p>
-	<ul>
-		<li>Introduced the Spell Check As You Type (SCAYT) spell checking option.</li>
-	</ul>
-	<p>
-		Fixed Bugs:</p>
-	<ul>
-		<li><strong>Security release, upgrade is highly recommended</strong> (fixed security issues in ASP and ColdFusion scripts).
-			</li>
-		<li>[<a target="_blank" href="http://dev.fckeditor.net/ticket/2856">#2856</a>] Fixed
-			problem with inches in paste dialog.</li>
-		<li>[<a target="_blank" href="http://dev.fckeditor.net/ticket/3120">#3120</a>]
-			# (pound sign) is not correctly escaped in file urls.</li>
-		<li>[<a target="_blank" href="http://dev.fckeditor.net/ticket/2915">#2915</a>]
-			About plugin shows misleading user language.</li>
-		<li>[<a target="_blank" href="http://dev.fckeditor.net/ticket/2821">#2821</a>] Configuration
-			items that used floating point numbers were parsed as integers.</li>
-		<li>[<a target="_blank" href="http://dev.fckeditor.net/ticket/2604">#2064</a>] The asp
-			connector didn't work correctly in windows 2000 servers.</li>
-		<li>[<a target="_blank" href="http://dev.fckeditor.net/ticket/3429">#3429</a>] Fixed
-			problem in IE8 with XHTML doctype. Thanks to duncansimey.</li>
-		<li>[<a target="_blank" href="http://dev.fckeditor.net/ticket/3446">#3446</a>] Fixed self-closed
- 			&lt;option&gt; in the table cell dialog.</li>
-		<li>[<a target="_blank" href="http://dev.fckeditor.net/ticket/3181">#3181</a>] Node selection
-			could raise an error in IE8.</li>
-		<li>[<a target="_blank" href="http://dev.fckeditor.net/ticket/2156">#2156</a>]
-			After calling GetData() the style removal operations didn't work in IE. Thanks to
-			Compendium Blogware.</li>
-	  <li>[<a target="_blank" href="http://dev.fckeditor.net/ticket/3427">#3427</a>] Improved
- 			compatibility of Document properties dialog with Eclipse.</li>
-		<li>Language file updates for the following languages:
-			<ul>
-				<li>[<a target="_blank" href="http://dev.fckeditor.net/ticket/2908">#2908</a>] Czech </li>
-				<li>[<a target="_blank" href="http://dev.fckeditor.net/ticket/2849">#2849</a>] Lithuanian</li>
-				<li>[<a target="_blank" href="http://dev.fckeditor.net/ticket/3636">#3636</a>] Polish</li>
-				<li>[<a target="_blank" href="http://dev.fckeditor.net/ticket/3741">#3741</a>] Korean</li>
-				<li>[<a target="_blank" href="http://dev.fckeditor.net/ticket/2861">#2861</a>] Slovenian</li>
-			</ul>
-		</li>
-		<li>[<a target="_blank" href="http://dev.fckeditor.net/ticket/3439">#3439</a>] IgnoreEmptyParagraphValue
-			had no effect if ProcessHTMLEntities is false.</li>
-		<li>[<a target="_blank" href="http://dev.fckeditor.net/ticket/3880">#3880</a>] Fixed some minor
-			logical and typing mistakes in fckdomrange_ie.js.</li>
-		<li>[<a target="_blank" href="http://dev.fckeditor.net/ticket/2689">#2689</a>] If a
-			custom connector tried to use the "url" attribute for files it was always reencoded.</li>
-		<li>[<a target="_blank" href="http://dev.fckeditor.net/ticket/1537">#1537</a>] Fixed extra
-			&lt;p&gt; tag added before pasted contents from Paste From Word dialog.</li>
-		<li>[<a target="_blank" href="http://dev.fckeditor.net/ticket/2874">#2874</a>] Fixed wrong position
-			of caption tag in tables with table headers.</li>
-		<li>[<a target="_blank" href="http://dev.fckeditor.net/ticket/3818">#3818</a>] Fixed layout error
-			in text and background color popups when more colors button is disabled.</li>
- 		<li>[<a target="_blank" href="http://dev.fckeditor.net/ticket/3481">#3481</a>] Fixed an issue in
- 			WebKit where paste actions inside table cells may leak outside of the table cell.</li>
- 		<li>[<a target="_blank" href="http://dev.fckeditor.net/ticket/3677">#3677</a>] Fixed JavaScript
- 			error when trying to create link for images inside floating div containers.</li>
- 		<li>[<a target="_blank" href="http://dev.fckeditor.net/ticket/3925">#3925</a>] Removed obsolete
- 			parentWindow reference from FCKDialog.OpenDialog().</li>
- 		<li>[<a target="_blank" href="http://dev.fckeditor.net/ticket/2936">#2936</a>] Added protection
-			in the PHP upload if the destination folder is placed at the root and doesn't exit.</li>
- 		<li>[<a target="_blank" href="http://dev.fckeditor.net/ticket/4357">#4357</a>] Avoid problem in
-			the paste dialog if IIS is set to process HTML files as Asp.</li>
-		<li>[<a target="_blank" href="http://dev.fckeditor.net/ticket/2201">#2201</a>] Fixed a crash in IE
- 			in an object is selected (with handles) on unload of the editor.</li>
-		<li>[<a target="_blank" href="http://dev.fckeditor.net/ticket/3053">#3053</a>] Fixed problems with
-			the height of the content area in Safari and Chrome.</li>
-	</ul>
-	<h3>
-		Version 2.6.4.1</h3>
-	<p>
-		Fixed Bugs:</p>
-	<ul>
-		<li><strong>Security release, upgrade is highly recommended.</strong></li>
-	</ul>
-	<h3>
-		Version 2.6.4</h3>
-	<p>
-		Fixed Bugs:</p>
-	<ul>
-		<li>[<a target="_blank" href="http://dev.fckeditor.net/ticket/2777">#2777</a>] Merging
-			cells between table header and body is no longer possible.</li>
-		<li>[<a target="_blank" href="http://dev.fckeditor.net/ticket/2815">#2815</a>] Fixed
-			WSC issues at slow connection speed. Added SSL support.</li>
-		<li>Language file updates for the following languages:
-			<ul>
-				<li>Chinese (Traditional)</li>
-				<li>[<a target="_blank" href="http://dev.fckeditor.net/ticket/2846">#2846</a>] French</li>
-				<li>[<a target="_blank" href="http://dev.fckeditor.net/ticket/2801">#2801</a>] Hebrew</li>
-				<li>[<a target="_blank" href="http://dev.fckeditor.net/ticket/2824">#2824</a>] Russian</li>
-				<li>[<a target="_blank" href="http://dev.fckeditor.net/ticket/2811">#2811</a>] Turkish</li>
-			</ul>
-		</li>
-		<li>[<a target="_blank" href="http://dev.fckeditor.net/ticket/2757">#2757</a>] Fixed
-			a minor bug which causes selection positions to be improperly restored during undos
-			and redos.</li>
-	</ul>
-	<h3>
-		Version 2.6.4 Beta</h3>
-	<p>
-		New Features and Improvements:</p>
-	<ul>
-		<li>[<a target="_blank" href="http://dev.fckeditor.net/ticket/2685">#2685</a>] Integration
-			with "WebSpellChecker", a <strong>zero installation and free spell checker</strong>
-			provided by SpellChecker.net. This is now the default spell checker in the editor
-			(requires internet connection). All previous spell checking solutions are still
-			available.</li>
-		<li>[<a target="_blank" href="http://dev.fckeditor.net/ticket/2430">#2430</a>] In the
-			table dialog it's possible to create header cells in the first row (included in
-			a thead element) or the first column of the table. </li>
-		<li>[<a target="_blank" href="http://dev.fckeditor.net/ticket/822">#822</a>] The table
-			cell dialog allows switching between normal data cells or header cells (TD vs. TH).
-		</li>
-		<li>[<a target="_blank" href="http://dev.fckeditor.net/ticket/2515">#2515</a>] New language
-			file for Icelandic.</li>
-	</ul>
-	<p>
-		Fixed Bugs:</p>
-	<ul>
-		<li>[<a target="_blank" href="http://dev.fckeditor.net/ticket/2381">#2381</a>] Protected
-			the editor from duplicate iframes</li>
-		<li>[<a target="_blank" href="http://dev.fckeditor.net/ticket/1752">#1752</a>] Fixed
-			the issue with tablecommands plugin and undefined tagName.</li>
-		<li>[<a target="_blank" href="http://dev.fckeditor.net/ticket/2333">#2333</a>] The &amp;gt;
-			character inside text wasn't encoded in Opera and Safari.</li>
-		<li>[<a target="_blank" href="http://dev.fckeditor.net/ticket/2467">#2467</a>] Fixed
-			JavaScript error with the fit window command in source mode.</li>
-		<li>[<a target="_blank" href="http://dev.fckeditor.net/ticket/2472">#2472</a>] Splitting
-			a TH will create a two TH, not a TH and a TD.</li>
-		<li>[<a target="_blank" href="http://dev.fckeditor.net/ticket/1891">#1891</a>] Removed
-			unnecessary name attributes in dialogs. </li>
-		<li>[<a target="_blank" href="http://dev.fckeditor.net/ticket/798">#798</a>, <a target="_blank"
-			href="http://dev.fckeditor.net/ticket/2495">#2495</a>] If an image was placed inside
-			a container with dimensions or floating it wasn't possible to edit its properties
-			from the toolbar or context menu.</li>
-		<li>[<a target="_blank" href="http://dev.fckeditor.net/ticket/1982">#1982</a>] Submenus
-			in IE7 now are shown properly.</li>
-		<li>[<a target="_blank" href="http://dev.fckeditor.net/ticket/2496">#2496</a>] Using
-			the Paste dialogs in IE might insert the content at the start of the editor.</li>
-		<li>[<a target="_blank" href="http://dev.fckeditor.net/ticket/2349">#2496</a>] Fixed
-			RTL dialog layout in Internet Explorer.</li>
-		<li>[<a target="_blank" href="http://dev.fckeditor.net/ticket/2488">#2488</a>] Fixed
-			the issue where email links in IE would take the browser to a new page in addition
-			to calling up the email client.</li>
-		<li>[<a target="_blank" href="http://dev.fckeditor.net/ticket/2519">#2519</a>] Fixed
-			race condition at registering the FCKeditorAPI object in multiple editor scenarios.</li>
-		<li>[<a target="_blank" href="http://dev.fckeditor.net/ticket/2525">#2525</a>] Fixed
-			JavaScript error in Google Chrome when StartupShowBlocks is set to true.</li>
-		<li>Language file updates for the following languages:
-			<ul>
-				<li>[<a target="_blank" href="http://dev.fckeditor.net/ticket/2440">#2440</a>] Dutch</li>
-				<li>[<a target="_blank" href="http://dev.fckeditor.net/ticket/2451">#2451</a>] Basque</li>
-				<li>[<a target="_blank" href="http://dev.fckeditor.net/ticket/2451">#2650</a>] Danish</li>
-				<li>[<a target="_blank" href="http://dev.fckeditor.net/ticket/2208">#2535</a>] German
-				</li>
-			</ul>
-		</li>
-		<li>[<a target="_blank" href="http://dev.fckeditor.net/ticket/2531">#2531</a>] The ENTER
-			key will properly scroll to the cursor position when breaking long paragraphs.</li>
-		<li>[<a target="_blank" href="http://dev.fckeditor.net/ticket/2573">#2573</a>] The type
-			name in configurations for the ASP connector are now case sensitive.</li>
-		<li>[<a target="_blank" href="http://dev.fckeditor.net/ticket/2503">#2503</a>] DL, DT
-			and DD where missing the formatting in the generated HTML.</li>
-		<li>[<a target="_blank" href="http://dev.fckeditor.net/ticket/2516">#2516</a>] Replaced
-			the extension AddItem of Array with the standard "push" method.</li>
-		<li>[<a target="_blank" href="http://dev.fckeditor.net/ticket/2486">#2486</a>] Vertically
-			splitting cell with colspan &gt; 1 breaks table layout.</li>
-		<li>[<a target="_blank" href="http://dev.fckeditor.net/ticket/2597">#2597</a>] Fixed
-			the issue where dropping contents from outside of the editor doesn't work in Safari.</li>
-		<li>[<a target="_blank" href="http://dev.fckeditor.net/ticket/2412">#2412</a>] Fixed
-			the issue where FCK.InsertHtml() is no longer removing selected contents after content
-			insertion in Firefox.</li>
-		<li>[<a target="_blank" href="http://dev.fckeditor.net/ticket/2407">#2407</a>] Fixed
-			the issue where the Div container command and the blockquote command would break
-			lists.</li>
-		<li>[<a target="_blank" href="http://dev.fckeditor.net/ticket/2469">#2469</a>] Fixed
-			a minor issue where FCK.SetData() may cause the editor to become unresponsive to
-			the first click after being defocused.</li>
-		<li>[<a target="_blank" href="http://dev.fckeditor.net/ticket/2611">#2611</a>] Fixed
-			an extra slash on quickupload of the asp connector.</li>
-		<li>[<a target="_blank" href="http://dev.fckeditor.net/ticket/2616">#2616</a>] Fixed
-			another situation where new elements were inserted at the beginning of the content
-			in IE.</li>
-		<li>[<a target="_blank" href="http://dev.fckeditor.net/ticket/2634">#2634</a>] Fixed
-			two obsolete references to Array::AddItem() instances still in the code.</li>
-		<li>[<a target="_blank" href="http://dev.fckeditor.net/ticket/2679">#2679</a>] Fixed
-			infinite loop problems with FCKDomRangeIterator class which causes some commands
-			to hang when applied to certain document structures.</li>
-		<li>[<a target="_blank" href="http://dev.fckeditor.net/ticket/2649">#2649</a>] Fixed
-			a JavaScript error in IE when user tries to search with the "Match whole word" option
-			enabled and the matched word is at exactly the end of document.</li>
-		<li>[<a target="_blank" href="http://dev.fckeditor.net/ticket/2603">#2603</a>] Changed
-			the <a href="http://docs.fckeditor.net/EMailProtection">EMailProtection</a> to "none"
-			for better compatibility.</li>
-		<li>[<a target="_blank" href="http://dev.fckeditor.net/ticket/2612">#2612</a>] The 'ForcePasteAsPlainText'
-			configuration option didn't work correctly in Safari and Chrome.</li>
-		<li>[<a target="_blank" href="http://dev.fckeditor.net/ticket/2696">#2696</a>] Fixed
-			non-working autogrow plugin.</li>
-		<li>[<a target="_blank" href="http://dev.fckeditor.net/ticket/2753">#2753</a>] Fixed
-			occasional exceptions in the dragersizetable plugin with IE.</li>
-		<li>[<a target="_blank" href="http://dev.fckeditor.net/ticket/2653">#2653</a>] and [<a
-			target="_blank" href="http://dev.fckeditor.net/ticket/2733">#2733</a>] Enable undo
-			of changes to tables and table cells.</li>
-		<li>[<a target="_blank" href="http://dev.fckeditor.net/ticket/1865">#1865</a>] The context
-			menu is now working properly over the last row in a table with thead. Thanks to
-			Koen Willems.</li>
-	</ul>
-	<h3>
-		Version 2.6.3</h3>
-	<p>
-		Fixed Bugs:</p>
-	<ul>
-		<li>[<a target="_blank" href="http://dev.fckeditor.net/ticket/2412">#2412</a>] FCK.InsertHtml()
-			is now properly removing selected contents after content insertion in Firefox.</li>
-		<li>[<a target="_blank" href="http://dev.fckeditor.net/ticket/2420">#2420</a>] Spelling
-			mistake corrections made by the spell checking dialog are now undoable. </li>
-		<li>[<a target="_blank" href="http://dev.fckeditor.net/ticket/2411">#2411</a>] Insert
-			anchor was not working for non-empty selections.</li>
-		<li>[<a target="_blank" href="http://dev.fckeditor.net/ticket/2426">#2426</a>] It was
-			impossible to switch between editor areas with a single click.</li>
-		<li>Language file updates for the following languages:
-			<ul>
-				<li>Canadian French</li>
-				<li>[<a target="_blank" href="http://dev.fckeditor.net/ticket/2402">#2402</a>] Catalan
-				</li>
-				<li>[<a target="_blank" href="http://dev.fckeditor.net/ticket/2400">#2400</a>] Chinese
-					(Simplified and Traditional)</li>
-				<li>[<a target="_blank" href="http://dev.fckeditor.net/ticket/2401">#2401</a>] Croatian</li>
-				<li>[<a target="_blank" href="http://dev.fckeditor.net/ticket/2422">#2422</a>] Czech</li>
-				<li>[<a target="_blank" href="http://dev.fckeditor.net/ticket/2417">#2417</a>] Dutch</li>
-				<li>[<a target="_blank" href="http://dev.fckeditor.net/ticket/2428">#2428</a>] French</li>
-				<li>German</li>
-				<li>[<a target="_blank" href="http://dev.fckeditor.net/ticket/2427">#2427</a>] Hebrew</li>
-				<li>[<a target="_blank" href="http://dev.fckeditor.net/ticket/2410">#2410</a>] Hindi</li>
-				<li>[<a target="_blank" href="http://dev.fckeditor.net/ticket/2405">#2405</a>] Japanese</li>
-				<li>[<a target="_blank" href="http://dev.fckeditor.net/ticket/2409">#2409</a>] Norwegian
-					and Norwegian Bokmål</li>
-				<li>[<a target="_blank" href="http://dev.fckeditor.net/ticket/2429">#2429</a>] Spanish</li>
-				<li>[<a target="_blank" href="http://dev.fckeditor.net/ticket/2406">#2406</a>] Vietnamese</li>
-			</ul>
-		</li>
-	</ul>
-	<p>
-		This version has been sponsored by <a href="http://www.dataillusion.com/fs/">Data Illusion
-			survey software solutions</a>.</p>
-	<h3>
-		Version 2.6.3 Beta</h3>
-	<p>
-		New Features and Improvements:</p>
-	<ul>
-		<li>[<a target="_blank" href="http://dev.fckeditor.net/ticket/439">#439</a>] Added a
-			new <strong>context menu option for opening links</strong> in the editor.</li>
-		<li>[<a target="_blank" href="http://dev.fckeditor.net/ticket/2220">#2220</a>] <strong>
-			Email links</strong> from the Link dialog <strong>are now encoded</strong> by default
-			to prevent being harvested by spammers. (Kudos to asuter for proposing the patch)
-		</li>
-		<li>[<a target="_blank" href="http://dev.fckeditor.net/ticket/2234">#2234</a>] Added
-			the ability to create, modify and remove <strong>DIV containers</strong>. </li>
-		<li>[<a target="_blank" href="http://dev.fckeditor.net/ticket/2247">#2247</a>] The <strong>
-			SHIFT+SPACE</strong> keystroke will now <strong>produce a &amp;nbsp;</strong> character.
-		</li>
-		<li>[<a target="_blank" href="http://dev.fckeditor.net/ticket/2252">#2252</a>] It's
-			now possible to enable the browsers default menu using the configuration file (FCKConfig.BrowserContextMenu
-			option). </li>
-		<li>[<a target="_blank" href="http://dev.fckeditor.net/ticket/2032">#2032</a>] Added
-			HTML samples for legacy HTML and Flash HTML. </li>
-		<li>[<a target="_blank" href="http://dev.fckeditor.net/ticket/234">#234</a>] Introduced
-			the "PreventSubmitHandler" setting, which makes it possible to instruct the editor
-			to not handle the hidden field update on form submit events.</li>
-	</ul>
-	<p>
-		Fixed Bugs:</p>
-	<ul>
-		<li>[<a target="_blank" href="http://dev.fckeditor.net/ticket/2319">#2319</a>] On Opera
-			and Firefox 3, the entire page was scrolling on SHIFT+ENTER, or when EnterMode='br'.</li>
-		<li>[<a target="_blank" href="http://dev.fckeditor.net/ticket/2321">#2321</a>] On Firefox
-			3, the entire page was scrolling when inserting block elements with the FCK.InsertElement
-			function, used by the Table and Horizontal Rule buttons.. </li>
-		<li>[<a target="_blank" href="http://dev.fckeditor.net/ticket/692">#692</a>] Added some
-			hints in editor/css/fck_editorarea.css on how to handle style items that would break
-			the style combo. </li>
-		<li>[<a target="_blank" href="http://dev.fckeditor.net/ticket/2263">#2263</a>] Fixed
-			a JavaScript error in IE which occurs when there are placeholder elements in the
-			document and the user has pressed the Source button.</li>
-		<li>[<a target="_blank" href="http://dev.fckeditor.net/ticket/2314">#2314</a>] Corrected
-			mixed up Chinese translations for the blockquote command.</li>
-		<li>[<a target="_blank" href="http://dev.fckeditor.net/ticket/2323">#2323</a>] Fixed
-			the issue where the show blocks command loses the current selection from the view
-			area when editing a long document.</li>
-		<li>[<a target="_blank" href="http://dev.fckeditor.net/ticket/2322">#2322</a>] Fixed
-			the issue where the fit window command loses the current selection and scroll position
-			in the editing area.</li>
-		<li>[<a target="_blank" href="http://dev.fckeditor.net/ticket/1917">#1917</a>] Fixed
-			the issue where the merge down command for tables cells does not work in IE for
-			more than two cells.</li>
-		<li>[<a target="_blank" href="http://dev.fckeditor.net/ticket/2320">#2320</a>] Fixed
-			the issue where the Find/Replace dialog scrolls the entire page.</li>
-		<li>[<a target="_blank" href="http://dev.fckeditor.net/ticket/1645">#1645</a>] Added
-			warning message about Firefox 3's strict origin policy.</li>
-		<li>[<a target="_blank" href="http://dev.fckeditor.net/ticket/2272">#2272</a>] Improved
-			the garbage filter in Paste from Word dialog.</li>
-		<li>[<a target="_blank" href="http://dev.fckeditor.net/ticket/2327">#2327</a>] Fixed
-			invalid HTML in the Paste dialog.</li>
-		<li>[<a target="_blank" href="http://dev.fckeditor.net/ticket/1907">#1907</a>] Fixed
-			sporadic "FCKeditorAPI is not defined" errors in Firefox 3.</li>
-		<li>[<a target="_blank" href="http://dev.fckeditor.net/ticket/2356">#2356</a>] Fixed
-			access denied error in IE7 when FCKeditor is launched from local filesystem.</li>
-		<li>[<a target="_blank" href="http://dev.fckeditor.net/ticket/1150">#1150</a>] Fixed
-			the type="_moz" attribute that sometimes appear in &lt;br&gt; tags in non-IE browsers.</li>
-		<li>[<a target="_blank" href="http://dev.fckeditor.net/ticket/1229">#1229</a>] Converting
-			multiple contiguous paragraphs to Formatted will now be merged into a single &lt;PRE&gt;
-			block.</li>
-		<li>[<a target="_blank" href="http://dev.fckeditor.net/ticket/2363">#2363</a>] There
-			were some sporadic "Permission Denied" errors with IE on some situations.</li>
-		<li>[<a target="_blank" href="http://dev.fckeditor.net/ticket/2135">#2135</a>] Fixed
-			a data loss bug in IE when there are @import statements in the editor's CSS files,
-			and IE's cache is set to "Check for newer versions on every visit".</li>
-		<li>[<a target="_blank" href="http://dev.fckeditor.net/ticket/2376">#2376</a>] FCK.InsertHtml()
-			will now insert to the last selected position after the user has selected things
-			outside of FCKeditor, in IE.</li>
-		<li>[<a target="_blank" href="http://dev.fckeditor.net/ticket/2368">#2368</a>] Fixed
-			broken protect source logic for comments in IE.</li>
-		<li>[<a target="_blank" href="http://dev.fckeditor.net/ticket/2387">#2387</a>] Fixed
-			JavaScript error with list commands when the editable document is selected with
-			Ctrl-A.</li>
-		<li>[<a target="_blank" href="http://dev.fckeditor.net/ticket/2390">#2390</a>] Fixed
-			the issue where indent styles in JavaScript-generated &lt;p&gt; blocks are erased
-			in IE.</li>
-		<li>[<a target="_blank" href="http://dev.fckeditor.net/ticket/2394">#2394</a>] Fixed
-			JavaScript error with the "split vertically" command in IE when attempting to split
-			cells in the last row of a table.</li>
-		<li>[<a target="_blank" href="http://dev.fckeditor.net/ticket/2316">#2316</a>] The sample
-			posted data page has now the table fixed at 100% width. </li>
-		<li>[<a target="_blank" href="http://dev.fckeditor.net/ticket/2396">#2396</a>] SpellerPages
-			was causing a "Permission Denied" error in some situations. </li>
-	</ul>
-	<h3>
-		Version 2.6.2</h3>
-	<p>
-		New Features and Improvements:</p>
-	<ul>
-		<li>[<a target="_blank" href="http://dev.fckeditor.net/ticket/2043">#2043</a>] The debug
-			script is not any more part of the compressed files. If FCKeditor native debugging
-			features (FCKDebug) are required, the _source folder must be present in your installation.</li>
-	</ul>
-	<p>
-		Fixed Bugs:</p>
-	<ul>
-		<li>[<a target="_blank" href="http://dev.fckeditor.net/ticket/2248">#2248</a>] Calling
-			FCK.InsertHtml( 'nbsp;') was inserting a plain space instead of a non breaking space
-			character.</li>
-		<li>[<a target="_blank" href="http://dev.fckeditor.net/ticket/2273">#2273</a>] The dragresizetable
-			plugin now works in Firefox 3 as well.</li>
-		<li>[<a target="_blank" href="http://dev.fckeditor.net/ticket/2254">#2254</a>] Minor
-			fix in FCKSelection for nodeTagName object.</li>
-		<li>[<a target="_blank" href="http://dev.fckeditor.net/ticket/1614">#1614</a>] Unified
-			FCKConfig.FullBasePath with FCKConfig.BasePath.</li>
-		<li>[<a target="_blank" href="http://dev.fckeditor.net/ticket/2127">#2127</a>] Changed
-			floating dialogs to use fixed positioning so that they are no longer affected by
-			scrolling.</li>
-		<li>[<a target="_blank" href="http://dev.fckeditor.net/ticket/2018">#2018</a>] Reversed
-			the fix for <a target="_blank" href="http://dev.fckeditor.net/ticket/183">#183</a>
-			which broke FCKeditorAPI's cleanup logic. A new configuration directive <strong>MsWebBrowserControlCompat</strong>
-			has been added for those who wish to force the #183 fix to be enabled.</li>
-		<li>[<a target="_blank" href="http://dev.fckeditor.net/ticket/2276">#2276</a>] [<a
-			target="_blank" href="http://dev.fckeditor.net/ticket/2279">#2279</a>] On Opera
-			and Firefox 3, the entire page was scrolling on ENTER.</li>
-		<li>[<a target="_blank" href="http://dev.fckeditor.net/ticket/2149">#2149</a>] CSS urls
-			with querystring parameters were not being accepted for CSS values in the configuration
-			file (like EditorAreaCSS).</li>
-		<li>[<a target="_blank" href="http://dev.fckeditor.net/ticket/2287">#2287</a>] On some
-			specific cases, with Firefox 2, some extra spacing was appearing in the final HTML
-			on posting, if inserting two successive tables.</li>
-		<li>[<a target="_blank" href="http://dev.fckeditor.net/ticket/2287">#2287</a>] Block
-			elements (like tables or horizontal rules) will be inserted correctly now when the
-			cursor is at the start or the end of blocks. No extra paragraphs will be included
-			in this operation.</li>
-		<li>[<a target="_blank" href="http://dev.fckeditor.net/ticket/2149">#2197</a>] The TAB
-			key will now have the default browser behavior if TabSpaces=0. It will move the
-			focus out of the editor (expect on Safari).</li>
-		<li>[<a target="_blank" href="http://dev.fckeditor.net/ticket/2296">#2296</a>] Fixed
-			permission denied error on clicking on files in the file browser.</li>
-	</ul>
-	<h3>
-		Version 2.6.1</h3>
-	<p>
-		New Features and Improvements:</p>
-	<ul>
-		<li>[<a target="_blank" href="http://dev.fckeditor.net/ticket/2150">#2150</a>] The searching
-			speed of the Find/Replace dialog has been vastly improved.</li>
-		<li>New language file for <strong>Gujarati</strong> (by Nilam Doctor).</li>
-		<li>A new TabIndex property has been added to the JavaScript integration files.</li>
-		<li>[<a target="_blank" href="http://dev.fckeditor.net/ticket/2215">#2215</a>] Following
-			the above new feature, the ReplaceTextarea method will now copy the textarea.tabIndex
-			value if available.</li>
-		<li>[<a target="_blank" href="http://dev.fckeditor.net/ticket/2163">#2163</a>] If the
-			FCKConfig.DocType setting points to a HTML DocType then the output won't generate
-			self-closing tags (it will output &lt;img &gt; instead of &lt;img /&gt;).</li>
-		<li>[<a target="_blank" href="http://dev.fckeditor.net/ticket/2173">#2173</a>] A throbber
-			will be shown in the Quick Uploads.</li>
-		<li>[<a target="_blank" href="http://dev.fckeditor.net/ticket/2142">#2142</a>] HTML
-			samples will now use sampleposteddata.php in action parameter inside a form.</li>
-	</ul>
-	<p>
-		Fixed Bugs:</p>
-	<ul>
-		<li>[<a target="_blank" href="http://dev.fckeditor.net/ticket/768">#768</a>] It is no
-			longer possible for an image to have its width and height defined with both HTML
-			attributes and inline CSS styles in IE.</li>
-		<li>[<a target="_blank" href="http://dev.fckeditor.net/ticket/1426">#1426</a>] Fixed
-			the error loading fckstyles.xml in servers which cannot return the correct content
-			type header for .xml files.</li>
-		<li>[<a target="_blank" href="http://dev.fckeditor.net/ticket/2102">#2102</a>] Fixed
-			FCKConfig.DocType which stopped working in FCKeditor 2.6.</li>
-		<li>[<a target="_blank" href="http://dev.fckeditor.net/ticket/2039">#2039</a>] Fixed
-			the locking up issue in the Find/Replace dialog.</li>
-		<li>[<a target="_blank" href="http://dev.fckeditor.net/ticket/2124">#2124</a>] PHP File
-			Browser: fixed issue with resolving paths on Windows servers with PHP 5.2.4/5.2.5.</li>
-		<li>[<a target="_blank" href="http://dev.fckeditor.net/ticket/2059">#2059</a>] Fixed
-			the error in the toolbar name in fckeditor.py.</li>
-		<li>[<a target="_blank" href="http://dev.fckeditor.net/ticket/2065">#2065</a>] Floating
-			dialogs will now block the user from re-selecting the editing area by pressing Tab.</li>
-		<li>[<a target="_blank" href="http://dev.fckeditor.net/ticket/2114">#2114</a>] Added
-			a workaround for an IE6 bug which causes floating dialogs to appear blank after
-			opening it for the first time.</li>
-		<li>[<a target="_blank" href="http://dev.fckeditor.net/ticket/2136">#2136</a>] Fixed
-			JavaScript error in IE when opening the bullet list properties dialog.</li>
-		<li>[<a target="_blank" href="http://dev.fckeditor.net/ticket/1633">#1633</a>] External
-			styles should no longer interfere with the appearance of the editor and floating
-			panels now.</li>
-		<li>[<a target="_blank" href="http://dev.fckeditor.net/ticket/2113">#2113</a>] Fixed
-			unneeded &lt;span class=&quot;Apple-style-span&quot;&gt; created after inserting
-			special characters.</li>
-		<li>[<a target="_blank" href="http://dev.fckeditor.net/ticket/2170">#2170</a>] Fixed
-			Ctrl-Insert hotkey for copying.</li>
-		<li>[<a target="_blank" href="http://dev.fckeditor.net/ticket/2125">#2125</a>] Fixed
-			the issue that FCK.InsertHtml() doesn't insert contents at the caret position when
-			dialogs are opened in IE. </li>
-		<li>[<a target="_blank" href="http://dev.fckeditor.net/ticket/1764">#1764</a>] FCKeditor
-			will no longer catch focus in IE on load when StartupFocus is false and the initial
-			content is empty.</li>
-		<li>[<a target="_blank" href="http://dev.fckeditor.net/ticket/2126">#2126</a>] Opening
-			and closing floating dialogs will no longer cause toolbar button states to become
-			frozen.</li>
-		<li>[<a target="_blank" href="http://dev.fckeditor.net/ticket/2159">#2159</a>] Selection
-			are now correctly restored when undoing changes made by the Replace dialog.</li>
-		<li>[<a target="_blank" href="http://dev.fckeditor.net/ticket/2160">#2160</a>] "Match
-			whole word" in the Find and Replace dialog will now find words next to punctuation
-			marks as well.</li>
-		<li>[<a target="_blank" href="http://dev.fckeditor.net/ticket/2162">#2162</a>] If the
-			configuration is set to work including the &lt;head&gt; (FullPage), references to
-			stylesheets added by Firefox extensions won't be added to the output.</li>
-		<li>[<a target="_blank" href="http://dev.fckeditor.net/ticket/2168">#2168</a>] Comments
-			won't generate new paragraphs in the output.</li>
-		<li>[<a target="_blank" href="http://dev.fckeditor.net/ticket/2184">#2184</a>] Fixed
-			several validation errors in the File Browser.</li>
-		<li>[<a target="_blank" href="http://dev.fckeditor.net/ticket/1383">#1383</a>] Fixed
-			an IE issue where pressing backspace may merge a hyperlink on the previous line
-			with the text on the current line.</li>
-		<li>[<a target="_blank" href="http://dev.fckeditor.net/ticket/1691">#1691</a>] Creation
-			of links in Safari failed if there was no selection.</li>
-		<li>[<a target="_blank" href="http://dev.fckeditor.net/ticket/2188">#2188</a>] PreserveSessionOnFileBrowser
-			is now removed as it was made obsolete with 2.6.</li>
-		<li>[<a target="_blank" href="http://dev.fckeditor.net/ticket/898">#898</a>] The styles
-			for the editing area are applied in the image preview dialog.</li>
-		<li>[<a target="_blank" href="http://dev.fckeditor.net/ticket/2056">#2056</a>] Fixed
-			several validation errors in the dialogs.</li>
-		<li>[<a target="_blank" href="http://dev.fckeditor.net/ticket/2063">#2063</a>] Fixed
-			some problems in asp related to the use of network paths for the location of the
-			uploaded files.</li>
-		<li>[<a target="_blank" href="http://dev.fckeditor.net/ticket/1593">#1593</a>] The "Sample
-			Posted Data" page will now properly wrap the text.</li>
-		<li>[<a target="_blank" href="http://dev.fckeditor.net/ticket/2239">#2239</a>] The PHP
-			code in sampleposteddata.php has been changed from "&lt;?=" to "&lt;? echo".</li>
-		<li>[<a target="_blank" href="http://dev.fckeditor.net/ticket/2241">#2241</a>] Fixed
-			404 error in floating panels when FCKeditor is installed to a different domain.</li>
-		<li>[<a target="_blank" href="http://dev.fckeditor.net/ticket/2066">#2066</a>] Added
-			a workaround for a Mac Safari 3.1 browser bug which caused the Fit Window button
-			to give a blank screen.</li>
-		<li>[<a target="_blank" href="http://dev.fckeditor.net/ticket/2218">#2218</a>] Improved
-			Gecko based browser detection to accept Epiphany/Gecko as well.</li>
-		<li>[<a target="_blank" href="http://dev.fckeditor.net/ticket/2193">#2193</a>] Fixed
-			the issue where the caret cannot reach the last character of a paragraph in Opera
-			9.50.</li>
-		<li>[<a target="_blank" href="http://dev.fckeditor.net/ticket/2264">#2264</a>] Fixed
-			empty spaces that appear at the top of the editor in Opera 9.50.</li>
-		<li>[<a target="_blank" href="http://dev.fckeditor.net/ticket/2238">#2238</a>] The &lt;object&gt;
-			placeholder was not being properly displayed in the compressed distribution version
-			and nightly builds.</li>
-		<li>[<a target="_blank" href="http://dev.fckeditor.net/ticket/2115">#2115</a>] Fixed
-			JavaScript (permission denied) error in Firefox when file has been uploaded.</li>
-	</ul>
-	<h3>
-		Version 2.6</h3>
-	<p>
-		No changes. The stabilization of the 2.6 RC was completed successfully, as expected.</p>
-	<h3>
-		Version 2.6 RC</h3>
-	<p>
-		New Features and Improvements:</p>
-	<ul>
-		<li>[<a target="_blank" href="http://dev.fckeditor.net/ticket/2017">#2017</a>] The FCKeditorAPI.Instances
-			object can now be used to access all FCKeditor instances available in the page.</li>
-		<li>[<a target="_blank" href="http://dev.fckeditor.net/ticket/1980">#1980</a>] <span
-			style="color: #ff0000">Attention:</span> By default, the editor now produces &lt;strong&gt;
-			and &lt;em&gt; instead of &lt;b&gt; and &lt;i&gt;.</li>
-	</ul>
-	<p>
-		Fixed Bugs:</p>
-	<ul>
-		<li>[<a target="_blank" href="http://dev.fckeditor.net/ticket/1924">#1924</a>] The dialog
-			close button is now correctly positioned in IE in RTL languages.</li>
-		<li>[<a target="_blank" href="http://dev.fckeditor.net/ticket/1933">#1933</a>] Placeholder
-			dialog will now display the placeholder value correctly in IE.</li>
-		<li>[<a target="_blank" href="http://dev.fckeditor.net/ticket/957">#957</a>] Pressing
-			Enter or typing after a placeholder with the placeholder plugin will no longer generate
-			colored text.</li>
-		<li>[<a target="_blank" href="http://dev.fckeditor.net/ticket/1952">#1952</a>] Fixed
-			an issue in FCKTools.FixCssUrls that, other than wrong, was breaking Opera.</li>
-		<li>[<a target="_blank" href="http://dev.fckeditor.net/ticket/1695">#1695</a>] Removed
-			Ctrl-Tab hotkey for Source mode and allowed Ctrl-T to work in Firefox.</li>
-		<li>[<a target="_blank" href="http://dev.fckeditor.net/ticket/1666">#1666</a>] Fixed
-			permission denied errors during opening popup menus in IE6 under domain relaxation
-			mode.</li>
-		<li>[<a target="_blank" href="http://dev.fckeditor.net/ticket/1934">#1934</a>] Fixed
-			JavaScript errors when calling Selection.EnsureSelection() in dialogs.</li>
-		<li>[<a target="_blank" href="http://dev.fckeditor.net/ticket/1920">#1920</a>] Fixed
-			SSL warning message when opening image and flash dialogs under HTTPS in IE6.</li>
-		<li>[<a target="_blank" href="http://dev.fckeditor.net/ticket/1955">#1955</a>] [<a
-			target="_blank" href="http://dev.fckeditor.net/ticket/1981">#1981</a>] [<a target="_blank"
-				href="http://dev.fckeditor.net/ticket/1985">#1985</a>] [<a target="_blank" href="http://dev.fckeditor.net/ticket/1989">#1989</a>]
-			Fixed XHTML source formatting errors in non-IE browsers.</li>
-		<li>[<a target="_blank" href="http://dev.fckeditor.net/ticket/2000">#2000</a>] The #
-			character is now properly encoded in file names returned by the File Browser.</li>
-		<li>[<a target="_blank" href="http://dev.fckeditor.net/ticket/1945">#1945</a>] New folders
-			and file names are now properly sanitized against control characters. </li>
-		<li>[<a target="_blank" href="http://dev.fckeditor.net/ticket/1944">#1944</a>] Backslash
-			character is now disallowed in current folder path.</li>
-		<li>[<a target="_blank" href="http://dev.fckeditor.net/ticket/1055">#1055</a>] Added
-			logic to override JavaScript errors occurring inside the editing frame due to user
-			added JavaScript code.</li>
-		<li>[<a target="_blank" href="http://dev.fckeditor.net/ticket/1647">#1647</a>] Hitting
-			ENTER on list items containing block elements will now create new list item elements,
-			instead of adding further blocks to the same list item.</li>
-		<li>[<a target="_blank" href="http://dev.fckeditor.net/ticket/1411">#1411</a>] Label
-			only combos now get properly grayed out when moving to source view.</li>
-		<li>[<a target="_blank" href="http://dev.fckeditor.net/ticket/2009">#2009</a>] Fixed
-			an important bug regarding styles removal on styled text boundaries, introduced
-			with the 2.6 Beta 1. </li>
-		<li>[<a target="_blank" href="http://dev.fckeditor.net/ticket/2011">#2011</a>] Internal
-			CSS &lt;style&gt; tags where being outputted when FullPage=true.</li>
-		<li>[<a target="_blank" href="http://dev.fckeditor.net/ticket/2016">#2016</a>] The Link
-			dialog now properly selects the first field when opening it to modify mailto or
-			anchor links. This problem was also throwing an error in IE.</li>
-		<li>[<a target="_blank" href="http://dev.fckeditor.net/ticket/2021">#2021</a>] The caret
-			will no longer remain behind in the editing area when the placeholder dialog is
-			opened.</li>
-		<li>[<a target="_blank" href="http://dev.fckeditor.net/ticket/2024">#2024</a>] Fixed
-			JavaScript error in IE when the user tries to open dialogs in Source mode.</li>
-		<li>[<a target="_blank" href="http://dev.fckeditor.net/ticket/1853">#1853</a>] Setting
-			ShiftEnterMode to p or div now works correctly when EnterMode is br.</li>
-		<li>[<a target="_blank" href="http://dev.fckeditor.net/ticket/1838">#1838</a>] Fixed
-			the issue where context menus sometimes don't disappear after selecting an option.
-		</li>
-		<li>[<a target="_blank" href="http://dev.fckeditor.net/ticket/2028">#2028</a>] Fixed
-			JavaScript error when EnterMode=br and user tries to insert a page break.</li>
-		<li>[<a target="_blank" href="http://dev.fckeditor.net/ticket/2002">#2002</a>] Fixed
-			the issue where the maximize editor button does not vertically expand the editing
-			area in Firefox.</li>
-		<li>[<a target="_blank" href="http://dev.fckeditor.net/ticket/1842">#1842</a>] PHP integration:
-			fixed filename encoding problems in file browser.</li>
-		<li>[<a target="_blank" href="http://dev.fckeditor.net/ticket/1832">#1832</a>] Calling
-			FCK.InsertHtml() in non-IE browsers would now activate the document processor as
-			expected.</li>
-		<li>[<a target="_blank" href="http://dev.fckeditor.net/ticket/1998">#1998</a>] The native
-			XMLHttpRequest class is now used in IE, whenever it is available.</li>
-		<li>[<a target="_blank" href="http://dev.fckeditor.net/ticket/1792">#1792</a>] In IE,
-			the browser was able to enter in an infinite loop when working with multiple editors
-			in the same page. </li>
-		<li>[<a target="_blank" href="http://dev.fckeditor.net/ticket/1948">#1948</a>] Some
-			CSS rules are reset to dialog elements to avoid conflict with the page CSS.</li>
-		<li>[<a target="_blank" href="http://dev.fckeditor.net/ticket/1965">#1965</a>] IE was
-			having problems with SpellerPages, causing some errors to be thrown when completing
-			the spell checking in some situations.</li>
-		<li>[<a target="_blank" href="http://dev.fckeditor.net/ticket/2042">#2042</a>] The FitWindow
-			command was throwing an error if executed in an editor where its relative button
-			is not present in the toolbar.</li>
-		<li>[<a target="_blank" href="http://dev.fckeditor.net/ticket/922">#922</a>] Implemented
-			a generic document processor for &lt;OBJECT&gt; and &lt;EMBED&gt; tags.</li>
-		<li>[<a target="_blank" href="http://dev.fckeditor.net/ticket/1831">#1831</a>] Fixed
-			the issue where the placeholder icon for &lt;EMBED&gt; tags does not always show
-			up in IE7.</li>
-		<li>[<a target="_blank" href="http://dev.fckeditor.net/ticket/2049">#2049</a>] Fixed
-			a deleted cursor CSS attribute in the minified CSS inside fck_dialog_common.js.</li>
-		<li>[<a target="_blank" href="http://dev.fckeditor.net/ticket/1806">#1806</a>] In IE,
-			the caret will not any more move to the previous line when selecting a Format style
-			inside an empty paragraph.</li>
-		<li>[<a target="_blank" href="http://dev.fckeditor.net/ticket/1990">#1990</a>] In IE,
-			dialogs using API calls which deals with the selection, like InsertHtml now can
-			be sure the selection will be placed in the correct position.</li>
-		<li>[<a target="_blank" href="http://dev.fckeditor.net/ticket/1997">#1997</a>] With
-			IE, the first character of table captions where being lost on table creation.</li>
-		<li>The selection and cursor position was not being properly handled when creating some
-			elements like forms and tables.</li>
-		<li>[<a target="_blank" href="http://dev.fckeditor.net/ticket/662">#662</a>] In the
-			Perl sample files, the GetServerPath function will now calculate the path properly.</li>
-		<li>[<a target="_blank" href="http://dev.fckeditor.net/ticket/2208">#2208</a>] Added
-			missing translations in Italian language file.</li>
-		<li>[<a target="_blank" href="http://dev.fckeditor.net/ticket/2096">#2096</a>] Added
-			the codepage to basexml file. Filenames with special chars should now display properly.</li>
-	</ul>
-	<h3>
-		Version 2.6 Beta 1</h3>
-	<p>
-		New Features and Improvements:</p>
-	<ul>
-		<li>[<a target="_blank" href="http://dev.fckeditor.net/ticket/35">#35</a>] <strong>New
-			(and cool!) floating dialog system</strong>, avoiding problems with popup blockers
-			and enhancing the editor usability.</li>
-		<li>[<a target="_blank" href="http://dev.fckeditor.net/ticket/1886">#1886</a>] <strong>
-			Adobe AIR</strong> compatibility.</li>
-		<li>[<a target="_blank" href="http://dev.fckeditor.net/ticket/123">#123</a>] Full support
-			for <strong>document.domain</strong> with automatic domain detection.</li>
-		<li>[<a target="_blank" href="http://dev.fckeditor.net/ticket/1622">#1622</a>] New <strong>
-			inline CSS cache</strong> feature, making it possible to avoid downloading the CSS
-			files for the editing area and skins. For that, it is enough to set the EditorAreaCSS,
-			SkinEditorCSS and SkinDialogCSS to string values in the format "/absolute/path/for/urls/|&lt;minified
-			CSS styles". All internal CSS links are already using this feature. </li>
-		<li>New language file for <strong>Canadian French</strong>.</li>
-	</ul>
-	<p>
-		Fixed Bugs:</p>
-	<ul>
-		<li>[<a target="_blank" href="http://dev.fckeditor.net/ticket/1643">#1643</a>] Resolved
-			several "strict warning" messages in Firefox when running FCKeditor.</li>
-		<li>[<a target="_blank" href="http://dev.fckeditor.net/ticket/1522">#1522</a>] The ENTER
-			key will now work properly in IE with the cursor at the start of a formatted block.</li>
-		<li>[<a target="_blank" href="http://dev.fckeditor.net/ticket/1503">#1503</a>] It's
-			possible to define in the Styles that a Style (with an empty class) must be shown
-			selected only when no class is present in the current element, and selecting that
-			item will clear the current class (it does apply to any attribute, not only classes).</li>
-		<li>[<a target="_blank" href="http://dev.fckeditor.net/ticket/191">#191</a>] The scrollbars
-			are now being properly shown in Firefox Mac when placing FCKeditor inside a hidden
-			div.</li>
-		<li>[<a target="_blank" href="http://dev.fckeditor.net/ticket/503">#503</a>] Orphaned
-			&lt;li&gt; elements now get properly enclosed in a &lt;ul&gt; on output.</li>
-		<li>[<a target="_blank" href="http://dev.fckeditor.net/ticket/309">#309</a>] The ENTER
-			key will not any more break &lt;button&gt; elements at the beginning of paragraphs.</li>
-		<li>[<a target="_blank" href="http://dev.fckeditor.net/ticket/1654">#1654</a>] The editor
-			was not loading on a specific unknown situation. The breaking point has been removed.</li>
-		<li>[<a target="_blank" href="http://dev.fckeditor.net/ticket/1707">#1707</a>] The editor
-			no longer hangs when operating on documents imported from Microsoft Word.</li>
-		<li>[<a target="_blank" href="http://dev.fckeditor.net/ticket/1514">#1514</a>] Floating
-			panels attached to a shared toolbar among multiple FCKeditor instances are no longer
-			misplaced when the editing areas are absolutely or relatively positioned.</li>
-		<li>[<a target="_blank" href="http://dev.fckeditor.net/ticket/1715">#1715</a>] The ShowDropDialog
-			is now enforced only when ForcePasteAsPlainText = true.</li>
-		<li>[<a target="_blank" href="http://dev.fckeditor.net/ticket/1336">#1336</a>] Sometimes
-			the autogrow plugin didn't work properly in Firefox.</li>
-		<li>[<a target="_blank" href="http://dev.fckeditor.net/ticket/1728">#1728</a>] External
-			toolbars are now properly sized in Opera.</li>
-		<li>[<a target="_blank" href="http://dev.fckeditor.net/ticket/1782">#1782</a>] Clicking
-			on radio buttons or checkboxes in the editor in IE will no longer cause lockups
-			in IE.</li>
-		<li>[<a target="_blank" href="http://dev.fckeditor.net/ticket/805">#805</a>] The FCKConfig.Keystrokes
-			commands where executed even if the command itself was disabled.</li>
-		<li>[<a target="_blank" href="http://dev.fckeditor.net/ticket/982">#982</a>] The button
-			to empty the box in the "Paste from Word" has been removed as it leads to confusion
-			for some users.</li>
-		<li>[<a target="_blank" href="http://dev.fckeditor.net/ticket/1682">#1682</a>] Editing
-			control elements in Firefox, Opera and Safari now works properly.</li>
-		<li>[<a target="_blank" href="http://dev.fckeditor.net/ticket/1613">#1613</a>] The editor
-			was surrounded by a &lt;div&gt; element that wasn't really needed.</li>
-		<li>[<a target="_blank" href="http://dev.fckeditor.net/ticket/676">#676</a>] If a form
-			control was moved in IE after creating it, then it did lose its name.</li>
-		<li>[<a target="_blank" href="http://dev.fckeditor.net/ticket/738">#738</a>] It wasn't
-			possible to change the type of an existing button.</li>
-		<li>[<a target="_blank" href="http://dev.fckeditor.net/ticket/1854">#1854</a>] Indentation
-			now works inside table cells.</li>
-		<li>[<a target="_blank" href="http://dev.fckeditor.net/ticket/1717">#1717</a>] The editor
-			was entering on looping on some specific cases when dealing with invalid source
-			markup.</li>
-		<li>[<a target="_blank" href="http://dev.fckeditor.net/ticket/1530">#1530</a>] Pasting
-			text into the "Find what" fields in the Find and Replace dialog would now activate
-			the find and replace buttons.</li>
-		<li>[<a target="_blank" href="http://dev.fckeditor.net/ticket/1828">#1828</a>] The Find/Replace
-			dialog will no longer display wrong starting positions for the match when there
-			are multiple and identical characters preceding the character at the real starting
-			point of the match.</li>
-		<li>[<a target="_blank" href="http://dev.fckeditor.net/ticket/1878">#1878</a>] Fixed
-			a JavaScript error which occurs in the Find/Replace dialog when the user presses
-			"Find" or "Replace" after the "No match found" message has appeared.</li>
-		<li>[<a target="_blank" href="http://dev.fckeditor.net/ticket/1355">#1355</a>] Line
-			breaks and spaces are now conserved when converting to and from the "Formatted"
-			format.</li>
-		<li>[<a target="_blank" href="http://dev.fckeditor.net/ticket/1670">#1670</a>] Improved
-			the background color behind smiley icons and special characters in their corresponding
-			dialogs.</li>
-		<li>[<a target="_blank" href="http://dev.fckeditor.net/ticket/1693">#1693</a>] Custom
-			error messages are now properly displayed in the file browser.</li>
-		<li>[<a target="_blank" href="http://dev.fckeditor.net/ticket/970">#970</a>] The text
-			and value fields in the selection box dialog will no longer extend beyond the dialog
-			limits when the user inputs a very long text or value for one of the selection options.</li>
-		<li>[<a target="_blank" href="http://dev.fckeditor.net/ticket/479">#479</a>] Fixed the
-			issue where pressing Enter in an &lt;o:p&gt; tag in IE does not generate line breaks.</li>
-		<li>[<a target="_blank" href="http://dev.fckeditor.net/ticket/481">#481</a>] Fixed the
-			issue where the image preview in image dialog sometimes doesn't display after selecting
-			the image from server browser.</li>
-		<li>[<a target="_blank" href="http://dev.fckeditor.net/ticket/1488">#1488</a>] PHP integration:
-			the FCKeditor class is now more PHP5/6 friendly ("public" keyword is used instead
-			of depreciated "var").</li>
-		<li>[<a target="_blank" href="http://dev.fckeditor.net/ticket/1815">#1815</a>] PHP integration:
-			removed closing tag: "?&gt;", so no additional whitespace added when files are included.</li>
-		<li>[<a target="_blank" href="http://dev.fckeditor.net/ticket/1906">#1906</a>] PHP file
-			browser: fixed problems with DetectHtml() function when open_basedir was set.</li>
-		<li>[<a target="_blank" href="http://dev.fckeditor.net/ticket/1871">#1871</a>] PHP file
-			browser: permissions applied with the chmod command are now configurable.</li>
-		<li>[<a target="_blank" href="http://dev.fckeditor.net/ticket/1872">#1872</a>] Perl
-			file browser: permissions applied with the chmod command are now configurable.</li>
-		<li>[<a target="_blank" href="http://dev.fckeditor.net/ticket/1873">#1873</a>] Python
-			file browser: permissions applied with the chmod command are now configurable.</li>
-		<li>[<a target="_blank" href="http://dev.fckeditor.net/ticket/1572">#1572</a>] ColdFusion
-			integration: fixed issues with setting the editor height.</li>
-		<li>[<a target="_blank" href="http://dev.fckeditor.net/ticket/1692">#1692</a>] ColdFusion
-			file browser: it is possible now to define TempDirectory to avoid issues with GetTempdirectory()
-			returning an empty string.</li>
-		<li>[<a target="_blank" href="http://dev.fckeditor.net/ticket/1379">#1379</a>] ColdFusion
-			file browser: resolved issues with OnRequestEnd.cfm breaking the file browser.</li>
-		<li>[<a target="_blank" href="http://dev.fckeditor.net/ticket/1509">#1509</a>] InsertHtml()
-			in IE will no longer turn the preceding normal whitespace into &amp;nbsp;.</li>
-		<li>[<a target="_blank" href="http://dev.fckeditor.net/ticket/958">#958</a>] The AddItem
-			method now has an additional fifth parameter "customData" that will be sent to the
-			Execute method of the command for that menu item, allowing a single command to be
-			used for different menu items..</li>
-		<li>[<a target="_blank" href="http://dev.fckeditor.net/ticket/1502">#1502</a>] The RemoveFormat
-			command now also removes the attributes from the cleaned text. The list of attributes
-			is configurable with FCKConfig.RemoveAttributes.</li>
-		<li>[<a target="_blank" href="http://dev.fckeditor.net/ticket/1596">#1596</a>] On Safari,
-			dialogs have now right-to-left layout when it runs a RTL language, like Arabic.</li>
-		<li>[<a target="_blank" href="http://dev.fckeditor.net/ticket/1344">#1344</a>] Added
-			warning message on Copy and Cut operation failure on IE due to paste permission
-			settings.</li>
-		<li>[<a target="_blank" href="http://dev.fckeditor.net/ticket/1868">#1868</a>] Links
-			to file browser has been changed to avoid requests containing double dots.</li>
-		<li>[<a target="_blank" href="http://dev.fckeditor.net/ticket/1229">#1229</a>] Converting
-			multiple contiguous paragraphs to Formatted will now be merged into a single &lt;PRE&gt;
-			block.</li>
-		<li>[<a target="_blank" href="http://dev.fckeditor.net/ticket/1627">#1627</a>] Samples
-			failed to load from local filesystem in IE7.</li>
-	</ul>
-	<h3>
-		Version 2.5.1</h3>
-	<p>
-		New Features and Improvements:</p>
-	<ul>
-		<li><strong>FCKeditor.Net 2.5</strong> compatibility.</li>
-		<li>JavaScript integration file:
-			<ul>
-				<li>The new "<strong>FCKeditor.ReplaceAllTextareas</strong>" function is being introduced,
-					making it possible to replace many (or unknown) &lt;textarea&gt; elements in a single
-					call. The replacement can be also filtered by CSS class name, or by a custom function
-					evaluator. </li>
-				<li>It is now possible to set the default BasePath for all editor instances by setting
-					<strong>FCKeditor.BasePath</strong>. This is extremely useful when working with
-					the ReplaceAllTextareas function. </li>
-			</ul>
-		</li>
-	</ul>
-	<p>
-		Fixed Bugs:</p>
-	<ul>
-		<li>[<a href="http://dev.fckeditor.net/ticket/339" target="_blank">#339</a>] [<a
-			href="http://dev.fckeditor.net/ticket/681" target="_blank">#681</a>] The SpellerPages
-			spell checker will now completely ignore the presence of HTML tags in the text.
-		</li>
-		<li>[<a href="http://dev.fckeditor.net/ticket/1643" target="_blank">#1643</a>] Resolved
-			several "strict warning" messages in Firefox when running FCKeditor. </li>
-		<li>[<a href="http://dev.fckeditor.net/ticket/1603" target="_blank">#1603</a>] Certain
-			specific markup was making FCKeditor entering in a loop, blocking its execution.
-		</li>
-		<li>[<a href="http://dev.fckeditor.net/ticket/1664" target="_blank">#1664</a>] The ENTER
-			key will not any more swap the order of the tags when hit at the end of paragraphs.
-		</li>
-	</ul>
-	<h3>
-		Version 2.5</h3>
-	<p>
-		New Features and Improvements:</p>
-	<ul>
-		<li>The heading options have been moved to the top, in the default settings for the
-			Format combo.</li>
-	</ul>
-	<p>
-		Fixed Bugs:</p>
-	<ul>
-		<li>The focus is now correctly set when working on Safari.</li>
-		<li>[<a target="_blank" href="http://dev.fckeditor.net/ticket/1436">#1436</a>] Nested
-			context menu panels are now correctly closed on Safari.</li>
-		<li>Empty anchors are now properly created on Safari.</li>
-		<li>[<a target="_blank" href="http://dev.fckeditor.net/ticket/1359">#1359</a>] FCKeditor
-			will no longer produce the strange visual effect of creating a selected space and
-			then deleting it in Internet Explorer.</li>
-		<li>[<a target="_blank" href="http://dev.fckeditor.net/ticket/1399">#1399</a>] Removed
-			the empty entry in the language selection box of sample03.html.</li>
-		<li>[<a target="_blank" href="http://dev.fckeditor.net/ticket/1400">#1400</a>] Fixed
-			the issue where the style selection box in sample14.html is not context sensitive.</li>
-		<li>[<a target="_blank" href="http://dev.fckeditor.net/ticket/1401">#1401</a>] Completed
-			Hebrew translation of the user interface.</li>
-		<li>[<a target="_blank" href="http://dev.fckeditor.net/ticket/1409">#1409</a>] Completed
-			Finnish translation of the user interface.</li>
-		<li>[<a target="_blank" href="http://dev.fckeditor.net/ticket/1414">#1414</a>] Fixed
-			the issue where entity code words written inside a &lt;pre&gt; block in Source mode
-			are not converted to the corresponding characters after switching back to editor
-			mode.</li>
-		<li>[<a target="_blank" href="http://dev.fckeditor.net/ticket/1418">#1418</a>] Fixed
-			the issue where a detached toolbar would flicker when FCKeditor is being loaded.</li>
-		<li>[<a target="_blank" href="http://dev.fckeditor.net/ticket/1419">#1419</a>] Fixed
-			the issue where pressing Delete in the middle of two lists would incorrectly move
-			contents after the lists to the character position.</li>
-		<li>[<a target="_blank" href="http://dev.fckeditor.net/ticket/1420">#1420</a>] Fixed
-			the issue where empty list items can become collapsed and uneditable when it has
-			one of more indented list items directly under it. </li>
-		<li>[<a target="_blank" href="http://dev.fckeditor.net/ticket/1431">#1431</a>] Fixed
-			the issue where pressing Enter in a &lt;pre&gt; block in Internet Explorer would
-			move the caret one space forward instead of sending it to the next line.</li>
-		<li>[<a target="_blank" href="http://dev.fckeditor.net/ticket/1472">#1472</a>] Completed
-			Arabic translation of the user interface.</li>
-		<li>[<a target="_blank" href="http://dev.fckeditor.net/ticket/1474">#1474</a>] Fixed
-			the issue where reloading a page containing FCKeditor may provoke JavaScript errors
-			in Internet Explorer.</li>
-		<li>[<a target="_blank" href="http://dev.fckeditor.net/ticket/1478">#1478</a>] Fixed
-			the issue where parsing fckstyles.xml fails if the file contains no &lt;style&gt;
-			nodes.</li>
-		<li>[<a target="_blank" href="http://dev.fckeditor.net/ticket/1491">#1491</a>] Fixed
-			the issue where FCKeditor causes the selection to include an "end of line" character
-			in list items even though the list item is empty.</li>
-		<li>[<a target="_blank" href="http://dev.fckeditor.net/ticket/1496">#1496</a>] Fixed
-			the issue where attributes under &lt;area&gt; and &lt;map&gt; nodes are destroyed
-			or left unprotected when switching to and from Source mode.</li>
-		<li>[<a target="_blank" href="http://dev.fckeditor.net/ticket/1500">#1500</a>] Fixed
-			the issue where the function _FCK_PaddingNodeListener() is called excessively which
-			negatively affects performance.</li>
-		<li>[<a target="_blank" href="http://dev.fckeditor.net/ticket/1514">#1514</a>] Fixed
-			the issue where floating menus are incorrectly positioned when the toolbar or the
-			editor frame are not static positioned.</li>
-		<li>[<a target="_blank" href="http://dev.fckeditor.net/ticket/1518">#1518</a>] Fixed
-			the issue where excessive &lt;BR&gt; nodes are not removed after a paragraph is
-			split when creating lists.</li>
-		<li>[<a target="_blank" href="http://dev.fckeditor.net/ticket/1521">#1521</a>] Fixed
-			JavaScript error and erratic behavior of the Replace dialog.</li>
-		<li>[<a target="_blank" href="http://dev.fckeditor.net/ticket/1524">#1524</a>] Fixed
-			the issue where the caret jumps to the beginning or end of a list block and when
-			user is trying to select the end of a list item.</li>
-		<li>Completed Simplified Chinese translation of the user interface.</li>
-		<li>Completed Estonian translation of the user interface.</li>
-		<li>[<a target="_blank" href="http://dev.fckeditor.net/ticket/1406">#1406</a>] Editor
-			was always "dirty" if flash is available in the contents.</li>
-		<li>[<a target="_blank" href="http://dev.fckeditor.net/ticket/1561">#1561</a>] Non standard
-			elements are now properly applied if defined in the styles XML file.</li>
-		<li>[<a target="_blank" href="http://dev.fckeditor.net/ticket/1412">#1412</a>] The _QuickUploadLanguage
-			value is now work properly for Perl.</li>
-		<li>Several compatibility fixes for Firefox 3 (Beta 1):
-			<ul>
-				<li>[<a target="_blank" href="http://dev.fckeditor.net/ticket/1558">#1558</a>] Nested
-					context menu close properly when one of their options is selected.</li>
-				<li>[<a target="_blank" href="http://dev.fckeditor.net/ticket/1556">#1556</a>] Dialogs
-					contents are now showing completely, without scrollbar.</li>
-				<li>[<a target="_blank" href="http://dev.fckeditor.net/ticket/1559">#1559</a>] It is
-					not possible to have more than one panel opened at the same time.</li>
-				<li>[<a target="_blank" href="http://dev.fckeditor.net/ticket/1554">#1554</a>] Links
-					now get underlined.</li>
-				<li>[<a target="_blank" href="http://dev.fckeditor.net/ticket/1557">#1557</a>] The "Automatic"
-					and "More colors..." buttons were improperly styled in the color selector panels
-					(Opera too).</li>
-				<li>[<a target="_blank" href="http://dev.fckeditor.net/ticket/1462">#1462</a>] The enter
-					key will not any more scroll the main window.</li>
-			</ul>
-		</li>
-		<li>[<a target="_blank" href="http://dev.fckeditor.net/ticket/1562">#1562</a>] Fixed
-			the issue where empty paragraphs are added around page breaks each time the user
-			switches to Source mode.</li>
-		<li>[<a target="_blank" href="http://dev.fckeditor.net/ticket/1578">#1578</a>] The editor
-			will now scroll correctly when hitting enter in front of a paragraph.</li>
-		<li>[<a target="_blank" href="http://dev.fckeditor.net/ticket/1579">#1579</a>] Fixed
-			the issue where the create table and table properties dialogs are too narrow for
-			certain translations.</li>
-		<li>[<a target="_blank" href="http://dev.fckeditor.net/ticket/1580">#1580</a>] Completed
-			Polish translation of the user interface.</li>
-		<li>[<a target="_blank" href="http://dev.fckeditor.net/ticket/1591">#1591</a>] Fixed
-			JavaScript error when using the blockquote command in an empty document in IE.</li>
-		<li>[<a target="_blank" href="http://dev.fckeditor.net/ticket/1592">#1592</a>] Fixed
-			the issue where attempting to remove a blockquote with an empty paragraph would
-			leave behind an empty blockquote IE.</li>
-		<li>[<a target="_blank" href="http://dev.fckeditor.net/ticket/1594">#1594</a>] Undo/Redo
-			will now work properly for the color selectors.</li>
-		<li>[<a target="_blank" href="http://dev.fckeditor.net/ticket/1597">#1597</a>] The color
-			boxes are now properly rendered in the color selector panels on sample14.html.</li>
-	</ul>
-	<h3>
-		Version 2.5 Beta</h3>
-	<p>
-		New Features and Improvements:</p>
-	<ul>
-		<li>[<a target="_blank" href="http://dev.fckeditor.net/ticket/624">#624</a>] [<a
-			target="_blank" href="http://dev.fckeditor.net/ticket/634">#634</a>] [<a target="_blank"
-				href="http://dev.fckeditor.net/ticket/1300">#1300</a>] [<a target="_blank" href="http://dev.fckeditor.net/ticket/1301">#1301</a>]
-			Official compatibility support with <strong>Opera 9.50</strong> and <strong>Safari 3</strong>
-			(WebKit based browsers actually). These browsers are still in Beta, but we are confident
-			that we'll have amazing results as soon as they get stable. We are continuously
-			collaborating with Opera Software and Apple to bring a wonderful FCKeditor experience
-			over their browser platforms.</li>
-		<li>[<a target="_blank" href="http://dev.fckeditor.net/ticket/494">#494</a>] Introduced
-			the <strong>new Style System</strong>. We are not anymore relaying on browser features
-			to apply and remove styles, which guarantees that the editor will <strong>behave in
-				the same way in all browsers</strong>. It is an incredibly flexible system,
-			which aims to fit all developer's needs, from Flash content or HTML4 to XHTML 1.0
-			Strict or XHTML 1.1:
-			<ul>
-				<li>All basic formatting features, like Bold and Italic, can be precisely controlled
-					by using the configuration file (<b>CoreStyles</b> setting). It means that now,
-					the Bold button, for example, can produce &lt;b&gt;, &lt;strong&gt;, &lt;span class...&gt;,
-					&lt;span style...&gt; or anything the developer prefers.</li>
-				<li>Again with the <b>CoreStyles</b> setting, each block format, font, size, and even
-					the color pickers can precisely reflect end developer's needs.</li>
-				<li>Because of the above changes, font sizes are much more flexible. <b>Any kind of
-					font unit</b> can be used, including a mix of units.</li>
-				<li>All styles, including toolbar bottom styles, are precisely controlled when being
-					applied to the document. FCKeditor uses an element table derived from the <b>W3C XHTML
-						DTDs</b> to precisely create the elements, guarantee standards compliant code.</li>
-				<li><b>No more &lt;font&gt; tags</b>... well... actually, the system is so flexible
-					that it is up to you to use them or not.</li>
-				<li>It is possible to configure FCKeditor to produce a truly <b>semantic aware </b>and<b>
-					XHTML 1.1 compliant </b>code. Check out sample14.html.</li>
-				<li>It's also possible to precisely control which inline elements must be removed with
-					the &quot;Remove All&quot; button, by using the &quot;<b>RemoveFormatTags</b>&quot;
-					setting.</li>
-				<li>[<a target="_blank" href="http://dev.fckeditor.net/ticket/1231">#1231</a>] [<a
-					target="_blank" href="http://dev.fckeditor.net/ticket/160">#160</a>] Paragraph <b>indentation</b>
-					and <b>justification</b> now uses style attributes and don't create unnecessary
-					elements, and &lt;blockquote&gt; is not anymore used for it. Now, even CSS classes
-					can be used to indent or align text.</li>
-				<li>All paragraph formatting features work well when EnterMode=br.</li>
-				<li>[<a target="_blank" href="http://dev.fckeditor.net/ticket/172">#172</a>] All paragraph
-					formatting features work well when list items too.</li>
-			</ul>
-		</li>
-		<li>[<a target="_blank" href="http://dev.fckeditor.net/ticket/1197">#1197</a>] [<a
-			target="_blank" href="http://dev.fckeditor.net/ticket/132">#132</a>] The toolbar
-			now presents a <strong>new button for Blockquote</strong>. The indentation button
-			will not anymore be used for that.</li>
-		<li>[<a target="_blank" href="http://dev.fckeditor.net/ticket/125">#125</a>] Table's
-			<strong>columns size can now be changed by dragging on cell borders</strong>, with
-			the "dragresizetable" plugin. </li>
-		<li>The EditorAreaCSS config option can now also be set to a string of paths separated
-			by commas.</li>
-		<li>[<a target="_blank" href="http://dev.fckeditor.net/ticket/212">#212</a>] New "<strong>Show
-			Blocks</strong>" command button in toolbar to show block details in the editing
-			area. </li>
-		<li>[<a target="_blank" href="http://dev.fckeditor.net/ticket/915">#915</a>] The <strong>
-			undo/redo system has been revamped</strong> to work the same across Internet Explorer
-			and Gecko-based browsers (e.g. Firefox). A number of critical bugs in the undo/redo
-			system are also fixed. </li>
-		<li>[<a target="_blank" href="http://dev.fckeditor.net/ticket/194">#194</a>] The editor
-			now uses the <strong>Data Processor</strong> technology, which makes it possible
-			to handle different input formats. A sample of it may be found at "editor/plugins/bbcode/_sample",
-			that shows some simple BBCode support. </li>
-		<li>[<a target="_blank" href="http://dev.fckeditor.net/ticket/145">#145</a>] The "htaccess.txt"
-			file has been renamed to ".htaccess" as it doesn't bring security concerns, being
-			active out of the box.</li>
-		<li>File Browser and Quick Upload changes:
-			<ul>
-				<li>[<a target="_blank" href="http://dev.fckeditor.net/ticket/163">#163</a>] <span
-					style="color: #ff0000"><strong>Attention:</strong></span> The default connector
-					in fckconfig.js has been changed from ASP to PHP. If you are using ASP remember
-					to change the _FileBrowserLanguage and _QuickUploadLanguage settings in your fckconfig.js.
-					[<a target="_blank" href="http://dev.fckeditor.net/ticket/454">#454</a>] The file
-					browser and upload connectors have been unified so they can reuse the same configuration
-					settings.</li>
-				<li>[<a target="_blank" href="http://dev.fckeditor.net/ticket/865">#865</a>] The ASP
-					and PHP connectors have been improved so it's easy to select the location of the
-					destination folder for each file type, and it's no longer necessary to use the "file",
-					"image", "flash" subfolders<br />
-					<span style="color: #ff0000"><strong>Attention:</strong></span> The location of
-					all the connectors have been changed in the fckconfig.js file. Please check your
-					settings to match the current ones. Also review carefully the config file for your
-					server language. </li>
-				<li>[<a target="_blank" href="http://dev.fckeditor.net/ticket/688">#688</a>] Now the
-					Perl quick upload is available. </li>
-				<li>[<a target="_blank" href="http://dev.fckeditor.net/ticket/575">#575</a>] The Python
-					connector has been rewritten as a WSGI app to be fully compatible with the latest
-					python frameworks and servers. The QuickUpload feature has been added as well as
-					all the features available in the PHP connector. Thanks to Mariano Reingart.</li>
-				<li>[<a target="_blank" href="http://dev.fckeditor.net/ticket/561">#561</a>] The ASP
-					connector provides an AbsolutePath setting so it's possible to set the url to a
-					full domain or a relative path and specify that way the physical folder where the
-					files are stored..</li>
-				<li>[<a target="_blank" href="http://dev.fckeditor.net/ticket/333">#333</a>] The Quick
-					Upload now can use the same ServerPath parameter as the full connector.</li>
-				<li>[<a target="_blank" href="http://dev.fckeditor.net/ticket/199">#199</a>] The AllowedCommands
-					configuration setting is available in the asp and php connectors so it's possible
-					to disallow the upload of files (although the "select file" button will still be
-					available in the file browser).</li>
-			</ul>
-		</li>
-		<li>[<a target="_blank" href="http://dev.fckeditor.net/ticket/100">#100</a>] A new configuration
-			directive "FCKConfig.EditorAreaStyles" has been implemented to allow setting editing
-			area styles from JavaScript. </li>
-		<li>[<a target="_blank" href="http://dev.fckeditor.net/ticket/102">#102</a>] HTML code
-			generated by the "Paste As Plain Text" feature now obeys the EnterMode setting.</li>
-		<li>[<a target="_blank" href="http://dev.fckeditor.net/ticket/1266">#1266</a>] Introducing
-			the HtmlEncodeOutput setting to instruct the editor to HTML-encode some characters
-			(&amp;, &lt; and &gt;) in the posted data.</li>
-		<li>[<a target="_blank" href="http://dev.fckeditor.net/ticket/357">#357</a>] Added a
-			"Remove Anchor" option in the context menu for anchors. </li>
-		<li>[<a target="_blank" href="http://dev.fckeditor.net/ticket/1060">#1060</a>] Compatibility
-			checks with Firefox 3.0 Alpha. </li>
-		<li>[<a target="_blank" href="http://dev.fckeditor.net/ticket/817">#817</a>] [<a
-			target="_blank" href="http://dev.fckeditor.net/ticket/1077">#1077</a>] New "Merge
-			Down/Right" commands for merging tables cells in non-Gecko browsers.</li>
-		<li>[<a target="_blank" href="http://dev.fckeditor.net/ticket/1288">#1288</a>] The "More
-			Colors..." button in color selector popup has been made optional and configurable
-			by the <strong>EnableMoreFontColors</strong> option. </li>
-		<li>[<a target="_blank" href="http://dev.fckeditor.net/ticket/356">#356</a>] The <strong>
-			Find and Replace</strong> dialogs are now unified into a single dialog with tabs.</li>
-		<li>[<a target="_blank" href="http://dev.fckeditor.net/ticket/549">#549</a>] Added a
-			'None' option to the FCKConfig.ToolbarLocation option to allow for hidden toolbars.
-		</li>
-		<li>[<a target="_blank" href="http://dev.fckeditor.net/ticket/1313">#1313</a>] An XHTML
-			1.1 target editor sample has been created as sample14.html. </li>
-		<li>The ASP, ColdFusion and PHP integration have been aligned to our standards.</li>
-	</ul>
-	<p>
-		Fixed Bugs:</p>
-	<ul>
-		<li>[<a target="_blank" href="http://dev.fckeditor.net/ticket/71">#71</a>] [<a target="_blank"
-			href="http://dev.fckeditor.net/ticket/243">#243</a>] [<a target="_blank" href="http://dev.fckeditor.net/ticket/267">#267</a>]
-			The editor now takes care to not create invalid nested block elements, like creating
-			&lt;form&gt; or &lt;hr&gt; inside &lt;p&gt;. &nbsp;</li>
-		<li>[<a target="_blank" href="https://sourceforge.net/tracker/?func=detail&aid=1511298&group_id=75348&atid=543655">SF
-			Patch 1511298</a>] The CF Component failed on CFMX 6.0</li>
-		<li>[<a target="_blank" href="http://dev.fckeditor.net/ticket/639">#639</a>] If the
-			FCKConfig.DefaultLinkTarget setting was missing in fckconfig.js the links has target="undefined".</li>
-		<li>[<a target="_blank" href="http://dev.fckeditor.net/ticket/497">#497</a>] Fixed EMBED
-			attributes handling in IE.</li>
-		<li>[<a target="_blank" href="https://sourceforge.net/tracker/?func=detail&aid=1315722&group_id=75348&atid=543655">SF
-			Patch 1315722</a>] Avoid getting a cached version of the folder contents after uploading
-			a file</li>
-		<li>[<a target="_blank" href="https://sourceforge.net/tracker/?func=detail&aid=1386086&group_id=75348&atid=543655">SF
-			Patch 1386086</a>] The php connector has been protected so mkdir doesn't fail if
-			there are double slashes.</li>
-		<li>[<a target="_blank" href="http://dev.fckeditor.net/ticket/943">#943</a>] The PHP
-			connector now specifies that the included files are relative to the current path.</li>
-		<li>[<a target="_blank" href="http://dev.fckeditor.net/ticket/560">#560</a>] The PHP
-			connector will work better if the connector or the userfiles folder is a symlink.</li>
-		<li>[<a target="_blank" href="http://dev.fckeditor.net/ticket/784">#784</a>] Fixed a
-			non initialized $php_errormsg in the PHP connector.</li>
-		<li>[<a target="_blank" href="http://dev.fckeditor.net/ticket/802">#802</a>] The replace
-			dialog will now advance its searching position correctly and is able to search for
-			strings spanning across multiple inline tags.</li>
-		<li>[<a target="_blank" href="http://dev.fckeditor.net/ticket/944">#944</a>] The _samples
-			didn't work directly from the Mac filesystem.</li>
-		<li>[<a target="_blank" href="http://dev.fckeditor.net/ticket/946">#946</a>] Toolbar
-			images didn't show in non-IE browsers if the path contained a space.</li>
-		<li>[<a target="_blank" href="http://dev.fckeditor.net/ticket/291">#291</a>] [<a
-			target="_blank" href="http://dev.fckeditor.net/ticket/395">#395</a>] [<a target="_blank"
-				href="http://dev.fckeditor.net/ticket/932">#932</a>] Clicking outside the editor
-			it was possible to paste or apply formatting to the rest of the page in IE.</li>
-		<li>[<a target="_blank" href="http://dev.fckeditor.net/ticket/137">#137</a>] Fixed FCKConfig.TabSpaces
-			being ignored, and weird behaviors when pressing tab in edit source mode.</li>
-		<li>[<a target="_blank" href="http://dev.fckeditor.net/ticket/268">#268</a>] Fixed special
-			XHTML characters present in event attribute values being converted inappropriately
-			when switching to source view.</li>
-		<li>[<a target="_blank" href="http://dev.fckeditor.net/ticket/272">#272</a>] The toolbar
-			was cut sometimes in IE to just one row if there are multiple instances of the editor.</li>
-		<li>[<a target="_blank" href="http://dev.fckeditor.net/ticket/515">#515</a>] Tables
-			in Firefox didn't inherit font styles properly in Standards mode.</li>
-		<li>[<a target="_blank" href="http://dev.fckeditor.net/ticket/321">#321</a>] If FCKeditor
-			is initially hidden in Firefox it will no longer be necessary to call the oEditor.MakeEditable()
-			function.</li>
-		<li>[<a target="_blank" href="http://dev.fckeditor.net/ticket/299">#299</a>] The 'Browse
-			Server' button in the Image and Flash dialogs was a little too high.</li>
-		<li>[<a target="_blank" href="http://dev.fckeditor.net/ticket/931">#931</a>] The BodyId
-			and BodyClass configuration settings weren't applied in the preview window.</li>
-		<li>[<a target="_blank" href="http://dev.fckeditor.net/ticket/583">#583</a>] The "noWrap"
-			attribute for table cells was getting an empty value in Firefox. Thanks to geirhelge.</li>
-		<li>[<a target="_blank" href="http://dev.fckeditor.net/ticket/141">#141</a>] Fixed incorrect
-			startup focus in Internet Explorer after page reloads. </li>
-		<li>[<a target="_blank" href="http://dev.fckeditor.net/ticket/143">#143</a>] Fixed browser
-			lockup when the user writes &lt;!--{PS..x}&gt; into the editor in source mode. </li>
-		<li>[<a target="_blank" href="http://dev.fckeditor.net/ticket/174">#174</a>] Fixed incorrect
-			positioning of FCKeditor in full screen mode. </li>
-		<li>[<a target="_blank" href="http://dev.fckeditor.net/ticket/978">#978</a>] Fixed a
-			SpellerPages error with ColdFusion when no suggestions where available for a word.</li>
-		<li>[<a target="_blank" href="http://dev.fckeditor.net/ticket/977">#977</a>] The "shape"
-			attribute of &lt;area&gt; had its value changed to uppercase in IE.</li>
-		<li>[<a target="_blank" href="http://dev.fckeditor.net/ticket/996">#996</a>] "OnPaste"
-			event listeners will now get executed only once.</li>
-		<li>[<a target="_blank" href="http://dev.fckeditor.net/ticket/289">#289</a>] Removed
-			debugging popups from page load regarding JavaScript and CSS loading errors.</li>
-		<li>[<a target="_blank" href="http://dev.fckeditor.net/ticket/328">#328</a>] [<a
-			target="_blank" href="http://dev.fckeditor.net/ticket/346">#346</a>] [<a target="_blank"
-				href="http://dev.fckeditor.net/ticket/404">#404</a>] Fixed a number of problems
-			regarding &lt;pre&gt; blocks:
-			<ol>
-				<li>Leading whitespaces and line breaks in &lt;pre&gt; blocks are trimmed when the user
-					switches between editor mode and source mode;</li>
-				<li>Pressing Enter inside a &lt;pre&gt; block would split the block into two, but the
-					expected behavior is simply inserting a line break;</li>
-				<li>Simple line breaks inside &lt;pre&gt; blocks entered in source mode are being turned
-					into &lt;br&gt; tags when the user switches to editor mode and back.</li>
-			</ol>
-		</li>
-		<li>[<a target="_blank" href="http://dev.fckeditor.net/ticket/581">#581</a>] Fixed the
-			issue where the "Maximize the editor size" toolbar button stops working if any of
-			the following occurs:
-			<ol>
-				<li>There exists a form input whose name or id is "style" in FCKeditor's host form;</li>
-				<li>There exists a form input whose name or id is "className" in FCKeditor's host form;</li>
-				<li>There exists a form and a form input whose name of id is "style" in the editing
-					frame.</li>
-			</ol>
-		</li>
-		<li>[<a target="_blank" href="http://dev.fckeditor.net/ticket/183">#183</a>] Fixed the
-			issue when FCKeditor is being executed in a custom application with the WebBrowser
-			ActiveX control, hiding the WebBrowser control would incorrectly invoke FCKeditor's
-			cleanup routines, causing FCKeditor to stop working.</li>
-		<li>[<a target="_blank" href="http://dev.fckeditor.net/ticket/539">#539</a>] Fixed the
-			issue where right clicking on a table inside the editing frame in Firefox would
-			cause the editor the scroll to the top of the document.</li>
-		<li>[<a target="_blank" href="http://dev.fckeditor.net/ticket/523">#523</a>] Fixed the
-			issue where, under certain circumstances, FCKeditor would obtain focus at startup
-			even though FCKConfig.StartupFocus is set to false. </li>
-		<li>[<a target="_blank" href="http://dev.fckeditor.net/ticket/393">#393</a>] Fixed the
-			issue where if an inline tag is at the end of the document, the user would have
-			no way of escaping from the inline tag if he continues typing at the end of the
-			document. FCKeditor's behaviors regarding inline tags has been made to be more like
-			MS Word's:
-			<ol>
-				<li>If the caret is moved to the end of a hyperlink by the keyboard, then hyperlink
-					mode is disabled. </li>
-				<li>If the caret is moved to the end of other styled inline tags by any key other than
-					the End key (like bold text or italic text), the original bold/italic/... modes
-					would continue to be effective. </li>
-				<li>If the caret is moved to the end of other styled inline tags by the End key, all
-					style tag modes (e.g. bold, italic, underline, etc.) would be canceled. This is
-					not consistent with MS Word, but provides a convenient way for the user to escape
-					the inline tag at the end of a line.</li>
-			</ol>
-		</li>
-		<li>[<a target="_blank" href="http://dev.fckeditor.net/ticket/338">#338</a>] Fixed the
-			issue where the configuration directive FCKConfig.ForcePasteAsPlainText is ignored
-			when new contents are pasted into the editor via drag-and drop from outside of the
-			editor. </li>
-		<li>[<a target="_blank" href="http://dev.fckeditor.net/ticket/1026">#1026</a>] Fixed
-			the issue where the cursor or selection positions are not restored with undo/redo
-			commands correctly in IE, under some circumstances. </li>
-		<li>[<a target="_blank" href="http://dev.fckeditor.net/ticket/1160">#1160</a>] [<a
-			target="_blank" href="http://dev.fckeditor.net/ticket/1184">#1184</a>] Home, End
-			and Tab keys are working properly for numeric fields in dialogs. </li>
-		<li>[<a target="_blank" href="http://dev.fckeditor.net/ticket/68">#68</a>] The style
-			system now properly handles Format styles when EnterMode=br.</li>
-		<li>[<a target="_blank" href="http://dev.fckeditor.net/ticket/525">#525</a>] The union
-			of successive DIVs will work properly now if EnterMode!=div.</li>
-		<li>[<a target="_blank" href="http://dev.fckeditor.net/ticket/1227">#1227</a>] The color
-			commands used an unnecessary temporary variable. Thanks to Matthias Miller</li>
-		<li>[<a target="_blank" href="http://dev.fckeditor.net/ticket/67">#67</a>] [<a target="_blank"
-			href="http://dev.fckeditor.net/ticket/277">#277</a>] [<a target="_blank" href="http://dev.fckeditor.net/ticket/427">#427</a>]
-			[<a target="_blank" href="http://dev.fckeditor.net/ticket/428">#428</a>] [<a target="_blank"
-				href="http://dev.fckeditor.net/ticket/965">#965</a>] [<a target="_blank" href="http://dev.fckeditor.net/ticket/1178">#1178</a>]
-			[<a target="_blank" href="http://dev.fckeditor.net/ticket/1267">#1267</a>] The list
-			insertion/removal/indent/outdent logic in FCKeditor has been rewritten, such that:
-			<ol>
-				<li>Text separated by &lt;br&gt; will always be treated as separate items during list
-					insertion regardless of browser;</li>
-				<li>List removal will now always obey the FCKConfig.EnterMode setting;</li>
-				<li>List indentation will be XHTML 1.1 compliant - all child elements under an &lt;ol&gt;
-					or &lt;ul&gt; must be &lt;li&gt; nodes;</li>
-				<li>IE editor hacks like &lt;ul type=&quot;1&quot;&gt; will no longer appear;</li>
-				<li>Excessive &lt;div&gt; nodes are no longer inserted into list items due to alignment
-					changes.</li>
-			</ol>
-		</li>
-		<li>[<a target="_blank" href="http://dev.fckeditor.net/ticket/205">#205</a>] Fixed the
-			issue where visible &lt;br&gt; tags at the end of paragraphs are incorrectly removed
-			after switching to and from source mode.</li>
-		<li>[<a target="_blank" href="http://dev.fckeditor.net/ticket/1050">#1050</a>] Fixed
-			a minor PHP/XML incompatibility bug in editor/dialog/fck_docprops.html.</li>
-		<li>[<a target="_blank" href="http://dev.fckeditor.net/ticket/462">#462</a>] Fixed an
-			algorithm bug in switching from source mode to WYSIWYG mode which causes the browser
-			to spin up and freeze for broken HTML code inputs.</li>
-		<li>[<a target="_blank" href="http://dev.fckeditor.net/ticket/1019">#1019</a>] Table
-			command buttons are now disabled when the current selection is not inside a table.</li>
-		<li>[<a target="_blank" href="http://dev.fckeditor.net/ticket/135">#135</a>] Fixed the
-			issue where context menus are misplaced in FCKeditor when FCKeditor is created inside
-			a &lt;div&gt; node with scrolling. </li>
-		<li>[<a target="_blank" href="http://dev.fckeditor.net/ticket/1067">#1067</a>] Fixed
-			the issue where context menus are misplaced in Safari when FCKeditor is scrolled
-			down.</li>
-		<li>[<a target="_blank" href="http://dev.fckeditor.net/ticket/1081">#1081</a>] Fixed
-			the issue where undoing table deletion in IE7 would cause JavaScript errors.</li>
-		<li>[<a target="_blank" href="http://dev.fckeditor.net/ticket/1061">#1061</a>] Fixed
-			the issue where backspace and delete cannot delete special characters in Firefox
-			under some circumstances.</li>
-		<li>[<a target="_blank" href="http://dev.fckeditor.net/ticket/403">#403</a>] Fixed the
-			issue where switching to and from source mode in full page mode under IE would add
-			excessive line breaks to &lt;style&gt; blocks.</li>
-		<li>[<a target="_blank" href="http://dev.fckeditor.net/ticket/121">#121</a>] Fixed the
-			issue where maximizing FCKeditor inside a frameset would resize FCKeditor to the
-			whole window's size instead of just the container frame's size.</li>
-		<li>[<a target="_blank" href="http://dev.fckeditor.net/ticket/1093">#1093</a>] Fixed
-			the issue where pressing Enter inside an inline tag would not create a new paragraph
-			correctly.</li>
-		<li>[<a target="_blank" href="http://dev.fckeditor.net/ticket/1089">#1089</a>] Fixed
-			the issue where pressing Enter inside a &lt;pre&gt; block do not generate visible
-			line breaks in IE.</li>
-		<li>[<a target="_blank" href="http://dev.fckeditor.net/ticket/332">#332</a>] Hitting
-			Enter when the caret is at the end of a hyperlink will no longer continue the link
-			at the new paragraph.</li>
-		<li>[<a target="_blank" href="http://dev.fckeditor.net/ticket/1121">#1121</a>] Hitting
-			Enter with FCKConfig.EnterMode=br will now scroll the document correctly when the
-			new lines have exceeded the lower boundary of the editor frame.</li>
-		<li>[<a target="_blank" href="http://dev.fckeditor.net/ticket/1063">#1063</a>] [<a
-			target="_blank" href="http://dev.fckeditor.net/ticket/1084">#1084</a>] [<a target="_blank"
-				href="http://dev.fckeditor.net/ticket/1092">#1092</a>] Fixed a few Norwegian
-			language translation errors.</li>
-		<li>[<a target="_blank" href="http://dev.fckeditor.net/ticket/1148">#1148</a>] Fixed
-			the issue where the &quot;Automatic&quot; and &quot;More Colors...&quot; buttons
-			in the color selection panel are not centered in Safari.</li>
-		<li>[<a target="_blank" href="http://dev.fckeditor.net/ticket/1187">#1187</a>] Fixed
-			the issue where the &quot;Paste as plain text&quot; command cannot be undone in
-			non-IE browsers.</li>
-		<li>[<a target="_blank" href="http://dev.fckeditor.net/ticket/1222">#1222</a>] Ctrl-Backspace
-			operations will now save undo snapshots in all browsers.</li>
-		<li>[<a target="_blank" href="http://dev.fckeditor.net/ticket/1223">#1223</a>] Fixed
-			the issue where the insert link dialog would save multiple undo snapshots for a
-			single operation.</li>
-		<li>[<a target="_blank" href="http://dev.fckeditor.net/ticket/247">#247</a>] Fixed the
-			issue where deleting everything in the document in IE would create an empty &lt;p&gt;
-			block in the document regardless of EnterMode setting. </li>
-		<li>[<a target="_blank" href="http://dev.fckeditor.net/ticket/1280">#1280</a>] Fixed
-			the issue where opening a combo box will cause the editor frames to lose focus when
-			there are multiple editors in the same document.</li>
-		<li>[<a target="_blank" href="http://dev.fckeditor.net/ticket/363">#363</a>] Fixed the
-			issue where the Find dialog does not work under Opera.</li>
-		<li>[<a target="_blank" href="http://dev.fckeditor.net/ticket/50">#50</a>] Fixed the
-			issue where the Paste button is always disabled in Safari.</li>
-		<li>[<a target="_blank" href="http://dev.fckeditor.net/ticket/389">#389</a>] Pasting
-			text with comments from Word won't generate errors in IE, thanks to the idea from
-			Swift.</li>
-		<li>The pasting area in the Paste from Word dialog is focused on initial load</li>
-		<li>Some fixes related to html comment handling in the Word clean up routine</li>
-		<li>[<a target="_blank" href="http://dev.fckeditor.net/ticket/1303">#1303</a>] &lt;col&gt;
-			is correctly treated as an empty element.</li>
-		<li>[<a target="_blank" href="http://dev.fckeditor.net/ticket/969">#969</a>] Removed
-			unused files (fcknumericfield.htc and moz-bindings.xml).</li>
-		<li>[<a target="_blank" href="http://dev.fckeditor.net/ticket/1166">#1166</a>] Fixed
-			the issue where &lt;meta&gt; tags are incorrectly outputted with closing tags in
-			full page mode.</li>
-		<li>[<a target="_blank" href="http://dev.fckeditor.net/ticket/1200">#1200</a>] Fixed
-			the issue where context menus sometimes disappear prematurely before the user can
-			click on any items in Opera.</li>
-		<li>[<a target="_blank" href="http://dev.fckeditor.net/ticket/1315">#1315</a>] Fixed
-			the issue where the source view text area in Safari is displayed with an excessive
-			blue border.</li>
-		<li>[<a target="_blank" href="http://dev.fckeditor.net/ticket/1201">#1201</a>] Fixed
-			the issue where hitting Backspace or Delete inside a table cell deletes the table
-			cell instead of its contents in Opera.</li>
-		<li>[<a target="_blank" href="http://dev.fckeditor.net/ticket/1311">#1311</a>] Fixed
-			the issue where undoing and redoing a special character insertion would send the
-			caret to incorrect positions. (e.g. the beginning of document)</li>
-		<li>[<a target="_blank" href="http://dev.fckeditor.net/ticket/923">#923</a>] Font colors
-			are now properly applied on links.</li>
-		<li>[<a target="_blank" href="http://dev.fckeditor.net/ticket/1316">#1316</a>] Fixed
-			the issue where the image dialog expands to a size too big in Safari.</li>
-		<li>[<a target="_blank" href="http://dev.fckeditor.net/ticket/1306">#1306</a>] [<a
-			target="_blank" href="http://dev.fckeditor.net/ticket/894">#894</a>] The undo system
-			can now undo text formatting steps like setting fonts to bold and italic.</li>
-		<li>[<a target="_blank" href="http://dev.fckeditor.net/ticket/95">#95</a>] Fixed the
-			issue where FCKeditor breaks &lt;meta&gt; tags in full page mode in some circumstances.</li>
-		<li>[<a target="_blank" href="http://dev.fckeditor.net/ticket/175">#175</a>] Fixed the
-			issue where entering an email address with a '%' sign in the insert link dialog
-			would cause JavaScript error.</li>
-		<li>[<a target="_blank" href="http://dev.fckeditor.net/ticket/180">#180</a>] Improved
-			backward compatibility with older PHP versions. FCKeditor can now work with PHP
-			versions down to 4.0.</li>
-		<li>[<a target="_blank" href="http://dev.fckeditor.net/ticket/192">#192</a>] Document
-			modifying actions from the FCKeditor JavaScript API will now save undo steps.</li>
-		<li>[<a target="_blank" href="http://dev.fckeditor.net/ticket/246">#246</a>] Using text
-			formatting commands in EnterMode=div will no longer cause tags to randomly disappear.</li>
-		<li>[<a target="_blank" href="http://dev.fckeditor.net/ticket/327">#327</a>] It is no
-			longer possible for the browser's back action to misfire when a user presses backspace
-			while an image is being selected in FCKeditor.</li>
-		<li>[<a target="_blank" href="http://dev.fckeditor.net/ticket/362">#362</a>] Ctrl-Backspace
-			now works in FCKeditor.</li>
-		<li>[<a target="_blank" href="http://dev.fckeditor.net/ticket/390">#390</a>] Text alignment
-			and justification commands now respects EnterMode=br paragraph rules.</li>
-		<li>[<a target="_blank" href="http://dev.fckeditor.net/ticket/534">#534</a>] Pressing
-			Ctrl-End while the document contains a list towards the end will no longer make
-			the cursor disappear.</li>
-		<li>[<a target="_blank" href="http://dev.fckeditor.net/ticket/906">#906</a>] It is now
-			possible to have XHTML 1.0 Strict compliant output from a document pasted from Word.</li>
-		<li>[<a target="_blank" href="http://dev.fckeditor.net/ticket/929">#929</a>] Pressing
-			the Enter key will now produce an undo step.</li>
-		<li>[<a target="_blank" href="http://dev.fckeditor.net/ticket/934">#934</a>] Fixed the
-			"Cannot execute code from a freed script" error in IE from editor dialogs.</li>
-		<li>[<a target="_blank" href="http://dev.fckeditor.net/ticket/942">#942</a>] Server
-			based spell checking with ColdFusion integration no longer breaks fir non en_US
-			languages.</li>
-		<li>[<a target="_blank" href="http://dev.fckeditor.net/ticket/942">#1056</a>] Deleting
-			everything in the editor document and moving the cursor around will no longer leave
-			the cursor hanging beyond the top of the editor document.</li>
-	</ul>
-	<p>
-		# This version has been <a href="http://dev.fckeditor.net/wiki/SD/COE">partially sponsored</a>
-		by the <a href="http://www.coe.int/">Council of Europe</a>.
-	</p>
-	<h3>
-		Version 2.4.3</h3>
-	<p>
-		New Features and Improvements:</p>
-	<ul>
-		<li>It is now possible to set the default target when creating links, with the new "<strong>DefaultLinkTarget</strong>"
-			setting. </li>
-		<li>[<a target="_blank" href="http://dev.fckeditor.net/ticket/436">#436</a>] The new
-			"<strong>FirefoxSpellChecker</strong>" setting is available, to enable/disable the
-			Firefox built-in spellchecker while typing. Even if word suggestions will not appear
-			in the FCKeditor context menu, this feature is useful to quickly identify misspelled
-			words.</li>
-		<li>[<a target="_blank" href="http://dev.fckeditor.net/ticket/311">#311</a>] The new
-			"<strong>BrowserContextMenuOnCtrl</strong>" setting is being introduced, to enable/disable
-			the ability of displaying the default browser's context menu when right-clicking
-			with the CTRL key pressed.</li>
-	</ul>
-	<p>
-		Fixed Bugs:</p>
-	<ul>
-		<li>[<a target="_blank" href="http://dev.fckeditor.net/ticket/300">#300</a>] The fck_internal.css
-			file was not validating with the W3C CSS Validation Service.</li>
-		<li>[<a target="_blank" href="http://dev.fckeditor.net/ticket/336">#336</a>] Ordered
-			list didn't keep the Type attribute properly (it was converted to lowercase when
-			the properties dialog was opened again).</li>
-		<li>[<a target="_blank" href="http://dev.fckeditor.net/ticket/318">#318</a>] Multiple
-			linked images are merged in a single link in IE.</li>
-		<li>[<a target="_blank" href="http://dev.fckeditor.net/ticket/350">#350</a>] The &lt;marquee&gt;
-			element will no longer append unwanted &lt;p&gt;&amp;nbsp;&lt;/p&gt; to the code.</li>
-		<li>[<a target="_blank" href="http://dev.fckeditor.net/ticket/351">#351</a>] The content
-			was being lost for images or comments only HTML inserted directly in the editor
-			source or loaded in the editor.</li>
-		<li>[<a target="_blank" href="http://dev.fckeditor.net/ticket/388">#388</a>] Creating
-			links in lines separated by &lt;br&gt; in IE can lead to a merge of the links.</li>
-		<li>[<a target="_blank" href="http://dev.fckeditor.net/ticket/325">#325</a>] Calling
-			the GetXHTML can distort visually the rendering in Firefox.</li>
-		<li>[<a target="_blank" href="http://dev.fckeditor.net/ticket/391">#391</a>] When ToolbarLocation=Out,
-			a "Security Warning" alert was being shown in IE if under https. Thanks to reister.</li>
-		<li>[<a target="_blank" href="http://dev.fckeditor.net/ticket/360">#360</a>] Form "name"
-			was being set to "[object]" if it contained an element with id="name".</li>
-		<li>Fixed a type that was breaking the ColdFusion SpellerPages integration file when
-			no spelling errors were found.</li>
-		<li>The ColdFusion SpellerPages integration was not working it Aspell was installed
-			in a directory with spaces in the name.</li>
-		<li>Added option to SpellerPages to ignore "alt" attributes.</li>
-		<li>[<a target="_blank" href="http://dev.fckeditor.net/ticket/451">#451</a>] Classes
-			for images in IE didn't take effect immediately.</li>
-		<li>[<a target="_blank" href="http://dev.fckeditor.net/ticket/430">#430</a>] Links with
-			a class did generate a span in Firefox when removing them.</li>
-		<li>[<a target="_blank" href="http://dev.fckeditor.net/ticket/274">#274</a>] The PHP
-			quick upload still tried to use the uppercased types instead of the lowercased ones.
-		</li>
-		<li>[<a target="_blank" href="http://dev.fckeditor.net/ticket/416">#416</a>] The PHP
-			quick upload didn't check for the existence of the folder before saving.</li>
-		<li>[<a target="_blank" href="http://dev.fckeditor.net/ticket/467">#467</a>] If InsertHtml
-			was called in IE with a comment (or any protected source at the beginning) it was
-			lost.</li>
-		<li>[<a target="_blank" href="https://sourceforge.net/tracker/?func=detail&aid=1518766&group_id=75348&atid=543653">SF
-			BUG-1518766</a>] Mozilla 1.7.13 wasn't recognized properly as an old Gecko engine.</li>
-		<li>[<a target="_blank" href="http://dev.fckeditor.net/ticket/324">#324</a>] Improperly
-			nested tags could lead to a crash in IE.</li>
-		<li>[<a target="_blank" href="http://dev.fckeditor.net/ticket/455">#455</a>] Files and
-			folders with non-ANSI names were returned with a double UTF-8 encoding in the PHP
-			File Manager.</li>
-		<li>[<a target="_blank" href="http://dev.fckeditor.net/ticket/273">#273</a>] The extensions
-			"sh", "shtml", "shtm" and "phtm" have been added to the list of denied extensions
-			on upload.</li>
-		<li>[<a target="_blank" href="http://dev.fckeditor.net/ticket/453">#453</a>] No more
-			errors when hitting del inside an empty table cell.</li>
-		<li>The perl connector cgi file has been changed to Unix line endings.</li>
-		<li>[<a target="_blank" href="http://dev.fckeditor.net/ticket/202">#202</a>] Regression:
-			The HR tag will not anymore break the contents loaded in the editor. </li>
-		<li>[<a target="_blank" href="http://dev.fckeditor.net/ticket/508">#508</a>] The HR
-			command had a typo.</li>
-		<li>[<a target="_blank" href="http://dev.fckeditor.net/ticket/505">#505</a>] Regression:
-			IE crashed if a table caption was deleted.</li>
-		<li>[<a target="_blank" href="http://dev.fckeditor.net/ticket/82">#82</a>] [<a target="_blank"
-			href="http://dev.fckeditor.net/ticket/359">#359</a>] &lt;object&gt; and &lt;embed&gt;
-			tags are not anymore lost in IE.</li>
-		<li>[<a target="_blank" href="http://dev.fckeditor.net/ticket/493">#493</a>] If the
-			containing form had a button named "submit" the "Save" command didn't work in Firefox.</li>
-		<li>[<a target="_blank" href="http://dev.fckeditor.net/ticket/414">#414</a>] If tracing
-			was globally enabled in Asp.Net 2.0 then the Asp.Net connector did fail.</li>
-		<li>[<a target="_blank" href="http://dev.fckeditor.net/ticket/520">#520</a>] The "Select
-			Field" properties dialog was not correctly handling select options with &amp;, &lt;
-			and &gt;.</li>
-		<li>[<a target="_blank" href="http://dev.fckeditor.net/ticket/258">#258</a>] The Asp
-			integration didn't pass boolean values in English, using instead the locale of the
-			server and failing.</li>
-		<li>[<a target="_blank" href="http://dev.fckeditor.net/ticket/487">#487</a>] If an image
-			with dimensions set as styles was opened with the image manager and then the dialog
-			was canceled the dimensions in the style were lost.</li>
-		<li>[<a target="_blank" href="http://dev.fckeditor.net/ticket/220">#220</a>] The creation
-			of links or anchors in a selection that results on more than a single link created
-			will not anymore leave temporary links in the source. All links will be defined
-			as expected.</li>
-		<li>[<a target="_blank" href="http://dev.fckeditor.net/ticket/220">#182</a>] [<a
-			target="_blank" href="http://dev.fckeditor.net/ticket/220">#261</a>] [<a target="_blank"
-				href="http://dev.fckeditor.net/ticket/220">#511</a>] Special characters, like
-			percent signs or accented chars, and spaces are now correctly returned by the File
-			Browser.</li>
-		<li>[<a target="_blank" href="http://dev.fckeditor.net/ticket/281">#281</a>] Custom
-			toolbar buttons now render correctly in all skins.</li>
-		<li>[<a target="_blank" href="http://dev.fckeditor.net/ticket/527">#527</a>] If the
-			configuration for a toolbar isn't fully valid, try to keep on parsing it.</li>
-		<li>[<a target="_blank" href="http://dev.fckeditor.net/ticket/187">#187</a>] [<a
-			target="_blank" href="http://dev.fckeditor.net/ticket/435">#435</a>] [<a target="_blank"
-				href="https://sourceforge.net/tracker/?func=detail&aid=1612978&group_id=75348&atid=543653">SF
-				BUG-1612978</a>] [<a target="_blank" href="https://sourceforge.net/tracker/?func=detail&aid=1163511&group_id=75348&atid=543653">SF
-					BUG-1163511</a>] Updated the configuration options in the ColdFusion integration
-			files.</li>
-		<li>[<a target="_blank" href="https://sourceforge.net/tracker/?func=detail&aid=1726781&group_id=75348&atid=543655">SF
-			Patch-1726781</a>] Updated the upload class for asp to handle large files and other
-			data in the forms. Thanks to NetRube.</li>
-		<li>[<a target="_blank" href="http://dev.fckeditor.net/ticket/225">#225</a>] With ColdFusion,
-			the target directory is now being automatically created if needed when "quick uploading".
-			Thanks to sirmeili.</li>
-		<li>[<a target="_blank" href="http://dev.fckeditor.net/ticket/295">#295</a>] [<a
-			target="_blank" href="http://dev.fckeditor.net/ticket/510">#510</a>] Corrected some
-			path resolution issues with the File Browser connector for ColdFusion.</li>
-		<li>[<a target="_blank" href="http://dev.fckeditor.net/ticket/239">#239</a>] The &lt;xml&gt;
-			tag will not anymore cause troubles.</li>
-		<li>[<a target="_blank" href="https://sourceforge.net/tracker/?func=detail&aid=1721787&group_id=75348&atid=543653">SF
-			BUG-1721787</a>] If the editor is run from a virtual dir, the PHP connector will
-			detect that and avoid generating a wrong folder.</li>
-		<li>[<a target="_blank" href="http://dev.fckeditor.net/ticket/431">#431</a>] PHP: The
-			File Browser now displays an error message when it is not able to create the configured
-			target directory for files (instead of sending broken XML responses).</li>
-	</ul>
-	<h3>
-		Version 2.4.2</h3>
-	<p>
-		Fixed Bugs:</p>
-	<ul>
-		<li>[<a target="_blank" href="http://dev.fckeditor.net/ticket/279">#279</a>] The UTF-8
-			BOM was being included in the wrong files, affecting mainly PHP installations.</li>
-	</ul>
-	<h3>
-		Version 2.4.1</h3>
-	<p>
-		New Features and Improvements:</p>
-	<ul>
-		<li>[<a target="_blank" href="http://dev.fckeditor.net/ticket/118">#118</a>] The SelectAll
-			command now is available in Source Mode.</li>
-		<li>The new open source FCKpackager sub-project is now available. It replaces the FCKeditor.Packager
-			software to compact the editor source.</li>
-		<li>With Firefox, if a paste execution is blocked by the browser security settings,
-			the new "Paste" popup is shown to the user to complete the pasting operation. </li>
-	</ul>
-	<p>
-		Fixed Bugs:</p>
-	<ul>
-		<li>Various fixes to the ColdFusion File Browser connector.</li>
-		<li>We are now pointing the download of ieSpell to their pages, instead to a direct
-			file download from one of their mirrors. This disables the ability of "click and
-			go" (which can still be achieved by pointing the download to a file in your server),
-			but removes any troubles with mirrors link changes (and they change it frequently).</li>
-		<li>The Word cleanup has been changed to remove "display:none" tags that may come from
-			Word.</li>
-		<li>[<a target="_blank" href="https://sourceforge.net/tracker/?func=detail&atid=543653&aid=1659613&group_id=75348">SF
-			BUG-1659613</a>] The 2.4 version introduced a bug in the flash handling code that
-			generated out of memory errors in IE7.</li>
-		<li>[<a target="_blank" href="https://sourceforge.net/tracker/?func=detail&atid=543653&aid=1660456&group_id=75348">SF
-			BUG-1660456</a>] The icons in context menus were draggable.</li>
-		<li>[<a target="_blank" href="https://sourceforge.net/tracker/?func=detail&atid=543653&aid=1653009&group_id=75348">SF
-			BUG-1653009</a>] If the server is configured to process html files as asp then it
-			generated ASP error 0138.</li>
-		<li>[<a target="_blank" href="https://sourceforge.net/tracker/?func=detail&atid=543653&aid=1288609&group_id=75348">SF
-			BUG-1288609</a>] The content of iframes is now preserved.</li>
-		<li>[<a target="_blank" href="https://sourceforge.net/tracker/?func=detail&atid=543653&aid=1245504&group_id=75348">SF
-			BUG-1245504</a>] [<a target="_blank" href="https://sourceforge.net/tracker/?func=detail&atid=543653&aid=1652240&group_id=75348">SF
-				BUG-1652240</a>] Flash files without the .swf extension weren't recognized upon
-			reload.</li>
-		<li>[<a target="_blank" href="https://sourceforge.net/tracker/?func=detail&aid=1649753&group_id=75348&atid=543655">SF
-			PATCH-1649753</a>] Node selection for text didn't work in IE. Thanks to yurik dot
-			m.</li>
-		<li>[<a target="_blank" href="https://sourceforge.net/tracker/?func=detail&aid=1573191&group_id=75348&atid=543653">SF
-			BUG-1573191</a>] The Html code inserted with FCK.InsertHtml didn't have the same
-			protection for special tags.</li>
-		<li>[<a target="_blank" href="http://dev.fckeditor.net/ticket/110">#110</a>] The OK
-			button in dialogs had its width set as an inline style.</li>
-		<li>[<a target="_blank" href="http://dev.fckeditor.net/ticket/113">#113</a>] [<a
-			target="_blank" href="http://dev.fckeditor.net/ticket/94">#94</a>] [<a target="_blank"
-				href="https://sourceforge.net/tracker/?func=detail&aid=1659270&group_id=75348&atid=543653">SF
-				BUG-1659270</a>] ForcePasteAsPlainText didn't work in Firefox.</li>
-		<li>[<a target="_blank" href="http://dev.fckeditor.net/ticket/114">#114</a>] The correct
-			entity is now used to fill empty blocks when ProcessHTMLEntities is disabled.</li>
-		<li>[<a target="_blank" href="http://dev.fckeditor.net/ticket/90">#90</a>] The editor
-			was wrongly removing some &lt;br&gt; tags from the code.</li>
-		<li>[<a target="_blank" href="http://dev.fckeditor.net/ticket/139">#139</a>] The CTRL+F
-			and CTRL+S keystroke default behaviors are now preserved.</li>
-		<li>[<a target="_blank" href="http://dev.fckeditor.net/ticket/138">#138</a>] We are
-			not providing a CTRL + ALT combination in the default configuration file because
-			it may be incompatible with some keyboard layouts. So, the CTRL + ALT + S combination
-			has been changed to CTRL + SHIFT + S.</li>
-		<li>[<a target="_blank" href="http://dev.fckeditor.net/ticket/129">#129</a>] In IE,
-			it was not possible to paste if "Allow paste operation via script" was disabled
-			in the browser security settings.</li>
-		<li>[<a target="_blank" href="http://dev.fckeditor.net/ticket/112">#112</a>] The enter
-			key now behaves correctly on lists with Firefox, when the EnterMode is set to 'br'.</li>
-		<li>[<a target="_blank" href="http://dev.fckeditor.net/ticket/152">#152</a>] Invalid
-			self-closing tags are now being fixed before loading. </li>
-		<li>A few tags were being ignored to the check for required contents (not getting stripped
-			out, as expected). Fixed.</li>
-		<li>[<a target="_blank" href="http://dev.fckeditor.net/ticket/202">#202</a>] The HR
-			tag will not anymore break the contents loaded in the editor.</li>
-		<li>[<a target="_blank" href="http://dev.fckeditor.net/ticket/211">#211</a>] Some invalid
-			inputs, like "&lt;p&gt;" where making the caret disappear in Firefox.</li>
-		<li>[<a target="_blank" href="http://dev.fckeditor.net/ticket/99">#99</a>] The &lt;div&gt;
-			element is now considered a block container if EnterMode=p|br. It acts like a simple
-			block only if EnterMode=div.</li>
-		<li>Hidden fields will now show up as an icon in IE, instead of a normal text field.
-			They are also selectable and draggable, in all browsers.</li>
-		<li>[<a target="_blank" href="http://dev.fckeditor.net/ticket/213">#213</a>] Styles
-			are now preserved when hitting enter at the end of a paragraph.</li>
-		<li>[<a target="_blank" href="http://dev.fckeditor.net/ticket/77">#77</a>] If ShiftEnterMode
-			is set to a block tag (p or div), the desired block creation in now enforced, instead
-			of copying the current block (which is still the behavior of the simple enter).</li>
-		<li>[<a target="_blank" href="http://dev.fckeditor.net/ticket/209">#209</a>] Links and
-			images URLs will now be correctly preserved with Netscape 7.1.</li>
-		<li>[<a target="_blank" href="http://dev.fckeditor.net/ticket/165">#165</a>] The enter
-			key now honors the EnterMode settings when outdenting a list item.</li>
-		<li>[<a target="_blank" href="http://dev.fckeditor.net/ticket/190">#190</a>] Toolbars
-			may be wrongly positioned. Fixed.</li>
-		<li>[<a target="_blank" href="http://dev.fckeditor.net/ticket/254">#254</a>] The IgnoreEmptyParagraphValue
-			setting is now correctly handled in Firefox.</li>
-		<li>[<a target="_blank" href="http://dev.fckeditor.net/ticket/254">#248</a>] The behavior
-			of the backspace key has been fixed on some very specific cases.</li>
-	</ul>
-	<h3>
-		Version 2.4</h3>
-	<p>
-		New Features and Improvements:</p>
-	<ul>
-		<li>[<a target="_blank" href="https://sourceforge.net/tracker/?func=detail&aid=1329273&group_id=75348&atid=543656">SF
-			Feature-1329273</a>] [<a target="_blank" href="https://sourceforge.net/tracker/?func=detail&aid=1456005&group_id=75348&atid=543656">SF
-				Feature-1456005</a>] [<a target="_blank" href="https://sourceforge.net/tracker/?func=detail&aid=1315002&group_id=75348&atid=543653">SF
-					BUG-1315002</a>] [<a target="_blank" href="https://sourceforge.net/tracker/?func=detail&aid=1350180&group_id=75348&atid=543653">SF
-						BUG-1350180</a>] [<a target="_blank" href="https://sourceforge.net/tracker/?func=detail&aid=1450689&group_id=75348&atid=543653">SF
-							BUG-1450689</a>] [<a target="_blank" href="https://sourceforge.net/tracker/?func=detail&aid=1461033&group_id=75348&atid=543653">SF
-								BUG-1461033</a>] [<a target="_blank" href="https://sourceforge.net/tracker/?func=detail&aid=1510111&group_id=75348&atid=543653">SF
-									BUG-1510111</a>] [<a target="_blank" href="https://sourceforge.net/tracker/?func=detail&aid=1203560&group_id=75348&atid=543653">SF
-										BUG-1203560</a>] [<a target="_blank" href="https://sourceforge.net/tracker/?func=detail&aid=1564838&group_id=75348&atid=543653">SF
-											BUG-1564838</a>] The advance <strong>Enter Key Handler</strong>
-			is now being introduced. It gives you complete freedom to configure the editor to
-			generate <strong>&lt;p&gt;, &lt;div&gt; or &lt;br&gt;</strong> when the user uses
-			both the [Enter] and [Shift]+[Enter] keys. The new "EnterMode" and "ShiftEnterMode"
-			settings can be use to control its behavior. It also guarantees that all browsers
-			will generate the same output. </li>
-		<li>The new and powerful <strong>Keyboard Accelerator System</strong> is being introduced.
-			You can now precisely control the commands to execute when some key combinations
-			are activated by the user. It guarantees that all browsers will have the same behavior
-			regarding the shortcuts.<br />
-			It also makes it possible to remove buttons from the toolbar and still invoke their
-			features by using the keyboard instead.
-			<br />
-			It also blocks all default "CTRL based shortcuts" imposed by the browsers, so if
-			you don't want users to underline text, just remove the CTRL+U combination from
-			the keystrokes table. Take a look at the FCKConfig.Keystrokes setting in the fckconfig.js
-			file. </li>
-		<li>The new "<strong>ProtectedTags</strong>" configuration option is being introduced.
-			It will accept a list of tags (separated by a pipe "|"), which will have no effect
-			during editing, but will still be part of the document DOM. This can be used mainly
-			for non HTML standard, custom tags.</li>
-		<li>Dialog box commands can now open resizable dialogs (by setting oCommand.Resizable
-			= true).</li>
-		<li>Updated support for AFP. Thanks to Soenke Freitag.</li>
-		<li>New language file:<ul>
-			<li><strong>Afrikaans</strong> (by Willem Petrus Botha). </li>
-		</ul>
-		</li>
-		<li>[<a target="_blank" href="https://sourceforge.net/tracker/?func=detail&aid=1456343&group_id=75348&atid=543655">SF
-			Patch-1456343</a>] New sample file showing how to dynamically exchange a textarea
-			and an instance of FCKeditor. Thanks to Finn Hakansson</li>
-		<li>[<a target="_blank" href="https://sourceforge.net/tracker/?func=detail&aid=1496115&group_id=75348&atid=543655">SF
-			Patch-1496115</a>] [<a target="_blank" href="https://sourceforge.net/tracker/?func=detail&aid=1588578&group_id=75348&atid=543653">SF
-				BUG-1588578</a>] [<a target="_blank" href="https://sourceforge.net/tracker/?func=detail&aid=1376534&group_id=75348&atid=543653">SF
-					BUG-1376534</a>] [<a target="_blank" href="https://sourceforge.net/tracker/?func=detail&aid=1343506&group_id=75348&atid=543653">SF
-						BUG-1343506</a>] [<a target="_blank" href="https://sourceforge.net/tracker/?func=detail&aid=1211065&group_id=75348&atid=543656">SF
-							Feature-1211065</a>] [<a target="_blank" href="https://sourceforge.net/tracker/?func=detail&aid=949144&group_id=75348&atid=543656">SF
-								Feature-949144</a>] The content of anchors are shown and preserved
-			on creation. * </li>
-		<li>[<a target="_blank" href="https://sourceforge.net/tracker/?func=detail&aid=1587175&group_id=75348&atid=543656">SF
-			Feature-1587175</a>] Local links to an anchor are readjusted if the anchor changes.</li>
-		<li>[<a target="_blank" href="https://sourceforge.net/tracker/?func=detail&aid=1500040&group_id=75348&atid=543655">SF
-			Patch-1500040</a>] New configuration values to specify the Id and Class for the
-			body element.</li>
-		<li>[<a target="_blank" href="https://sourceforge.net/tracker/?func=detail&aid=1577202&group_id=75348&atid=543655">SF
-			Patch-1577202</a>] The links created with the popup option now are accessible even
-			if the user has JavaScript disabled.</li>
-		<li>[<a target="_blank" href="https://sourceforge.net/tracker/?func=detail&aid=1443472&group_id=75348&atid=543655">SF
-			Patch-1443472</a>] [<a target="_blank" href="https://sourceforge.net/tracker/?func=detail&aid=1576488&group_id=75348&atid=543653">SF
-				BUG-1576488</a>] [<a target="_blank" href="https://sourceforge.net/tracker/?func=detail&aid=1334305&group_id=75348&atid=543653">SF
-					BUG-1334305</a>] [<a target="_blank" href="https://sourceforge.net/tracker/?func=detail&aid=1578312&group_id=75348&atid=543653">SF
-						BUG-1578312</a>] The Paste from Word clean up function can be configured
-			with FCKConfig.CleanWordKeepsStructure to preserve the markup as much as possible.
-			Thanks Jean-Charles ROGEZ. </li>
-		<li>[<a target="_blank" href="https://sourceforge.net/tracker/?func=detail&aid=1472654&group_id=75348&atid=543655">SF
-			Patch-1472654</a>] The server side script location for SpellerPages can now be set
-			in the configuration file, by using the SpellerPagesServerScript setting.</li>
-		<li><span style="color: #ff0000">Attention:</span> All connectors are now pointing by
-			default to the "/userfiles/" folder instead of "/UserFiles/" (case change). Also,
-			the inner folders for each type (file, image, flash and media) are all lower-cased
-			too.</li>
-		<li><span style="color: #ff0000">Attention:</span> The UseBROnCarriageReturn configuration
-			is not anymore valid. The EnterMode setting can now be used to precisely set the
-			enter key behavior.</li>
-	</ul>
-	<p>
-		Fixed Bugs:</p>
-	<ul>
-		<li>[<a target="_blank" href="https://sourceforge.net/tracker/?func=detail&atid=543653&aid=1444937&group_id=75348">SF
-			BUG-1444937</a>] [<a target="_blank" href="https://sourceforge.net/tracker/?func=detail&atid=543653&aid=1274364&group_id=75348">SF
-				BUG-1274364</a>] Shortcut keys are now undoable correctly.</li>
-		<li>[<a target="_blank" href="https://sourceforge.net/tracker/?func=detail&atid=543653&aid=1015230&group_id=75348">SF
-			BUG-1015230</a>] Toolbar buttons now update their state on shortcut keys activation.</li>
-		<li>[<a target="_blank" href="https://sourceforge.net/tracker/?func=detail&atid=543653&aid=1485621&group_id=75348">SF
-			BUG-1485621</a>] It is now possible to precisely control which shortcut keys can
-			be used.</li>
-		<li>[<a target="_blank" href="https://sourceforge.net/tracker/?func=detail&atid=543653&aid=1573714&group_id=75348">SF
-			BUG-1573714</a>] [<a target="_blank" href="https://sourceforge.net/tracker/?func=detail&atid=543653&aid=1593323&group_id=75348">SF
-				BUG-1593323</a>] Paste was not working in IE if both AutoDetectPasteFromWord
-			and ForcePasteAsPlainText settings were set to "false". </li>
-		<li>[<a target="_blank" href="https://sourceforge.net/tracker/?func=detail&atid=543653&aid=1578306&group_id=75348">SF
-			BUG-1578306</a>] The context menu was wrongly positioned if the editing document
-			was set to render in strict mode. Thanks to Alfonso Martinez.</li>
-		<li>[<a target="_blank" href="https://sourceforge.net/tracker/?func=detail&atid=543653&aid=1567060&group_id=75348">SF
-			BUG-1567060</a>] [<a target="_blank" href="https://sourceforge.net/tracker/?func=detail&atid=543653&aid=1565902&group_id=75348">SF
-				BUG-1565902</a>] [<a target="_blank" href="https://sourceforge.net/tracker/?func=detail&atid=543653&aid=1440631&group_id=75348">SF
-					BUG-1440631</a>] IE was getting locked on some specific cases. Fixed.</li>
-		<li>[<a target="_blank" href="https://sourceforge.net/tracker/?func=detail&atid=543653&aid=1582859&group_id=75348">SF
-			BUG-1582859</a>] [<a target="_blank" href="http://sourceforge.net/tracker/index.php?func=detail&aid=1579507&group_id=75348&atid=543655">SF
-				Patch-1579507</a>] Firefox' spellchecker is now disabled during editing mode.
-			Thanks to Alfonso Martinez.</li>
-		<li>Fixed Safari and Opera detection system (for development purposes only).</li>
-		<li>Paste from Notepad was including font information in IE. Fixed.</li>
-		<li>[<a target="_blank" href="https://sourceforge.net/tracker/?func=detail&atid=543653&aid=1584092&group_id=75348">SF
-			BUG-1584092</a>] When replacing text area, names with spaces are now accepted.</li>
-		<li>Depending on the implementation of toolbar combos (mainly for custom plugins) the
-			editor area was loosing the focus when clicking in the combo label. Fixed.</li>
-		<li>[<a target="_blank" href="https://sourceforge.net/tracker/?func=detail&aid=1596937&group_id=75348&atid=543653">SF
-			BUG-1596937</a>] InsertHtml() was inserting the HTML outside the editor area on
-			some very specific cases.</li>
-		<li>[<a target="_blank" href="https://sourceforge.net/tracker/?func=detail&atid=543653&aid=1585548&group_id=75348">SF
-			BUG-1585548</a>] On very specific, rare and strange cases, the XHTML processor was
-			not working properly in IE. Fixed.</li>
-		<li>[<a target="_blank" href="https://sourceforge.net/tracker/?func=detail&atid=543653&aid=1584951&group_id=75348">SF
-			BUG-1584951</a>] [<a target="_blank" href="https://sourceforge.net/tracker/?func=detail&atid=543653&aid=1380598&group_id=75348">SF
-				BUG-1380598</a>] [<a target="_blank" href="https://sourceforge.net/tracker/?func=detail&atid=543653&aid=1198139&group_id=75348">SF
-					BUG-1198139</a>] [<a target="_blank" href="https://sourceforge.net/tracker/?func=detail&atid=543653&aid=1437318&group_id=75348">SF
-						BUG-1437318</a>] In Firefox, the style selector will not anymore delete
-			the contents when removing styles on specific cases.</li>
-		<li>[<a target="_blank" href="https://sourceforge.net/tracker/?func=detail&atid=543653&aid=1515441&group_id=75348">SF
-			BUG-1515441</a>] [<a target="_blank" href="https://sourceforge.net/tracker/?func=detail&atid=543653&aid=1451071&group_id=75348">SF
-				BUG-1451071</a>] The "Insert/Edit Link" and "Select All" buttons are now working
-			properly when the editor is running on a IE Modal dialog.</li>
-		<li>On some very rare cases, IE was throwing a memory error when hiding the context
-			menus. Fixed.</li>
-		<li>[<a target="_blank" href="https://sourceforge.net/tracker/?func=detail&atid=543653&aid=1526154&group_id=75348">SF
-			BUG-1526154</a>] [<a target="_blank" href="https://sourceforge.net/tracker/?func=detail&aid=1509208&group_id=75348&atid=543653">SF
-				BUG-1509208</a>] With Firefox, &lt;style&gt; tags defined in the source are
-			now preserved.</li>
-		<li>[<a target="_blank" href="https://sourceforge.net/tracker/?func=detail&atid=543653&aid=1535946&group_id=75348">SF
-			BUG-1535946</a>] The IE dialog system has been changed to better work with custom
-			dialogs.</li>
-		<li>[<a target="_blank" href="https://sourceforge.net/tracker/?func=detail&atid=543653&aid=1599520&group_id=75348">SF
-			BUG-1599520</a>] The table dialog was producing empty tags when leaving some of
-			its fields empty.</li>
-		<li>[<a target="_blank" href="https://sourceforge.net/tracker/?func=detail&atid=543653&aid=1599545&group_id=75348">SF
-			BUG-1599545</a>] HTML entities are now processed on attribute values too.</li>
-		<li>[<a target="_blank" href="https://sourceforge.net/tracker/?func=detail&atid=543653&aid=1598517&group_id=75348">SF
-			BUG-1598517</a>] Meta tags are now protected from execution during editing (avoiding
-			the "redirect" meta to be activated).</li>
-		<li>[<a target="_blank" href="https://sourceforge.net/tracker/?func=detail&atid=543653&aid=1415601&group_id=75348">SF
-			BUG-1415601</a>] Firefox internals: styleWithCSS is used instead of the deprecated
-			useCSS whenever possible.</li>
-		<li>All JavaScript Core extension function have been renamed to "PascalCase" (some were
-			in "camelCase"). This may have impact on plugins that use any of those functions.</li>
-		<li>[<a target="_blank" href="https://sourceforge.net/tracker/?func=detail&atid=543653&aid=1592311&group_id=75348">SF
-			BUG-1592311</a>] Operations in the caption of tables are now working correctly in
-			both browsers.</li>
-		<li>Small interface fixes to the about box.</li>
-		<li>[<a target="_blank" href="https://sourceforge.net/tracker/?func=detail&aid=1604576&group_id=75348&atid=543655">SF
-			PATCH-1604576</a>] [<a target="_blank" href="https://sourceforge.net/tracker/?func=detail&atid=543653&aid=1604301&group_id=75348">SF
-				BUG-1604301</a>] Link creation failed in Firefox 3 alpha. Thanks to Arpad Borsos</li>
-		<li>[<a target="_blank" href="https://sourceforge.net/tracker/?func=detail&aid=1577247&group_id=75348&atid=543653">SF
-			BUG-1577247</a>] Unneeded call to captureEvents and releaseEvents.</li>
-		<li>[<a target="_blank" href="https://sourceforge.net/tracker/?func=detail&atid=543653&aid=1610790&group_id=75348">SF
-			BUG-1610790</a>] On some specific situations, the call to form.submit(), in form
-			were FCKeditor has been unloaded by code, was throwing the "Can't execute code from
-			a freed script" error.</li>
-		<li>[<a target="_blank" href="https://sourceforge.net/tracker/?func=detail&aid=1613167&group_id=75348&atid=543653">SF
-			BUG-1613167</a>] If the configuration was missing the FCKConfig.AdditionalNumericEntities
-			entry an error appeared.</li>
-		<li>[<a target="_blank" href="https://sourceforge.net/tracker/?func=detail&aid=1590848&group_id=75348&atid=543653">SF
-			BUG-1590848</a>] [<a target="_blank" href="https://sourceforge.net/tracker/?func=detail&aid=1626360&group_id=75348&atid=543653">SF
-				BUG-1626360</a>] Cleaning of JavaScript strict warnings in the source code.</li>
-		<li>[<a target="_blank" href="https://sourceforge.net/tracker/?func=detail&aid=1559466&group_id=75348&atid=543653">SF
-			BUG-1559466</a>] The ol/ul list property window always searched first for a UL element.</li>
-		<li>[<a target="_blank" href="https://sourceforge.net/tracker/?func=detail&aid=1516008&group_id=75348&atid=543653">SF
-			BUG-1516008</a>] Class attribute in IE wasn't loaded in the image dialog.</li>
-		<li>The "OnAfterSetHTML" event is now fired when being/switching to Source View.</li>
-		<li>[<a target="_blank" href="https://sourceforge.net/tracker/?func=detail&aid=1631807&group_id=75348&atid=543653">SF
-			BUG-1631807</a>] Elements' style properties are now forced to lowercase in IE.</li>
-		<li>The extensions "html", "htm" and "asis" have been added to the list of denied extensions
-			on upload.</li>
-		<li>Empty inline elements (like span and strong) will not be generated any more.</li>
-		<li>Some elements attributes (like hspace) where not being retrieved when set to "0".</li>
-		<li>[<a target="_blank" href="https://sourceforge.net/tracker/?func=detail&aid=1508341&group_id=75348&atid=543653">SF
-			BUG-1508341</a>] Fix for the ColdFusion script file of SpellerPages.</li>
-	</ul>
-	<p>
-		* This version has been partially sponsored by <a href="http://www.imedi.org/">Medical
-			Media Lab</a>.</p>
-	<h3>
-		Version 2.3.3</h3>
-	<p>
-		New Features and Improvements:</p>
-	<ul>
-		<li>The project has been <strong>relicensed</strong> under the terms of the <strong>
-			GPL / LGPL / MPL</strong> licenses. This change will remove many licensing compatibility
-			issues with other open source licenses, making the editor even more "open" than
-			before. </li>
-		<li><font color="#ff0000">Attention:</font> The default directory in the distribution
-			package is now named "fckeditor" (in lowercase) instead of "FCKeditor".&nbsp; This
-			change may impact installations on case sensitive OSs, like Linux. </li>
-		<li><font color="#ff0000">Attention:</font> The "Universal Keyboard" has been removed
-			from the package. The license of those files was unclear so they can't be included
-			alongside the rest of FCKeditor.</li>
-	</ul>
-	<h3>
-		Version 2.3.2</h3>
-	<p>
-		New Features and Improvements:</p>
-	<ul>
-		<li>Users can now decide if the template dialog will replace the entire contents of
-			the editor or simply place the template in the cursor position. This feature can
-			be controlled by the "TemplateReplaceAll" and "TemplateReplaceCheckbox" configuration
-			options.</li>
-		<li>[<a target="_blank" href="http://sourceforge.net/tracker/index.php?func=detail&aid=1237693&group_id=75348&atid=543655">SF
-			Patch-1237693</a>] A new configuration option (<strong>ProcessNumericEntities</strong>)
-			is now available to tell the editor to convert non ASCII chars to their relative
-			numeric entity references. It is disabled by default.</li>
-		<li>The new "<strong>AdditionalNumericEntities</strong>" setting makes it possible to
-			define a set of characters to be transformed to their relative numeric entities.
-			This is useful when you don't want the code to have simple quotes ('), for example.</li>
-		<li>The Norwegian language file (no.js) has been duplicated to include the Norwegian
-			Bokmal (nb.js) in the supported interface languages. Thanks to Martin Kronstad.
-		</li>
-		<li>Two new patterns have been added to the Universal Keyboard:
-			<ul>
-				<li>Persian. Thanks to Pooyan Mahdavi</li>
-				<li>Portuguese. Thanks to Bo Brandt.</li>
-			</ul>
-		</li>
-		<li>[<a target="_blank" href="http://sourceforge.net/tracker/index.php?func=detail&aid=1517322&group_id=75348&atid=543655">SF
-			Patch-1517322</a>] It is now possible to define the start number on numbered lists.
-			Thanks to Marcel Bennett.</li>
-		<li>The Font Format combo will now reflect the EditorAreaCSS styles.</li>
-		<li>[<a target="_blank" href="https://sourceforge.net/tracker/index.php?func=detail&aid=1461539&group_id=75348&atid=543655">SF
-			Patch-1461539</a>] The File Browser connector can now optionally return a "url"
-			attribute for the files. Thanks to Pent.</li>
-		<li>[<a target="_blank" href="https://sourceforge.net/tracker/?func=detail&atid=543653&aid=1090851&group_id=75348">SF
-			BUG-1090851</a>] The new "ToolbarComboPreviewCSS" configuration option has been
-			created, so it is possible to point the Style and Format toolbar combos to a different
-			CSS, avoiding conflicts with the editor area CSS.</li>
-		<li>[<a target="_blank" href="https://sourceforge.net/tracker/index.php?func=detail&amp;aid=1421309&amp;group_id=75348&amp;atid=543656">SF
-			Feature-1421309</a>] [<a target="_blank" href="https://sourceforge.net/tracker/?func=detail&atid=543653&aid=1489402&group_id=75348">SF
-				BUG-1489402</a>] It is now possible to configure the Quick Uploder target path
-			to consider the file type (ex: Image or File) in the target path for uploads.</li>
-		<li>The JavaScript integration file has two new things:
-			<ul>
-				<li>The "CreateHtml()" function in the FCKeditor object, used to retrieve the HTML of
-					an editor instance, instead of writing it directly to the page (as done by "Create()").</li>
-				<li>The global "FCKeditor_IsCompatibleBrowser()" function, which tells if the executing
-					browser is compatible with FCKeditor. This makes it possible to do any necessary
-					processing depending on the compatibility, without having to create and editor instance.</li>
-			</ul>
-		</li>
-	</ul>
-	<p>
-		Fixed Bugs:</p>
-	<ul>
-		<li>[<a target="_blank" href="https://sourceforge.net/tracker/?func=detail&atid=543653&aid=1525242&group_id=75348">SF
-			BUG-1525242</a>] [<a target="_blank" href="https://sourceforge.net/tracker/?func=detail&atid=543653&aid=1500050&group_id=75348">SF
-				BUG-1500050</a>] All event attributes (like onclick or onmouseover) are now
-			being protected before loading the editor. In this way, we avoid firing those events
-			during editing (IE issue) and they don't interfere in other specific processors
-			in the editor.</li>
-		<li>Small security fixes to the File Browser connectors. </li>
-		<li>[<a target="_blank" href="https://sourceforge.net/tracker/?func=detail&atid=543653&aid=1546226&group_id=75348">SF
-			BUG-1546226</a>] Small fix to the ColdFusion CFC integration file.</li>
-		<li>[<a target="_blank" href="http://sourceforge.net/tracker/index.php?func=detail&atid=543655&aid=1547768&group_id=75348">SF
-			Patch-1407500</a>] The Word Cleanup function was breaking the HTML on pasting, on
-			very specific cases. Fixed, thanks to Frode E. Moe.</li>
-		<li>[<a target="_blank" href="http://sourceforge.net/tracker/index.php?func=detail&aid=1551979&group_id=75348&atid=543655">SF
-			Patch-1551979</a>] [<a target="_blank" href="https://sourceforge.net/tracker/?func=detail&atid=543653&aid=1418066&group_id=75348">SF
-				BUG-1418066</a>] [<a target="_blank" href="https://sourceforge.net/tracker/?func=detail&atid=543653&aid=1439621&group_id=75348">SF
-					BUG-1439621</a>] [<a target="_blank" href="http://sourceforge.net/tracker/index.php?func=detail&aid=1501698&group_id=75348&atid=543653">SF
-						BUG-1501698</a>] Make FCKeditor work with application/xhtml+xml. Thanks
-			to Arpad Borsos.</li>
-		<li>[<a target="_blank" href="http://sourceforge.net/tracker/index.php?func=detail&aid=1547738&group_id=75348&atid=543655">SF
-			Patch-1547738</a>] [<a target="_blank" href="http://sourceforge.net/tracker/index.php?func=detail&aid=1550595&group_id=75348&atid=543653">SF
-				BUG-1550595</a>] [<a target="_blank" href="http://sourceforge.net/tracker/index.php?func=detail&aid=1540807&group_id=75348&atid=543653">SF
-					BUG-1540807</a>] [<a target="_blank" href="http://sourceforge.net/tracker/index.php?func=detail&aid=1510685&group_id=75348&atid=543653">SF
-						BUG-1510685</a>] Fixed problem with panels wrongly positioned when the
-			editor is placed on absolute or relative positioned elements. Thanks to Filipe Martins.</li>
-		<li>[<a target="_blank" href="http://sourceforge.net/tracker/index.php?func=detail&aid=1511294&group_id=75348&atid=543655">SF
-			Patch-1511294</a>] Small fix for the File Browser compatibility with IE 5.5.</li>
-		<li>[<a target="_blank" href="http://sourceforge.net/tracker/index.php?func=detail&aid=1503178&group_id=75348&atid=543655">SF
-			Patch-1503178</a>] Small improvement to stop IE from loading smiley images when
-			one smiley is quickly selected from a huge list of smileys. Thanks to stuckhere.</li>
-		<li>[<a target="_blank" href="http://sourceforge.net/tracker/index.php?func=detail&aid=1549112&group_id=75348&atid=543653">SF
-			BUG-1549112</a>] The Replace dialog window now escapes regular expression specific
-			characters in the find and replace fields.</li>
-		<li>[<a target="_blank" href="http://sourceforge.net/tracker/index.php?func=detail&aid=1548788&group_id=75348&atid=543653">SF
-			BUG-1548788</a>] Updated the ieSpell download URL.</li>
-		<li>In FF, the editor was throwing an error when closing the window. Fixed.</li>
-		<li>[<a target="_blank" href="http://sourceforge.net/tracker/index.php?func=detail&aid=1538509&group_id=75348&atid=543653">SF
-			BUG-1538509</a>] The "type" attribute for text fields will always be set now.</li>
-		<li>[<a target="_blank" href="http://sourceforge.net/tracker/index.php?func=detail&aid=1551734&group_id=75348&atid=543653">SF
-			BUG-1551734</a>] The SetHTML function will now update the editing area height no
-			matter which editing mode is active.</li>
-		<li>[<a target="_blank" href="http://sourceforge.net/tracker/index.php?func=detail&aid=1554141&group_id=75348&atid=543653">SF
-			BUG-1554141</a>] [<a target="_blank" href="http://sourceforge.net/tracker/index.php?func=detail&aid=1565562&group_id=75348&atid=543653">SF
-				BUG-1565562</a>] [<a target="_blank" href="http://sourceforge.net/tracker/index.php?func=detail&aid=1451056&group_id=75348&atid=543653">SF
-					BUG-1451056</a>] [<a target="_blank" href="http://sourceforge.net/tracker/index.php?func=detail&aid=1478408&group_id=75348&atid=543653">SF
-						BUG-1478408</a>] [<a target="_blank" href="http://sourceforge.net/tracker/index.php?func=detail&aid=1489322&group_id=75348&atid=543653">SF
-							BUG-1489322</a>] [<a target="_blank" href="http://sourceforge.net/tracker/index.php?func=detail&aid=1513667&group_id=75348&atid=543653">SF
-								BUG-1513667</a>] [<a target="_blank" href="http://sourceforge.net/tracker/index.php?func=detail&aid=1562134&group_id=75348&atid=543653">SF
-									BUG-1562134</a>] The protection of URLs has been enhanced
-			and now it will not break URLs on very specific cases.</li>
-		<li>[<a target="_blank" href="http://sourceforge.net/tracker/index.php?func=detail&aid=1545732&group_id=75348&atid=543653">SF
-			BUG-1545732</a>] [<a target="_blank" href="http://sourceforge.net/tracker/index.php?func=detail&aid=1490919&group_id=75348&atid=543653">SF
-				BUG-1490919</a>] No security errors will be thrown when loading FCKeditor in
-			page inside a FRAME defined in a different domain.</li>
-		<li>[<a target="_blank" href="http://sourceforge.net/tracker/index.php?func=detail&aid=1512817&group_id=75348&atid=543653">SF
-			BUG-1512817</a>] [<a target="_blank" href="http://sourceforge.net/tracker/index.php?func=detail&aid=1571345&group_id=75348&atid=543653">SF
-				BUG-1571345</a>] Fixed the "undefined" addition to the content when ShowBorders
-			= false and FullPage = true in Firefox. Thanks to Brett.</li>
-		<li>[<a target="_blank" href="http://sourceforge.net/tracker/index.php?func=detail&aid=1512798&group_id=75348&atid=543653">SF
-			BUG-1512798</a>] BaseHref will now work well on FullPage, even if no &lt;head&gt;
-			is available.</li>
-		<li>[<a target="_blank" href="http://sourceforge.net/tracker/index.php?func=detail&aid=1509923&group_id=75348&atid=543653">SF
-			BUG-1509923</a>] The DocumentProcessor is now called when using InserHtml().</li>
-		<li>[<a target="_blank" href="http://sourceforge.net/tracker/index.php?func=detail&aid=1505964&group_id=75348&atid=543653">SF
-			BUG-1505964</a>] The DOCTYPE declaration is now preserved when working in FullPage.</li>
-		<li>[<a target="_blank" href="http://sourceforge.net/tracker/index.php?func=detail&aid=1553727&group_id=75348&atid=543653">SF
-			BUG-1553727</a>] The editor was throwing an error when inserting complex templates.
-			Fixed.</li>
-		<li>[<a target="_blank" href="http://sourceforge.net/tracker/index.php?func=detail&aid=1564930&group_id=75348&atid=543655">SF
-			Patch-1564930</a>] [<a target="_blank" href="https://sourceforge.net/tracker/?func=detail&atid=543653&aid=1562828&group_id=75348">SF
-				BUG-1562828</a>] In IE, anchors where incorrectly copied when using the Paste
-			from Word button. Fixed, thanks to geirhelge.</li>
-		<li>[<a target="_blank" href="http://sourceforge.net/tracker/index.php?func=detail&aid=1557709&group_id=75348&atid=543653">SF
-			BUG-1557709</a>] [<a target="_blank" href="http://sourceforge.net/tracker/index.php?func=detail&aid=1421810&group_id=75348&atid=543653">SF
-				BUG-1421810</a>] The link dialog now validates Popup Window names.</li>
-		<li>[<a target="_blank" href="http://sourceforge.net/tracker/index.php?func=detail&aid=1556878&group_id=75348&atid=543653">SF
-			BUG-1556878</a>] Firefox was creating empty tags when deleting the selection in
-			some special cases.</li>
-		<li>The context menu for links is now correctly shown when right-clicking on floating
-			divs.</li>
-		<li>[<a target="_blank" href="http://sourceforge.net/tracker/index.php?func=detail&aid=1084404&group_id=75348&atid=543653">SF
-			BUG-1084404</a>] The XHTML processor now ignores empty span tags.</li>
-		<li>[<a target="_blank" href="http://sourceforge.net/tracker/index.php?func=detail&aid=1221728&group_id=75348&atid=543653">SF
-			BUG-1221728</a>] [<a target="_blank" href="http://sourceforge.net/tracker/index.php?func=detail&aid=1174503&group_id=75348&atid=543653">SF
-				BUG-1174503</a>] The &lt;abbr&gt; tag is not anymore getting broken by IE.</li>
-		<li>[<a target="_blank" href="http://sourceforge.net/tracker/index.php?func=detail&aid=1182906&group_id=75348&atid=543653">SF
-			BUG-1182906</a>] IE is not anymore messing up mailto links.</li>
-		<li>[<a target="_blank" href="http://sourceforge.net/tracker/index.php?func=detail&aid=1386094&group_id=75348&atid=543653">SF
-			BUG-1386094</a>] Fixed an issue when setting configuration options to empty ('')
-			by code.</li>
-		<li>[<a target="_blank" href="http://sourceforge.net/tracker/index.php?func=detail&aid=1389435&group_id=75348&atid=543653">SF
-			BUG-1389435</a>] Fixed an issue in some dialog boxes when handling numeric inputs.</li>
-		<li>[<a target="_blank" href="http://sourceforge.net/tracker/index.php?func=detail&aid=1398829&group_id=75348&atid=543653">SF
-			BUG-1398829</a>] Some links may got broken on very specific cases. Fixed.</li>
-		<li>[<a target="_blank" href="http://sourceforge.net/tracker/index.php?func=detail&aid=1409969&group_id=75348&atid=543653">SF
-			BUG-1409969</a>] &lt;noscript&gt; tags now remain untouched by the editor.</li>
-		<li>[<a target="_blank" href="http://sourceforge.net/tracker/index.php?func=detail&aid=1433457&group_id=75348&atid=543653">SF
-			BUG-1433457</a>] [<a target="_blank" href="http://sourceforge.net/tracker/index.php?func=detail&aid=1513631&group_id=75348&atid=543653">SF
-				BUG-1513631</a>] Empty "href" attributes in &lt;a&gt; or empty "src" in &lt;img&gt;
-			will now be correctly preserved.</li>
-		<li>[<a target="_blank" href="http://sourceforge.net/tracker/index.php?func=detail&aid=1435195&group_id=75348&atid=543653">SF
-			BUG-1435195</a>] Scrollbars are now visible in the File Browser (for custom implementations).</li>
-		<li>[<a target="_blank" href="http://sourceforge.net/tracker/index.php?func=detail&aid=1438296&group_id=75348&atid=543653">SF
-			BUG-1438296</a>] The "ForceSimpleAmpersand" setting is now being honored in all
-			tags.</li>
-		<li>If a popup blocker blocks context menu operations, the correct alert message is
-			displayed now, instead of a ugly JavaScript error.</li>
-		<li>[<a target="_blank" href="http://sourceforge.net/tracker/index.php?func=detail&aid=1454116&group_id=75348&atid=543653">SF
-			BUG-1454116</a>] The GetXHTML() function will not change the IsDirty() value of
-			the editor.</li>
-		<li>The spell check may not work correctly when using SpellerPages with ColdFusion.
-			Fixed.</li>
-		<li>[<a target="_blank" href="http://sourceforge.net/tracker/index.php?func=detail&aid=1481861&group_id=75348&atid=543653">SF
-			BUG-1481861</a>] HTML comments are now removed by the Word Cleanup System.</li>
-		<li>[<a target="_blank" href="http://sourceforge.net/tracker/index.php?func=detail&aid=1489390&group_id=75348&atid=543653">SF
-			BUG-1489390</a>] A few missing hard coded combo options used in some dialogs are
-			now localizable.</li>
-		<li>[<a target="_blank" href="http://sourceforge.net/tracker/index.php?func=detail&aid=1505448&group_id=75348&atid=543653">SF
-			BUG-1505448</a>] The Form dialog now retrieves the value of the "action" attribute
-			exactly as defined in the source.</li>
-		<li>[<a target="_blank" href="http://sourceforge.net/tracker/index.php?func=detail&aid=1517322&group_id=75348&atid=543655">SF
-			Patch-1517322</a>] Solved an issue when the toolbar has buttons with simple icons
-			(usually used by plugins) mixed with icons coming from a strip (the default toolbar
-			buttons).</li>
-		<li>[<a target="_blank" href="http://sourceforge.net/tracker/index.php?func=detail&aid=1575261&group_id=75348&atid=543655">SF
-			Patch-1575261</a>] Some fields in the Table and Cell Properties dialogs were being
-			cut. Fixed.</li>
-		<li>Fixed a startup compatibility issue with Firefox 1.0.4.</li>
-	</ul>
-	<h3>
-		Version 2.3.1</h3>
-	<p>
-		Fixed Bugs:</p>
-	<ul>
-		<li>[<a target="_blank" href="https://sourceforge.net/support/tracker.php?aid=1506126">SF
-			BUG-1506126</a>] Fixed the Catalan language file, which had been published with
-			problems in accented letters. </li>
-		<li>More performance improvements in the default File Browser.</li>
-		<li>[<a target="_blank" href="https://sourceforge.net/tracker/index.php?func=detail&aid=1506701&group_id=75348&atid=543653">SF
-			BUG-1506701</a>] Fixed compatibility issues with IE 5.5.</li>
-		<li>[<a target="_blank" href="https://sourceforge.net/tracker/index.php?func=detail&aid=1509073&group_id=75348&atid=543653">SF
-			BUG-1509073</a>] Fixed the "Image Properties" dialog window, which was making invalid
-			calls to the "editor/dialog/" directory, generating error 400 entries in the web
-			server log.</li>
-		<li>[<a target="_blank" href="https://sourceforge.net/tracker/index.php?func=detail&aid=1507294&group_id=75348&atid=543653">SF
-			BUG-1507294</a>] [<a target="_blank" href="https://sourceforge.net/tracker/index.php?func=detail&aid=1507953&group_id=75348&atid=543653">SF
-				BUG-1507953</a>] The editing area was getting a fixed size when using the "SetHTML"
-			API command or even when switching back from the source view. Fixed.</li>
-		<li>[<a target="_blank" href="https://sourceforge.net/tracker/?func=detail&atid=543653&aid=1507755&group_id=75348">SF
-			BUG-1507755</a>] Fixed a conflict between the "DisableObjectResizing" and "ShowBorders"
-			configuration options over IE.</li>
-		<li>Opera 9 tries to "mimic" Gecko in the browser detection system of FCKeditor. As
-			this browser is not "yet" supported, the editor was broken on it. It has been fixed,
-			and now a textarea is displayed, as in any other unsupported browser. Support for
-			Opera is still experimental and can be activated by setting the property "EnableOpera"
-			to true when creating an instance of the editor with the JavaScript integration
-			files.</li>
-		<li>With Opera 9, the toolbar was jumping on buttons rollover. </li>
-		<li>[<a target="_blank" href="https://sourceforge.net/tracker/index.php?func=detail&aid=1509479&group_id=75348&atid=543656">SF
-			BUG-1509479</a>] The iframes used in Firefox for all editor panels (dropdown combos,
-			context menu, etc...) are now being placed right before the main iframe that holds
-			the editor. In this way, if the editor container element is removed from the DOM
-			(by DHTML) they are removed together with it.</li>
-		<li>[<a target="_blank" href="https://sourceforge.net/tracker/index.php?func=detail&aid=1271070&group_id=75348&atid=543653">SF
-			BUG-1271070</a>] [<a target="_blank" href="https://sourceforge.net/tracker/index.php?func=detail&aid=1411430&group_id=75348&atid=543653">SF
-				BUG-1411430</a>] The editor API now works well on DHTML pages that create and
-			remove instances of FCKeditor dynamically. </li>
-		<li>A second call to a page with the editor was not working correctly with Firefox 1.0.x.
-			Fixed.</li>
-		<li>[<a target="_blank" href="https://sourceforge.net/tracker/index.php?func=detail&aid=1511460&group_id=75348&atid=543653">SF
-			BUG-1511460</a>] Small correction to the &lt;script&gt; protected source regex.
-			Thanks to Randall Severy.</li>
-		<li>[<a target="_blank" href="https://sourceforge.net/tracker/?func=detail&atid=543653&aid=1521754&group_id=75348">SF
-			BUG-1521754</a>] Small fix to the paths of the internal CSS files used by FCKeditor.
-			Thanks to johnw_ceb.</li>
-		<li>[<a target="_blank" href="https://sourceforge.net/tracker/index.php?func=detail&aid=1511442&group_id=75348&atid=543653">SF
-			BUG-1511442</a>] The &lt;base&gt; tag is now correctly handled in IE, no matter
-			its position in the source code.</li>
-		<li>[<a target="_blank" href="https://sourceforge.net/tracker/index.php?func=detail&aid=1507773&group_id=75348&atid=543653">SF
-			BUG-1507773</a>] The "Lock" and "Reset" buttons in the Image Properties dialog window
-			are not anymore jumping with Firefox 1.5.</li>
-	</ul>
-	<h3>
-		Version 2.3</h3>
-	<p>
-		New Features and Improvements:</p>
-	<ul>
-		<li>The <strong>Toolbar Sharing</strong> system has been completed. See sample10.html
-			and sample11.html.*</li>
-		<li>[<a target="_blank" href="https://sourceforge.net/tracker/index.php?func=detail&aid=1407500&group_id=75348&atid=543655">SF
-			Patch-1407500</a>] Small enhancement to the Find and Replace dialog windows.</li>
-	</ul>
-	<p>
-		Fixed Bugs:</p>
-	<ul>
-		<li>Small security fixes.</li>
-		<li>The context menu system has been optimized. Nested menus now open "onmouseover".
-		</li>
-		<li>An error in the image preloader system was making the toolbar strip being downloaded
-			once for each button on slow connections. Some enhancements have also been made
-			so now the smaple05.html is loading fast for all skins.</li>
-		<li>Fixed many memory leak issues with IE.</li>
-		<li>[<a target="_blank" href="https://sourceforge.net/tracker/index.php?func=detail&aid=1489768&group_id=75348&atid=543653">SF
-			BUG-1489768</a>] The panels (context menus, toolbar combos and color selectors),
-			where being displayed in the wrong position if the contents of the editor, or its
-			containing window were scrolled down. </li>
-		<li>[<a target="_blank" href="https://sourceforge.net/tracker/?func=detail&atid=543653&aid=1493176&group_id=75348">SF
-			BUG-1493176</a>] Using ASP, the connector was not working on servers with buffer
-			disable by default.</li>
-		<li>[<a target="_blank" href="https://sourceforge.net/tracker/index.php?func=detail&aid=1491784&group_id=75348&atid=543653">SF
-			BUG-1491784</a>] Language files have been updated to not include html entities.</li>
-		<li>[<a target="_blank" href="https://sourceforge.net/tracker/index.php?func=detail&aid=1490259&group_id=75348&atid=543653">SF
-			BUG-1490259</a>] No more security warning on IE over HTTPS.</li>
-		<li>[<a target="_blank" href="https://sourceforge.net/tracker/index.php?func=detail&aid=1493173&group_id=75348&atid=543653">SF
-			BUG-1493173</a>] [<a target="_blank" href="https://sourceforge.net/tracker/?func=detail&atid=543653&aid=1499708&group_id=75348">SF
-				BUG-1499708</a>] We now assume that, if a user is in source editing, he/she
-			wants to control the HTML, so the editor doesn't make changes to it when posting
-			the form being in source view or when calling the GetXHTML function in the API.
-		</li>
-		<li>[<a target="_blank" href="https://sourceforge.net/tracker/index.php?func=detail&aid=1490610&group_id=75348&atid=543653">SF
-			BUG-1490610</a>] The FitWindow is now working on elements set with relative position.</li>
-		<li>[<a target="_blank" href="https://sourceforge.net/tracker/index.php?func=detail&aid=1493438&group_id=75348&atid=543653">SF
-			BUG-1493438</a>] The "Word Wrap" combo in the cell properties dialog now accepts
-			only Yes/No (no more &lt;Not Set&gt; value).</li>
-		<li>The context menu is now being hidden when a nested menu option is selected.</li>
-		<li>Table cell context menu operations are now working correctly.</li>
-		<li>[<a target="_blank" href="https://sourceforge.net/tracker/index.php?func=detail&aid=1494549&group_id=75348&atid=543653">SF
-			BUG-1494549</a>] The code formatter was having problems with dollar signs inside
-			&lt;pre&gt; tags.</li>
-		<li>[<a target="_blank" href="https://sourceforge.net/tracker/index.php?func=detail&aid=1459740&group_id=75348&atid=543655">SF
-			Patch-1459740</a>] The "src" element of images can now be set by styles definitions.
-			Thanks to joelwreed.</li>
-		<li>[<a target="_blank" href="https://sourceforge.net/tracker/index.php?func=detail&aid=1437052&group_id=75348&atid=543655">SF
-			Patch-1437052</a>] [<a target="_blank" href="https://sourceforge.net/tracker/index.php?func=detail&aid=1436166&group_id=75348&atid=543655">SF
-				Patch-1436166</a>] [<a target="_blank" href="https://sourceforge.net/tracker/index.php?func=detail&aid=1352385&group_id=75348&atid=543655">SF
-					Patch-1352385</a>] Small fix to the FCK.InsertHtml, FCKTools.AppendStyleSheet
-			and FCKSelection.SelectNode functions over IE. Thanks to Alfonso Martinez.</li>
-		<li>[<a target="_blank" href="https://sourceforge.net/tracker/index.php?func=detail&aid=1349765&group_id=75348&atid=543655">SF
-			Patch-1349765</a>] Small fix to the FCKSelection.GetType over Firefox. Thanks to
-			Alfonso Martinez.</li>
-		<li>[<a target="_blank" href="https://sourceforge.net/tracker/?func=detail&atid=543655&aid=1495422&group_id=75348">SF
-			Patch-1495422</a>] The editor now creates link based on the URL when no selection
-			is available. Thanks to Dominik Pesch.</li>
-		<li>[<a target="_blank" href="https://sourceforge.net/tracker/?func=detail&atid=543655&aid=1478859&group_id=75348">SF
-			Patch-1478859</a>] On some circumstances, the Yahoo popup blocker was blocking the
-			File Browser window, giving no feedback to the user. Now an alert message is displayed.</li>
-		<li>When using the editor in a RTL localized interface, like Arabic, the toolbar combos
-			were not showing completely in the first click. Fixed.</li>
-		<li>[<a target="_blank" href="https://sourceforge.net/tracker/?func=detail&atid=543653&aid=1500212&group_id=75348">SF
-			BUG-1500212</a>] All "_samples/html" samples are now working when loading directly
-			from the Windows Explorer. Thanks to Alfonso Martinez.</li>
-		<li>The "FitWindow" feature was breaking the editor under Firefox 1.0.x.</li>
-		<li>[<a target="_blank" href="https://sourceforge.net/tracker/index.php?func=detail&aid=1500032&group_id=75348&atid=543655">SF
-			Patch-1500032</a>] In Firefox, the caret position now follows the user clicks when
-			clicking in the white area bellow the editor contents. Thanks to Alfonso Martinez.</li>
-		<li>[<a target="_blank" href="https://sourceforge.net/tracker/?func=detail&atid=543653&aid=1499522&group_id=75348">SF
-			BUG-1499522</a>] In Firefox, the link dialog window was loosing the focus (and quickly
-			reacquiring it) when opening. This behavior was blocking the dialog in some Linux
-			installations. </li>
-		<li>Drastically improved the loading performance of the file list in the default File
-			Browser.</li>
-		<li>[<a target="_blank" href="https://sourceforge.net/tracker/?func=detail&atid=543653&aid=1503059&group_id=75348">SF
-			BUG-1503059</a>] The default "BasePath" for FCKeditor in all integration files has
-			been now unified to "/fckeditor/" (lower-case). This is the usual casing system
-			in case sensitive OSs like Linux.</li>
-		<li>The "DisableFFTableHandles" setting is now honored when switching the full screen
-			mode with FitWindow.</li>
-		<li>Some fixes has been applied to the cell merging in Firefox.</li>
-	</ul>
-	<p>
-		* This version has been partially sponsored by <a href="http://www.footsteps.nl/">Footsteps</a>
-		and <a href="http://www.kentico.com/">Kentico</a>.</p>
-	<h3>
-		Version 2.3 Beta</h3>
-	<p>
-		New Features and Improvements:</p>
-	<ul>
-		<li><span><strong>Extremely Fast Loading!</strong> The editor now loads more than 3
-			times faster than before, with no impact on its advanced features.</span> </li>
-		<li><span><strong>New toolbar system</strong>:</span>
-			<ul>
-				<li>[<a target="_blank" href="https://sourceforge.net/tracker/index.php?func=detail&amp;aid=1454850&amp;group_id=75348&amp;atid=543656">SF
-					Feature-1454850</a>] The toolbar will now <strong>load much faster</strong>. All
-					images have being merged in a single image file using a unique system available
-					only with FCKeditor. </li>
-				<li>The &quot;Text Color&quot; and &quot;Background Color&quot; commands buttons have
-					enhancements on the interface.</li>
-				<li><strong><span style="color: #ff0000">Attention</span></strong>: As a completely
-					new system has being developed. Skins created for versions prior this one will not
-					work. Skin styles definitions have being merged, added and removed. All skins have
-					been a little bit reviewed. </li>
-				<li>It is possible to <strong>detach the toolbar</strong> from an editor instance and
-					share it with other instances. In this way you may have only one toolbar (in the
-					top of the window, for example, that can be used by many editors (see <a href="_samples/html/sample10.html">
-						sample10.html</a>). This feature is still under development (issues with IE
-					focus still to be solved).* </li>
-			</ul>
-		</li>
-		<li><strong><span>New context menu system</span></strong>:
-			<ul>
-				<li>It uses the same (fast) loading system as the toolbar. </li>
-				<li>Sub-Menus are now available to group features (try the context menu over a table
-					cell). </li>
-				<li>It is now possible to create your own context menu entries by creating plugins.
-				</li>
-			</ul>
-		</li>
-		<li><strong>New "FitWindow" toolbar button</strong>, based on the <a href="https://sourceforge.net/tracker/index.php?func=detail&aid=1431638&group_id=75348&atid=737639">
-			plugin</a> published by Paul Moers. Thanks Paul!</li>
-		<li><strong>&quot;Auto Grow&quot; Plugin</strong>: automatically resizes the editor
-			until a maximum height, based on its contents size.** </li>
-		<li>[<a target="_blank" href="https://sourceforge.net/tracker/index.php?func=detail&amp;aid=1444943&amp;group_id=75348&amp;atid=543656">SF
-			Feature-1444943</a>] <strong>Multiple CSS files</strong> can now be used in the
-			editing area. Just define FCKConfig.EditorAreaCSS as an array of strings (each one
-			is a path to a different css file). It works also as a simple string, as on prior
-			versions. </li>
-		<li>New language files:<ul>
-			<li><strong>Bengali / Bangla</strong> (by Richard Walledge).</li>
-			<li><strong>English (Canadian)</strong> (by Kevin Bennett). </li>
-			<li><strong>Khmer</strong> (by Sengtha Chay).</li>
-		</ul>
-		</li>
-		<li>The source view is now available in the editing area on Gecko browsers. Previously
-			a popup was used for it (due to a Firefox bug). </li>
-		<li><span>As some people may prefer the popup way for source editing, a new configuration
-			option (SourcePopup) has being introduced.</span> </li>
-		<li>The IEForceVScroll configuration option has been removed. The editor now automatically
-			shows the vertical scrollbar when needed (for XHTML doctypes). </li>
-		<li>The configuration file doesn't define a default DOCTYPE to be used now. </li>
-		<li>It is now possible to easily change the toolbar using the JavaScript API by just
-			calling &lt;EditorInstance&gt;.ToolbarSet.Load( '&lt;ToolbarName&gt;' ). See _testcases/010.html
-			for a sample. </li>
-		<li>The &quot;OnBlur&quot; and &quot;OnFocus&quot; JavaScript API events are now compatible
-			with all supported browsers. </li>
-		<li>Some few updates in the Lasso connector and uploader. </li>
-		<li>The GeckoUseSPAN setting is now set to "false" by default. In this way, the code
-			produced by the bold, italic and underline commands are the same on all browsers.</li>
-	</ul>
-	<p>
-		Fixed Bugs:</p>
-	<ul>
-		<li><strong>Important security fixes have been applied to the File Manager, Uploader
-			and Connectors. Upgrade is highly recommended.</strong> Thanks to Alberto Moro,
-			Baudouin Lamourere and James Bercegay.</li>
-		<li>[<a target="_blank" href="https://sourceforge.net/tracker/index.php?func=detail&amp;aid=1399966&amp;group_id=75348&amp;atid=543653">SF
-			BUG-1399966</a>] [<a target="_blank" href="https://sourceforge.net/tracker/index.php?func=detail&amp;aid=1249853&amp;group_id=75348&amp;atid=543653">SF
-				BUG-1249853</a>] The &quot;BaseHref&quot; configuration is now working with
-			Firefox in both normal and full page modes.</li>
-		<li>[<a target="_blank" href="https://sourceforge.net/tracker/index.php?func=detail&amp;aid=1405263&amp;group_id=75348&amp;atid=543653">SF
-			BUG-1405263</a>] A typo in the configuration file was impacting the Quick Upload
-			feature. </li>
-		<li>Nested &lt;ul&gt; and &lt;ol&gt; tags are now generating valid html.</li>
-		<li>The &quot;wmode&quot; and &quot;quality&quot; attributes are now preserved for Flash
-			embed tags, in case they are entered manually in the source view. Also, empty attributes
-			are removed from that tag. </li>
-		<li>Tables where not being created correctly on Opera. </li>
-		<li>The XHTML processor will ignore invalid tags with names ending with &quot;:&quot;,
-			like http:. </li>
-		<li><span>On Firefox, the scrollbar is not anymore displayed on toolbar dropdown commands
-			when not needed.</span> </li>
-		<li><span>Some small fixes have being done to the dropdown commands rendering for FF</span>.
-		</li>
-		<li>The table dialog window has been a little bit enlarged to avoid contents being cropped
-			on some languages, like Russian. </li>
-		<li>[<a target="_blank" href="https://sourceforge.net/tracker/index.php?func=detail&amp;aid=1465203&amp;group_id=75348&amp;atid=543653">SF
-			BUG-1465203</a>] The ieSpell download URL has been updated. The problem is that
-			they don't have a fixed URL for it, so let's hope the mirror will be up for it.
-		</li>
-		<li>[<a target="_blank" href="https://sourceforge.net/tracker/index.php?func=detail&amp;aid=1456332&amp;group_id=75348&amp;atid=543653">SF
-			BUG-1456332</a>] Small fix in the Spanish language file. </li>
-		<li>[<a target="_blank" href="https://sourceforge.net/tracker/index.php?func=detail&amp;aid=1457078&amp;group_id=75348&amp;atid=543653">SF
-			BUG-1457078</a>] The File Manager was generating 404 calls in the server. </li>
-		<li>[<a target="_blank" href="https://sourceforge.net/tracker/index.php?func=detail&amp;aid=1459846&amp;group_id=75348&amp;atid=543653">SF
-			BUG-1459846</a>] Fixed a problem with the config file if PHP is set to parse .js
-			files. </li>
-		<li>[<a target="_blank" href="https://sourceforge.net/tracker/index.php?func=detail&amp;aid=1432120&amp;group_id=75348&amp;atid=543653">SF
-			BUG-1432120</a>] The &quot;UserFilesAbsolutePath&quot; setting is not correctly
-			used in the PHP uploader. </li>
-		<li>[<a target="_blank" href="https://sourceforge.net/tracker/index.php?func=detail&amp;aid=1432120&amp;group_id=75348&amp;atid=543653">SF
-			BUG-1408869</a>] The collapse handler is now rendering correctly in Firefox 1.5.
-		</li>
-		<li>[<a target="_blank" href="https://sourceforge.net/tracker/index.php?func=detail&amp;aid=1410082&amp;group_id=75348&amp;atid=543653">SF
-			BUG-1410082</a>] [<a target="_blank" href="https://sourceforge.net/tracker/index.php?func=detail&amp;aid=1424240&amp;group_id=75348&amp;atid=543653">SF
-				BUG-1424240</a>] The &quot;moz-bindings.xml&quot; file is now well formed. </li>
-		<li>[<a target="_blank" href="https://sourceforge.net/tracker/index.php?func=detail&amp;aid=1413980&amp;group_id=75348&amp;atid=543653">SF
-			BUG-1413980</a>] All frameborder &quot;yes/no&quot; values have been changes to
-			&quot;1/0&quot;. </li>
-		<li>[<a target="_blank" href="https://sourceforge.net/tracker/index.php?func=detail&amp;aid=1414101&amp;group_id=75348&amp;atid=543653">SF
-			BUG-1414101</a>] The fake table borders are now showing correctly when running under
-			the &quot;file://&quot; protocol. </li>
-		<li>[<a target="_blank" href="https://sourceforge.net/tracker/index.php?func=detail&amp;aid=1414155&amp;group_id=75348&amp;atid=543653">SF
-			BUG-1414155</a>] Small typo in the cell properties dialog window.</li>
-		<li>Fixed a problem in the File Manager. It was not working well with folder or file
-			names with apostrophes ('). Thanks to René de Jong.</li>
-		<li>Small "lenght" type corrected in the select dialog window. Thanks to Bernd Nussbaumer.</li>
-		<li>The about box is now showing correctly in Firefox 1.5.</li>
-		<li>[<a target="_blank" href="https://sourceforge.net/tracker/index.php?func=detail&aid=1464020&group_id=75348&atid=543655">SF
-			Patch-1464020</a>] [<a target="_blank" href="http://sourceforge.net/tracker/index.php?func=detail&aid=1155793&group_id=75348&atid=543653">SF
-				BUG-1155793</a>] The "Unlink" command is now working correctly under Firefox
-			if you don't have a complete link selection. Thanks to Johnny Egeland.</li>
-		<li>In the File Manager, it was not possible to upload files to folders with ampersands
-			in the name. Thanks to Mike Pone.</li>
-		<li>[<a target="_blank" href="https://sourceforge.net/tracker/index.php?func=detail&aid=1178359&group_id=75348&atid=543653">SF
-			BUG-1178359</a>] Elements from the toolbar are not anymore draggable in the editing
-			area.</li>
-		<li>[<a target="_blank" href="http://sourceforge.net/tracker/index.php?func=detail&aid=1487544&group_id=75348&atid=543653">SF
-			BUG-1487544</a>] Fixed a small issue in the code formatter for &lt;br /&gt; and
-			&lt;hr /&gt; tags.</li>
-		<li>The "Background Color" command now works correctly when the GeckoUseSPAN setting
-			is disabled (default).</li>
-		<li>Links are now rendered in blue with Firefox (they were black before). Actually,
-			an entry for it has been added to the editing area CSS, so you can customize with
-			the color you prefer. </li>
-	</ul>
-	<p>
-		* This version has been partially sponsored by <a href="http://www.footsteps.nl/">Footsteps</a>
-		and <a href="http://www.kentico.com/">Kentico</a>.
-		<br />
-		** This version has been partially sponsored by <a href="http://www.nextide.ca/">Nextide</a>.</p>
-	<h3>
-		Version 2.2</h3>
-	<p>
-		New Features and Improvements:</p>
-	<ul>
-		<li>Let's welcome Wim Lemmens (didgiman). He's our new responsible for the ColdFusion
-			integration. In this version we are introducing his new files with the following
-			changes:
-			<ul>
-				<li>The &quot;<strong>Uploader</strong>&quot;, used for quick uploads,&nbsp;is now available
-					<strong>natively for ColdFusion</strong>. </li>
-				<li>Small bugs have been corrected in the <strong>File Browser connector</strong>. </li>
-				<li>The samples now work as is, even if you don't install the editor in the &quot;/FCKeditor&quot;
-					directory.</li>
-			</ul>
-		</li>
-		<li>And a big welcome also to &quot;Andrew Liu&quot;, our responsible for the <strong>
-			Python</strong> integration. This version is bringing <strong>native support for Python</strong>
-			, including the File Browser connector and Quick Upload. </li>
-		<li>The &quot;<strong>IsDirty()</strong>&quot; and &quot;<strong>ResetIsDirty()</strong>&quot;
-			functions have been&nbsp;added to the&nbsp;JavaScript API&nbsp;to check if the editor
-			content has been changed.* </li>
-		<li>New language files:
-			<ul>
-				<li><strong>Hindi</strong> (by Utkarshraj Atmaram) </li>
-				<li><strong>Latvian </strong>(by Janis Klavin&scaron;)</li>
-			</ul>
-		</li>
-		<li>For&nbsp;the interface, now we have complete <strong>RTL support</strong> also for
-			the drop-down toolbar commands, color selectors and context menu. </li>
-		<li>[<a target="_blank" href="https://sourceforge.net/tracker/index.php?func=detail&amp;aid=1325113&amp;group_id=75348&amp;atid=543653">SF
-			BUG-1325113</a>] [<a target="_blank" href="https://sourceforge.net/tracker/index.php?func=detail&amp;aid=1277661&amp;group_id=75348&amp;atid=543653">SF
-				BUG-1277661</a>] The new &quot;Delete Table&quot; command is available in the
-			Context Menu when right-clicking inside a table. </li>
-		<li>The &quot;FCKConfig.DisableTableHandles&quot; configuration option is now working
-			on Firefox 1.5. </li>
-		<li>The new &quot;<strong>OnBlur</strong>&quot; and &quot;<strong>OnFocus</strong>&quot;
-			events have been added to the JavaScript API (IE only). See&nbsp;&quot;_samples/html/sample09.html&quot;&nbsp;*
-		</li>
-		<li><strong><font color="#ff0000">Attention</font></strong>: The &quot;<strong>GetHTML</strong>&quot;
-			function has been deprecated. It now returns the same value as &quot;<strong>GetXHTML</strong>&quot;.
-			The same is valid for the &quot;EnableXHTML&quot; and &quot;EnableSourceXHTML&quot;
-			that have no effects now. The editor now works with XHTML output only. </li>
-		<li><strong><font color="#ff0000">Attention</font></strong>: A new &quot;<strong>PreserveSessionOnFileBrowser</strong>&quot;
-			configuration option has been introduced. It makes it possible to set whenever is
-			needed to maintain the user session in the File Browser. It is disabled by default,
-			as it has very specific usage and may cause the File Browser to be blocked by popup
-			blockers. If you have custom File Browsers that depends on session information,
-			remember to activate it. </li>
-		<li><strong><font color="#ff0000">Attention</font></strong>: The &quot;<strong>fun</strong>&quot;
-			smileys set has been removed from the package. If you are using it, you must manually
-			copy it to newer installations and upgrades. </li>
-		<li><strong><font color="#ff0000">Attention</font></strong>: The &quot;<strong>mcpuk</strong>&quot;
-			file browser has been removed from the package. We have no ways to support it. There
-			were also some licensing issues with it. Its web site can still be found at <a href="http://mcpuk.net/fbxp/">
-				http://mcpuk.net/fbxp/</a>. </li>
-		<li>It is now possible to set different CSS styles for the chars in the Special Chars
-			dialog window by adding the &quot;SpecialCharsOut&quot; and &quot;SpecialCharsOver&quot;
-			in the &quot;fck_dialog.css&quot; skin file.* </li>
-		<li>[<a target="_blank" href="https://sourceforge.net/tracker/index.php?func=detail&amp;aid=1268726&amp;group_id=75348&amp;atid=543655">SF
-			Patch-1268726</a>] Added table &quot;summary&quot; support in the table dialog.
-			Thanks to Sebastien-Mahe. </li>
-		<li>[<a target="_blank" href="https://sourceforge.net/tracker/index.php?func=detail&amp;aid=1284380&amp;group_id=75348&amp;atid=543655">SF
-			Patch-1284380</a>] It is now possible to define the icon of a FCKToolbarPanelButton
-			object without being tied to the skin path (just like FCKToolbarButton). Thanks
-			to Ian Sullivan. </li>
-		<li>[<a target="_blank" href="https://sourceforge.net/tracker/index.php?func=detail&amp;aid=1338610&amp;group_id=75348&amp;atid=543655">SF
-			Patch-1338610</a>] [<a target="_blank" href="https://sourceforge.net/tracker/index.php?func=detail&amp;aid=1263009&amp;group_id=75348&amp;atid=543656">SF
-				Patch-1263009</a>] New characters have been added to the &quot;Special Characters&quot;
-			dialog window. Thanks to Deian. </li>
-		<li>You can set the QueryString value &quot;fckdebug=true&quot; to activate &quot;debug
-			mode&quot; in the editor (showing the debug window), overriding the configurations.
-			The &quot;AllowQueryStringDebug&quot; configuration option is also available so
-			you can disable this feature.</li>
-	</ul>
-	<p>
-		Fixed Bugs:</p>
-	<ul>
-		<li>[<a target="_blank" href="https://sourceforge.net/tracker/index.php?func=detail&amp;aid=1363548&amp;group_id=75348&amp;atid=543653">SF
-			BUG-1363548</a>] [<a target="_blank" href="https://sourceforge.net/tracker/index.php?func=detail&amp;aid=1364425&amp;group_id=75348&amp;atid=543653">SF
-				BUG-1364425</a>] [<a target="_blank" href="https://sourceforge.net/tracker/index.php?func=detail&amp;aid=1335045&amp;group_id=75348&amp;atid=543653">SF
-					BUG-1335045</a>] [<a target="_blank" href="https://sourceforge.net/tracker/index.php?func=detail&amp;aid=1289661&amp;group_id=75348&amp;atid=543653">SF
-						BUG-1289661</a>] [<a target="_blank" href="https://sourceforge.net/tracker/index.php?func=detail&amp;aid=1225370&amp;group_id=75348&amp;atid=543653">SF
-							BUG-1225370</a>] [<a target="_blank" href="https://sourceforge.net/tracker/index.php?func=detail&amp;aid=1156291&amp;group_id=75348&amp;atid=543653">SF
-								BUG-1156291</a>] [<a target="_blank" href="https://sourceforge.net/tracker/index.php?func=detail&amp;aid=1165914&amp;group_id=75348&amp;atid=543653">SF
-									BUG-1165914</a>] [<a target="_blank" href="https://sourceforge.net/tracker/index.php?func=detail&amp;aid=1111877&amp;group_id=75348&amp;atid=543653">SF
-										BUG-1111877</a>] [<a target="_blank" href="https://sourceforge.net/tracker/index.php?func=detail&amp;aid=1092373&amp;group_id=75348&amp;atid=543653">SF
-											BUG-1092373</a>] [<a target="_blank" href="https://sourceforge.net/tracker/index.php?func=detail&amp;aid=1101596&amp;group_id=75348&amp;atid=543653">SF
-												BUG-1101596</a>] [<a target="_blank" href="https://sourceforge.net/tracker/index.php?func=detail&amp;aid=1246952&amp;group_id=75348&amp;atid=543653">SF
-													BUG-1246952</a>] The URLs for links and
-			images are now correctly preserved as entered, no matter if you are using relative
-			or absolute paths. </li>
-		<li>[<a target="_blank" href="https://sourceforge.net/tracker/index.php?func=detail&amp;aid=1162809&amp;group_id=75348&amp;atid=543653">SF
-			BUG-1162809</a>] [<a target="_blank" href="https://sourceforge.net/tracker/index.php?func=detail&amp;aid=1205638&amp;group_id=75348&amp;atid=543653">SF
-				BUG-1205638</a>] The &quot;Image&quot; and &quot;Flash&quot;&nbsp;dialog windows
-			now loads the preview correctly if the &quot;BaseHref&quot; configuration option
-			is set. </li>
-		<li>[<a target="_blank" href="https://sourceforge.net/tracker/index.php?func=detail&amp;aid=1329807&amp;group_id=75348&amp;atid=543653">SF
-			BUG-1329807</a>] The alert boxes are now showing correctly when doing cut/copy/paste
-			operations on Firefox installations when it is not possible to execute that operations
-			due to security settings. </li>
-		<li>A new &quot;Panel&quot; system (used in the drop-dowm toolbar commands, color selectors
-			and context menu) has been developed. The following bugs have been fixed with it:
-			<ul>
-				<li>[<a target="_blank" href="https://sourceforge.net/tracker/index.php?func=detail&amp;aid=1186927&amp;group_id=75348&amp;atid=543653">SF
-					BUG-1186927</a>] On IE, sometimes the context menu was being partially hidden.*
-				</li>
-				<li>On Firefox, the context menu was flashing in the wrong position before showing.
-				</li>
-				<li>On Firefox 1.5, the Color Selector was not working. </li>
-				<li>On Firefox 1.5, the fonts in the panels were too big. </li>
-				<li>[<a target="_blank" href="https://sourceforge.net/tracker/index.php?func=detail&amp;aid=1076435&amp;group_id=75348&amp;atid=543653">SF
-					BUG-1076435</a>] [<a target="_blank" href="https://sourceforge.net/tracker/index.php?func=detail&amp;aid=1200631&amp;group_id=75348&amp;atid=543653">SF
-						BUG-1200631</a>] On Firefox, sometimes the context menu was being shown in the
-					wrong position.</li>
-			</ul>
-		</li>
-		<li>[<a target="_blank" href="https://sourceforge.net/tracker/?func=detail&amp;atid=543653&amp;aid=1364094&amp;group_id=75348">SF
-			BUG-1364094</a>] Font families were <a target="_blank" href="https://bugzilla.mozilla.org/show_bug.cgi?id=317572">
-				not being rendered correctly on Firefox</a> . </li>
-		<li>[<a target="_blank" href="https://sourceforge.net/tracker/?func=detail&amp;atid=543653&amp;aid=1315954&amp;group_id=75348">SF
-			BUG-1315954</a>] No error is thrown when pasting some case specific code from editor
-			to editor. </li>
-		<li>[<a target="_blank" href="https://sourceforge.net/tracker/index.php?func=detail&amp;aid=1341553&amp;group_id=75348&amp;atid=543653">SF
-			BUG-1341553</a>] A small fix for a security alert in the File&nbsp;Browser has been
-			applied. </li>
-		<li>[<a target="_blank" href="https://sourceforge.net/tracker/index.php?func=detail&amp;aid=1370953&amp;group_id=75348&amp;atid=543653">SF
-			BUG-1370953</a>] [<a target="_blank" href="https://sourceforge.net/tracker/index.php?func=detail&amp;aid=1339898&amp;group_id=75348&amp;atid=543653">SF
-				BUG-1339898</a>] [<a target="_blank" href="https://sourceforge.net/tracker/index.php?func=detail&amp;aid=1323319&amp;group_id=75348&amp;atid=543653">SF
-					BUG-1323319</a>] A message will be shown to the user (instead of a JS error)&nbsp;if
-			a &quot;popup blocker&quot; blocks the &quot;Browser Server&quot; button. Thanks
-			to Erwin Verdonk. </li>
-		<li>[<a target="_blank" href="https://sourceforge.net/tracker/index.php?func=detail&amp;aid=1370355&amp;group_id=75348&amp;atid=543653">SF
-			BUG-1370355</a>] Anchor links that points to a single character anchor, like &quot;#A&quot;,
-			are now correctly detected in the Link dialog window. Thanks to Ricky Casey. </li>
-		<li>[<a target="_blank" href="https://sourceforge.net/tracker/index.php?func=detail&amp;aid=1368998&amp;group_id=75348&amp;atid=543653">SF
-			BUG-1368998</a>] Custom error processing has been added to the file upload on the
-			File Browser. </li>
-		<li>[<a target="_blank" href="https://sourceforge.net/tracker/index.php?func=detail&amp;aid=1367802&amp;group_id=75348&amp;atid=543653">SF
-			BUG-1367802</a>] [<a target="_blank" href="https://sourceforge.net/tracker/index.php?func=detail&amp;aid=1207740&amp;group_id=75348&amp;atid=543653">SF
-				BUG-1207740</a>] A message is shown to the user if a dialog box is blocked by
-			a popup blocker in Firefox. </li>
-		<li>[<a target="_blank" href="https://sourceforge.net/tracker/index.php?func=detail&amp;aid=1358891&amp;group_id=75348&amp;atid=543653">SF
-			BUG-1358891</a>] [<a target="_blank" href="https://sourceforge.net/tracker/index.php?func=detail&amp;aid=1340960&amp;group_id=75348&amp;atid=543653">SF
-				BUG-1340960</a>] The editor not works locally (without a web server) on directories
-			where the path contains spaces. </li>
-		<li>[<a target="_blank" href="https://sourceforge.net/tracker/index.php?func=detail&amp;aid=1357247&amp;group_id=75348&amp;atid=543653">SF
-			BUG-1357247</a>] The editor now intercepts SHIFT + INS keystrokes when needed. </li>
-		<li>[<a target="_blank" href="https://sourceforge.net/tracker/index.php?func=detail&amp;aid=1328488&amp;group_id=75348&amp;atid=543653">SF
-			BUG-1328488</a>] <strong><font color="#ff0000">Attention</font></strong>: The Page
-			Break command now produces different tags&nbsp;to avoid&nbsp;XHTML compatibility
-			issues. Any Page Break previously applied to content produced with previous versions
-			of FCKeditor will not me rendered now, even if&nbsp;they will still be working correctly.
-		</li>
-		<li>It is now possible to allow cut/copy/past operations on Firefox using the <a
-			href="http://kb.mozillazine.org/Granting_JavaScript_access_to_the_clipboard"
-			target="_blank">user.js</a> file. </li>
-		<li>[<a target="_blank" href="https://sourceforge.net/tracker/index.php?func=detail&amp;aid=1336792&amp;group_id=75348&amp;atid=543653">SF
-			BUG-1336792</a>] A fix has been applied to the XHTML processor to allow tag names
-			with the &quot;minus&quot; char (-). </li>
-		<li>[<a target="_blank" href="https://sourceforge.net/tracker/index.php?func=detail&amp;aid=1339560&amp;group_id=75348&amp;atid=543653">SF
-			BUG-1339560</a>] The editor now correctly removes the &quot;selected&quot; option
-			for checkboxes and radio buttons. </li>
-		<li>The Table dialog box now selects the table correctly when right-clicking on objects
-			(like images) placed inside the table. </li>
-		<li><strong><font color="#ff0000">Attention</font></strong>: A few changes have been
-			made in the skins. If you have a custom skin, it is recommended you to make a diff
-			of the fck_contextmenu.css file of the default skin with your implementation. </li>
-		<li>Mouse select (marking&nbsp;things in blue, like selecting text) has been disabled
-			on panels (drop-down menu commands, color selector and context menu) and toolbar,
-			for both IE and Firefox. </li>
-		<li>On Gecko, fake borders will not be applied to tables with the border attribute set
-			to more than 0, but placed inside tables with border set to 0. </li>
-		<li>[<a target="_blank" href="https://sourceforge.net/tracker/index.php?func=detail&amp;aid=1360717&amp;group_id=75348&amp;atid=543653">SF
-			BUG-1360717</a>] A wrapping issue in the &quot;Silver&quot; skin has been corrected.
-			Thanks to Ricky Casey. </li>
-		<li>[<a target="_blank" href="https://sourceforge.net/tracker/index.php?func=detail&amp;aid=1251145&amp;group_id=75348&amp;atid=543653">SF
-			BUG-1251145</a>] In IE, the focus is now maintained in the text when clicking in
-			the empty area&nbsp;following it. </li>
-		<li>[<a target="_blank" href="https://sourceforge.net/tracker/index.php?func=detail&amp;aid=1181386&amp;group_id=75348&amp;atid=543653">SF
-			BUG-1181386</a>] [<a target="_blank" href="https://sourceforge.net/tracker/index.php?func=detail&amp;aid=1237791&amp;group_id=75348&amp;atid=543653">SF
-				BUG-1237791</a>] The &quot;Stylesheet Classes&quot; field in the Link dialog
-			window in now applied correctly on IE. Thanks to Andrew Crowe. </li>
-		<li>The &quot;Past from Word&quot; dialog windows is now showing correctly on Firefox
-			on some languages. </li>
-		<li>[<a target="_blank" href="https://sourceforge.net/tracker/index.php?func=detail&amp;aid=1315008&amp;group_id=75348&amp;atid=543653">SF
-			BUG-1315008</a>] [<a target="_blank" href="https://sourceforge.net/tracker/index.php?func=detail&amp;aid=1241992&amp;group_id=75348&amp;atid=543653">SF
-				BUG-1241992</a>] IE, when selecting objects (like images) and hitting the &quot;Backspace&quot;
-			button, the browser's &quot;back&quot; will not get executed anymore and the object
-			will be correctly deleted. </li>
-		<li>The &quot;AutoDetectPasteFromWord&quot; is now working correctly in IE. Thanks to
-			Juan Ant. G&oacute;mez. </li>
-		<li>A small enhancement has been made in the Word pasting detection. Thanks to Juan
-			Ant. G&oacute;mez. </li>
-		<li>[<a target="_blank" href="https://sourceforge.net/tracker/index.php?func=detail&amp;aid=1090686&amp;group_id=75348&amp;atid=543653">SF
-			BUG-1090686</a>] No more conflict with Firefox &quot;Type-Ahead Find&quot; feature.
-		</li>
-		<li>[<a target="_blank" href="https://sourceforge.net/tracker/index.php?func=detail&amp;aid=942653&amp;group_id=75348&amp;atid=543653">SF
-			BUG-942653</a>] [<a target="_blank" href="https://sourceforge.net/tracker/index.php?func=detail&amp;aid=1155856&amp;group_id=75348&amp;atid=543653">SF
-				BUG-1155856</a>] The &quot;width&quot; and &quot;height&quot; of images sized
-			using the inline handlers are now correctly loaded in the image dialog box. </li>
-		<li>[<a target="_blank" href="https://sourceforge.net/tracker/index.php?func=detail&amp;aid=1209093&amp;group_id=75348&amp;atid=543653">SF
-			BUG-1209093</a>] When &quot;Full Page Editing&quot; is active, in the &quot;Document
-			Properties&quot; dialog, the &quot;Browse Server&quot; button for the page background
-			is now correctly hidden if &quot;ImageBrowser&quot; is set to &quot;false&quot;
-			in the configurations file. Thanks to Richard. </li>
-		<li>[<a target="_blank" href="https://sourceforge.net/tracker/index.php?func=detail&amp;aid=1120266&amp;group_id=75348&amp;atid=543653">SF
-			BUG-1120266</a>] [<a target="_blank" href="https://sourceforge.net/tracker/index.php?func=detail&amp;aid=1186196&amp;group_id=75348&amp;atid=543653">SF
-				BUG-1186196</a>] The editor now retains the focus when selecting commands in
-			the toolbar. </li>
-		<li>[<a target="_blank" href="https://sourceforge.net/tracker/index.php?func=detail&amp;aid=1244480&amp;group_id=75348&amp;atid=543653">SF
-			BUG-1244480</a>] The editor now will look first to linked fields &quot;ids&quot;
-			and&nbsp;second to &quot;names&quot;. </li>
-		<li>[<a target="_blank" href="https://sourceforge.net/tracker/index.php?func=detail&amp;aid=1252905&amp;group_id=75348&amp;atid=543653">SF
-			BUG-1252905</a>] The &quot;InsertHtml&quot; function now preserves URLs as entered.
-		</li>
-		<li>[<a target="_blank" href="https://sourceforge.net/tracker/index.php?func=detail&amp;aid=1266317&amp;group_id=75348&amp;atid=543653">SF
-			BUG-1266317</a>] Toolbar commands are not anymore executed outside the editor. </li>
-		<li>[<a target="_blank" href="https://sourceforge.net/tracker/index.php?func=detail&amp;aid=1365664&amp;group_id=75348&amp;atid=543653">SF
-			BUG-1365664</a>] The &quot;wrap=virtual&quot; attribute has been removed from the
-			integration files for validation purposes. No big impact. </li>
-		<li>[<a target="_blank" href="https://sourceforge.net/tracker/index.php?func=detail&amp;aid=972193&amp;group_id=75348&amp;atid=543653">SF
-			BUG-972193</a>] Now just one click is needed to active the cursor inside the editor.
-		</li>
-		<li>The hidden fields used by the editor are now protected from changes using the &quot;Web
-			Developer Add-On &gt; Forms &gt; Display Forms Details&quot; extension. Thanks to
-			Jean-Marie Griess. </li>
-		<li>On IE, the &quot;Format&quot; toolbar dropdown now reflects the current paragraph
-			type on IE. Because of a bug in the browser, it is quite dependent on the browser
-			language and the editor interface language (both must be the same). Also, as the
-			&quot;Normal (DIV)&quot; type is seen by IE as &quot;Normal&quot;, to avoid confusion,
-			both types are ignored by this fix. </li>
-		<li>On some very rare cases, IE was loosing the &quot;align&quot; attribute for DIV
-			tags. Fixed. </li>
-		<li>[<a target="_blank" href="https://sourceforge.net/tracker/?func=detail&amp;atid=543653&amp;aid=1388799&amp;group_id=75348">SF
-			BUG-1388799</a>] The code formatter was removing spaces on the beginning of lines
-			inside PRE tags. Fixed. </li>
-		<li>[<a target="_blank" href="https://sourceforge.net/tracker/index.php?func=detail&amp;aid=1387135&amp;group_id=75348&amp;atid=543653">SF
-			BUG-1387135</a>] No more &quot;NaN&quot; values in the image dialog, when changing
-			the sizes in some situations. </li>
-		<li>Corrected a small type in the table handler. </li>
-		<li>You can now set the &quot;z-index&quot; for floating panels (toolbar dropdowns,
-			color selectors, context menu) in Firefox, avoiding having them hidden under another
-			objects. By default it is set to 10,000. Use the FloatingPanelsZIndex configuration
-			option to change this value.</li>
-	</ul>
-	<p>
-		<strong>Special thanks</strong> to <a target="_blank" href="https://sourceforge.net/users/alfonsoml/">
-			Alfonso Martinez</a>, who have provided many patches and suggestions for the
-		following features / fixes present in this version. I encourage all you to <a href="https://sourceforge.net/donate/index.php?user_id=1356422">
-			donate</a> to Alfonso, as a way to say thanks for his nice open source approach.
-		Thanks Alfonso!. Check out his contributions:</p>
-	<ul>
-		<li>[<a target="_blank" href="https://sourceforge.net/tracker/?func=detail&amp;atid=543653&amp;aid=1364094&amp;group_id=75348">SF
-			BUG-1352539</a>] [<a target="_blank" href="https://sourceforge.net/tracker/index.php?func=detail&amp;aid=1208348&amp;group_id=75348&amp;atid=543653">SF
-				BUG-1208348</a>] With Firefox, no more &quot;fake&quot; selections are appearing
-			when inserting images, tables, special chars or when using the &quot;insertHtml&quot;
-			function. </li>
-		<li>[<a target="_blank" href="https://sourceforge.net/tracker/?func=detail&amp;atid=543655&amp;aid=1382588&amp;group_id=75348">SF
-			Patch-1382588</a>] The &quot;FCKConfig.DisableImageHandles&quot; configuration option
-			is not working on Firefox 1.5. </li>
-		<li>[<a target="_blank" href="https://sourceforge.net/tracker/index.php?func=detail&amp;aid=1368586&amp;group_id=75348&amp;atid=543655">SF
-			Patch-1368586</a>] Some fixes have been applied to the Flash dialog box and the
-			Flash pre-processor. </li>
-		<li>[<a target="_blank" href="https://sourceforge.net/tracker/index.php?func=detail&amp;aid=1360253&amp;group_id=75348&amp;atid=543655">SF
-			Patch-1360253</a>] [<a target="_blank" href="https://sourceforge.net/tracker/index.php?func=detail&amp;aid=1378782&amp;group_id=75348&amp;atid=543653">SF
-				BUG-1378782</a>] [<a target="_blank" href="https://sourceforge.net/tracker/index.php?func=detail&amp;aid=1305899&amp;group_id=75348&amp;atid=543653">SF
-					BUG-1305899</a>] [<a target="_blank" href="https://sourceforge.net/tracker/index.php?func=detail&amp;aid=1344738&amp;group_id=75348&amp;atid=543653">SF
-						BUG-1344738</a>] [<a target="_blank" href="https://sourceforge.net/tracker/index.php?func=detail&amp;aid=1347808&amp;group_id=75348&amp;atid=543653">SF
-							BUG-1347808</a>] On dialogs, some fields&nbsp;became impossible
-			to select or change when using Firefox. It has been fixed. </li>
-		<li>[<a target="_blank" href="https://sourceforge.net/tracker/index.php?func=detail&amp;aid=1357445&amp;group_id=75348&amp;atid=543655">SF
-			Patch-1357445</a>] Add support for DIV in the Format drop-down combo for Firefox.
-		</li>
-		<li>[<a target="_blank" href="https://sourceforge.net/tracker/index.php?func=detail&amp;aid=1350465&amp;group_id=75348&amp;atid=543653">SF
-			BUG-1350465</a>] [<a target="_blank" href="https://sourceforge.net/tracker/index.php?func=detail&amp;aid=1376175&amp;group_id=75348&amp;atid=543653">SF
-				BUG-1376175</a>] The &quot;Cell Properties&quot; dialog now works correctly
-			when right-clicking in an object (image, for example) placed inside the cell itself.
-		</li>
-		<li>[<a target="_blank" href="https://sourceforge.net/tracker/index.php?func=detail&amp;aid=1349166&amp;group_id=75348&amp;atid=543655">SF
-			Patch-1349166</a>] On IE, there is now support for namespaces on tags names. </li>
-		<li>[<a target="_blank" href="https://sourceforge.net/tracker/index.php?func=detail&amp;aid=1350552&amp;group_id=75348&amp;atid=543655">SF
-			Patch-1350552</a>] Fix the display issue when applying styles on tables. </li>
-		<li>[<a target="_blank" href="https://sourceforge.net/tracker/index.php?func=detail&amp;aid=1352320&amp;group_id=75348&amp;atid=543655">SF
-			Patch-1352320</a> ] Fixed&nbsp;a wrong&nbsp;usage of the &quot;parentElement&quot;
-			property on Gecko. </li>
-		<li>[<a target="_blank" href="https://sourceforge.net/tracker/index.php?func=detail&amp;aid=1355007&amp;group_id=75348&amp;atid=543655">SF
-			Patch-1355007</a>] The new &quot;FCKDebug.OutputObject&quot; function is available
-			to dump all object information in the debug window. </li>
-		<li>[<a target="_blank" href="https://sourceforge.net/tracker/index.php?func=detail&amp;aid=1329500&amp;group_id=75348&amp;atid=543655">SF
-			Patch-1329500</a>] It is now possible to delete table columns when clicking on a
-			TH cell of the column. </li>
-		<li>[<a target="_blank" href="https://sourceforge.net/tracker/index.php?func=detail&amp;aid=1315351&amp;group_id=75348&amp;atid=543655">SF
-			Patch-1315351</a>] It is now possible to pass the image width and height to the
-			&quot;SetUrl&quot; function of the Flash dialog box. </li>
-		<li>[<a target="_blank" href="https://sourceforge.net/tracker/index.php?func=detail&amp;aid=1327384&amp;group_id=75348&amp;atid=543655">SF
-			Patch-1327384</a>] TH tags are now correctly handled by the source code formatter
-			and the &quot;FillEmptyBlocks&quot; configuration option. </li>
-		<li>[<a target="_blank" href="https://sourceforge.net/tracker/index.php?func=detail&amp;aid=1327406&amp;group_id=75348&amp;atid=543655">SF
-			Patch-1327406</a>] Fake borders are now displayed for TH elements on tables with
-			border set to 0. Also, on Firefox, it will now work even if the border attribute
-			is not defined and the borders are not dotted. </li>
-		<li>Hidden fields now get rendered on Firefox. </li>
-		<li>The BasePath is now included in the debugger URL to avoid problems when calling
-			it from plugins.</li>
-	</ul>
-	<p>
-		* This version has been partially sponsored by <a target="_blank" href="http://www.alkacon.com">
-			Alkacon Software</a>.</p>
-	<h3>
-		Version 2.1.1</h3>
-	<p>
-		New Features and Improvements:</p>
-	<ul>
-		<li>The new &quot;<strong>Insert Page Break</strong>&quot;&nbsp;command (for printing)&nbsp;has
-			been introduced.* </li>
-		<li>The editor package now has a root directory called &quot;FCKeditor&quot;.</li>
-	</ul>
-	<p>
-		Fixed Bugs:</p>
-	<ul>
-		<li>[<a target="_blank" href="https://sourceforge.net/tracker/index.php?func=detail&amp;aid=1326285&amp;group_id=75348&amp;atid=543653">SF
-			BUG-1326285</a>] [<a target="_blank" href="https://sourceforge.net/tracker/index.php?func=detail&amp;aid=1316430&amp;group_id=75348&amp;atid=543653">SF
-				BUG-1316430</a>] [<a target="_blank" href="https://sourceforge.net/tracker/index.php?func=detail&amp;aid=1323662&amp;group_id=75348&amp;atid=543653">SF
-					BUG-1323662</a>] [<a target="_blank" href="https://sourceforge.net/tracker/index.php?func=detail&amp;aid=1326223&amp;group_id=75348&amp;atid=543653">SF
-						BUG-1326223</a>] We are doing a little step back with this version.
-			The ENTER and BACKSPACE behavior changes for Firefox have been remove. It is a nice
-			feature, but we need much more testing&nbsp;on it. It introduced some bugs and so
-			its preferable to not have that feature, avoiding problems (even if that feature
-			was intended to solve some issues). </li>
-		<li>[<a target="_blank" href="https://sourceforge.net/tracker/index.php?func=detail&amp;aid=1289372&amp;group_id=75348&amp;atid=543653">SF
-			BUG-1275714</a>] Comments in the beginning of the source are now preserved when
-			using the &quot;undo&quot; and &quot;redo&quot; commands. </li>
-		<li>The &quot;undo&quot; and &quot;redo&quot; commands now work for the Style command.
-		</li>
-		<li>An error in the execution of the pasting commands on Firefox has been fixed. </li>
-		<li>[<a target="_blank" href="https://sourceforge.net/tracker/?func=detail&amp;atid=543653&amp;aid=1326184&amp;group_id=75348">SF
-			BUG-1326184</a>] No strange (invalid) entities are created when using Firefox. Also,
-			the &amp;nbsp; used by the FillEmptyBlocks setting is maintained even if you disable
-			the ProcessHTMLEntities setting.</li>
-	</ul>
-	<p>
-		* This version has been partially sponsored by <a target="_blank" href="http://www.acttive.com.br/">
-			Acctive Software&nbsp;S.A.</a>.</p>
-	<h3>
-		Version 2.1</h3>
-	<p>
-		New Features and Improvements:</p>
-	<ul>
-		<li>[<a target="_blank" href="https://sourceforge.net/tracker/index.php?func=detail&amp;aid=1200328&amp;group_id=75348&amp;atid=543653">SF
-			BUG-1200328</a>] The editor now offers a way to &quot;protect&quot; part of the
-			source to remain untouched while editing or changing views.&nbsp;Just use the &quot;FCKConfig.ProtectedSource&quot;
-			object to configure it and customize to your needs. It is based on regular expressions.
-			See fckconfig.js for some samples. </li>
-		<li>The editor now offers native support for <strong>Lasso</strong>. Thanks and welcome&nbsp;to
-			our new developer Jason Huck. </li>
-		<li>New language files are available:
-			<ul>
-				<li><strong>Faraose</strong> (by S&iacute;min Lassaberg and&nbsp;Helgi Arnthorsson)
-				</li>
-				<li><strong>Malay</strong> (by Fairul Izham Mohd Mokhlas) </li>
-				<li><strong>Mongolian</strong> (by Lkamtseren Odonbaatar) </li>
-				<li><strong>Vietnamese</strong> (by Phan Binh Giang)</li>
-			</ul>
-		</li>
-		<li>A new configurable&nbsp;ColdFusion connector is available. Thanks to Mark Woods.
-			Many enhancements has been introduced with it. </li>
-		<li>The PHP connector for the default File Browser now sorts the folders and files names.
-		</li>
-		<li>[<a target="_blank" href="https://sourceforge.net/tracker/index.php?func=detail&amp;aid=1289372&amp;group_id=75348&amp;atid=543653">SF
-			BUG-1289372</a>] [<a target="_blank" href="https://sourceforge.net/tracker/index.php?func=detail&amp;aid=1282758&amp;group_id=75348&amp;atid=543653">SF
-				BUG-1282758</a>] In the PHP connector it is now possible to set the absolute
-			(server) path to the User Files directory, avoiding problems with Virtual Directories,
-			Symbolic Links or Aliases. Take a look at the config.php file. </li>
-		<li>The ASP.Net uploader (for Quick Uploads) has been added to the package. </li>
-		<li>A new way to define <strong>simple &quot;combo&quot; toolbar items</strong> , like
-			Style and Font, has been introduced.&nbsp;Thanks&nbsp;to Steve Lineberry.&nbsp;See
-			sample06.html and the &quot;simplecommands&quot; plugin&nbsp;to fully understand
-			it. </li>
-		<li>A new test case has been added that shows how to set the editor background dynamically
-			without using a CSS. </li>
-		<li>[<a target="_blank" href="http://sourceforge.net/tracker/index.php?func=detail&amp;aid=1155906&amp;group_id=75348&amp;atid=543653">SF
-			BUG-1155906</a>] [<a target="_blank" href="http://sourceforge.net/tracker/index.php?func=detail&amp;aid=1110116&amp;group_id=75348&amp;atid=543653">SF
-				BUG-1110116</a>] [<a target="_blank" href="https://sourceforge.net/tracker/index.php?func=detail&amp;aid=1216332&amp;group_id=75348&amp;atid=543653">SF
-					BUG-1216332</a>] The &quot;AutoDetectPasteFromWord&quot; configuration option
-			is back (IE only feature). </li>
-		<li>The&nbsp;new &quot;OnAfterLinkedFieldUpdate&quot; event has been introduced. If
-			is fired when the editor updates its hidden associated field. </li>
-		<li>Attention: The color of the right border of the toolbar (left on RTL interfaces)
-			has been moved from code to the CSS (TB_SideBorder class). Update your custom skins.
-		</li>
-		<li>A&nbsp;sample &quot;htaccess.txt&quot; file has been added to the editor's package
-			to show how to configure some Linux sites that could present problems on Firefox
-			with &quot;Illegal characters&quot; errors. Respectively the &quot;&iuml;&raquo;&iquest;&quot;
-			chars. </li>
-		<li>With the JavaScript, ASP and PHP integration files, you can set the QueryString
-			value &quot;fcksource=true&quot; to load the editor using the source files (located
-			in the _source directory) instead of the compressed ones. Thanks to Kae Verens for
-			the suggestion. </li>
-		<li>[<a target="_blank" href="https://sourceforge.net/tracker/index.php?func=detail&amp;aid=1246623&amp;group_id=75348&amp;atid=543656">SF
-			Feature-1246623</a>] The new configuration option &quot;ForceStrongEm&quot; has
-			been introduced so you can force the editor to convert all &lt;B&gt; and &lt;I&gt;
-			tags to &lt;STRONG&gt; and &lt;EM&gt; respectively. </li>
-		<li>A nice contribution has been done by Goss Interactive Ltd:
-			<ul>
-				<li>[<a target="_blank" href="https://sourceforge.net/tracker/index.php?func=detail&amp;aid=1246949&amp;group_id=75348&amp;atid=543653">SF
-					BUG-1246949</a>] Implemented ENTER key and BACKSPACE key handlers for Gecko so that
-					P tags (or an appropriate block element) get inserted instead of BR tags when not
-					in the UseBROnCarriageReturn config mode.
-					<br />
-					The ENTER key handling has been written to function much the same as the ENTER key
-					handling on IE : as soon as the ENTER key is pressed, existing content will be wrapped
-					with a suitable block element (P tag) as appropriate and a new block element (P
-					tag) will be started.
-					<br />
-					The ENTER key handler also caters for pressing ENTER within empty list items - ENTER
-					in an empty item at the top of a list will remove that list item and start a new
-					P tag above the list; ENTER in an empty item at the bottom of a list will remove
-					that list item and start a new P tag below the list; ENTER in an empty item in the
-					middle of a list will remove that list item, split the list into two, and start
-					a new P tag between the two lists. </li>
-				<li>Any tables that are found to be incorrectly nested within a block element (P tag)
-					will be moved out of the block element when loaded into the editor. This is required
-					for the new ENTER/BACKSPACE key handlers and it also avoids non-compliant HTML.&nbsp;
-				</li>
-				<li>The InsertOrderedList and InsertUnorderedList commands have been overridden on Gecko
-					to ensure that block elements (P tags) are placed around a list item's content when
-					it is moved out of the list due to clicking on the editor's list toolbar buttons
-					(when not in the UseBROnCarriageReturn config mode). </li>
-			</ul>
-		</li>
-	</ul>
-	<p>
-		Fixed Bugs:</p>
-	<ul>
-		<li>[<a target="_blank" href="http://sourceforge.net/tracker/index.php?func=detail&amp;aid=1253255&amp;group_id=75348&amp;atid=543653">SF
-			BUG-1253255</a>] [<a target="_blank" href="http://sourceforge.net/tracker/index.php?func=detail&amp;aid=1253255&amp;group_id=75348&amp;atid=543653">SF
-				BUG-1265520</a>] Due to changes on version 2.0, the anchor list was not anymore
-			visible in the link dialog window. It has been fixed. </li>
-		<li>[<a target="_blank" href="https://sourceforge.net/tracker/?func=detail&amp;atid=543653&amp;aid=1242979&amp;group_id=75348">SF
-			BUG-1242979</a>] [<a target="_blank" href="http://sourceforge.net/tracker/index.php?func=detail&amp;aid=1251354&amp;group_id=75348&amp;atid=543653">SF
-				BUG-1251354</a>] [<a target="_blank" href="https://sourceforge.net/tracker/index.php?func=detail&amp;aid=1256178&amp;group_id=75348&amp;atid=543653">SF
-					BUG-1256178</a>] [<a target="_blank" href="https://sourceforge.net/tracker/index.php?func=detail&amp;aid=1274841&amp;group_id=75348&amp;atid=543653">SF
-						BUG-1274841</a>] [<a target="_blank" href="https://sourceforge.net/tracker/index.php?func=detail&amp;aid=1303949&amp;group_id=75348&amp;atid=543653">SF
-							BUG-1303949</a>] Due to a bug on Firefox, some keys stopped working
-			on startup over Firefox. It has been fixed. </li>
-		<li>[<a target="_blank" href="https://sourceforge.net/tracker/index.php?func=detail&amp;aid=1251373&amp;group_id=75348&amp;atid=543653">SF
-			BUG-1251373</a> ] The above fix also has&nbsp;corrected some strange behaviors on
-			Firefox. </li>
-		<li>[<a target="_blank" href="https://sourceforge.net/tracker/?group_id=75348&amp;atid=543653&amp;func=detail&amp;aid=1144258">SF
-			BUG-1144258</a>] [<a target="_blank" href="https://sourceforge.net/tracker/?group_id=75348&amp;atid=543653&amp;func=detail&amp;aid=1092081">SF
-				BUG-1092081</a>] The File Browsers now run on the&nbsp;same server session used
-			in the page where the editor is placed in (IE issue). Thanks to Simone Chiaretta.
-		</li>
-		<li>[<a target="_blank" href="https://sourceforge.net/tracker/index.php?func=detail&amp;aid=1305619&amp;group_id=75348&amp;atid=543653">SF
-			BUG-1305619</a> ] No more repeated login dialogs when running the editor with Windows
-			Integrated Security with IIS. </li>
-		<li>[<a target="_blank" href="https://sourceforge.net/tracker/index.php?func=detail&amp;aid=1245304&amp;group_id=75348&amp;atid=543655">SF
-			Patch-1245304</a>] The Test Case 004 is now working correctly. It has been changed
-			to set the editor hidden at startup. </li>
-		<li>[<a target="_blank" href="https://sourceforge.net/tracker/index.php?func=detail&amp;aid=1290610&amp;group_id=75348&amp;atid=543653">SF
-			BUG-1290610</a> ] Over HTTPS, there were some warnings when loading the Images,
-			Flash and Link dialogs. Fixed. </li>
-		<li>Due to Gecko bugs, two errors were thrown when loading the editor in a hidden div.
-			Workarounds have been introduced. In any case, the testcase 004 hack is needed when
-			showing the editor (as in a tabbed interface). </li>
-		<li>An invalid path in the dialogs CSS file has been corrected. </li>
-		<li>On IE, the Undo/Redo can now be controlled using the Ctrl+Z and Ctrl+Y shortcut
-			keys. </li>
-		<li>[<a target="_blank" href="https://sourceforge.net/tracker/index.php?func=detail&amp;aid=1295538&amp;group_id=75348&amp;atid=543653">SF
-			BUG-1295538</a> ] A few Undo/Redo fixes for IE have been done. </li>
-		<li>[<a target="_blank" href="https://sourceforge.net/tracker/index.php?func=detail&amp;aid=1247070&amp;group_id=75348&amp;atid=543653">SF
-			BUG-1247070</a>] On Gecko, it is now possible to use the shortcut keys for Bold
-			(CTRL+B), Italic (CTRL+I) and Underline (CTRL+U), like in IE. </li>
-		<li>[<a target="_blank" href="https://sourceforge.net/tracker/index.php?func=detail&amp;aid=1274303&amp;group_id=75348&amp;atid=543653">SF
-			BUG-1274303</a>] The &quot;Insert Column&quot; command is now working correctly
-			on TH cells. It also copies any attribute applied to the source cells. </li>
-		<li>[<a target="_blank" href="https://sourceforge.net/tracker/index.php?func=detail&amp;aid=1287070&amp;group_id=75348&amp;atid=543655">SF
-			Patch-1287070</a> ] In the Universal Keyboard, the Arabic keystrokes translator
-			is now working with Firefox. Thanks again to Abdul-Aziz Al-Oraij. </li>
-		<li>The editor now handles AJAX requests with HTTP status 304. </li>
-		<li>[<a target="_blank" href="http://sourceforge.net/tracker/index.php?func=detail&amp;aid=1157780&amp;group_id=75348&amp;atid=543653">SF
-			BUG-1157780</a>] [<a target="_blank" href="http://sourceforge.net/tracker/index.php?func=detail&amp;aid=1229077&amp;group_id=75348&amp;atid=543653">SF
-				BUG-1229077</a>] Weird comments are now handled correctly (ignored on some cases).
-		</li>
-		<li>[<a target="_blank" href="http://sourceforge.net/tracker/index.php?func=detail&amp;aid=1155774&amp;group_id=75348&amp;atid=543653">SF
-			BUG-1155774</a>] A spelling error in the Bulleted List Properties dialog has been
-			corrected. </li>
-		<li>[<a target="_blank" href="https://sourceforge.net/tracker/index.php?func=detail&amp;aid=1272018&amp;group_id=75348&amp;atid=543653">SF
-			BUG-1272018</a>] The ampersand character can now be added from the Special Chars
-			dialog. </li>
-		<li>[<a target="_blank" href="https://sourceforge.net/tracker/index.php?func=detail&amp;aid=1263161&amp;group_id=75348&amp;atid=543653">SF
-			BUG-1263161</a>] A small fix has been applied to the sampleposteddata.php file.
-			Thanks to Mike Wallace. </li>
-		<li>[<a target="_blank" href="http://sourceforge.net/tracker/index.php?func=detail&amp;aid=1241504&amp;group_id=75348&amp;atid=543653">SF
-			BUG-1241504</a>] The editor now looks also for the ID of the hidden linked field.
-		</li>
-		<li>The caption property on tables is now working on Gecko. Thanks to Helen Somers (Goss
-			Interactive Ltd). </li>
-		<li>[<a target="_blank" href="https://sourceforge.net/tracker/index.php?func=detail&amp;aid=1297431&amp;group_id=75348&amp;atid=543653">SF
-			BUG-1297431</a>] With IE, the editor now works locally when its files are placed
-			in a directory path that contains spaces. </li>
-		<li>[<a target="_blank" href="https://sourceforge.net/tracker/index.php?func=detail&amp;aid=1279551&amp;group_id=75348&amp;atid=543653">SF
-			BUG-1279551</a>] [<a target="_blank" href="https://sourceforge.net/tracker/index.php?func=detail&amp;aid=1242105&amp;group_id=75348&amp;atid=543653">SF
-				BUG-1242105</a>] On IE, some features are dependant of ActiveX components (secure...
-			distributed&nbsp;with IE itself). Some security setting could avoid the usage of
-			those components and the editor would stop working. Now a message is shown, indicating
-			the use the minimum necessary settings need&nbsp;by the editor to run. </li>
-		<li>[<a target="_blank" href="https://sourceforge.net/tracker/index.php?func=detail&amp;aid=1298880&amp;group_id=75348&amp;atid=543653">SF
-			BUG-1298880</a>] Firefox can't handle the STRONG and EM tags. Those tags are now
-			converted to B and I so it works accordingly. </li>
-		<li>[<a target="_blank" href="https://sourceforge.net/tracker/index.php?func=detail&amp;aid=1271723&amp;group_id=75348&amp;atid=543653">SF
-			BUG-1271723</a>] On IE, it is now possible to select the text and work correctly
-			in the contents of absolute positioned/dimensioned divs. </li>
-		<li>On IE, there is no need to click twice in the editor to&nbsp;activate the cursor
-			in the editing area. </li>
-		<li>[<a target="_blank" href="https://sourceforge.net/tracker/?func=detail&amp;atid=543653&amp;aid=1221621&amp;group_id=75348">SF
-			BUG-1221621</a>] Many &quot;warnings&quot; in the Firefox console are not thrown
-			anymore. </li>
-		<li>[<a target="_blank" href="https://sourceforge.net/tracker/index.php?func=detail&amp;aid=1295526&amp;group_id=75348&amp;atid=543653">SF
-			BUG-1295526</a>] While&nbsp;editing on &quot;FullPage&quot; mode the basehref is
-			now active for CSS &quot;link&quot; tags. </li>
-		<li>[<a target="_blank" href="https://sourceforge.net/tracker/index.php?func=detail&amp;aid=1222584&amp;group_id=75348&amp;atid=543655">SF
-			Patch-1222584</a>] A small fix to the PHP connector has been applied. </li>
-		<li>[<a target="_blank" href="https://sourceforge.net/tracker/index.php?func=detail&amp;aid=1281313&amp;group_id=75348&amp;atid=543655">SF
-			Patch-1281313</a>] A few small changes to avoid problems with Plone. Thanks to Jean-mat.
-		</li>
-		<li>[<a target="_blank" href="https://sourceforge.net/tracker/index.php?func=detail&amp;aid=1275911&amp;group_id=75348&amp;atid=543653">SF
-			BUG-1275911</a>] A check for double dots sequences on directory names on creation
-			has been introduced to the PHP and ASP connectors.</li>
-	</ul>
-	<h3>
-		Version 2.0</h3>
-	<p>
-		New Features and Improvements:</p>
-	<ul>
-		<li>The&nbsp;new &quot;<strong>Flash</strong>&quot; command is available. Now you can
-			easily handle Flash content, over IE and Gecko, including server browser integration
-			and context menu support. Due to limitations of the browsers, it is not possible
-			to see the preview of the movie while editing, so a nice &quot;placeholder&quot;
-			is used instead. * </li>
-		<li>A&nbsp;&quot;<strong>Quick Upload</strong> &quot; option is now available in the
-			link, image and flash dialog windows, so the user don't need to go (or have) the
-			File Browser for this operations. The ASP and PHP uploader&nbsp;are included.&nbsp;Take
-			a look at the configuration file.*** </li>
-		<li>Added support for <strong>Active FoxPro Pages</strong> . Thanks to our new developer,
-			S&ouml;nke Freitag. </li>
-		<li>It is now possible to <strong>disable the size handles</strong> for images and tables
-			(IE only feature). Take a look at the DisableImageHandles and DisableTableHandles
-			configuration options. </li>
-		<li>The handles on form fields&nbsp;(small squares around them) and the inline editing
-			of&nbsp;its contents&nbsp;have been disabled. This makes it easier to users to use
-			the controls. </li>
-		<li>A much better support for Word pasting operations has been introduced. Now it uses
-			a dialog box, in this way we have better results and more control.** </li>
-		<li>[<a target="_blank" href="http://sourceforge.net/tracker/index.php?func=detail&amp;aid=1225372&amp;group_id=75348&amp;atid=543655">SF
-			Patch-1225372</a>] A small change has been done to the PHP integration file. The
-			generic __construct constructor has been added for better PHP 5 sub-classing&nbsp;compatibility
-			(backward compatible). Thanks to Marcus Bointon.</li>
-	</ul>
-	<p>
-		Fixed Bugs:</p>
-	<ul>
-		<li>ATTENTION: Some security changes have been made to the connectors. Now you must
-			explicitly enable the connector you want to use. Please test your application before
-			deploying this update. </li>
-		<li>[<a target="_blank" href="http://sourceforge.net/tracker/?group_id=75348&amp;atid=543653&amp;func=detail&amp;aid=1211591">SF
-			BUG-1211591</a>] [<a target="_blank" href="http://sourceforge.net/tracker/index.php?func=detail&amp;aid=1204273&amp;group_id=75348&amp;atid=543653">SF
-				BUG-1204273</a>] The connectors have been changed so it is not possible to use
-			&quot;..&quot; on directory names. </li>
-		<li>[<a target="_blank" href="http://sourceforge.net/tracker/index.php?func=detail&amp;aid=1219734&amp;group_id=75348&amp;atid=543655">SF
-			Patch-1219734</a>] [<a target="_blank" href="http://sourceforge.net/tracker/index.php?func=detail&amp;aid=1219728&amp;group_id=75348&amp;atid=543653">SF
-				BUG-1219728</a>] [<a target="_blank" href="http://sourceforge.net/tracker/index.php?func=detail&amp;aid=1208654&amp;group_id=75348&amp;atid=543653">SF
-					BUG-1208654</a>] [<a target="_blank" href="http://sourceforge.net/tracker/index.php?func=detail&amp;aid=1205442&amp;group_id=75348&amp;atid=543653">SF
-						BUG-1205442</a>] There was an error in the page unload on some cases
-			that has been fixed. </li>
-		<li>[<a target="_blank" href="http://sourceforge.net/tracker/?group_id=75348&amp;atid=543653&amp;func=detail&amp;aid=1209708">SF
-			BUG-1209708</a>] [<a target="_blank" href="http://sourceforge.net/tracker/?group_id=75348&amp;atid=543653&amp;func=detail&amp;aid=1214125">SF
-				BUG-1214125</a>] The undo on IE is now working correctly when the user starts
-			typing. </li>
-		<li>The preview now loads &quot;Full Page&quot; editing correctly. It also uses the
-			same XHTML code produced by the final output. </li>
-		<li>The &quot;Templates&quot; dialog was not working on some very specific (and strange)
-			occasions over IE. </li>
-		<li>[<a target="_blank" href="https://sourceforge.net/tracker/?func=detail&amp;atid=543653&amp;aid=1199631&amp;group_id=75348">SF
-			BUG-1199631</a>] [<a target="_blank" href="http://sourceforge.net/tracker/index.php?func=detail&amp;aid=1171944&amp;group_id=75348&amp;atid=543653">SF
-				BUG-1171944</a>] A new option is available to avoid a bad IE behavior that shows
-			the horizontal scrollbar even when not needed. You can now force the vertical scrollbar
-			to be always visible. Just set the &quot;IEForceVScroll&quot; configuration option
-			to &quot;true&quot;. Thanks to Grant Bartlett. </li>
-		<li>[<a target="_blank" href="https://sourceforge.net/tracker/index.php?func=detail&amp;aid=1212026&amp;group_id=75348&amp;atid=543655">SF
-			Patch-1212026</a>] [<a target="_blank" href="https://sourceforge.net/tracker/index.php?func=detail&amp;aid=1228860&amp;group_id=75348&amp;atid=543653">SF
-				BUG-1228860</a>] [<a target="_blank" href="http://sourceforge.net/tracker/index.php?func=detail&amp;aid=1211775&amp;group_id=75348&amp;atid=543653">SF
-					BUG-1211775</a>] [<a target="_blank" href="http://sourceforge.net/tracker/?group_id=75348&amp;atid=543653&amp;func=detail&amp;aid=1199824">SF
-						BUG-1199824</a>] An error in the Packager has been corrected. </li>
-		<li>[<a target="_blank" href="http://sourceforge.net/tracker/?group_id=75348&amp;atid=543653&amp;func=detail&amp;aid=1163669">SF
-			BUG-1163669</a>] The XHTML processor now adds a space before the closing slash of
-			tags that don't have a closing tag, like &lt;br /&gt;. </li>
-		<li>[<a target="_blank" href="http://sourceforge.net/tracker/index.php?func=detail&amp;aid=1213733&amp;group_id=75348&amp;atid=543653">SF
-			BUG-1213733</a>] [<a target="_blank" href="http://sourceforge.net/tracker/index.php?func=detail&amp;aid=1216866&amp;group_id=75348&amp;atid=543653">SF
-				BUG-1216866</a>]&nbsp;[<a target="_blank" href="http://sourceforge.net/tracker/index.php?func=detail&amp;aid=1209673&amp;group_id=75348&amp;atid=543653">SF
-					BUG-1209673</a>]&nbsp;[<a target="_blank" href="http://sourceforge.net/tracker/index.php?func=detail&amp;aid=1155454&amp;group_id=75348&amp;atid=543653">SF
-						BUG-1155454</a>]&nbsp;[<a target="_blank" href="http://sourceforge.net/tracker/index.php?func=detail&amp;aid=1187936&amp;group_id=75348&amp;atid=543653">SF
-							BUG-1187936</a> ]&nbsp;Now, on Gecko, the source is opened in a
-			dialog window to avoid fatal errors (Gecko bugs). </li>
-		<li>Some pages have been changed to avoid importing errors on Plone. Thanks to Arthur
-			Kalmenson. </li>
-		<li>[<a target="_blank" href="http://sourceforge.net/tracker/index.php?func=detail&amp;aid=1171606&amp;group_id=75348&amp;atid=543653">SF
-			BUG-1171606</a>] There&nbsp;is a bug on IE that makes the editor to not work if
-			the instance name matches a meta tag name. Fixed. </li>
-		<li>On Firefox, the source code is now opened in a dialog box, to avoid error on pages
-			with more than one editor. </li>
-		<li>[<a target="_blank" href="https://sourceforge.net/tracker/index.php?func=detail&amp;aid=1225703&amp;group_id=75348&amp;atid=543655">SF
-			Patch-1225703</a>] [<a target="_blank" href="http://sourceforge.net/tracker/index.php?func=detail&amp;aid=1214941&amp;group_id=75348&amp;atid=543653">SF
-				BUG-1214941</a>] The &quot;ForcePasteAsPlainText&quot; configuration option
-			is now working correctly on Gecko browsers. Thanks to Manuel Polo. </li>
-		<li>[<a target="_blank" href="http://sourceforge.net/tracker/index.php?func=detail&amp;aid=1228836&amp;group_id=75348&amp;atid=543653">SF
-			BUG-1228836</a>] The &quot;Show Table Borders&quot; feature is now working on Gecko
-			browsers. </li>
-		<li>[<a target="_blank" href="https://sourceforge.net/tracker/index.php?func=detail&amp;aid=1212529&amp;group_id=75348&amp;atid=543655">SF
-			Patch-1212529</a>] [<a target="_blank" href="http://sourceforge.net/tracker/index.php?func=detail&amp;aid=1212517&amp;group_id=75348&amp;atid=543653">SF
-				BUG-1212517</a>] The default File Browser now accepts connectors with querystring
-			parameters (with &quot;?&quot;). Thanks to Tomas Jucius. </li>
-		<li>[<a target="_blank" href="http://sourceforge.net/tracker/index.php?func=detail&amp;aid=1233318&amp;group_id=75348&amp;atid=543653">SF
-			BUG-1233318</a>] A JavaScript error thrown when using the Print command has been
-			fixed. </li>
-		<li>[<a target="_blank" href="http://sourceforge.net/tracker/index.php?func=detail&amp;aid=1229696&amp;group_id=75348&amp;atid=543653">SF
-			BUG-1229696</a>] A regular expression has been escaped to avoid problems when opening
-			the code in some editors. It has been moved to a&nbsp;dialog window. </li>
-		<li>[<a target="_blank" href="http://sourceforge.net/tracker/index.php?func=detail&amp;aid=1231978&amp;group_id=75348&amp;atid=543653">SF
-			BUG-1231978</a>] [<a target="_blank" href="http://sourceforge.net/tracker/index.php?func=detail&amp;aid=1228939&amp;group_id=75348&amp;atid=543653">SF
-				BUG-1228939</a>] The Preview window is now using the Content Type and Base href.
-		</li>
-		<li>[<a target="_blank" href="http://sourceforge.net/tracker/index.php?func=detail&amp;aid=1232056&amp;group_id=75348&amp;atid=543653">SF
-			BUG-1232056</a>] The&nbsp;anchor icon is now working correctly on IE. </li>
-		<li>[<a target="_blank" href="http://sourceforge.net/tracker/index.php?func=detail&amp;aid=1232056&amp;group_id=75348&amp;atid=543653">SF
-			BUG-1202468</a>] The anchor icon is now available on Gecko too. </li>
-		<li>[<a target="_blank" href="http://sourceforge.net/tracker/index.php?func=detail&amp;aid=1236279&amp;group_id=75348&amp;atid=543653">SF
-			BUG-1236279</a>] A security warning has been corrected when using the File Browser
-			over HTTPS. </li>
-		<li>The ASP implementation now avoid errors when setting the editor value to null values.
-		</li>
-		<li>[<a target="_blank" href="http://sourceforge.net/tracker/index.php?func=detail&amp;aid=1237359&amp;group_id=75348&amp;atid=543653">SF
-			BUG-1237359</a>] The trailing &lt;BR&gt; added by Gecko at the end of the source
-			is now removed. </li>
-		<li>[<a target="_blank" href="http://sourceforge.net/tracker/?group_id=75348&amp;atid=543653&amp;func=detail&amp;aid=1170828">SF
-			BUG-1170828</a>] No more &amp;nbsp; is added to the source when using the &quot;New
-			Page&quot; button. </li>
-		<li>[<a target="_blank" href="http://sourceforge.net/tracker/index.php?func=detail&amp;aid=1165264&amp;group_id=75348&amp;atid=543653">SF
-			BUG-1165264</a>] A&nbsp;new configuration option has been included to force the
-			editor to ignore empty paragraph values&nbsp;(&lt;p&gt;&amp;nbsp;&lt;/p&gt;), returning
-			empty (&quot;&quot;). </li>
-		<li>No more &amp;nbsp; is added when creating a table or adding columns, rows or cells.
-		</li>
-		<li>The &lt;TD&gt; tags are now included in the FillEmptyBlocks configuration handling.
-		</li>
-		<li>[<a target="_blank" href="http://sourceforge.net/tracker/index.php?func=detail&amp;aid=1224829&amp;group_id=75348&amp;atid=543653">SF
-			BUG-1224829</a>] A small bug in the &quot;Find&quot; dialog has been fixed. </li>
-		<li>[<a target="_blank" href="http://sourceforge.net/tracker/index.php?func=detail&amp;aid=1221307&amp;group_id=75348&amp;atid=543653">SF
-			BUG-1221307</a>] A small bug in the &quot;Image&quot; dialog has been fixed. </li>
-		<li>[<a target="_blank" href="http://sourceforge.net/tracker/index.php?func=detail&amp;aid=1219981&amp;group_id=75348&amp;atid=543653">SF
-			BUG-1219981</a>] [<a target="_blank" href="http://sourceforge.net/tracker/index.php?func=detail&amp;aid=1155726&amp;group_id=75348&amp;atid=543653">SF
-				BUG-1155726</a>] [<a target="_blank" href="http://sourceforge.net/tracker/index.php?func=detail&amp;aid=1178473&amp;group_id=75348&amp;atid=543653">SF
-					BUG-1178473</a>] It is handling the &lt;FORM&gt;, &lt;TEXTAREA&gt; and &lt;SELECT&gt;
-			tags &quot;name&quot; attribute correctly. Thanks to thc33. </li>
-		<li>[<a target="_blank" href="http://sourceforge.net/tracker/index.php?func=detail&amp;aid=1205403&amp;group_id=75348&amp;atid=543653">SF
-			BUG-1205403</a>] The checkbox and radio button values are now handled correctly
-			in their dialog windows. Thanks to thc33. </li>
-		<li>[<a target="_blank" href="http://sourceforge.net/tracker/index.php?func=detail&amp;aid=1236626&amp;group_id=75348&amp;atid=543653">SF
-			BUG-1236626</a>] The toolbar now doesn't need to collapse when unloading the page
-			(IE only). </li>
-		<li>[<a target="_blank" href="http://sourceforge.net/tracker/index.php?func=detail&amp;aid=1212559&amp;group_id=75348&amp;atid=543653">SF
-			BUG-1212559</a>] [<a target="_blank" href="http://sourceforge.net/tracker/index.php?func=detail&amp;aid=1017231&amp;group_id=75348&amp;atid=543653">SF
-				BUG-1017231</a>] The &quot;Save&quot; button now calls the &quot;onsubmit&quot;
-			event before posting the form. The submit can be cancelled if the onsubmit returns
-			&quot;false&quot;. </li>
-		<li>[<a target="_blank" href="http://sourceforge.net/tracker/index.php?func=detail&amp;aid=1215823&amp;group_id=75348&amp;atid=543653">SF
-			BUG-1215823</a>] The editor now works correctly on Firefox if it values is set to
-			&quot;&lt;p&gt;&lt;/p&gt;&quot;. </li>
-		<li>[<a target="_blank" href="http://sourceforge.net/tracker/index.php?func=detail&amp;aid=1217546&amp;group_id=75348&amp;atid=543653">SF
-			BUG-1217546</a>] No error is thrown when &quot;pasting as plain text&quot; and no
-			text is available for pasting (as an image for example). </li>
-		<li>[<a target="_blank" href="http://sourceforge.net/tracker/index.php?func=detail&amp;aid=1207031&amp;group_id=75348&amp;atid=543653">SF
-			BUG-1207031</a>] [<a target="_blank" href="http://sourceforge.net/tracker/?group_id=75348&amp;atid=543653&amp;func=detail&amp;aid=1223978">SF
-				BUG-1223978</a>] The context menu is now available in the source view. </li>
-		<li>[<a target="_blank" href="http://sourceforge.net/tracker/?group_id=75348&amp;atid=543653&amp;func=detail&amp;aid=1213871">SF
-			BUG-1213871</a>] Undo has been added to table creation and table operation commands.
-		</li>
-		<li>[<a target="_blank" href="http://sourceforge.net/tracker/index.php?func=detail&amp;aid=1205211&amp;group_id=75348&amp;atid=543653">SF
-			BUG-1205211</a>] [<a target="_blank" href="http://sourceforge.net/tracker/index.php?func=detail&amp;aid=1229941&amp;group_id=75348&amp;atid=543653">SF
-				BUG-1229941</a>] Small bug in the mcpuk file browser&nbsp;have been corrected.</li>
-	</ul>
-	<p>
-		* This version has been partially sponsored by <a target="_blank" href="http://www.infineon.com/">
-			Infineon Technologies AG</a>.<br />
-		** This version has been partially sponsored by <a href="http://www.visualsoft.co.uk">
-			Visualsoft</a> <a href="http://www.visualsoft.co.uk/websolutions.html">Web Solutions</a>.<br />
-		*** This version has been partially sponsored by <a target="_blank" href="http://www.webcrossing.com">
-			Web Crossing, Inc</a>.</p>
-	<h3>
-		Version 2.0&nbsp;FC (Final Candidate)</h3>
-	<p>
-		New Features and Improvements:</p>
-	<ul>
-		<li>A new tab called &quot;<strong>Link</strong>&quot; is available in the<strong> Image
-			Dialog</strong> window. In this way you can insert or modify the image link directly
-			from that dialog.* </li>
-		<li>The new &quot;<strong>Templates</strong>&quot; command is now available. Now the
-			user can select from a list of pre-build HTML and fill the editor with it. Take
-			a look at the &quot;_docs&quot; for more info.** </li>
-		<li>The <a target="_blank" href="http://mcpuk.net/fbxp/">mcpuk's</a> File Browser for
-			PHP has been included in the package. He became the official developer of the File
-			Manager for FCKeditor, so we can expect good news in the future. </li>
-		<li>New configuration options are available to <strong>hide tabs</strong> from the <strong>
-			Image</strong> Dialog&nbsp;and <strong>Link</strong> Dialog windows: LinkDlgHideTarget,
-			LinkDlgHideAdvanced, ImageDlgHideLink and ImageDlgHideAdvanced. </li>
-		<li>[<a target="_blank" href="https://sourceforge.net/tracker/index.php?func=detail&amp;aid=1189442&amp;group_id=75348&amp;atid=543653">SF
-			BUG-1189442</a>] [<a target="_blank" href="https://sourceforge.net/tracker/index.php?func=detail&amp;aid=1187164&amp;group_id=75348&amp;atid=543653">SF
-				BUG-1187164</a>] [<a target="_blank" href="https://sourceforge.net/tracker/index.php?func=detail&amp;aid=1185905&amp;group_id=75348&amp;atid=543653">SF
-					BUG-1185905</a>] It is now possible to configure the editor to <strong>not convert Greek</strong>
-			or special&nbsp;<strong>Latin </strong>letters to ther specific HTML entities. You
-			can also configure it to not convert any character at all. Take a look at the &quot;ProcessHTMLEntities&quot;,
-			&quot;IncludeLatinEntities&quot; and &quot;IncludeGreekEntities&quot; configuration
-			options. </li>
-		<li>New language files are available:
-			<ul>
-				<li><strong>Basque</strong> (by Ibon Igartua) </li>
-				<li><strong>English (Australia / United Kingdom)</strong> (by Christopher Dawes) </li>
-				<li><strong>Ukrainian</strong> (by Alexander Pervak)</li>
-			</ul>
-		</li>
-		<li>The version and date information have been removed from the files headers to avoid
-			unecessary diffs in source control systems when new versions are released (from
-			now on). </li>
-		<li>[<a target="_blank" href="https://sourceforge.net/tracker/index.php?func=detail&amp;aid=1159854&amp;group_id=75348&amp;atid=543655">SF
-			Patch-1159854</a>] Ther HTML output rendered by the server side integration files
-			are now XHTML compatible. </li>
-		<li>[<a target="_blank" href="http://sourceforge.net/tracker/index.php?func=detail&amp;aid=1181823&amp;group_id=75348&amp;atid=543653">SF
-			BUG-1181823</a>] It is now possible to set the desired DOCTYPE to use when edit
-			HTML fragments (not in Full Page mode). </li>
-		<li>There is now an optional way to implement different &quot;mouse over&quot; effects
-			to the buttons when they are &quot;on&quot; of &quot;off&quot;.</li>
-	</ul>
-	<p>
-		Fixed Bugs:</p>
-	<ul>
-		<li>[<a target="_blank" href="http://sourceforge.net/tracker/index.php?func=detail&amp;aid=1162200&amp;group_id=75348&amp;atid=543653">SF
-			BUG-1162200</a>] [<a target="_blank" href="http://sourceforge.net/tracker/index.php?func=detail&amp;aid=1161633&amp;group_id=75348&amp;atid=543653">SF
-				BUG-1161633</a>] [<a target="_blank" href="http://sourceforge.net/tracker/index.php?func=detail&amp;aid=1050293&amp;group_id=75348&amp;atid=543653">SF
-					BUG-1050293</a>] [<a target="_blank" href="http://sourceforge.net/tracker/index.php?func=detail&amp;aid=1058948&amp;group_id=75348&amp;atid=543653">SF
-						BUG-1058948</a>] [<a target="_blank" href="http://sourceforge.net/tracker/index.php?func=detail&amp;aid=1109120&amp;group_id=75348&amp;atid=543653">SF
-							BUG-1109120</a>] [<a target="_blank" href="http://sourceforge.net/tracker/index.php?func=detail&amp;aid=1155408&amp;group_id=75348&amp;atid=543653">SF
-								BUG-1155408</a>] The IE memory leak bug has been solved. The
-			code has been completely reviewed and many memory usage improvements have been done.
-		</li>
-		<li>[<a target="_blank" href="https://sourceforge.net/tracker/index.php?func=detail&amp;aid=1179645&amp;group_id=75348&amp;atid=543653">SF
-			BUG-1179645</a>] [<a target="_blank" href="https://sourceforge.net/tracker/index.php?func=detail&amp;aid=1183252&amp;group_id=75348&amp;atid=543653">SF
-				BUG-1183252</a> ] [<a target="_blank" href="http://sourceforge.net/tracker/index.php?func=detail&amp;aid=1166779&amp;group_id=75348&amp;atid=543653">SF
-					BUG-1181647</a>] [<a target="_blank" href="http://sourceforge.net/tracker/index.php?func=detail&amp;aid=1155627&amp;group_id=75348&amp;atid=543653">SF
-						BUG-1155627</a>] [<a target="_blank" href="http://sourceforge.net/tracker/index.php?func=detail&amp;aid=1155782&amp;group_id=75348&amp;atid=543653">SF
-							BUG-1155782</a>] [<a target="_blank" href="http://sourceforge.net/tracker/index.php?func=detail&amp;aid=1155750&amp;group_id=75348&amp;atid=543653">SF
-								BUG-1155750</a>] [<a target="_blank" href="http://sourceforge.net/tracker/index.php?func=detail&amp;aid=1157166&amp;group_id=75348&amp;atid=543653">SF
-									BUG-1157166</a>] [<a target="_blank" href="http://sourceforge.net/tracker/index.php?func=detail&amp;aid=1157857&amp;group_id=75348&amp;atid=543653">SF
-										BUG-1157857</a>] [<a target="_blank" href="http://sourceforge.net/tracker/index.php?func=detail&amp;aid=1158121&amp;group_id=75348&amp;atid=543653">SF
-											BUG-1158121</a>] [<a target="_blank" href="http://sourceforge.net/tracker/index.php?func=detail&amp;aid=1177153&amp;group_id=75348&amp;atid=543653">SF
-												BUG-1177153</a>] [<a target="_blank" href="http://sourceforge.net/tracker/index.php?func=detail&amp;aid=1175847&amp;group_id=75348&amp;atid=543653">SF
-													BUG-1175847</a>] [<a target="_blank" href="http://sourceforge.net/tracker/index.php?func=detail&amp;aid=1155747&amp;group_id=75348&amp;atid=543653">SF
-														BUG-1155747</a>] There was a loading
-			problem in Gecko browsers in some cases. It has been solved. </li>
-		<li>[<a target="_blank" href="http://sourceforge.net/tracker/index.php?func=detail&amp;aid=1161147&amp;group_id=75348&amp;atid=543653">SF
-			BUG-1161147</a>] [<a target="_blank" href="http://sourceforge.net/tracker/index.php?func=detail&amp;aid=1157635&amp;group_id=75348&amp;atid=543653">SF
-				BUG-1157635</a>] [<a target="_blank" href="http://sourceforge.net/tracker/index.php?func=detail&amp;aid=1149805&amp;group_id=75348&amp;atid=543653">SF
-					BUG-1149805</a>] [<a target="_blank" href="http://sourceforge.net/tracker/index.php?func=detail&amp;aid=1124600&amp;group_id=75348&amp;atid=543653">SF
-						BUG-1124600</a>] [<a target="_blank" href="http://sourceforge.net/tracker/index.php?func=detail&amp;aid=1117535&amp;group_id=75348&amp;atid=543653">SF
-							BUG-1117535</a>] [<a target="_blank" href="http://sourceforge.net/tracker/index.php?func=detail&amp;aid=1118145&amp;group_id=75348&amp;atid=543653">SF
-								BUG-1118145</a>] [<a target="_blank" href="http://sourceforge.net/tracker/index.php?func=detail&amp;aid=1098113&amp;group_id=75348&amp;atid=543653">SF
-									BUG-1098113</a>] [<a target="_blank" href="http://sourceforge.net/tracker/index.php?func=detail&amp;aid=1092272&amp;group_id=75348&amp;atid=543653">SF
-										BUG-1092272</a>] [<a target="_blank" href="http://sourceforge.net/tracker/index.php?func=detail&amp;aid=1086416&amp;group_id=75348&amp;atid=543653">SF
-											BUG-1086416</a>] [<a target="_blank" href="http://sourceforge.net/tracker/index.php?func=detail&amp;aid=1027952&amp;group_id=75348&amp;atid=543653">SF
-												BUG-1027952</a>] [<a target="_blank" href="http://sourceforge.net/tracker/index.php?func=detail&amp;aid=978441&amp;group_id=75348&amp;atid=543653">SF
-													BUG-978441</a> ] A custom Undo/Redo system
-			has been implemented for IE. </li>
-		<li>The editor startup execution is now made in the right order (so configurations override
-			works correctly). </li>
-		<li>[<a target="_blank" href="http://sourceforge.net/tracker/index.php?func=detail&amp;aid=1166779&amp;group_id=75348&amp;atid=543653">SF
-			BUG-1166779</a>] [<a target="_blank" href="http://sourceforge.net/tracker/index.php?func=detail&amp;aid=1166651&amp;group_id=75348&amp;atid=543653">SF
-				BUG-1166651</a>] [<a target="_blank" href="http://sourceforge.net/tracker/index.php?func=detail&amp;aid=1066198&amp;group_id=75348&amp;atid=543653">SF
-					BUG-1066198</a>]&nbsp;[<a target="_blank" href="http://sourceforge.net/tracker/index.php?func=detail&amp;aid=1090388&amp;group_id=75348&amp;atid=543653">SF
-						BUG-1090388</a> ]&nbsp;No more &quot;illegible&quot; characters in the
-			toolbar when &quot;ClearType&quot; is active. </li>
-		<li>It is now possible to set the &quot;width&quot; style of the BODY tag in the EditorAreaCSS
-			to limit the editing area size. </li>
-		<li>[<a target="_blank" href="http://sourceforge.net/tracker/index.php?func=detail&amp;aid=1113620&amp;group_id=75348&amp;atid=543653">SF
-			BUG-1113620</a>] In IE, the editor doesn't generate new entries in the browser history
-			anymore. </li>
-		<li>The editor now uses the same method used on version RC2 to load its contents on
-			Gecko. It is now possible to have more than one editor in the page. This change
-			has a negative impact: the BaseHref property is not working. </li>
-		<li>Changes have been made to make the editor work with PHP versions&nbsp;older than&nbsp;2.1.0.
-		</li>
-		<li>[<a target="_blank" href="https://sourceforge.net/tracker/index.php?func=detail&amp;aid=1190835&amp;group_id=75348&amp;atid=543653">SF
-			BUG-1190835</a>] [<a target="_blank" href="https://sourceforge.net/tracker/?func=detail&amp;atid=543653&amp;aid=1196547&amp;group_id=75348">SF
-				BUG-1196547</a>] [<a target="_blank" href="http://sourceforge.net/tracker/index.php?func=detail&amp;aid=1156863&amp;group_id=75348&amp;atid=543653">SF
-					BUG-1156863</a>] The &quot;Insert Horizontal Line&quot; command is now working
-			correctly. Thanks to Hector Raul Colonia Coral. </li>
-		<li>[<a target="_blank" href="http://sourceforge.net/tracker/index.php?func=detail&amp;aid=1101861&amp;group_id=75348&amp;atid=543653">SF
-			BUG-1101861</a>] The editor now shows a normal textarea correctly (as expected)
-			on Safari browsers (and all &quot;like Gecko&quot; browsers). Thanks to Bob Paul.
-		</li>
-		<li>[<a target="_blank" href="https://sourceforge.net/tracker/index.php?func=detail&amp;aid=1182224&amp;group_id=75348&amp;atid=543653">SF
-			BUG-1182224</a>] The PHP connector can now handle file extensions in upper case,&nbsp;like
-			JPG or Gif, correctly. Thanks to Georg Ivancsic. </li>
-		<li>The &quot;sample06.html&quot; is now working correctly with Gecko browsers. </li>
-		<li>[<a target="_blank" href="http://sourceforge.net/tracker/index.php?func=detail&amp;aid=1156660&amp;group_id=75348&amp;atid=543653">SF
-			BUG-1156660</a>] Some fixes have been applied to the Universal Keyboard. Thanks
-			to Abdul-Aziz Al-Oraij. </li>
-		<li>[<a target="_blank" href="https://sourceforge.net/tracker/index.php?func=detail&amp;aid=1192881&amp;group_id=75348&amp;atid=543653">SF
-			BUG-1192881</a>] [<a target="_blank" href="https://sourceforge.net/tracker/index.php?func=detail&amp;aid=1185006&amp;group_id=75348&amp;atid=543653">SF
-				BUG-1185006</a>] [<a target="_blank" href="http://sourceforge.net/tracker/index.php?func=detail&amp;aid=1156068&amp;group_id=75348&amp;atid=543653">SF
-					BUG-1156068</a>] The &quot;Browse Server&quot; button is now working correctly
-			for the Background Image in the &quot;Document Properties&quot; dialog window (full
-			page editing). The active &quot;BaseHref&quot; is also set to the preview window.
-		</li>
-		<li>[<a target="_blank" href="https://sourceforge.net/tracker/index.php?func=detail&amp;aid=1191704&amp;group_id=75348&amp;atid=543653">SF
-			BUG-1191704</a>] Invalid HTML tags (according to the W3C naming standards for XHTML)
-			are ignored with no errors. </li>
-		<li>[<a target="_blank" href="https://sourceforge.net/tracker/index.php?func=detail&amp;aid=1185911&amp;group_id=75348&amp;atid=543653">SF
-			BUG-1185911</a>] The Greek language file name has been corrected to &quot;el.js&quot;.
-		</li>
-		<li>[<a target="_blank" href="http://sourceforge.net/tracker/index.php?func=detail&amp;aid=1181572&amp;group_id=75348&amp;atid=543653">SF
-			BUG-1181572</a>] [<a target="_blank" href="http://sourceforge.net/tracker/index.php?func=detail&amp;aid=1158421&amp;group_id=75348&amp;atid=543653">SF
-				BUG-1158421</a>] The &quot;Print&quot; button is now active on startup. </li>
-		<li>[<a target="_blank" href="http://sourceforge.net/tracker/index.php?func=detail&amp;aid=1181572&amp;group_id=75348&amp;atid=543653">SF
-			BUG-1165219</a>] No error occours when the user defines just one color to the FontColors
-			on &quot;in page&quot; configurations. </li>
-		<li>[<a target="_blank" href="http://sourceforge.net/tracker/index.php?func=detail&amp;aid=1162957&amp;group_id=75348&amp;atid=543653">SF
-			BUG-1162957</a>] The small problem with Zope (ZPT)&nbsp;has been solved. </li>
-		<li>Some small RTL / LTR corrections has been done in the interface and the Farsi language
-			has been added to the Universal Keyboard. Thanks to Silver Baghdasarian.</li>
-	</ul>
-	<p>
-		* This version has been partially sponsored by the <a href="http://www.hamilton.edu">
-			Hamilton College</a>.<br />
-		** This version has been partially sponsored by <a target="_blank" href="http://www.infineon.com/">
-			Infineon Technologies AG</a>.</p>
-	<h3>
-		Version 2.0 RC3 (Release Candidate 3)</h3>
-	<p>
-		New Features and Improvements:</p>
-	<ul>
-		<li>The editor now offers native <strong>Perl integration</strong>! Thanks and welcome
-			to Takashi Yamaguchi, our official Perl developer. </li>
-		<li>[<a target="_blank" href="http://sourceforge.net/tracker/index.php?func=detail&amp;aid=1026584&amp;group_id=75348&amp;atid=543656">SF
-			Feature-1026584</a>] [<a target="_blank" href="http://sourceforge.net/tracker/index.php?func=detail&amp;aid=1112692&amp;group_id=75348&amp;atid=543656">SF
-				Feature-1112692</a>] <strong>Formatting </strong>has been introduced to the
-			<strong>Source View</strong>. The output HTML can also be formatted. You can choose
-			to use spaces or tab for indentation. See the configuration file. </li>
-		<li>[<a target="_blank" href="http://sourceforge.net/tracker/index.php?func=detail&amp;aid=1031492&amp;group_id=75348&amp;atid=543656">SF
-			Feature-1031492</a>] [<a target="_blank" href="http://sourceforge.net/tracker/index.php?func=detail&amp;aid=1004293&amp;group_id=75348&amp;atid=543656">SF
-				Feature-1004293</a>] [<a target="_blank" href="http://sourceforge.net/tracker/index.php?func=detail&amp;aid=784281&amp;group_id=75348&amp;atid=543656">SF
-					Feature-784281</a>] It is now possible to edit <strong>full HTML pages</strong>
-			with the editor. Use the &quot;FullPage&quot; configuration setting to activate
-			it. </li>
-		<li>The&nbsp;new toolbar command, &quot;<strong>Document Properties</strong>&quot;&nbsp;is
-			available to edit document header info, title, colors, background, etc... Full page
-			editing must be enabled. </li>
-		<li>[<a target="_blank" href="http://sourceforge.net/tracker/index.php?func=detail&amp;aid=1151448&amp;group_id=75348&amp;atid=543656">SF
-			Feature-1151448</a>] <strong>Spell Check</strong> is now available. You can use
-			<strong>ieSpell</strong> or <strong>Speller Pages</strong> right from FCKeditor.
-			More info about configuration can be found in the _docs folder. </li>
-		<li>[<a target="_blank" href="http://sourceforge.net/tracker/index.php?func=detail&amp;aid=1041686&amp;group_id=75348&amp;atid=543656">SF
-			Feature-1041686</a>] [<a target="_blank" href="http://sourceforge.net/tracker/index.php?func=detail&amp;aid=1086386&amp;group_id=75348&amp;atid=543656">SF
-				Feature-1086386</a>] [<a target="_blank" href="http://sourceforge.net/tracker/index.php?func=detail&amp;aid=1124602&amp;group_id=75348&amp;atid=543656">SF
-					Feature-1124602</a>] New &quot;<strong>Insert Anchor</strong>&quot; command
-			has been introduced. (The anchor icon is visible only over&nbsp;IE for now). </li>
-		<li>[<a target="_blank" href="http://sourceforge.net/tracker/index.php?func=detail&amp;aid=1123816&amp;group_id=75348&amp;atid=543656">SF
-			Feature-1123816</a>] It is now possible to configure the editor to <strong>show &quot;fake&quot;
-				table borders</strong> when the border size is set to zero. (It is working only
-			on IE for now). </li>
-		<li><strong>Numbered</strong> and <strong>Bulleted</strong> lists can now be <strong>
-			configured</strong> . Just right click on then. </li>
-		<li>[<a target="_blank" href="http://sourceforge.net/tracker/index.php?func=detail&amp;aid=1088608&amp;group_id=75348&amp;atid=543656">SF
-			Feature-1088608</a>] [<a target="_blank" href="http://sourceforge.net/tracker/index.php?func=detail&amp;aid=1144047&amp;group_id=75348&amp;atid=543656">SF
-				Feature-1144047</a>] [<a target="_blank" href="http://sourceforge.net/tracker/index.php?func=detail&amp;aid=1149808&amp;group_id=75348&amp;atid=543656">SF
-					Feature-1149808</a>] A new configuration setting is available, &quot;<strong>BaseHref</strong>
-			&quot;, to set the URL used to resolve relative links. </li>
-		<li>It is now possible to set&nbsp;the <strong>content language direction</strong> .
-			See the &quot;FCKConfig.ContentLangDirection&quot; configurations setting. </li>
-		<li>All <strong>Field Commands</strong> available on version 1.6 have been upgraded
-			and&nbsp;included in this version: <strong>form</strong>, <strong>checkbox</strong>,
-			<strong>radio button</strong>, <strong>text field</strong>, text <strong>area</strong>,
-			<strong>select field</strong>, <strong>button</strong>, <strong>image button</strong>
-			and <strong>hidden field</strong> . </li>
-		<li><strong>Context menu</strong> options (right-click) has been added for: <strong>
-			anchors</strong>, <strong>select field</strong>, <strong>textarea</strong>, <strong>
-				checkbox</strong>, <strong>radio button</strong>, <strong>text field</strong>,
-			<strong>hidden field</strong>, <strong>textarea</strong>, <strong>button</strong>,
-			<strong>image button</strong>, <strong>form</strong>, <strong>bulleted list</strong>
-			and <strong>numbered list</strong> . </li>
-		<li>The &quot;<strong>Universal Keyboard</strong>&quot; has been converted from version
-			1.6 to this one and it's now available. </li>
-		<li>It is now possible to <strong>configure</strong> the items to be shown in the <strong>
-			context menu</strong> . Just use the FCKConfig.ContextMenu option&nbsp;at fckconfig.js.
-		</li>
-		<li>A new configuration (FillEmptyBlocks)&nbsp;is available to force the editor to <strong>
-			automatically insert a &amp;nbsp;</strong> on empty block elements (p, div, pre,
-			h1, etc...) to avoid differences from the editing and the final result. (Actually,
-			the editor automatically &quot;grows&quot; empty elements to make the user able
-			to enter text on it). Attention: the extra &amp;nbsp; will be added when switching
-			from WYSIWYG to Source View, so the user may see an additional space on empty blocks.
-			(XHTML support must be enabled). </li>
-		<li>It is now possible to configure the <strong>toolbar</strong> to &quot;<strong>break</strong>
-			&quot; between two toolbar strips. Just insert a &quot;/&quot; between then. Take
-			a look at fckconfig.js for a sample. </li>
-		<li>New Language files are available:
-			<ul>
-				<li><strong>Brazilian Portuguese</strong> (by Carlos Alberto Tomatis Loth) </li>
-				<li><strong>Bulgarian</strong> (by Miroslav Ivanov) </li>
-				<li><strong>Esperanto</strong> (by Tim Morley) </li>
-				<li><strong>Galician</strong> (by Fernando Riveiro Lopez) </li>
-				<li><strong>Japanese</strong> ( by Takashi Yamaguchi) </li>
-				<li><strong>Persian</strong> (by Hamed Taj-Abadi) </li>
-				<li><strong>Romanian</strong> (by Adrian Nicoara) </li>
-				<li><strong>Slovak</strong> (by Gabriel Kiss) </li>
-				<li><strong>Thai </strong>(by Audy Charin Arsakit) </li>
-				<li><strong>Turkish</strong> (by Reha Bi&ccedil;er) </li>
-				<li>The Chinese Traditional has been set as the default (zn) instead of zn-tw.</li>
-			</ul>
-		</li>
-		<li>Warning: All toolbar image images have been changed. The &quot;button.&quot; prefix
-			has been removed. If you have your custom skin, please rename your files. </li>
-		<li>A new plugin is available in the package: &quot;<strong>Placeholders</strong>&quot;.
-			In this way you can insert non editable tags in your document to be processed on
-			server side (very specific usage). </li>
-		<li>The ASPX files are no longer available in this package. They have been moved to
-			the FCKeditor.Net package. In this way the ASP.Net integration is much better organized.
-		</li>
-		<li>The FCKeditor.Packager program is now part of the main package. It is not anymore&nbsp;distributed
-			separately. </li>
-		<li>The PHP connector now sets the uploaded file permissions (chmod)&nbsp;to 0777. </li>
-		<li>[<a target="_blank" href="http://sourceforge.net/tracker/index.php?func=detail&amp;aid=1090215&amp;group_id=75348&amp;atid=543655">SF
-			Patch-1090215</a>] It's now possible to give back more info from your custom image
-			browser calling the SetUrl( url [, width] [, height] [, alt] ). Thanks to Ben Noblet.
-		</li>
-		<li>The package files now maintain their original &quot;Last Modified&quot; date, so
-			incremental FTP uploads can be used to update to&nbsp;new versions of the editor
-			(from now on). </li>
-		<li>The &quot;Source&quot; view now forces its contents to be written in &quot;Left
-			to Right&quot; direction even when the editor interface language is running a RTL
-			language (like Arabic, Hebrew or Persian). </li>
-	</ul>
-	<p>
-		Fixed Bugs:</p>
-	<ul>
-		<li>[<a target="_blank" href="http://sourceforge.net/tracker/index.php?func=detail&amp;aid=1124220&amp;group_id=75348&amp;atid=543653">SF
-			BUG-1124220</a>] [<a target="_blank" href="https://sourceforge.net/tracker/index.php?func=detail&amp;aid=1119894&amp;group_id=75348&amp;atid=543653">SF
-				BUG-1119894</a>] [<a target="_blank" href="http://sourceforge.net/tracker/index.php?func=detail&amp;aid=1090986&amp;group_id=75348&amp;atid=543653">SF
-					BUG-1090986</a>] [<a target="_blank" href="http://sourceforge.net/tracker/index.php?func=detail&amp;aid=1100408&amp;group_id=75348&amp;atid=543653">SF
-						BUG-1100408</a>] The editor now works correctly when starting with an
-			empty value and switching to the Source mode. </li>
-		<li>[<a target="_blank" href="http://sourceforge.net/tracker/index.php?func=detail&amp;aid=1119380&amp;group_id=75348&amp;atid=543653">SF
-			BUG-1119380</a>] [<a target="_blank" href="http://sourceforge.net/tracker/index.php?func=detail&amp;aid=1115750&amp;group_id=75348&amp;atid=543653">SF
-				BUG-1115750</a>] [<a target="_blank" href="http://sourceforge.net/tracker/index.php?func=detail&amp;aid=1101808&amp;group_id=75348&amp;atid=543653">SF
-					BUG-1101808</a>] The problem with the scrollbar and the toolbar combos (Style,
-			Font, etc...) over Mac has been fixed. </li>
-		<li>[<a target="_blank" href="http://sourceforge.net/tracker/index.php?func=detail&amp;aid=1098460&amp;group_id=75348&amp;atid=543653">SF
-			BUG-1098460</a>] [<a target="_blank" href="http://sourceforge.net/tracker/index.php?func=detail&amp;aid=1076544&amp;group_id=75348&amp;atid=543653">SF
-				BUG-1076544</a>] [<a target="_blank" href="http://sourceforge.net/tracker/index.php?func=detail&amp;aid=1077845&amp;group_id=75348&amp;atid=543653">SF
-					BUG-1077845</a>] [<a target="_blank" href="http://sourceforge.net/tracker/index.php?func=detail&amp;aid=1092395&amp;group_id=75348&amp;atid=543653">SF
-						BUG-1092395</a>] A new upload class has been included for the ASP File
-			Manager Connector. It uses the &quot;ADODB.Stream&quot; object. Many thanks to &quot;NetRube&quot;.
-		</li>
-		<li>I small correction has been made to the ColdFusion integration files. Thanks to
-			Hendrik Kramer. </li>
-		<li>There was a very specific problem when the editor was running over a FRAME executed
-			on another domain. </li>
-		<li>The performance problem on Gecko while typing&nbsp;quickly has been solved. </li>
-		<li>The &lt;br type= &quot;_moz&quot;&gt;is not anymore shown on XHTML source. </li>
-		<li>It has been introduced a mechanism to avoid automatic contents duplication on very
-			specific occasions (bad formatted HTML). </li>
-		<li>[<a target="_blank" href="http://sourceforge.net/tracker/index.php?func=detail&amp;aid=1146407&amp;group_id=75348&amp;atid=543653">SF
-			BUG-1146407</a>] [<a target="_blank" href="http://sourceforge.net/tracker/index.php?func=detail&amp;aid=1145800&amp;group_id=75348&amp;atid=543653">SF
-				BUG-1145800</a>] [<a target="_blank" href="http://sourceforge.net/tracker/index.php?func=detail&amp;aid=1118803&amp;group_id=75348&amp;atid=543653">SF
-					BUG-1118803</a> ] Other&nbsp;issues in the XHTML processor have been solved.
-		</li>
-		<li>[<a target="_blank" href="http://sourceforge.net/tracker/index.php?func=detail&amp;aid=1143969&amp;group_id=75348&amp;atid=543653">SF
-			BUG-1143969</a>] The editor now accepts the &quot;accept-charset&quot; attribute
-			in the FORM tag (IE specific bug). </li>
-		<li>[<a target="_blank" href="http://sourceforge.net/tracker/index.php?func=detail&amp;aid=1122742&amp;group_id=75348&amp;atid=543653">SF
-			BUG-1122742</a>] [<a target="_blank" href="http://sourceforge.net/tracker/index.php?func=detail&amp;aid=1089548&amp;group_id=75348&amp;atid=543653">SF
-				BUG-1089548</a> ] Now, the contents of the SCRIPT and STYLE tags remain untouched.
-		</li>
-		<li>[<a target="_blank" href="http://sourceforge.net/tracker/index.php?func=detail&amp;aid=1114748&amp;group_id=75348&amp;atid=543653">SF
-			BUG-1114748</a>] The PHP File Manager Connector now sets the new folders permissions
-			(chmod)&nbsp;to 0777 correctly. </li>
-		<li>The PHP File Manager Connector now has a configuration file (editor/filemanager/browser/default/connectors/php/config.php)
-			to set some security preferences. </li>
-		<li>The&nbsp;ASP File Manager Connector now has a configuration file (editor/filemanager/browser/default/connectors/asp/config.asp)
-			to set some security preferences. </li>
-		<li>A small bug in the toolbar rendering (strips auto position) has been corrected.
-		</li>
-		<li>[<a target="_blank" href="http://sourceforge.net/tracker/index.php?func=detail&amp;aid=1093732&amp;group_id=75348&amp;atid=543653">SF
-			BUG-1093732</a>] [<a target="_blank" href="http://sourceforge.net/tracker/index.php?func=detail&amp;aid=1091377&amp;group_id=75348&amp;atid=543653">SF
-				BUG-1091377</a>] [<a target="_blank" href="http://sourceforge.net/tracker/index.php?func=detail&amp;aid=1083044&amp;group_id=75348&amp;atid=543653">SF
-					BUG-1083044</a>] [<a target="_blank" href="http://sourceforge.net/tracker/index.php?func=detail&amp;aid=1096307&amp;group_id=75348&amp;atid=543653">SF
-						BUG-1096307</a>] The configurations are now encoded so a user can use
-			values that has special chars (&amp;=/). </li>
-		<li>[<a target="_blank" href="http://sourceforge.net/tracker/index.php?func=detail&amp;aid=1103688&amp;group_id=75348&amp;atid=543653">SF
-			BUG-1103688</a>] [<a target="_blank" href="http://sourceforge.net/tracker/index.php?func=detail&amp;aid=1092331&amp;group_id=75348&amp;atid=543653">SF
-				BUG-1092331</a>] [<a target="_blank" href="http://sourceforge.net/tracker/index.php?func=detail&amp;aid=1088220&amp;group_id=75348&amp;atid=543653">SF
-					BUG-1088220</a>] PHP samples now use PHP_SELF to automatically discover
-			the editor's base path. </li>
-		<li>Some small wrapping problems with some labels in the Image and Table dialog windows
-			have been fixed. </li>
-		<li>All .js files are now encoded in UTF-8 format with the BOM (byte order mask) to
-			avoid some errors on specific Linux installations. </li>
-		<li>[<a target="_blank" href="https://sourceforge.net/tracker/index.php?func=detail&amp;aid=1114449&amp;group_id=75348&amp;atid=543653">SF
-			BUG-1114449</a>] The editor packager program has been modified so now it is possible
-			to use the source files to run the editor as described in the documentation. The
-			new packager must be downloaded. </li>
-		<li>A small problem with the editor focus while in&nbsp;source&nbsp;mode has been corrected.
-			Thanks to Eric (ric1607). </li>
-		<li>[<a target="_blank" href="http://sourceforge.net/tracker/index.php?func=detail&amp;aid=1108167&amp;group_id=75348&amp;atid=543653">SF
-			BUG-1108167</a>] [<a target="_blank" href="http://sourceforge.net/tracker/index.php?func=detail&amp;aid=1085149&amp;group_id=75348&amp;atid=543653">SF
-				BUG-1085149</a>] [<a target="_blank" href="http://sourceforge.net/tracker/index.php?func=detail&amp;aid=1151296&amp;group_id=75348&amp;atid=543653">SF
-					BUG-1151296</a>] [<a target="_blank" href="http://sourceforge.net/tracker/index.php?func=detail&amp;aid=1082433&amp;group_id=75348&amp;atid=543653">SF
-						BUG-1082433</a>] No more IFRAMEs without src attribute. Now it points
-			to a blank page located in the editor's package. In this way we avoid security warnings
-			when using the editor over HTTPS. Thanks to Guillermo Bozovich. </li>
-		<li>[<a target="_blank" href="https://sourceforge.net/tracker/index.php?func=detail&amp;aid=1117779&amp;group_id=75348&amp;atid=543653">SF
-			BUG-1117779</a>] The editor now works well if you have more than one element named
-			&quot;submit&quot;&nbsp;on its form (even if it is not correct to have this situation).
-		</li>
-		<li>The XHTML processor was duplicating the text on some specific situation. It has
-			been fixed. </li>
-		<li>[<a target="_blank" href="http://sourceforge.net/tracker/index.php?func=detail&amp;aid=1090213&amp;group_id=75348&amp;atid=543655">SF
-			Patch-1090213</a>] [<a target="_blank" href="http://sourceforge.net/tracker/index.php?func=detail&amp;aid=1098929&amp;group_id=75348&amp;atid=543653">SF
-				Patch-1098929</a>] With ASP, the editor now works correctly on pages using &quot;Option
-			Explicit&quot;. Thanks to Ben Noblet. </li>
-		<li>[<a target="_blank" href="http://sourceforge.net/tracker/index.php?func=detail&amp;aid=1100759&amp;group_id=75348&amp;atid=543653">SF
-			BUG-1100759</a>] [<a target="_blank" href="http://sourceforge.net/tracker/index.php?func=detail&amp;aid=1029125&amp;group_id=75348&amp;atid=543653">SF
-				BUG-1029125</a>] [<a target="_blank" href="http://sourceforge.net/tracker/index.php?func=detail&amp;aid=966130&amp;group_id=75348&amp;atid=543653">SF
-					BUG-966130</a>] The editor was not working with old IE 5.5 browsers. There
-			was a problem with the XML parser. It has been fixed. </li>
-		<li>The localization engine is now working correctly over IE 5.5 browsers. </li>
-		<li>Some commands where not working well over IE 5.5 (emoticons, image,...). It has
-			been fixed. </li>
-		<li>[<a target="_blank" href="http://sourceforge.net/tracker/index.php?func=detail&amp;aid=1146441&amp;group_id=75348&amp;atid=543653">SF
-			BUG-1146441</a>] [<a target="_blank" href="http://sourceforge.net/tracker/index.php?func=detail&amp;aid=1149777&amp;group_id=75348&amp;atid=543653">SF
-				BUG-1149777</a>] The editor now uses the TEXTAREA id&nbsp;in the ReplaceTextarea
-			function. If the id is now found, it uses the &quot;name&quot;. The docs have been
-			updated. </li>
-		<li>[<a target="_blank" href="https://sourceforge.net/tracker/index.php?func=detail&amp;aid=1144297&amp;group_id=75348&amp;atid=543653">SF
-			BUG-1144297</a>] Some corrections have been made to the Dutch language file. Thanks
-			to Erwin Dondorp. </li>
-		<li>[<a target="_blank" href="https://sourceforge.net/tracker/index.php?func=detail&amp;aid=1121365&amp;group_id=75348&amp;atid=543653">SF
-			BUG-1121365</a>] [<a target="_blank" href="http://sourceforge.net/tracker/index.php?func=detail&amp;aid=1090102&amp;group_id=75348&amp;atid=543653">SF
-				BUG-1090102</a>] [<a target="_blank" href="http://sourceforge.net/tracker/index.php?func=detail&amp;aid=1152171&amp;group_id=75348&amp;atid=543653">SF
-					BUG-1152171</a>] [<a target="_blank" href="http://sourceforge.net/tracker/index.php?func=detail&amp;aid=1102907&amp;group_id=75348&amp;atid=543653">SF
-						BUG-1102907</a>] There is no problem now to start the editor with values
-			like &quot;&lt;div&gt;&lt;/div&gt;&quot; or &quot;&lt;p&gt;&lt;/p&gt;&quot;. </li>
-		<li>[<a target="_blank" href="https://sourceforge.net/tracker/index.php?func=detail&amp;aid=1114059&amp;group_id=75348&amp;atid=543653">SF
-			BUG-1114059</a>] [<a target="_blank" href="http://sourceforge.net/tracker/index.php?func=detail&amp;aid=1041861&amp;group_id=75348&amp;atid=543653">SF
-				BUG-1041861</a>] The click on the disabled options in the Context Menu has no
-			effects now. </li>
-		<li>[<a target="_blank" href="http://sourceforge.net/tracker/index.php?func=detail&amp;aid=1152617&amp;group_id=75348&amp;atid=543653">SF
-			BUG-1152617</a>] [<a target="_blank" href="http://sourceforge.net/tracker/index.php?func=detail&amp;aid=1102441&amp;group_id=75348&amp;atid=543653">SF
-				BUG-1102441</a>] [<a target="_blank" href="http://sourceforge.net/tracker/index.php?func=detail&amp;aid=1095312&amp;group_id=75348&amp;atid=543653">SF
-					BUG-1095312</a>] Some problems when setting the editor source to very specific
-			values has been fixed. </li>
-		<li>[<a target="_blank" href="http://sourceforge.net/tracker/index.php?func=detail&amp;aid=1093514&amp;group_id=75348&amp;atid=543653">SF
-			BUG-1093514</a>] [<a target="_blank" href="http://sourceforge.net/tracker/index.php?func=detail&amp;aid=1089204&amp;group_id=75348&amp;atid=543653">SF
-				BUG-1089204</a>] [<a target="_blank" href="http://sourceforge.net/tracker/index.php?func=detail&amp;aid=1077609&amp;group_id=75348&amp;atid=543653">SF
-					BUG-1077609</a>] The editor now runs correctly if called directly (locally)&nbsp;without
-			a server installation (just opening the HTML sample files). </li>
-		<li>[<a target="_blank" href="http://sourceforge.net/tracker/index.php?func=detail&amp;aid=1088248&amp;group_id=75348&amp;atid=543653">SF
-			BUG-1088248</a>] The editor now uses a different method to load its contents. In
-			this way the URLs remain untouched. </li>
-		<li>The PHP integration file now detects Internet Explorer 5.5 correctly.</li>
-	</ul>
-	<h3>
-		Version 2.0 RC2 (Release Candidate 2)</h3>
-	<ul>
-		<li>[<a target="_blank" href="http://sourceforge.net/tracker/index.php?func=detail&amp;aid=1042034&amp;group_id=75348&amp;atid=543656">SF
-			Feature-1042034</a>] [<a target="_blank" href="http://sourceforge.net/tracker/index.php?func=detail&amp;aid=1075961&amp;group_id=75348&amp;atid=543656">SF
-				Feature-1075961</a>] [<a target="_blank" href="http://sourceforge.net/tracker/index.php?func=detail&amp;aid=1083200&amp;group_id=75348&amp;atid=543656">SF
-					Feature-1083200</a>] A new dialog window for the <strong>table cell properties</strong>
-			is now available (right-click). </li>
-		<li>[<a target="_blank" href="http://sourceforge.net/tracker/index.php?func=detail&amp;aid=1042034&amp;group_id=75348&amp;atid=543656">SF
-			Feature-1042034</a>] The new &quot;<strong>Split Cell</strong> &quot;, to split
-			a table cell in two columns, has been introduced (right-click). </li>
-		<li>[<a target="_blank" href="http://sourceforge.net/tracker/index.php?func=detail&amp;aid=1042034&amp;group_id=75348&amp;atid=543656">SF
-			Feature-1042034</a>] The new &quot;<strong>Merge Cells</strong>&quot;, to merge
-			table cells (in the same row), has been introduced (right-click). </li>
-		<li>The &quot;fake&quot; <strong>TAB key support</strong> (available by default over
-			Gecko browsers is now available over IE too. You can set the number of spaces to
-			add setting the FCKConfig.TabSpaces configuration setting. Set it to 0 (zero) to
-			disable this feature (IE). </li>
-		<li>It now possible to tell IE to send a <strong>&lt;BR&gt;</strong> when the user presses
-			the <strong>Enter key</strong>. Take a look at the FCKConfig.UseBROnCarriageReturn
-			configuration setting. </li>
-		<li>[<a target="_blank" href="http://sourceforge.net/tracker/index.php?func=detail&amp;aid=1085422&amp;group_id=75348&amp;atid=543656">SF
-			Feature-1085422</a>] <strong>ColdFusion</strong>: The <strong>File Manager connector</strong>
-			is now available! (Thanks to Hendrik Kramer). </li>
-		<li>The editor is now available in <strong>29 languages!</strong> The new language files
-			available are:&nbsp;
-			<ul>
-				<li>[<a target="_blank" href="http://sourceforge.net/tracker/index.php?func=detail&amp;aid=1067775&amp;group_id=75348&amp;atid=543656">SF
-					Feature-1067775</a>] <strong>Chinese Simplified and Traditional</strong> (Taiwan
-					and Hong Kong) (by NetRube). </li>
-				<li><strong>Czech</strong> (by David Hor&aacute;k). </li>
-				<li><strong>Danish</strong> (by Jesper Michelsen). </li>
-				<li><strong>Dutch</strong> (by Bram Crins). </li>
-				<li><strong>German</strong> (by Maik Unruh). </li>
-				<li><strong>Portuguese</strong> (Portugal) (by Francisco Pereira). </li>
-				<li><strong>Russian</strong> (by Andrey Grebnev). </li>
-				<li><strong>Slovenian</strong> (by Boris Volaric).</li>
-			</ul>
-		</li>
-		<li>Updates to the <strong>French</strong> language files (by Hubert Garrido). </li>
-		<li>[<a target="_blank" href="http://sourceforge.net/tracker/index.php?func=detail&amp;aid=1085816&amp;group_id=75348&amp;atid=543653">SF
-			BUG-1085816</a>] [<a target="_blank" href="http://sourceforge.net/tracker/index.php?func=detail&amp;aid=1083743&amp;group_id=75348&amp;atid=543653">SF
-				BUG-1083743</a>] [<a target="_blank" href="http://sourceforge.net/tracker/index.php?func=detail&amp;aid=1078783&amp;group_id=75348&amp;atid=543653">SF
-					BUG-1078783</a>] [<a target="_blank" href="http://sourceforge.net/tracker/index.php?func=detail&amp;aid=1077861&amp;group_id=75348&amp;atid=543653">SF
-						BUG-1077861</a>] [<a target="_blank" href="http://sourceforge.net/tracker/index.php?func=detail&amp;aid=1077861&amp;group_id=75348&amp;atid=543653">SF
-							BUG-1037404</a>] Many&nbsp;small bugs&nbsp;in the XHTML processor
-			has been corrected (workarounds to browser specific bugs). These are some things
-			to consider regarding the changes:
-			<ul>
-				<li>[<a target="_blank" href="http://sourceforge.net/tracker/index.php?func=detail&amp;aid=1083744&amp;group_id=75348&amp;atid=543653">SF
-					BUG-1083744</a>] On Gecko browsers, any element attribute that the name starts with
-					&quot;_moz&quot; will be ignored. </li>
-				<li>[<a target="_blank" href="http://sourceforge.net/tracker/index.php?func=detail&amp;aid=1060073&amp;group_id=75348&amp;atid=543653">SF
-					BUG-1060073</a>] The &lt;STYLE&gt; and &lt;SCRIPT&gt; elements contents will be
-					handled as is, without CDATA tag surrounding. This may break XHTML validation. In
-					any case the use of external files for scripts and styles is recommended (W3C recommendation).</li>
-			</ul>
-		</li>
-		<li>[<a target="_blank" href="http://sourceforge.net/tracker/index.php?func=detail&amp;aid=1088310&amp;group_id=75348&amp;atid=543653">SF
-			BUG-1088310</a>] [<a target="_blank" href="http://sourceforge.net/tracker/index.php?func=detail&amp;aid=1078837&amp;group_id=75348&amp;atid=543653">SF
-				BUG-1078837</a>] [<a target="_blank" href="http://sourceforge.net/tracker/index.php?func=detail&amp;aid=999792&amp;group_id=75348&amp;atid=543653">SF
-					BUG-999792</a>] URLs now remain untouched when initializing the editor or
-			switching from WYSYWYG to Source and vice versa. </li>
-		<li>[<a target="_blank" href="http://sourceforge.net/tracker/index.php?func=detail&amp;aid=1082323&amp;group_id=75348&amp;atid=543653">SF
-			BUG-1082323</a>] The&nbsp;problem in the ASP and PHP connectors when handling non
-			&quot;strange&quot; chars in file names has been corrected. </li>
-		<li>[<a target="_blank" href="http://sourceforge.net/tracker/index.php?func=detail&amp;aid=1085034&amp;group_id=75348&amp;atid=543653">SF
-			BUG-1085034</a>] [<a target="_blank" href="http://sourceforge.net/tracker/index.php?func=detail&amp;aid=1076796&amp;group_id=75348&amp;atid=543653">SF
-				BUG-1076796</a>] Some bugs in the PHP connector have been corrected. </li>
-		<li>A&nbsp;problem with the &quot;Format&quot; command on IE browsers on languages different
-			of English has been solved. The negative side of this correction is that due to
-			a IE bad design it is not possible to update the &quot;Format&quot; combo while
-			moving throw the text (context sensitive). </li>
-		<li>On Gecko browsers, when selecting an image and executing the &quot;New Page&quot;
-			command, the image handles still appear, even if the image is not available anymore
-			(this is a Gecko bug). When clicking in&nbsp;a &quot;phanton&quot; randle, the browser
-			crashes. It doesn't&nbsp;happen (the crash)&nbsp;anymore. </li>
-		<li>[<a target="_blank" href="http://sourceforge.net/tracker/index.php?func=detail&amp;aid=1082197&amp;group_id=75348&amp;atid=543653">SF
-			BUG-1082197</a>] On ASP, the bug in the browser detection system for Gecko browsers
-			has been corrected. Thanks to Alex Varga. </li>
-		<li>Again on ASP, the browser detection for IE had some problems on servers that use
-			comma for decimal separators on numbers. It has been corrected. Thanks to Agrotic.
-		</li>
-		<li>No error is thrown now when&nbsp;non existing&nbsp;language is configured in the
-			editor. The English language file is loaded in that case. </li>
-		<li>[<a target="_blank" href="http://sourceforge.net/tracker/index.php?func=detail&amp;aid=1077747&amp;group_id=75348&amp;atid=543653">SF
-			BUG-1077747</a>] The missing images on the Office2003 and Silver skins are now included
-			in the package. </li>
-		<li>On some Gecko browsers, the dialog window was not loading correctly. I couldn't
-			reproduce the problem, but a fix has been applied based on users tests. </li>
-		<li>[<a target="_blank" href="http://sourceforge.net/tracker/index.php?func=detail&amp;aid=1004078&amp;group_id=75348&amp;atid=543653">SF
-			BUG-1004078</a>] ColdFusion: The &quot;config&quot; structure/hash table with keys
-			and values is in ColdFusion not(!) case sensitive. All keys returned by ColdFusion
-			are in upper case format. Because the FCKeditor configuration keys must be case
-			sensitive, we had to match all structure/hash keys with a list of the correct configuration
-			names in mixed case. This has been added to the fckeditor.cfc and fckeditor.cfm.
-		</li>
-		<li>[<a target="_blank" href="http://sourceforge.net/tracker/index.php?func=detail&amp;aid=1075166&amp;group_id=75348&amp;atid=543653">SF
-			BUG-1075166</a>] ColdFusion: The &quot;fallback&quot; variant of the texteditor
-			(&lt;textarea&gt;) has a bug in the fckeditor.cfm. This has been fixed. </li>
-		<li>A typo in the Polish language file has been corrected. Thanks to Pawel Tomicki.
-		</li>
-		<li>[<a target="_blank" href="http://sourceforge.net/tracker/index.php?func=detail&amp;aid=1086370&amp;group_id=75348&amp;atid=543653">SF
-			BUG-1086370</a>] A small coding type in the Link dialog window has been corrected.
-		</li>
-	</ul>
-	<h3>
-		Version 2.0 RC1 (Release Candidate 1)</h3>
-	<ul>
-		<li><strong>ASP</strong> support is now available (including the&nbsp;File Manager connector).
-		</li>
-		<li><strong>PHP</strong> support is now available (including the File Manager connector).
-		</li>
-		<li>[<a target="_blank" href="http://sourceforge.net/tracker/index.php?func=detail&amp;aid=1063217&amp;group_id=75348&amp;atid=543656">SF
-			Feature-1063217</a>] The new advanced&nbsp;<strong>Style</strong> command is available
-			in the toolbar: full preview, context sensitive, style definitions are loaded from
-			a XML file (see documentation for more instructions). </li>
-		<li>The <strong>Font Format</strong>, <strong>Font Name</strong> and <strong>Font Size</strong>
-			toolbar command now show a <strong>preview</strong> of the available options. </li>
-		<li>The new <strong>Find</strong> and <strong>Replace</strong> features has been introduced.
-		</li>
-		<li>A new <strong>Plug-in</strong> system has been developed. Now it is quite easy to
-			customize the editor to your needs. (Take a look at the html/sample06.html file).
-		</li>
-		<li>The editor now handles <strong>HTML entities</strong> in the right way (XHTML support
-			must be set to &quot;true&quot;). It handles all entities defined in the W3C&nbsp;XHTML
-			DTD file. </li>
-		<li>A new &quot;_docs&quot; folder has been introduced for the <strong>documentation</strong>.
-			It is not yet complete, but I hope the community will help us to fill it better.
-		</li>
-		<li>It is now possible (even if it is not recommended by the W3C) to force the use of
-			simple ampersands (&amp;) on attributes (like the links href) instead of its entity
-			&amp;amp;. Just set FCKConfig.ForceSimpleAmpersand = true in the&nbsp;configuration
-			file. </li>
-		<li>[<a target="_blank" href="http://sourceforge.net/tracker/index.php?func=detail&amp;aid=1026866&amp;group_id=75348&amp;atid=543656">SF
-			Feature-1026866</a>] The &quot;<strong>EditorAreaCSS</strong>&quot; configuration
-			option has been introduced. In this way you can set the CSS to use in the editor
-			(editable area). </li>
-		<li>The editing area is not anymore clipped if the toolbar is too large and exceeds
-			the window width. </li>
-		<li>[<a target="_blank" href="http://sourceforge.net/tracker/index.php?func=detail&amp;aid=1064902&amp;group_id=75348&amp;atid=543653">SF
-			BUG-1064902</a>] [<a target="_blank" href="http://sourceforge.net/tracker/index.php?func=detail&amp;aid=1033933&amp;group_id=75348&amp;atid=543653">SF
-				BUG-1033933</a>] The editor <strong>interface</strong> is now completely <strong>localizable</strong>.
-			The version ships with 19 languages including: <b>Arabic</b>, <b>Bosnian</b>, <b>Catalan</b>,
-			<b>English</b>, <b>Spanish</b>, <b>Estonian</b>, <b>Finnish</b>, <b>French</b>,
-			<b>Greek</b>, <b>Hebrew</b>, <b>Croatian</b>, <b>Italian</b>, <b>Korean</b>, <b>Lithuanian</b>,
-			<b>Norwegian</b>, <strong>Polish</strong>, <strong>Serbian (Cyrillic)</strong>,
-			<strong>Serbian (Latin)</strong> and <strong>Swedish</strong>.</li>
-		<li>[<a target="_blank" href="http://sourceforge.net/tracker/index.php?func=detail&amp;aid=1027858&amp;group_id=75348&amp;atid=543653">SF
-			BUG-1027858</a>] Firefox 1.0 PR&nbsp;introduced&nbsp;a bug that made the editor
-			stop working on it. A workaround has been developed to fix the problem. </li>
-		<li>There was a positioning problem over IE&nbsp;with the color panel. It has been corrected.
-		</li>
-		<li>[<a target="_blank" href="http://sourceforge.net/tracker/index.php?func=detail&amp;aid=1049842&amp;group_id=75348&amp;atid=543653">SF
-			BUG-1049842</a>] [<a target="_blank" href="http://sourceforge.net/tracker/index.php?func=detail&amp;aid=1033832&amp;group_id=75348&amp;atid=543653">SF
-				BUG-1033832</a>] [<a target="_blank" href="http://sourceforge.net/tracker/index.php?func=detail&amp;aid=1028623&amp;group_id=75348&amp;atid=543653">SF
-					BUG-1028623</a>] [<a target="_blank" href="http://sourceforge.net/tracker/index.php?func=detail&amp;aid=1026610&amp;group_id=75348&amp;atid=543653">SF
-						BUG-1026610</a>] [<a target="_blank" href="http://sourceforge.net/tracker/index.php?func=detail&amp;aid=1064498&amp;group_id=75348&amp;atid=543653">SF
-							BUG-1064498</a>] The combo commands in the toolbar were not opening
-			in the right way. It has been fixed. </li>
-		<li>[<a target="_blank" href="http://sourceforge.net/tracker/index.php?func=detail&amp;aid=1053399&amp;group_id=75348&amp;atid=543653">SF
-			BUG-1053399</a>] [<a target="_blank" href="http://sourceforge.net/tracker/index.php?func=detail&amp;aid=965318&amp;group_id=75348&amp;atid=543653">SF
-				BUG-965318</a>] [<a target="_blank" href="http://sourceforge.net/tracker/index.php?func=detail&amp;aid=1018296&amp;group_id=75348&amp;atid=543653">SF
-					BUG-1018296</a>] The toolbar buttons icons were not showing on some IE and
-			Firefox/Mac installations. It has been fixed. </li>
-		<li>[<a target="_blank" href="http://sourceforge.net/tracker/index.php?func=detail&amp;aid=1054621&amp;group_id=75348&amp;atid=543653">SF
-			BUG-1054621</a>] Color pickers are now working with the &quot;office2003&quot; and
-			&quot;silver&quot; skins. </li>
-		<li>[<a target="_blank" href="http://sourceforge.net/tracker/index.php?func=detail&amp;aid=1054108&amp;group_id=75348&amp;atid=543653">SF
-			BUG-1054108</a>] IE doesn&rsquo;t recognize the &quot;&amp;apos;&quot; entity for
-			apostrophes, so a workaround has been developed to replace it with &quot;&amp;#39;&quot;
-			(its numeric entity representation). </li>
-		<li>[<a target="_blank" href="http://sourceforge.net/tracker/index.php?func=detail&amp;aid=983434&amp;group_id=75348&amp;atid=543653">SF
-			BUG-983434</a>] [<a target="_blank" href="http://sourceforge.net/tracker/index.php?func=detail&amp;aid=983398&amp;group_id=75348&amp;atid=543653">SF
-				BUG-983398</a>] [<a target="_blank" href="http://sourceforge.net/tracker/index.php?func=detail&amp;aid=1028103&amp;group_id=75348&amp;atid=543653">SF
-					BUG-1028103</a>] [<a target="_blank" href="http://sourceforge.net/tracker/index.php?func=detail&amp;aid=1072496&amp;group_id=75348&amp;atid=543653">SF
-						BUG-1072496</a>] The problem with elements with name &quot;submit&quot;
-			inside the editor's form has been solved. </li>
-		<li>[<a target="_blank" href="http://sourceforge.net/tracker/index.php?func=detail&amp;aid=1018743&amp;group_id=75348&amp;atid=543653">SF
-			BUG-1018743</a>] The problem with Gecko when collapsing the toolbar while in source
-			mode has been fixed. </li>
-		<li>[<a target="_blank" href="https://sourceforge.net/tracker/?func=detail&amp;atid=543653&amp;aid=1065268&amp;group_id=75348">SF
-			BUG-1065268</a>] [<a target="_blank" href="http://sourceforge.net/tracker/index.php?func=detail&amp;aid=1034354&amp;group_id=75348&amp;atid=543653">SF
-				BUG-1034354</a>] The XHTML processor now doesn&rsquo;t use the minimized tag
-			syntax (like &lt;br/&gt;) for empty elements that are not marked as EMPTY in the
-			W3C XHTML DTD specifications. </li>
-		<li>[<a target="_blank" href="http://sourceforge.net/tracker/index.php?func=detail&amp;aid=1029654&amp;group_id=75348&amp;atid=543653">SF
-			BUG-1029654</a>] [<a target="_blank" href="http://sourceforge.net/tracker/index.php?func=detail&amp;aid=1046500&amp;group_id=75348&amp;atid=543653">SF
-				BUG-1046500</a>] Due to a bug on Gecko there was a problem when creating links.
-			It has been fixed. </li>
-		<li>[<a target="_blank" href="http://sourceforge.net/tracker/index.php?func=detail&amp;aid=1065973&amp;group_id=75348&amp;atid=543653">SF
-			BUG-1065973</a>] [<a target="_blank" href="http://sourceforge.net/tracker/index.php?func=detail&amp;aid=999792&amp;group_id=75348&amp;atid=543653">SF
-				BUG-999792</a>] The editor now handles relative URLs in IE. In effect IE transform
-			all relative URLs to absolute links, pointing to the site the editor is running.
-			So now the editor removes the protocol and host part of the link if it matches the
-			running server. </li>
-		<li>[<a target="_blank" href="http://sourceforge.net/tracker/index.php?func=detail&amp;aid=1071824&amp;group_id=75348&amp;atid=543653">SF
-			BUG-1071824</a>] The color dialog box bug has been fixed. </li>
-		<li>[<a target="_blank" href="http://sourceforge.net/tracker/index.php?func=detail&amp;aid=1052856&amp;group_id=75348&amp;atid=543653">SF
-			BUG-1052856</a>] [<a target="_blank" href="http://sourceforge.net/tracker/index.php?func=detail&amp;aid=1046493&amp;group_id=75348&amp;atid=543653">SF
-				BUG-1046493</a>] [<a target="_blank" href="http://sourceforge.net/tracker/index.php?func=detail&amp;aid=1023530&amp;group_id=75348&amp;atid=543653">SF
-					BUG-1023530</a>] [<a target="_blank" href="http://sourceforge.net/tracker/index.php?func=detail&amp;aid=1025978&amp;group_id=75348&amp;atid=543653">SF
-						BUG-1025978</a>] The editor now doesn&rsquo;t throw an error if no selection
-			was made and the create link command is used. </li>
-		<li>[<a target="_blank" href="http://sourceforge.net/tracker/index.php?func=detail&amp;aid=1036756&amp;group_id=75348&amp;atid=543653">SF
-			BUG-1036756</a>] The XHTML processor has been reviewed. </li>
-		<li>[<a target="_blank" href="http://sourceforge.net/tracker/index.php?func=detail&amp;aid=1029101&amp;group_id=75348&amp;atid=543653">SF
-			BUG-1029101</a>] The Paste from Word feature is working correctly. </li>
-		<li>[<a target="_blank" href="http://sourceforge.net/tracker/index.php?func=detail&amp;aid=1034623&amp;group_id=75348&amp;atid=543653">SF
-			BUG-1034623</a>] There is an IE bug when setting the editor value to &quot;&lt;p&gt;&lt;hr&gt;&lt;/p&gt;&quot;.
-			A workaround has been developed. </li>
-		<li>[<a target="_blank" href="http://sourceforge.net/tracker/index.php?func=detail&amp;aid=1052695&amp;group_id=75348&amp;atid=543653">SF
-			BUG-1052695</a>] There are some rendering differences between Netscape and Mozilla.
-			(Actually that is a bug on both browsers). A workaround has been developed to solve
-			it. </li>
-		<li>[<a target="_blank" href="http://sourceforge.net/tracker/index.php?func=detail&amp;aid=1073053&amp;group_id=75348&amp;atid=543653">SF
-			BUG-1073053</a>] [<a target="_blank" href="http://sourceforge.net/tracker/index.php?func=detail&amp;aid=1050394&amp;group_id=75348&amp;atid=543653">SF
-				BUG-1050394</a>] The editor doesn&rsquo;t throw errors when hidden. </li>
-		<li>[<a target="_blank" href="http://sourceforge.net/tracker/index.php?func=detail&amp;aid=1066321&amp;group_id=75348&amp;atid=543653">SF
-			BUG-1066321</a>] Scrollbars should not appear on dialog boxes (at least for the
-			Image and Link ones). </li>
-		<li>[<a target="_blank" href="http://sourceforge.net/tracker/index.php?func=detail&amp;aid=1046490&amp;group_id=75348&amp;atid=543653">SF
-			BUG-1046490</a>] Dialogs now are forced to show on foreground over Mac. </li>
-		<li>[<a target="_blank" href="https://sourceforge.net/tracker/?func=detail&amp;atid=543653&amp;aid=1073955&amp;group_id=75348">SF
-			BUG-1073955</a>] A small bug in the image dialog window has been corrected. </li>
-		<li>[<a target="_blank" href="http://sourceforge.net/tracker/index.php?func=detail&amp;aid=1049534&amp;group_id=75348&amp;atid=543653">SF
-			BUG-1049534</a>] The Resources Browser window is now working well over Gecko browsers.
-		</li>
-		<li>[<a target="_blank" href="http://sourceforge.net/tracker/index.php?func=detail&amp;aid=1036675&amp;group_id=75348&amp;atid=543653">SF
-			BUG-1036675</a>] The Resources Browser window now displays the server error on bad
-			installations.</li>
-	</ul>
-	<h3>
-		Version 2.0 Beta 2</h3>
-	<ul>
-		<li>There is a new configuration - &quot;<strong>GeckoUseSPAN</strong>&quot; - that
-			can be used to tell Gecko browsers to use &lt;SPAN style...&gt; or &lt;B&gt;, &lt;I&gt;
-			and &lt;U&gt; for the bold, italic and underline commands. </li>
-		<li>[<a target="_blank" href="http://sourceforge.net/tracker/index.php?func=detail&amp;aid=1002622&amp;group_id=75348&amp;atid=543656">SF
-			Feature-1002622</a>] New <strong>Text Color</strong> and&nbsp;<strong>Background Color</strong>
-			&nbsp;commands have been added to the editor. </li>
-		<li>On Gecko browsers, a message is shown when,&nbsp;because of&nbsp;security settings,&nbsp;the
-			user&nbsp;is not able to&nbsp;cut, copy or paste data from the clipboard using the
-			toolbar buttons or the context menu. </li>
-		<li>The new &quot;<strong>Paste as Plain Text</strong> &quot; command has been introduced.
-		</li>
-		<li>The new &quot;<strong>Paste from Word</strong> &quot; command has been introduced.
-		</li>
-		<li>A new configuration named&nbsp;&quot;StartupFocus&quot; can be used to tell the
-			editor to get the focus when the page is loaded. </li>
-		<li>All <strong>Java </strong>integration files has been moved to a new separated package.
-		</li>
-		<li>[<a target="_blank" href="http://sourceforge.net/tracker/index.php?func=detail&amp;aid=1016781&amp;group_id=75348&amp;atid=543653">SF
-			BUG-1016781</a>] <strong>Table operations</strong> are now working when right click
-			inside a table. The following commands has been introduced: <strong>Insert Row</strong>,
-			<strong>Delete Row</strong>, <strong>Insert Column</strong>, <strong>Delete Column</strong>,
-			<strong>Insert Cell</strong> and <strong>Delete Cells</strong> . </li>
-		<li>[<a target="_blank" href="http://sourceforge.net/tracker/index.php?func=detail&amp;aid=965067&amp;group_id=75348&amp;atid=543653">SF
-			BUG-965067</a>] [<a target="_blank" href="http://sourceforge.net/tracker/index.php?func=detail&amp;aid=1010379&amp;group_id=75348&amp;atid=543653">SF
-				BUG-1010379</a>] [<a target="_blank" href="http://sourceforge.net/tracker/index.php?func=detail&amp;aid=977713&amp;group_id=75348&amp;atid=543653">SF
-					BUG-977713</a>] XHTML support was not working with FireFox, blocking the
-			editor when submitting data. It has been fixed. </li>
-		<li>[<a target="_blank" href="http://sourceforge.net/tracker/index.php?func=detail&amp;aid=1007547&amp;group_id=75348&amp;atid=543653">SF
-			BUG-1007547</a> ] [<a target="_blank" href="http://sourceforge.net/tracker/index.php?func=detail&amp;aid=974595&amp;group_id=75348&amp;atid=543653">SF
-				BUG-974595</a> ]&nbsp;The &quot;FCKLang not defined&quot; error when loading
-			has been fixed. </li>
-		<li>[<a target="_blank" href="http://sourceforge.net/tracker/index.php?func=detail&amp;aid=1021028&amp;group_id=75348&amp;atid=543653">SF
-			BUG-1021028</a>] If the editor doesn't have the focus, some commands were been executed
-			outside the editor in the place where the focus is. It has been fixed. </li>
-		<li>[<a target="_blank" href="http://sourceforge.net/tracker/index.php?func=detail&amp;aid=981191&amp;group_id=75348&amp;atid=543653">SF
-			BUG-981191</a>] We are now using &lt;!--- ---&gt; for ColdFusion comments.</li>
-	</ul>
-	<h3>
-		Version 2.0 Beta 1</h3>
-	<p>
-		This is the first beta of the 2.x series. It brings a lot of new and important things.
-		Beta versions will be released until all features available on version 1.x will
-		be introduced in the 2.0.<br />
-		<br />
-		<strong>Note:</strong> As it is a beta, it is not yet completely developed. Future
-		versions can bring new features that can break backward compatibility with this
-		version.
-	</p>
-	<ul>
-		<li>Gecko browsers (<strong>Mozilla</strong> and <strong>Netscape</strong>) support.
-		</li>
-		<li><strong>Quick startup</strong> response times. </li>
-		<li>Complete <strong>XHTML</strong> 1.0 support. </li>
-		<li><strong>Advanced link</strong> dialog box:
-			<ul>
-				<li>Target selection. </li>
-				<li>Popup configurator. </li>
-				<li>E-Mail link. </li>
-				<li>Anchor selector. </li>
-			</ul>
-		</li>
-		<li>New <strong>File Manager</strong>. </li>
-		<li>New dialog box system, with <strong>tabbed dialogs</strong> support. </li>
-		<li>New <strong>context menus</strong> with icons. </li>
-		<li>New toolbar with &quot;expand/collapse&quot; feature. </li>
-		<li><strong>Skins</strong> support. </li>
-		<li><strong>Right to left languages</strong> support. </li>
-	</ul>
-	<h3>
-		Version 1.6.1</h3>
-	<ul>
-		<li>[<a target="_blank" href="http://sourceforge.net/tracker/index.php?func=detail&amp;aid=862364&amp;group_id=75348&amp;atid=543653">SF
-			BUG-862364</a>] [<a target="_blank" href="http://sourceforge.net/tracker/index.php?func=detail&amp;aid=812733&amp;group_id=75348&amp;atid=543653">SF
-				BUG-812733</a>] There was a problem when the user tried to delete the last row,
-			collumn or cell in a table. It has been corrected.* </li>
-		<li>New Estonian language file. Thanks to Kristjan Kivikangur </li>
-		<li>New Croatian language file. Thanks to Alex Varga. </li>
-		<li>Updated language file for Czech. Thanks to Plachow. </li>
-		<li>Updated language file for Chineze (zh-cn). Thanks to Yanglin. </li>
-		<li>Updated language file for Catalan. Thanks to Jordi Cerdan.</li>
-	</ul>
-	<p>
-		* This version has been partially sponsored by <a href="http://www.genuitec.com/">Genuitec,
-			LLC</a>.</p>
-	<h3>
-		Version 1.6</h3>
-	<ul>
-		<li><strong>Context Menu</strong> support for <strong>form</strong> elements.* </li>
-		<li>New <strong>&quot;Selection Field&quot; command</strong> with advanced dialog box
-			for options definitions.* </li>
-		<li>New <strong>&quot;Image Button&quot; command</strong> is available.* </li>
-		<li>[<a target="_blank" href="https://sourceforge.net/tracker/index.php?func=detail&amp;aid=936196&amp;group_id=75348&amp;atid=543656">SF
-			Feature-936196</a>] Many form elements <strong>bugs has been fixed</strong> and
-			<strong>many improvements</strong> has been done.* </li>
-		<li>New <strong>Java Integration Module</strong>. There is a complete Java API and Tag
-			Library implementations. Take a look at the _jsp directory. Thanks to Simone Chiaretta
-			and Hao Jiang. </li>
-		<li>The <strong>Word Spell Checker</strong> can be used. To be able to run it, your
-			browser security configuration &quot;Initialize and script ActiveX controls not
-			marked as safe&quot; must be set to &quot;Enable&quot; or &quot;Prompt&quot;. And
-			easier and more secure way to do that is to add your site in the list of trusted
-			sites. IeSpell can still be used. Take a look at the fck_config.js file for some
-			configuration options. Thanks to EdwardRF. </li>
-		<li>[<a target="_blank" href="https://sourceforge.net/tracker/index.php?func=detail&amp;aid=748807&amp;group_id=75348&amp;atid=543656">SF
-			Feature-748807</a>] [<a target="_blank" href="https://sourceforge.net/tracker/index.php?func=detail&amp;aid=801030&amp;group_id=75348&amp;atid=543656">SF
-				Feature-801030</a>] [<a target="_blank" href="https://sourceforge.net/tracker/index.php?func=detail&amp;aid=880684&amp;group_id=75348&amp;atid=543656">SF
-					Feature-880684</a>] New &quot;<strong>Anchor&quot; command</strong>, including
-			context menu support. Thanks to G.Meijer. </li>
-		<li>Special characters are replaced with their decimal HTML entities when the XHMTL
-			support is enabled (only over IE5.5+). </li>
-		<li>New <strong>Office 2003 Style</strong> toolbar icons are available. Just uncomment
-			the config.ToolbarImagesPath key in the fck_config.js file. Thanks to Abdul-Aziz
-			A. Al-Oraij. <strong>Attention</strong>: the default toolbar items have been moved
-			to the &quot;images/toolbar/default&quot; directory. </li>
-		<li>[<a target="_blank" href="https://sourceforge.net/tracker/index.php?func=detail&amp;aid=934566&amp;group_id=75348&amp;atid=543655">SF
-			Patch-934566</a>] <strong>Double click support</strong> for Images, Tables, Links,
-			Anchors and all Form elements. Thanks to Top Man. </li>
-		<li>New <strong>&quot;New Page&quot; command</strong> to start a typing from scratch.
-			Thanks to Abdul-Aziz A. Al-Oraij. </li>
-		<li>New <strong>&quot;Replace&quot; command</strong>. Thanks to Abdul-Aziz A. Al-Oraij.
-		</li>
-		<li>New <strong>&quot;Advanced Font Style&quot; command</strong>. Thanks to Abdul-Aziz
-			A. Al-Oraij. </li>
-		<li>[<a target="_blank" href="https://sourceforge.net/tracker/index.php?func=detail&amp;aid=738193&amp;group_id=75348&amp;atid=543656">SF
-			Feature-738193</a>] New <strong>&quot;Save&quot; command</strong>. It can be used
-			to simulate a save action, but in fact it just submits the form where the editor
-			is placed in. Thanks to Abdul-Aziz A. Al-Oraij. </li>
-		<li>New <strong>&quot;Universal Keyboard&quot; command</strong>. This 22 charsets are
-			available: Arabic, Belarusian, Bulgarian, Croatian, Czech, Danish, Finnish, French,
-			Greek, Hebrew, Hungarian, Diacritical, Macedonian, Norwegian, Polish, Russian, Serbian
-			(Cyrillic), Serbian (Latin), Slovak, Spanish, Ukrainian and Vietnamese. Includes
-			a keystroke listener to type Arabic on none Arabic OS or machine. Thanks to Abdul-Aziz
-			A. Al-Oraij. </li>
-		<li>[<a target="_blank" href="https://sourceforge.net/tracker/index.php?func=detail&amp;aid=935358&amp;group_id=75348&amp;atid=543655">SF
-			Patch-935358</a>] New <strong>&quot;Preview&quot; command</strong>. Context menu
-			option is included and can be deactivated throw the config.ShowPreviewContextMenu
-			configuration. Thanks to Ben Ramsey. </li>
-		<li>New &quot;<strong>Table Auto Format</strong>&quot; context menu command. Hack a
-			little the fck_config.js and the fck_editorarea.css files. Thanks to Alexandros
-			Lezos. </li>
-		<li>New &quot;<strong>Bulleted List Properties</strong> &quot; context menu to define
-			its type and class. Thanks to Alexandros Lezos. </li>
-		<li>The <strong>image dialog</strong> box has been a <strong>redesigned</strong> . Thanks
-			to Mark Fierling. </li>
-		<li>Images now always have the <strong>&quot;alt&quot; attribute</strong> set, even
-			when it's value is empty. Thanks to Andreas Barnet. </li>
-		<li>[<a target="_blank" href="https://sourceforge.net/tracker/index.php?func=detail&amp;aid=942250&amp;group_id=75348&amp;atid=543655">SF
-			Patch-942250</a>] You can set on fck_config.js to <strong>automatically clean Word</strong>
-			pasting operations without a user confirmation. </li>
-		<li>Forms element dialogs and other localization pending labels has been updated. </li>
-		<li>A new <strong>Lithuanian</strong> language file is available. Thanks to Tauras Paliulis.
-		</li>
-		<li>A new <strong>Hebrew</strong> language file is available. Thanks to Ophir Radnitz.
-		</li>
-		<li>A new <strong>Serbian</strong> language file is available. Thanks to Zoran Subic.
-		</li>
-		<li><strong>Danish</strong> language file updates. Thanks to Flemming Jensen. </li>
-		<li><strong>Catalan</strong> language file updates. Thanks to Jordi Cerdan. </li>
-		<li>[<a target="_blank" href="https://sourceforge.net/tracker/index.php?func=detail&amp;aid=936514&amp;group_id=75348&amp;atid=543655">SF
-			Patch-936514</a>] [<a href="https://sourceforge.net/tracker/?func=detail&amp;atid=543653&amp;aid=918716&amp;group_id=75348">SF
-				BUG-918716</a>] [<a href="https://sourceforge.net/tracker/index.php?func=detail&amp;aid=931037&amp;group_id=75348&amp;atid=543653">SF
-					BUG-931037</a>] [<a href="https://sourceforge.net/tracker/index.php?func=detail&amp;aid=865864&amp;group_id=75348&amp;atid=543653">SF
-						BUG-865864</a>] [<a href="https://sourceforge.net/tracker/index.php?func=detail&amp;aid=915410&amp;group_id=75348&amp;atid=543653">SF
-							BUG-915410</a>] [<a href="https://sourceforge.net/tracker/index.php?func=detail&amp;aid=918716&amp;group_id=75348&amp;atid=543653">SF
-								BUG-918716</a>] Some <strong>languages files</strong> were not
-			saved on <strong>UTF-8</strong> format causing some javascript errors on loading
-			the editor or making &quot;undefined&quot; to show on editor labels. This problem
-			was solved. </li>
-		<li>Updates on the testsubmit.php file. Thanks to Geat and Gabriel Schillaci </li>
-		<li>[<a href="https://sourceforge.net/tracker/?func=detail&amp;atid=543653&amp;aid=924620&amp;group_id=75348">SF
-			BUG-924620</a>] There was a problem when setting a name to an editor instance when
-			the name is used by another tag. For example when using &quot;description&quot;
-			as the name in a page with the &lt;META name=&quot;description&quot;&gt; tag. </li>
-		<li>[<a href="https://sourceforge.net/tracker/index.php?func=detail&amp;aid=935018&amp;group_id=75348&amp;atid=543653">SF
-			BUG-935018</a>] The &quot;buletted&quot; typo has been corrected. </li>
-		<li>[<a href="https://sourceforge.net/tracker/index.php?func=detail&amp;aid=902122&amp;group_id=75348&amp;atid=543653">SF
-			BUG-902122</a>] Wrong css and js file references have been corrected. </li>
-		<li>[<a href="https://sourceforge.net/tracker/index.php?func=detail&amp;aid=918942&amp;group_id=75348&amp;atid=543653">SF
-			BUG-918942</a>] All dialog boxes now accept Enter and Escape keys as Ok and Cancel
-			buttons.</li>
-	</ul>
-	<p>
-		* This version has been partially sponsored by <a href="http://www.genuitec.com/">Genuitec,
-			LLC</a>.</p>
-	<h3>
-		Version 1.5</h3>
-	<ul>
-		<li>[<a target="_blank" href="https://sourceforge.net/tracker/?func=detail&amp;atid=543656&amp;aid=913777&amp;group_id=75348">SF
-			Feature-913777</a>] <strong>New Form Commands</strong> are now available! Special
-			thanks to G.Meijer. </li>
-		<li>[<a target="_blank" href="https://sourceforge.net/tracker/index.php?func=detail&amp;aid=861149&amp;group_id=75348&amp;atid=543656">SF
-			Feature-861149</a>] <strong>Print Command</strong> is now available! </li>
-		<li>[<a target="_blank" href="https://sourceforge.net/tracker/?func=detail&amp;atid=543653&amp;aid=743546&amp;group_id=75348">SF
-			BUG-743546</a>] The <strong>XHTML content duplication problem </strong>has been
-			<strong>solved</strong> . Thanks to Paul Hutchison. </li>
-		<li>[<a target="_blank" href="https://sourceforge.net/tracker/?func=detail&amp;atid=543653&amp;aid=875853&amp;group_id=75348">SF
-			BUG-875853</a>] The <strong>image dialog box</strong> now gives precedence for width
-			and height values set as styles. In this way a user can change the size of the image
-			directly inside the editor and the changes will be reflected in the dialog box.
-		</li>
-		<li>[<a target="_blank" href="https://sourceforge.net/tracker/?func=detail&amp;atid=543656&amp;aid=913777&amp;group_id=75348">SF
-			Feature-788368</a>] The sample <strong>file upload </strong>manager for ASPX now
-			uses <strong>guids</strong> for the file name generation. In this way a support
-			XML file is not needed anymore. </li>
-		<li>It's possible now to <strong>programmatically change the Base Path</strong> of the
-			editor if it's installed in a directory different of &quot;/FCKeditor/&quot;. Something
-			like this:<br />
-			oFCKeditor.BasePath = '/FCKeditor/' ;<br />
-			Take a look at the _test directory for samples. </li>
-		<li>There was a little bug in the TAB feature that moved the insertion point if there
-			were any object (images, tables) in the content. It has been fixed. </li>
-		<li>The problem with <strong>accented and international characters</strong> on the PHP
-			test page was solved. </li>
-		<li>A new <strong>Chinese (Taiwan)</strong> language file is available. Thanks to Nil.
-		</li>
-		<li>A new <strong>Slovenian</strong> language file is available. Thanks to Pavel Rotar.
-		</li>
-		<li>A new <strong>Catalan</strong> language file is available. Thanks to Jordi Cerdan.
-		</li>
-		<li>A new <strong>Arabic</strong> language file is available. Thanks to Abdul-Aziz A.
-			Al-Oraij. </li>
-		<li>Small corrections on the <strong>Norwegian</strong> language file. </li>
-		<li>A Java version for the test results (testsubmit.jsp) is now available. Thanks to
-			Pritpal Dhaliwal. </li>
-		<li>When using JavaScript to create a editor instance it's possible now to easily get
-			the editor's value calling oFCKeditor.GetValue() (eg.). Better JavaScript API interfaces
-			will be available on version 2.0. </li>
-		<li>If <strong>XHTML</strong> is enabled the editor cleans the HTML before showing it
-			on the Source View, so the exact result can be viewed by the user. This option can
-			be activated setting config.EnableSourceXHTML = true in the fck_config.js file.
-		</li>
-		<li>The <strong>JS integration object</strong> now escapes all configuration settings,
-			in this way a user can use <strong>reserved chars</strong> on it. For example:
-			<br />
-			oFCKeditor.Config[&quot;ImageBrowserURL&quot;] = '/imgs/browse.asp?filter=abc*.jpg&amp;userid=1';
-		</li>
-		<li>A minimal browse server sample is now available in ASP. Thanks to Andreas Barnet.
-		</li>
-	</ul>
-	<h3>
-		Version 1.4</h3>
-	<ul>
-		<li><strong>ATTENTION: For PHP users</strong>: The editor was changed and now uses <strong>
-			htmlspecialchars</strong> instead of <strong>htmlentities</strong> when handling
-			the initial value. It should works well, but please make some tests before upgrading
-			definitively. If there is any problem just uncomment the line in the fckeditor.php
-			file (and send me a message!). </li>
-		<li>The editor is now integrated with <strong>ieSpell</strong> (<a href="http://www.iespell.com">http://www.iespell.com</a>)
-			for <strong>Spell Checking</strong>. You can configure the download URL in then
-			fck_config.js file. Thanks to Sanjay Sharma. (ieSpell is free for personal use but
-			must be paid for commercial use) </li>
-		<li><strong>Table</strong> and <strong>table cell</strong> dialogs has been changed.
-			Now you can <strong>select the class</strong> you want to be applied. Thanks to
-			Alexander Lezos. </li>
-		<li>[<a target="_blank" href="http://sourceforge.net/tracker/index.php?func=detail&amp;aid=865378&amp;group_id=75348&amp;atid=543656">SF
-			Feature-865378</a>]A new <strong>upload support is available for ASP</strong>. It
-			uses the /UserImages/ folder in the root of the web site as the files container
-			and a counter controlled by the upload.cnt file. Both must have write permissions
-			set to the IUSR_xxx user. Thanks to Trax and Juanjo. </li>
-		<li>[<a target="_blank" href="http://sourceforge.net/tracker/index.php?func=detail&amp;aid=798128&amp;group_id=75348&amp;atid=543655">SF
-			Patch-798128</a>] The user (programmer) can now define a <strong>custom separator</strong>
-			for the list items of a combo in the toolbar. Thanks to Wulff D. Heiss. </li>
-		<li>[<a target="_blank" href="http://sourceforge.net/tracker/index.php?func=detail&amp;aid=741963&amp;group_id=75348&amp;atid=543656">SF
-			Feature-741963</a>][<a target="_blank" href="http://sourceforge.net/tracker/index.php?func=detail&amp;aid=878941&amp;group_id=75348&amp;atid=543656">SF
-				Feature-878941</a>][<a target="_blank" href="http://sourceforge.net/tracker/index.php?func=detail&amp;aid=869389&amp;group_id=75348&amp;atid=543655">SF
-					Patch-869389</a>] A minimal support for a &ldquo;fake&rdquo; <strong>TAB is now available</strong>,
-			even if HTML has no support for TAB. Now when the user presses the TAB key a configurable
-			number of spaces (&amp;nbsp;) is added. Take a look at config.TabSpaces on the fck_config.js
-			file. No action is performed if it is set to zero. The default value is 4. Thanks
-			to Phil Hassey. </li>
-		<li>[<a target="_blank" href="http://sourceforge.net/tracker/index.php?func=detail&amp;aid=782779&amp;group_id=75348&amp;atid=543653">SF
-			BUG-782779</a>][<a target="_blank" href="http://sourceforge.net/tracker/index.php?func=detail&amp;aid=790939&amp;group_id=75348&amp;atid=543653">SF
-				BUG-790939</a>] The problem with big images has been corrected. Thanks to Raver.
-		</li>
-		<li>[<a target="_blank" href="https://sourceforge.net/tracker/?func=detail&amp;atid=543653&amp;aid=853374&amp;group_id=75348">SF
-			BUG-862975</a>] Now the editor does nothing if no image is selected in the image
-			dialog box and the OK button is hit. </li>
-		<li>[<a target="_blank" href="http://sourceforge.net/tracker/index.php?func=detail&amp;aid=851609&amp;group_id=75348&amp;atid=543653">SF
-			BUG-851609</a>] The problem with ASP and null values has been solved. </li>
-		<li><strong>Norwegean</strong> language pack. Thanks to Martin Kronstad. </li>
-		<li><strong>Hungarian</strong> language pack. Thanks to Bal&aacute;zs Szab&oacute;.
-		</li>
-		<li><strong>Bosnian</strong> language pack. Thanks to Trax. </li>
-		<li><strong>Japanese</strong> language pack. Thanks to Kato Yuichiro. </li>
-		<li>Updates on the <strong>Polish</strong> language pack. Thanks to Norbert Neubauer.
-		</li>
-		<li>The <strong>Chinese (Taiwan)</strong> (zh-tw) has been removed from the package
-			because it's corrupt. I'm sorry. I hope someone could send me a good version soon.
-		</li>
-	</ul>
-	<h3>
-		Version 1.3.1</h3>
-	<ul>
-		<li>It's now possible to configure the editor the insert a <strong>&lt;BR&gt; tag instead
-			of &lt;P&gt;</strong> when the user presses the <strong>&lt;Enter&gt;</strong> key.
-			Take a look at the fck_config.js configuration file for the &quot;<strong>UseBROnCarriageReturn</strong>&quot;
-			key. This option is disabled by default. </li>
-		<li><strong>Icelandic</strong> language pack. Thanks to Andri &Oacute;skarsson. </li>
-		<li>[<a href="https://sourceforge.net/tracker/?func=detail&amp;atid=543653&amp;aid=853374&amp;group_id=75348">SF
-			BUG-853374</a>] On IE 5.0 there was a little error introduced with version 1.3 on
-			initialization. It was corrected. </li>
-		<li>[<a href="https://sourceforge.net/tracker/?func=detail&amp;atid=543653&amp;aid=853372&amp;group_id=75348">SF
-			BUG-853372</a>] On IE 5.0 there was a little error introduced with version 1.3 when
-			setting the focus in the editor. It was corrected. </li>
-		<li>Minor errors on the language file for <strong>english</strong> has been corrected.
-			Thanks to Anders Madsen. </li>
-		<li>Minor errors on the language file for <strong>danish</strong> has been corrected.
-			Thanks to Martin Johansen. </li>
-	</ul>
-	<h3>
-		Version 1.3</h3>
-	<ul>
-		<li>Language support for <strong>Danish, Polish, Simple Chinese, Slovak, Swedish and
-			Turkish</strong>. </li>
-		<li>Language updates for <strong>Romanian</strong>. </li>
-		<li>It's now possible to <strong>override</strong> any of the <strong>editor's configurations</strong>
-			(for now it's implemented just for JavaScript, ASPX and HTC modules). See _test/test.html
-			for a sample. I'm now waiting for the Community for the ASP, CFM and PHP versions.
-		</li>
-		<li>A new method is available for <strong>PHP</strong> users. It's called <strong>ReturnFCKeditor</strong>.
-			It works exactly like CreateFCKeditor, but it <strong>returns a string with the HTML</strong>
-			for the editor instead of output it (echo). This feature is useful for people who
-			are working with Smarty Templates or something like that. Thanks to Timothy J. Finucane.
-		</li>
-		<li>Many people have had problems with <strong>international characters</strong> over
-			<strong>PHP</strong>. I had also the same problem. PHP have strange problems with
-			character encoding. The code hasn't been changed but just saved again with Western
-			European encoding. <strong>Now it works well</strong> in my system.<br />
-			Take a look also at the &quot;default_charset&quot; configuration option at the
-			php.ini file. It doesn't seem to be an editor's problem but a PHP issue. </li>
-		<li>The &quot;<strong>testsubmit.php</strong>&quot; file now strips the &quot;<strong>Magic
-			Quotes</strong> &quot; that are automatically added by PHP on form posts. </li>
-		<li>A <strong>new language</strong> integration module is available for <strong>ASP/Jscript</strong>.
-			Thanks to Dimiter Naydenov. </li>
-		<li><strong>New configuration</strong> options are available to <strong>customize the
-			Target</strong> combo box in the <strong>Insert/Modify Link</strong> dialog box.
-			Now you can hide it, or set which options are available in the combo box. Take a
-			look at the fck_config.js file. </li>
-		<li>The <strong>Text as Plain Text</strong> toolbar <strong>icon</strong> has been changed
-			<strong>to avoid confusion</strong> with the Normal Paste or. Thanks to Kaupo Kalda.
-		</li>
-		<li>The file <strong>dhtmled.cab has been removed</strong> from the package. It's not
-			needed to the editor to work and caused some confusion for a few users. </li>
-		<li>The <strong>editor's content</strong> now <strong>doesn't loose the focus</strong>
-			when the user clicks with the mouse in a toolbar button. </li>
-		<li>On <strong>drag-and-drop</strong> operations the data to be inserted in the editor
-			is now <strong>converted to plain text</strong> when the &quot;<strong>ForcePasteAsPlainText</strong>&quot;
-			configuration is set to <strong>true</strong>. </li>
-		<li>The <strong>image browser</strong> sample in PHP now <strong>sorts the files</strong>
-			by name. Thanks to Sergey Lupashko. </li>
-		<li>Two <strong>new configuration</strong> options are available to <strong>turn on/off
-			by default</strong> the &quot;<strong>Show Borders</strong>&quot; and &quot;<strong>Show
-				Details</strong>&quot; commands. </li>
-		<li>Some <strong>characters have been removed</strong> from the &quot;<strong>Insert
-			Special Chars</strong>&quot; dialog box because they were causing encoding problems
-			in some languages. Thanks to Abomb Hua. </li>
-		<li><strong>JSP</strong> versions of the <strong>image and file upload and browsing</strong>
-			features. Thanks to Simone Chiaretta.</li>
-	</ul>
-	<h3>
-		Version 1.2.4</h3>
-	<ul>
-		<li>Language support for <strong>Spanish, Finnish, Romanian and Korean</strong>. </li>
-		<li>Language updates for <strong>German</strong>. </li>
-		<li>New <strong>Zoom</strong> toolbar option. (<a href="https://sourceforge.net/forum/forum.php?thread_id=904116&amp;forum_id=257180">Thanks
-			to &quot;mtn_roadie&quot;</a>)</li>
-	</ul>
-	<h3>
-		Version 1.2.2</h3>
-	<ul>
-		<li>Language support for <strong>French</strong>. </li>
-		<li>[<a target="_blank" href="http://sourceforge.net/tracker/index.php?func=detail&amp;aid=782779&amp;group_id=75348&amp;atid=543653">SF
-			BUG-782779</a>] Version 1.2 introduced a bug on the image dialog window: when changing
-			the image, no update was done. This bug is now fixed. </li>
-	</ul>
-	<h3>
-		Version 1.2</h3>
-	<ul>
-		<li>Enhancements to the <strong>Word cleaning</strong> feature (Thanks to Karl von Randow).
-		</li>
-		<li>The <strong>Table dialog box</strong> now handles the Style width and height set
-			in the table (Thanks to Roberto Arruda). There where many problems on prior version
-			when people changed manually the table's size, dragging the size handles, and then
-			it was not possible to set a new size using the table dialog box. </li>
-		<li>For the <strong>Image dialog box:</strong>
-			<ul>
-				<li>No image is shown in the preview pane if no image has been set. </li>
-				<li>If no HSpace is set in the image a &quot;-1&quot; value was shown in the dialog
-					box. Now, nothing is shown if the value is negative. </li>
-			</ul>
-		</li>
-		<li>[<a target="_blank" href="https://sourceforge.net/tracker/index.php?func=detail&amp;aid=739630&amp;group_id=75348&amp;atid=543653">SF
-			BUG-739630</a>] Image with link lost the link when changing its properties. The
-			problem is solved. </li>
-		<li>Due to some problems in the XHTML cleaning (content duplication when the source
-			HTML is dirty and malformed), the <strong>XHTML support is turned off by default</strong>
-			from this version. You can still change this behavior and turn it on in the configuration
-			file. </li>
-		<li>Some little updates on the <strong>English </strong>language file. </li>
-		<li>A few addition of missing entries on all languages files (translations for these
-			changes are pending). </li>
-		<li>Language files has been added for the following languages:
-			<ul>
-				<li><strong>Brazilian Portuguese</strong> (pt-br) </li>
-				<li><strong>Czech</strong> (cz) </li>
-				<li><strong>Dutch</strong> (nl) </li>
-				<li><strong>Russian</strong> (ru) </li>
-				<li><strong>Chinese (Taiwan)</strong> (zh-tw) </li>
-				<li><strong>Greek</strong> (gr) </li>
-				<li><strong>German</strong> (de)</li>
-			</ul>
-		</li>
-	</ul>
-	<h3>
-		Version 1.1</h3>
-	<ul>
-		<li>The &quot;<strong>Multi Language</strong>&quot; system is now available. This version
-			ships with English and Italian versions completed. Other languages will be available
-			soon. The editor automatically detects the client language and sets all labels,
-			tooltips and dialog boxes to it, if available. The auto detection and the default
-			language can be set in the <strong>fck_config.file</strong>. </li>
-		<li>Two files can now be created to isolate customizations code from the original source
-			code of the editor: <strong>fckeditor.config.js</strong> and <strong>fckeditor.custom.js</strong>.
-			Create these files in the root folder of your web site, if needed. The first one
-			can be used to add or override configurations set on fck_config.js. The second one
-			is used for custom actions and behaviors. </li>
-		<li>A problem with relative links and images like &quot;/test/test.doc&quot; has been
-			solved. In prior versions, only with XHTML support enabled, the URL was changed
-			to something like &quot;http://www.mysite.xxx/test/test.doc&quot; (The domain was
-			automatically added). Now the XHTML cleaning procedure gets the URLs exactly how
-			they are defined in the editor&rsquo;s HTML. </li>
-		<li>[<a target="_blank" href="http://sourceforge.net/tracker/index.php?func=detail&amp;aid=742168&amp;group_id=75348&amp;atid=543653">SF
-			BUG-742168</a>] Mouse drag and drop from toolbar buttons has been disabled. </li>
-		<li>[<a target="_blank" href="http://sourceforge.net/tracker/index.php?func=detail&amp;aid=768210&amp;group_id=75348&amp;atid=543653">SF
-			BUG-768210</a>] HTML entities, like <strong>&amp;lt;</strong>, were not load correctly.
-			The problem is solved. </li>
-		<li>[<a target="_blank" href="http://sourceforge.net/tracker/index.php?func=detail&amp;aid=748812&amp;group_id=75348&amp;atid=543653">SF
-			BUG-748812</a>] The link dialog window doesn't open when the link button is grayed.
-		</li>
-	</ul>
-	<h3>
-		Version 1.0</h3>
-	<ul>
-		<li>Three new options are available in the configuration file to set what file types
-			are allowed / denied to be uploaded from the &quot;Insert Link&quot; and &quot;Insert
-			Image&quot; dialog boxes. </li>
-		<li>Upload options, for links and images, are automatically hidden on IE 5.0 browsers
-			(it's not compatible). </li>
-		<li>[SF BUG-734894] Fixed a problem on XHTML cleaning: the value on INPUT fields were
-			lost. </li>
-		<li>[SF BUG-713797] Fixed some image dialog errors when trying to set image properties
-			when no image is available. </li>
-		<li>[SF BUG-736414] Developed a workaround for a DHTML control bug when loading in the
-			editor some HTML started with &lt;p&gt;&lt;hr&gt;&lt;/p&gt;. </li>
-		<li>[SF BUG-737143] Paste from Word cleaning changed to solve some IE 5.0 errors. This
-			feature is still not available over IE 5.0. </li>
-		<li>[SF BUG-737233] CSS mappings are now OK on the PHP image browser module. </li>
-		<li>[SF BUG-737495] The image preview in the image dialog box is now working correctly.
-		</li>
-		<li>[SF BUG-737532] The editor automatically switches to WYSIWYG mode when the form
-			is posted. </li>
-		<li>[SF BUG-739571] The editor is now working well over Opera (as for Netscape, a TEXTAREA
-			is shown). </li>
-	</ul>
-	<h3>
-		Version 1.0 Final Candidate</h3>
-	<ul>
-		<li>A new dialog box for the &quot;Link&quot; command is available. Now you can upload
-			and browse the server exactly like the image dialog box. It's also possible to define
-			the link title and target window (_blank, _self, _parent and _top). As with the
-			image dialog box, a sample (and simple) file server browser is available. </li>
-		<li>A new configuration option is available to force every paste action to be handled
-			as plain text. See &quot;config.ForcePasteAsPlainText&quot; in fck_config.js. </li>
-		<li>A new Toolbar button is available: &quot;Paste from Word&quot;. It automatically
-			cleans the clipboard content before pasting (removesWord styles, classes, xml stuff,
-			etc...). This command is available for IE 5.5 and more. For IE 5.0 users, a message
-			is displayed advising that the text will not be cleaned before pasting. </li>
-		<li>The editor automatically detects Word clipboard data on pasting operations and asks
-			the user to clean it before pasting. This option is turned on by default but it
-			can be configured. See &quot;config.AutoDetectPasteFromWord&quot; in fck_config.js.
-		</li>
-		<li>Table properties are now available in cells' right click context menu. </li>
-		<li>It's now possible to edit cells advanced properties from it's right click context
-			menu. </li>
-	</ul>
-	<h3>
-		Version 1.0 Release Candidate 1 (RC1)</h3>
-	<ul>
-		<li>Some performance improvements. </li>
-		<li>The file dhtmled.cab has been added to the package for clients ho needs to install
-			the Microsoft DHTML Editor component. </li>
-		<li>[SF BUG-713952] The format command options are localized, so it depends on the IE
-			language to work. Until version 0.9.5 it was working only over English IE browsers.
-			Now the options are load dynamically on the client using the client's language.
-		</li>
-		<li>[SF BUG-712103] The style command is localized, so it depends on the IE language
-			to work. Until version 0.9.5 it was working only over English IE browsers. Now it
-			configures itself using the client's language. </li>
-		<li>[SF BUG-726137] On version 0.9.5, some commands (special chars, image, emoticons,
-			...) remove the next available character before inserting the required content even
-			if no selection was made in the editor. Now the editor replaces only the selected
-			content (if available). </li>
-	</ul>
-	<h3>
-		Version 0.9.5 beta</h3>
-	<ul>
-		<li>XHTML support is now available! It can be enabled/disabled in the fck_config.js
-			file. </li>
-		<li>&quot;Show Table Borders&quot; option: show borders for tables with borders size
-			set to zero. </li>
-		<li>&quot;Show Details&quot; option: show hidden elements (comments, scripts, paragraphs,
-			line breaks) </li>
-		<li>IE behavior integration module. Thanks to Daniel Shryock. </li>
-		<li>&quot;Find&quot; option: to find text in the document. </li>
-		<li>More performance enhancements. </li>
-		<li>New testsubmit.php file. Thansk to Jim Michaels. </li>
-		<li>Two initial PHP upload manager implementations (not working yet). Thanks to Frederic
-			Tyndiuk and Christian Liljedahl. </li>
-		<li>Initial PHP image browser implementation (not working yet). Thanks to Frederic Tyndiuk.
-		</li>
-		<li>Initial CFM upload manager implementation. Thanks to John Watson. </li>
-	</ul>
-	<h3>
-		Version 0.9.4 beta</h3>
-	<ul>
-		<li>ColdFusion module integration is now available! Thanks to John Watson. </li>
-		<li>&quot;Insert Smiley&quot; toolbar option! Thanks to Fredox. Take a look at fck_config.js
-			for configuration options. </li>
-		<li>&quot;Paste as plain text&quot; toolbar option! </li>
-		<li>Right click support for links (edit / remove). </li>
-		<li>Buttons now are shown in gray when disabled. </li>
-		<li>Buttons are shown just when the image is downloaded (no more &quot;red x&quot; while
-			waiting for it). </li>
-		<li>The toolbar background color can be set with a CSS style (see fck_editor.css). </li>
-		<li>Toolbar images have been reviewed:
-			<ul>
-				<li>Now they are transparent. </li>
-				<li>No more over...gif for every button (so the editor loads quicker). </li>
-				<li>Buttons states are controlled with CSS styles. (see fck_editor.css).</li>
-			</ul>
-		</li>
-		<li>Internet Explorer 5.0 compatibility, except for the image uploading popup. </li>
-		<li>Optimizations when loading the editor. </li>
-		<li>[SF BUG-709544] - Toolbar buttons wait for the images to be downloaded to start
-			watching and responding the user actions (turn buttons on/off when the user changes
-			position inside the editor). </li>
-		<li>JavaScript integration is now Object Oriented. CreateFCKeditor function is not available
-			anymore. Take a look in test.html. </li>
-		<li>Two new configuration options, ImageBrowser and ImageUpload, are available to turn
-			on and off the image upload and image browsing options in the Image dialog box.
-			This options can be hidden for a specific editor instance throw specific URL parameter
-			in the editor&rsquo;s IFRAME (upload=true/false&amp;browse=true/false). All specific
-			language integration modules handle this option. For sample see the _test directory.
-		</li>
-	</ul>
-</body>
-</html>

+ 0 - 223
main/inc/lib/fckeditor/editor/_source/classes/fckcontextmenu.js

@@ -1,223 +0,0 @@
-/*
- * FCKeditor - The text editor for Internet - http://www.fckeditor.net
- * Copyright (C) 2003-2010 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 ==
- *
- * FCKContextMenu Class: renders an control a context menu.
- */
-
-var FCKContextMenu = function( parentWindow, langDir )
-{
-	this.CtrlDisable = false ;
-
-	var oPanel = this._Panel = new FCKPanel( parentWindow ) ;
-	oPanel.AppendStyleSheet( FCKConfig.SkinEditorCSS ) ;
-	oPanel.IsContextMenu = true ;
-
-	// The FCKTools.DisableSelection doesn't seems to work to avoid dragging of the icons in Mozilla
-	// so we stop the start of the dragging
-	if ( FCKBrowserInfo.IsGecko )
-		oPanel.Document.addEventListener( 'draggesture', function(e) {e.preventDefault(); return false;}, true ) ;
-
-	var oMenuBlock = this._MenuBlock = new FCKMenuBlock() ;
-	oMenuBlock.Panel = oPanel ;
-	oMenuBlock.OnClick = FCKTools.CreateEventListener( FCKContextMenu_MenuBlock_OnClick, this ) ;
-
-	this._Redraw = true ;
-}
-
-
-FCKContextMenu.prototype.SetMouseClickWindow = function( mouseClickWindow )
-{
-	if ( !FCKBrowserInfo.IsIE )
-	{
-		this._Document = mouseClickWindow.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 ) ;
-	}
-}
-
-/**
- The customData parameter is just a value that will be send to the command that is executed,
- so it's possible to reuse the same command for several items just by assigning different data for each one.
-*/
-FCKContextMenu.prototype.AddItem = function( name, label, iconPathOrStripInfoArrayOrIndex, isDisabled, customData )
-{
-	var oItem = this._MenuBlock.AddItem( name, label, iconPathOrStripInfoArrayOrIndex, isDisabled, customData ) ;
-	this._Redraw = true ;
-	return oItem ;
-}
-
-FCKContextMenu.prototype.AddSeparator = function()
-{
-	this._MenuBlock.AddSeparator() ;
-	this._Redraw = true ;
-}
-
-FCKContextMenu.prototype.RemoveAllItems = function()
-{
-	this._MenuBlock.RemoveAllItems() ;
-	this._Redraw = true ;
-}
-
-FCKContextMenu.prototype.AttachToElement = function( element )
-{
-	if ( FCKBrowserInfo.IsIE )
-		FCKTools.AddEventListenerEx( element, 'contextmenu', FCKContextMenu_AttachedElement_OnContextMenu, this ) ;
-	else
-		element._FCKContextMenu = this ;
-}
-
-function FCKContextMenu_Document_OnContextMenu( e )
-{
-	if ( FCKConfig.BrowserContextMenu )
-		return true ;
-
-	var el = e.target ;
-
-	while ( el )
-	{
-		if ( el._FCKContextMenu )
-		{
-			if ( el._FCKContextMenu.CtrlDisable && ( e.ctrlKey || e.metaKey ) )
-				return true ;
-
-			FCKTools.CancelEvent( e ) ;
-			FCKContextMenu_AttachedElement_OnContextMenu( e, el._FCKContextMenu, el ) ;
-			return false ;
-		}
-		el = el.parentNode ;
-	}
-	return true ;
-}
-
-var FCKContextMenu_OverrideButton ;
-
-function FCKContextMenu_Document_OnMouseDown( e )
-{
-	if( !e || e.button != 2 )
-		return false ;
-
-	if ( FCKConfig.BrowserContextMenu )
-		return true ;
-
-	var el = e.target ;
-
-	while ( el )
-	{
-		if ( el._FCKContextMenu )
-		{
-			if ( el._FCKContextMenu.CtrlDisable && ( e.ctrlKey || e.metaKey ) )
-				return true ;
-
-			var overrideButton = FCKContextMenu_OverrideButton ;
-			if( !overrideButton )
-			{
-				var doc = FCKTools.GetElementDocument( e.target ) ;
-				overrideButton = FCKContextMenu_OverrideButton = doc.createElement('input') ;
-				overrideButton.type = 'button' ;
-				var buttonHolder = doc.createElement('p') ;
-				doc.body.appendChild( buttonHolder ) ;
-				buttonHolder.appendChild( overrideButton ) ;
-			}
-
-			overrideButton.style.cssText = 'position:absolute;top:' + ( e.clientY - 2 ) +
-				'px;left:' + ( e.clientX - 2 ) +
-				'px;width:5px;height:5px;opacity:0.01' ;
-		}
-		el = el.parentNode ;
-	}
-	return false ;
-}
-
-function FCKContextMenu_Document_OnMouseUp( e )
-{
-	if ( FCKConfig.BrowserContextMenu )
-		return true ;
-
-	var overrideButton = FCKContextMenu_OverrideButton ;
-
-	if ( overrideButton )
-	{
-		var parent = overrideButton.parentNode ;
-		parent.parentNode.removeChild( parent ) ;
-		FCKContextMenu_OverrideButton = undefined ;
-
-		if( e && e.button == 2 )
-		{
-			FCKContextMenu_Document_OnContextMenu( e ) ;
-			return false ;
-		}
-	}
-	return true ;
-}
-
-function FCKContextMenu_AttachedElement_OnContextMenu( ev, fckContextMenu, el )
-{
-	if ( ( fckContextMenu.CtrlDisable && ( ev.ctrlKey || ev.metaKey ) ) || FCKConfig.BrowserContextMenu )
-		return true ;
-
-	var eTarget = el || this ;
-
-	if ( fckContextMenu.OnBeforeOpen )
-		fckContextMenu.OnBeforeOpen.call( fckContextMenu, eTarget ) ;
-
-	if ( fckContextMenu._MenuBlock.Count() == 0 )
-		return false ;
-
-	if ( fckContextMenu._Redraw )
-	{
-		fckContextMenu._MenuBlock.Create( fckContextMenu._Panel.MainNode ) ;
-		fckContextMenu._Redraw = false ;
-	}
-
-	// This will avoid that the content of the context menu can be dragged in IE
-	// as the content of the panel is recreated we need to do it every time
-	FCKTools.DisableSelection( fckContextMenu._Panel.Document.body ) ;
-
-	var x = 0 ;
-	var y = 0 ;
-	if ( FCKBrowserInfo.IsIE )
-	{
-		x = ev.screenX ;
-		y = ev.screenY ;
-	}
-	else if ( FCKBrowserInfo.IsSafari )
-	{
-		x = ev.clientX ;
-		y = ev.clientY ;
-	}
-	else
-	{
-		x = ev.pageX ;
-		y = ev.pageY ;
-	}
-	fckContextMenu._Panel.Show( x, y, ev.currentTarget || null ) ;
-
-	return false ;
-}
-
-function FCKContextMenu_MenuBlock_OnClick( menuItem, contextMenu )
-{
-	contextMenu._Panel.Hide() ;
-	FCKTools.RunFunction( contextMenu.OnItemClick, contextMenu, menuItem ) ;
-}

+ 0 - 119
main/inc/lib/fckeditor/editor/_source/classes/fckdataprocessor.js

@@ -1,119 +0,0 @@
-/*
- * FCKeditor - The text editor for Internet - http://www.fckeditor.net
- * Copyright (C) 2003-2010 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 ==
- *
- * The Data Processor is responsible for transforming the input and output data
- * in the editor. For more info:
- * http://dev.fckeditor.net/wiki/Components/DataProcessor
- *
- * The default implementation offers the base XHTML compatibility features of
- * FCKeditor. Further Data Processors may be implemented for other purposes.
- *
- */
-
-var FCKDataProcessor = function()
-{}
-
-FCKDataProcessor.prototype =
-{
-	/*
-	 * Returns a string representing the HTML format of "data". The returned
-	 * value will be loaded in the editor.
-	 * The HTML must be from <html> to </html>, including <head>, <body> and
-	 * eventually the DOCTYPE.
-	 * Note: HTML comments may already be part of the data because of the
-	 * pre-processing made with ProtectedSource.
-	 *     @param {String} data The data to be converted in the
-	 *            DataProcessor specific format.
-	 */
-	ConvertToHtml : function( data )
-	{
-		// The default data processor must handle two different cases depending
-		// on the FullPage setting. Custom Data Processors will not be
-		// compatible with FullPage, much probably.
-		if ( FCKConfig.FullPage )
-		{
-			// Save the DOCTYPE.
-			FCK.DocTypeDeclaration = data.match( FCKRegexLib.DocTypeTag ) ;
-
-			// Check if the <body> tag is available.
-			if ( !FCKRegexLib.HasBodyTag.test( data ) )
-				data = '<body>' + data + '</body>' ;
-
-			// Check if the <html> tag is available.
-			if ( !FCKRegexLib.HtmlOpener.test( data ) )
-				data = '<html dir="' + FCKConfig.ContentLangDirection + '">' + data + '</html>' ;
-
-			// Check if the <head> tag is available.
-			if ( !FCKRegexLib.HeadOpener.test( data ) )
-				data = data.replace( FCKRegexLib.HtmlOpener, '$&<head><title></title></head>' ) ;
-
-			return data ;
-		}
-		else
-		{
-			var html =
-				FCKConfig.DocType +
-				'<html dir="' + FCKConfig.ContentLangDirection + '"' ;
-
-			// On IE, if you are using a DOCTYPE different of HTML 4 (like
-			// XHTML), you must force the vertical scroll to show, otherwise
-			// the horizontal one may appear when the page needs vertical scrolling.
-			// TODO : Check it with IE7 and make it IE6- if it is the case.
-			if ( FCKBrowserInfo.IsIE && FCKConfig.DocType.length > 0 && !FCKRegexLib.Html4DocType.test( FCKConfig.DocType ) )
-				html += ' style="overflow-y: scroll"' ;
-
-			html += '><head><title></title></head>' +
-				'<body' + FCKConfig.GetBodyAttributes() + '>' +
-				data +
-				'</body></html>' ;
-
-			return html ;
-		}
-	},
-
-	/*
-	 * Converts a DOM (sub-)tree to a string in the data format.
-	 *     @param {Object} rootNode The node that contains the DOM tree to be
-	 *            converted to the data format.
-	 *     @param {Boolean} excludeRoot Indicates that the root node must not
-	 *            be included in the conversion, only its children.
-	 *     @param {Boolean} format Indicates that the data must be formatted
-	 *            for human reading. Not all Data Processors may provide it.
-	 */
-	ConvertToDataFormat : function( rootNode, excludeRoot, ignoreIfEmptyParagraph, format )
-	{
-		var data = FCKXHtml.GetXHTML( rootNode, !excludeRoot, format ) ;
-
-		if ( ignoreIfEmptyParagraph && FCKRegexLib.EmptyOutParagraph.test( data ) )
-			return '' ;
-
-		return data ;
-	},
-
-	/*
-	 * Makes any necessary changes to a piece of HTML for insertion in the
-	 * editor selection position.
-	 *     @param {String} html The HTML to be fixed.
-	 */
-	FixHtml : function( html )
-	{
-		return html ;
-	}
-} ;

+ 0 - 53
main/inc/lib/fckeditor/editor/_source/classes/fckdocumentfragment_gecko.js

@@ -1,53 +0,0 @@
-/*
- * FCKeditor - The text editor for Internet - http://www.fckeditor.net
- * Copyright (C) 2003-2010 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 a generic Document Fragment object. It is not intended to provide
- * the W3C implementation, but is a way to fix the missing of a real Document
- * Fragment in IE (where document.createDocumentFragment() returns a normal
- * document instead), giving a standard interface for it.
- * (IE Implementation)
- */
-
-var FCKDocumentFragment = function( parentDocument, baseDocFrag )
-{
-	this.RootNode = baseDocFrag || parentDocument.createDocumentFragment() ;
-}
-
-FCKDocumentFragment.prototype =
-{
-
-	// Append the contents of this Document Fragment to another element.
-	AppendTo : function( targetNode )
-	{
-		targetNode.appendChild( this.RootNode ) ;
-	},
-
-	AppendHtml : function( html )
-	{
-		var eTmpDiv = this.RootNode.ownerDocument.createElement( 'div' ) ;
-		eTmpDiv.innerHTML = html ;
-		FCKDomTools.MoveChildren( eTmpDiv, this.RootNode ) ;
-	},
-
-	InsertAfterNode : function( existingNode )
-	{
-		FCKDomTools.InsertAfterNode( existingNode, this.RootNode ) ;
-	}
-}

+ 0 - 58
main/inc/lib/fckeditor/editor/_source/classes/fckdocumentfragment_ie.js

@@ -1,58 +0,0 @@
-/*
- * FCKeditor - The text editor for Internet - http://www.fckeditor.net
- * Copyright (C) 2003-2010 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 a generic Document Fragment object. It is not intended to provide
- * the W3C implementation, but is a way to fix the missing of a real Document
- * Fragment in IE (where document.createDocumentFragment() returns a normal
- * document instead), giving a standard interface for it.
- * (IE Implementation)
- */
-
-var FCKDocumentFragment = function( parentDocument )
-{
-	this._Document = parentDocument ;
-	this.RootNode = parentDocument.createElement( 'div' ) ;
-}
-
-// Append the contents of this Document Fragment to another node.
-FCKDocumentFragment.prototype =
-{
-
-	AppendTo : function( targetNode )
-	{
-		FCKDomTools.MoveChildren( this.RootNode, targetNode ) ;
-	},
-
-	AppendHtml : function( html )
-	{
-		var eTmpDiv = this._Document.createElement( 'div' ) ;
-		eTmpDiv.innerHTML = html ;
-		FCKDomTools.MoveChildren( eTmpDiv, this.RootNode ) ;
-	},
-
-	InsertAfterNode : function( existingNode )
-	{
-		var eRoot = this.RootNode ;
-		var eLast ;
-
-		while( ( eLast = eRoot.lastChild ) )
-			FCKDomTools.InsertAfterNode( existingNode, eRoot.removeChild( eLast ) ) ;
-	}
-} ;

+ 0 - 935
main/inc/lib/fckeditor/editor/_source/classes/fckdomrange.js

@@ -1,935 +0,0 @@
-/*
- * FCKeditor - The text editor for Internet - http://www.fckeditor.net
- * Copyright (C) 2003-2010 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 ==
- *
- * Class for working with a selection range, much like the W3C DOM Range, but
- * it is not intended to be an implementation of the W3C interface.
- */
-
-var FCKDomRange = function( sourceWindow )
-{
-	this.Window = sourceWindow ;
-	this._Cache = {} ;
-}
-
-FCKDomRange.prototype =
-{
-
-	_UpdateElementInfo : function()
-	{
-		var innerRange = this._Range ;
-
-		if ( !innerRange )
-			this.Release( true ) ;
-		else
-		{
-			// For text nodes, the node itself is the StartNode.
-			var eStart	= innerRange.startContainer ;
-
-			var oElementPath = new FCKElementPath( eStart ) ;
-			this.StartNode			= eStart.nodeType == 3 ? eStart : eStart.childNodes[ innerRange.startOffset ] ;
-			this.StartContainer		= eStart ;
-			this.StartBlock			= oElementPath.Block ;
-			this.StartBlockLimit	= oElementPath.BlockLimit ;
-
-			if ( innerRange.collapsed )
-			{
-				this.EndNode		= this.StartNode ;
-				this.EndContainer	= this.StartContainer ;
-				this.EndBlock		= this.StartBlock ;
-				this.EndBlockLimit	= this.StartBlockLimit ;
-			}
-			else
-			{
-				var eEnd	= innerRange.endContainer ;
-
-				if ( eStart != eEnd )
-					oElementPath = new FCKElementPath( eEnd ) ;
-
-				// The innerRange.endContainer[ innerRange.endOffset ] is not
-				// usually part of the range, but the marker for the range end. So,
-				// let's get the previous available node as the real end.
-				var eEndNode = eEnd ;
-				if ( innerRange.endOffset == 0 )
-				{
-					while ( eEndNode && !eEndNode.previousSibling )
-						eEndNode = eEndNode.parentNode ;
-
-					if ( eEndNode )
-						eEndNode = eEndNode.previousSibling ;
-				}
-				else if ( eEndNode.nodeType == 1 )
-					eEndNode = eEndNode.childNodes[ innerRange.endOffset - 1 ] ;
-
-				this.EndNode			= eEndNode ;
-				this.EndContainer		= eEnd ;
-				this.EndBlock			= oElementPath.Block ;
-				this.EndBlockLimit		= oElementPath.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 docFrag = this._Range.extractContents() ;
-			this._UpdateElementInfo() ;
-			return docFrag ;
-		}
-		return null ;
-	},
-
-	CheckIsCollapsed : function()
-	{
-		if ( this._Range )
-			return this._Range.collapsed ;
-
-		return false ;
-	},
-
-	Collapse : function( toStart )
-	{
-		if ( this._Range )
-			this._Range.collapse( toStart ) ;
-
-		this._UpdateElementInfo() ;
-	},
-
-	Clone : function()
-	{
-		var oClone = FCKTools.CloneObject( this ) ;
-
-		if ( this._Range )
-			oClone._Range = this._Range.cloneRange() ;
-
-		return oClone ;
-	},
-
-	MoveToNodeContents : function( targetNode )
-	{
-		if ( !this._Range )
-			this._Range = this.CreateRange() ;
-
-		this._Range.selectNodeContents( targetNode ) ;
-
-		this._UpdateElementInfo() ;
-	},
-
-	MoveToElementStart : function( targetElement )
-	{
-		this.SetStart(targetElement,1) ;
-		this.SetEnd(targetElement,1) ;
-	},
-
-	// Moves to the first editing point inside a element. For example, in a
-	// element tree like "<p><b><i></i></b> Text</p>", the start editing point
-	// is "<p><b><i>^</i></b> Text</p>" (inside <i>).
-	MoveToElementEditStart : function( targetElement )
-	{
-		var editableElement ;
-
-		while ( targetElement && targetElement.nodeType == 1 )
-		{
-			if ( FCKDomTools.CheckIsEditable( targetElement ) )
-				editableElement = targetElement ;
-			else if ( editableElement )
-				break ;		// If we already found an editable element, stop the loop.
-
-			targetElement = targetElement.firstChild ;
-		}
-
-		if ( editableElement )
-			this.MoveToElementStart( editableElement ) ;
-	},
-
-	InsertNode : function( node )
-	{
-		if ( this._Range )
-			this._Range.insertNode( node ) ;
-	},
-
-	CheckIsEmpty : function()
-	{
-		if ( this.CheckIsCollapsed() )
-			return true ;
-
-		// Inserts the contents of the range in a div tag.
-		var eToolDiv = this.Window.document.createElement( 'div' ) ;
-		this._Range.cloneContents().AppendTo( eToolDiv ) ;
-
-		FCKDomTools.TrimNode( eToolDiv ) ;
-
-		return ( eToolDiv.innerHTML.length == 0 ) ;
-	},
-
-	/**
-	 * Checks if the start boundary of the current range is "visually" (like a
-	 * selection caret) at the beginning of the block. It means that some
-	 * things could be brefore the range, like spaces or empty inline elements,
-	 * but it would still be considered at the beginning of the block.
-	 */
-	CheckStartOfBlock : function()
-	{
-		var cache = this._Cache ;
-		var bIsStartOfBlock = cache.IsStartOfBlock ;
-
-		if ( bIsStartOfBlock != undefined )
-			return bIsStartOfBlock ;
-
-		// Take the block reference.
-		var block = this.StartBlock || this.StartBlockLimit ;
-
-		var container	= this._Range.startContainer ;
-		var offset		= this._Range.startOffset ;
-		var currentNode ;
-
-		if ( offset > 0 )
-		{
-			// First, check the start container. If it is a text node, get the
-			// substring of the node value before the range offset.
-			if ( container.nodeType == 3 )
-			{
-				var textValue = container.nodeValue.substr( 0, offset ).Trim() ;
-
-				// If we have some text left in the container, we are not at
-				// the end for the block.
-				if ( textValue.length != 0 )
-					return cache.IsStartOfBlock = false ;
-			}
-			else
-				currentNode = container.childNodes[ offset - 1 ] ;
-		}
-
-		// We'll not have a currentNode if the container was a text node, or
-		// the offset is zero.
-		if ( !currentNode )
-			currentNode = FCKDomTools.GetPreviousSourceNode( container, true, null, block ) ;
-
-		while ( currentNode )
-		{
-			switch ( currentNode.nodeType )
-			{
-				case 1 :
-					// It's not an inline element.
-					if ( !FCKListsLib.InlineChildReqElements[ currentNode.nodeName.toLowerCase() ] )
-						return cache.IsStartOfBlock = false ;
-
-					break ;
-
-				case 3 :
-					// It's a text node with real text.
-					if ( currentNode.nodeValue.Trim().length > 0 )
-						return cache.IsStartOfBlock = false ;
-			}
-
-			currentNode = FCKDomTools.GetPreviousSourceNode( currentNode, false, null, block ) ;
-		}
-
-		return cache.IsStartOfBlock = true ;
-	},
-
-	/**
-	 * Checks if the end boundary of the current range is "visually" (like a
-	 * selection caret) at the end of the block. It means that some things
-	 * could be after the range, like spaces, empty inline elements, or a
-	 * single <br>, but it would still be considered at the end of the block.
-	 */
-	CheckEndOfBlock : function( refreshSelection )
-	{
-		var isEndOfBlock = this._Cache.IsEndOfBlock ;
-
-		if ( isEndOfBlock != undefined )
-			return isEndOfBlock ;
-
-		// Take the block reference.
-		var block = this.EndBlock || this.EndBlockLimit ;
-
-		var container	= this._Range.endContainer ;
-		var offset			= this._Range.endOffset ;
-		var currentNode ;
-
-		// First, check the end container. If it is a text node, get the
-		// substring of the node value after the range offset.
-		if ( container.nodeType == 3 )
-		{
-			var textValue = container.nodeValue ;
-			if ( offset < textValue.length )
-			{
-				textValue = textValue.substr( offset ) ;
-
-				// If we have some text left in the container, we are not at
-				// the end for the block.
-				if ( textValue.Trim().length != 0 )
-					return this._Cache.IsEndOfBlock = false ;
-			}
-		}
-		else
-			currentNode = container.childNodes[ offset ] ;
-
-		// We'll not have a currentNode if the container was a text node, of
-		// the offset is out the container children limits (after it probably).
-		if ( !currentNode )
-			currentNode = FCKDomTools.GetNextSourceNode( container, true, null, block ) ;
-
-		var hadBr = false ;
-
-		while ( currentNode )
-		{
-			switch ( currentNode.nodeType )
-			{
-				case 1 :
-					var nodeName = currentNode.nodeName.toLowerCase() ;
-
-					// It's an inline element.
-					if ( FCKListsLib.InlineChildReqElements[ nodeName ] )
-						break ;
-
-					// It is the first <br> found.
-					if ( nodeName == 'br' && !hadBr )
-					{
-						hadBr = true ;
-						break ;
-					}
-
-					return this._Cache.IsEndOfBlock = false ;
-
-				case 3 :
-					// It's a text node with real text.
-					if ( currentNode.nodeValue.Trim().length > 0 )
-						return this._Cache.IsEndOfBlock = false ;
-			}
-
-			currentNode = FCKDomTools.GetNextSourceNode( currentNode, false, null, block ) ;
-		}
-
-		if ( refreshSelection )
-			this.Select() ;
-
-		return this._Cache.IsEndOfBlock = true ;
-	},
-
-	// This is an "intrusive" way to create a bookmark. It includes <span> tags
-	// in the range boundaries. The advantage of it is that it is possible to
-	// handle DOM mutations when moving back to the bookmark.
-	// Attention: the inclusion of nodes in the DOM is a design choice and
-	// should not be changed as there are other points in the code that may be
-	// using those nodes to perform operations. See GetBookmarkNode.
-	// For performance, includeNodes=true if intended to SelectBookmark.
-	CreateBookmark : function( includeNodes )
-	{
-		// Create the bookmark info (random IDs).
-		var oBookmark =
-		{
-			StartId	: (new Date()).valueOf() + Math.floor(Math.random()*1000) + 'S',
-			EndId	: (new Date()).valueOf() + Math.floor(Math.random()*1000) + 'E'
-		} ;
-
-		var oDoc = this.Window.document ;
-		var eStartSpan ;
-		var eEndSpan ;
-		var oClone ;
-
-		// For collapsed ranges, add just the start marker.
-		if ( !this.CheckIsCollapsed() )
-		{
-			eEndSpan = oDoc.createElement( 'span' ) ;
-			eEndSpan.style.display = 'none' ;
-			eEndSpan.id = oBookmark.EndId ;
-			eEndSpan.setAttribute( '_fck_bookmark', true ) ;
-
-			// For IE, it must have something inside, otherwise it may be
-			// removed during DOM operations.
-//			if ( FCKBrowserInfo.IsIE )
-				eEndSpan.innerHTML = '&nbsp;' ;
-
-			oClone = this.Clone() ;
-			oClone.Collapse( false ) ;
-			oClone.InsertNode( eEndSpan ) ;
-		}
-
-		eStartSpan = oDoc.createElement( 'span' ) ;
-		eStartSpan.style.display = 'none' ;
-		eStartSpan.id = oBookmark.StartId ;
-		eStartSpan.setAttribute( '_fck_bookmark', true ) ;
-
-		// For IE, it must have something inside, otherwise it may be removed
-		// during DOM operations.
-//		if ( FCKBrowserInfo.IsIE )
-			eStartSpan.innerHTML = '&nbsp;' ;
-
-		oClone = this.Clone() ;
-		oClone.Collapse( true ) ;
-		oClone.InsertNode( eStartSpan ) ;
-
-		if ( includeNodes )
-		{
-			oBookmark.StartNode = eStartSpan ;
-			oBookmark.EndNode = eEndSpan ;
-		}
-
-		// Update the range position.
-		if ( eEndSpan )
-		{
-			this.SetStart( eStartSpan, 4 ) ;
-			this.SetEnd( eEndSpan, 3 ) ;
-		}
-		else
-			this.MoveToPosition( eStartSpan, 4 ) ;
-
-		return oBookmark ;
-	},
-
-	// This one should be a part of a hypothetic "bookmark" object.
-	GetBookmarkNode : function( bookmark, start )
-	{
-		var doc = this.Window.document ;
-
-		if ( start )
-			return bookmark.StartNode || doc.getElementById( bookmark.StartId ) ;
-		else
-			return bookmark.EndNode || doc.getElementById( bookmark.EndId ) ;
-	},
-
-	MoveToBookmark : function( bookmark, preserveBookmark )
-	{
-		var eStartSpan	= this.GetBookmarkNode( bookmark, true ) ;
-		var eEndSpan	= this.GetBookmarkNode( bookmark, false ) ;
-
-		this.SetStart( eStartSpan, 3 ) ;
-
-		if ( !preserveBookmark )
-			FCKDomTools.RemoveNode( eStartSpan ) ;
-
-		// If collapsed, the end span will not be available.
-		if ( eEndSpan )
-		{
-			this.SetEnd( eEndSpan, 3 ) ;
-
-			if ( !preserveBookmark )
-				FCKDomTools.RemoveNode( eEndSpan ) ;
-		}
-		else
-			this.Collapse( true ) ;
-
-		this._UpdateElementInfo() ;
-	},
-
-	// Non-intrusive bookmark algorithm
-	CreateBookmark2 : function()
-	{
-		// If there is no range then get out of here.
-		// It happens on initial load in Safari #962 and if the editor it's hidden also in Firefox
-		if ( ! this._Range )
-			return { "Start" : 0, "End" : 0 } ;
-
-		// First, we record down the offset values
-		var bookmark =
-		{
-			"Start" : [ this._Range.startOffset ],
-			"End" : [ this._Range.endOffset ]
-		} ;
-		// Since we're treating the document tree as normalized, we need to backtrack the text lengths
-		// of previous text nodes into the offset value.
-		var curStart = this._Range.startContainer.previousSibling ;
-		var curEnd = this._Range.endContainer.previousSibling ;
-
-		// Also note that the node that we use for "address base" would change during backtracking.
-		var addrStart = this._Range.startContainer ;
-		var addrEnd = this._Range.endContainer ;
-		while ( curStart && curStart.nodeType == 3 && addrStart.nodeType == 3 )
-		{
-			bookmark.Start[0] += curStart.length ;
-			addrStart = curStart ;
-			curStart = curStart.previousSibling ;
-		}
-		while ( curEnd && curEnd.nodeType == 3 && addrEnd.nodeType == 3 )
-		{
-			bookmark.End[0] += curEnd.length ;
-			addrEnd = curEnd ;
-			curEnd = curEnd.previousSibling ;
-		}
-
-		// If the object pointed to by the startOffset and endOffset are text nodes, we need
-		// to backtrack and add in the text offset to the bookmark addresses.
-		if ( addrStart.nodeType == 1 && addrStart.childNodes[bookmark.Start[0]] && addrStart.childNodes[bookmark.Start[0]].nodeType == 3 )
-		{
-			var curNode = addrStart.childNodes[bookmark.Start[0]] ;
-			var offset = 0 ;
-			while ( curNode.previousSibling && curNode.previousSibling.nodeType == 3 )
-			{
-				curNode = curNode.previousSibling ;
-				offset += curNode.length ;
-			}
-			addrStart = curNode ;
-			bookmark.Start[0] = offset ;
-		}
-		if ( addrEnd.nodeType == 1 && addrEnd.childNodes[bookmark.End[0]] && addrEnd.childNodes[bookmark.End[0]].nodeType == 3 )
-		{
-			var curNode = addrEnd.childNodes[bookmark.End[0]] ;
-			var offset = 0 ;
-			while ( curNode.previousSibling && curNode.previousSibling.nodeType == 3 )
-			{
-				curNode = curNode.previousSibling ;
-				offset += curNode.length ;
-			}
-			addrEnd = curNode ;
-			bookmark.End[0] = offset ;
-		}
-
-		// Then, we record down the precise position of the container nodes
-		// by walking up the DOM tree and counting their childNode index
-		bookmark.Start = FCKDomTools.GetNodeAddress( addrStart, true ).concat( bookmark.Start ) ;
-		bookmark.End = FCKDomTools.GetNodeAddress( addrEnd, true ).concat( bookmark.End ) ;
-		return bookmark;
-	},
-
-	MoveToBookmark2 : function( bookmark )
-	{
-		// Reverse the childNode counting algorithm in CreateBookmark2()
-		var curStart = FCKDomTools.GetNodeFromAddress( this.Window.document, bookmark.Start.slice( 0, -1 ), true ) ;
-		var curEnd = FCKDomTools.GetNodeFromAddress( this.Window.document, bookmark.End.slice( 0, -1 ), true ) ;
-
-		// Generate the W3C Range object and update relevant data
-		this.Release( true ) ;
-		this._Range = new FCKW3CRange( this.Window.document ) ;
-		var startOffset = bookmark.Start[ bookmark.Start.length - 1 ] ;
-		var endOffset = bookmark.End[ bookmark.End.length - 1 ] ;
-		while ( curStart.nodeType == 3 && startOffset > curStart.length )
-		{
-			if ( ! curStart.nextSibling || curStart.nextSibling.nodeType != 3 )
-				break ;
-			startOffset -= curStart.length ;
-			curStart = curStart.nextSibling ;
-		}
-		while ( curEnd.nodeType == 3 && endOffset > curEnd.length )
-		{
-			if ( ! curEnd.nextSibling || curEnd.nextSibling.nodeType != 3 )
-				break ;
-			endOffset -= curEnd.length ;
-			curEnd = curEnd.nextSibling ;
-		}
-		this._Range.setStart( curStart, startOffset ) ;
-		this._Range.setEnd( curEnd, endOffset ) ;
-		this._UpdateElementInfo() ;
-	},
-
-	MoveToPosition : function( targetElement, position )
-	{
-		this.SetStart( targetElement, position ) ;
-		this.Collapse( true ) ;
-	},
-
-	/*
-	 * Moves the position of the start boundary of the range to a specific position
-	 * relatively to a element.
-	 *		@position:
-	 *			1 = After Start		<target>^contents</target>
-	 *			2 = Before End		<target>contents^</target>
-	 *			3 = Before Start	^<target>contents</target>
-	 *			4 = After End		<target>contents</target>^
-	 */
-	SetStart : function( targetElement, position, noInfoUpdate )
-	{
-		var oRange = this._Range ;
-		if ( !oRange )
-			oRange = this._Range = this.CreateRange() ;
-
-		switch( position )
-		{
-			case 1 :		// After Start		<target>^contents</target>
-				oRange.setStart( targetElement, 0 ) ;
-				break ;
-
-			case 2 :		// Before End		<target>contents^</target>
-				oRange.setStart( targetElement, targetElement.childNodes.length ) ;
-				break ;
-
-			case 3 :		// Before Start		^<target>contents</target>
-				oRange.setStartBefore( targetElement ) ;
-				break ;
-
-			case 4 :		// After End		<target>contents</target>^
-				oRange.setStartAfter( targetElement ) ;
-		}
-
-		if ( !noInfoUpdate )
-			this._UpdateElementInfo() ;
-	},
-
-	/*
-	 * Moves the position of the start boundary of the range to a specific position
-	 * relatively to a element.
-	 *		@position:
-	 *			1 = After Start		<target>^contents</target>
-	 *			2 = Before End		<target>contents^</target>
-	 *			3 = Before Start	^<target>contents</target>
-	 *			4 = After End		<target>contents</target>^
-	 */
-	SetEnd : function( targetElement, position, noInfoUpdate )
-	{
-		var oRange = this._Range ;
-		if ( !oRange )
-			oRange = this._Range = this.CreateRange() ;
-
-		switch( position )
-		{
-			case 1 :		// After Start		<target>^contents</target>
-				oRange.setEnd( targetElement, 0 ) ;
-				break ;
-
-			case 2 :		// Before End		<target>contents^</target>
-				oRange.setEnd( targetElement, targetElement.childNodes.length ) ;
-				break ;
-
-			case 3 :		// Before Start		^<target>contents</target>
-				oRange.setEndBefore( targetElement ) ;
-				break ;
-
-			case 4 :		// After End		<target>contents</target>^
-				oRange.setEndAfter( targetElement ) ;
-		}
-
-		if ( !noInfoUpdate )
-			this._UpdateElementInfo() ;
-	},
-
-	Expand : function( unit )
-	{
-		var oNode, oSibling ;
-
-		switch ( unit )
-		{
-			// Expand the range to include all inline parent elements if we are
-			// are in their boundary limits.
-			// For example (where [ ] are the range limits):
-			//	Before =>		Some <b>[<i>Some sample text]</i></b>.
-			//	After =>		Some [<b><i>Some sample text</i></b>].
-			case 'inline_elements' :
-				// Expand the start boundary.
-				if ( this._Range.startOffset == 0 )
-				{
-					oNode = this._Range.startContainer ;
-
-					if ( oNode.nodeType != 1 )
-						oNode = oNode.previousSibling ? null : oNode.parentNode ;
-
-					if ( oNode )
-					{
-						while ( FCKListsLib.InlineNonEmptyElements[ oNode.nodeName.toLowerCase() ] )
-						{
-							this._Range.setStartBefore( oNode ) ;
-
-							if ( oNode != oNode.parentNode.firstChild )
-								break ;
-
-							oNode = oNode.parentNode ;
-						}
-					}
-				}
-
-				// Expand the end boundary.
-				oNode = this._Range.endContainer ;
-				var offset = this._Range.endOffset ;
-
-				if ( ( oNode.nodeType == 3 && offset >= oNode.nodeValue.length ) || ( oNode.nodeType == 1 && offset >= oNode.childNodes.length ) || ( oNode.nodeType != 1 && oNode.nodeType != 3 ) )
-				{
-					if ( oNode.nodeType != 1 )
-						oNode = oNode.nextSibling ? null : oNode.parentNode ;
-
-					if ( oNode )
-					{
-						while ( FCKListsLib.InlineNonEmptyElements[ oNode.nodeName.toLowerCase() ] )
-						{
-							this._Range.setEndAfter( oNode ) ;
-
-							if ( oNode != oNode.parentNode.lastChild )
-								break ;
-
-							oNode = oNode.parentNode ;
-						}
-					}
-				}
-
-				break ;
-
-			case 'block_contents' :
-			case 'list_contents' :
-				var boundarySet = FCKListsLib.BlockBoundaries ;
-				if ( unit == 'list_contents' || FCKConfig.EnterMode == 'br' )
-					boundarySet = FCKListsLib.ListBoundaries ;
-
-				if ( this.StartBlock && FCKConfig.EnterMode != 'br' && unit == 'block_contents' )
-					this.SetStart( this.StartBlock, 1 ) ;
-				else
-				{
-					// Get the start node for the current range.
-					oNode = this._Range.startContainer ;
-
-					// If it is an element, get the node right before of it (in source order).
-					if ( oNode.nodeType == 1 )
-					{
-						var lastNode = oNode.childNodes[ this._Range.startOffset ] ;
-						if ( lastNode )
-							oNode = FCKDomTools.GetPreviousSourceNode( lastNode, true ) ;
-						else
-							oNode = oNode.lastChild || oNode ;
-					}
-
-					// We must look for the left boundary, relative to the range
-					// start, which is limited by a block element.
-					while ( oNode
-							&& ( oNode.nodeType != 1
-								|| ( oNode != this.StartBlockLimit
-									&& !boundarySet[ oNode.nodeName.toLowerCase() ] ) ) )
-					{
-						this._Range.setStartBefore( oNode ) ;
-						oNode = oNode.previousSibling || oNode.parentNode ;
-					}
-				}
-
-				if ( this.EndBlock && FCKConfig.EnterMode != 'br' && unit == 'block_contents' && this.EndBlock.nodeName.toLowerCase() != 'li' )
-					this.SetEnd( this.EndBlock, 2 ) ;
-				else
-				{
-					oNode = this._Range.endContainer ;
-					if ( oNode.nodeType == 1 )
-						oNode = oNode.childNodes[ this._Range.endOffset ] || oNode.lastChild ;
-
-					// We must look for the right boundary, relative to the range
-					// end, which is limited by a block element.
-					while ( oNode
-							&& ( oNode.nodeType != 1
-								|| ( oNode != this.StartBlockLimit
-									&& !boundarySet[ oNode.nodeName.toLowerCase() ] ) ) )
-					{
-						this._Range.setEndAfter( oNode ) ;
-						oNode = oNode.nextSibling || oNode.parentNode ;
-					}
-
-					// In EnterMode='br', the end <br> boundary element must
-					// be included in the expanded range.
-					if ( oNode && oNode.nodeName.toLowerCase() == 'br' )
-						this._Range.setEndAfter( oNode ) ;
-				}
-
-				this._UpdateElementInfo() ;
-		}
-	},
-
-	/**
-	 * Split the block element for the current range. It deletes the contents
-	 * of the range and splits the block in the collapsed position, resulting
-	 * in two sucessive blocks. The range is then positioned in the middle of
-	 * them.
-	 *
-	 * It returns and object with the following properties:
-	 *		- PreviousBlock	: a reference to the block element that preceeds
-	 *		  the range after the split.
-	 *		- NextBlock : a reference to the block element that follows the
-	 *		  range after the split.
-	 *		- WasStartOfBlock : a boolean indicating that the range was
-	 *		  originaly at the start of the block.
-	 *		- WasEndOfBlock : a boolean indicating that the range was originaly
-	 *		  at the end of the block.
-	 *
-	 * If the range was originaly at the start of the block, no split will happen
-	 * and the PreviousBlock value will be null. The same is valid for the
-	 * NextBlock value if the range was at the end of the block.
-	 */
-	SplitBlock : function( forceBlockTag )
-	{
-		var blockTag = forceBlockTag || FCKConfig.EnterMode ;
-
-		if ( !this._Range )
-			this.MoveToSelection() ;
-
-		// The range boundaries must be in the same "block limit" element.
-		if ( this.StartBlockLimit == this.EndBlockLimit )
-		{
-			// Get the current blocks.
-			var eStartBlock		= this.StartBlock ;
-			var eEndBlock		= this.EndBlock ;
-			var oElementPath	= null ;
-
-			if ( blockTag != 'br' )
-			{
-				if ( !eStartBlock )
-				{
-					eStartBlock = this.FixBlock( true, blockTag ) ;
-					eEndBlock	= this.EndBlock ;	// FixBlock may have fixed the EndBlock too.
-				}
-
-				if ( !eEndBlock )
-					eEndBlock = this.FixBlock( false, blockTag ) ;
-			}
-
-			// Get the range position.
-			var bIsStartOfBlock	= ( eStartBlock != null && this.CheckStartOfBlock() ) ;
-			var bIsEndOfBlock	= ( eEndBlock != null && this.CheckEndOfBlock() ) ;
-
-			// Delete the current contents.
-			if ( !this.CheckIsEmpty() )
-				this.DeleteContents() ;
-
-			if ( eStartBlock && eEndBlock && eStartBlock == eEndBlock )
-			{
-				if ( bIsEndOfBlock )
-				{
-					oElementPath = new FCKElementPath( this.StartContainer ) ;
-					this.MoveToPosition( eEndBlock, 4 ) ;
-					eEndBlock = null ;
-				}
-				else if ( bIsStartOfBlock )
-				{
-					oElementPath = new FCKElementPath( this.StartContainer ) ;
-					this.MoveToPosition( eStartBlock, 3 ) ;
-					eStartBlock = null ;
-				}
-				else
-				{
-					// Extract the contents of the block from the selection point to the end of its contents.
-					this.SetEnd( eStartBlock, 2 ) ;
-					var eDocFrag = this.ExtractContents() ;
-
-					// Duplicate the block element after it.
-					eEndBlock = eStartBlock.cloneNode( false ) ;
-					eEndBlock.removeAttribute( 'id', false ) ;
-
-					// Place the extracted contents in the duplicated block.
-					eDocFrag.AppendTo( eEndBlock ) ;
-
-					FCKDomTools.InsertAfterNode( eStartBlock, eEndBlock ) ;
-
-					this.MoveToPosition( eStartBlock, 4 ) ;
-
-					// In Gecko, the last child node must be a bogus <br>.
-					// Note: bogus <br> added under <ul> or <ol> would cause lists to be incorrectly rendered.
-					if ( FCKBrowserInfo.IsGecko &&
-							! eStartBlock.nodeName.IEquals( ['ul', 'ol'] ) )
-						FCKTools.AppendBogusBr( eStartBlock ) ;
-				}
-			}
-
-			return {
-				PreviousBlock	: eStartBlock,
-				NextBlock		: eEndBlock,
-				WasStartOfBlock : bIsStartOfBlock,
-				WasEndOfBlock	: bIsEndOfBlock,
-				ElementPath		: oElementPath
-			} ;
-		}
-
-		return null ;
-	},
-
-	// Transform a block without a block tag in a valid block (orphan text in the body or td, usually).
-	FixBlock : function( isStart, blockTag )
-	{
-		// Bookmark the range so we can restore it later.
-		var oBookmark = this.CreateBookmark() ;
-
-		// Collapse the range to the requested ending boundary.
-		this.Collapse( isStart ) ;
-
-		// Expands it to the block contents.
-		this.Expand( 'block_contents' ) ;
-
-		// Create the fixed block.
-		var oFixedBlock = this.Window.document.createElement( blockTag ) ;
-
-		// Move the contents of the temporary range to the fixed block.
-		this.ExtractContents().AppendTo( oFixedBlock ) ;
-		FCKDomTools.TrimNode( oFixedBlock ) ;
-
-		// If the fixed block is empty (not counting bookmark nodes)
-		// Add a <br /> inside to expand it.
-		if ( FCKDomTools.CheckIsEmptyElement(oFixedBlock, function( element ) { return element.getAttribute('_fck_bookmark') != 'true' ; } )
-				&& FCKBrowserInfo.IsGeckoLike )
-				FCKTools.AppendBogusBr( oFixedBlock ) ;
-
-		// Insert the fixed block into the DOM.
-		this.InsertNode( oFixedBlock ) ;
-
-		// Move the range back to the bookmarked place.
-		this.MoveToBookmark( oBookmark ) ;
-
-		return oFixedBlock ;
-	},
-
-	Release : function( preserveWindow )
-	{
-		if ( !preserveWindow )
-			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 range = this._Range ;
-		var container = range.startContainer ;
-
-		if ( range.collapsed || container.nodeType != 1 )
-			return container ;
-
-		return container.childNodes[ range.startOffset ] || container ;
-	},
-
-	GetTouchedEndNode : function()
-	{
-		var range = this._Range ;
-		var container = range.endContainer ;
-
-		if ( range.collapsed || container.nodeType != 1 )
-			return container ;
-
-		return container.childNodes[ range.endOffset - 1 ] || container ;
-	}
-} ;

+ 0 - 104
main/inc/lib/fckeditor/editor/_source/classes/fckdomrange_gecko.js

@@ -1,104 +0,0 @@
-/*
- * FCKeditor - The text editor for Internet - http://www.fckeditor.net
- * Copyright (C) 2003-2010 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 ==
- *
- * Class for working with a selection range, much like the W3C DOM Range, but
- * it is not intended to be an implementation of the W3C interface.
- * (Gecko Implementation)
- */
-
-FCKDomRange.prototype.MoveToSelection = function()
-{
-	this.Release( true ) ;
-
-	var oSel = this.Window.getSelection() ;
-
-	if ( oSel && oSel.rangeCount > 0 )
-	{
-		this._Range = FCKW3CRange.CreateFromRange( this.Window.document, oSel.getRangeAt(0) ) ;
-		this._UpdateElementInfo() ;
-	}
-	else
-		if ( this.Window.document )
-			this.MoveToElementStart( this.Window.document.body ) ;
-}
-
-FCKDomRange.prototype.Select = function()
-{
-	var oRange = this._Range ;
-	if ( oRange )
-	{
-		var startContainer = oRange.startContainer ;
-
-		// If we have a collapsed range, inside an empty element, we must add
-		// something to it, otherwise the caret will not be visible.
-		if ( oRange.collapsed && startContainer.nodeType == 1 && startContainer.childNodes.length == 0 )
-			startContainer.appendChild( oRange._Document.createTextNode('') ) ;
-
-		var oDocRange = this.Window.document.createRange() ;
-		oDocRange.setStart( startContainer, oRange.startOffset ) ;
-
-		try
-		{
-			oDocRange.setEnd( oRange.endContainer, oRange.endOffset ) ;
-		}
-		catch ( e )
-		{
-			// There is a bug in Firefox implementation (it would be too easy
-			// otherwise). The new start can't be after the end (W3C says it can).
-			// So, let's create a new range and collapse it to the desired point.
-			if ( e.toString().Contains( 'NS_ERROR_ILLEGAL_VALUE' ) )
-			{
-				oRange.collapse( true ) ;
-				oDocRange.setEnd( oRange.endContainer, oRange.endOffset ) ;
-			}
-			else
-				throw( e ) ;
-		}
-
-		var oSel = this.Window.getSelection() ;
-		oSel.removeAllRanges() ;
-
-		// We must add a clone otherwise Firefox will have rendering issues.
-		oSel.addRange( oDocRange ) ;
-	}
-}
-
-// Not compatible with bookmark created with CreateBookmark2.
-// The bookmark nodes will be deleted from the document.
-FCKDomRange.prototype.SelectBookmark = function( bookmark )
-{
-	var domRange = this.Window.document.createRange() ;
-
-	var startNode	= this.GetBookmarkNode( bookmark, true ) ;
-	var endNode		= this.GetBookmarkNode( bookmark, false ) ;
-
-	domRange.setStart( startNode.parentNode, FCKDomTools.GetIndexOf( startNode ) ) ;
-	FCKDomTools.RemoveNode( startNode ) ;
-
-	if ( endNode )
-	{
-		domRange.setEnd( endNode.parentNode, FCKDomTools.GetIndexOf( endNode ) ) ;
-		FCKDomTools.RemoveNode( endNode ) ;
-	}
-
-	var selection = this.Window.getSelection() ;
-	selection.removeAllRanges() ;
-	selection.addRange( domRange ) ;
-}

+ 0 - 199
main/inc/lib/fckeditor/editor/_source/classes/fckdomrange_ie.js

@@ -1,199 +0,0 @@
-/*
- * FCKeditor - The text editor for Internet - http://www.fckeditor.net
- * Copyright (C) 2003-2010 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 ==
- *
- * Class for working with a selection range, much like the W3C DOM Range, but
- * it is not intended to be an implementation of the W3C interface.
- * (IE Implementation)
- */
-
-FCKDomRange.prototype.MoveToSelection = function()
-{
-	this.Release( true ) ;
-
-	this._Range = new FCKW3CRange( this.Window.document ) ;
-
-	var oSel = this.Window.document.selection ;
-
-	if ( oSel.type != 'Control' )
-	{
-		var eMarkerStart	= this._GetSelectionMarkerTag( true ) ;
-		var eMarkerEnd		= this._GetSelectionMarkerTag( false ) ;
-
-		if ( !eMarkerStart && !eMarkerEnd )
-		{
-			this._Range.setStart( this.Window.document.body, 0 ) ;
-			this._UpdateElementInfo() ;
-			return ;
-		}
-
-		// Set the start boundary.
-		this._Range.setStart( eMarkerStart.parentNode, FCKDomTools.GetIndexOf( eMarkerStart ) ) ;
-		eMarkerStart.parentNode.removeChild( eMarkerStart ) ;
-
-		// Set the end boundary.
-		this._Range.setEnd( eMarkerEnd.parentNode, FCKDomTools.GetIndexOf( eMarkerEnd ) ) ;
-		eMarkerEnd.parentNode.removeChild( eMarkerEnd ) ;
-
-		this._UpdateElementInfo() ;
-	}
-	else
-	{
-		var oControl = oSel.createRange().item(0) ;
-
-		if ( oControl )
-		{
-			this._Range.setStartBefore( oControl ) ;
-			this._Range.setEndAfter( oControl ) ;
-			this._UpdateElementInfo() ;
-		}
-	}
-}
-
-FCKDomRange.prototype.Select = function( forceExpand )
-{
-	if ( this._Range )
-		this.SelectBookmark( this.CreateBookmark( true ), forceExpand ) ;
-}
-
-// Not compatible with bookmark created with CreateBookmark2.
-// The bookmark nodes will be deleted from the document.
-FCKDomRange.prototype.SelectBookmark = function( bookmark, forceExpand )
-{
-	var bIsCollapsed = this.CheckIsCollapsed() ;
-	var bIsStartMarkerAlone ;
-	var dummySpan ;
-
-	// Create marker tags for the start and end boundaries.
-	var eStartMarker = this.GetBookmarkNode( bookmark, true ) ;
-
-	if ( !eStartMarker )
-		return ;
-
-	var eEndMarker ;
-	if ( !bIsCollapsed )
-		eEndMarker = this.GetBookmarkNode( bookmark, false ) ;
-
-	// Create the main range which will be used for the selection.
-	var oIERange = this.Window.document.body.createTextRange() ;
-
-	// Position the range at the start boundary.
-	oIERange.moveToElementText( eStartMarker ) ;
-	oIERange.moveStart( 'character', 1 ) ;
-
-	if ( eEndMarker )
-	{
-		// Create a tool range for the end.
-		var oIERangeEnd = this.Window.document.body.createTextRange() ;
-
-		// Position the tool range at the end.
-		oIERangeEnd.moveToElementText( eEndMarker ) ;
-
-		// Move the end boundary of the main range to match the tool range.
-		oIERange.setEndPoint( 'EndToEnd', oIERangeEnd ) ;
-		oIERange.moveEnd( 'character', -1 ) ;
-	}
-	else
-	{
-		bIsStartMarkerAlone = forceExpand || !eStartMarker.previousSibling || eStartMarker.previousSibling.nodeName.toLowerCase() == 'br';
-
-		// Append a temporary <span>&#65279;</span> before the selection.
-		// This is needed to avoid IE destroying selections inside empty
-		// inline elements, like <b></b> (#253).
-		// It is also needed when placing the selection right after an inline
-		// element to avoid the selection moving inside of it.
-		dummySpan = this.Window.document.createElement( 'span' ) ;
-		dummySpan.innerHTML = '&#65279;' ;	// Zero Width No-Break Space (U+FEFF). See #1359.
-		eStartMarker.parentNode.insertBefore( dummySpan, eStartMarker ) ;
-
-		if ( bIsStartMarkerAlone )
-		{
-			// To expand empty blocks or line spaces after <br>, we need
-			// instead to have any char, which will be later deleted using the
-			// selection.
-			// \ufeff = Zero Width No-Break Space (U+FEFF). See #1359.
-			eStartMarker.parentNode.insertBefore( this.Window.document.createTextNode( '\ufeff' ), eStartMarker ) ;
-		}
-	}
-
-	if ( !this._Range )
-		this._Range = this.CreateRange() ;
-
-	// Remove the markers (reset the position, because of the changes in the DOM tree).
-	this._Range.setStartBefore( eStartMarker ) ;
-	eStartMarker.parentNode.removeChild( eStartMarker ) ;
-
-	if ( bIsCollapsed )
-	{
-		if ( bIsStartMarkerAlone )
-		{
-			// Move the selection start to include the temporary &#65279;.
-			oIERange.moveStart( 'character', -1 ) ;
-
-			oIERange.select() ;
-
-			// Remove our temporary stuff.
-			this.Window.document.selection.clear() ;
-		}
-		else
-			oIERange.select() ;
-
-		FCKDomTools.RemoveNode( dummySpan ) ;
-	}
-	else
-	{
-		this._Range.setEndBefore( eEndMarker ) ;
-		eEndMarker.parentNode.removeChild( eEndMarker ) ;
-		oIERange.select() ;
-	}
-}
-
-FCKDomRange.prototype._GetSelectionMarkerTag = function( toStart )
-{
-	var doc = this.Window.document ;
-	var selection = doc.selection ;
-
-	// Get a range for the start boundary.
-	var oRange ;
-
-	// IE may throw an "unspecified error" on some cases (it happened when
-	// loading _samples/default.html), so try/catch.
-	try
-	{
-		oRange = selection.createRange() ;
-	}
-	catch (e)
-	{
-		return null ;
-	}
-
-	// IE might take the range object to the main window instead of inside the editor iframe window.
-	// This is known to happen when the editor window has not been selected before (See #933).
-	// We need to avoid that.
-	if ( oRange.parentElement().document != doc )
-		return null ;
-
-	oRange.collapse( toStart === true ) ;
-
-	// Paste a marker element at the collapsed range and get it from the DOM.
-	var sMarkerId = 'fck_dom_range_temp_' + (new Date()).valueOf() + '_' + Math.floor(Math.random()*1000) ;
-	oRange.pasteHTML( '<span id="' + sMarkerId + '"></span>' ) ;
-
-	return doc.getElementById( sMarkerId ) ;
-}

+ 0 - 327
main/inc/lib/fckeditor/editor/_source/classes/fckdomrangeiterator.js

@@ -1,327 +0,0 @@
-/*
- * FCKeditor - The text editor for Internet - http://www.fckeditor.net
- * Copyright (C) 2003-2010 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 class can be used to interate through nodes inside a range.
- *
- * During interation, the provided range can become invalid, due to document
- * mutations, so CreateBookmark() used to restore it after processing, if
- * needed.
- */
-
-var FCKDomRangeIterator = function( range )
-{
-	/**
-	 * The FCKDomRange object that marks the interation boundaries.
-	 */
-	this.Range = range ;
-
-	/**
-	 * Indicates that <br> elements must be used as paragraph boundaries.
-	 */
-	this.ForceBrBreak = false ;
-
-	/**
-	 * Guarantees that the iterator will always return "real" block elements.
-	 * If "false", elements like <li>, <th> and <td> are returned. If "true", a
-	 * dedicated block element block element will be created inside those
-	 * elements to hold the selected content.
-	 */
-	this.EnforceRealBlocks = false ;
-}
-
-FCKDomRangeIterator.CreateFromSelection = function( targetWindow )
-{
-	var range = new FCKDomRange( targetWindow ) ;
-	range.MoveToSelection() ;
-	return new FCKDomRangeIterator( range ) ;
-}
-
-FCKDomRangeIterator.prototype =
-{
-	/**
-	 * Get the next paragraph element. It automatically breaks the document
-	 * when necessary to generate block elements for the paragraphs.
-	 */
-	GetNextParagraph : function()
-	{
-		// The block element to be returned.
-		var block ;
-
-		// The range object used to identify the paragraph contents.
-		var range ;
-
-		// Indicated that the current element in the loop is the last one.
-		var isLast ;
-
-		// Instructs to cleanup remaining BRs.
-		var removePreviousBr ;
-		var removeLastBr ;
-
-		var boundarySet = this.ForceBrBreak ? FCKListsLib.ListBoundaries : FCKListsLib.BlockBoundaries ;
-
-		// This is the first iteration. Let's initialize it.
-		if ( !this._LastNode )
-		{
-			var range = this.Range.Clone() ;
-			range.Expand( this.ForceBrBreak ? 'list_contents' : 'block_contents' ) ;
-
-			this._NextNode = range.GetTouchedStartNode() ;
-			this._LastNode = range.GetTouchedEndNode() ;
-
-			// Let's reuse this variable.
-			range = null ;
-		}
-
-		var currentNode = this._NextNode ;
-		var lastNode = this._LastNode ;
-
-		this._NextNode = null ;
-
-		while ( currentNode )
-		{
-			// closeRange indicates that a paragraph boundary has been found,
-			// so the range can be closed.
-			var closeRange = false ;
-
-			// includeNode indicates that the current node is good to be part
-			// of the range. By default, any non-element node is ok for it.
-			var includeNode = ( currentNode.nodeType != 1 ) ;
-
-			var continueFromSibling = false ;
-
-			// If it is an element node, let's check if it can be part of the
-			// range.
-			if ( !includeNode )
-			{
-				var nodeName = currentNode.nodeName.toLowerCase() ;
-
-				if ( boundarySet[ nodeName ] && ( !FCKBrowserInfo.IsIE || currentNode.scopeName == 'HTML' ) )
-				{
-					// <br> boundaries must be part of the range. It will
-					// happen only if ForceBrBreak.
-					if ( nodeName == 'br' )
-						includeNode = true ;
-					else if ( !range && currentNode.childNodes.length == 0 && nodeName != 'hr' )
-					{
-						// If we have found an empty block, and haven't started
-						// the range yet, it means we must return this block.
-						block = currentNode ;
-						isLast = currentNode == lastNode ;
-						break ;
-					}
-
-					// The range must finish right before the boundary,
-					// including possibly skipped empty spaces. (#1603)
-					if ( range )
-					{
-						range.SetEnd( currentNode, 3, true ) ;
-
-						// The found boundary must be set as the next one at this
-						// point. (#1717)
-						if ( nodeName != 'br' )
-							this._NextNode = FCKDomTools.GetNextSourceNode( currentNode, true, null, lastNode ) || currentNode ;
-					}
-
-					closeRange = true ;
-				}
-				else
-				{
-					// If we have child nodes, let's check them.
-					if ( currentNode.firstChild )
-					{
-						// If we don't have a range yet, let's start it.
-						if ( !range )
-						{
-							range = new FCKDomRange( this.Range.Window ) ;
-							range.SetStart( currentNode, 3, true ) ;
-						}
-
-						currentNode = currentNode.firstChild ;
-						continue ;
-					}
-					includeNode = true ;
-				}
-			}
-			else if ( currentNode.nodeType == 3 )
-			{
-				// Ignore normal whitespaces (i.e. not including &nbsp; or
-				// other unicode whitespaces) before/after a block node.
-				if ( /^[\r\n\t ]+$/.test( currentNode.nodeValue ) )
-					includeNode = false ;
-			}
-
-			// The current node is good to be part of the range and we are
-			// starting a new range, initialize it first.
-			if ( includeNode && !range )
-			{
-				range = new FCKDomRange( this.Range.Window ) ;
-				range.SetStart( currentNode, 3, true ) ;
-			}
-
-			// The last node has been found.
-			isLast = ( ( !closeRange || includeNode ) && currentNode == lastNode ) ;
-//			isLast = ( currentNode == lastNode && ( currentNode.nodeType != 1 || currentNode.childNodes.length == 0 ) ) ;
-
-			// If we are in an element boundary, let's check if it is time
-			// to close the range, otherwise we include the parent within it.
-			if ( range && !closeRange )
-			{
-				while ( !currentNode.nextSibling && !isLast )
-				{
-					var parentNode = currentNode.parentNode ;
-
-					if ( boundarySet[ parentNode.nodeName.toLowerCase() ] )
-					{
-						closeRange = true ;
-						isLast = isLast || ( parentNode == lastNode ) ;
-						break ;
-					}
-
-					currentNode = parentNode ;
-					includeNode = true ;
-					isLast = ( currentNode == lastNode ) ;
-					continueFromSibling = true ;
-				}
-			}
-
-			// Now finally include the node.
-			if ( includeNode )
-				range.SetEnd( currentNode, 4, true ) ;
-
-			// We have found a block boundary. Let's close the range and move out of the
-			// loop.
-			if ( ( closeRange || isLast ) && range )
-			{
-				range._UpdateElementInfo() ;
-
-				if ( range.StartNode == range.EndNode
-						&& range.StartNode.parentNode == range.StartBlockLimit
-						&& range.StartNode.getAttribute && range.StartNode.getAttribute( '_fck_bookmark' ) )
-					range = null ;
-				else
-					break ;
-			}
-
-			if ( isLast )
-				break ;
-
-			currentNode = FCKDomTools.GetNextSourceNode( currentNode, continueFromSibling, null, lastNode ) ;
-		}
-
-		// Now, based on the processed range, look for (or create) the block to be returned.
-		if ( !block )
-		{
-			// If no range has been found, this is the end.
-			if ( !range )
-			{
-				this._NextNode = null ;
-				return null ;
-			}
-
-			block = range.StartBlock ;
-
-			if ( !block
-				&& !this.EnforceRealBlocks
-				&& range.StartBlockLimit.nodeName.IEquals( 'DIV', 'TH', 'TD' )
-				&& range.CheckStartOfBlock()
-				&& range.CheckEndOfBlock() )
-			{
-				block = range.StartBlockLimit ;
-			}
-			else if ( !block || ( this.EnforceRealBlocks && block.nodeName.toLowerCase() == 'li' ) )
-			{
-				// Create the fixed block.
-				block = this.Range.Window.document.createElement( FCKConfig.EnterMode == 'p' ? 'p' : 'div' ) ;
-
-				// Move the contents of the temporary range to the fixed block.
-				range.ExtractContents().AppendTo( block ) ;
-				FCKDomTools.TrimNode( block ) ;
-
-				// Insert the fixed block into the DOM.
-				range.InsertNode( block ) ;
-
-				removePreviousBr = true ;
-				removeLastBr = true ;
-			}
-			else if ( block.nodeName.toLowerCase() != 'li' )
-			{
-				// If the range doesn't includes the entire contents of the
-				// block, we must split it, isolating the range in a dedicated
-				// block.
-				if ( !range.CheckStartOfBlock() || !range.CheckEndOfBlock() )
-				{
-					// The resulting block will be a clone of the current one.
-					block = block.cloneNode( false ) ;
-
-					// Extract the range contents, moving it to the new block.
-					range.ExtractContents().AppendTo( block ) ;
-					FCKDomTools.TrimNode( block ) ;
-
-					// Split the block. At this point, the range will be in the
-					// right position for our intents.
-					var splitInfo = range.SplitBlock() ;
-
-					removePreviousBr = !splitInfo.WasStartOfBlock ;
-					removeLastBr = !splitInfo.WasEndOfBlock ;
-
-					// Insert the new block into the DOM.
-					range.InsertNode( block ) ;
-				}
-			}
-			else if ( !isLast )
-			{
-				// LIs are returned as is, with all their children (due to the
-				// nested lists). But, the next node is the node right after
-				// the current range, which could be an <li> child (nested
-				// lists) or the next sibling <li>.
-
-				this._NextNode = block == lastNode ? null : FCKDomTools.GetNextSourceNode( range.EndNode, true, null, lastNode ) ;
-				return block ;
-			}
-		}
-
-		if ( removePreviousBr )
-		{
-			var previousSibling = block.previousSibling ;
-			if ( previousSibling && previousSibling.nodeType == 1 )
-			{
-				if ( previousSibling.nodeName.toLowerCase() == 'br' )
-					previousSibling.parentNode.removeChild( previousSibling ) ;
-				else if ( previousSibling.lastChild && previousSibling.lastChild.nodeName.IEquals( 'br' ) )
-					previousSibling.removeChild( previousSibling.lastChild ) ;
-			}
-		}
-
-		if ( removeLastBr )
-		{
-			var lastChild = block.lastChild ;
-			if ( lastChild && lastChild.nodeType == 1 && lastChild.nodeName.toLowerCase() == 'br' )
-				block.removeChild( lastChild ) ;
-		}
-
-		// Get a reference for the next element. This is important because the
-		// above block can be removed or changed, so we can rely on it for the
-		// next interation.
-		if ( !this._NextNode )
-			this._NextNode = ( isLast || block == lastNode ) ? null : FCKDomTools.GetNextSourceNode( block, true, null, lastNode ) ;
-
-		return block ;
-	}
-} ;

+ 0 - 372
main/inc/lib/fckeditor/editor/_source/classes/fckeditingarea.js

@@ -1,372 +0,0 @@
-/*
- * FCKeditor - The text editor for Internet - http://www.fckeditor.net
- * Copyright (C) 2003-2010 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 ==
- *
- * FCKEditingArea Class: renders an editable area.
- */
-
-/**
- * @constructor
- * @param {String} targetElement The element that will hold the editing area. Any child element present in the target will be deleted.
- */
-var FCKEditingArea = function( targetElement )
-{
-	this.TargetElement = targetElement ;
-	this.Mode = FCK_EDITMODE_WYSIWYG ;
-
-	if ( FCK.IECleanup )
-		FCK.IECleanup.AddItem( this, FCKEditingArea_Cleanup ) ;
-}
-
-
-/**
- * @param {String} html The complete HTML for the page, including DOCTYPE and the <html> tag.
- */
-FCKEditingArea.prototype.Start = function( html, secondCall )
-{
-	var eTargetElement	= this.TargetElement ;
-	var oTargetDocument	= FCKTools.GetElementDocument( eTargetElement ) ;
-
-	// Remove all child nodes from the target.
-	while( eTargetElement.firstChild )
-		eTargetElement.removeChild( eTargetElement.firstChild ) ;
-
-	if ( this.Mode == FCK_EDITMODE_WYSIWYG )
-	{
-		// For FF, document.domain must be set only when different, otherwhise
-		// we'll strangely have "Permission denied" issues.
-		if ( FCK_IS_CUSTOM_DOMAIN )
-			html = '<script>document.domain="' + FCK_RUNTIME_DOMAIN + '";</script>' + html ;
-
-		// IE has a bug with the <base> tag... it must have a </base> closer,
-		// otherwise the all successive tags will be set as children nodes of the <base>.
-		if ( FCKBrowserInfo.IsIE )
-			html = html.replace( /(<base[^>]*?)\s*\/?>(?!\s*<\/base>)/gi, '$1></base>' ) ;
-		else if ( !secondCall )
-		{
-			// Gecko moves some tags out of the body to the head, so we must use
-			// innerHTML to set the body contents (SF BUG 1526154).
-
-			// Extract the BODY contents from the html.
-			var oMatchBefore = html.match( FCKRegexLib.BeforeBody ) ;
-			var oMatchAfter = html.match( FCKRegexLib.AfterBody ) ;
-
-			if ( oMatchBefore && oMatchAfter )
-			{
-				var sBody = html.substr( oMatchBefore[1].length,
-					       html.length - oMatchBefore[1].length - oMatchAfter[1].length ) ;	// This is the BODY tag contents.
-
-				html =
-					oMatchBefore[1] +			// This is the HTML until the <body...> tag, inclusive.
-					'&nbsp;' +
-					oMatchAfter[1] ;			// This is the HTML from the </body> tag, inclusive.
-
-				// If nothing in the body, place a BOGUS tag so the cursor will appear.
-				if ( FCKBrowserInfo.IsGecko && ( sBody.length == 0 || FCKRegexLib.EmptyParagraph.test( sBody ) ) )
-					sBody = '<br type="_moz">' ;
-
-				this._BodyHTML = sBody ;
-
-			}
-			else
-				this._BodyHTML = html ;			// Invalid HTML input.
-		}
-
-		// Create the editing area IFRAME.
-		var oIFrame = this.IFrame = oTargetDocument.createElement( 'iframe' ) ;
-
-		// IE: Avoid JavaScript errors thrown by the editing are source (like tags events).
-		// See #1055.
-		var sOverrideError = '<script type="text/javascript" _fcktemp="true">window.onerror=function(){return true;};</script>' ;
-
-		oIFrame.frameBorder = 0 ;
-		oIFrame.style.width = oIFrame.style.height = '100%' ;
-
-		if ( FCK_IS_CUSTOM_DOMAIN && FCKBrowserInfo.IsIE )
-		{
-			window._FCKHtmlToLoad = html.replace( /<head>/i, '<head>' + sOverrideError ) ;
-			oIFrame.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 )
-		{
-			// Firefox will render the tables inside the body in Quirks mode if the
-			// source of the iframe is set to javascript. see #515
-			oIFrame.src = 'javascript:void(0)' ;
-		}
-
-		// Append the new IFRAME to the target. For IE, it must be done after
-		// setting the "src", to avoid the "secure/unsecure" message under HTTPS.
-		eTargetElement.appendChild( oIFrame ) ;
-
-		// Get the window and document objects used to interact with the newly created IFRAME.
-		this.Window = oIFrame.contentWindow ;
-
-		// IE: Avoid JavaScript errors thrown by the editing are source (like tags events).
-		// TODO: This error handler is not being fired.
-		// this.Window.onerror = function() { alert( 'Error!' ) ; return true ; }
-
-		if ( !FCK_IS_CUSTOM_DOMAIN || !FCKBrowserInfo.IsIE )
-		{
-			var oDoc = this.Window.document ;
-
-			oDoc.open() ;
-			oDoc.write( html.replace( /<head>/i, '<head>' + sOverrideError ) ) ;
-			oDoc.close() ;
-		}
-
-		if ( FCKBrowserInfo.IsAIR )
-			FCKAdobeAIR.EditingArea_Start( oDoc, html ) ;
-
-		// Firefox 1.0.x is buggy... ohh yes... so let's do it two times and it
-		// will magically work.
-		if ( FCKBrowserInfo.IsGecko10 && !secondCall )
-		{
-			this.Start( html, true ) ;
-			return ;
-		}
-
-		if ( oIFrame.readyState && oIFrame.readyState != 'completed' )
-		{
-			var editArea = this ;
-
-			// Using a IE alternative for DOMContentLoaded, similar to the
-			// solution proposed at http://javascript.nwbox.com/IEContentLoaded/
-			setTimeout( function()
-					{
-						try
-						{
-							editArea.Window.document.documentElement.doScroll("left") ;
-						}
-						catch(e)
-						{
-							setTimeout( arguments.callee, 0 ) ;
-							return ;
-						}
-						editArea.Window._FCKEditingArea = editArea ;
-						FCKEditingArea_CompleteStart.call( editArea.Window ) ;
-					}, 0 ) ;
-		}
-		else
-		{
-			this.Window._FCKEditingArea = this ;
-
-			// FF 1.0.x is buggy... we must wait a lot to enable editing because
-			// sometimes the content simply disappears, for example when pasting
-			// "bla1!<img src='some_url'>!bla2" in the source and then switching
-			// back to design.
-			if ( FCKBrowserInfo.IsGecko10 )
-				this.Window.setTimeout( FCKEditingArea_CompleteStart, 500 ) ;
-			else
-				FCKEditingArea_CompleteStart.call( this.Window ) ;
-		}
-	}
-	else
-	{
-		var eTextarea = this.Textarea = oTargetDocument.createElement( 'textarea' ) ;
-		eTextarea.className = 'SourceField' ;
-		eTextarea.dir = 'ltr' ;
-		FCKDomTools.SetElementStyles( eTextarea,
-			{
-				width	: '100%',
-				height	: '100%',
-				border	: 'none',
-				resize	: 'none',
-				outline	: 'none'
-			} ) ;
-		eTargetElement.appendChild( eTextarea ) ;
-
-		eTextarea.value = html  ;
-
-		// Fire the "OnLoad" event.
-		FCKTools.RunFunction( this.OnLoad ) ;
-	}
-}
-
-// "this" here is FCKEditingArea.Window
-function FCKEditingArea_CompleteStart()
-{
-	// On Firefox, the DOM takes a little to become available. So we must wait for it in a loop.
-	if ( !this.document.body )
-	{
-		this.setTimeout( FCKEditingArea_CompleteStart, 50 ) ;
-		return ;
-	}
-
-	var oEditorArea = this._FCKEditingArea ;
-
-	// Save this reference to be re-used later.
-	oEditorArea.Document = oEditorArea.Window.document ;
-
-	oEditorArea.MakeEditable() ;
-
-	// Fire the "OnLoad" event.
-	FCKTools.RunFunction( oEditorArea.OnLoad ) ;
-}
-
-FCKEditingArea.prototype.MakeEditable = function()
-{
-	var oDoc = this.Document ;
-
-	if ( FCKBrowserInfo.IsIE )
-	{
-		// Kludge for #141 and #523
-		oDoc.body.disabled = true ;
-		oDoc.body.contentEditable = true ;
-		oDoc.body.removeAttribute( "disabled" ) ;
-
-		/* The following commands don't throw errors, but have no effect.
-		oDoc.execCommand( 'AutoDetect', false, false ) ;
-		oDoc.execCommand( 'KeepSelection', false, true ) ;
-		*/
-	}
-	else
-	{
-		try
-		{
-			// Disable Firefox 2 Spell Checker.
-			oDoc.body.spellcheck = ( this.FFSpellChecker !== false ) ;
-
-			if ( this._BodyHTML )
-			{
-				oDoc.body.innerHTML = this._BodyHTML ;
-				oDoc.body.offsetLeft ;		// Don't remove, this is a hack to fix Opera 9.50, see #2264.
-				this._BodyHTML = null ;
-			}
-
-			oDoc.designMode = 'on' ;
-
-			// Tell Gecko (Firefox 1.5+) to enable or not live resizing of objects (by Alfonso Martinez)
-			oDoc.execCommand( 'enableObjectResizing', false, !FCKConfig.DisableObjectResizing ) ;
-
-			// Disable the standard table editing features of Firefox.
-			oDoc.execCommand( 'enableInlineTableEditing', false, !FCKConfig.DisableFFTableHandles ) ;
-		}
-		catch (e)
-		{
-			// In Firefox if the iframe is initially hidden it can't be set to designMode and it raises an exception
-			// So we set up a DOM Mutation event Listener on the HTML, as it will raise several events when the document is  visible again
-			FCKTools.AddEventListener( this.Window.frameElement, 'DOMAttrModified', FCKEditingArea_Document_AttributeNodeModified ) ;
-		}
-
-	}
-}
-
-// This function processes the notifications of the DOM Mutation event on the document
-// We use it to know that the document will be ready to be editable again (or we hope so)
-function FCKEditingArea_Document_AttributeNodeModified( evt )
-{
-	var editingArea = evt.currentTarget.contentWindow._FCKEditingArea ;
-
-	// We want to run our function after the events no longer fire, so we can know that it's a stable situation
-	if ( editingArea._timer )
-		window.clearTimeout( editingArea._timer ) ;
-
-	editingArea._timer = FCKTools.SetTimeout( FCKEditingArea_MakeEditableByMutation, 1000, editingArea ) ;
-}
-
-// This function ideally should be called after the document is visible, it does clean up of the
-// mutation tracking and tries again to make the area editable.
-function FCKEditingArea_MakeEditableByMutation()
-{
-	// Clean up
-	delete this._timer ;
-	// Now we don't want to keep on getting this event
-	FCKTools.RemoveEventListener( this.Window.frameElement, 'DOMAttrModified', FCKEditingArea_Document_AttributeNodeModified ) ;
-	// Let's try now to set the editing area editable
-	// If it fails it will set up the Mutation Listener again automatically
-	this.MakeEditable() ;
-}
-
-FCKEditingArea.prototype.Focus = function()
-{
-	try
-	{
-		if ( this.Mode == FCK_EDITMODE_WYSIWYG )
-		{
-			if ( FCKBrowserInfo.IsIE )
-				this._FocusIE() ;
-			else
-				this.Window.focus() ;
-		}
-		else
-		{
-			var oDoc = FCKTools.GetElementDocument( this.Textarea ) ;
-			if ( (!oDoc.hasFocus || oDoc.hasFocus() ) && oDoc.activeElement == this.Textarea )
-				return ;
-
-			this.Textarea.focus() ;
-		}
-	}
-	catch(e) {}
-}
-
-FCKEditingArea.prototype._FocusIE = function()
-{
-	// In IE it can happen that the document is in theory focused but the
-	// active element is outside of it.
-	this.Document.body.setActive() ;
-
-	this.Window.focus() ;
-
-	// Kludge for #141... yet more code to workaround IE bugs
-	var range = this.Document.selection.createRange() ;
-
-	var parentNode = range.parentElement() ;
-	var parentTag = parentNode.nodeName.toLowerCase() ;
-
-	// Only apply the fix when in a block, and the block is empty.
-	if ( parentNode.childNodes.length > 0 ||
-		 !( FCKListsLib.BlockElements[parentTag] ||
-		    FCKListsLib.NonEmptyBlockElements[parentTag] ) )
-	{
-		return ;
-	}
-
-	// Force the selection to happen, in this way we guarantee the focus will
-	// be there.
-	range = new FCKDomRange( this.Window ) ;
-	range.MoveToElementEditStart( parentNode ) ;
-	range.Select() ;
-}
-
-function FCKEditingArea_Cleanup()
-{
-	if ( this.Document )
-	{
-		// Avoid IE crash if an object is selected on unload #2201
-		this.Document.selection.empty() ;
-		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 ;
-	}
-}

+ 0 - 89
main/inc/lib/fckeditor/editor/_source/classes/fckelementpath.js

@@ -1,89 +0,0 @@
-/*
- * FCKeditor - The text editor for Internet - http://www.fckeditor.net
- * Copyright (C) 2003-2010 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 ==
- *
- * Manages the DOM ascensors element list of a specific DOM node
- * (limited to body, inclusive).
- */
-
-var FCKElementPath = function( lastNode )
-{
-	var eBlock = null ;
-	var eBlockLimit = null ;
-
-	var aElements = new Array() ;
-
-	var e = lastNode ;
-	while ( e )
-	{
-		if ( e.nodeType == 1 )
-		{
-			if ( !this.LastElement )
-				this.LastElement = e ;
-
-			var sElementName = e.nodeName.toLowerCase() ;
-			if ( FCKBrowserInfo.IsIE && e.scopeName != 'HTML' )
-				sElementName = e.scopeName.toLowerCase() + ':' + sElementName ;
-
-			if ( !eBlockLimit )
-			{
-				if ( !eBlock && FCKListsLib.PathBlockElements[ sElementName ] != null )
-					eBlock = e ;
-
-				if ( FCKListsLib.PathBlockLimitElements[ sElementName ] != null )
-				{
-					// DIV is considered the Block, if no block is available (#525)
-					// and if it doesn't contain other blocks.
-					if ( !eBlock && sElementName == 'div' && !FCKElementPath._CheckHasBlock( e ) )
-						eBlock = e ;
-					else
-						eBlockLimit = e ;
-				}
-			}
-
-			aElements.push( e ) ;
-
-			if ( sElementName == 'body' )
-				break ;
-		}
-		e = e.parentNode ;
-	}
-
-	this.Block = eBlock ;
-	this.BlockLimit = eBlockLimit ;
-	this.Elements = aElements ;
-}
-
-/**
- * Check if an element contains any block element.
- */
-FCKElementPath._CheckHasBlock = function( element )
-{
-	var childNodes = element.childNodes ;
-
-	for ( var i = 0, count = childNodes.length ; i < count ; i++ )
-	{
-		var child = childNodes[i] ;
-
-		if ( child.nodeType == 1 && FCKListsLib.BlockElements[ child.nodeName.toLowerCase() ] )
-			return true ;
-	}
-
-	return false ;
-}

+ 0 - 708
main/inc/lib/fckeditor/editor/_source/classes/fckenterkey.js

@@ -1,708 +0,0 @@
-/*
- * FCKeditor - The text editor for Internet - http://www.fckeditor.net
- * Copyright (C) 2003-2010 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 ==
- *
- * Controls the [Enter] keystroke behavior in a document.
- */
-
-/*
- *	Constructor.
- *		@targetDocument : the target document.
- *		@enterMode : the behavior for the <Enter> keystroke.
- *			May be "p", "div", "br". Default is "p".
- *		@shiftEnterMode : the behavior for the <Shift>+<Enter> keystroke.
- *			May be "p", "div", "br". Defaults to "br".
- */
-var FCKEnterKey = function( targetWindow, enterMode, shiftEnterMode, tabSpaces )
-{
-	this.Window			= targetWindow ;
-	this.EnterMode		= enterMode || 'p' ;
-	this.ShiftEnterMode	= shiftEnterMode || 'br' ;
-
-	// Setup the Keystroke Handler.
-	var oKeystrokeHandler = new FCKKeystrokeHandler( false ) ;
-	oKeystrokeHandler._EnterKey = this ;
-	oKeystrokeHandler.OnKeystroke = FCKEnterKey_OnKeystroke ;
-
-	oKeystrokeHandler.SetKeystrokes( [
-		[ 13		, 'Enter' ],
-		[ SHIFT + 13, 'ShiftEnter' ],
-		[ 8			, 'Backspace' ],
-		[ CTRL + 8	, 'CtrlBackspace' ],
-		[ 46		, 'Delete' ]
-	] ) ;
-
-	this.TabText = '' ;
-
-	// Safari by default inserts 4 spaces on TAB, while others make the editor
-	// loose focus. So, we need to handle it here to not include those spaces.
-	if ( tabSpaces > 0 || FCKBrowserInfo.IsSafari )
-	{
-		while ( tabSpaces-- )
-			this.TabText += '\xa0' ;
-
-		oKeystrokeHandler.SetKeystrokes( [ 9, 'Tab' ] );
-	}
-
-	oKeystrokeHandler.AttachToElement( targetWindow.document ) ;
-}
-
-
-function FCKEnterKey_OnKeystroke(  keyCombination, keystrokeValue )
-{
-	var oEnterKey = this._EnterKey ;
-
-	try
-	{
-		switch ( keystrokeValue )
-		{
-			case 'Enter' :
-				return oEnterKey.DoEnter() ;
-				break ;
-			case 'ShiftEnter' :
-				return oEnterKey.DoShiftEnter() ;
-				break ;
-			case 'Backspace' :
-				return oEnterKey.DoBackspace() ;
-				break ;
-			case 'Delete' :
-				return oEnterKey.DoDelete() ;
-				break ;
-			case 'Tab' :
-				return oEnterKey.DoTab() ;
-				break ;
-			case 'CtrlBackspace' :
-				return oEnterKey.DoCtrlBackspace() ;
-				break ;
-		}
-	}
-	catch (e)
-	{
-		// If for any reason we are not able to handle it, go
-		// ahead with the browser default behavior.
-	}
-
-	return false ;
-}
-
-/*
- * Executes the <Enter> key behavior.
- */
-FCKEnterKey.prototype.DoEnter = function( mode, hasShift )
-{
-	// Save an undo snapshot before doing anything
-	FCKUndo.SaveUndoStep() ;
-
-	this._HasShift = ( hasShift === true ) ;
-
-	var parentElement = FCKSelection.GetParentElement() ;
-	var parentPath = new FCKElementPath( parentElement ) ;
-	var sMode = mode || this.EnterMode ;
-
-	if ( sMode == 'br' || parentPath.Block && parentPath.Block.tagName.toLowerCase() == 'pre' )
-		return this._ExecuteEnterBr() ;
-	else
-		return this._ExecuteEnterBlock( sMode ) ;
-}
-
-/*
- * Executes the <Shift>+<Enter> key behavior.
- */
-FCKEnterKey.prototype.DoShiftEnter = function()
-{
-	return this.DoEnter( this.ShiftEnterMode, true ) ;
-}
-
-/*
- * Executes the <Backspace> key behavior.
- */
-FCKEnterKey.prototype.DoBackspace = function()
-{
-	var bCustom = false ;
-
-	// Get the current selection.
-	var oRange = new FCKDomRange( this.Window ) ;
-	oRange.MoveToSelection() ;
-
-	// Kludge for #247
-	if ( FCKBrowserInfo.IsIE && this._CheckIsAllContentsIncluded( oRange, this.Window.document.body ) )
-	{
-		this._FixIESelectAllBug( oRange ) ;
-		return true ;
-	}
-
-	var isCollapsed = oRange.CheckIsCollapsed() ;
-
-	if ( !isCollapsed )
-	{
-		// Bug #327, Backspace with an img selection would activate the default action in IE.
-		// Let's override that with our logic here.
-		if ( FCKBrowserInfo.IsIE && this.Window.document.selection.type.toLowerCase() == "control" )
-		{
-			var controls = this.Window.document.selection.createRange() ;
-			for ( var i = controls.length - 1 ; i >= 0 ; i-- )
-			{
-				var el = controls.item( i ) ;
-				el.parentNode.removeChild( el ) ;
-			}
-			return true ;
-		}
-
-		return false ;
-	}
-
-	// On IE, it is better for us handle the deletion if the caret is preceeded
-	// by a <br> (#1383).
-	if ( FCKBrowserInfo.IsIE )
-	{
-		var previousElement = FCKDomTools.GetPreviousSourceElement( oRange.StartNode, true ) ;
-
-		if ( previousElement && previousElement.nodeName.toLowerCase() == 'br' )
-		{
-			// Create a range that starts after the <br> and ends at the
-			// current range position.
-			var testRange = oRange.Clone() ;
-			testRange.SetStart( previousElement, 4 ) ;
-
-			// If that range is empty, we can proceed cleaning that <br> manually.
-			if ( testRange.CheckIsEmpty() )
-			{
-				previousElement.parentNode.removeChild( previousElement ) ;
-				return true ;
-			}
-		}
-	}
-
-	var oStartBlock = oRange.StartBlock ;
-	var oEndBlock = oRange.EndBlock ;
-
-	// The selection boundaries must be in the same "block limit" element
-	if ( oRange.StartBlockLimit == oRange.EndBlockLimit && oStartBlock && oEndBlock )
-	{
-		if ( !isCollapsed )
-		{
-			var bEndOfBlock = oRange.CheckEndOfBlock() ;
-
-			oRange.DeleteContents() ;
-
-			if ( oStartBlock != oEndBlock )
-			{
-				oRange.SetStart(oEndBlock,1) ;
-				oRange.SetEnd(oEndBlock,1) ;
-
-//				if ( bEndOfBlock )
-//					oEndBlock.parentNode.removeChild( oEndBlock ) ;
-			}
-
-			oRange.Select() ;
-
-			bCustom = ( oStartBlock == oEndBlock ) ;
-		}
-
-		if ( oRange.CheckStartOfBlock() )
-		{
-			var oCurrentBlock = oRange.StartBlock ;
-
-			var ePrevious = FCKDomTools.GetPreviousSourceElement( oCurrentBlock, true, [ 'BODY', oRange.StartBlockLimit.nodeName ], ['UL','OL'] ) ;
-
-			bCustom = this._ExecuteBackspace( oRange, ePrevious, oCurrentBlock ) ;
-		}
-		else if ( FCKBrowserInfo.IsGeckoLike )
-		{
-			// Firefox and Opera (#1095) loose the selection when executing
-			// CheckStartOfBlock, so we must reselect.
-			oRange.Select() ;
-		}
-	}
-
-	oRange.Release() ;
-	return bCustom ;
-}
-
-FCKEnterKey.prototype.DoCtrlBackspace = function()
-{
-	FCKUndo.SaveUndoStep() ;
-	var oRange = new FCKDomRange( this.Window ) ;
-	oRange.MoveToSelection() ;
-	if ( FCKBrowserInfo.IsIE && this._CheckIsAllContentsIncluded( oRange, this.Window.document.body ) )
-	{
-		this._FixIESelectAllBug( oRange ) ;
-		return true ;
-	}
-	return false ;
-}
-
-FCKEnterKey.prototype._ExecuteBackspace = function( range, previous, currentBlock )
-{
-	var bCustom = false ;
-
-	// We could be in a nested LI.
-	if ( !previous && currentBlock && currentBlock.nodeName.IEquals( 'LI' ) && currentBlock.parentNode.parentNode.nodeName.IEquals( 'LI' ) )
-	{
-		this._OutdentWithSelection( currentBlock, range ) ;
-		return true ;
-	}
-
-	if ( previous && previous.nodeName.IEquals( 'LI' ) )
-	{
-		var oNestedList = FCKDomTools.GetLastChild( previous, ['UL','OL'] ) ;
-
-		while ( oNestedList )
-		{
-			previous = FCKDomTools.GetLastChild( oNestedList, 'LI' ) ;
-			oNestedList = FCKDomTools.GetLastChild( previous, ['UL','OL'] ) ;
-		}
-	}
-
-	if ( previous && currentBlock )
-	{
-		// If we are in a LI, and the previous block is not an LI, we must outdent it.
-		if ( currentBlock.nodeName.IEquals( 'LI' ) && !previous.nodeName.IEquals( 'LI' ) )
-		{
-			this._OutdentWithSelection( currentBlock, range ) ;
-			return true ;
-		}
-
-		// Take a reference to the parent for post processing cleanup.
-		var oCurrentParent = currentBlock.parentNode ;
-
-		var sPreviousName = previous.nodeName.toLowerCase() ;
-		if ( FCKListsLib.EmptyElements[ sPreviousName ] != null || sPreviousName == 'table' )
-		{
-			FCKDomTools.RemoveNode( previous ) ;
-			bCustom = true ;
-		}
-		else
-		{
-			// Remove the current block.
-			FCKDomTools.RemoveNode( currentBlock ) ;
-
-			// Remove any empty tag left by the block removal.
-			while ( oCurrentParent.innerHTML.Trim().length == 0 )
-			{
-				var oParent = oCurrentParent.parentNode ;
-				oParent.removeChild( oCurrentParent ) ;
-				oCurrentParent = oParent ;
-			}
-
-			// Cleanup the previous and the current elements.
-			FCKDomTools.LTrimNode( currentBlock ) ;
-			FCKDomTools.RTrimNode( previous ) ;
-
-			// Append a space to the previous.
-			// Maybe it is not always desirable...
-			// previous.appendChild( this.Window.document.createTextNode( ' ' ) ) ;
-
-			// Set the range to the end of the previous element and bookmark it.
-			range.SetStart( previous, 2, true ) ;
-			range.Collapse( true ) ;
-			var oBookmark = range.CreateBookmark( true ) ;
-
-			// Move the contents of the block to the previous element and delete it.
-			// But for some block types (e.g. table), moving the children to the previous block makes no sense.
-			// So a check is needed. (See #1081)
-			if ( ! currentBlock.tagName.IEquals( [ 'TABLE' ] ) )
-				FCKDomTools.MoveChildren( currentBlock, previous ) ;
-
-			// Place the selection at the bookmark.
-			range.SelectBookmark( oBookmark ) ;
-
-			bCustom = true ;
-		}
-	}
-
-	return bCustom ;
-}
-
-/*
- * Executes the <Delete> key behavior.
- */
-FCKEnterKey.prototype.DoDelete = function()
-{
-	// Save an undo snapshot before doing anything
-	// This is to conform with the behavior seen in MS Word
-	FCKUndo.SaveUndoStep() ;
-
-	// The <Delete> has the same effect as the <Backspace>, so we have the same
-	// results if we just move to the next block and apply the same <Backspace> logic.
-
-	var bCustom = false ;
-
-	// Get the current selection.
-	var oRange = new FCKDomRange( this.Window ) ;
-	oRange.MoveToSelection() ;
-
-	// Kludge for #247
-	if ( FCKBrowserInfo.IsIE && this._CheckIsAllContentsIncluded( oRange, this.Window.document.body ) )
-	{
-		this._FixIESelectAllBug( oRange ) ;
-		return true ;
-	}
-
-	// There is just one special case for collapsed selections at the end of a block.
-	if ( oRange.CheckIsCollapsed() && oRange.CheckEndOfBlock( FCKBrowserInfo.IsGeckoLike ) )
-	{
-		var oCurrentBlock = oRange.StartBlock ;
-		var eCurrentCell = FCKTools.GetElementAscensor( oCurrentBlock, 'td' );
-
-		var eNext = FCKDomTools.GetNextSourceElement( oCurrentBlock, true, [ oRange.StartBlockLimit.nodeName ],
-				['UL','OL','TR'], true ) ;
-
-		// Bug #1323 : if we're in a table cell, and the next node belongs to a different cell, then don't
-		// delete anything.
-		if ( eCurrentCell )
-		{
-			var eNextCell = FCKTools.GetElementAscensor( eNext, 'td' );
-			if ( eNextCell != eCurrentCell )
-				return true ;
-		}
-
-		bCustom = this._ExecuteBackspace( oRange, oCurrentBlock, eNext ) ;
-	}
-
-	oRange.Release() ;
-	return bCustom ;
-}
-
-/*
- * Executes the <Tab> key behavior.
- */
-FCKEnterKey.prototype.DoTab = function()
-{
-	var oRange = new FCKDomRange( this.Window );
-	oRange.MoveToSelection() ;
-
-	// If the user pressed <tab> inside a table, we should give him the default behavior ( moving between cells )
-	// instead of giving him more non-breaking spaces. (Bug #973)
-	var node = oRange._Range.startContainer ;
-	while ( node )
-	{
-		if ( node.nodeType == 1 )
-		{
-			var tagName = node.tagName.toLowerCase() ;
-			if ( tagName == "tr" || tagName == "td" || tagName == "th" || tagName == "tbody" || tagName == "table" )
-				return false ;
-			else
-				break ;
-		}
-		node = node.parentNode ;
-	}
-
-	if ( this.TabText )
-	{
-		oRange.DeleteContents() ;
-		oRange.InsertNode( this.Window.document.createTextNode( this.TabText ) ) ;
-		oRange.Collapse( false ) ;
-		oRange.Select() ;
-	}
-	return true ;
-}
-
-FCKEnterKey.prototype._ExecuteEnterBlock = function( blockTag, range )
-{
-	// Get the current selection.
-	var oRange = range || new FCKDomRange( this.Window ) ;
-
-	var oSplitInfo = oRange.SplitBlock( blockTag ) ;
-
-	if ( oSplitInfo )
-	{
-		// Get the current blocks.
-		var ePreviousBlock	= oSplitInfo.PreviousBlock ;
-		var eNextBlock		= oSplitInfo.NextBlock ;
-
-		var bIsStartOfBlock	= oSplitInfo.WasStartOfBlock ;
-		var bIsEndOfBlock	= oSplitInfo.WasEndOfBlock ;
-
-		// If there is one block under a list item, modify the split so that the list item gets split as well. (Bug #1647)
-		if ( eNextBlock )
-		{
-			if ( eNextBlock.parentNode.nodeName.IEquals( 'li' ) )
-			{
-				FCKDomTools.BreakParent( eNextBlock, eNextBlock.parentNode ) ;
-				FCKDomTools.MoveNode( eNextBlock, eNextBlock.nextSibling, true ) ;
-			}
-		}
-		else if ( ePreviousBlock && ePreviousBlock.parentNode.nodeName.IEquals( 'li' ) )
-		{
-			FCKDomTools.BreakParent( ePreviousBlock, ePreviousBlock.parentNode ) ;
-			oRange.MoveToElementEditStart( ePreviousBlock.nextSibling );
-			FCKDomTools.MoveNode( ePreviousBlock, ePreviousBlock.previousSibling ) ;
-		}
-
-		// If we have both the previous and next blocks, it means that the
-		// boundaries were on separated blocks, or none of them where on the
-		// block limits (start/end).
-		if ( !bIsStartOfBlock && !bIsEndOfBlock )
-		{
-			// If the next block is an <li> with another list tree as the first child
-			// We'll need to append a placeholder or the list item wouldn't be editable. (Bug #1420)
-			if ( eNextBlock.nodeName.IEquals( 'li' ) && eNextBlock.firstChild
-					&& eNextBlock.firstChild.nodeName.IEquals( ['ul', 'ol'] ) )
-				eNextBlock.insertBefore( FCKTools.GetElementDocument( eNextBlock ).createTextNode( '\xa0' ), eNextBlock.firstChild ) ;
-			// Move the selection to the end block.
-			if ( eNextBlock )
-				oRange.MoveToElementEditStart( eNextBlock ) ;
-		}
-		else
-		{
-			if ( bIsStartOfBlock && bIsEndOfBlock && ePreviousBlock.tagName.toUpperCase() == 'LI' )
-			{
-				oRange.MoveToElementStart( ePreviousBlock ) ;
-				this._OutdentWithSelection( ePreviousBlock, oRange ) ;
-				oRange.Release() ;
-				return true ;
-			}
-
-			var eNewBlock ;
-
-			if ( ePreviousBlock )
-			{
-				var sPreviousBlockTag = ePreviousBlock.tagName.toUpperCase() ;
-
-				// If is a header tag, or we are in a Shift+Enter (#77),
-				// create a new block element (later in the code).
-				if ( !this._HasShift && !(/^H[1-6]$/).test( sPreviousBlockTag ) )
-				{
-					// Otherwise, duplicate the previous block.
-					eNewBlock = FCKDomTools.CloneElement( ePreviousBlock ) ;
-				}
-			}
-			else if ( eNextBlock )
-				eNewBlock = FCKDomTools.CloneElement( eNextBlock ) ;
-
-			if ( !eNewBlock )
-				eNewBlock = this.Window.document.createElement( blockTag ) ;
-
-			// Recreate the inline elements tree, which was available
-			// before the hitting enter, so the same styles will be
-			// available in the new block.
-			var elementPath = oSplitInfo.ElementPath ;
-			if ( elementPath )
-			{
-				for ( var i = 0, len = elementPath.Elements.length ; i < len ; i++ )
-				{
-					var element = elementPath.Elements[i] ;
-
-					if ( element == elementPath.Block || element == elementPath.BlockLimit )
-						break ;
-
-					if ( FCKListsLib.InlineChildReqElements[ element.nodeName.toLowerCase() ] )
-					{
-						element = FCKDomTools.CloneElement( element ) ;
-						FCKDomTools.MoveChildren( eNewBlock, element ) ;
-						eNewBlock.appendChild( element ) ;
-					}
-				}
-			}
-
-			if ( FCKBrowserInfo.IsGeckoLike )
-				FCKTools.AppendBogusBr( eNewBlock ) ;
-
-			oRange.InsertNode( eNewBlock ) ;
-
-			// This is tricky, but to make the new block visible correctly
-			// we must select it.
-			if ( FCKBrowserInfo.IsIE )
-			{
-				// Move the selection to the new block.
-				oRange.MoveToElementEditStart( eNewBlock ) ;
-				oRange.Select() ;
-			}
-
-			// Move the selection to the new block.
-			oRange.MoveToElementEditStart( bIsStartOfBlock && !bIsEndOfBlock ? eNextBlock : eNewBlock ) ;
-		}
-
-		if ( FCKBrowserInfo.IsGeckoLike )
-		{
-			if ( eNextBlock )
-			{
-				// If we have split the block, adds a temporary span at the
-				// range position and scroll relatively to it.
-				var tmpNode = this.Window.document.createElement( 'span' ) ;
-
-				// We need some content for Safari.
-				tmpNode.innerHTML = '&nbsp;';
-
-				oRange.InsertNode( tmpNode ) ;
-				FCKDomTools.ScrollIntoView( tmpNode, false ) ;
-				oRange.DeleteContents() ;
-			}
-			else
-			{
-				// We may use the above scroll logic for the new block case
-				// too, but it gives some weird result with Opera.
-				FCKDomTools.ScrollIntoView( eNextBlock || eNewBlock, false ) ;
-			}
-		}
-
-		oRange.Select() ;
-	}
-
-	// Release the resources used by the range.
-	oRange.Release() ;
-
-	return true ;
-}
-
-FCKEnterKey.prototype._ExecuteEnterBr = function( blockTag )
-{
-	// Get the current selection.
-	var oRange = new FCKDomRange( this.Window ) ;
-	oRange.MoveToSelection() ;
-
-	// The selection boundaries must be in the same "block limit" element.
-	if ( oRange.StartBlockLimit == oRange.EndBlockLimit )
-	{
-		oRange.DeleteContents() ;
-
-		// Get the new selection (it is collapsed at this point).
-		oRange.MoveToSelection() ;
-
-		var bIsStartOfBlock	= oRange.CheckStartOfBlock() ;
-		var bIsEndOfBlock	= oRange.CheckEndOfBlock() ;
-
-		var sStartBlockTag = oRange.StartBlock ? oRange.StartBlock.tagName.toUpperCase() : '' ;
-
-		var bHasShift = this._HasShift ;
-		var bIsPre = false ;
-
-		if ( !bHasShift && sStartBlockTag == 'LI' )
-			return this._ExecuteEnterBlock( null, oRange ) ;
-
-		// If we are at the end of a header block.
-		if ( !bHasShift && bIsEndOfBlock && (/^H[1-6]$/).test( sStartBlockTag ) )
-		{
-			// Insert a BR after the current paragraph.
-			FCKDomTools.InsertAfterNode( oRange.StartBlock, this.Window.document.createElement( 'br' ) ) ;
-
-			// The space is required by Gecko only to make the cursor blink.
-			if ( FCKBrowserInfo.IsGecko )
-				FCKDomTools.InsertAfterNode( oRange.StartBlock, this.Window.document.createTextNode( '' ) ) ;
-
-			// IE and Gecko have different behaviors regarding the position.
-			oRange.SetStart( oRange.StartBlock.nextSibling, FCKBrowserInfo.IsIE ? 3 : 1 ) ;
-		}
-		else
-		{
-			var eLineBreak ;
-			bIsPre = sStartBlockTag.IEquals( 'pre' ) ;
-			if ( bIsPre )
-				eLineBreak = this.Window.document.createTextNode( FCKBrowserInfo.IsIE ? '\r' : '\n' ) ;
-			else
-				eLineBreak = this.Window.document.createElement( 'br' ) ;
-
-			oRange.InsertNode( eLineBreak ) ;
-
-			// The space is required by Gecko only to make the cursor blink.
-			if ( FCKBrowserInfo.IsGecko )
-				FCKDomTools.InsertAfterNode( eLineBreak, this.Window.document.createTextNode( '' ) ) ;
-
-			// If we are at the end of a block, we must be sure the bogus node is available in that block.
-			if ( bIsEndOfBlock && FCKBrowserInfo.IsGeckoLike )
-				FCKTools.AppendBogusBr( eLineBreak.parentNode ) ;
-
-			if ( FCKBrowserInfo.IsIE )
-				oRange.SetStart( eLineBreak, 4 ) ;
-			else
-				oRange.SetStart( eLineBreak.nextSibling, 1 ) ;
-
-			if ( ! FCKBrowserInfo.IsIE )
-			{
-				var dummy = null ;
-				if ( FCKBrowserInfo.IsOpera )
-					dummy = this.Window.document.createElement( 'span' ) ;
-				else
-					dummy = this.Window.document.createElement( 'br' ) ;
-
-				eLineBreak.parentNode.insertBefore( dummy, eLineBreak.nextSibling ) ;
-
-				FCKDomTools.ScrollIntoView( dummy, false ) ;
-
-				dummy.parentNode.removeChild( dummy ) ;
-			}
-		}
-
-		// This collapse guarantees the cursor will be blinking.
-		oRange.Collapse( true ) ;
-
-		oRange.Select( bIsPre ) ;
-	}
-
-	// Release the resources used by the range.
-	oRange.Release() ;
-
-	return true ;
-}
-
-// Outdents a LI, maintaining the selection defined on a range.
-FCKEnterKey.prototype._OutdentWithSelection = function( li, range )
-{
-	var oBookmark = range.CreateBookmark() ;
-
-	FCKListHandler.OutdentListItem( li ) ;
-
-	range.MoveToBookmark( oBookmark ) ;
-	range.Select() ;
-}
-
-// Is all the contents under a node included by a range?
-FCKEnterKey.prototype._CheckIsAllContentsIncluded = function( range, node )
-{
-	var startOk = false ;
-	var endOk = false ;
-
-	/*
-	FCKDebug.Output( 'sc='+range.StartContainer.nodeName+
-			',so='+range._Range.startOffset+
-			',ec='+range.EndContainer.nodeName+
-			',eo='+range._Range.endOffset ) ;
-	*/
-	if ( range.StartContainer == node || range.StartContainer == node.firstChild )
-		startOk = ( range._Range.startOffset == 0 ) ;
-
-	if ( range.EndContainer == node || range.EndContainer == node.lastChild )
-	{
-		var nodeLength = range.EndContainer.nodeType == 3 ? range.EndContainer.length : range.EndContainer.childNodes.length ;
-		endOk = ( range._Range.endOffset == nodeLength ) ;
-	}
-
-	return startOk && endOk ;
-}
-
-// Kludge for #247
-FCKEnterKey.prototype._FixIESelectAllBug = function( range )
-{
-	var doc = this.Window.document ;
-	doc.body.innerHTML = '' ;
-	var editBlock ;
-	if ( FCKConfig.EnterMode.IEquals( ['div', 'p'] ) )
-	{
-		editBlock = doc.createElement( FCKConfig.EnterMode ) ;
-		doc.body.appendChild( editBlock ) ;
-	}
-	else
-		editBlock = doc.body ;
-
-	range.MoveToNodeContents( editBlock ) ;
-	range.Collapse( true ) ;
-	range.Select() ;
-	range.Release() ;
-}

+ 0 - 71
main/inc/lib/fckeditor/editor/_source/classes/fckevents.js

@@ -1,71 +0,0 @@
-/*
- * FCKeditor - The text editor for Internet - http://www.fckeditor.net
- * Copyright (C) 2003-2010 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 ==
- *
- * FCKEvents Class: used to handle events is a advanced way.
- */
-
-var FCKEvents = function( eventsOwner )
-{
-	this.Owner = eventsOwner ;
-	this._RegisteredEvents = new Object() ;
-}
-
-FCKEvents.prototype.AttachEvent = function( eventName, functionPointer )
-{
-	var aTargets ;
-
-	if ( !( aTargets = this._RegisteredEvents[ eventName ] ) )
-		this._RegisteredEvents[ eventName ] = [ functionPointer ] ;
-	else
-	{
-		// Check that the event handler isn't already registered with the same listener
-		// It doesn't detect function pointers belonging to an object (at least in Gecko)
-		if ( aTargets.IndexOf( functionPointer ) == -1 )
-			aTargets.push( functionPointer ) ;
-	}
-}
-
-FCKEvents.prototype.FireEvent = function( eventName, params )
-{
-	var bReturnValue = true ;
-
-	var oCalls = this._RegisteredEvents[ eventName ] ;
-
-	if ( oCalls )
-	{
-		for ( var i = 0 ; i < oCalls.length ; i++ )
-		{
-			try
-			{
-				bReturnValue = ( oCalls[ i ]( this.Owner, params ) && bReturnValue ) ;
-			}
-			catch(e)
-			{
-				// Ignore the following error. It may happen if pointing to a
-				// script not anymore available (#934):
-				// -2146823277 = Can't execute code from a freed script
-				if ( e.number != -2146823277 )
-					throw e ;
-			}
-		}
-	}
-
-	return bReturnValue ;
-}

+ 0 - 142
main/inc/lib/fckeditor/editor/_source/classes/fckhtmliterator.js

@@ -1,142 +0,0 @@
-/*
- * FCKeditor - The text editor for Internet - http://www.fckeditor.net
- * Copyright (C) 2003-2010 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 class can be used to interate through nodes inside a range.
- *
- * During interation, the provided range can become invalid, due to document
- * mutations, so CreateBookmark() used to restore it after processing, if
- * needed.
- */
-
-var FCKHtmlIterator = function( source )
-{
-	this._sourceHtml = source ;
-}
-FCKHtmlIterator.prototype =
-{
-	Next : function()
-	{
-		var sourceHtml = this._sourceHtml ;
-		if ( sourceHtml == null )
-			return null ;
-
-		var match = FCKRegexLib.HtmlTag.exec( sourceHtml ) ;
-		var isTag = false ;
-		var value = "" ;
-		if ( match )
-		{
-			if ( match.index > 0 )
-			{
-				value = sourceHtml.substr( 0, match.index ) ;
-				this._sourceHtml = sourceHtml.substr( match.index ) ;
-			}
-			else
-			{
-				isTag = true ;
-				value = match[0] ;
-				this._sourceHtml = sourceHtml.substr( match[0].length ) ;
-			}
-		}
-		else
-		{
-			value = sourceHtml ;
-			this._sourceHtml = null ;
-		}
-		return { 'isTag' : isTag, 'value' : value } ;
-	},
-
-	Each : function( func )
-	{
-		var chunk ;
-		while ( ( chunk = this.Next() ) )
-			func( chunk.isTag, chunk.value ) ;
-	}
-} ;
-/*
- * FCKeditor - The text editor for Internet - http://www.fckeditor.net
- * Copyright (C) 2003-2010 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 class can be used to interate through nodes inside a range.
- *
- * During interation, the provided range can become invalid, due to document
- * mutations, so CreateBookmark() used to restore it after processing, if
- * needed.
- */
-
-var FCKHtmlIterator = function( source )
-{
-	this._sourceHtml = source ;
-}
-FCKHtmlIterator.prototype =
-{
-	Next : function()
-	{
-		var sourceHtml = this._sourceHtml ;
-		if ( sourceHtml == null )
-			return null ;
-
-		var match = FCKRegexLib.HtmlTag.exec( sourceHtml ) ;
-		var isTag = false ;
-		var value = "" ;
-		if ( match )
-		{
-			if ( match.index > 0 )
-			{
-				value = sourceHtml.substr( 0, match.index ) ;
-				this._sourceHtml = sourceHtml.substr( match.index ) ;
-			}
-			else
-			{
-				isTag = true ;
-				value = match[0] ;
-				this._sourceHtml = sourceHtml.substr( match[0].length ) ;
-			}
-		}
-		else
-		{
-			value = sourceHtml ;
-			this._sourceHtml = null ;
-		}
-		return { 'isTag' : isTag, 'value' : value } ;
-	},
-
-	Each : function( func )
-	{
-		var chunk ;
-		while ( ( chunk = this.Next() ) )
-			func( chunk.isTag, chunk.value ) ;
-	}
-} ;

+ 0 - 103
main/inc/lib/fckeditor/editor/_source/classes/fckicon.js

@@ -1,103 +0,0 @@
-/*
- * FCKeditor - The text editor for Internet - http://www.fckeditor.net
- * Copyright (C) 2003-2010 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 ==
- *
- * FCKIcon Class: renders an icon from a single image, a strip or even a
- * spacer.
- */
-
-var FCKIcon = function( iconPathOrStripInfoArray )
-{
-	var sTypeOf = iconPathOrStripInfoArray ? typeof( iconPathOrStripInfoArray ) : 'undefined' ;
-	switch ( sTypeOf )
-	{
-		case 'number' :
-			this.Path = FCKConfig.SkinPath + 'fck_strip.gif' ;
-			this.Size = 16 ;
-			this.Position = iconPathOrStripInfoArray ;
-			break ;
-
-		case 'undefined' :
-			this.Path = FCK_SPACER_PATH ;
-			break ;
-
-		case 'string' :
-			this.Path = iconPathOrStripInfoArray ;
-			break ;
-
-		default :
-			// It is an array in the format [ StripFilePath, IconSize, IconPosition ]
-			this.Path		= iconPathOrStripInfoArray[0] ;
-			this.Size		= iconPathOrStripInfoArray[1] ;
-			this.Position	= iconPathOrStripInfoArray[2] ;
-	}
-}
-
-FCKIcon.prototype.CreateIconElement = function( document )
-{
-	var eIcon, eIconImage ;
-
-	if ( this.Position )		// It is using an icons strip image.
-	{
-		var sPos = '-' + ( ( this.Position - 1 ) * this.Size ) + 'px' ;
-
-		if ( FCKBrowserInfo.IsIE )
-		{
-			// <div class="TB_Button_Image"><img src="strip.gif" style="top:-16px"></div>
-
-			eIcon = document.createElement( 'DIV' ) ;
-
-			eIconImage = eIcon.appendChild( document.createElement( 'IMG' ) ) ;
-			eIconImage.src = this.Path ;
-			eIconImage.style.top = sPos ;
-		}
-		else
-		{
-			// <img class="TB_Button_Image" src="spacer.gif" style="background-position: 0px -16px;background-image: url(strip.gif);">
-
-			eIcon = document.createElement( 'IMG' ) ;
-			eIcon.src = FCK_SPACER_PATH ;
-			eIcon.style.backgroundPosition	= '0px ' + sPos ;
-			eIcon.style.backgroundImage		= 'url("' + this.Path + '")' ;
-		}
-	}
-	else					// It is using a single icon image.
-	{
-		if ( FCKBrowserInfo.IsIE )
-		{
-			// IE makes the button 1px higher if using the <img> directly, so we
-			// are changing to the <div> system to clip the image correctly.
-			eIcon = document.createElement( 'DIV' ) ;
-
-			eIconImage = eIcon.appendChild( document.createElement( 'IMG' ) ) ;
-			eIconImage.src = this.Path ? this.Path : FCK_SPACER_PATH ;
-		}
-		else
-		{
-			// This is not working well with IE. See notes above.
-			// <img class="TB_Button_Image" src="smiley.gif">
-			eIcon = document.createElement( 'IMG' ) ;
-			eIcon.src = this.Path ? this.Path : FCK_SPACER_PATH ;
-		}
-	}
-
-	eIcon.className = 'TB_Button_Image' ;
-
-	return eIcon ;
-}

+ 0 - 68
main/inc/lib/fckeditor/editor/_source/classes/fckiecleanup.js

@@ -1,68 +0,0 @@
-/*
- * FCKeditor - The text editor for Internet - http://www.fckeditor.net
- * Copyright (C) 2003-2010 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 ==
- *
- * FCKIECleanup Class: a generic class used as a tool to remove IE leaks.
- */
-
-var	FCKIECleanup = function( attachWindow )
-{
-	// If the attachWindow already have a cleanup object, just use that one.
-	if ( attachWindow._FCKCleanupObj )
-		this.Items = attachWindow._FCKCleanupObj.Items ;
-	else
-	{
-		this.Items = new Array() ;
-
-		attachWindow._FCKCleanupObj = this ;
-		FCKTools.AddEventListenerEx( attachWindow, 'unload', FCKIECleanup_Cleanup ) ;
-//		attachWindow.attachEvent( 'onunload', FCKIECleanup_Cleanup ) ;
-	}
-}
-
-FCKIECleanup.prototype.AddItem = function( dirtyItem, cleanupFunction )
-{
-	this.Items.push( [ dirtyItem, cleanupFunction ] ) ;
-}
-
-function FCKIECleanup_Cleanup()
-{
-	if ( !this._FCKCleanupObj || ( FCKConfig.MsWebBrowserControlCompat && !window.FCKUnloadFlag ) )
-		return ;
-
-	var aItems = this._FCKCleanupObj.Items ;
-
-	while ( aItems.length > 0 )
-	{
-
-		// It is important to remove from the end to the beginning (pop()),
-		// because of the order things get created in the editor. In the code,
-		// elements in deeper position in the DOM are placed at the end of the
-		// cleanup function, so we must cleanup then first, otherwise IE could
-		// throw some crazy memory errors (IE bug).
-		var oItem = aItems.pop() ;
-		if ( oItem )
-			oItem[1].call( oItem[0] ) ;
-	}
-
-	this._FCKCleanupObj = null ;
-
-	if ( CollectGarbage )
-		CollectGarbage() ;
-}

+ 0 - 64
main/inc/lib/fckeditor/editor/_source/classes/fckimagepreloader.js

@@ -1,64 +0,0 @@
-/*
- * FCKeditor - The text editor for Internet - http://www.fckeditor.net
- * Copyright (C) 2003-2010 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 ==
- *
- * Preload a list of images, firing an event when complete.
- */
-
-var FCKImagePreloader = function()
-{
-	this._Images = new Array() ;
-}
-
-FCKImagePreloader.prototype =
-{
-	AddImages : function( images )
-	{
-		if ( typeof( images ) == 'string' )
-			images = images.split( ';' ) ;
-
-		this._Images = this._Images.concat( images ) ;
-	},
-
-	Start : function()
-	{
-		var aImages = this._Images ;
-		this._PreloadCount = aImages.length ;
-
-		for ( var i = 0 ; i < aImages.length ; i++ )
-		{
-			var eImg = document.createElement( 'img' ) ;
-			FCKTools.AddEventListenerEx( eImg, 'load', _FCKImagePreloader_OnImage, this ) ;
-			FCKTools.AddEventListenerEx( eImg, 'error', _FCKImagePreloader_OnImage, this ) ;
-			eImg.src = aImages[i] ;
-
-			_FCKImagePreloader_ImageCache.push( eImg ) ;
-		}
-	}
-};
-
-// All preloaded images must be placed in a global array, otherwise the preload
-// magic will not happen.
-var _FCKImagePreloader_ImageCache = new Array() ;
-
-function _FCKImagePreloader_OnImage( ev, imagePreloader )
-{
-	if ( (--imagePreloader._PreloadCount) == 0 && imagePreloader.OnComplete )
-		imagePreloader.OnComplete() ;
-}

+ 0 - 141
main/inc/lib/fckeditor/editor/_source/classes/fckkeystrokehandler.js

@@ -1,141 +0,0 @@
-/*
- * FCKeditor - The text editor for Internet - http://www.fckeditor.net
- * Copyright (C) 2003-2010 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 ==
- *
- * Control keyboard keystroke combinations.
- */
-
-var FCKKeystrokeHandler = function( cancelCtrlDefaults )
-{
-	this.Keystrokes = new Object() ;
-	this.CancelCtrlDefaults = ( cancelCtrlDefaults !== false ) ;
-}
-
-/*
- * Listen to keystroke events in an element or DOM document object.
- *		@target: The element or document to listen to keystroke events.
- */
-FCKKeystrokeHandler.prototype.AttachToElement = function( target )
-{
-	// For newer browsers, it is enough to listen to the keydown event only.
-	// Some browsers instead, don't cancel key events in the keydown, but in the
-	// keypress. So we must do a longer trip in those cases.
-	FCKTools.AddEventListenerEx( target, 'keydown', _FCKKeystrokeHandler_OnKeyDown, this ) ;
-	if ( FCKBrowserInfo.IsGecko10 || FCKBrowserInfo.IsOpera || ( FCKBrowserInfo.IsGecko && FCKBrowserInfo.IsMac ) )
-		FCKTools.AddEventListenerEx( target, 'keypress', _FCKKeystrokeHandler_OnKeyPress, this ) ;
-}
-
-/*
- * Sets a list of keystrokes. It can receive either a single array or "n"
- * arguments, each one being an array of 1 or 2 elemenst. The first element
- * is the keystroke combination, and the second is the value to assign to it.
- * If the second element is missing, the keystroke definition is removed.
- */
-FCKKeystrokeHandler.prototype.SetKeystrokes = function()
-{
-	// Look through the arguments.
-	for ( var i = 0 ; i < arguments.length ; i++ )
-	{
-		var keyDef = arguments[i] ;
-
-		// If the configuration for the keystrokes is missing some element or has any extra comma
-		// this item won't be valid, so skip it and keep on processing.
-		if ( !keyDef )
-			continue ;
-
-		if ( typeof( keyDef[0] ) == 'object' )		// It is an array with arrays defining the keystrokes.
-			this.SetKeystrokes.apply( this, keyDef ) ;
-		else
-		{
-			if ( keyDef.length == 1 )		// If it has only one element, remove the keystroke.
-				delete this.Keystrokes[ keyDef[0] ] ;
-			else							// Otherwise add it.
-				this.Keystrokes[ keyDef[0] ] = keyDef[1] === true ? true : keyDef ;
-		}
-	}
-}
-
-function _FCKKeystrokeHandler_OnKeyDown( ev, keystrokeHandler )
-{
-	// Get the key code.
-	var keystroke = ev.keyCode || ev.which ;
-
-	// Combine it with the CTRL, SHIFT and ALT states.
-	var keyModifiers = 0 ;
-
-	if ( ev.ctrlKey || ev.metaKey )
-		keyModifiers += CTRL ;
-
-	if ( ev.shiftKey )
-		keyModifiers += SHIFT ;
-
-	if ( ev.altKey )
-		keyModifiers += ALT ;
-
-	var keyCombination = keystroke + keyModifiers ;
-
-	var cancelIt = keystrokeHandler._CancelIt = false ;
-
-	// Look for its definition availability.
-	var keystrokeValue = keystrokeHandler.Keystrokes[ keyCombination ] ;
-
-//	FCKDebug.Output( 'KeyDown: ' + keyCombination + ' - Value: ' + keystrokeValue ) ;
-
-	// If the keystroke is defined
-	if ( keystrokeValue )
-	{
-		// If the keystroke has been explicitly set to "true" OR calling the
-		// "OnKeystroke" event, it doesn't return "true", the default behavior
-		// must be preserved.
-		if ( keystrokeValue === true || !( keystrokeHandler.OnKeystroke && keystrokeHandler.OnKeystroke.apply( keystrokeHandler, keystrokeValue ) ) )
-			return true ;
-
-		cancelIt = true ;
-	}
-
-	// By default, it will cancel all combinations with the CTRL key only (except positioning keys).
-	if ( cancelIt || ( keystrokeHandler.CancelCtrlDefaults && keyModifiers == CTRL && ( keystroke < 33 || keystroke > 40 ) ) )
-	{
-		keystrokeHandler._CancelIt = true ;
-
-		if ( ev.preventDefault )
-			return ev.preventDefault() ;
-
-		ev.returnValue = false ;
-		ev.cancelBubble = true ;
-		return false ;
-	}
-
-	return true ;
-}
-
-function _FCKKeystrokeHandler_OnKeyPress( ev, keystrokeHandler )
-{
-	if ( keystrokeHandler._CancelIt )
-	{
-//		FCKDebug.Output( 'KeyPress Cancel', 'Red') ;
-
-		if ( ev.preventDefault )
-			return ev.preventDefault() ;
-
-		return false ;
-	}
-
-	return true ;
-}

+ 0 - 153
main/inc/lib/fckeditor/editor/_source/classes/fckmenublock.js

@@ -1,153 +0,0 @@
-/*
- * FCKeditor - The text editor for Internet - http://www.fckeditor.net
- * Copyright (C) 2003-2010 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 ==
- *
- * Renders a list of menu items.
- */
-
-var FCKMenuBlock = function()
-{
-	this._Items	= new Array() ;
-}
-
-
-FCKMenuBlock.prototype.Count = function()
-{
-	return this._Items.length ;
-}
-
-FCKMenuBlock.prototype.AddItem = function( name, label, iconPathOrStripInfoArrayOrIndex, isDisabled, customData )
-{
-	var oItem = new FCKMenuItem( this, name, label, iconPathOrStripInfoArrayOrIndex, isDisabled, customData ) ;
-
-	oItem.OnClick		= FCKTools.CreateEventListener( FCKMenuBlock_Item_OnClick, this ) ;
-	oItem.OnActivate	= FCKTools.CreateEventListener( FCKMenuBlock_Item_OnActivate, this ) ;
-
-	this._Items.push( oItem ) ;
-
-	return oItem ;
-}
-
-FCKMenuBlock.prototype.AddSeparator = function()
-{
-	this._Items.push( new FCKMenuSeparator() ) ;
-}
-
-FCKMenuBlock.prototype.RemoveAllItems = function()
-{
-	this._Items = new Array() ;
-
-	var eItemsTable = this._ItemsTable ;
-	if ( eItemsTable )
-	{
-		while ( eItemsTable.rows.length > 0 )
-			eItemsTable.deleteRow( 0 ) ;
-	}
-}
-
-FCKMenuBlock.prototype.Create = function( parentElement )
-{
-	if ( !this._ItemsTable )
-	{
-		if ( FCK.IECleanup )
-			FCK.IECleanup.AddItem( this, FCKMenuBlock_Cleanup ) ;
-
-		this._Window = FCKTools.GetElementWindow( parentElement ) ;
-
-		var oDoc = FCKTools.GetElementDocument( parentElement ) ;
-
-		var eTable = parentElement.appendChild( oDoc.createElement( 'table' ) ) ;
-		eTable.cellPadding = 0 ;
-		eTable.cellSpacing = 0 ;
-
-		FCKTools.DisableSelection( eTable ) ;
-
-		var oMainElement = eTable.insertRow(-1).insertCell(-1) ;
-		oMainElement.className = 'MN_Menu' ;
-
-		var eItemsTable = this._ItemsTable = oMainElement.appendChild( oDoc.createElement( 'table' ) ) ;
-		eItemsTable.cellPadding = 0 ;
-		eItemsTable.cellSpacing = 0 ;
-	}
-
-	for ( var i = 0 ; i < this._Items.length ; i++ )
-		this._Items[i].Create( this._ItemsTable ) ;
-}
-
-/* Events */
-
-function FCKMenuBlock_Item_OnClick( clickedItem, menuBlock )
-{
-	if ( menuBlock.Hide )
-		menuBlock.Hide() ;
-
-	FCKTools.RunFunction( menuBlock.OnClick, menuBlock, [ clickedItem ] ) ;
-}
-
-function FCKMenuBlock_Item_OnActivate( menuBlock )
-{
-	var oActiveItem = menuBlock._ActiveItem ;
-
-	if ( oActiveItem && oActiveItem != this )
-	{
-		// Set the focus to this menu block window (to fire OnBlur on opened panels).
-		if ( !FCKBrowserInfo.IsIE && oActiveItem.HasSubMenu && !this.HasSubMenu )
-		{
-			menuBlock._Window.focus() ;
-
-			// Due to the event model provided by Opera, we need to set
-			// HasFocus here as the above focus() call will not fire the focus
-			// event in the panel immediately (#1200).
-			menuBlock.Panel.HasFocus = true ;
-		}
-
-		oActiveItem.Deactivate() ;
-	}
-
-	menuBlock._ActiveItem = this ;
-}
-
-function FCKMenuBlock_Cleanup()
-{
-	this._Window = null ;
-	this._ItemsTable = null ;
-}
-
-// ################# //
-
-var FCKMenuSeparator = function()
-{}
-
-FCKMenuSeparator.prototype.Create = function( parentTable )
-{
-	var oDoc = FCKTools.GetElementDocument( parentTable ) ;
-
-	var r = parentTable.insertRow(-1) ;
-
-	var eCell = r.insertCell(-1) ;
-	eCell.className = 'MN_Separator MN_Icon' ;
-
-	eCell = r.insertCell(-1) ;
-	eCell.className = 'MN_Separator' ;
-	eCell.appendChild( oDoc.createElement( 'DIV' ) ).className = 'MN_Separator_Line' ;
-
-	eCell = r.insertCell(-1) ;
-	eCell.className = 'MN_Separator' ;
-	eCell.appendChild( oDoc.createElement( 'DIV' ) ).className = 'MN_Separator_Line' ;
-}

+ 0 - 54
main/inc/lib/fckeditor/editor/_source/classes/fckmenublockpanel.js

@@ -1,54 +0,0 @@
-/*
- * FCKeditor - The text editor for Internet - http://www.fckeditor.net
- * Copyright (C) 2003-2010 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 class is a menu block that behaves like a panel. It's a mix of the
- * FCKMenuBlock and FCKPanel classes.
- */
-
-var FCKMenuBlockPanel = function()
-{
-	// Call the "base" constructor.
-	FCKMenuBlock.call( this ) ;
-}
-
-FCKMenuBlockPanel.prototype = new FCKMenuBlock() ;
-
-
-// Override the create method.
-FCKMenuBlockPanel.prototype.Create = function()
-{
-	var oPanel = this.Panel = ( this.Parent && this.Parent.Panel ? this.Parent.Panel.CreateChildPanel() : new FCKPanel() ) ;
-	oPanel.AppendStyleSheet( FCKConfig.SkinEditorCSS ) ;
-
-	// Call the "base" implementation.
-	FCKMenuBlock.prototype.Create.call( this, oPanel.MainNode ) ;
-}
-
-FCKMenuBlockPanel.prototype.Show = function( x, y, relElement )
-{
-	if ( !this.Panel.CheckIsOpened() )
-		this.Panel.Show( x, y, relElement ) ;
-}
-
-FCKMenuBlockPanel.prototype.Hide = function()
-{
-	if ( this.Panel.CheckIsOpened() )
-		this.Panel.Hide() ;
-}

+ 0 - 161
main/inc/lib/fckeditor/editor/_source/classes/fckmenuitem.js

@@ -1,161 +0,0 @@
-/*
- * FCKeditor - The text editor for Internet - http://www.fckeditor.net
- * Copyright (C) 2003-2010 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 ==
- *
- * Defines and renders a menu items in a menu block.
- */
-
-var FCKMenuItem = function( parentMenuBlock, name, label, iconPathOrStripInfoArray, isDisabled, customData )
-{
-	this.Name		= name ;
-	this.Label		= label || name ;
-	this.IsDisabled	= isDisabled ;
-
-	this.Icon = new FCKIcon( iconPathOrStripInfoArray ) ;
-
-	this.SubMenu			= new FCKMenuBlockPanel() ;
-	this.SubMenu.Parent		= parentMenuBlock ;
-	this.SubMenu.OnClick	= FCKTools.CreateEventListener( FCKMenuItem_SubMenu_OnClick, this ) ;
-	this.CustomData = customData ;
-
-	if ( FCK.IECleanup )
-		FCK.IECleanup.AddItem( this, FCKMenuItem_Cleanup ) ;
-}
-
-
-FCKMenuItem.prototype.AddItem = function( name, label, iconPathOrStripInfoArrayOrIndex, isDisabled, customData )
-{
-	this.HasSubMenu = true ;
-	return this.SubMenu.AddItem( name, label, iconPathOrStripInfoArrayOrIndex, isDisabled, customData ) ;
-}
-
-FCKMenuItem.prototype.AddSeparator = function()
-{
-	this.SubMenu.AddSeparator() ;
-}
-
-FCKMenuItem.prototype.Create = function( parentTable )
-{
-	var bHasSubMenu = this.HasSubMenu ;
-
-	var oDoc = FCKTools.GetElementDocument( parentTable ) ;
-
-	// Add a row in the table to hold the menu item.
-	var r = this.MainElement = parentTable.insertRow(-1) ;
-	r.className = this.IsDisabled ? 'MN_Item_Disabled' : 'MN_Item' ;
-
-	// Set the row behavior.
-	if ( !this.IsDisabled )
-	{
-		FCKTools.AddEventListenerEx( r, 'mouseover', FCKMenuItem_OnMouseOver, [ this ] ) ;
-		FCKTools.AddEventListenerEx( r, 'click', FCKMenuItem_OnClick, [ this ] ) ;
-
-		if ( !bHasSubMenu )
-			FCKTools.AddEventListenerEx( r, 'mouseout', FCKMenuItem_OnMouseOut, [ this ] ) ;
-	}
-
-	// Create the icon cell.
-	var eCell = r.insertCell(-1) ;
-	eCell.className = 'MN_Icon' ;
-	eCell.appendChild( this.Icon.CreateIconElement( oDoc ) ) ;
-
-	// Create the label cell.
-	eCell = r.insertCell(-1) ;
-	eCell.className = 'MN_Label' ;
-	eCell.noWrap = true ;
-	eCell.appendChild( oDoc.createTextNode( this.Label ) ) ;
-
-	// Create the arrow cell and setup the sub menu panel (if needed).
-	eCell = r.insertCell(-1) ;
-	if ( bHasSubMenu )
-	{
-		eCell.className = 'MN_Arrow' ;
-
-		// The arrow is a fixed size image.
-		var eArrowImg = eCell.appendChild( oDoc.createElement( 'IMG' ) ) ;
-		eArrowImg.src = FCK_IMAGES_PATH + 'arrow_' + FCKLang.Dir + '.gif' ;
-		eArrowImg.width	 = 4 ;
-		eArrowImg.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 )
-	{
-		// Show the child menu block. The ( +2, -2 ) correction is done because
-		// of the padding in the skin. It is not a good solution because one
-		// could change the skin and so the final result would not be accurate.
-		// For now it is ok because we are controlling the skin.
-		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() ;
-}
-
-/* Events */
-
-function FCKMenuItem_SubMenu_OnClick( clickedItem, listeningItem )
-{
-	FCKTools.RunFunction( listeningItem.OnClick, listeningItem, [ clickedItem ] ) ;
-}
-
-function FCKMenuItem_SubMenu_OnHide( menuItem )
-{
-	menuItem.Deactivate() ;
-}
-
-function FCKMenuItem_OnClick( ev, menuItem )
-{
-	if ( menuItem.HasSubMenu )
-		menuItem.Activate() ;
-	else
-	{
-		menuItem.Deactivate() ;
-		FCKTools.RunFunction( menuItem.OnClick, menuItem, [ menuItem ] ) ;
-	}
-}
-
-function FCKMenuItem_OnMouseOver( ev, menuItem )
-{
-	menuItem.Activate() ;
-}
-
-function FCKMenuItem_OnMouseOut( ev, menuItem )
-{
-	menuItem.Deactivate() ;
-}
-
-function FCKMenuItem_Cleanup()
-{
-	this.MainElement = null ;
-}

+ 0 - 466
main/inc/lib/fckeditor/editor/_source/classes/fckpanel.js

@@ -1,466 +0,0 @@
-/*
- * FCKeditor - The text editor for Internet - http://www.fckeditor.net
- * Copyright (C) 2003-2010 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 ==
- *
- * Component that creates floating panels. It is used by many
- * other components, like the toolbar items, context menu, etc...
- */
-
-var FCKPanel = function( parentWindow )
-{
-	this.IsRTL			= ( FCKLang.Dir == 'rtl' ) ;
-	this.IsContextMenu	= false ;
-	this._LockCounter	= 0 ;
-
-	this._Window = parentWindow || window ;
-
-	var oDocument ;
-
-	if ( FCKBrowserInfo.IsIE )
-	{
-		// Create the Popup that will hold the panel.
-		// The popup has to be created before playing with domain hacks, see #1666.
-		this._Popup	= this._Window.createPopup() ;
-
-		// this._Window cannot be accessed while playing with domain hacks, but local variable is ok.
-		// See #1666.
-		var pDoc = this._Window.document ;
-
-		// This is a trick to IE6 (not IE7). The original domain must be set
-		// before creating the popup, so we are able to take a refence to the
-		// document inside of it, and the set the proper domain for it. (#123)
-		if ( FCK_IS_CUSTOM_DOMAIN && !FCKBrowserInfo.IsIE7 )
-		{
-			pDoc.domain = FCK_ORIGINAL_DOMAIN ;
-			document.domain = FCK_ORIGINAL_DOMAIN ;
-		}
-
-		oDocument = this.Document = this._Popup.document ;
-
-		// Set the proper domain inside the popup.
-		if ( FCK_IS_CUSTOM_DOMAIN )
-		{
-			oDocument.domain = FCK_RUNTIME_DOMAIN ;
-			pDoc.domain = FCK_RUNTIME_DOMAIN ;
-			document.domain = FCK_RUNTIME_DOMAIN ;
-		}
-
-		FCK.IECleanup.AddItem( this, FCKPanel_Cleanup ) ;
-	}
-	else
-	{
-		var oIFrame = this._IFrame = this._Window.document.createElement('iframe') ;
-		FCKTools.ResetStyles( oIFrame );
-		oIFrame.src					= 'javascript:void(0)' ;
-		oIFrame.allowTransparency	= true ;
-		oIFrame.frameBorder			= '0' ;
-		oIFrame.scrolling			= 'no' ;
-		oIFrame.style.width = oIFrame.style.height = '0px' ;
-		FCKDomTools.SetElementStyles( oIFrame,
-			{
-				position	: 'absolute',
-				zIndex		: FCKConfig.FloatingPanelsZIndex
-			} ) ;
-
-		this._Window.document.body.appendChild( oIFrame ) ;
-
-		var oIFrameWindow = oIFrame.contentWindow ;
-
-		oDocument = this.Document = oIFrameWindow.document ;
-
-		// Workaround for Safari 12256. Ticket #63
-		var sBase = '' ;
-		if ( FCKBrowserInfo.IsSafari )
-			sBase = '<base href="' + window.document.location + '">' ;
-
-		// Initialize the IFRAME document body.
-		oDocument.open() ;
-		oDocument.write( '<html><head>' + sBase + '<\/head><body style="margin:0px;padding:0px;"><\/body><\/html>' ) ;
-		oDocument.close() ;
-
-		if( FCKBrowserInfo.IsAIR )
-			FCKAdobeAIR.Panel_Contructor( oDocument, window.document.location ) ;
-
-		FCKTools.AddEventListenerEx( oIFrameWindow, 'focus', FCKPanel_Window_OnFocus, this ) ;
-		FCKTools.AddEventListenerEx( oIFrameWindow, 'blur', FCKPanel_Window_OnBlur, this ) ;
-	}
-
-	oDocument.dir = FCKLang.Dir ;
-
-	FCKTools.AddEventListener( oDocument, 'contextmenu', FCKTools.CancelEvent ) ;
-
-
-	// Create the main DIV that is used as the panel base.
-	this.MainNode = oDocument.body.appendChild( oDocument.createElement('DIV') ) ;
-
-	// The "float" property must be set so Firefox calculates the size correctly.
-	this.MainNode.style.cssFloat = this.IsRTL ? 'right' : 'left' ;
-}
-
-
-FCKPanel.prototype.AppendStyleSheet = function( styleSheet )
-{
-	FCKTools.AppendStyleSheet( this.Document, styleSheet ) ;
-}
-
-FCKPanel.prototype.Preload = function( x, y, relElement )
-{
-	// The offsetWidth and offsetHeight properties are not available if the
-	// element is not visible. So we must "show" the popup with no size to
-	// be able to use that values in the second call (IE only).
-	if ( this._Popup )
-		this._Popup.show( x, y, 0, 0, relElement ) ;
-}
-
-// Workaround for IE7 problem. See #1982
-// Submenus are restricted to the size of its parent, so we increase it as needed.
-// Returns true if the panel has been repositioned
-FCKPanel.prototype.ResizeForSubpanel = function( panel, width, height )
-{
-	if ( !FCKBrowserInfo.IsIE7 )
-		return false ;
-
-	if ( !this._Popup.isOpen )
-	{
-		this.Subpanel = null ;
-		return false ;
-	}
-
-	// If we are resetting the extra space
-	if ( width == 0 && height == 0 )
-	{
-		// Another subpanel is being shown, so we must not shrink back
-		if (this.Subpanel !== panel)
-			return false ;
-
-		// Reset values.
-		// We leave the IncreasedY untouched to avoid vertical movement of the
-		// menu if the submenu is higher than the main menu.
-		this.Subpanel = null ;
-		this.IncreasedX = 0 ;
-	}
-	else
-	{
-		this.Subpanel = panel ;
-		// If the panel has already been increased enough, get out
-		if ( ( this.IncreasedX >= width ) && ( this.IncreasedY >= height ) )
-			return false ;
-
-		this.IncreasedX = Math.max( this.IncreasedX, width ) ;
-		this.IncreasedY = Math.max( this.IncreasedY, height ) ;
-	}
-
-	var x = this.ShowRect.x ;
-	var w = this.IncreasedX ;
-	if ( this.IsRTL )
-		x  = x - w ;
-
-	// Horizontally increase as needed (sum of widths).
-	// Vertically, use only the maximum of this menu or the submenu
-	var finalWidth = this.ShowRect.w + w ;
-	var finalHeight = Math.max( this.ShowRect.h, this.IncreasedY ) ;
-	if ( this.ParentPanel )
-		this.ParentPanel.ResizeForSubpanel( this, finalWidth, finalHeight ) ;
-	this._Popup.show( x, this.ShowRect.y, finalWidth, finalHeight, this.RelativeElement ) ;
-
-	return this.IsRTL ;
-}
-
-FCKPanel.prototype.Show = function( x, y, relElement, width, height )
-{
-	var iMainWidth ;
-	var eMainNode = this.MainNode ;
-
-	if ( this._Popup )
-	{
-		// The offsetWidth and offsetHeight properties are not available if the
-		// element is not visible. So we must "show" the popup with no size to
-		// be able to use that values in the second call.
-		this._Popup.show( x, y, 0, 0, relElement ) ;
-
-		// The following lines must be place after the above "show", otherwise it
-		// doesn't has the desired effect.
-		FCKDomTools.SetElementStyles( eMainNode,
-			{
-				width	: width ? width + 'px' : '',
-				height	: height ? height + 'px' : ''
-			} ) ;
-
-		iMainWidth = eMainNode.offsetWidth ;
-
-		if ( FCKBrowserInfo.IsIE7 )
-		{
-			if (this.ParentPanel && this.ParentPanel.ResizeForSubpanel(this, iMainWidth, eMainNode.offsetHeight) )
-			{
-				// As the parent has moved, allow the browser to update its internal data, so the new position is correct.
-				FCKTools.RunFunction( this.Show, this, [x, y, relElement] ) ;
-				return ;
-			}
-		}
-
-		if ( this.IsRTL )
-		{
-			if ( this.IsContextMenu )
-				x  = x - iMainWidth + 1 ;
-			else if ( relElement )
-				x  = ( x * -1 ) + relElement.offsetWidth - iMainWidth ;
-		}
-
-		if ( FCKBrowserInfo.IsIE7 )
-		{
-			// Store the values that will be used by the ResizeForSubpanel function
-			this.ShowRect = {x:x, y:y, w:iMainWidth, h:eMainNode.offsetHeight} ;
-			this.IncreasedX = 0 ;
-			this.IncreasedY = 0 ;
-			this.RelativeElement = relElement ;
-		}
-
-		// Save the popup related arguments so they can be used by others (e.g. SCAYT).
-		this._PopupArgs = [x, y, iMainWidth, eMainNode.offsetHeight, relElement];
-
-		// Second call: Show the Popup at the specified location, with the correct size.
-		this._Popup.show( x, y, iMainWidth, eMainNode.offsetHeight, relElement ) ;
-
-		if ( this.OnHide )
-		{
-			if ( this._Timer )
-				CheckPopupOnHide.call( this, true ) ;
-
-			this._Timer = FCKTools.SetInterval( CheckPopupOnHide, 100, this ) ;
-		}
-	}
-	else
-	{
-		// Do not fire OnBlur while the panel is opened.
-		if ( typeof( FCK.ToolbarSet.CurrentInstance.FocusManager ) != 'undefined' )
-			FCK.ToolbarSet.CurrentInstance.FocusManager.Lock() ;
-
-		if ( this.ParentPanel )
-		{
-			this.ParentPanel.Lock() ;
-
-			// Due to a bug on FF3, we must ensure that the parent panel will
-			// blur (#1584).
-			FCKPanel_Window_OnBlur( null, this.ParentPanel ) ;
-		}
-
-		// Toggle the iframe scrolling attribute to prevent the panel
-		// scrollbars from disappearing in FF Mac. (#191)
-		if ( FCKBrowserInfo.IsGecko && FCKBrowserInfo.IsMac )
-		{
-			this._IFrame.scrolling = '' ;
-			FCKTools.RunFunction( function(){ this._IFrame.scrolling = 'no'; }, this ) ;
-		}
-
-		// Be sure we'll not have more than one Panel opened at the same time.
-		// Do not unlock focus manager here because we're displaying another floating panel
-		// instead of returning the editor to a "no panel" state (Bug #1514).
-		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( eMainNode,
-			{
-				width	: width ? width + 'px' : '',
-				height	: height ? height + 'px' : ''
-			} ) ;
-
-		iMainWidth = eMainNode.offsetWidth ;
-
-		if ( !width )	this._IFrame.width	= 1 ;
-		if ( !height )	this._IFrame.height	= 1 ;
-
-		// This is weird... but with Firefox, we must get the offsetWidth before
-		// setting the _IFrame size (which returns "0"), and then after that,
-		// to return the correct width. Remove the first step and it will not
-		// work when the editor is in RTL.
-		//
-		// The "|| eMainNode.firstChild.offsetWidth" part has been added
-		// for Opera compatibility (see #570).
-		iMainWidth = eMainNode.offsetWidth || eMainNode.firstChild.offsetWidth ;
-
-		// Base the popup coordinates upon the coordinates of relElement.
-		var oPos = FCKTools.GetDocumentPosition( this._Window,
-			relElement.nodeType == 9 ?
-				( FCKTools.IsStrictMode( relElement ) ? relElement.documentElement : relElement.body ) :
-				relElement ) ;
-
-		// Minus the offsets provided by any positioned parent element of the panel iframe.
-		var positionedAncestor = FCKDomTools.GetPositionedAncestor( this._IFrame.parentNode ) ;
-		if ( positionedAncestor )
-		{
-			var nPos = FCKTools.GetDocumentPosition( FCKTools.GetElementWindow( positionedAncestor ), positionedAncestor ) ;
-			oPos.x -= nPos.x ;
-			oPos.y -= nPos.y ;
-		}
-
-		if ( this.IsRTL && !this.IsContextMenu )
-			x = ( x * -1 ) ;
-
-		x += oPos.x ;
-		y += oPos.y ;
-
-		if ( this.IsRTL )
-		{
-			if ( this.IsContextMenu )
-				x  = x - iMainWidth + 1 ;
-			else if ( relElement )
-				x  = x + relElement.offsetWidth - iMainWidth ;
-		}
-		else
-		{
-			var oViewPaneSize = FCKTools.GetViewPaneSize( this._Window ) ;
-			var oScrollPosition = FCKTools.GetScrollPosition( this._Window ) ;
-
-			var iViewPaneHeight	= oViewPaneSize.Height + oScrollPosition.Y ;
-			var iViewPaneWidth	= oViewPaneSize.Width + oScrollPosition.X ;
-
-			if ( ( x + iMainWidth ) > iViewPaneWidth )
-				x -= x + iMainWidth - iViewPaneWidth ;
-
-			if ( ( y + eMainNode.offsetHeight ) > iViewPaneHeight )
-				y -= y + eMainNode.offsetHeight - iViewPaneHeight ;
-		}
-
-		// Set the context menu DIV in the specified location.
-		FCKDomTools.SetElementStyles( this._IFrame,
-			{
-				left	: x + 'px',
-				top		: y + 'px'
-			} ) ;
-
-		// Move the focus to the IFRAME so we catch the "onblur".
-		this._IFrame.contentWindow.focus() ;
-		this._IsOpened = true ;
-
-		var me = this ;
-		this._resizeTimer = setTimeout( function()
-			{
-				var iWidth = eMainNode.offsetWidth || eMainNode.firstChild.offsetWidth ;
-				var iHeight = eMainNode.offsetHeight ;
-				me._IFrame.style.width = iWidth + 'px' ;
-				me._IFrame.style.height = iHeight + 'px' ;
-
-			}, 0 ) ;
-
-		FCK.ToolbarSet.CurrentInstance.GetInstanceObject( 'FCKPanel' )._OpenedPanel = this ;
-	}
-
-	FCKTools.RunFunction( this.OnShow, this ) ;
-}
-
-FCKPanel.prototype.Hide = function( ignoreOnHide, ignoreFocusManagerUnlock )
-{
-	if ( this._Popup )
-		this._Popup.hide() ;
-	else
-	{
-		if ( !this._IsOpened || this._LockCounter > 0 )
-			return ;
-
-		// Enable the editor to fire the "OnBlur".
-		if ( typeof( FCKFocusManager ) != 'undefined' && !ignoreFocusManagerUnlock )
-			FCKFocusManager.Unlock() ;
-
-		// It is better to set the sizes to 0, otherwise Firefox would have
-		// rendering problems.
-		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 ( !ignoreOnHide )
-			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 oWindow = this._Popup ? FCKTools.GetDocumentWindow( this.Document ) : this._Window ;
-
-	var oChildPanel = new FCKPanel( oWindow ) ;
-	oChildPanel.ParentPanel = this ;
-
-	return oChildPanel ;
-}
-
-FCKPanel.prototype.Lock = function()
-{
-	this._LockCounter++ ;
-}
-
-FCKPanel.prototype.Unlock = function()
-{
-	if ( --this._LockCounter == 0 && !this.HasFocus )
-		this.Hide() ;
-}
-
-/* Events */
-
-function FCKPanel_Window_OnFocus( e, panel )
-{
-	panel.HasFocus = true ;
-}
-
-function FCKPanel_Window_OnBlur( e, panel )
-{
-	panel.HasFocus = false ;
-
-	if ( panel._LockCounter == 0 )
-		FCKTools.RunFunction( panel.Hide, panel ) ;
-}
-
-function CheckPopupOnHide( forceHide )
-{
-	if ( forceHide || !this._Popup.isOpen )
-	{
-		window.clearInterval( this._Timer ) ;
-		this._Timer = null ;
-
-		if (this._Popup && this.ParentPanel && !forceHide)
-			this.ParentPanel.ResizeForSubpanel(this, 0, 0) ;
-
-		FCKTools.RunFunction( this.OnHide, this ) ;
-	}
-}
-
-function FCKPanel_Cleanup()
-{
-	this._Popup = null ;
-	this._Window = null ;
-	this.Document = null ;
-	this.MainNode = null ;
-	this.RelativeElement = null ;
-}

+ 0 - 56
main/inc/lib/fckeditor/editor/_source/classes/fckplugin.js

@@ -1,56 +0,0 @@
-/*
- * FCKeditor - The text editor for Internet - http://www.fckeditor.net
- * Copyright (C) 2003-2010 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 ==
- *
- * FCKPlugin Class: Represents a single plugin.
- */
-
-var FCKPlugin = function( name, availableLangs, basePath )
-{
-	this.Name = name ;
-	this.BasePath = basePath ? basePath : FCKConfig.PluginsPath ;
-	this.Path = this.BasePath + name + '/' ;
-
-	if ( !availableLangs || availableLangs.length == 0 )
-		this.AvailableLangs = new Array() ;
-	else
-		this.AvailableLangs = availableLangs.split(',') ;
-}
-
-FCKPlugin.prototype.Load = function()
-{
-	// Load the language file, if defined.
-	if ( this.AvailableLangs.length > 0 )
-	{
-		var sLang ;
-
-		// Check if the plugin has the language file for the active language.
-		if ( this.AvailableLangs.IndexOf( FCKLanguageManager.ActiveLanguage.Code ) >= 0 )
-			sLang = FCKLanguageManager.ActiveLanguage.Code ;
-		else
-			// Load the default language file (first one) if the current one is not available.
-			sLang = this.AvailableLangs[0] ;
-
-		// Add the main plugin script.
-		LoadScript( this.Path + 'lang/' + sLang + '.js' ) ;
-	}
-
-	// Add the main plugin script.
-	LoadScript( this.Path + 'fckplugin.js' ) ;
-}

+ 0 - 376
main/inc/lib/fckeditor/editor/_source/classes/fckspecialcombo.js

@@ -1,376 +0,0 @@
-/*
- * FCKeditor - The text editor for Internet - http://www.fckeditor.net
- * Copyright (C) 2003-2010 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 ==
- *
- * FCKSpecialCombo Class: represents a special combo.
- */
-
-var FCKSpecialCombo = function( caption, fieldWidth, panelWidth, panelMaxHeight, parentWindow )
-{
-	// Default properties values.
-	this.FieldWidth		= fieldWidth || 100 ;
-	this.PanelWidth		= panelWidth || 150 ;
-	this.PanelMaxHeight	= panelMaxHeight || 150 ;
-	this.Label			= '&nbsp;' ;
-	this.Caption		= caption ;
-	this.Tooltip		= caption ;
-	this.Style			= FCK_TOOLBARITEM_ICONTEXT ;
-
-	this.Enabled = true ;
-
-	this.Items = new Object() ;
-
-	this._Panel = new FCKPanel( parentWindow || window ) ;
-	this._Panel.AppendStyleSheet( FCKConfig.SkinEditorCSS ) ;
-	this._PanelBox = this._Panel.MainNode.appendChild( this._Panel.Document.createElement( 'DIV' ) ) ;
-	this._PanelBox.className = 'SC_Panel' ;
-	this._PanelBox.style.width = this.PanelWidth + 'px' ;
-
-	this._PanelBox.innerHTML = '<table cellpadding="0" cellspacing="0" width="100%" style="TABLE-LAYOUT: fixed"><tr><td nowrap></td></tr></table>' ;
-
-	this._ItemsHolderEl = this._PanelBox.getElementsByTagName('TD')[0] ;
-
-	if ( FCK.IECleanup )
-		FCK.IECleanup.AddItem( this, FCKSpecialCombo_Cleanup ) ;
-
-//	this._Panel.StyleSheet = FCKConfig.SkinPath + 'fck_contextmenu.css' ;
-//	this._Panel.Create() ;
-//	this._Panel.PanelDiv.className += ' SC_Panel' ;
-//	this._Panel.PanelDiv.innerHTML = '<table cellpadding="0" cellspacing="0" width="100%" style="TABLE-LAYOUT: fixed"><tr><td nowrap></td></tr></table>' ;
-//	this._ItemsHolderEl = this._Panel.PanelDiv.getElementsByTagName('TD')[0] ;
-}
-
-function FCKSpecialCombo_ItemOnMouseOver()
-{
-	this.className += ' SC_ItemOver' ;
-}
-
-function FCKSpecialCombo_ItemOnMouseOut()
-{
-	this.className = this.originalClass ;
-}
-
-function FCKSpecialCombo_ItemOnClick( ev, specialCombo, itemId )
-{
-	this.className = this.originalClass ;
-
-	specialCombo._Panel.Hide() ;
-
-	specialCombo.SetLabel( this.FCKItemLabel ) ;
-
-	if ( typeof( specialCombo.OnSelect ) == 'function' )
-		specialCombo.OnSelect( itemId, this ) ;
-}
-
-FCKSpecialCombo.prototype.ClearItems = function ()
-{
-	if ( this.Items )
-		this.Items = {} ;
-
-	var itemsholder = this._ItemsHolderEl ;
-	while ( itemsholder.firstChild )
-		itemsholder.removeChild( itemsholder.firstChild ) ;
-}
-
-FCKSpecialCombo.prototype.AddItem = function( id, html, label, bgColor )
-{
-	// <div class="SC_Item" onmouseover="this.className='SC_Item SC_ItemOver';" onmouseout="this.className='SC_Item';"><b>Bold 1</b></div>
-	var oDiv = this._ItemsHolderEl.appendChild( this._Panel.Document.createElement( 'DIV' ) ) ;
-	oDiv.className = oDiv.originalClass = 'SC_Item' ;
-	oDiv.innerHTML = html ;
-	oDiv.FCKItemLabel = label || id ;
-	oDiv.Selected = false ;
-
-	// In IE, the width must be set so the borders are shown correctly when the content overflows.
-	if ( FCKBrowserInfo.IsIE )
-		oDiv.style.width = '100%' ;
-
-	if ( bgColor )
-		oDiv.style.backgroundColor = bgColor ;
-
-	FCKTools.AddEventListenerEx( oDiv, 'mouseover', FCKSpecialCombo_ItemOnMouseOver ) ;
-	FCKTools.AddEventListenerEx( oDiv, 'mouseout', FCKSpecialCombo_ItemOnMouseOut ) ;
-	FCKTools.AddEventListenerEx( oDiv, 'click', FCKSpecialCombo_ItemOnClick, [ this, id ] ) ;
-
-	this.Items[ id.toString().toLowerCase() ] = oDiv ;
-
-	return oDiv ;
-}
-
-FCKSpecialCombo.prototype.SelectItem = function( item )
-{
-	if ( typeof item == 'string' )
-		item = this.Items[ item.toString().toLowerCase() ] ;
-
-	if ( item )
-	{
-		item.className = item.originalClass = 'SC_ItemSelected' ;
-		item.Selected = true ;
-	}
-}
-
-FCKSpecialCombo.prototype.SelectItemByLabel = function( itemLabel, setLabel )
-{
-	for ( var id in this.Items )
-	{
-		var oDiv = this.Items[id] ;
-
-		if ( oDiv.FCKItemLabel == itemLabel )
-		{
-			oDiv.className = oDiv.originalClass = 'SC_ItemSelected' ;
-			oDiv.Selected = true ;
-
-			if ( setLabel )
-				this.SetLabel( itemLabel ) ;
-		}
-	}
-}
-
-FCKSpecialCombo.prototype.DeselectAll = function( clearLabel )
-{
-	for ( var i in this.Items )
-	{
-		if ( !this.Items[i] ) continue;
-		this.Items[i].className = this.Items[i].originalClass = 'SC_Item' ;
-		this.Items[i].Selected = false ;
-	}
-
-	if ( clearLabel )
-		this.SetLabel( '' ) ;
-}
-
-FCKSpecialCombo.prototype.SetLabelById = function( id )
-{
-	id = id ? id.toString().toLowerCase() : '' ;
-
-	var oDiv = this.Items[ id ] ;
-	this.SetLabel( oDiv ? oDiv.FCKItemLabel : '' ) ;
-}
-
-FCKSpecialCombo.prototype.SetLabel = function( text )
-{
-	text = ( !text || text.length == 0 ) ? '&nbsp;' : text ;
-
-	if ( text == this.Label )
-		return ;
-
-	this.Label = text ;
-
-	var labelEl = this._LabelEl ;
-	if ( labelEl )
-	{
-		labelEl.innerHTML = text ;
-
-		// It may happen that the label is some HTML, including tags. This
-		// would be a problem because when the user click on those tags, the
-		// combo will get the selection from the editing area. So we must
-		// disable any kind of selection here.
-		FCKTools.DisableSelection( labelEl ) ;
-	}
-}
-
-FCKSpecialCombo.prototype.SetEnabled = function( isEnabled )
-{
-	this.Enabled = isEnabled ;
-
-	// In IE it can happen when the page is reloaded that _OuterTable is null, so check its existence
-	if ( this._OuterTable )
-		this._OuterTable.className = isEnabled ? '' : 'SC_FieldDisabled' ;
-}
-
-FCKSpecialCombo.prototype.Create = function( targetElement )
-{
-	var oDoc = FCKTools.GetElementDocument( targetElement ) ;
-	var eOuterTable = this._OuterTable = targetElement.appendChild( oDoc.createElement( 'TABLE' ) ) ;
-	eOuterTable.cellPadding = 0 ;
-	eOuterTable.cellSpacing = 0 ;
-
-	eOuterTable.insertRow(-1) ;
-
-	var sClass ;
-	var bShowLabel ;
-
-	switch ( this.Style )
-	{
-		case FCK_TOOLBARITEM_ONLYICON :
-			sClass = 'TB_ButtonType_Icon' ;
-			bShowLabel = false;
-			break ;
-		case FCK_TOOLBARITEM_ONLYTEXT :
-			sClass = 'TB_ButtonType_Text' ;
-			bShowLabel = false;
-			break ;
-		case FCK_TOOLBARITEM_ICONTEXT :
-			bShowLabel = true;
-			break ;
-	}
-
-	if ( this.Caption && this.Caption.length > 0 && bShowLabel )
-	{
-		var oCaptionCell = eOuterTable.rows[0].insertCell(-1) ;
-		oCaptionCell.innerHTML = this.Caption ;
-		oCaptionCell.className = 'SC_FieldCaption' ;
-	}
-
-	// Create the main DIV element.
-	var oField = FCKTools.AppendElement( eOuterTable.rows[0].insertCell(-1), 'div' ) ;
-	if ( bShowLabel )
-	{
-		oField.className = 'SC_Field' ;
-		oField.style.width = this.FieldWidth + 'px' ;
-		oField.innerHTML = '<table width="100%" cellpadding="0" cellspacing="0" style="TABLE-LAYOUT: fixed;"><tbody><tr><td class="SC_FieldLabel"><label>&nbsp;</label></td><td class="SC_FieldButton">&nbsp;</td></tr></tbody></table>' ;
-
-		this._LabelEl = oField.getElementsByTagName('label')[0] ;		// Memory Leak
-		this._LabelEl.innerHTML = this.Label ;
-	}
-	else
-	{
-		oField.className = 'TB_Button_Off' ;
-		//oField.innerHTML = '<span className="SC_FieldCaption">' + this.Caption + '<table cellpadding="0" cellspacing="0" style="TABLE-LAYOUT: fixed;"><tbody><tr><td class="SC_FieldButton" style="border-left: none;">&nbsp;</td></tr></tbody></table>' ;
-		//oField.innerHTML = '<table cellpadding="0" cellspacing="0" style="TABLE-LAYOUT: fixed;"><tbody><tr><td class="SC_FieldButton" style="border-left: none;">&nbsp;</td></tr></tbody></table>' ;
-
-		// Gets the correct CSS class to use for the specified style (param).
-		oField.innerHTML = '<table title="' + this.Tooltip + '" class="' + sClass + '" cellspacing="0" cellpadding="0" border="0">' +
-				'<tr>' +
-					//'<td class="TB_Icon"><img src="' + FCKConfig.SkinPath + 'toolbar/' + this.Command.Name.toLowerCase() + '.gif" width="21" height="21"></td>' +
-					'<td><img class="TB_Button_Padding" src="' + FCK_SPACER_PATH + '" /></td>' +
-					'<td class="TB_Text">' + this.Caption + '</td>' +
-					'<td><img class="TB_Button_Padding" src="' + FCK_SPACER_PATH + '" /></td>' +
-					'<td class="TB_ButtonArrow"><img src="' + FCKConfig.SkinPath + 'images/toolbar.buttonarrow.gif" width="5" height="3"></td>' +
-					'<td><img class="TB_Button_Padding" src="' + FCK_SPACER_PATH + '" /></td>' +
-				'</tr>' +
-			'</table>' ;
-	}
-
-
-	// Events Handlers
-
-	FCKTools.AddEventListenerEx( oField, 'mouseover', FCKSpecialCombo_OnMouseOver, this ) ;
-	FCKTools.AddEventListenerEx( oField, 'mouseout', FCKSpecialCombo_OnMouseOut, this ) ;
-	FCKTools.AddEventListenerEx( oField, 'click', FCKSpecialCombo_OnClick, this ) ;
-
-	FCKTools.DisableSelection( this._Panel.Document.body ) ;
-}
-
-function FCKSpecialCombo_Cleanup()
-{
-	this._LabelEl = null ;
-	this._OuterTable = null ;
-	this._ItemsHolderEl = null ;
-	this._PanelBox = null ;
-
-	if ( this.Items )
-	{
-		for ( var key in this.Items )
-			this.Items[key] = null ;
-	}
-}
-
-function FCKSpecialCombo_OnMouseOver( ev, specialCombo )
-{
-	if ( specialCombo.Enabled )
-	{
-		switch ( specialCombo.Style )
-		{
-			case FCK_TOOLBARITEM_ONLYICON :
-				this.className = 'TB_Button_On_Over';
-				break ;
-			case FCK_TOOLBARITEM_ONLYTEXT :
-				this.className = 'TB_Button_On_Over';
-				break ;
-			case FCK_TOOLBARITEM_ICONTEXT :
-				this.className = 'SC_Field SC_FieldOver' ;
-				break ;
-		}
-	}
-}
-
-function FCKSpecialCombo_OnMouseOut( ev, specialCombo )
-{
-	switch ( specialCombo.Style )
-	{
-		case FCK_TOOLBARITEM_ONLYICON :
-			this.className = 'TB_Button_Off';
-			break ;
-		case FCK_TOOLBARITEM_ONLYTEXT :
-			this.className = 'TB_Button_Off';
-			break ;
-		case FCK_TOOLBARITEM_ICONTEXT :
-			this.className='SC_Field' ;
-			break ;
-	}
-}
-
-function FCKSpecialCombo_OnClick( e, specialCombo )
-{
-	// For Mozilla we must stop the event propagation to avoid it hiding
-	// the panel because of a click outside of it.
-//	if ( e )
-//	{
-//		e.stopPropagation() ;
-//		FCKPanelEventHandlers.OnDocumentClick( e ) ;
-//	}
-
-	if ( specialCombo.Enabled )
-	{
-		var oPanel			= specialCombo._Panel ;
-		var oPanelBox		= specialCombo._PanelBox ;
-		var oItemsHolder	= specialCombo._ItemsHolderEl ;
-		var iMaxHeight		= specialCombo.PanelMaxHeight ;
-
-		if ( specialCombo.OnBeforeClick )
-			specialCombo.OnBeforeClick( specialCombo ) ;
-
-		// This is a tricky thing. We must call the "Load" function, otherwise
-		// it will not be possible to retrieve "oItemsHolder.offsetHeight" (IE only).
-		if ( FCKBrowserInfo.IsIE )
-			oPanel.Preload( 0, this.offsetHeight, this ) ;
-
-		if ( oItemsHolder.offsetHeight > iMaxHeight )
-//		{
-			oPanelBox.style.height = iMaxHeight + 'px' ;
-
-//			if ( FCKBrowserInfo.IsGecko )
-//				oPanelBox.style.overflow = '-moz-scrollbars-vertical' ;
-//		}
-		else
-			oPanelBox.style.height = '' ;
-
-//		oPanel.PanelDiv.style.width = specialCombo.PanelWidth + 'px' ;
-
-		oPanel.Show( 0, this.offsetHeight, this ) ;
-	}
-
-//	return false ;
-}
-
-/*
-Sample Combo Field HTML output:
-
-<div class="SC_Field" style="width: 80px;">
-	<table width="100%" cellpadding="0" cellspacing="0" style="table-layout: fixed;">
-		<tbody>
-			<tr>
-				<td class="SC_FieldLabel"><label>&nbsp;</label></td>
-				<td class="SC_FieldButton">&nbsp;</td>
-			</tr>
-		</tbody>
-	</table>
-</div>
-*/

+ 0 - 1500
main/inc/lib/fckeditor/editor/_source/classes/fckstyle.js

@@ -1,1500 +0,0 @@
-/*
- * FCKeditor - The text editor for Internet - http://www.fckeditor.net
- * Copyright (C) 2003-2010 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 ==
- *
- * FCKStyle Class: contains a style definition, and all methods to work with
- * the style in a document.
- */
-
-/**
- * @param {Object} styleDesc A "style descriptor" object, containing the raw
- * style definition in the following format:
- *		'<style name>' : {
- *			Element : '<element name>',
- *			Attributes : {
- *				'<att name>' : '<att value>',
- *				...
- *			},
- *			Styles : {
- *				'<style name>' : '<style value>',
- *				...
- *			},
- *			Overrides : '<element name>'|{
- *				Element : '<element name>',
- *				Attributes : {
- *					'<att name>' : '<att value>'|/<att regex>/
- *				},
- *				Styles : {
- *					'<style name>' : '<style value>'|/<style regex>/
- *				},
- *			}
- *		}
- */
-var FCKStyle = function( styleDesc )
-{
-	this.Element = ( styleDesc.Element || 'span' ).toLowerCase() ;
-	this._StyleDesc = styleDesc ;
-}
-
-FCKStyle.prototype =
-{
-	/**
-	 * Get the style type, based on its element name:
-	 *		- FCK_STYLE_BLOCK  (0): Block Style
-	 *		- FCK_STYLE_INLINE (1): Inline Style
-	 *		- FCK_STYLE_OBJECT (2): Object Style
-	 */
-	GetType : function()
-	{
-		var type = this.GetType_$ ;
-
-		if ( type != undefined )
-			return type ;
-
-		var elementName = this.Element ;
-
-		if ( elementName == '#' || FCKListsLib.StyleBlockElements[ elementName ] )
-			type = FCK_STYLE_BLOCK ;
-		else if ( FCKListsLib.StyleObjectElements[ elementName ] )
-			type = FCK_STYLE_OBJECT ;
-		else
-			type = FCK_STYLE_INLINE ;
-
-		return ( this.GetType_$ = type ) ;
-	},
-
-	/**
-	 * Apply the style to the current selection.
-	 */
-	ApplyToSelection : function( targetWindow )
-	{
-		// Create a range for the current selection.
-		var range = new FCKDomRange( targetWindow ) ;
-		range.MoveToSelection() ;
-
-		this.ApplyToRange( range, true ) ;
-	},
-
-	/**
-	 * Apply the style to a FCKDomRange.
-	 */
-	ApplyToRange : function( range, selectIt, updateRange )
-	{
-		// ApplyToRange is not valid for FCK_STYLE_OBJECT types.
-		// Use ApplyToObject instead.
-
-		switch ( this.GetType() )
-		{
-			case FCK_STYLE_BLOCK :
-				this.ApplyToRange = this._ApplyBlockStyle ;
-				break ;
-			case FCK_STYLE_INLINE :
-				this.ApplyToRange = this._ApplyInlineStyle ;
-				break ;
-			default :
-				return ;
-		}
-
-		this.ApplyToRange( range, selectIt, updateRange ) ;
-	},
-
-	/**
-	 * Apply the style to an object. Valid for FCK_STYLE_BLOCK types only.
-	 */
-	ApplyToObject : function( objectElement )
-	{
-		if ( !objectElement )
-			return ;
-
-		this.BuildElement( null, objectElement ) ;
-	},
-
-	/**
-	 * Remove the style from the current selection.
-	 */
-	RemoveFromSelection : function( targetWindow )
-	{
-		// Create a range for the current selection.
-		var range = new FCKDomRange( targetWindow ) ;
-		range.MoveToSelection() ;
-
-		this.RemoveFromRange( range, true ) ;
-	},
-
-	/**
-	 * Remove the style from a FCKDomRange. Block type styles will have no
-	 * effect.
-	 */
-	RemoveFromRange : function( range, selectIt, updateRange )
-	{
-		var bookmark ;
-
-		// Create the attribute list to be used later for element comparisons.
-		var styleAttribs = this._GetAttribsForComparison() ;
-		var styleOverrides = this._GetOverridesForComparison() ;
-
-		// If collapsed, we are removing all conflicting styles from the range
-		// parent tree.
-		if ( range.CheckIsCollapsed() )
-		{
-			// Bookmark the range so we can re-select it after processing.
-			var bookmark = range.CreateBookmark( true ) ;
-
-			// Let's start from the bookmark <span> parent.
-			var bookmarkStart = range.GetBookmarkNode( bookmark, true ) ;
-
-			var path = new FCKElementPath( bookmarkStart.parentNode ) ;
-
-			// While looping through the path, we'll be saving references to
-			// parent elements if the range is in one of their boundaries. In
-			// this way, we are able to create a copy of those elements when
-			// removing a style if the range is in a boundary limit (see #1270).
-			var boundaryElements = [] ;
-
-			// Check if the range is in the boundary limits of an element
-			// (related to #1270).
-			var isBoundaryRight = !FCKDomTools.GetNextSibling( bookmarkStart ) ;
-			var isBoundary = isBoundaryRight || !FCKDomTools.GetPreviousSibling( bookmarkStart ) ;
-
-			// This is the last element to be removed in the boundary situation
-			// described at #1270.
-			var lastBoundaryElement ;
-			var boundaryLimitIndex = -1 ;
-
-			for ( var i = 0 ; i < path.Elements.length ; i++ )
-			{
-				var pathElement = path.Elements[i] ;
-				if ( this.CheckElementRemovable( pathElement ) )
-				{
-					if ( isBoundary
-						&& !FCKDomTools.CheckIsEmptyElement( pathElement,
-								function( el )
-								{
-									return ( el != bookmarkStart ) ;
-								} )
-						)
-					{
-						lastBoundaryElement = pathElement ;
-
-						// We'll be continuously including elements in the
-						// boundaryElements array, but only those added before
-						// setting lastBoundaryElement must be used later, so
-						// let's mark the current index here.
-						boundaryLimitIndex = boundaryElements.length - 1 ;
-					}
-					else
-					{
-						var pathElementName = pathElement.nodeName.toLowerCase() ;
-
-						if ( pathElementName == this.Element )
-						{
-							// Remove any attribute that conflict with this style, no
-							// matter their values.
-							for ( var att in styleAttribs )
-							{
-								if ( FCKDomTools.HasAttribute( pathElement, att ) )
-								{
-									switch ( att )
-									{
-										case 'style' :
-											this._RemoveStylesFromElement( pathElement ) ;
-											break ;
-
-										case 'class' :
-											// The 'class' element value must match (#1318).
-											if ( FCKDomTools.GetAttributeValue( pathElement, att ) != this.GetFinalAttributeValue( att ) )
-												continue ;
-
-											/*jsl:fallthru*/
-
-										default :
-											FCKDomTools.RemoveAttribute( pathElement, att ) ;
-									}
-								}
-							}
-						}
-
-						// Remove overrides defined to the same element name.
-						this._RemoveOverrides( pathElement, styleOverrides[ pathElementName ] ) ;
-
-						// Remove the element if no more attributes are available and it's an inline style element
-						if ( this.GetType() == FCK_STYLE_INLINE)
-							this._RemoveNoAttribElement( pathElement ) ;
-					}
-				}
-				else if ( isBoundary )
-					boundaryElements.push( pathElement ) ;
-
-				// Check if we are still in a boundary (at the same side).
-				isBoundary = isBoundary && ( ( isBoundaryRight && !FCKDomTools.GetNextSibling( pathElement ) ) || ( !isBoundaryRight && !FCKDomTools.GetPreviousSibling( pathElement ) ) ) ;
-
-				// If we are in an element that is not anymore a boundary, or
-				// we are at the last element, let's move things outside the
-				// boundary (if available).
-				if ( lastBoundaryElement && ( !isBoundary || ( i == path.Elements.length - 1 ) ) )
-				{
-					// Remove the bookmark node from the DOM.
-					var currentElement = FCKDomTools.RemoveNode( bookmarkStart ) ;
-
-					// Build the collapsed group of elements that are not
-					// removed by this style, but share the boundary.
-					// (see comment 1 and 2 at #1270)
-					for ( var j = 0 ; j <= boundaryLimitIndex ; j++ )
-					{
-						var newElement = FCKDomTools.CloneElement( boundaryElements[j] ) ;
-						newElement.appendChild( currentElement ) ;
-						currentElement = newElement ;
-					}
-
-					// Re-insert the bookmark node (and the collapsed elements)
-					// in the DOM, in the new position next to the styled element.
-					if ( isBoundaryRight )
-						FCKDomTools.InsertAfterNode( lastBoundaryElement, currentElement ) ;
-					else
-						lastBoundaryElement.parentNode.insertBefore( currentElement, lastBoundaryElement ) ;
-
-					isBoundary = false ;
-					lastBoundaryElement = null ;
-				}
-			}
-
-				// Re-select the original range.
-			if ( selectIt )
-				range.SelectBookmark( bookmark ) ;
-
-			if ( updateRange )
-				range.MoveToBookmark( bookmark ) ;
-
-			return ;
-		}
-
-		// Expand the range, if inside inline element boundaries.
-		range.Expand( 'inline_elements' ) ;
-
-		// Bookmark the range so we can re-select it after processing.
-		bookmark = range.CreateBookmark( true ) ;
-
-		// The style will be applied within the bookmark boundaries.
-		var startNode	= range.GetBookmarkNode( bookmark, true ) ;
-		var endNode		= range.GetBookmarkNode( bookmark, false ) ;
-
-		range.Release( true ) ;
-
-		// We need to check the selection boundaries (bookmark spans) to break
-		// the code in a way that we can properly remove partially selected nodes.
-		// For example, removing a <b> style from
-		//		<b>This is [some text</b> to show <b>the] problem</b>
-		// ... where [ and ] represent the selection, must result:
-		//		<b>This is </b>[some text to show the]<b> problem</b>
-		// The strategy is simple, we just break the partial nodes before the
-		// removal logic, having something that could be represented this way:
-		//		<b>This is </b>[<b>some text</b> to show <b>the</b>]<b> problem</b>
-
-		// Let's start checking the start boundary.
-		var path = new FCKElementPath( startNode ) ;
-		var pathElements = path.Elements ;
-		var pathElement ;
-
-		for ( var i = 1 ; i < pathElements.length ; i++ )
-		{
-			pathElement = pathElements[i] ;
-
-			if ( pathElement == path.Block || pathElement == path.BlockLimit )
-				break ;
-
-			// If this element can be removed (even partially).
-			if ( this.CheckElementRemovable( pathElement ) )
-				FCKDomTools.BreakParent( startNode, pathElement, range ) ;
-		}
-
-		// Now the end boundary.
-		path = new FCKElementPath( endNode ) ;
-		pathElements = path.Elements ;
-
-		for ( var i = 1 ; i < pathElements.length ; i++ )
-		{
-			pathElement = pathElements[i] ;
-
-			if ( pathElement == path.Block || pathElement == path.BlockLimit )
-				break ;
-
-			elementName = pathElement.nodeName.toLowerCase() ;
-
-			// If this element can be removed (even partially).
-			if ( this.CheckElementRemovable( pathElement ) )
-				FCKDomTools.BreakParent( endNode, pathElement, range ) ;
-		}
-
-		// Navigate through all nodes between the bookmarks.
-		var currentNode = FCKDomTools.GetNextSourceNode( startNode, true ) ;
-
-		while ( currentNode )
-		{
-			// Cache the next node to be processed. Do it now, because
-			// currentNode may be removed.
-			var nextNode = FCKDomTools.GetNextSourceNode( currentNode ) ;
-
-			// Remove elements nodes that match with this style rules.
-			if ( currentNode.nodeType == 1 )
-			{
-				var elementName = currentNode.nodeName.toLowerCase() ;
-
-				var mayRemove = ( elementName == this.Element ) ;
-				if ( mayRemove )
-				{
-					// Remove any attribute that conflict with this style, no matter
-					// their values.
-					for ( var att in styleAttribs )
-					{
-						if ( FCKDomTools.HasAttribute( currentNode, att ) )
-						{
-							switch ( att )
-							{
-								case 'style' :
-									this._RemoveStylesFromElement( currentNode ) ;
-									break ;
-
-								case 'class' :
-									// The 'class' element value must match (#1318).
-									if ( FCKDomTools.GetAttributeValue( currentNode, att ) != this.GetFinalAttributeValue( att ) )
-										continue ;
-
-									/*jsl:fallthru*/
-
-								default :
-									FCKDomTools.RemoveAttribute( currentNode, att ) ;
-							}
-						}
-					}
-				}
-				else
-					mayRemove = !!styleOverrides[ elementName ] ;
-
-				if ( mayRemove )
-				{
-					// Remove overrides defined to the same element name.
-					this._RemoveOverrides( currentNode, styleOverrides[ elementName ] ) ;
-
-					// Remove the element if no more attributes are available.
-					this._RemoveNoAttribElement( currentNode ) ;
-				}
-			}
-
-			// If we have reached the end of the selection, stop looping.
-			if ( nextNode == endNode )
-				break ;
-
-			currentNode = nextNode ;
-		}
-
-		this._FixBookmarkStart( startNode ) ;
-
-		// Re-select the original range.
-		if ( selectIt )
-			range.SelectBookmark( bookmark ) ;
-
-		if ( updateRange )
-			range.MoveToBookmark( bookmark ) ;
-	},
-
-	/**
-	 * Checks if an element, or any of its attributes, is removable by the
-	 * current style definition.
-	 */
-	CheckElementRemovable : function( element, fullMatch )
-	{
-		if ( !element )
-			return false ;
-
-		var elementName = element.nodeName.toLowerCase() ;
-
-		// If the element name is the same as the style name.
-		if ( elementName == this.Element )
-		{
-			// If no attributes are defined in the element.
-			if ( !fullMatch && !FCKDomTools.HasAttributes( element ) )
-				return true ;
-
-			// If any attribute conflicts with the style attributes.
-			var attribs = this._GetAttribsForComparison() ;
-			var allMatched = ( attribs._length == 0 ) ;
-			for ( var att in attribs )
-			{
-				if ( att == '_length' )
-					continue ;
-
-				if ( this._CompareAttributeValues( att, FCKDomTools.GetAttributeValue( element, att ), ( this.GetFinalAttributeValue( att ) || '' ) ) )
-				{
-					allMatched = true ;
-					if ( !fullMatch )
-						break ;
-				}
-				else
-				{
-					allMatched = false ;
-					if ( fullMatch )
-						return false ;
-				}
-			}
-			if ( allMatched )
-				return true ;
-		}
-
-		// Check if the element can be somehow overriden.
-		var override = this._GetOverridesForComparison()[ elementName ] ;
-		if ( override )
-		{
-			// If no attributes have been defined, remove the element.
-			if ( !( attribs = override.Attributes ) ) // Only one "="
-				return true ;
-
-			for ( var i = 0 ; i < attribs.length ; i++ )
-			{
-				var attName = attribs[i][0] ;
-				if ( FCKDomTools.HasAttribute( element, attName ) )
-				{
-					var attValue = attribs[i][1] ;
-
-					// Remove the attribute if:
-					//    - The override definition value is null ;
-					//    - The override definition valie is a string that
-					//      matches the attribute value exactly.
-					//    - The override definition value is a regex that
-					//      has matches in the attribute value.
-					if ( attValue == null ||
-							( typeof attValue == 'string' && FCKDomTools.GetAttributeValue( element, attName ) == attValue ) ||
-							attValue.test( FCKDomTools.GetAttributeValue( element, attName ) ) )
-						return true ;
-				}
-			}
-		}
-
-		return false ;
-	},
-
-	/**
-	 * Get the style state for an element path. Returns "true" if the element
-	 * is active in the path.
-	 */
-	CheckActive : function( elementPath )
-	{
-		switch ( this.GetType() )
-		{
-			case FCK_STYLE_BLOCK :
-				return this.CheckElementRemovable( elementPath.Block || elementPath.BlockLimit, true ) ;
-
-			case FCK_STYLE_INLINE :
-
-				var elements = elementPath.Elements ;
-
-				for ( var i = 0 ; i < elements.length ; i++ )
-				{
-					var element = elements[i] ;
-
-					if ( element == elementPath.Block || element == elementPath.BlockLimit )
-						continue ;
-
-					if ( this.CheckElementRemovable( element, true ) )
-						return true ;
-				}
-		}
-		return false ;
-	},
-
-	/**
-	 * Removes an inline style from inside an element tree. The element node
-	 * itself is not checked or removed, only the child tree inside of it.
-	 */
-	RemoveFromElement : function( element )
-	{
-		var attribs = this._GetAttribsForComparison() ;
-		var overrides = this._GetOverridesForComparison() ;
-
-		// Get all elements with the same name.
-		var innerElements = element.getElementsByTagName( this.Element ) ;
-
-		for ( var i = innerElements.length - 1 ; i >= 0 ; i-- )
-		{
-			var innerElement = innerElements[i] ;
-
-			// Remove any attribute that conflict with this style, no matter
-			// their values.
-			for ( var att in attribs )
-			{
-				if ( FCKDomTools.HasAttribute( innerElement, att ) )
-				{
-					switch ( att )
-					{
-						case 'style' :
-							this._RemoveStylesFromElement( innerElement ) ;
-							break ;
-
-						case 'class' :
-							// The 'class' element value must match (#1318).
-							if ( FCKDomTools.GetAttributeValue( innerElement, att ) != this.GetFinalAttributeValue( att ) )
-								continue ;
-
-							/*jsl:fallthru*/
-
-						default :
-							FCKDomTools.RemoveAttribute( innerElement, att ) ;
-					}
-				}
-			}
-
-			// Remove overrides defined to the same element name.
-			this._RemoveOverrides( innerElement, overrides[ this.Element ] ) ;
-
-			// Remove the element if no more attributes are available.
-			this._RemoveNoAttribElement( innerElement ) ;
-		}
-
-		// Now remove any other element with different name that is
-		// defined to be overriden.
-		for ( var overrideElement in overrides )
-		{
-			if ( overrideElement != this.Element )
-			{
-				// Get all elements.
-				innerElements = element.getElementsByTagName( overrideElement ) ;
-
-				for ( var i = innerElements.length - 1 ; i >= 0 ; i-- )
-				{
-					var innerElement = innerElements[i] ;
-					this._RemoveOverrides( innerElement, overrides[ overrideElement ] ) ;
-					this._RemoveNoAttribElement( innerElement ) ;
-				}
-			}
-		}
-	},
-
-	_RemoveStylesFromElement : function( element )
-	{
-		var elementStyle = element.style.cssText ;
-		var pattern = this.GetFinalStyleValue() ;
-
-		if ( elementStyle.length > 0 && pattern.length == 0 )
-			return ;
-
-		pattern = '(^|;)\\s*(' +
-			pattern.replace( /\s*([^ ]+):.*?(;|$)/g, '$1|' ).replace( /\|$/, '' ) +
-			'):[^;]+' ;
-
-		var regex = new RegExp( pattern, 'gi' ) ;
-
-		elementStyle = elementStyle.replace( regex, '' ).Trim() ;
-
-		if ( elementStyle.length == 0 || elementStyle == ';' )
-			FCKDomTools.RemoveAttribute( element, 'style' ) ;
-		else
-			element.style.cssText = elementStyle.replace( regex, '' ) ;
-	},
-
-	/**
-	 * Remove all attributes that are defined to be overriden,
-	 */
-	_RemoveOverrides : function( element, override )
-	{
-		var attributes = override && override.Attributes ;
-
-		if ( attributes )
-		{
-			for ( var i = 0 ; i < attributes.length ; i++ )
-			{
-				var attName = attributes[i][0] ;
-
-				if ( FCKDomTools.HasAttribute( element, attName ) )
-				{
-					var attValue	= attributes[i][1] ;
-
-					// Remove the attribute if:
-					//    - The override definition value is null ;
-					//    - The override definition valie is a string that
-					//      matches the attribute value exactly.
-					//    - The override definition value is a regex that
-					//      has matches in the attribute value.
-					if ( attValue == null ||
-							( attValue.test && attValue.test( FCKDomTools.GetAttributeValue( element, attName ) ) ) ||
-							( typeof attValue == 'string' && FCKDomTools.GetAttributeValue( element, attName ) == attValue ) )
-						FCKDomTools.RemoveAttribute( element, attName ) ;
-				}
-			}
-		}
-	},
-
-	/**
-	 * If the element has no more attributes, remove it.
-	 */
-	_RemoveNoAttribElement : function( element )
-	{
-		// If no more attributes remained in the element, remove it,
-		// leaving its children.
-		if ( !FCKDomTools.HasAttributes( element ) )
-		{
-			// Removing elements may open points where merging is possible,
-			// so let's cache the first and last nodes for later checking.
-			var firstChild	= element.firstChild ;
-			var lastChild	= element.lastChild ;
-
-			FCKDomTools.RemoveNode( element, true ) ;
-
-			// Check the cached nodes for merging.
-			this._MergeSiblings( firstChild ) ;
-
-			if ( firstChild != lastChild )
-				this._MergeSiblings( lastChild ) ;
-		}
-	},
-
-	/**
-	 * Creates a DOM element for this style object.
-	 */
-	BuildElement : function( targetDoc, element )
-	{
-		// Create the element.
-		var el = element || targetDoc.createElement( this.Element ) ;
-
-		// Assign all defined attributes.
-		var attribs	= this._StyleDesc.Attributes ;
-		var attValue ;
-		if ( attribs )
-		{
-			for ( var att in attribs )
-			{
-				attValue = this.GetFinalAttributeValue( att ) ;
-
-				if ( att.toLowerCase() == 'class' )
-					el.className = attValue ;
-				else
-					el.setAttribute( att, attValue ) ;
-			}
-		}
-
-		// Assign the style attribute.
-		if ( this._GetStyleText().length > 0 )
-			el.style.cssText = this.GetFinalStyleValue() ;
-
-		return el ;
-	},
-
-	_CompareAttributeValues : function( attName, valueA, valueB )
-	{
-		if ( attName == 'style' && valueA && valueB )
-		{
-			valueA = valueA.replace( /;$/, '' ).toLowerCase() ;
-			valueB = valueB.replace( /;$/, '' ).toLowerCase() ;
-		}
-
-		// Return true if they match or if valueA is null and valueB is an empty string
-		return ( valueA == valueB || ( ( valueA === null || valueA === '' ) && ( valueB === null || valueB === '' ) ) )
-	},
-
-	GetFinalAttributeValue : function( attName )
-	{
-		var attValue = this._StyleDesc.Attributes ;
-		var attValue = attValue ? attValue[ attName ] : null ;
-
-		if ( !attValue && attName == 'style' )
-			return this.GetFinalStyleValue() ;
-
-		if ( attValue && this._Variables )
-			// Using custom Replace() to guarantee the correct scope.
-			attValue = attValue.Replace( FCKRegexLib.StyleVariableAttName, this._GetVariableReplace, this ) ;
-
-		return attValue ;
-	},
-
-	GetFinalStyleValue : function()
-	{
-		var attValue = this._GetStyleText() ;
-
-		if ( attValue.length > 0 && this._Variables )
-		{
-			// Using custom Replace() to guarantee the correct scope.
-			attValue = attValue.Replace( FCKRegexLib.StyleVariableAttName, this._GetVariableReplace, this ) ;
-			attValue = FCKTools.NormalizeCssText( attValue ) ;
-		}
-
-		return attValue ;
-	},
-
-	_GetVariableReplace : function()
-	{
-		// The second group in the regex is the variable name.
-		return this._Variables[ arguments[2] ] || arguments[0] ;
-	},
-
-	/**
-	 * Set the value of a variable attribute or style, to be used when
-	 * appliying the style.
-	 */
-	SetVariable : function( name, value )
-	{
-		var variables = this._Variables ;
-
-		if ( !variables )
-			variables = this._Variables = {} ;
-
-		this._Variables[ name ] = value ;
-	},
-
-	/**
-	 * Converting from a PRE block to a non-PRE block in formatting operations.
-	 */
-	_FromPre : function( doc, block, newBlock )
-	{
-		var innerHTML = block.innerHTML ;
-
-		// Trim the first and last linebreaks immediately after and before <pre>, </pre>,
-		// if they exist.
-		// This is done because the linebreaks are not rendered.
-		innerHTML = innerHTML.replace( /(\r\n|\r)/g, '\n' ) ;
-		innerHTML = innerHTML.replace( /^[ \t]*\n/, '' ) ;
-		innerHTML = innerHTML.replace( /\n$/, '' ) ;
-
-		// 1. Convert spaces or tabs at the beginning or at the end to &nbsp;
-		innerHTML = innerHTML.replace( /^[ \t]+|[ \t]+$/g, function( match, offset, s )
-				{
-					if ( match.length == 1 )	// one space, preserve it
-						return '&nbsp;' ;
-					else if ( offset == 0 )		// beginning of block
-						return new Array( match.length ).join( '&nbsp;' ) + ' ' ;
-					else				// end of block
-						return ' ' + new Array( match.length ).join( '&nbsp;' ) ;
-				} ) ;
-
-		// 2. Convert \n to <BR>.
-		// 3. Convert contiguous (i.e. non-singular) spaces or tabs to &nbsp;
-		var htmlIterator = new FCKHtmlIterator( innerHTML ) ;
-		var results = [] ;
-		htmlIterator.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;' ) + ' ' ;
-							} ) ;
-				}
-				results.push( value ) ;
-			} ) ;
-		newBlock.innerHTML = results.join( '' ) ;
-		return newBlock ;
-	},
-
-	/**
-	 * Converting from a non-PRE block to a PRE block in formatting operations.
-	 */
-	_ToPre : function( doc, block, newBlock )
-	{
-		// Handle converting from a regular block to a <pre> block.
-		var innerHTML = block.innerHTML.Trim() ;
-
-		// 1. Delete ANSI whitespaces immediately before and after <BR> because
-		//    they are not visible.
-		// 2. Mark down any <BR /> nodes here so they can be turned into \n in
-		//    the next step and avoid being compressed.
-		innerHTML = innerHTML.replace( /[ \t\r\n]*(<br[^>]*>)[ \t\r\n]*/gi, '<br />' ) ;
-
-		// 3. Compress other ANSI whitespaces since they're only visible as one
-		//    single space previously.
-		// 4. Convert &nbsp; to spaces since &nbsp; is no longer needed in <PRE>.
-		// 5. Convert any <BR /> to \n. This must not be done earlier because
-		//    the \n would then get compressed.
-		var htmlIterator = new FCKHtmlIterator( innerHTML ) ;
-		var results = [] ;
-		htmlIterator.Each( function( isTag, value )
-			{
-				if ( !isTag )
-					value = value.replace( /([ \t\n\r]+|&nbsp;)/g, ' ' ) ;
-				else if ( isTag && value == '<br />' )
-					value = '\n' ;
-				results.push( value ) ;
-			} ) ;
-
-		// Assigning innerHTML to <PRE> in IE causes all linebreaks to be
-		// reduced to spaces.
-		// Assigning outerHTML to <PRE> in IE doesn't work if the <PRE> isn't
-		// contained in another node since the node reference is changed after
-		// outerHTML assignment.
-		// So, we need some hacks to workaround IE bugs here.
-		if ( FCKBrowserInfo.IsIE )
-		{
-			var temp = doc.createElement( 'div' ) ;
-			temp.appendChild( newBlock ) ;
-			newBlock.outerHTML = '<pre>\n' + results.join( '' ) + '</pre>' ;
-			newBlock = temp.removeChild( temp.firstChild ) ;
-		}
-		else
-			newBlock.innerHTML = results.join( '' ) ;
-
-		return newBlock ;
-	},
-
-	/**
-	 * Merge a <pre> block with a previous <pre> block, if available.
-	 */
-	_CheckAndMergePre : function( previousBlock, preBlock )
-	{
-		// Check if the previous block and the current block are next
-		// to each other.
-		if ( previousBlock != FCKDomTools.GetPreviousSourceElement( preBlock, true ) )
-			return ;
-
-		// Merge the previous <pre> block contents into the current <pre>
-		// block.
-		//
-		// Another thing to be careful here is that currentBlock might contain
-		// a '\n' at the beginning, and previousBlock might contain a '\n'
-		// towards the end. These new lines are not normally displayed but they
-		// become visible after merging.
-		var innerHTML = previousBlock.innerHTML.replace( /\n$/, '' ) + '\n\n' +
-				preBlock.innerHTML.replace( /^\n/, '' ) ;
-
-		// Buggy IE normalizes innerHTML from <pre>, breaking whitespaces.
-		if ( FCKBrowserInfo.IsIE )
-			preBlock.outerHTML = '<pre>' + innerHTML + '</pre>' ;
-		else
-			preBlock.innerHTML = innerHTML ;
-
-		// Remove the previous <pre> block.
-		//
-		// The preBlock must not be moved or deleted from the DOM tree. This
-		// guarantees the FCKDomRangeIterator in _ApplyBlockStyle would not
-		// get lost at the next iteration.
-		FCKDomTools.RemoveNode( previousBlock ) ;
-	},
-
-	_CheckAndSplitPre : function( newBlock )
-	{
-		var lastNewBlock ;
-
-		var cursor = newBlock.firstChild ;
-
-		// We are not splitting <br><br> at the beginning of the block, so
-		// we'll start from the second child.
-		cursor = cursor && cursor.nextSibling ;
-
-		while ( cursor )
-		{
-			var next = cursor.nextSibling ;
-
-			// If we have two <BR>s, and they're not at the beginning or the end,
-			// then we'll split up the contents following them into another block.
-			// Stop processing if we are at the last child couple.
-			if ( next && next.nextSibling && cursor.nodeName.IEquals( 'br' ) && next.nodeName.IEquals( 'br' ) )
-			{
-				// Remove the first <br>.
-				FCKDomTools.RemoveNode( cursor ) ;
-
-				// Move to the node after the second <br>.
-				cursor = next.nextSibling ;
-
-				// Remove the second <br>.
-				FCKDomTools.RemoveNode( next ) ;
-
-				// Create the block that will hold the child nodes from now on.
-				lastNewBlock = FCKDomTools.InsertAfterNode( lastNewBlock || newBlock, FCKDomTools.CloneElement( newBlock ) ) ;
-
-				continue ;
-			}
-
-			// If we split it, then start moving the nodes to the new block.
-			if ( lastNewBlock )
-			{
-				cursor = cursor.previousSibling ;
-				FCKDomTools.MoveNode(cursor.nextSibling, lastNewBlock ) ;
-			}
-
-			cursor = cursor.nextSibling ;
-		}
-	},
-
-	/**
-	 * Apply an inline style to a FCKDomRange.
-	 *
-	 * TODO
-	 *	- Implement the "#" style handling.
-	 *	- Properly handle block containers like <div> and <blockquote>.
-	 */
-	_ApplyBlockStyle : function( range, selectIt, updateRange )
-	{
-		// Bookmark the range so we can re-select it after processing.
-		var bookmark ;
-
-		if ( selectIt )
-			bookmark = range.CreateBookmark() ;
-
-		var iterator = new FCKDomRangeIterator( range ) ;
-		iterator.EnforceRealBlocks = true ;
-
-		var block ;
-		var doc = range.Window.document ;
-		var previousPreBlock ;
-
-		while( ( block = iterator.GetNextParagraph() ) )		// Only one =
-		{
-			// Create the new node right before the current one.
-			var newBlock = this.BuildElement( doc ) ;
-
-			// Check if we are changing from/to <pre>.
-			var newBlockIsPre	= newBlock.nodeName.IEquals( 'pre' ) ;
-			var blockIsPre		= block.nodeName.IEquals( 'pre' ) ;
-
-			var toPre	= newBlockIsPre && !blockIsPre ;
-			var fromPre	= !newBlockIsPre && blockIsPre ;
-
-			// Move everything from the current node to the new one.
-			if ( toPre )
-				newBlock = this._ToPre( doc, block, newBlock ) ;
-			else if ( fromPre )
-				newBlock = this._FromPre( doc, block, newBlock ) ;
-			else	// Convering from a regular block to another regular block.
-				FCKDomTools.MoveChildren( block, newBlock ) ;
-
-			// Replace the current block.
-			block.parentNode.insertBefore( newBlock, block ) ;
-			FCKDomTools.RemoveNode( block ) ;
-
-			// Complete other tasks after inserting the node in the DOM.
-			if ( newBlockIsPre )
-			{
-				if ( previousPreBlock )
-					this._CheckAndMergePre( previousPreBlock, newBlock ) ;	// Merge successive <pre> blocks.
-				previousPreBlock = newBlock ;
-			}
-			else if ( fromPre )
-				this._CheckAndSplitPre( newBlock ) ;	// Split <br><br> in successive <pre>s.
-		}
-
-		// Re-select the original range.
-		if ( selectIt )
-			range.SelectBookmark( bookmark ) ;
-
-		if ( updateRange )
-			range.MoveToBookmark( bookmark ) ;
-	},
-
-	/**
-	 * Apply an inline style to a FCKDomRange.
-	 *
-	 * TODO
-	 *	- Merge elements, when applying styles to similar elements that enclose
-	 *    the entire selection, outputing:
-	 *        <span style="color: #ff0000; background-color: #ffffff">XYZ</span>
-	 *    instead of:
-	 *        <span style="color: #ff0000;"><span style="background-color: #ffffff">XYZ</span></span>
-	 */
-	_ApplyInlineStyle : function( range, selectIt, updateRange )
-	{
-		var doc = range.Window.document ;
-
-		if ( range.CheckIsCollapsed() )
-		{
-			// Create the element to be inserted in the DOM.
-			var collapsedElement = this.BuildElement( doc ) ;
-			range.InsertNode( collapsedElement ) ;
-			range.MoveToPosition( collapsedElement, 2 ) ;
-			range.Select() ;
-
-			return ;
-		}
-
-		// The general idea here is navigating through all nodes inside the
-		// current selection, working on distinct range blocks, defined by the
-		// DTD compatibility between the style element and the nodes inside the
-		// ranges.
-		//
-		// For example, suppose we have the following selection (where [ and ]
-		// are the boundaries), and we apply a <b> style there:
-		//
-		//		<p>Here we [have <b>some</b> text.<p>
-		//		<p>And some here] here.</p>
-		//
-		// Two different ranges will be detected:
-		//
-		//		"have <b>some</b> text."
-		//		"And some here"
-		//
-		// Both ranges will be extracted, moved to a <b> element, and
-		// re-inserted, resulting in the following output:
-		//
-		//		<p>Here we [<b>have some text.</b><p>
-		//		<p><b>And some here</b>] here.</p>
-		//
-		// Note that the <b> element at <b>some</b> is also removed because it
-		// is not needed anymore.
-
-		var elementName = this.Element ;
-
-		// Get the DTD definition for the element. Defaults to "span".
-		var elementDTD = FCK.DTD[ elementName ] || FCK.DTD.span ;
-
-		// Create the attribute list to be used later for element comparisons.
-		var styleAttribs = this._GetAttribsForComparison() ;
-		var styleNode ;
-
-		// Expand the range, if inside inline element boundaries.
-		range.Expand( 'inline_elements' ) ;
-
-		// Bookmark the range so we can re-select it after processing.
-		var bookmark = range.CreateBookmark( true ) ;
-
-		// The style will be applied within the bookmark boundaries.
-		var startNode	= range.GetBookmarkNode( bookmark, true ) ;
-		var endNode		= range.GetBookmarkNode( bookmark, false ) ;
-
-		// We'll be reusing the range to apply the styles. So, release it here
-		// to indicate that it has not been initialized.
-		range.Release( true ) ;
-
-		// Let's start the nodes lookup from the node right after the bookmark
-		// span.
-		var currentNode = FCKDomTools.GetNextSourceNode( startNode, true ) ;
-
-		while ( currentNode )
-		{
-			var applyStyle = false ;
-
-			var nodeType = currentNode.nodeType ;
-			var nodeName = nodeType == 1 ? currentNode.nodeName.toLowerCase() : null ;
-
-			// Check if the current node can be a child of the style element.
-			if ( !nodeName || elementDTD[ nodeName ] )
-			{
-				// Check if the style element can be a child of the current
-				// node parent or if the element is not defined in the DTD.
-				if ( ( FCK.DTD[ currentNode.parentNode.nodeName.toLowerCase() ] || FCK.DTD.span )[ elementName ] || !FCK.DTD[ elementName ] )
-				{
-					// This node will be part of our range, so if it has not
-					// been started, place its start right before the node.
-					if ( !range.CheckHasRange() )
-						range.SetStart( currentNode, 3 ) ;
-
-					// Non element nodes, or empty elements can be added
-					// completely to the range.
-					if ( nodeType != 1 || currentNode.childNodes.length == 0 )
-					{
-						var includedNode = currentNode ;
-						var parentNode = includedNode.parentNode ;
-
-						// This node is about to be included completelly, but,
-						// if this is the last node in its parent, we must also
-						// check if the parent itself can be added completelly
-						// to the range.
-						while ( includedNode == parentNode.lastChild
-							&& elementDTD[ parentNode.nodeName.toLowerCase() ] )
-						{
-							includedNode = parentNode ;
-						}
-
-						range.SetEnd( includedNode, 4 ) ;
-
-						// If the included node is the last node in its parent
-						// and its parent can't be inside the style node, apply
-						// the style immediately.
-						if ( includedNode == includedNode.parentNode.lastChild && !elementDTD[ includedNode.parentNode.nodeName.toLowerCase() ] )
-							applyStyle = true ;
-					}
-					else
-					{
-						// Element nodes will not be added directly. We need to
-						// check their children because the selection could end
-						// inside the node, so let's place the range end right
-						// before the element.
-						range.SetEnd( currentNode, 3 ) ;
-					}
-				}
-				else
-					applyStyle = true ;
-			}
-			else
-				applyStyle = true ;
-
-			// Get the next node to be processed.
-			currentNode = FCKDomTools.GetNextSourceNode( currentNode ) ;
-
-			// If we have reached the end of the selection, just apply the
-			// style ot the range, and stop looping.
-			if ( currentNode == endNode )
-			{
-				currentNode = null ;
-				applyStyle = true ;
-			}
-
-			// Apply the style if we have something to which apply it.
-			if ( applyStyle && range.CheckHasRange() && !range.CheckIsCollapsed() )
-			{
-				// Build the style element, based on the style object definition.
-				styleNode = this.BuildElement( doc ) ;
-
-				// Move the contents of the range to the style element.
-				range.ExtractContents().AppendTo( styleNode ) ;
-
-				// If it is not empty.
-				if ( styleNode.innerHTML.RTrim().length > 0 )
-				{
-					// Insert it in the range position (it is collapsed after
-					// ExtractContents.
-					range.InsertNode( styleNode ) ;
-
-					// Here we do some cleanup, removing all duplicated
-					// elements from the style element.
-					this.RemoveFromElement( styleNode ) ;
-
-					// Let's merge our new style with its neighbors, if possible.
-					this._MergeSiblings( styleNode, this._GetAttribsForComparison() ) ;
-
-					// As the style system breaks text nodes constantly, let's normalize
-					// things for performance.
-					// With IE, some paragraphs get broken when calling normalize()
-					// repeatedly. Also, for IE, we must normalize body, not documentElement.
-					// IE is also known for having a "crash effect" with normalize().
-					// We should try to normalize with IE too in some way, somewhere.
-					if ( !FCKBrowserInfo.IsIE )
-						styleNode.normalize() ;
-				}
-
-				// Style applied, let's release the range, so it gets marked to
-				// re-initialization in the next loop.
-				range.Release( true ) ;
-			}
-		}
-
-		this._FixBookmarkStart( startNode ) ;
-
-		// Re-select the original range.
-		if ( selectIt )
-			range.SelectBookmark( bookmark ) ;
-
-		if ( updateRange )
-			range.MoveToBookmark( bookmark ) ;
-	},
-
-	_FixBookmarkStart : function( startNode )
-	{
-		// After appliying or removing an inline style, the start boundary of
-		// the selection must be placed inside all inline elements it is
-		// bordering.
-		var startSibling ;
-		while ( ( startSibling = startNode.nextSibling ) )	// Only one "=".
-		{
-			if ( startSibling.nodeType == 1
-				&& FCKListsLib.InlineNonEmptyElements[ startSibling.nodeName.toLowerCase() ] )
-			{
-				// If it is an empty inline element, we can safely remove it.
-				if ( !startSibling.firstChild )
-					FCKDomTools.RemoveNode( startSibling ) ;
-				else
-					FCKDomTools.MoveNode( startNode, startSibling, true ) ;
-				continue ;
-			}
-
-			// Empty text nodes can be safely removed to not disturb.
-			if ( startSibling.nodeType == 3 && startSibling.length == 0 )
-			{
-				FCKDomTools.RemoveNode( startSibling ) ;
-				continue ;
-			}
-
-			break ;
-		}
-	},
-
-	/**
-	 * Merge an element with its similar siblings.
-	 * "attribs" is and object computed with _CreateAttribsForComparison.
-	 */
-	_MergeSiblings : function( element, attribs )
-	{
-		if ( !element || element.nodeType != 1 || !FCKListsLib.InlineNonEmptyElements[ element.nodeName.toLowerCase() ] )
-			return ;
-
-		this._MergeNextSibling( element, attribs ) ;
-		this._MergePreviousSibling( element, attribs ) ;
-	},
-
-	/**
-	 * Merge an element with its similar siblings after it.
-	 * "attribs" is and object computed with _CreateAttribsForComparison.
-	 */
-	_MergeNextSibling : function( element, attribs )
-	{
-		// Check the next sibling.
-		var sibling = element.nextSibling ;
-
-		// Check if the next sibling is a bookmark element. In this case, jump it.
-		var hasBookmark = ( sibling && sibling.nodeType == 1 && sibling.getAttribute( '_fck_bookmark' ) ) ;
-		if ( hasBookmark )
-			sibling = sibling.nextSibling ;
-
-		if ( sibling && sibling.nodeType == 1 && sibling.nodeName == element.nodeName )
-		{
-			if ( !attribs )
-				attribs = this._CreateElementAttribsForComparison( element ) ;
-
-			if ( this._CheckAttributesMatch( sibling, attribs ) )
-			{
-				// Save the last child to be checked too (to merge things like <b><i></i></b><b><i></i></b>).
-				var innerSibling = element.lastChild ;
-
-				if ( hasBookmark )
-					FCKDomTools.MoveNode( element.nextSibling, element ) ;
-
-				// Move contents from the sibling.
-				FCKDomTools.MoveChildren( sibling, element ) ;
-				FCKDomTools.RemoveNode( sibling ) ;
-
-				// Now check the last inner child (see two comments above).
-				if ( innerSibling )
-					this._MergeNextSibling( innerSibling ) ;
-			}
-		}
-	},
-
-	/**
-	 * Merge an element with its similar siblings before it.
-	 * "attribs" is and object computed with _CreateAttribsForComparison.
-	 */
-	_MergePreviousSibling : function( element, attribs )
-	{
-		// Check the previous sibling.
-		var sibling = element.previousSibling ;
-
-		// Check if the previous sibling is a bookmark element. In this case, jump it.
-		var hasBookmark = ( sibling && sibling.nodeType == 1 && sibling.getAttribute( '_fck_bookmark' ) ) ;
-		if ( hasBookmark )
-			sibling = sibling.previousSibling ;
-
-		if ( sibling && sibling.nodeType == 1 && sibling.nodeName == element.nodeName )
-		{
-			if ( !attribs )
-				attribs = this._CreateElementAttribsForComparison( element ) ;
-
-			if ( this._CheckAttributesMatch( sibling, attribs ) )
-			{
-				// Save the first child to be checked too (to merge things like <b><i></i></b><b><i></i></b>).
-				var innerSibling = element.firstChild ;
-
-				if ( hasBookmark )
-					FCKDomTools.MoveNode( element.previousSibling, element, true ) ;
-
-				// Move contents to the sibling.
-				FCKDomTools.MoveChildren( sibling, element, true ) ;
-				FCKDomTools.RemoveNode( sibling ) ;
-
-				// Now check the first inner child (see two comments above).
-				if ( innerSibling )
-					this._MergePreviousSibling( innerSibling ) ;
-			}
-		}
-	},
-
-	/**
-	 * Build the cssText based on the styles definition.
-	 */
-	_GetStyleText : function()
-	{
-		var stylesDef = this._StyleDesc.Styles ;
-
-		// Builds the StyleText.
-		var stylesText = ( this._StyleDesc.Attributes ? this._StyleDesc.Attributes['style'] || '' : '' ) ;
-
-		if ( stylesText.length > 0 )
-			stylesText += ';' ;
-
-		for ( var style in stylesDef )
-			stylesText += style + ':' + stylesDef[style] + ';' ;
-
-		// Browsers make some changes to the style when applying them. So, here
-		// we normalize it to the browser format. We'll not do that if there
-		// are variables inside the style.
-		if ( stylesText.length > 0 && !( /#\(/.test( stylesText ) ) )
-		{
-			stylesText = FCKTools.NormalizeCssText( stylesText ) ;
-		}
-
-		return (this._GetStyleText = function() { return stylesText ; })() ;
-	},
-
-	/**
-	 * Get the the collection used to compare the attributes defined in this
-	 * style with attributes in an element. All information in it is lowercased.
-	 */
-	_GetAttribsForComparison : function()
-	{
-		// If we have already computed it, just return it.
-		var attribs = this._GetAttribsForComparison_$ ;
-		if ( attribs )
-			return attribs ;
-
-		attribs = new Object() ;
-
-		// Loop through all defined attributes.
-		var styleAttribs = this._StyleDesc.Attributes ;
-		if ( styleAttribs )
-		{
-			for ( var styleAtt in styleAttribs )
-			{
-				attribs[ styleAtt.toLowerCase() ] = styleAttribs[ styleAtt ].toLowerCase() ;
-			}
-		}
-
-		// Includes the style definitions.
-		if ( this._GetStyleText().length > 0 )
-		{
-			attribs['style'] = this._GetStyleText().toLowerCase() ;
-		}
-
-		// Appends the "length" information to the object.
-		FCKTools.AppendLengthProperty( attribs, '_length' ) ;
-
-		// Return it, saving it to the next request.
-		return ( this._GetAttribsForComparison_$ = attribs ) ;
-	},
-
-	/**
-	 * Get the the collection used to compare the elements and attributes,
-	 * defined in this style overrides, with other element. All information in
-	 * it is lowercased.
-	 */
-	_GetOverridesForComparison : function()
-	{
-		// If we have already computed it, just return it.
-		var overrides = this._GetOverridesForComparison_$ ;
-		if ( overrides )
-			return overrides ;
-
-		overrides = new Object() ;
-
-		var overridesDesc = this._StyleDesc.Overrides ;
-
-		if ( overridesDesc )
-		{
-			// The override description can be a string, object or array.
-			// Internally, well handle arrays only, so transform it if needed.
-			if ( !FCKTools.IsArray( overridesDesc ) )
-				overridesDesc = [ overridesDesc ] ;
-
-			// Loop through all override definitions.
-			for ( var i = 0 ; i < overridesDesc.length ; i++ )
-			{
-				var override = overridesDesc[i] ;
-				var elementName ;
-				var overrideEl ;
-				var attrs ;
-
-				// If can be a string with the element name.
-				if ( typeof override == 'string' )
-					elementName = override.toLowerCase() ;
-				// Or an object.
-				else
-				{
-					elementName = override.Element ? override.Element.toLowerCase() : this.Element ;
-					attrs = override.Attributes ;
-				}
-
-				// We can have more than one override definition for the same
-				// element name, so we attempt to simply append information to
-				// it if it already exists.
-				overrideEl = overrides[ elementName ] || ( overrides[ elementName ] = {} ) ;
-
-				if ( attrs )
-				{
-					// The returning attributes list is an array, because we
-					// could have different override definitions for the same
-					// attribute name.
-					var overrideAttrs = ( overrideEl.Attributes = overrideEl.Attributes || new Array() ) ;
-					for ( var attName in attrs )
-					{
-						// Each item in the attributes array is also an array,
-						// where [0] is the attribute name and [1] is the
-						// override value.
-						overrideAttrs.push( [ attName.toLowerCase(), attrs[ attName ] ] ) ;
-					}
-				}
-			}
-		}
-
-		return ( this._GetOverridesForComparison_$ = overrides ) ;
-	},
-
-	/*
-	 * Create and object containing all attributes specified in an element,
-	 * added by a "_length" property. All values are lowercased.
-	 */
-	_CreateElementAttribsForComparison : function( element )
-	{
-		var attribs = new Object() ;
-		var attribsCount = 0 ;
-
-		for ( var i = 0 ; i < element.attributes.length ; i++ )
-		{
-			var att = element.attributes[i] ;
-
-			if ( att.specified )
-			{
-				attribs[ att.nodeName.toLowerCase() ] = FCKDomTools.GetAttributeValue( element, att ).toLowerCase() ;
-				attribsCount++ ;
-			}
-		}
-
-		attribs._length = attribsCount ;
-
-		return attribs ;
-	},
-
-	/**
-	 * Checks is the element attributes have a perfect match with the style
-	 * attributes.
-	 */
-	_CheckAttributesMatch : function( element, styleAttribs )
-	{
-		// Loop through all specified attributes. The same number of
-		// attributes must be found and their values must match to
-		// declare them as equal.
-
-		var elementAttrbs = element.attributes ;
-		var matchCount = 0 ;
-
-		for ( var i = 0 ; i < elementAttrbs.length ; i++ )
-		{
-			var att = elementAttrbs[i] ;
-			if ( att.specified )
-			{
-				var attName = att.nodeName.toLowerCase() ;
-				var styleAtt = styleAttribs[ attName ] ;
-
-				// The attribute is not defined in the style.
-				if ( !styleAtt )
-					break ;
-
-				// The values are different.
-				if ( styleAtt != FCKDomTools.GetAttributeValue( element, att ).toLowerCase() )
-					break ;
-
-				matchCount++ ;
-			}
-		}
-
-		return ( matchCount == styleAttribs._length ) ;
-	}
-} ;

+ 0 - 103
main/inc/lib/fckeditor/editor/_source/classes/fcktoolbar.js

@@ -1,103 +0,0 @@
-/*
- * FCKeditor - The text editor for Internet - http://www.fckeditor.net
- * Copyright (C) 2003-2010 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 ==
- *
- * FCKToolbar Class: represents a toolbar in the toolbarset. It is a group of
- * toolbar items.
- */
-
-var FCKToolbar = function()
-{
-	this.Items = new Array() ;
-}
-
-FCKToolbar.prototype.AddItem = function( item )
-{
-	return this.Items[ this.Items.length ] = item ;
-}
-
-FCKToolbar.prototype.AddButton = function( name, label, tooltip, iconPathOrStripInfoArrayOrIndex, style, state )
-{
-	if ( typeof( iconPathOrStripInfoArrayOrIndex ) == 'number' )
-		 iconPathOrStripInfoArrayOrIndex = [ this.DefaultIconsStrip, this.DefaultIconSize, iconPathOrStripInfoArrayOrIndex ] ;
-
-	var oButton = new FCKToolbarButtonUI( name, label, tooltip, iconPathOrStripInfoArrayOrIndex, style, state ) ;
-	oButton._FCKToolbar = this ;
-	oButton.OnClick = FCKToolbar_OnItemClick ;
-
-	return this.AddItem( oButton ) ;
-}
-
-function FCKToolbar_OnItemClick( item )
-{
-	var oToolbar = item._FCKToolbar ;
-
-	if ( oToolbar.OnItemClick )
-		oToolbar.OnItemClick( oToolbar, item ) ;
-}
-
-FCKToolbar.prototype.AddSeparator = function()
-{
-	this.AddItem( new FCKToolbarSeparator() ) ;
-}
-
-FCKToolbar.prototype.Create = function( parentElement )
-{
-	var oDoc = FCKTools.GetElementDocument( parentElement ) ;
-
-	var e = oDoc.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 targetRow = e.insertRow(-1) ;
-
-	// Insert the start cell.
-	var eCell ;
-
-	if ( !this.HideStart )
-	{
-		eCell = targetRow.insertCell(-1) ;
-		eCell.appendChild( oDoc.createElement( 'div' ) ).className = 'TB_Start' ;
-	}
-
-	for ( var i = 0 ; i < this.Items.length ; i++ )
-	{
-		this.Items[i].Create( targetRow.insertCell(-1) ) ;
-	}
-
-	// Insert the ending cell.
-	if ( !this.HideEnd )
-	{
-		eCell = targetRow.insertCell(-1) ;
-		eCell.appendChild( oDoc.createElement( 'div' ) ).className = 'TB_End' ;
-	}
-
-	parentElement.appendChild( e ) ;
-}
-
-var FCKToolbarSeparator = function()
-{}
-
-FCKToolbarSeparator.prototype.Create = function( parentElement )
-{
-	FCKTools.AppendElement( parentElement, 'div' ).className = 'TB_Separator' ;
-}

+ 0 - 36
main/inc/lib/fckeditor/editor/_source/classes/fcktoolbarbreak_gecko.js

@@ -1,36 +0,0 @@
-/*
- * FCKeditor - The text editor for Internet - http://www.fckeditor.net
- * Copyright (C) 2003-2010 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 ==
- *
- * FCKToolbarBreak Class: breaks the toolbars.
- * It makes it possible to force the toolbar to break to a new line.
- * This is the Gecko specific implementation.
- */
-
-var FCKToolbarBreak = function()
-{}
-
-FCKToolbarBreak.prototype.Create = function( targetElement )
-{
-	var oBreakDiv = targetElement.ownerDocument.createElement( 'div' ) ;
-
-	oBreakDiv.style.clear = oBreakDiv.style.cssFloat = FCKLang.Dir == 'rtl' ? 'right' : 'left' ;
-
-	targetElement.appendChild( oBreakDiv ) ;
-}

+ 0 - 38
main/inc/lib/fckeditor/editor/_source/classes/fcktoolbarbreak_ie.js

@@ -1,38 +0,0 @@
-/*
- * FCKeditor - The text editor for Internet - http://www.fckeditor.net
- * Copyright (C) 2003-2010 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 ==
- *
- * FCKToolbarBreak Class: breaks the toolbars.
- * It makes it possible to force the toolbar to break to a new line.
- * This is the IE specific implementation.
- */
-
-var FCKToolbarBreak = function()
-{}
-
-FCKToolbarBreak.prototype.Create = function( targetElement )
-{
-	var oBreakDiv = FCKTools.GetElementDocument( targetElement ).createElement( 'div' ) ;
-
-	oBreakDiv.className = 'TB_Break' ;
-
-	oBreakDiv.style.clear = FCKLang.Dir == 'rtl' ? 'left' : 'right' ;
-
-	targetElement.appendChild( oBreakDiv ) ;
-}

+ 0 - 81
main/inc/lib/fckeditor/editor/_source/classes/fcktoolbarbutton.js

@@ -1,81 +0,0 @@
-/*
- * FCKeditor - The text editor for Internet - http://www.fckeditor.net
- * Copyright (C) 2003-2010 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 ==
- *
- * FCKToolbarButton Class: represents a button in the toolbar.
- */
-
-var FCKToolbarButton = function( commandName, label, tooltip, style, sourceView, contextSensitive, icon )
-{
-	this.CommandName		= commandName ;
-	this.Label				= label ;
-	this.Tooltip			= tooltip ;
-	this.Style				= style ;
-	this.SourceView			= sourceView ? true : false ;
-	this.ContextSensitive	= contextSensitive ? true : false ;
-
-	if ( icon == null )
-		this.IconPath = FCKConfig.SkinPath + 'toolbar/' + commandName.toLowerCase() + '.gif' ;
-	else if ( typeof( icon ) == 'number' )
-		this.IconPath = [ FCKConfig.SkinPath + 'fck_strip.gif', 16, icon ] ;
-	else
-		this.IconPath = icon ;
-}
-
-FCKToolbarButton.prototype.Create = function( targetElement )
-{
-	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( targetElement ) ;
-}
-
-FCKToolbarButton.prototype.RefreshState = function()
-{
-	var uiButton = this._UIButton ;
-
-	if ( !uiButton )
-		return ;
-
-	// Gets the actual state.
-	var eState = FCK.ToolbarSet.CurrentInstance.Commands.GetCommand( this.CommandName ).GetState() ;
-
-	// If there are no state changes than do nothing and return.
-	if ( eState == uiButton.State ) return ;
-
-	// Sets the actual state.
-	uiButton.ChangeState( eState ) ;
-}
-
-FCKToolbarButton.prototype.Click = function()
-{
-	var oToolbarButton = this._ToolbarButton || this ;
-	FCK.ToolbarSet.CurrentInstance.Commands.GetCommand( oToolbarButton.CommandName ).Execute() ;
-}
-
-FCKToolbarButton.prototype.Enable = function()
-{
-	this.RefreshState() ;
-}
-
-FCKToolbarButton.prototype.Disable = function()
-{
-	// Sets the actual state.
-	this._UIButton.ChangeState( FCK_TRISTATE_DISABLED ) ;
-}

+ 0 - 198
main/inc/lib/fckeditor/editor/_source/classes/fcktoolbarbuttonui.js

@@ -1,198 +0,0 @@
-/*
- * FCKeditor - The text editor for Internet - http://www.fckeditor.net
- * Copyright (C) 2003-2010 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 ==
- *
- * FCKToolbarButtonUI Class: interface representation of a toolbar button.
- */
-
-var FCKToolbarButtonUI = function( name, label, tooltip, iconPathOrStripInfoArray, style, state )
-{
-	this.Name		= name ;
-	this.Label		= label || name ;
-	this.Tooltip	= tooltip || this.Label ;
-	this.Style		= style || FCK_TOOLBARITEM_ONLYICON ;
-	this.State		= state || FCK_TRISTATE_OFF ;
-
-	this.Icon = new FCKIcon( iconPathOrStripInfoArray ) ;
-
-	if ( FCK.IECleanup )
-		FCK.IECleanup.AddItem( this, FCKToolbarButtonUI_Cleanup ) ;
-}
-
-
-FCKToolbarButtonUI.prototype._CreatePaddingElement = function( document )
-{
-	var oImg = document.createElement( 'IMG' ) ;
-	oImg.className = 'TB_Button_Padding' ;
-	oImg.src = FCK_SPACER_PATH ;
-	return oImg ;
-}
-
-FCKToolbarButtonUI.prototype.Create = function( parentElement )
-{
-	var oDoc = FCKTools.GetElementDocument( parentElement ) ;
-
-	// Create the Main Element.
-	var oMainElement = this.MainElement = oDoc.createElement( 'DIV' ) ;
-	oMainElement.title = this.Tooltip ;
-
-	// The following will prevent the button from catching the focus.
-	if ( FCKBrowserInfo.IsGecko )
-		 oMainElement.onmousedown	= FCKTools.CancelEvent ;
-
-	FCKTools.AddEventListenerEx( oMainElement, 'mouseover', FCKToolbarButtonUI_OnMouseOver, this ) ;
-	FCKTools.AddEventListenerEx( oMainElement, 'mouseout', FCKToolbarButtonUI_OnMouseOut, this ) ;
-	FCKTools.AddEventListenerEx( oMainElement, 'click', FCKToolbarButtonUI_OnClick, this ) ;
-
-	this.ChangeState( this.State, true ) ;
-
-	if ( this.Style == FCK_TOOLBARITEM_ONLYICON && !this.ShowArrow )
-	{
-		// <td><div class="TB_Button_On" title="Smiley">{Image}</div></td>
-
-		oMainElement.appendChild( this.Icon.CreateIconElement( oDoc ) ) ;
-	}
-	else
-	{
-		// <td><div class="TB_Button_On" title="Smiley"><table cellpadding="0" cellspacing="0"><tr><td>{Image}</td><td nowrap>Toolbar Button</td><td><img class="TB_Button_Padding"></td></tr></table></div></td>
-		// <td><div class="TB_Button_On" title="Smiley"><table cellpadding="0" cellspacing="0"><tr><td><img class="TB_Button_Padding"></td><td nowrap>Toolbar Button</td><td><img class="TB_Button_Padding"></td></tr></table></div></td>
-
-		var oTable = oMainElement.appendChild( oDoc.createElement( 'TABLE' ) ) ;
-		oTable.cellPadding = 0 ;
-		oTable.cellSpacing = 0 ;
-
-		var oRow = oTable.insertRow(-1) ;
-
-		// The Image cell (icon or padding).
-		var oCell = oRow.insertCell(-1) ;
-
-		if ( this.Style == FCK_TOOLBARITEM_ONLYICON || this.Style == FCK_TOOLBARITEM_ICONTEXT )
-			oCell.appendChild( this.Icon.CreateIconElement( oDoc ) ) ;
-		else
-			oCell.appendChild( this._CreatePaddingElement( oDoc ) ) ;
-
-		if ( this.Style == FCK_TOOLBARITEM_ONLYTEXT || this.Style == FCK_TOOLBARITEM_ICONTEXT )
-		{
-			// The Text cell.
-			oCell = oRow.insertCell(-1) ;
-			oCell.className = 'TB_Button_Text' ;
-			oCell.noWrap = true ;
-			oCell.appendChild( oDoc.createTextNode( this.Label ) ) ;
-		}
-
-		if ( this.ShowArrow )
-		{
-			if ( this.Style != FCK_TOOLBARITEM_ONLYICON )
-			{
-				// A padding cell.
-				oRow.insertCell(-1).appendChild( this._CreatePaddingElement( oDoc ) ) ;
-			}
-
-			oCell = oRow.insertCell(-1) ;
-			var eImg = oCell.appendChild( oDoc.createElement( 'IMG' ) ) ;
-			eImg.src	= FCKConfig.SkinPath + 'images/toolbar.buttonarrow.gif' ;
-			eImg.width	= 5 ;
-			eImg.height	= 3 ;
-		}
-
-		// The last padding cell.
-		oCell = oRow.insertCell(-1) ;
-		oCell.appendChild( this._CreatePaddingElement( oDoc ) ) ;
-	}
-
-	parentElement.appendChild( oMainElement ) ;
-}
-
-FCKToolbarButtonUI.prototype.ChangeState = function( newState, force )
-{
-	if ( !force && this.State == newState )
-		return ;
-
-	var e = this.MainElement ;
-
-	// In IE it can happen when the page is reloaded that MainElement is null, so exit here
-	if ( !e )
-		return ;
-
-	switch ( parseInt( newState, 10 ) )
-	{
-		case FCK_TRISTATE_OFF :
-			e.className		= 'TB_Button_Off' ;
-			break ;
-
-		case FCK_TRISTATE_ON :
-			e.className		= 'TB_Button_On' ;
-			break ;
-
-		case FCK_TRISTATE_DISABLED :
-			e.className		= 'TB_Button_Disabled' ;
-			break ;
-	}
-
-	this.State = newState ;
-}
-
-function FCKToolbarButtonUI_OnMouseOver( ev, button )
-{
-	if ( button.State == FCK_TRISTATE_OFF )
-		this.className = 'TB_Button_Off_Over' ;
-	else if ( button.State == FCK_TRISTATE_ON )
-		this.className = 'TB_Button_On_Over' ;
-}
-
-function FCKToolbarButtonUI_OnMouseOut( ev, button )
-{
-	if ( button.State == FCK_TRISTATE_OFF )
-		this.className = 'TB_Button_Off' ;
-	else if ( button.State == FCK_TRISTATE_ON )
-		this.className = 'TB_Button_On' ;
-}
-
-function FCKToolbarButtonUI_OnClick( ev, button )
-{
-	if ( button.OnClick && button.State != FCK_TRISTATE_DISABLED )
-		button.OnClick( button ) ;
-}
-
-function FCKToolbarButtonUI_Cleanup()
-{
-	// This one should not cause memory leak, but just for safety, let's clean
-	// it up.
-	this.MainElement = null ;
-}
-
-/*
-	Sample outputs:
-
-	This is the base structure. The variation is the image that is marked as {Image}:
-		<td><div class="TB_Button_On" title="Smiley">{Image}</div></td>
-		<td><div class="TB_Button_On" title="Smiley"><table cellpadding="0" cellspacing="0"><tr><td>{Image}</td><td nowrap>Toolbar Button</td><td><img class="TB_Button_Padding"></td></tr></table></div></td>
-		<td><div class="TB_Button_On" title="Smiley"><table cellpadding="0" cellspacing="0"><tr><td><img class="TB_Button_Padding"></td><td nowrap>Toolbar Button</td><td><img class="TB_Button_Padding"></td></tr></table></div></td>
-
-	These are samples of possible {Image} values:
-
-		Strip - IE version:
-			<div class="TB_Button_Image"><img src="strip.gif" style="top:-16px"></div>
-
-		Strip : Firefox, Safari and Opera version
-			<img class="TB_Button_Image" style="background-position: 0px -16px;background-image: url(strip.gif);">
-
-		No-Strip : Browser independent:
-			<img class="TB_Button_Image" src="smiley.gif">
-*/

+ 0 - 139
main/inc/lib/fckeditor/editor/_source/classes/fcktoolbarfontformatcombo.js

@@ -1,139 +0,0 @@
-/*
- * FCKeditor - The text editor for Internet - http://www.fckeditor.net
- * Copyright (C) 2003-2010 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 ==
- *
- * FCKToolbarPanelButton Class: Handles the Fonts combo selector.
- */
-
-var FCKToolbarFontFormatCombo = function( tooltip, style )
-{
-	if ( tooltip === false )
-		return ;
-
-	this.CommandName = 'FontFormat' ;
-	this.Label		= this.GetLabel() ;
-	this.Tooltip	= tooltip ? tooltip : this.Label ;
-	this.Style		= style ? style : FCK_TOOLBARITEM_ICONTEXT ;
-
-	this.NormalLabel = 'Normal' ;
-
-	this.PanelWidth = 190 ;
-
-	this.DefaultLabel = FCKConfig.DefaultFontFormatLabel || '' ;
-}
-
-// Inherit from FCKToolbarSpecialCombo.
-FCKToolbarFontFormatCombo.prototype = new FCKToolbarStyleCombo( false ) ;
-
-FCKToolbarFontFormatCombo.prototype.GetLabel = function()
-{
-	return FCKLang.FontFormat ;
-}
-
-FCKToolbarFontFormatCombo.prototype.GetStyles = function()
-{
-	var styles = {} ;
-
-	// Get the format names from the language file.
-	var aNames = FCKLang['FontFormats'].split(';') ;
-	var oNames = {
-		p		: aNames[0],
-		pre		: aNames[1],
-		address	: aNames[2],
-		h1		: aNames[3],
-		h2		: aNames[4],
-		h3		: aNames[5],
-		h4		: aNames[6],
-		h5		: aNames[7],
-		h6		: aNames[8],
-		div		: aNames[9] || ( aNames[0] + ' (DIV)')
-	} ;
-
-	// Get the available formats from the configuration file.
-	var elements = FCKConfig.FontFormats.split(';') ;
-
-	for ( var i = 0 ; i < elements.length ; i++ )
-	{
-		var elementName = elements[ i ] ;
-		var style = FCKStyles.GetStyle( '_FCK_' + elementName ) ;
-		if ( style )
-		{
-			style.Label = oNames[ elementName ] ;
-			styles[ '_FCK_' + elementName ] = style ;
-		}
-		else
-			alert( "The FCKConfig.CoreStyles['" + elementName + "'] setting was not found. Please check the fckconfig.js file" ) ;
-	}
-
-	return styles ;
-}
-
-FCKToolbarFontFormatCombo.prototype.RefreshActiveItems = function( targetSpecialCombo )
-{
-	var startElement = FCK.ToolbarSet.CurrentInstance.Selection.GetBoundaryParentElement( true ) ;
-
-	if ( startElement )
-	{
-		var path = new FCKElementPath( startElement ) ;
-		var blockElement = path.Block ;
-
-		if ( blockElement )
-		{
-			for ( var i in targetSpecialCombo.Items )
-			{
-				var item = targetSpecialCombo.Items[i] ;
-				var style = item.Style ;
-
-				if ( style.CheckElementRemovable( blockElement ) )
-				{
-					targetSpecialCombo.SetLabel( style.Label ) ;
-					return ;
-				}
-			}
-		}
-	}
-
-	targetSpecialCombo.SetLabel( this.DefaultLabel ) ;
-}
-
-FCKToolbarFontFormatCombo.prototype.StyleCombo_OnBeforeClick = function( targetSpecialCombo )
-{
-	// Clear the current selection.
-	targetSpecialCombo.DeselectAll() ;
-
-	var startElement = FCK.ToolbarSet.CurrentInstance.Selection.GetBoundaryParentElement( true ) ;
-
-	if ( startElement )
-	{
-		var path = new FCKElementPath( startElement ) ;
-		var blockElement = path.Block ;
-
-		for ( var i in targetSpecialCombo.Items )
-		{
-			var item = targetSpecialCombo.Items[i] ;
-			var style = item.Style ;
-
-			if ( style.CheckElementRemovable( blockElement ) )
-			{
-				targetSpecialCombo.SelectItem( item ) ;
-				return ;
-			}
-		}
-	}
-}

+ 0 - 98
main/inc/lib/fckeditor/editor/_source/classes/fcktoolbarfontscombo.js

@@ -1,98 +0,0 @@
-/*
- * FCKeditor - The text editor for Internet - http://www.fckeditor.net
- * Copyright (C) 2003-2010 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 ==
- *
- * FCKToolbarPanelButton Class: Handles the Fonts combo selector.
- */
-
-var FCKToolbarFontsCombo = function( tooltip, style )
-{
-	this.CommandName	= 'FontName' ;
-	this.Label		= this.GetLabel() ;
-	this.Tooltip	= tooltip ? tooltip : this.Label ;
-	this.Style		= style ? style : FCK_TOOLBARITEM_ICONTEXT ;
-
-	this.DefaultLabel = FCKConfig.DefaultFontLabel || '' ;
-}
-
-// Inherit from FCKToolbarSpecialCombo.
-FCKToolbarFontsCombo.prototype = new FCKToolbarFontFormatCombo( false ) ;
-
-FCKToolbarFontsCombo.prototype.GetLabel = function()
-{
-	return FCKLang.Font ;
-}
-
-FCKToolbarFontsCombo.prototype.GetStyles = function()
-{
-	var baseStyle = FCKStyles.GetStyle( '_FCK_FontFace' ) ;
-
-	if ( !baseStyle )
-	{
-		alert( "The FCKConfig.CoreStyles['Size'] setting was not found. Please check the fckconfig.js file" ) ;
-		return {} ;
-	}
-
-	var styles = {} ;
-
-	var fonts = FCKConfig.FontNames.split(';') ;
-
-	for ( var i = 0 ; i < fonts.length ; i++ )
-	{
-		var fontParts = fonts[i].split('/') ;
-		var font = fontParts[0] ;
-		var caption = fontParts[1] || font ;
-
-		var style = FCKTools.CloneObject( baseStyle ) ;
-
-		style.SetVariable( 'Font', font ) ;
-		style.Label = caption ;
-
-		styles[ caption ] = style ;
-	}
-
-	return styles ;
-}
-
-FCKToolbarFontsCombo.prototype.RefreshActiveItems = FCKToolbarStyleCombo.prototype.RefreshActiveItems ;
-
-FCKToolbarFontsCombo.prototype.StyleCombo_OnBeforeClick = function( targetSpecialCombo )
-{
-	// Clear the current selection.
-	targetSpecialCombo.DeselectAll() ;
-
-	var startElement = FCKSelection.GetBoundaryParentElement( true ) ;
-
-	if ( startElement )
-	{
-		var path = new FCKElementPath( startElement ) ;
-
-		for ( var i in targetSpecialCombo.Items )
-		{
-			var item = targetSpecialCombo.Items[i] ;
-			var style = item.Style ;
-
-			if ( style.CheckActive( path ) )
-			{
-				targetSpecialCombo.SelectItem( item ) ;
-				return ;
-			}
-		}
-	}
-}

+ 0 - 76
main/inc/lib/fckeditor/editor/_source/classes/fcktoolbarfontsizecombo.js

@@ -1,76 +0,0 @@
-/*
- * FCKeditor - The text editor for Internet - http://www.fckeditor.net
- * Copyright (C) 2003-2010 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 ==
- *
- * FCKToolbarPanelButton Class: Handles the Fonts combo selector.
- */
-
-var FCKToolbarFontSizeCombo = function( tooltip, style )
-{
-	this.CommandName	= 'FontSize' ;
-	this.Label		= this.GetLabel() ;
-	this.Tooltip	= tooltip ? tooltip : this.Label ;
-	this.Style		= style ? style : FCK_TOOLBARITEM_ICONTEXT ;
-
-	this.DefaultLabel = FCKConfig.DefaultFontSizeLabel || '' ;
-
-	this.FieldWidth = 70 ;
-}
-
-// Inherit from FCKToolbarSpecialCombo.
-FCKToolbarFontSizeCombo.prototype = new FCKToolbarFontFormatCombo( false ) ;
-
-FCKToolbarFontSizeCombo.prototype.GetLabel = function()
-{
-	return FCKLang.FontSize ;
-}
-
-FCKToolbarFontSizeCombo.prototype.GetStyles = function()
-{
-	var baseStyle = FCKStyles.GetStyle( '_FCK_Size' ) ;
-
-	if ( !baseStyle )
-	{
-		alert( "The FCKConfig.CoreStyles['FontFace'] setting was not found. Please check the fckconfig.js file" ) ;
-		return {} ;
-	}
-
-	var styles = {} ;
-
-	var fonts = FCKConfig.FontSizes.split(';') ;
-
-	for ( var i = 0 ; i < fonts.length ; i++ )
-	{
-		var fontParts = fonts[i].split('/') ;
-		var font = fontParts[0] ;
-		var caption = fontParts[1] || font ;
-
-		var style = FCKTools.CloneObject( baseStyle ) ;
-		style.SetVariable( 'Size', font ) ;
-		style.Label = caption ;
-
-		styles[ caption ] = style ;
-	}
-
-	return styles ;
-}
-
-FCKToolbarFontSizeCombo.prototype.RefreshActiveItems = FCKToolbarStyleCombo.prototype.RefreshActiveItems ;
-
-FCKToolbarFontSizeCombo.prototype.StyleCombo_OnBeforeClick = FCKToolbarFontsCombo.prototype.StyleCombo_OnBeforeClick ;

+ 0 - 103
main/inc/lib/fckeditor/editor/_source/classes/fcktoolbarpanelbutton.js

@@ -1,103 +0,0 @@
-/*
- * FCKeditor - The text editor for Internet - http://www.fckeditor.net
- * Copyright (C) 2003-2010 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 ==
- *
- * FCKToolbarPanelButton Class: represents a special button in the toolbar
- * that shows a panel when pressed.
- */
-
-var FCKToolbarPanelButton = function( commandName, label, tooltip, style, icon )
-{
-	this.CommandName = commandName ;
-
-	var oIcon ;
-
-	if ( icon == null )
-		oIcon = FCKConfig.SkinPath + 'toolbar/' + commandName.toLowerCase() + '.gif' ;
-	else if ( typeof( icon ) == 'number' )
-		oIcon = [ FCKConfig.SkinPath + 'fck_strip.gif', 16, icon ] ;
-
-	var oUIButton = this._UIButton = new FCKToolbarButtonUI( commandName, label, tooltip, oIcon, style ) ;
-	oUIButton._FCKToolbarPanelButton = this ;
-	oUIButton.ShowArrow = true ;
-	oUIButton.OnClick = FCKToolbarPanelButton_OnButtonClick ;
-}
-
-FCKToolbarPanelButton.prototype.TypeName = 'FCKToolbarPanelButton' ;
-
-FCKToolbarPanelButton.prototype.Create = function( parentElement )
-{
-	parentElement.className += 'Menu' ;
-
-	this._UIButton.Create( parentElement ) ;
-
-	var oPanel = FCK.ToolbarSet.CurrentInstance.Commands.GetCommand( this.CommandName )._Panel ;
-	this.RegisterPanel( oPanel ) ;
-}
-
-FCKToolbarPanelButton.prototype.RegisterPanel = function( oPanel )
-{
-	if ( oPanel._FCKToolbarPanelButton )
-		return ;
-
-	oPanel._FCKToolbarPanelButton = this ;
-
-	var eLineDiv = oPanel.Document.body.appendChild( oPanel.Document.createElement( 'div' ) ) ;
-	eLineDiv.style.position = 'absolute' ;
-	eLineDiv.style.top = '0px' ;
-
-	var eLine = oPanel._FCKToolbarPanelButtonLineDiv = eLineDiv.appendChild( oPanel.Document.createElement( 'IMG' ) ) ;
-	eLine.className = 'TB_ConnectionLine' ;
-	eLine.style.position = 'absolute' ;
-//	eLine.style.backgroundColor = 'Red' ;
-	eLine.src = FCK_SPACER_PATH ;
-
-	oPanel.OnHide = FCKToolbarPanelButton_OnPanelHide ;
-}
-
-/*
-	Events
-*/
-
-function FCKToolbarPanelButton_OnButtonClick( toolbarButton )
-{
-	var oButton = this._FCKToolbarPanelButton ;
-	var e = oButton._UIButton.MainElement ;
-
-	oButton._UIButton.ChangeState( FCK_TRISTATE_ON ) ;
-
-	// oButton.LineImg.style.width = ( e.offsetWidth - 2 ) + 'px' ;
-
-	var oCommand = FCK.ToolbarSet.CurrentInstance.Commands.GetCommand( oButton.CommandName ) ;
-	var oPanel = oCommand._Panel ;
-	oPanel._FCKToolbarPanelButtonLineDiv.style.width = ( e.offsetWidth - 2 ) + 'px' ;
-	oCommand.Execute( 0, e.offsetHeight - 1, e ) ; // -1 to be over the border
-}
-
-function FCKToolbarPanelButton_OnPanelHide()
-{
-	var oMenuButton = this._FCKToolbarPanelButton ;
-	oMenuButton._UIButton.ChangeState( FCK_TRISTATE_OFF ) ;
-}
-
-// The Panel Button works like a normal button so the refresh state functions
-// defined for the normal button can be reused here.
-FCKToolbarPanelButton.prototype.RefreshState	= FCKToolbarButton.prototype.RefreshState ;
-FCKToolbarPanelButton.prototype.Enable			= FCKToolbarButton.prototype.Enable ;
-FCKToolbarPanelButton.prototype.Disable			= FCKToolbarButton.prototype.Disable ;

+ 0 - 146
main/inc/lib/fckeditor/editor/_source/classes/fcktoolbarspecialcombo.js

@@ -1,146 +0,0 @@
-/*
- * FCKeditor - The text editor for Internet - http://www.fckeditor.net
- * Copyright (C) 2003-2010 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 ==
- *
- * FCKToolbarSpecialCombo Class: This is a "abstract" base class to be used
- * by the special combo toolbar elements like font name, font size, paragraph format, etc...
- *
- * The following properties and methods must be implemented when inheriting from
- * this class:
- * 	- Property:	CommandName							[ The command name to be executed ]
- * 	- Method:	GetLabel()							[ Returns the label ]
- * 	-			CreateItems( targetSpecialCombo )	[ Add all items in the special combo ]
- */
-
-var FCKToolbarSpecialCombo = function()
-{
-	this.SourceView			= false ;
-	this.ContextSensitive	= true ;
-	this.FieldWidth			= null ;
-	this.PanelWidth			= null ;
-	this.PanelMaxHeight		= null ;
-	//this._LastValue			= null ;
-}
-
-
-FCKToolbarSpecialCombo.prototype.DefaultLabel = '' ;
-
-function FCKToolbarSpecialCombo_OnSelect( itemId, item )
-{
-	FCK.ToolbarSet.CurrentInstance.Commands.GetCommand( this.CommandName ).Execute( itemId, item ) ;
-}
-
-FCKToolbarSpecialCombo.prototype.Create = function( targetElement )
-{
-	this._Combo = new FCKSpecialCombo( this.GetLabel(), this.FieldWidth, this.PanelWidth, this.PanelMaxHeight, FCKBrowserInfo.IsIE ? window : FCKTools.GetElementWindow( targetElement ).parent ) ;
-
-	/*
-	this._Combo.FieldWidth		= this.FieldWidth		!= null ? this.FieldWidth		: 100 ;
-	this._Combo.PanelWidth		= this.PanelWidth		!= null ? this.PanelWidth		: 150 ;
-	this._Combo.PanelMaxHeight	= this.PanelMaxHeight	!= null ? this.PanelMaxHeight	: 150 ;
-	*/
-
-	//this._Combo.Command.Name = this.Command.Name;
-//	this._Combo.Label	= this.Label ;
-	this._Combo.Tooltip	= this.Tooltip ;
-	this._Combo.Style	= this.Style ;
-
-	this.CreateItems( this._Combo ) ;
-
-	this._Combo.Create( targetElement ) ;
-
-	this._Combo.CommandName = this.CommandName ;
-
-	this._Combo.OnSelect = FCKToolbarSpecialCombo_OnSelect ;
-}
-
-function FCKToolbarSpecialCombo_RefreshActiveItems( combo, value )
-{
-	combo.DeselectAll() ;
-	combo.SelectItem( value ) ;
-	combo.SetLabelById( value ) ;
-}
-
-FCKToolbarSpecialCombo.prototype.RefreshState = function()
-{
-	// Gets the actual state.
-	var eState ;
-
-//	if ( FCK.EditMode == FCK_EDITMODE_SOURCE && ! this.SourceView )
-//		eState = FCK_TRISTATE_DISABLED ;
-//	else
-//	{
-		var sValue = FCK.ToolbarSet.CurrentInstance.Commands.GetCommand( this.CommandName ).GetState() ;
-
-//		FCKDebug.Output( 'RefreshState of Special Combo "' + this.TypeOf + '" - State: ' + sValue ) ;
-
-		if ( sValue != FCK_TRISTATE_DISABLED )
-		{
-			eState = FCK_TRISTATE_ON ;
-
-			if ( this.RefreshActiveItems )
-				this.RefreshActiveItems( this._Combo, sValue ) ;
-			else
-			{
-				if ( this._LastValue !== sValue)
-				{
-					this._LastValue = sValue ;
-
-					if ( !sValue || sValue.length == 0 )
-					{
-						this._Combo.DeselectAll() ;
-						this._Combo.SetLabel( this.DefaultLabel ) ;
-					}
-					else
-						FCKToolbarSpecialCombo_RefreshActiveItems( this._Combo, sValue ) ;
-				}
-			}
-		}
-		else
-			eState = FCK_TRISTATE_DISABLED ;
-//	}
-
-	// If there are no state changes then do nothing and return.
-	if ( eState == this.State ) return ;
-
-	if ( eState == FCK_TRISTATE_DISABLED )
-	{
-		this._Combo.DeselectAll() ;
-		this._Combo.SetLabel( '' ) ;
-	}
-
-	// Sets the actual state.
-	this.State = eState ;
-
-	// Updates the graphical state.
-	this._Combo.SetEnabled( eState != FCK_TRISTATE_DISABLED ) ;
-}
-
-FCKToolbarSpecialCombo.prototype.Enable = function()
-{
-	this.RefreshState() ;
-}
-
-FCKToolbarSpecialCombo.prototype.Disable = function()
-{
-	this.State = FCK_TRISTATE_DISABLED ;
-	this._Combo.DeselectAll() ;
-	this._Combo.SetLabel( '' ) ;
-	this._Combo.SetEnabled( false ) ;
-}

+ 0 - 200
main/inc/lib/fckeditor/editor/_source/classes/fcktoolbarstylecombo.js

@@ -1,200 +0,0 @@
-/*
- * FCKeditor - The text editor for Internet - http://www.fckeditor.net
- * Copyright (C) 2003-2010 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 ==
- *
- * FCKToolbarPanelButton Class: Handles the Fonts combo selector.
- */
-
-var FCKToolbarStyleCombo = function( tooltip, style )
-{
-	if ( tooltip === false )
-		return ;
-
-	this.CommandName = 'Style' ;
-	this.Label		= this.GetLabel() ;
-	this.Tooltip	= tooltip ? tooltip : this.Label ;
-	this.Style		= style ? style : FCK_TOOLBARITEM_ICONTEXT ;
-
-	this.DefaultLabel = FCKConfig.DefaultStyleLabel || '' ;
-}
-
-// Inherit from FCKToolbarSpecialCombo.
-FCKToolbarStyleCombo.prototype = new FCKToolbarSpecialCombo ;
-
-FCKToolbarStyleCombo.prototype.GetLabel = function()
-{
-	return FCKLang.Style ;
-}
-
-FCKToolbarStyleCombo.prototype.GetStyles = function()
-{
-	var styles = {} ;
-	var allStyles = FCK.ToolbarSet.CurrentInstance.Styles.GetStyles() ;
-
-	for ( var styleName in allStyles )
-	{
-		var style = allStyles[ styleName ] ;
-		if ( !style.IsCore )
-			styles[ styleName ] = style ;
-	}
-	return styles ;
-}
-
-FCKToolbarStyleCombo.prototype.CreateItems = function( targetSpecialCombo )
-{
-	var targetDoc = targetSpecialCombo._Panel.Document ;
-
-	// Add the Editor Area CSS to the panel so the style classes are previewed correctly.
-	FCKTools.AppendStyleSheet( targetDoc, FCKConfig.ToolbarComboPreviewCSS ) ;
-	FCKTools.AppendStyleString( targetDoc, FCKConfig.EditorAreaStyles ) ;
-	targetDoc.body.className += ' ForceBaseFont' ;
-
-	// Add ID and Class to the body.
-	FCKConfig.ApplyBodyAttributes( targetDoc.body ) ;
-
-	// Get the styles list.
-	var styles = this.GetStyles() ;
-
-	for ( var styleName in styles )
-	{
-		var style = styles[ styleName ] ;
-
-		// Object type styles have no preview.
-		var caption = style.GetType() == FCK_STYLE_OBJECT ?
-			styleName :
-			FCKToolbarStyleCombo_BuildPreview( style, style.Label || styleName ) ;
-
-		var item = targetSpecialCombo.AddItem( styleName, caption ) ;
-
-		item.Style = style ;
-	}
-
-	// We must prepare the list before showing it.
-	targetSpecialCombo.OnBeforeClick = this.StyleCombo_OnBeforeClick ;
-}
-
-FCKToolbarStyleCombo.prototype.RefreshActiveItems = function( targetSpecialCombo )
-{
-	var startElement = FCK.ToolbarSet.CurrentInstance.Selection.GetBoundaryParentElement( true ) ;
-
-	if ( startElement )
-	{
-		var path = new FCKElementPath( startElement ) ;
-		var elements = path.Elements ;
-
-		for ( var e = 0 ; e < elements.length ; e++ )
-		{
-			for ( var i in targetSpecialCombo.Items )
-			{
-				var item = targetSpecialCombo.Items[i] ;
-				var style = item.Style ;
-
-				if ( style.CheckElementRemovable( elements[ e ], true ) )
-				{
-					targetSpecialCombo.SetLabel( style.Label || style.Name ) ;
-					return ;
-				}
-			}
-		}
-	}
-
-	targetSpecialCombo.SetLabel( this.DefaultLabel ) ;
-}
-
-FCKToolbarStyleCombo.prototype.StyleCombo_OnBeforeClick = function( targetSpecialCombo )
-{
-	// Two things are done here:
-	//	- In a control selection, get the element name, so we'll display styles
-	//	  for that element only.
-	//	- Select the styles that are active for the current selection.
-
-	// Clear the current selection.
-	targetSpecialCombo.DeselectAll() ;
-
-	var startElement ;
-	var path ;
-	var tagName ;
-
-	var selection = FCK.ToolbarSet.CurrentInstance.Selection ;
-
-	if ( selection.GetType() == 'Control' )
-	{
-		startElement = selection.GetSelectedElement() ;
-		tagName = startElement.nodeName.toLowerCase() ;
-	}
-	else
-	{
-		startElement = selection.GetBoundaryParentElement( true ) ;
-		path = new FCKElementPath( startElement ) ;
-	}
-
-	for ( var i in targetSpecialCombo.Items )
-	{
-		var item = targetSpecialCombo.Items[i] ;
-		var style = item.Style ;
-
-		if ( ( tagName && style.Element == tagName ) || ( !tagName && style.GetType() != FCK_STYLE_OBJECT ) )
-		{
-			item.style.display = '' ;
-
-			if ( ( path && style.CheckActive( path ) ) || ( !path && style.CheckElementRemovable( startElement, true ) ) )
-				targetSpecialCombo.SelectItem( style.Name ) ;
-		}
-		else
-			item.style.display = 'none' ;
-	}
-}
-
-function FCKToolbarStyleCombo_BuildPreview( style, caption )
-{
-	var styleType = style.GetType() ;
-	var html = [] ;
-
-	if ( styleType == FCK_STYLE_BLOCK )
-		html.push( '<div class="BaseFont">' ) ;
-
-	var elementName = style.Element ;
-
-	// Avoid <bdo> in the preview.
-	if ( elementName == 'bdo' )
-		elementName = 'span' ;
-
-	html = [ '<', elementName ] ;
-
-	// Assign all defined attributes.
-	var attribs	= style._StyleDesc.Attributes ;
-	if ( attribs )
-	{
-		for ( var att in attribs )
-		{
-			html.push( ' ', att, '="', style.GetFinalAttributeValue( att ), '"' ) ;
-		}
-	}
-
-	// Assign the style attribute.
-	if ( style._GetStyleText().length > 0 )
-		html.push( ' style="', style.GetFinalStyleValue(), '"' ) ;
-
-	html.push( '>', caption, '</', elementName, '>' ) ;
-
-	if ( styleType == FCK_STYLE_BLOCK )
-		html.push( '</div>' ) ;
-
-	return html.join( '' ) ;
-}

+ 0 - 451
main/inc/lib/fckeditor/editor/_source/classes/fckw3crange.js

@@ -1,451 +0,0 @@
-/*
- * FCKeditor - The text editor for Internet - http://www.fckeditor.net
- * Copyright (C) 2003-2010 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 class partially implements the W3C DOM Range for browser that don't
- * support the standards (like IE):
- * http://www.w3.org/TR/DOM-Level-2-Traversal-Range/ranges.html
- */
-
-var FCKW3CRange = function( parentDocument )
-{
-	this._Document = parentDocument ;
-
-	this.startContainer	= null ;
-	this.startOffset	= null ;
-	this.endContainer	= null ;
-	this.endOffset		= null ;
-	this.collapsed		= true ;
-}
-
-FCKW3CRange.CreateRange = function( parentDocument )
-{
-	// We could opt to use the Range implementation of the browsers. The problem
-	// is that every browser have different bugs on their implementations,
-	// mostly related to different interpretations of the W3C specifications.
-	// So, for now, let's use our implementation and pray for browsers fixings
-	// soon. Otherwise will go crazy on trying to find out workarounds.
-	/*
-	// Get the browser implementation of the range, if available.
-	if ( parentDocument.createRange )
-	{
-		var range = parentDocument.createRange() ;
-		if ( typeof( range.startContainer ) != 'undefined' )
-			return range ;
-	}
-	*/
-	return new FCKW3CRange( parentDocument ) ;
-}
-
-FCKW3CRange.CreateFromRange = function( parentDocument, sourceRange )
-{
-	var range = FCKW3CRange.CreateRange( parentDocument ) ;
-	range.setStart( sourceRange.startContainer, sourceRange.startOffset ) ;
-	range.setEnd( sourceRange.endContainer, sourceRange.endOffset ) ;
-	return range ;
-}
-
-FCKW3CRange.prototype =
-{
-
-	_UpdateCollapsed : function()
-	{
-      this.collapsed = ( this.startContainer == this.endContainer && this.startOffset == this.endOffset ) ;
-	},
-
-	// W3C requires a check for the new position. If it is after the end
-	// boundary, the range should be collapsed to the new start. It seams we
-	// will not need this check for our use of this class so we can ignore it for now.
-	setStart : function( refNode, offset )
-	{
-		this.startContainer	= refNode ;
-		this.startOffset	= offset ;
-
-		if ( !this.endContainer )
-		{
-			this.endContainer	= refNode ;
-			this.endOffset		= offset ;
-		}
-
-		this._UpdateCollapsed() ;
-	},
-
-	// W3C requires a check for the new position. If it is before the start
-	// boundary, the range should be collapsed to the new end. It seams we
-	// will not need this check for our use of this class so we can ignore it for now.
-	setEnd : function( refNode, offset )
-	{
-		this.endContainer	= refNode ;
-		this.endOffset		= offset ;
-
-		if ( !this.startContainer )
-		{
-			this.startContainer	= refNode ;
-			this.startOffset	= offset ;
-		}
-
-		this._UpdateCollapsed() ;
-	},
-
-	setStartAfter : function( refNode )
-	{
-		this.setStart( refNode.parentNode, FCKDomTools.GetIndexOf( refNode ) + 1 ) ;
-	},
-
-	setStartBefore : function( refNode )
-	{
-		this.setStart( refNode.parentNode, FCKDomTools.GetIndexOf( refNode ) ) ;
-	},
-
-	setEndAfter : function( refNode )
-	{
-		this.setEnd( refNode.parentNode, FCKDomTools.GetIndexOf( refNode ) + 1 ) ;
-	},
-
-	setEndBefore : function( refNode )
-	{
-		this.setEnd( refNode.parentNode, FCKDomTools.GetIndexOf( refNode ) ) ;
-	},
-
-	collapse : function( toStart )
-	{
-		if ( toStart )
-		{
-			this.endContainer	= this.startContainer ;
-			this.endOffset		= this.startOffset ;
-		}
-		else
-		{
-			this.startContainer	= this.endContainer ;
-			this.startOffset	= this.endOffset ;
-		}
-
-		this.collapsed = true ;
-	},
-
-	selectNodeContents : function( refNode )
-	{
-		this.setStart( refNode, 0 ) ;
-		this.setEnd( refNode, refNode.nodeType == 3 ? refNode.data.length : refNode.childNodes.length ) ;
-	},
-
-	insertNode : function( newNode )
-	{
-		var startContainer = this.startContainer ;
-		var startOffset = this.startOffset ;
-
-		// If we are in a text node.
-		if ( startContainer.nodeType == 3 )
-		{
-			startContainer.splitText( startOffset ) ;
-
-			// Check if it is necessary to update the end boundary.
-			if ( startContainer == this.endContainer )
-				this.setEnd( startContainer.nextSibling, this.endOffset - this.startOffset ) ;
-
-			// Insert the new node it after the text node.
-			FCKDomTools.InsertAfterNode( startContainer, newNode ) ;
-
-			return ;
-		}
-		else
-		{
-			// Simply insert the new node before the current start node.
-			startContainer.insertBefore( newNode, startContainer.childNodes[ startOffset ] || null ) ;
-
-			// Check if it is necessary to update the end boundary.
-			if ( startContainer == this.endContainer )
-			{
-				this.endOffset++ ;
-				this.collapsed = false ;
-			}
-		}
-	},
-
-	deleteContents : function()
-	{
-		if ( this.collapsed )
-			return ;
-
-		this._ExecContentsAction( 0 ) ;
-	},
-
-	extractContents : function()
-	{
-		var docFrag = new FCKDocumentFragment( this._Document ) ;
-
-		if ( !this.collapsed )
-			this._ExecContentsAction( 1, docFrag ) ;
-
-		return docFrag ;
-	},
-
-	// The selection may be lost when cloning (due to the splitText() call).
-	cloneContents : function()
-	{
-		var docFrag = new FCKDocumentFragment( this._Document ) ;
-
-		if ( !this.collapsed )
-			this._ExecContentsAction( 2, docFrag ) ;
-
-		return docFrag ;
-	},
-
-	_ExecContentsAction : function( action, docFrag )
-	{
-		var startNode	= this.startContainer ;
-		var endNode		= this.endContainer ;
-
-		var startOffset	= this.startOffset ;
-		var endOffset	= this.endOffset ;
-
-		var removeStartNode	= false ;
-		var removeEndNode	= false ;
-
-		// Check the start and end nodes and make the necessary removals or changes.
-
-		// Start from the end, otherwise DOM mutations (splitText) made in the
-		// start boundary may interfere on the results here.
-
-		// For text containers, we must simply split the node and point to the
-		// second part. The removal will be handled by the rest of the code .
-		if ( endNode.nodeType == 3 )
-			endNode = endNode.splitText( endOffset ) ;
-		else
-		{
-			// If the end container has children and the offset is pointing
-			// to a child, then we should start from it.
-			if ( endNode.childNodes.length > 0 )
-			{
-				// If the offset points after the last node.
-				if ( endOffset > endNode.childNodes.length - 1 )
-				{
-					// Let's create a temporary node and mark it for removal.
-					endNode = FCKDomTools.InsertAfterNode( endNode.lastChild, this._Document.createTextNode('') ) ;
-					removeEndNode = true ;
-				}
-				else
-					endNode = endNode.childNodes[ endOffset ] ;
-			}
-		}
-
-		// For text containers, we must simply split the node. The removal will
-		// be handled by the rest of the code .
-		if ( startNode.nodeType == 3 )
-		{
-			startNode.splitText( startOffset ) ;
-
-			// In cases the end node is the same as the start node, the above
-			// splitting will also split the end, so me must move the end to
-			// the second part of the split.
-			if ( startNode == endNode )
-				endNode = startNode.nextSibling ;
-		}
-		else
-		{
-			// If the start container has children and the offset is pointing
-			// to a child, then we should start from its previous sibling.
-
-			// If the offset points to the first node, we don't have a
-			// sibling, so let's use the first one, but mark it for removal.
-			if ( startOffset == 0 )
-			{
-				// Let's create a temporary node and mark it for removal.
-				startNode = startNode.insertBefore( this._Document.createTextNode(''), startNode.firstChild ) ;
-				removeStartNode = true ;
-			}
-			else if ( startOffset > startNode.childNodes.length - 1 )
-			{
-				// Let's create a temporary node and mark it for removal.
-				startNode = startNode.appendChild( this._Document.createTextNode('') ) ;
-				removeStartNode = true ;
-			}
-			else
-				startNode = startNode.childNodes[ startOffset ].previousSibling ;
-		}
-
-		// Get the parent nodes tree for the start and end boundaries.
-		var startParents	= FCKDomTools.GetParents( startNode ) ;
-		var endParents		= FCKDomTools.GetParents( endNode ) ;
-
-		// Compare them, to find the top most siblings.
-		var i, topStart, topEnd ;
-
-		for ( i = 0 ; i < startParents.length ; i++ )
-		{
-			topStart	= startParents[i] ;
-			topEnd		= endParents[i] ;
-
-			// The compared nodes will match until we find the top most
-			// siblings (different nodes that have the same parent).
-			// "i" will hold the index in the parents array for the top
-			// most element.
-			if ( topStart != topEnd )
-				break ;
-		}
-
-		var clone, levelStartNode, levelClone, currentNode, currentSibling ;
-
-		if ( docFrag )
-			clone = docFrag.RootNode ;
-
-		// Remove all successive sibling nodes for every node in the
-		// startParents tree.
-		for ( var j = i ; j < startParents.length ; j++ )
-		{
-			levelStartNode = startParents[j] ;
-
-			// For Extract and Clone, we must clone this level.
-			if ( clone && levelStartNode != startNode )		// action = 0 = Delete
-				levelClone = clone.appendChild( levelStartNode.cloneNode( levelStartNode == startNode ) ) ;
-
-			currentNode = levelStartNode.nextSibling ;
-
-			while( currentNode )
-			{
-				// Stop processing when the current node matches a node in the
-				// endParents tree or if it is the endNode.
-				if ( currentNode == endParents[j] || currentNode == endNode )
-					break ;
-
-				// Cache the next sibling.
-				currentSibling = currentNode.nextSibling ;
-
-				// If cloning, just clone it.
-				if ( action == 2 )	// 2 = Clone
-					clone.appendChild( currentNode.cloneNode( true ) ) ;
-				else
-				{
-					// Both Delete and Extract will remove the node.
-					currentNode.parentNode.removeChild( currentNode ) ;
-
-					// When Extracting, move the removed node to the docFrag.
-					if ( action == 1 )	// 1 = Extract
-						clone.appendChild( currentNode ) ;
-				}
-
-				currentNode = currentSibling ;
-			}
-
-			if ( clone )
-				clone = levelClone ;
-		}
-
-		if ( docFrag )
-			clone = docFrag.RootNode ;
-
-		// Remove all previous sibling nodes for every node in the
-		// endParents tree.
-		for ( var k = i ; k < endParents.length ; k++ )
-		{
-			levelStartNode = endParents[k] ;
-
-			// For Extract and Clone, we must clone this level.
-			if ( action > 0 && levelStartNode != endNode )		// action = 0 = Delete
-				levelClone = clone.appendChild( levelStartNode.cloneNode( levelStartNode == endNode ) ) ;
-
-			// The processing of siblings may have already been done by the parent.
-			if ( !startParents[k] || levelStartNode.parentNode != startParents[k].parentNode )
-			{
-				currentNode = levelStartNode.previousSibling ;
-
-				while( currentNode )
-				{
-					// Stop processing when the current node matches a node in the
-					// startParents tree or if it is the startNode.
-					if ( currentNode == startParents[k] || currentNode == startNode )
-						break ;
-
-					// Cache the next sibling.
-					currentSibling = currentNode.previousSibling ;
-
-					// If cloning, just clone it.
-					if ( action == 2 )	// 2 = Clone
-						clone.insertBefore( currentNode.cloneNode( true ), clone.firstChild ) ;
-					else
-					{
-						// Both Delete and Extract will remove the node.
-						currentNode.parentNode.removeChild( currentNode ) ;
-
-						// When Extracting, mode the removed node to the docFrag.
-						if ( action == 1 )	// 1 = Extract
-							clone.insertBefore( currentNode, clone.firstChild ) ;
-					}
-
-					currentNode = currentSibling ;
-				}
-			}
-
-			if ( clone )
-				clone = levelClone ;
-		}
-
-		if ( action == 2 )		// 2 = Clone.
-		{
-			// No changes in the DOM should be done, so fix the split text (if any).
-
-			var startTextNode = this.startContainer ;
-			if ( startTextNode.nodeType == 3 )
-			{
-				startTextNode.data += startTextNode.nextSibling.data ;
-				startTextNode.parentNode.removeChild( startTextNode.nextSibling ) ;
-			}
-
-			var endTextNode = this.endContainer ;
-			if ( endTextNode.nodeType == 3 && endTextNode.nextSibling )
-			{
-				endTextNode.data += endTextNode.nextSibling.data ;
-				endTextNode.parentNode.removeChild( endTextNode.nextSibling ) ;
-			}
-		}
-		else
-		{
-			// Collapse the range.
-
-			// If a node has been partially selected, collapse the range between
-			// topStart and topEnd. Otherwise, simply collapse it to the start. (W3C specs).
-			if ( topStart && topEnd && ( startNode.parentNode != topStart.parentNode || endNode.parentNode != topEnd.parentNode ) )
-			{
-				var endIndex = FCKDomTools.GetIndexOf( topEnd ) ;
-
-				// If the start node is to be removed, we must correct the
-				// index to reflect the removal.
-				if ( removeStartNode && topEnd.parentNode == startNode.parentNode )
-					endIndex-- ;
-
-				this.setStart( topEnd.parentNode, endIndex ) ;
-			}
-
-			// Collapse it to the start.
-			this.collapse( true ) ;
-		}
-
-		// Cleanup any marked node.
-		if( removeStartNode )
-			startNode.parentNode.removeChild( startNode ) ;
-
-		if( removeEndNode && endNode.parentNode )
-			endNode.parentNode.removeChild( endNode ) ;
-	},
-
-	cloneRange : function()
-	{
-		return FCKW3CRange.CreateFromRange( this._Document, this ) ;
-	}
-} ;

+ 0 - 108
main/inc/lib/fckeditor/editor/_source/classes/fckxml.js

@@ -1,108 +0,0 @@
-/*
- * FCKeditor - The text editor for Internet - http://www.fckeditor.net
- * Copyright (C) 2003-2010 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 ==
- *
- * FCKXml Class: class to load and manipulate XML files.
- * (IE specific implementation)
- */
-
-var FCKXml = function()
-{
-	this.Error = false ;
-}
-
-FCKXml.GetAttribute = function( node, attName, defaultValue )
-{
-	var attNode = node.attributes.getNamedItem( attName ) ;
-	return attNode ? attNode.value : defaultValue ;
-}
-
-/**
- * Transforms a XML element node in a JavaScript object. Attributes defined for
- * the element will be available as properties, as long as child  element
- * nodes, but the later will generate arrays with property names prefixed with "$".
- *
- * For example, the following XML element:
- *
- *		<SomeNode name="Test" key="2">
- *			<MyChild id="10">
- *				<OtherLevel name="Level 3" />
- *			</MyChild>
- *			<MyChild id="25" />
- *			<AnotherChild price="499" />
- *		</SomeNode>
- *
- * ... results in the following object:
- *
- *		{
- *			name : "Test",
- *			key : "2",
- *			$MyChild :
- *			[
- *				{
- *					id : "10",
- *					$OtherLevel :
- *					{
- *						name : "Level 3"
- *					}
- *				},
- *				{
- *					id : "25"
- *				}
- *			],
- *			$AnotherChild :
- *			[
- *				{
- *					price : "499"
- *				}
- *			]
- *		}
- */
-FCKXml.TransformToObject = function( element )
-{
-	if ( !element )
-		return null ;
-
-	var obj = {} ;
-
-	var attributes = element.attributes ;
-	for ( var i = 0 ; i < attributes.length ; i++ )
-	{
-		var att = attributes[i] ;
-		obj[ att.name ] = att.value ;
-	}
-
-	var childNodes = element.childNodes ;
-	for ( i = 0 ; i < childNodes.length ; i++ )
-	{
-		var child = childNodes[i] ;
-
-		if ( child.nodeType == 1 )
-		{
-			var childName = '$' + child.nodeName ;
-			var childList = obj[ childName ] ;
-			if ( !childList )
-				childList = obj[ childName ] = [] ;
-
-			childList.push( this.TransformToObject( child ) ) ;
-		}
-	}
-
-	return obj ;
-}

+ 0 - 106
main/inc/lib/fckeditor/editor/_source/classes/fckxml_gecko.js

@@ -1,106 +0,0 @@
-/*
- * FCKeditor - The text editor for Internet - http://www.fckeditor.net
- * Copyright (C) 2003-2010 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 ==
- *
- * FCKXml Class: class to load and manipulate XML files.
- */
-
-FCKXml.prototype =
-{
-	LoadUrl : function( urlToCall )
-	{
-		this.Error = false ;
-
-		var oXml ;
-		var oXmlHttp = FCKTools.CreateXmlObject( 'XmlHttp' ) ;
-		oXmlHttp.open( 'GET', urlToCall, false ) ;
-		oXmlHttp.send( null ) ;
-
-		if ( oXmlHttp.status == 200 || oXmlHttp.status == 304 || ( oXmlHttp.status == 0 && oXmlHttp.readyState == 4 ) )
-		{
-			oXml = oXmlHttp.responseXML ;
-			// #1426: Fallback if responseXML isn't set for some
-			// reason (e.g. improperly configured web server)
-			if ( !oXml )
-				oXml = (new DOMParser()).parseFromString( oXmlHttp.responseText, 'text/xml' ) ;
-		}
-		else
-			oXml = null ;
-
-		if ( oXml )
-		{
-			// Try to access something on it.
-			try
-			{
-				var test = oXml.firstChild ;
-			}
-			catch (e)
-			{
-				// If document.domain has been changed (#123), we'll have a security
-				// error at this point. The workaround here is parsing the responseText:
-				// http://alexander.kirk.at/2006/07/27/firefox-15-xmlhttprequest-reqresponsexml-and-documentdomain/
-				oXml = (new DOMParser()).parseFromString( oXmlHttp.responseText, 'text/xml' ) ;
-			}
-		}
-
-		if ( !oXml || !oXml.firstChild )
-		{
-			this.Error = true ;
-			if ( window.confirm( 'Error loading "' + urlToCall + '" (HTTP Status: ' + oXmlHttp.status + ').\r\nDo you want to see the server response dump?' ) )
-				alert( oXmlHttp.responseText ) ;
-		}
-
-		this.DOMDocument = oXml ;
-	},
-
-	SelectNodes : function( xpath, contextNode )
-	{
-		if ( this.Error )
-			return new Array() ;
-
-		var aNodeArray = new Array();
-
-		var xPathResult = this.DOMDocument.evaluate( xpath, contextNode ? contextNode : this.DOMDocument,
-				this.DOMDocument.createNSResolver(this.DOMDocument.documentElement), XPathResult.ORDERED_NODE_ITERATOR_TYPE, null) ;
-		if ( xPathResult )
-		{
-			var oNode = xPathResult.iterateNext() ;
-			while( oNode )
-			{
-				aNodeArray[aNodeArray.length] = oNode ;
-				oNode = xPathResult.iterateNext();
-			}
-		}
-		return aNodeArray ;
-	},
-
-	SelectSingleNode : function( xpath, contextNode )
-	{
-		if ( this.Error )
-			return null ;
-
-		var xPathResult = this.DOMDocument.evaluate( xpath, contextNode ? contextNode : this.DOMDocument,
-				this.DOMDocument.createNSResolver(this.DOMDocument.documentElement), 9, null);
-
-		if ( xPathResult && xPathResult.singleNodeValue )
-			return xPathResult.singleNodeValue ;
-		else
-			return null ;
-	}
-} ;

+ 0 - 93
main/inc/lib/fckeditor/editor/_source/classes/fckxml_ie.js

@@ -1,93 +0,0 @@
-/*
- * FCKeditor - The text editor for Internet - http://www.fckeditor.net
- * Copyright (C) 2003-2010 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 ==
- *
- * FCKXml Class: class to load and manipulate XML files.
- * (IE specific implementation)
- */
-
-FCKXml.prototype =
-{
-	LoadUrl : function( urlToCall )
-	{
-		this.Error = false ;
-
-		var oXmlHttp = FCKTools.CreateXmlObject( 'XmlHttp' ) ;
-
-		if ( !oXmlHttp )
-		{
-			this.Error = true ;
-			return ;
-		}
-
-		oXmlHttp.open( "GET", urlToCall, false ) ;
-
-		oXmlHttp.send( null ) ;
-
-		if ( oXmlHttp.status == 200 || oXmlHttp.status == 304 || ( oXmlHttp.status == 0 && oXmlHttp.readyState == 4 ) )
-		{
-			this.DOMDocument = oXmlHttp.responseXML ;
-
-			// #1426: Fallback if responseXML isn't set for some
-			// reason (e.g. improperly configured web server)
-			if ( !this.DOMDocument || this.DOMDocument.firstChild == null )
-			{
-				this.DOMDocument = FCKTools.CreateXmlObject( 'DOMDocument' ) ;
-				this.DOMDocument.async = false ;
-				this.DOMDocument.resolveExternals = false ;
-				this.DOMDocument.loadXML( oXmlHttp.responseText ) ;
-			}
-		}
-		else
-		{
-			this.DOMDocument = null ;
-		}
-
-		if ( this.DOMDocument == null || this.DOMDocument.firstChild == null )
-		{
-			this.Error = true ;
-			if (window.confirm( 'Error loading "' + urlToCall + '"\r\nDo you want to see more info?' ) )
-				alert( 'URL requested: "' + urlToCall + '"\r\n' +
-							'Server response:\r\nStatus: ' + oXmlHttp.status + '\r\n' +
-							'Response text:\r\n' + oXmlHttp.responseText ) ;
-		}
-	},
-
-	SelectNodes : function( xpath, contextNode )
-	{
-		if ( this.Error )
-			return new Array() ;
-
-		if ( contextNode )
-			return contextNode.selectNodes( xpath ) ;
-		else
-			return this.DOMDocument.selectNodes( xpath ) ;
-	},
-
-	SelectSingleNode : function( xpath, contextNode )
-	{
-		if ( this.Error )
-			return null ;
-
-		if ( contextNode )
-			return contextNode.selectSingleNode( xpath ) ;
-		else
-			return this.DOMDocument.selectSingleNode( xpath ) ;
-	}
-} ;

+ 0 - 8
main/inc/lib/fckeditor/editor/_source/classes/index.html

@@ -1,8 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
-<head>
-</head>
-<body>
-<br />
-</body>
-</html>

+ 0 - 634
main/inc/lib/fckeditor/editor/_source/commandclasses/fck_othercommands.js

@@ -1,634 +0,0 @@
-/*
- * FCKeditor - The text editor for Internet - http://www.fckeditor.net
- * Copyright (C) 2003-2010 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 ==
- *
- * Definition of other commands that are not available internaly in the
- * browser (see FCKNamedCommand).
- */
-
-// ### General Dialog Box Commands.
-var FCKDialogCommand = function( name, title, url, width, height, getStateFunction, getStateParam, customValue )
-{
-	this.Name	= name ;
-	this.Title	= title ;
-	this.Url	= url ;
-	this.Width	= width ;
-	this.Height	= height ;
-	this.CustomValue = customValue ;
-
-	this.GetStateFunction	= getStateFunction ;
-	this.GetStateParam		= getStateParam ;
-
-	this.Resizable = false ;
-}
-
-FCKDialogCommand.prototype.Execute = function()
-{
-	FCKDialog.OpenDialog( 'FCKDialog_' + this.Name , this.Title, this.Url, this.Width, this.Height, this.CustomValue, this.Resizable ) ;
-}
-
-FCKDialogCommand.prototype.GetState = function()
-{
-	if ( this.GetStateFunction )
-		return this.GetStateFunction( this.GetStateParam ) ;
-	else
-		return FCK.EditMode == FCK_EDITMODE_WYSIWYG ? FCK_TRISTATE_OFF : FCK_TRISTATE_DISABLED ;
-}
-
-// Generic Undefined command (usually used when a command is under development).
-var FCKUndefinedCommand = function()
-{
-	this.Name = 'Undefined' ;
-}
-
-FCKUndefinedCommand.prototype.Execute = function()
-{
-	alert( FCKLang.NotImplemented ) ;
-}
-
-FCKUndefinedCommand.prototype.GetState = function()
-{
-	return FCK_TRISTATE_OFF ;
-}
-
-
-// ### FormatBlock
-var FCKFormatBlockCommand = function()
-{}
-
-FCKFormatBlockCommand.prototype =
-{
-	Name : 'FormatBlock',
-
-	Execute : FCKStyleCommand.prototype.Execute,
-
-	GetState : function()
-	{
-		return FCK.EditorDocument ? FCK_TRISTATE_OFF : FCK_TRISTATE_DISABLED ;
-	}
-};
-
-// ### FontName
-
-var FCKFontNameCommand = function()
-{}
-
-FCKFontNameCommand.prototype =
-{
-	Name		: 'FontName',
-	Execute		: FCKStyleCommand.prototype.Execute,
-	GetState	: FCKFormatBlockCommand.prototype.GetState
-};
-
-// ### FontSize
-var FCKFontSizeCommand = function()
-{}
-
-FCKFontSizeCommand.prototype =
-{
-	Name		: 'FontSize',
-	Execute		: FCKStyleCommand.prototype.Execute,
-	GetState	: FCKFormatBlockCommand.prototype.GetState
-};
-
-// ### Preview
-var FCKPreviewCommand = function()
-{
-	this.Name = 'Preview' ;
-}
-
-FCKPreviewCommand.prototype.Execute = function()
-{
-     FCK.Preview() ;
-}
-
-FCKPreviewCommand.prototype.GetState = function()
-{
-	return FCK_TRISTATE_OFF ;
-}
-
-// ### Save
-var FCKSaveCommand = function()
-{
-	this.Name = 'Save' ;
-}
-
-FCKSaveCommand.prototype.Execute = function()
-{
-	// Get the linked field form.
-	var oForm = FCK.GetParentForm() ;
-
-	if ( typeof( oForm.onsubmit ) == 'function' )
-	{
-		var bRet = oForm.onsubmit() ;
-		if ( bRet != null && bRet === false )
-			return ;
-	}
-
-	// Submit the form.
-	// If there's a button named "submit" then the form.submit() function is masked and
-	// can't be called in Mozilla, so we call the click() method of that button.
-	if ( typeof( oForm.submit ) == 'function' )
-		oForm.submit() ;
-	else
-		oForm.submit.click() ;
-}
-
-FCKSaveCommand.prototype.GetState = function()
-{
-	return FCK_TRISTATE_OFF ;
-}
-
-// ### NewPage
-var FCKNewPageCommand = function()
-{
-	this.Name = 'NewPage' ;
-}
-
-FCKNewPageCommand.prototype.Execute = function()
-{
-	FCKUndo.SaveUndoStep() ;
-	FCK.SetData( '' ) ;
-	FCKUndo.Typing = true ;
-	FCK.Focus() ;
-}
-
-FCKNewPageCommand.prototype.GetState = function()
-{
-	return FCK_TRISTATE_OFF ;
-}
-
-// ### Source button
-var FCKSourceCommand = function()
-{
-	this.Name = 'Source' ;
-}
-
-FCKSourceCommand.prototype.Execute = function()
-{
-	if ( FCKConfig.SourcePopup )	// Until v2.2, it was mandatory for FCKBrowserInfo.IsGecko.
-	{
-		var iWidth	= FCKConfig.ScreenWidth * 0.65 ;
-		var iHeight	= FCKConfig.ScreenHeight * 0.65 ;
-		FCKDialog.OpenDialog( 'FCKDialog_Source', FCKLang.Source, 'dialog/fck_source.html', iWidth, iHeight, null, true ) ;
-	}
-	else
-	    FCK.SwitchEditMode() ;
-}
-
-FCKSourceCommand.prototype.GetState = function()
-{
-	return ( FCK.EditMode == FCK_EDITMODE_WYSIWYG ? FCK_TRISTATE_OFF : FCK_TRISTATE_ON ) ;
-}
-
-// ### Undo
-var FCKUndoCommand = function()
-{
-	this.Name = 'Undo' ;
-}
-
-FCKUndoCommand.prototype.Execute = function()
-{
-	FCKUndo.Undo() ;
-}
-
-FCKUndoCommand.prototype.GetState = function()
-{
-	if ( FCK.EditMode != FCK_EDITMODE_WYSIWYG )
-		return FCK_TRISTATE_DISABLED ;
-	return ( FCKUndo.CheckUndoState() ? FCK_TRISTATE_OFF : FCK_TRISTATE_DISABLED ) ;
-}
-
-// ### Redo
-var FCKRedoCommand = function()
-{
-	this.Name = 'Redo' ;
-}
-
-FCKRedoCommand.prototype.Execute = function()
-{
-	FCKUndo.Redo() ;
-}
-
-FCKRedoCommand.prototype.GetState = function()
-{
-	if ( FCK.EditMode != FCK_EDITMODE_WYSIWYG )
-		return FCK_TRISTATE_DISABLED ;
-	return ( FCKUndo.CheckRedoState() ? FCK_TRISTATE_OFF : FCK_TRISTATE_DISABLED ) ;
-}
-
-// ### Page Break
-var FCKPageBreakCommand = function()
-{
-	this.Name = 'PageBreak' ;
-}
-
-FCKPageBreakCommand.prototype.Execute = function()
-{
-	// Take an undo snapshot before changing the document
-	FCKUndo.SaveUndoStep() ;
-
-//	var e = FCK.EditorDocument.createElement( 'CENTER' ) ;
-//	e.style.pageBreakAfter = 'always' ;
-
-	// Tidy was removing the empty CENTER tags, so the following solution has
-	// been found. It also validates correctly as XHTML 1.0 Strict.
-	var e = FCK.EditorDocument.createElement( 'DIV' ) ;
-	e.style.pageBreakAfter = 'always' ;
-	e.innerHTML = '<span style="DISPLAY:none">&nbsp;</span>' ;
-
-	var oFakeImage = FCKDocumentProcessor_CreateFakeImage( 'FCK__PageBreak', e ) ;
-	var oRange = new FCKDomRange( FCK.EditorWindow ) ;
-	oRange.MoveToSelection() ;
-	var oSplitInfo = oRange.SplitBlock() ;
-	oRange.InsertNode( oFakeImage ) ;
-
-	FCK.Events.FireEvent( 'OnSelectionChange' ) ;
-}
-
-FCKPageBreakCommand.prototype.GetState = function()
-{
-	if ( FCK.EditMode != FCK_EDITMODE_WYSIWYG )
-		return FCK_TRISTATE_DISABLED ;
-	return 0 ; // FCK_TRISTATE_OFF
-}
-
-// FCKUnlinkCommand - by Johnny Egeland (johnny@coretrek.com)
-var FCKUnlinkCommand = function()
-{
-	this.Name = 'Unlink' ;
-}
-
-FCKUnlinkCommand.prototype.Execute = function()
-{
-	// Take an undo snapshot before changing the document
-	FCKUndo.SaveUndoStep() ;
-
-	if ( FCKBrowserInfo.IsGeckoLike )
-	{
-		var oLink = FCK.Selection.MoveToAncestorNode( 'A' ) ;
-		// The unlink command can generate a span in Firefox, so let's do it our way. See #430
-		if ( oLink )
-			FCKTools.RemoveOuterTags( oLink ) ;
-
-		return ;
-	}
-
-	FCK.ExecuteNamedCommand( this.Name ) ;
-}
-
-FCKUnlinkCommand.prototype.GetState = function()
-{
-	if ( FCK.EditMode != FCK_EDITMODE_WYSIWYG )
-		return FCK_TRISTATE_DISABLED ;
-	var state = FCK.GetNamedCommandState( this.Name ) ;
-
-	// Check that it isn't an anchor
-	if ( state == FCK_TRISTATE_OFF && FCK.EditMode == FCK_EDITMODE_WYSIWYG )
-	{
-		var oLink = FCKSelection.MoveToAncestorNode( 'A' ) ;
-		var bIsAnchor = ( oLink && oLink.name.length > 0 && oLink.href.length == 0 ) ;
-		if ( bIsAnchor )
-			state = FCK_TRISTATE_DISABLED ;
-	}
-
-	return state ;
-}
-
-var FCKVisitLinkCommand = function()
-{
-	this.Name = 'VisitLink';
-}
-FCKVisitLinkCommand.prototype =
-{
-	GetState : function()
-	{
-		if ( FCK.EditMode != FCK_EDITMODE_WYSIWYG )
-			return FCK_TRISTATE_DISABLED ;
-		var state = FCK.GetNamedCommandState( 'Unlink' ) ;
-
-		if ( state == FCK_TRISTATE_OFF )
-		{
-			var el = FCKSelection.MoveToAncestorNode( 'A' ) ;
-			if ( !el.href )
-				state = FCK_TRISTATE_DISABLED ;
-		}
-
-		return state ;
-	},
-
-	Execute : function()
-	{
-		var el = FCKSelection.MoveToAncestorNode( 'A' ) ;
-		var url = el.getAttribute( '_fcksavedurl' ) || el.getAttribute( 'href', 2 ) ;
-
-		// Check if it's a full URL.
-		// If not full URL, we'll need to apply the BaseHref setting.
-		if ( ! /:\/\//.test( url ) )
-		{
-			var baseHref = FCKConfig.BaseHref ;
-			var parentWindow = FCK.GetInstanceObject( 'parent' ) ;
-			if ( !baseHref )
-			{
-				baseHref = parentWindow.document.location.href ;
-				baseHref = baseHref.substring( 0, baseHref.lastIndexOf( '/' ) + 1 ) ;
-			}
-
-			if ( /^\//.test( url ) )
-			{
-				try
-				{
-					baseHref = baseHref.match( /^.*:\/\/+[^\/]+/ )[0] ;
-				}
-				catch ( e )
-				{
-					baseHref = parentWindow.document.location.protocol + '://' + parentWindow.parent.document.location.host ;
-				}
-			}
-
-			url = baseHref + url ;
-		}
-
-		if ( !window.open( url, '_blank' ) )
-			alert( FCKLang.VisitLinkBlocked ) ;
-	}
-} ;
-
-// FCKSelectAllCommand
-var FCKSelectAllCommand = function()
-{
-	this.Name = 'SelectAll' ;
-}
-
-FCKSelectAllCommand.prototype.Execute = function()
-{
-	if ( FCK.EditMode == FCK_EDITMODE_WYSIWYG )
-	{
-		FCK.ExecuteNamedCommand( 'SelectAll' ) ;
-	}
-	else
-	{
-		// Select the contents of the textarea
-		var textarea = FCK.EditingArea.Textarea ;
-		if ( FCKBrowserInfo.IsIE )
-		{
-			textarea.createTextRange().execCommand( 'SelectAll' ) ;
-		}
-		else
-		{
-			textarea.selectionStart = 0 ;
-			textarea.selectionEnd = textarea.value.length ;
-		}
-		textarea.focus() ;
-	}
-}
-
-FCKSelectAllCommand.prototype.GetState = function()
-{
-	if ( FCK.EditMode != FCK_EDITMODE_WYSIWYG )
-		return FCK_TRISTATE_DISABLED ;
-	return FCK_TRISTATE_OFF ;
-}
-
-// FCKPasteCommand
-var FCKPasteCommand = function()
-{
-	this.Name = 'Paste' ;
-}
-
-FCKPasteCommand.prototype =
-{
-	Execute : function()
-	{
-		if ( FCKBrowserInfo.IsIE )
-			FCK.Paste() ;
-		else
-			FCK.ExecuteNamedCommand( 'Paste' ) ;
-	},
-
-	GetState : function()
-	{
-		if ( FCK.EditMode != FCK_EDITMODE_WYSIWYG )
-			return FCK_TRISTATE_DISABLED ;
-		return FCK.GetNamedCommandState( 'Paste' ) ;
-	}
-} ;
-
-// FCKRuleCommand
-var FCKRuleCommand = function()
-{
-	this.Name = 'Rule' ;
-}
-
-FCKRuleCommand.prototype =
-{
-	Execute : function()
-	{
-		FCKUndo.SaveUndoStep() ;
-		FCK.InsertElement( 'hr' ) ;
-	},
-
-	GetState : function()
-	{
-		if ( FCK.EditMode != FCK_EDITMODE_WYSIWYG )
-			return FCK_TRISTATE_DISABLED ;
-		return FCK.GetNamedCommandState( 'InsertHorizontalRule' ) ;
-	}
-} ;
-
-// FCKCutCopyCommand
-var FCKCutCopyCommand = function( isCut )
-{
-	this.Name = isCut ? 'Cut' : 'Copy' ;
-}
-
-FCKCutCopyCommand.prototype =
-{
-	Execute : function()
-	{
-		var enabled = false ;
-
-		if ( FCKBrowserInfo.IsIE )
-		{
-			// The following seems to be the only reliable way to detect that
-			// cut/copy is enabled in IE. It will fire the oncut/oncopy event
-			// only if the security settings enabled the command to execute.
-
-			var onEvent = function()
-			{
-				enabled = true ;
-			} ;
-
-			var eventName = 'on' + this.Name.toLowerCase() ;
-
-			FCK.EditorDocument.body.attachEvent( eventName, onEvent ) ;
-			FCK.ExecuteNamedCommand( this.Name ) ;
-			FCK.EditorDocument.body.detachEvent( eventName, onEvent ) ;
-		}
-		else
-		{
-			try
-			{
-				// Other browsers throw an error if the command is disabled.
-				FCK.ExecuteNamedCommand( this.Name ) ;
-				enabled = true ;
-			}
-			catch(e){}
-		}
-
-		if ( !enabled )
-			alert( FCKLang[ 'PasteError' + this.Name ] ) ;
-	},
-
-	GetState : function()
-	{
-		// Strangely, the Cut command happens to have the correct states for
-		// both Copy and Cut in all browsers.
-		return FCK.EditMode != FCK_EDITMODE_WYSIWYG ?
-				FCK_TRISTATE_DISABLED :
-				FCK.GetNamedCommandState( 'Cut' ) ;
-	}
-};
-
-var FCKAnchorDeleteCommand = function()
-{
-	this.Name = 'AnchorDelete' ;
-}
-
-FCKAnchorDeleteCommand.prototype =
-{
-	Execute : function()
-	{
-		if (FCK.Selection.GetType() == 'Control')
-		{
-			FCK.Selection.Delete();
-		}
-		else
-		{
-			var oFakeImage = FCK.Selection.GetSelectedElement() ;
-			if ( oFakeImage )
-			{
-				if ( oFakeImage.tagName == 'IMG' && oFakeImage.getAttribute('_fckanchor') )
-					oAnchor = FCK.GetRealElement( oFakeImage ) ;
-				else
-					oFakeImage = null ;
-			}
-
-			//Search for a real anchor
-			if ( !oFakeImage )
-			{
-				oAnchor = FCK.Selection.MoveToAncestorNode( 'A' ) ;
-				if ( oAnchor )
-					FCK.Selection.SelectNode( oAnchor ) ;
-			}
-
-			// If it's also a link, then just remove the name and exit
-			if ( oAnchor.href.length != 0 )
-			{
-				oAnchor.removeAttribute( 'name' ) ;
-				// Remove temporary class for IE
-				if ( FCKBrowserInfo.IsIE )
-					oAnchor.className = oAnchor.className.replace( FCKRegexLib.FCK_Class, '' ) ;
-				return ;
-			}
-
-			// We need to remove the anchor
-			// If we got a fake image, then just remove it and we're done
-			if ( oFakeImage )
-			{
-				oFakeImage.parentNode.removeChild( oFakeImage ) ;
-				return ;
-			}
-			// Empty anchor, so just remove it
-			if ( oAnchor.innerHTML.length == 0 )
-			{
-				oAnchor.parentNode.removeChild( oAnchor ) ;
-				return ;
-			}
-			// Anchor with content, leave the content
-			FCKTools.RemoveOuterTags( oAnchor ) ;
-		}
-		if ( FCKBrowserInfo.IsGecko )
-			FCK.Selection.Collapse( true ) ;
-	},
-
-	GetState : function()
-	{
-		if ( FCK.EditMode != FCK_EDITMODE_WYSIWYG )
-			return FCK_TRISTATE_DISABLED ;
-		return FCK.GetNamedCommandState( 'Unlink') ;
-	}
-};
-
-var FCKDeleteDivCommand = function()
-{
-}
-FCKDeleteDivCommand.prototype =
-{
-	GetState : function()
-	{
-		if ( FCK.EditMode != FCK_EDITMODE_WYSIWYG )
-			return FCK_TRISTATE_DISABLED ;
-
-		var node = FCKSelection.GetParentElement() ;
-		var path = new FCKElementPath( node ) ;
-		return path.BlockLimit && path.BlockLimit.nodeName.IEquals( 'div' ) ? FCK_TRISTATE_OFF : FCK_TRISTATE_DISABLED ;
-	},
-
-	Execute : function()
-	{
-		// Create an undo snapshot before doing anything.
-		FCKUndo.SaveUndoStep() ;
-
-		// Find out the nodes to delete.
-		var nodes = FCKDomTools.GetSelectedDivContainers() ;
-
-		// Remember the current selection position.
-		var range = new FCKDomRange( FCK.EditorWindow ) ;
-		range.MoveToSelection() ;
-		var bookmark = range.CreateBookmark() ;
-
-		// Delete the container DIV node.
-		for ( var i = 0 ; i < nodes.length ; i++)
-			FCKDomTools.RemoveNode( nodes[i], true ) ;
-
-		// Restore selection.
-		range.MoveToBookmark( bookmark ) ;
-		range.Select() ;
-	}
-} ;
-
-// FCKRuleCommand
-var FCKNbsp = function()
-{
-	this.Name = 'Non Breaking Space' ;
-}
-
-FCKNbsp.prototype =
-{
-	Execute : function()
-	{
-		FCK.InsertHtml( '&nbsp;' ) ;
-	},
-
-	GetState : function()
-	{
-		return ( FCK.EditMode != FCK_EDITMODE_WYSIWYG ? FCK_TRISTATE_DISABLED : FCK_TRISTATE_OFF ) ;
-	}
-} ;

+ 0 - 281
main/inc/lib/fckeditor/editor/_source/commandclasses/fckblockquotecommand.js

@@ -1,281 +0,0 @@
-/*
- * FCKeditor - The text editor for Internet - http://www.fckeditor.net
- * Copyright (C) 2003-2010 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 ==
- *
- * FCKBlockQuoteCommand Class: adds or removes blockquote tags.
- */
-
-var FCKBlockQuoteCommand = function()
-{
-}
-
-FCKBlockQuoteCommand.prototype =
-{
-	Execute : function()
-	{
-		FCKUndo.SaveUndoStep() ;
-
-		var state = this.GetState() ;
-
-		var range = new FCKDomRange( FCK.EditorWindow ) ;
-		range.MoveToSelection() ;
-
-		var bookmark = range.CreateBookmark() ;
-
-		// Kludge for #1592: if the bookmark nodes are in the beginning of
-		// blockquote, then move them to the nearest block element in the
-		// blockquote.
-		if ( FCKBrowserInfo.IsIE )
-		{
-			var bStart	= range.GetBookmarkNode( bookmark, true ) ;
-			var bEnd	= range.GetBookmarkNode( bookmark, false ) ;
-
-			var cursor ;
-
-			if ( bStart
-					&& bStart.parentNode.nodeName.IEquals( 'blockquote' )
-					&& !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( 'blockquote' )
-					&& !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 ;
-
-		if ( state == FCK_TRISTATE_OFF )
-		{
-			var paragraphs = [] ;
-			while ( ( block = iterator.GetNextParagraph() ) )
-				paragraphs.push( block ) ;
-
-			// If no paragraphs, create one from the current selection position.
-			if ( paragraphs.length < 1 )
-			{
-				para = range.Window.document.createElement( FCKConfig.EnterMode.IEquals( 'p' ) ? 'p' : 'div' ) ;
-				range.InsertNode( para ) ;
-				para.appendChild( range.Window.document.createTextNode( '\ufeff' ) ) ;
-				range.MoveToBookmark( bookmark ) ;
-				range.MoveToNodeContents( para ) ;
-				range.Collapse( true ) ;
-				bookmark = range.CreateBookmark() ;
-				paragraphs.push( para ) ;
-			}
-
-			// Make sure all paragraphs have the same parent.
-			var commonParent = paragraphs[0].parentNode ;
-			var tmp = [] ;
-			for ( var i = 0 ; i < paragraphs.length ; i++ )
-			{
-				block = paragraphs[i] ;
-				commonParent = FCKDomTools.GetCommonParents( block.parentNode, commonParent ).pop() ;
-			}
-
-			// The common parent must not be the following tags: table, tbody, tr, ol, ul.
-			while ( commonParent.nodeName.IEquals( 'table', 'tbody', 'tr', 'ol', 'ul' ) )
-				commonParent = commonParent.parentNode ;
-
-			// Reconstruct the block list to be processed such that all resulting blocks
-			// satisfy parentNode == commonParent.
-			var lastBlock = null ;
-			while ( paragraphs.length > 0 )
-			{
-				block = paragraphs.shift() ;
-				while ( block.parentNode != commonParent )
-					block = block.parentNode ;
-				if ( block != lastBlock )
-					tmp.push( block ) ;
-				lastBlock = block ;
-			}
-
-			// If any of the selected blocks is a blockquote, remove it to prevent nested blockquotes.
-			while ( tmp.length > 0 )
-			{
-				block = tmp.shift() ;
-				if ( block.nodeName.IEquals( 'blockquote' ) )
-				{
-					var docFrag = FCKTools.GetElementDocument( block ).createDocumentFragment() ;
-					while ( block.firstChild )
-					{
-						docFrag.appendChild( block.removeChild( block.firstChild ) ) ;
-						paragraphs.push( docFrag.lastChild ) ;
-					}
-					block.parentNode.replaceChild( docFrag, block ) ;
-				}
-				else
-					paragraphs.push( block ) ;
-			}
-
-			// Now we have all the blocks to be included in a new blockquote node.
-			var bqBlock = range.Window.document.createElement( 'blockquote' ) ;
-			commonParent.insertBefore( bqBlock, paragraphs[0] ) ;
-			while ( paragraphs.length > 0 )
-			{
-				block = paragraphs.shift() ;
-				bqBlock.appendChild( block ) ;
-			}
-		}
-		else if ( state == FCK_TRISTATE_ON )
-		{
-			var moveOutNodes = [] ;
-			var elementMarkers = {} ;
-			while ( ( block = iterator.GetNextParagraph() ) )
-			{
-				var bqParent = null ;
-				var bqChild = null ;
-				while ( block.parentNode )
-				{
-					if ( block.parentNode.nodeName.IEquals( 'blockquote' ) )
-					{
-						bqParent = block.parentNode ;
-						bqChild = block ;
-						break ;
-					}
-					block = block.parentNode ;
-				}
-
-				// Remember the blocks that were recorded down in the moveOutNodes array
-				// to prevent duplicates.
-				if ( bqParent && bqChild && !bqChild._fckblockquotemoveout )
-				{
-					moveOutNodes.push( bqChild ) ;
-					FCKDomTools.SetElementMarker( elementMarkers, bqChild, '_fckblockquotemoveout', true ) ;
-				}
-			}
-			FCKDomTools.ClearAllMarkers( elementMarkers ) ;
-
-			var movedNodes = [] ;
-			var processedBlockquoteBlocks = [], elementMarkers = {} ;
-			var noBlockLeft = function( bqBlock )
-			{
-				for ( var i = 0 ; i < bqBlock.childNodes.length ; i++ )
-				{
-					if ( FCKListsLib.BlockElements[ bqBlock.childNodes[i].nodeName.toLowerCase() ] )
-						return false ;
-				}
-				return true ;
-			} ;
-			while ( moveOutNodes.length > 0 )
-			{
-				var node = moveOutNodes.shift() ;
-				var bqBlock = node.parentNode ;
-
-				// If the node is located at the beginning or the end, just take it out without splitting.
-				// Otherwise, split the blockquote node and move the paragraph in between the two blockquote nodes.
-				if ( node == node.parentNode.firstChild )
-					bqBlock.parentNode.insertBefore( bqBlock.removeChild( node ), bqBlock ) ;
-				else if ( node == node.parentNode.lastChild )
-					bqBlock.parentNode.insertBefore( bqBlock.removeChild( node ), bqBlock.nextSibling ) ;
-				else
-					FCKDomTools.BreakParent( node, node.parentNode, range ) ;
-
-				// Remember the blockquote node so we can clear it later (if it becomes empty).
-				if ( !bqBlock._fckbqprocessed )
-				{
-					processedBlockquoteBlocks.push( bqBlock ) ;
-					FCKDomTools.SetElementMarker( elementMarkers, bqBlock, '_fckbqprocessed', true );
-				}
-
-				movedNodes.push( node ) ;
-			}
-
-			// Clear blockquote nodes that have become empty.
-			for ( var i = processedBlockquoteBlocks.length - 1 ; i >= 0 ; i-- )
-			{
-				var bqBlock = processedBlockquoteBlocks[i] ;
-				if ( noBlockLeft( bqBlock ) )
-					FCKDomTools.RemoveNode( bqBlock ) ;
-			}
-			FCKDomTools.ClearAllMarkers( elementMarkers ) ;
-
-			if ( FCKConfig.EnterMode.IEquals( 'br' ) )
-			{
-				while ( movedNodes.length )
-				{
-					var node = movedNodes.shift() ;
-					var firstTime = true ;
-					if ( node.nodeName.IEquals( 'div' ) )
-					{
-						var docFrag = FCKTools.GetElementDocument( node ).createDocumentFragment() ;
-						var needBeginBr = firstTime && node.previousSibling &&
-							!FCKListsLib.BlockBoundaries[node.previousSibling.nodeName.toLowerCase()] ;
-						if ( firstTime && needBeginBr )
-							docFrag.appendChild( FCKTools.GetElementDocument( node ).createElement( 'br' ) ) ;
-						var needEndBr = node.nextSibling &&
-							!FCKListsLib.BlockBoundaries[node.nextSibling.nodeName.toLowerCase()] ;
-						while ( node.firstChild )
-							docFrag.appendChild( node.removeChild( node.firstChild ) ) ;
-						if ( needEndBr )
-							docFrag.appendChild( FCKTools.GetElementDocument( node ).createElement( 'br' ) ) ;
-						node.parentNode.replaceChild( docFrag, node ) ;
-						firstTime = false ;
-					}
-				}
-			}
-		}
-		range.MoveToBookmark( bookmark ) ;
-		range.Select() ;
-
-		FCK.Focus() ;
-		FCK.Events.FireEvent( 'OnSelectionChange' ) ;
-	},
-
-	GetState : function()
-	{
-		// Disabled if not WYSIWYG.
-		if ( FCK.EditMode != FCK_EDITMODE_WYSIWYG || ! FCK.EditorWindow )
-			return FCK_TRISTATE_DISABLED ;
-
-		var path = new FCKElementPath( FCKSelection.GetBoundaryParentElement( true ) ) ;
-		var firstBlock = path.Block || path.BlockLimit ;
-
-		if ( !firstBlock || firstBlock.nodeName.toLowerCase() == 'body' )
-			return FCK_TRISTATE_OFF ;
-
-		// See if the first block has a blockquote parent.
-		for ( var i = 0 ; i < path.Elements.length ; i++ )
-		{
-			if ( path.Elements[i].nodeName.IEquals( 'blockquote' ) )
-				return FCK_TRISTATE_ON ;
-		}
-		return FCK_TRISTATE_OFF ;
-	}
-} ;

+ 0 - 61
main/inc/lib/fckeditor/editor/_source/commandclasses/fckcorestylecommand.js

@@ -1,61 +0,0 @@
-/*
- * FCKeditor - The text editor for Internet - http://www.fckeditor.net
- * Copyright (C) 2003-2010 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 ==
- *
- * FCKCoreStyleCommand Class: controls the execution of a core style. Core
- * styles are usually represented as buttons in the toolbar., like Bold and
- * Italic.
- */
-
- var FCKCoreStyleCommand = function( coreStyleName )
- {
- 	this.Name = 'CoreStyle' ;
- 	this.StyleName = '_FCK_' + coreStyleName ;
- 	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 != FCK_EDITMODE_WYSIWYG )
-			return FCK_TRISTATE_DISABLED ;
-		return this.IsActive ? FCK_TRISTATE_ON : FCK_TRISTATE_OFF ;
-	},
-
-	_OnStyleStateChange : function( styleName, isActive )
-	{
-		this.IsActive = isActive ;
-	}
- };

+ 0 - 213
main/inc/lib/fckeditor/editor/_source/commandclasses/fckfitwindow.js

@@ -1,213 +0,0 @@
-/*
- * FCKeditor - The text editor for Internet - http://www.fckeditor.net
- * Copyright (C) 2003-2010 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 ==
- *
- * Stretch the editor to full window size and back.
- */
-
-var FCKFitWindow = function()
-{
-	this.Name = 'FitWindow' ;
-}
-
-FCKFitWindow.prototype.Execute = function()
-{
-	var eEditorFrame		= window.frameElement ;
-	var eEditorFrameStyle	= eEditorFrame.style ;
-
-	var eMainWindow			= parent ;
-	var eDocEl				= eMainWindow.document.documentElement ;
-	var eBody				= eMainWindow.document.body ;
-	var eBodyStyle			= eBody.style ;
-	var eParent ;
-
-	// Save the current selection and scroll position.
-	var oRange, oEditorScrollPos ;
-	if ( FCK.EditMode == FCK_EDITMODE_WYSIWYG )
-	{
-		oRange = new FCKDomRange( FCK.EditorWindow ) ;
-		oRange.MoveToSelection() ;
-		oEditorScrollPos = FCKTools.GetScrollPosition( FCK.EditorWindow ) ;
-	}
-	else
-	{
-		var eTextarea = FCK.EditingArea.Textarea ;
-		oRange = !FCKBrowserInfo.IsIE && [ eTextarea.selectionStart, eTextarea.selectionEnd ] ;
-		oEditorScrollPos = [ eTextarea.scrollLeft, eTextarea.scrollTop ] ;
-	}
-
-	// No original style properties known? Go fullscreen.
-	if ( !this.IsMaximized )
-	{
-		// Registering an event handler when the window gets resized.
-		if( FCKBrowserInfo.IsIE )
-			eMainWindow.attachEvent( 'onresize', FCKFitWindow_Resize ) ;
-		else
-			eMainWindow.addEventListener( 'resize', FCKFitWindow_Resize, true ) ;
-
-		// Save the scrollbars position.
-		this._ScrollPos = FCKTools.GetScrollPosition( eMainWindow ) ;
-
-		// Save and reset the styles for the entire node tree. They could interfere in the result.
-		eParent = eEditorFrame ;
-		// The extra () is to avoid a warning with strict error checking. This is ok.
-		while( (eParent = eParent.parentNode) )
-		{
-			if ( eParent.nodeType == 1 )
-			{
-				eParent._fckSavedStyles = FCKTools.SaveStyles( eParent ) ;
-				eParent.style.zIndex = FCKConfig.FloatingPanelsZIndex - 1 ;
-			}
-		}
-
-		// Hide IE scrollbars (in strict mode).
-		if ( FCKBrowserInfo.IsIE )
-		{
-			this.documentElementOverflow = eDocEl.style.overflow ;
-			eDocEl.style.overflow	= 'hidden' ;
-			eBodyStyle.overflow		= 'hidden' ;
-		}
-		else
-		{
-			// Hide the scroolbars in Firefox.
-			eBodyStyle.overflow = 'hidden' ;
-			eBodyStyle.width = '0px' ;
-			eBodyStyle.height = '0px' ;
-		}
-
-		// Save the IFRAME styles.
-		this._EditorFrameStyles = FCKTools.SaveStyles( eEditorFrame ) ;
-
-		// Resize.
-		var oViewPaneSize = FCKTools.GetViewPaneSize( eMainWindow ) ;
-
-		eEditorFrameStyle.position	= "absolute";
-		eEditorFrame.offsetLeft ;		// Kludge for Safari 3.1 browser bug, do not remove. See #2066.
-		eEditorFrameStyle.zIndex	= FCKConfig.FloatingPanelsZIndex - 1;
-		eEditorFrameStyle.left		= "0px";
-		eEditorFrameStyle.top		= "0px";
-		eEditorFrameStyle.width		= oViewPaneSize.Width + "px";
-		eEditorFrameStyle.height	= oViewPaneSize.Height + "px";
-
-		// Giving the frame some (huge) borders on his right and bottom
-		// side to hide the background that would otherwise show when the
-		// editor is in fullsize mode and the window is increased in size
-		// not for IE, because IE immediately adapts the editor on resize,
-		// without showing any of the background oddly in firefox, the
-		// editor seems not to fill the whole frame, so just setting the
-		// background of it to white to cover the page laying behind it anyway.
-		if ( !FCKBrowserInfo.IsIE )
-		{
-			eEditorFrameStyle.borderRight = eEditorFrameStyle.borderBottom = "9999px solid white" ;
-			eEditorFrameStyle.backgroundColor		= "white";
-		}
-
-		// Scroll to top left.
-		eMainWindow.scrollTo(0, 0);
-
-		// Is the editor still not on the top left? Let's find out and fix that as well. (Bug #174)
-		var editorPos = FCKTools.GetWindowPosition( eMainWindow, eEditorFrame ) ;
-		if ( editorPos.x != 0 )
-			eEditorFrameStyle.left = ( -1 * editorPos.x ) + "px" ;
-		if ( editorPos.y != 0 )
-			eEditorFrameStyle.top = ( -1 * editorPos.y ) + "px" ;
-
-		this.IsMaximized = true ;
-	}
-	else	// Resize to original size.
-	{
-		// Remove the event handler of window resizing.
-		if( FCKBrowserInfo.IsIE )
-			eMainWindow.detachEvent( "onresize", FCKFitWindow_Resize ) ;
-		else
-			eMainWindow.removeEventListener( "resize", FCKFitWindow_Resize, true ) ;
-
-		// Restore the CSS position for the entire node tree.
-		eParent = eEditorFrame ;
-		// The extra () is to avoid a warning with strict error checking. This is ok.
-		while( (eParent = eParent.parentNode) )
-		{
-			if ( eParent._fckSavedStyles )
-			{
-				FCKTools.RestoreStyles( eParent, eParent._fckSavedStyles ) ;
-				eParent._fckSavedStyles = null ;
-			}
-		}
-
-		// Restore IE scrollbars
-		if ( FCKBrowserInfo.IsIE )
-			eDocEl.style.overflow = this.documentElementOverflow ;
-
-		// Restore original size
-		FCKTools.RestoreStyles( eEditorFrame, this._EditorFrameStyles ) ;
-
-		// Restore the window scroll position.
-		eMainWindow.scrollTo( this._ScrollPos.X, this._ScrollPos.Y ) ;
-
-		this.IsMaximized = false ;
-	}
-
-	FCKToolbarItems.GetItem('FitWindow').RefreshState() ;
-
-	// It seams that Firefox restarts the editing area when making this changes.
-	// On FF 1.0.x, the area is not anymore editable. On FF 1.5+, the special
-	//configuration, like DisableFFTableHandles and DisableObjectResizing get
-	//lost, so we must reset it. Also, the cursor position and selection are
-	//also lost, even if you comment the following line (MakeEditable).
-	// if ( FCKBrowserInfo.IsGecko10 )	// Initially I thought it was a FF 1.0 only problem.
-	if ( FCK.EditMode == FCK_EDITMODE_WYSIWYG )
-		FCK.EditingArea.MakeEditable() ;
-
-	FCK.Focus() ;
-
-	// Restore the selection and scroll position of inside the document.
-	if ( FCK.EditMode == FCK_EDITMODE_WYSIWYG )
-	{
-		oRange.Select() ;
-		FCK.EditorWindow.scrollTo( oEditorScrollPos.X, oEditorScrollPos.Y ) ;
-	}
-	else
-	{
-		if ( !FCKBrowserInfo.IsIE )
-		{
-			eTextarea.selectionStart = oRange[0] ;
-			eTextarea.selectionEnd = oRange[1] ;
-		}
-		eTextarea.scrollLeft = oEditorScrollPos[0] ;
-		eTextarea.scrollTop = oEditorScrollPos[1] ;
-	}
-}
-
-FCKFitWindow.prototype.GetState = function()
-{
-	if ( FCKConfig.ToolbarLocation != 'In' )
-		return FCK_TRISTATE_DISABLED ;
-	else
-		return ( this.IsMaximized ? FCK_TRISTATE_ON : FCK_TRISTATE_OFF );
-}
-
-function FCKFitWindow_Resize()
-{
-	var oViewPaneSize = FCKTools.GetViewPaneSize( parent ) ;
-
-	var eEditorFrameStyle = window.frameElement.style ;
-
-	eEditorFrameStyle.width		= oViewPaneSize.Width + 'px' ;
-	eEditorFrameStyle.height	= oViewPaneSize.Height + 'px' ;
-}

+ 0 - 282
main/inc/lib/fckeditor/editor/_source/commandclasses/fckindentcommands.js

@@ -1,282 +0,0 @@
-/*
- * FCKeditor - The text editor for Internet - http://www.fckeditor.net
- * Copyright (C) 2003-2010 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 ==
- *
- * FCKIndentCommand Class: controls block indentation.
- */
-
-var FCKIndentCommand = function( name, offset )
-{
-	this.Name = name ;
-	this.Offset = offset ;
-	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()
-	{
-		// Save an undo snapshot before doing anything.
-		FCKUndo.SaveUndoStep() ;
-
-		var range = new FCKDomRange( FCK.EditorWindow ) ;
-		range.MoveToSelection() ;
-		var bookmark = range.CreateBookmark() ;
-
-		// Two cases to handle here: either we're in a list, or not.
-		// If we're in a list, then the indent/outdent operations would be done on the list nodes.
-		// Otherwise, apply the operation on the nearest block nodes.
-		var nearestListBlock = FCKDomTools.GetCommonParentNode( range.StartNode || range.StartContainer ,
-				range.EndNode || range.EndContainer,
-				['ul', 'ol'] ) ;
-		if ( nearestListBlock )
-			this._IndentList( range, nearestListBlock ) ;
-		else
-			this._IndentBlock( range ) ;
-
-		range.MoveToBookmark( bookmark ) ;
-		range.Select() ;
-
-		FCK.Focus() ;
-		FCK.Events.FireEvent( 'OnSelectionChange' ) ;
-	},
-
-	GetState : function()
-	{
-		// Disabled if not WYSIWYG.
-		if ( FCK.EditMode != FCK_EDITMODE_WYSIWYG || ! FCK.EditorWindow )
-			return FCK_TRISTATE_DISABLED ;
-
-		// Initialize parameters if not already initialzed.
-		if ( FCKIndentCommand._UseIndentClasses == undefined )
-			FCKIndentCommand._InitIndentModeParameters() ;
-
-		// If we're not in a list, and the starting block's indentation is zero, and the current
-		// command is the outdent command, then we should return FCK_TRISTATE_DISABLED.
-		var startContainer = FCKSelection.GetBoundaryParentElement( true ) ;
-		var endContainer = FCKSelection.GetBoundaryParentElement( false ) ;
-		var listNode = FCKDomTools.GetCommonParentNode( startContainer, endContainer, ['ul','ol'] ) ;
-
-		if ( listNode )
-		{
-			if ( this.Name.IEquals( 'outdent' ) )
-				return FCK_TRISTATE_OFF ;
-			var firstItem = FCKTools.GetElementAscensor( startContainer, 'li' ) ;
-			if ( !firstItem || !firstItem.previousSibling )
-				return FCK_TRISTATE_DISABLED ;
-			return FCK_TRISTATE_OFF ;
-		}
-		if ( ! FCKIndentCommand._UseIndentClasses && this.Name.IEquals( 'indent' ) )
-			return FCK_TRISTATE_OFF;
-
-		var path = new FCKElementPath( startContainer ) ;
-		var firstBlock = path.Block || path.BlockLimit ;
-		if ( !firstBlock )
-			return FCK_TRISTATE_DISABLED ;
-
-		if ( FCKIndentCommand._UseIndentClasses )
-		{
-			var indentClass = firstBlock.className.match( FCKIndentCommand._ClassNameRegex ) ;
-			var indentStep = 0 ;
-			if ( indentClass != null )
-			{
-				indentClass = indentClass[1] ;
-				indentStep = FCKIndentCommand._IndentClassMap[indentClass] ;
-			}
-			if ( ( this.Name == 'outdent' && indentStep == 0 ) ||
-					( this.Name == 'indent' && indentStep == FCKConfig.IndentClasses.length ) )
-				return FCK_TRISTATE_DISABLED ;
-			return FCK_TRISTATE_OFF ;
-		}
-		else
-		{
-			var indent = parseInt( firstBlock.style[this.IndentCSSProperty], 10 ) ;
-			if ( isNaN( indent ) )
-				indent = 0 ;
-			if ( indent <= 0 )
-				return FCK_TRISTATE_DISABLED ;
-			return FCK_TRISTATE_OFF ;
-		}
-	},
-
-	_IndentBlock : function( range )
-	{
-		var iterator = new FCKDomRangeIterator( range ) ;
-		iterator.EnforceRealBlocks = true ;
-
-		range.Expand( 'block_contents' ) ;
-		var commonParents = FCKDomTools.GetCommonParents( range.StartContainer, range.EndContainer ) ;
-		var nearestParent = commonParents[commonParents.length - 1] ;
-		var block ;
-
-		while ( ( block = iterator.GetNextParagraph() ) )
-		{
-			// We don't want to indent subtrees recursively, so only perform the indent operation
-			// if the block itself is the nearestParent, or the block's parent is the nearestParent.
-			if ( ! ( block == nearestParent || block.parentNode == nearestParent ) )
-				continue ;
-
-			if ( FCKIndentCommand._UseIndentClasses )
-			{
-				// Transform current class name to indent step index.
-				var indentClass = block.className.match( FCKIndentCommand._ClassNameRegex ) ;
-				var indentStep = 0 ;
-				if ( indentClass != null )
-				{
-					indentClass = indentClass[1] ;
-					indentStep = FCKIndentCommand._IndentClassMap[indentClass] ;
-				}
-
-				// Operate on indent step index, transform indent step index back to class name.
-				if ( this.Name.IEquals( 'outdent' ) )
-					indentStep-- ;
-				else if ( this.Name.IEquals( 'indent' ) )
-					indentStep++ ;
-				indentStep = Math.min( indentStep, FCKConfig.IndentClasses.length ) ;
-				indentStep = Math.max( indentStep, 0 ) ;
-				var className = block.className.replace( FCKIndentCommand._ClassNameRegex, '' ) ;
-				if ( indentStep < 1 )
-					block.className = className ;
-				else
-					block.className = ( className.length > 0 ? className + ' ' : '' ) +
-						FCKConfig.IndentClasses[indentStep - 1] ;
-			}
-			else
-			{
-				// Offset distance is assumed to be in pixels for now.
-				var currentOffset = parseInt( block.style[this.IndentCSSProperty], 10 ) ;
-				if ( isNaN( currentOffset ) )
-					currentOffset = 0 ;
-				currentOffset += this.Offset ;
-				currentOffset = Math.max( currentOffset, 0 ) ;
-				currentOffset = Math.ceil( currentOffset / this.Offset ) * this.Offset ;
-				block.style[this.IndentCSSProperty] = currentOffset ? currentOffset + FCKConfig.IndentUnit : '' ;
-				if ( block.getAttribute( 'style' ) == '' )
-					block.removeAttribute( 'style' ) ;
-			}
-		}
-	},
-
-	_IndentList : function( range, listNode )
-	{
-		// Our starting and ending points of the range might be inside some blocks under a list item...
-		// So before playing with the iterator, we need to expand the block to include the list items.
-		var startContainer = range.StartContainer ;
-		var endContainer = range.EndContainer ;
-		while ( startContainer && startContainer.parentNode != listNode )
-			startContainer = startContainer.parentNode ;
-		while ( endContainer && endContainer.parentNode != listNode )
-			endContainer = endContainer.parentNode ;
-
-		if ( ! startContainer || ! endContainer )
-			return ;
-
-		// Now we can iterate over the individual items on the same tree depth.
-		var block = startContainer ;
-		var itemsToMove = [] ;
-		var stopFlag = false ;
-		while ( stopFlag == false )
-		{
-			if ( block == endContainer )
-				stopFlag = true ;
-			itemsToMove.push( block ) ;
-			block = block.nextSibling ;
-		}
-		if ( itemsToMove.length < 1 )
-			return ;
-
-		// Do indent or outdent operations on the array model of the list, not the list's DOM tree itself.
-		// The array model demands that it knows as much as possible about the surrounding lists, we need
-		// to feed it the further ancestor node that is still a list.
-		var listParents = FCKDomTools.GetParents( listNode ) ;
-		for ( var i = 0 ; i < listParents.length ; i++ )
-		{
-			if ( listParents[i].nodeName.IEquals( ['ul', 'ol'] ) )
-			{
-				listNode = listParents[i] ;
-				break ;
-			}
-		}
-		var indentOffset = this.Name.IEquals( 'indent' ) ? 1 : -1 ;
-		var startItem = itemsToMove[0] ;
-		var lastItem = itemsToMove[ itemsToMove.length - 1 ] ;
-		var markerObj = {} ;
-
-		// Convert the list DOM tree into a one dimensional array.
-		var listArray = FCKDomTools.ListToArray( listNode, markerObj ) ;
-
-		// Apply indenting or outdenting on the array.
-		var baseIndent = listArray[lastItem._FCK_ListArray_Index].indent ;
-		for ( var i = startItem._FCK_ListArray_Index ; i <= lastItem._FCK_ListArray_Index ; i++ )
-			listArray[i].indent += indentOffset ;
-		for ( var i = lastItem._FCK_ListArray_Index + 1 ; i < listArray.length && listArray[i].indent > baseIndent ; i++ )
-			listArray[i].indent += indentOffset ;
-
-		/* For debug use only
-		var PrintArray = function( listArray, doc )
-		{
-			var s = [] ;
-			for ( var i = 0 ; i < listArray.length ; i++ )
-			{
-				for ( var j in listArray[i] )
-				{
-					if ( j != 'contents' )
-						s.push( j + ":" + listArray[i][j] + "; " ) ;
-					else
-					{
-						var docFrag = doc.createDocumentFragment() ;
-						var tmpNode = doc.createElement( 'span' ) ;
-						for ( var k = 0 ; k < listArray[i][j].length ; k++ )
-							docFrag.appendChild( listArray[i][j][k].cloneNode( true ) ) ;
-						tmpNode.appendChild( docFrag ) ;
-						s.push( j + ":" + tmpNode.innerHTML + "; ") ;
-					}
-				}
-				s.push( '\n' ) ;
-			}
-			alert( s.join('') ) ;
-		}
-		PrintArray( listArray, FCK.EditorDocument ) ;
-		*/
-
-		// Convert the array back to a DOM forest (yes we might have a few subtrees now).
-		// And replace the old list with the new forest.
-		var newList = FCKDomTools.ArrayToList( listArray ) ;
-		if ( newList )
-			listNode.parentNode.replaceChild( newList.listNode, listNode ) ;
-
-		// Clean up the markers.
-		FCKDomTools.ClearAllMarkers( markerObj ) ;
-	}
-} ;

+ 0 - 173
main/inc/lib/fckeditor/editor/_source/commandclasses/fckjustifycommands.js

@@ -1,173 +0,0 @@
-/*
- * FCKeditor - The text editor for Internet - http://www.fckeditor.net
- * Copyright (C) 2003-2010 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 ==
- *
- * FCKJustifyCommand Class: controls block justification.
- */
-
-var FCKJustifyCommand = function( alignValue )
-{
-	this.AlignValue = alignValue ;
-
-	// Detect whether this is the instance for the default alignment.
-	var contentDir = FCKConfig.ContentLangDirection.toLowerCase() ;
-	this.IsDefaultAlign = ( alignValue == 'left' && contentDir == 'ltr' ) ||
-						  ( alignValue == 'right' && contentDir == 'rtl' ) ;
-
-	// Get the class name to be used by this instance.
-	var cssClassName = this._CssClassName = ( function()
-	{
-		var classes = FCKConfig.JustifyClasses ;
-		if ( classes )
-		{
-			switch ( alignValue )
-			{
-				case 'left' :
-					return classes[0] || null ;
-				case 'center' :
-					return classes[1] || null ;
-				case 'right' :
-					return classes[2] || null ;
-				case 'justify' :
-					return classes[3] || null ;
-			}
-		}
-		return null ;
-	} )() ;
-
-	if ( cssClassName && cssClassName.length > 0 )
-		this._CssClassRegex = new RegExp( '(?:^|\\s+)' + cssClassName + '(?=$|\\s)' ) ;
-}
-
-FCKJustifyCommand._GetClassNameRegex = function()
-{
-	var regex = FCKJustifyCommand._ClassRegex ;
-	if ( regex != undefined )
-		return regex ;
-
-	var names = [] ;
-
-	var classes = FCKConfig.JustifyClasses ;
-	if ( classes )
-	{
-		for ( var i = 0 ; i < 4 ; i++ )
-		{
-			var className = classes[i] ;
-			if ( className && className.length > 0 )
-				names.push( className ) ;
-		}
-	}
-
-	if ( names.length > 0 )
-		regex = new RegExp( '(?:^|\\s+)(?:' + names.join( '|' ) + ')(?=$|\\s)' ) ;
-	else
-		regex = null ;
-
-	return FCKJustifyCommand._ClassRegex = regex ;
-}
-
-FCKJustifyCommand.prototype =
-{
-	Execute : function()
-	{
-		// Save an undo snapshot before doing anything.
-		FCKUndo.SaveUndoStep() ;
-
-		var range = new FCKDomRange( FCK.EditorWindow ) ;
-		range.MoveToSelection() ;
-
-		var currentState = this.GetState() ;
-		if ( currentState == FCK_TRISTATE_DISABLED )
-			return ;
-
-		// Store a bookmark of the selection since the paragraph iterator might
-		// change the DOM tree and break selections.
-		var bookmark = range.CreateBookmark() ;
-
-		var cssClassName = this._CssClassName ;
-
-		// Apply alignment setting for each paragraph.
-		var iterator = new FCKDomRangeIterator( range ) ;
-		var block ;
-		while ( ( block = iterator.GetNextParagraph() ) )
-		{
-			block.removeAttribute( 'align' ) ;
-
-			if ( cssClassName )
-			{
-				// Remove the any of the alignment classes from the className.
-				var className = block.className.replace( FCKJustifyCommand._GetClassNameRegex(), '' ) ;
-
-				// Append the desired class name.
-				if ( currentState == FCK_TRISTATE_OFF )
-				{
-					if ( className.length > 0 )
-						className += ' ' ;
-					block.className = className + cssClassName ;
-				}
-				else if ( className.length == 0 )
-					FCKDomTools.RemoveAttribute( block, 'class' ) ;
-			}
-			else
-			{
-				var style = block.style ;
-				if ( currentState == FCK_TRISTATE_OFF )
-					style.textAlign = this.AlignValue ;
-				else
-				{
-					style.textAlign = '' ;
-					if ( style.cssText.length == 0 )
-						block.removeAttribute( 'style' ) ;
-				}
-			}
-		}
-
-		// Restore previous selection.
-		range.MoveToBookmark( bookmark ) ;
-		range.Select() ;
-
-		FCK.Focus() ;
-		FCK.Events.FireEvent( 'OnSelectionChange' ) ;
-	},
-
-	GetState : function()
-	{
-		// Disabled if not WYSIWYG.
-		if ( FCK.EditMode != FCK_EDITMODE_WYSIWYG || ! FCK.EditorWindow )
-			return FCK_TRISTATE_DISABLED ;
-
-		// Retrieve the first selected block.
-		var path = new FCKElementPath( FCKSelection.GetBoundaryParentElement( true ) ) ;
-		var firstBlock = path.Block || path.BlockLimit ;
-
-		if ( !firstBlock || firstBlock.nodeName.toLowerCase() == 'body' )
-			return FCK_TRISTATE_OFF ;
-
-		// Check if the desired style is already applied to the block.
-		var currentAlign ;
-		if ( FCKBrowserInfo.IsIE )
-			currentAlign = firstBlock.currentStyle.textAlign ;
-		else
-			currentAlign = FCK.EditorWindow.getComputedStyle( firstBlock, '' ).getPropertyValue( 'text-align' );
-		currentAlign = currentAlign.replace( /(-moz-|-webkit-|start|auto)/i, '' );
-		if ( ( !currentAlign && this.IsDefaultAlign ) || currentAlign == this.AlignValue )
-			return FCK_TRISTATE_ON ;
-		return FCK_TRISTATE_OFF ;
-	}
-} ;

+ 0 - 382
main/inc/lib/fckeditor/editor/_source/commandclasses/fcklistcommands.js

@@ -1,382 +0,0 @@
-/*
- * FCKeditor - The text editor for Internet - http://www.fckeditor.net
- * Copyright (C) 2003-2010 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 ==
- *
- * Implementation for the "Insert/Remove Ordered/Unordered List" commands.
- */
-
-var FCKListCommand = function( name, tagName )
-{
-	this.Name = name ;
-	this.TagName = tagName ;
-}
-
-FCKListCommand.prototype =
-{
-	GetState : function()
-	{
-		// Disabled if not WYSIWYG.
-		if ( FCK.EditMode != FCK_EDITMODE_WYSIWYG || ! FCK.EditorWindow )
-			return FCK_TRISTATE_DISABLED ;
-
-		// We'll use the style system's convention to determine list state here...
-		// If the starting block is a descendant of an <ol> or <ul> node, then we're in a list.
-		var startContainer = FCKSelection.GetBoundaryParentElement( true ) ;
-		var listNode = startContainer ;
-		while ( listNode )
-		{
-			if ( listNode.nodeName.IEquals( [ 'ul', 'ol' ] ) )
-				break ;
-			listNode = listNode.parentNode ;
-		}
-		if ( listNode && listNode.nodeName.IEquals( this.TagName ) )
-			return FCK_TRISTATE_ON ;
-		else
-			return FCK_TRISTATE_OFF ;
-	},
-
-	Execute : function()
-	{
-		FCKUndo.SaveUndoStep() ;
-
-		var doc = FCK.EditorDocument ;
-		var range = new FCKDomRange( FCK.EditorWindow ) ;
-		range.MoveToSelection() ;
-		var state = this.GetState() ;
-
-		// Midas lists rule #1 says we can create a list even in an empty document.
-		// But FCKDomRangeIterator wouldn't run if the document is really empty.
-		// So create a paragraph if the document is empty and we're going to create a list.
-		if ( state == FCK_TRISTATE_OFF )
-		{
-			FCKDomTools.TrimNode( doc.body ) ;
-			if ( ! doc.body.firstChild )
-			{
-				var paragraph = doc.createElement( 'p' ) ;
-				doc.body.appendChild( paragraph ) ;
-				range.MoveToNodeContents( paragraph ) ;
-			}
-		}
-
-		var bookmark = range.CreateBookmark() ;
-
-		// Group the blocks up because there are many cases where multiple lists have to be created,
-		// or multiple lists have to be cancelled.
-		var listGroups = [] ;
-		var markerObj = {} ;
-		var iterator = new FCKDomRangeIterator( range ) ;
-		var block ;
-
-		iterator.ForceBrBreak = ( state == FCK_TRISTATE_OFF ) ;
-		var nextRangeExists = true ;
-		var rangeQueue = null ;
-		while ( nextRangeExists )
-		{
-			while ( ( block = iterator.GetNextParagraph() ) )
-			{
-				var path = new FCKElementPath( block ) ;
-				var listNode = null ;
-				var processedFlag = false ;
-				var blockLimit = path.BlockLimit ;
-
-				// First, try to group by a list ancestor.
-				for ( var i = path.Elements.length - 1 ; i >= 0 ; i-- )
-				{
-					var el = path.Elements[i] ;
-					if ( el.nodeName.IEquals( ['ol', 'ul'] ) )
-					{
-						// If we've encountered a list inside a block limit
-						// The last group object of the block limit element should
-						// no longer be valid. Since paragraphs after the list
-						// should belong to a different group of paragraphs before
-						// the list. (Bug #1309)
-						if ( blockLimit._FCK_ListGroupObject )
-							blockLimit._FCK_ListGroupObject = null ;
-
-						var groupObj = el._FCK_ListGroupObject ;
-						if ( groupObj )
-							groupObj.contents.push( block ) ;
-						else
-						{
-							groupObj = { 'root' : el, 'contents' : [ block ] } ;
-							listGroups.push( groupObj ) ;
-							FCKDomTools.SetElementMarker( markerObj, el, '_FCK_ListGroupObject', groupObj ) ;
-						}
-						processedFlag = true ;
-						break ;
-					}
-				}
-
-				if ( processedFlag )
-					continue ;
-
-				// No list ancestor? Group by block limit.
-				var root = blockLimit ;
-				if ( root._FCK_ListGroupObject )
-					root._FCK_ListGroupObject.contents.push( block ) ;
-				else
-				{
-					var groupObj = { 'root' : root, 'contents' : [ block ] } ;
-					FCKDomTools.SetElementMarker( markerObj, root, '_FCK_ListGroupObject', groupObj ) ;
-					listGroups.push( groupObj ) ;
-				}
-			}
-
-			if ( FCKBrowserInfo.IsIE )
-				nextRangeExists = false ;
-			else
-			{
-				if ( rangeQueue == null )
-				{
-					rangeQueue = [] ;
-					var selectionObject = FCKSelection.GetSelection() ;
-					if ( selectionObject && listGroups.length == 0 )
-						rangeQueue.push( selectionObject.getRangeAt( 0 ) ) ;
-					for ( var i = 1 ; selectionObject && i < selectionObject.rangeCount ; i++ )
-						rangeQueue.push( selectionObject.getRangeAt( i ) ) ;
-				}
-				if ( rangeQueue.length < 1 )
-					nextRangeExists = false ;
-				else
-				{
-					var internalRange = FCKW3CRange.CreateFromRange( doc, rangeQueue.shift() ) ;
-					range._Range = internalRange ;
-					range._UpdateElementInfo() ;
-					if ( range.StartNode.nodeName.IEquals( 'td' ) )
-						range.SetStart( range.StartNode, 1 ) ;
-					if ( range.EndNode.nodeName.IEquals( 'td' ) )
-						range.SetEnd( range.EndNode, 2 ) ;
-					iterator = new FCKDomRangeIterator( range ) ;
-					iterator.ForceBrBreak = ( state == FCK_TRISTATE_OFF ) ;
-				}
-			}
-		}
-
-		// Now we have two kinds of list groups, groups rooted at a list, and groups rooted at a block limit element.
-		// We either have to build lists or remove lists, for removing a list does not makes sense when we are looking
-		// at the group that's not rooted at lists. So we have three cases to handle.
-		var listsCreated = [] ;
-		while ( listGroups.length > 0 )
-		{
-			var groupObj = listGroups.shift() ;
-			if ( state == FCK_TRISTATE_OFF )
-			{
-				if ( groupObj.root.nodeName.IEquals( ['ul', 'ol'] ) )
-					this._ChangeListType( groupObj, markerObj, listsCreated ) ;
-				else
-					this._CreateList( groupObj, listsCreated ) ;
-			}
-			else if ( state == FCK_TRISTATE_ON && groupObj.root.nodeName.IEquals( ['ul', 'ol'] ) )
-				this._RemoveList( groupObj, markerObj ) ;
-		}
-
-		// For all new lists created, merge adjacent, same type lists.
-		for ( var i = 0 ; i < listsCreated.length ; i++ )
-		{
-			var listNode = listsCreated[i] ;
-			var stopFlag = false ;
-			var currentNode = listNode ;
-			while ( ! stopFlag )
-			{
-				currentNode = currentNode.nextSibling ;
-				if ( currentNode && currentNode.nodeType == 3 && currentNode.nodeValue.search( /^[\n\r\t ]*$/ ) == 0 )
-					continue ;
-				stopFlag = true ;
-			}
-
-			if ( currentNode && currentNode.nodeName.IEquals( this.TagName ) )
-			{
-				currentNode.parentNode.removeChild( currentNode ) ;
-				while ( currentNode.firstChild )
-					listNode.appendChild( currentNode.removeChild( currentNode.firstChild ) ) ;
-			}
-
-			stopFlag = false ;
-			currentNode = listNode ;
-			while ( ! stopFlag )
-			{
-				currentNode = currentNode.previousSibling ;
-				if ( currentNode && currentNode.nodeType == 3 && currentNode.nodeValue.search( /^[\n\r\t ]*$/ ) == 0 )
-					continue ;
-				stopFlag = true ;
-			}
-			if ( currentNode && currentNode.nodeName.IEquals( this.TagName ) )
-			{
-				currentNode.parentNode.removeChild( currentNode ) ;
-				while ( currentNode.lastChild )
-					listNode.insertBefore( currentNode.removeChild( currentNode.lastChild ),
-						       listNode.firstChild ) ;
-			}
-		}
-
-		// Clean up, restore selection and update toolbar button states.
-		FCKDomTools.ClearAllMarkers( markerObj ) ;
-		range.MoveToBookmark( bookmark ) ;
-		range.Select() ;
-
-		FCK.Focus() ;
-		FCK.Events.FireEvent( 'OnSelectionChange' ) ;
-	},
-
-	_ChangeListType : function( groupObj, markerObj, listsCreated )
-	{
-		// This case is easy...
-		// 1. Convert the whole list into a one-dimensional array.
-		// 2. Change the list type by modifying the array.
-		// 3. Recreate the whole list by converting the array to a list.
-		// 4. Replace the original list with the recreated list.
-		var listArray = FCKDomTools.ListToArray( groupObj.root, markerObj ) ;
-		var selectedListItems = [] ;
-		for ( var i = 0 ; i < groupObj.contents.length ; i++ )
-		{
-			var itemNode = groupObj.contents[i] ;
-			itemNode = FCKTools.GetElementAscensor( itemNode, 'li' ) ;
-			if ( ! itemNode || itemNode._FCK_ListItem_Processed )
-				continue ;
-			selectedListItems.push( itemNode ) ;
-			FCKDomTools.SetElementMarker( markerObj, itemNode, '_FCK_ListItem_Processed', true ) ;
-		}
-		var fakeParent = FCKTools.GetElementDocument( groupObj.root ).createElement( this.TagName ) ;
-		for ( var i = 0 ; i < selectedListItems.length ; i++ )
-		{
-			var listIndex = selectedListItems[i]._FCK_ListArray_Index ;
-			listArray[listIndex].parent = fakeParent ;
-		}
-		var newList = FCKDomTools.ArrayToList( listArray, markerObj ) ;
-		for ( var i = 0 ; i < newList.listNode.childNodes.length ; i++ )
-		{
-			if ( newList.listNode.childNodes[i].nodeName.IEquals( this.TagName ) )
-				listsCreated.push( newList.listNode.childNodes[i] ) ;
-		}
-		groupObj.root.parentNode.replaceChild( newList.listNode, groupObj.root ) ;
-	},
-
-	_CreateList : function( groupObj, listsCreated )
-	{
-		var contents = groupObj.contents ;
-		var doc = FCKTools.GetElementDocument( groupObj.root ) ;
-		var listContents = [] ;
-
-		// It is possible to have the contents returned by DomRangeIterator to be the same as the root.
-		// e.g. when we're running into table cells.
-		// In such a case, enclose the childNodes of contents[0] into a <div>.
-		if ( contents.length == 1 && contents[0] == groupObj.root )
-		{
-			var divBlock = doc.createElement( 'div' );
-			while ( contents[0].firstChild )
-				divBlock.appendChild( contents[0].removeChild( contents[0].firstChild ) ) ;
-			contents[0].appendChild( divBlock ) ;
-			contents[0] = divBlock ;
-		}
-
-		// Calculate the common parent node of all content blocks.
-		var commonParent = groupObj.contents[0].parentNode ;
-		for ( var i = 0 ; i < contents.length ; i++ )
-			commonParent = FCKDomTools.GetCommonParents( commonParent, contents[i].parentNode ).pop() ;
-
-		// We want to insert things that are in the same tree level only, so calculate the contents again
-		// by expanding the selected blocks to the same tree level.
-		for ( var i = 0 ; i < contents.length ; i++ )
-		{
-			var contentNode = contents[i] ;
-			while ( contentNode.parentNode )
-			{
-				if ( contentNode.parentNode == commonParent )
-				{
-					listContents.push( contentNode ) ;
-					break ;
-				}
-				contentNode = contentNode.parentNode ;
-			}
-		}
-
-		if ( listContents.length < 1 )
-			return ;
-
-		// Insert the list to the DOM tree.
-		var insertAnchor = listContents[listContents.length - 1].nextSibling ;
-		var listNode = doc.createElement( this.TagName ) ;
-		listsCreated.push( listNode ) ;
-		while ( listContents.length )
-		{
-			var contentBlock = listContents.shift() ;
-			var docFrag = doc.createDocumentFragment() ;
-			while ( contentBlock.firstChild )
-				docFrag.appendChild( contentBlock.removeChild( contentBlock.firstChild ) ) ;
-			contentBlock.parentNode.removeChild( contentBlock ) ;
-			var listItem = doc.createElement( 'li' ) ;
-			listItem.appendChild( docFrag ) ;
-			listNode.appendChild( listItem ) ;
-		}
-		commonParent.insertBefore( listNode, insertAnchor ) ;
-	},
-
-	_RemoveList : function( groupObj, markerObj )
-	{
-		// This is very much like the change list type operation.
-		// Except that we're changing the selected items' indent to -1 in the list array.
-		var listArray = FCKDomTools.ListToArray( groupObj.root, markerObj ) ;
-		var selectedListItems = [] ;
-		for ( var i = 0 ; i < groupObj.contents.length ; i++ )
-		{
-			var itemNode = groupObj.contents[i] ;
-			itemNode = FCKTools.GetElementAscensor( itemNode, 'li' ) ;
-			if ( ! itemNode || itemNode._FCK_ListItem_Processed )
-				continue ;
-			selectedListItems.push( itemNode ) ;
-			FCKDomTools.SetElementMarker( markerObj, itemNode, '_FCK_ListItem_Processed', true ) ;
-		}
-
-		var lastListIndex = null ;
-		for ( var i = 0 ; i < selectedListItems.length ; i++ )
-		{
-			var listIndex = selectedListItems[i]._FCK_ListArray_Index ;
-			listArray[listIndex].indent = -1 ;
-			lastListIndex = listIndex ;
-		}
-
-		// After cutting parts of the list out with indent=-1, we still have to maintain the array list
-		// model's nextItem.indent <= currentItem.indent + 1 invariant. Otherwise the array model of the
-		// list cannot be converted back to a real DOM list.
-		for ( var i = lastListIndex + 1; i < listArray.length ; i++ )
-		{
-			if ( listArray[i].indent > listArray[i-1].indent + 1 )
-			{
-				var indentOffset = listArray[i-1].indent + 1 - listArray[i].indent ;
-				var oldIndent = listArray[i].indent ;
-				while ( listArray[i] && listArray[i].indent >= oldIndent)
-				{
-					listArray[i].indent += indentOffset ;
-					i++ ;
-				}
-				i-- ;
-			}
-		}
-
-		var newList = FCKDomTools.ArrayToList( listArray, markerObj ) ;
-		// If groupObj.root is the last element in its parent, or its nextSibling is a <br>, then we should
-		// not add a <br> after the final item. So, check for the cases and trim the <br>.
-		if ( groupObj.root.nextSibling == null || groupObj.root.nextSibling.nodeName.IEquals( 'br' ) )
-		{
-			if ( newList.listNode.lastChild.nodeName.IEquals( 'br' ) )
-				newList.listNode.removeChild( newList.listNode.lastChild ) ;
-		}
-		groupObj.root.parentNode.replaceChild( newList.listNode, groupObj.root ) ;
-	}
-};

+ 0 - 39
main/inc/lib/fckeditor/editor/_source/commandclasses/fcknamedcommand.js

@@ -1,39 +0,0 @@
-/*
- * FCKeditor - The text editor for Internet - http://www.fckeditor.net
- * Copyright (C) 2003-2010 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 ==
- *
- * FCKNamedCommand Class: represents an internal browser command.
- */
-
-var FCKNamedCommand = function( commandName )
-{
-	this.Name = commandName ;
-}
-
-FCKNamedCommand.prototype.Execute = function()
-{
-	FCK.ExecuteNamedCommand( this.Name ) ;
-}
-
-FCKNamedCommand.prototype.GetState = function()
-{
-	if ( FCK.EditMode != FCK_EDITMODE_WYSIWYG )
-		return FCK_TRISTATE_DISABLED ;
-	return FCK.GetNamedCommandState( this.Name ) ;
-}

+ 0 - 40
main/inc/lib/fckeditor/editor/_source/commandclasses/fckpasteplaintextcommand.js

@@ -1,40 +0,0 @@
-/*
- * FCKeditor - The text editor for Internet - http://www.fckeditor.net
- * Copyright (C) 2003-2010 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 ==
- *
- * FCKPastePlainTextCommand Class: represents the
- * "Paste as Plain Text" command.
- */
-
-var FCKPastePlainTextCommand = function()
-{
-	this.Name = 'PasteText' ;
-}
-
-FCKPastePlainTextCommand.prototype.Execute = function()
-{
-	FCK.PasteAsPlainText() ;
-}
-
-FCKPastePlainTextCommand.prototype.GetState = function()
-{
-	if ( FCK.EditMode != FCK_EDITMODE_WYSIWYG )
-		return FCK_TRISTATE_DISABLED ;
-	return FCK.GetNamedCommandState( 'Paste' ) ;
-}

+ 0 - 40
main/inc/lib/fckeditor/editor/_source/commandclasses/fckpastewordcommand.js

@@ -1,40 +0,0 @@
-/*
- * FCKeditor - The text editor for Internet - http://www.fckeditor.net
- * Copyright (C) 2003-2010 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 ==
- *
- * FCKPasteWordCommand Class: represents the "Paste from Word" command.
- */
-
-var FCKPasteWordCommand = function()
-{
-	this.Name = 'PasteWord' ;
-}
-
-FCKPasteWordCommand.prototype.Execute = function()
-{
-	FCK.PasteFromWord() ;
-}
-
-FCKPasteWordCommand.prototype.GetState = function()
-{
-	if ( FCK.EditMode != FCK_EDITMODE_WYSIWYG || FCKConfig.ForcePasteAsPlainText )
-		return FCK_TRISTATE_DISABLED ;
-	else
-		return FCK.GetNamedCommandState( 'Paste' ) ;
-}

+ 0 - 45
main/inc/lib/fckeditor/editor/_source/commandclasses/fckremoveformatcommand.js

@@ -1,45 +0,0 @@
-/*
- * FCKeditor - The text editor for Internet - http://www.fckeditor.net
- * Copyright (C) 2003-2010 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 ==
- *
- * FCKRemoveFormatCommand Class: controls the execution of a core style. Core
- * styles are usually represented as buttons in the toolbar., like Bold and
- * Italic.
- */
-
- var FCKRemoveFormatCommand = function()
- {
- 	this.Name = 'RemoveFormat' ;
- }
-
- FCKRemoveFormatCommand.prototype =
- {
-	Execute : function()
-	{
-		FCKStyles.RemoveAll() ;
-
-		FCK.Focus() ;
-		FCK.Events.FireEvent( 'OnSelectionChange' ) ;
-	},
-
-	GetState : function()
-	{
-		return FCK.EditorWindow ? FCK_TRISTATE_OFF : FCK_TRISTATE_DISABLED ;
-	}
- };

+ 0 - 94
main/inc/lib/fckeditor/editor/_source/commandclasses/fckshowblocks.js

@@ -1,94 +0,0 @@
-/*
- * FCKeditor - The text editor for Internet - http://www.fckeditor.net
- * Copyright (C) 2003-2010 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 ==
- *
- * FCKShowBlockCommand Class: the "Show Blocks" command.
- */
-
-var FCKShowBlockCommand = function( name, defaultState )
-{
-	this.Name = name ;
-	if ( defaultState != undefined )
-		this._SavedState = defaultState ;
-	else
-		this._SavedState = null ;
-}
-
-FCKShowBlockCommand.prototype.Execute = function()
-{
-	var state = this.GetState() ;
-
-	if ( state == FCK_TRISTATE_DISABLED )
-		return ;
-
-	var body = FCK.EditorDocument.body ;
-
-	if ( state == FCK_TRISTATE_ON )
-		body.className = body.className.replace( /(^| )FCK__ShowBlocks/g, '' ) ;
-	else
-		body.className += ' FCK__ShowBlocks' ;
-
-	if ( FCKBrowserInfo.IsIE )
-	{
-		try
-		{
-			FCK.EditorDocument.selection.createRange().select() ;
-		}
-		catch ( e )
-		{}
-	}
-	else
-	{
-		var focus = FCK.EditorWindow.getSelection().focusNode ;
-		if ( focus )
-		{
-			if ( focus.nodeType != 1 )
-				focus = focus.parentNode ;
-			FCKDomTools.ScrollIntoView( focus, false ) ;
-		}
-	}
-
-	FCK.Events.FireEvent( 'OnSelectionChange' ) ;
-}
-
-FCKShowBlockCommand.prototype.GetState = function()
-{
-	if ( FCK.EditMode != FCK_EDITMODE_WYSIWYG )
-		return FCK_TRISTATE_DISABLED ;
-
-	// On some cases FCK.EditorDocument.body is not yet available
-	if ( !FCK.EditorDocument )
-		return FCK_TRISTATE_OFF ;
-
-	if ( /FCK__ShowBlocks(?:\s|$)/.test( FCK.EditorDocument.body.className ) )
-		return FCK_TRISTATE_ON ;
-
-	return FCK_TRISTATE_OFF ;
-}
-
-FCKShowBlockCommand.prototype.SaveState = function()
-{
-	this._SavedState = this.GetState() ;
-}
-
-FCKShowBlockCommand.prototype.RestoreState = function()
-{
-	if ( this._SavedState != null && this.GetState() != this._SavedState )
-		this.Execute() ;
-}

+ 0 - 49
main/inc/lib/fckeditor/editor/_source/commandclasses/fckspellcheckcommand_gecko.js

@@ -1,49 +0,0 @@
-/*
- * FCKeditor - The text editor for Internet - http://www.fckeditor.net
- * Copyright (C) 2003-2010 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 ==
- *
- * FCKStyleCommand Class: represents the "Spell Check" command.
- * (Gecko specific implementation)
- */
-
-var FCKSpellCheckCommand = function()
-{
-	this.Name = 'SpellCheck' ;
-	this.IsEnabled = ( FCKConfig.SpellChecker != 'ieSpell' ) ;
-}
-
-FCKSpellCheckCommand.prototype.Execute = function()
-{
-	switch ( FCKConfig.SpellChecker )
-	{
-		case 'SpellerPages' :
-			FCKDialog.OpenDialog( 'FCKDialog_SpellCheck', 'Spell Check', 'dialog/fck_spellerpages.html', 440, 480 ) ;
-			break;
-
-		case 'WSC' :
-			FCKDialog.OpenDialog( 'FCKDialog_SpellCheck', 'Spell Check', 'wsc/w.html', 530, 480 ) ;
-	}
-}
-
-FCKSpellCheckCommand.prototype.GetState = function()
-{
-	if ( FCK.EditMode != FCK_EDITMODE_WYSIWYG )
-		return FCK_TRISTATE_DISABLED ;
-	return this.IsEnabled ? FCK_TRISTATE_OFF : FCK_TRISTATE_DISABLED ;
-}

+ 0 - 72
main/inc/lib/fckeditor/editor/_source/commandclasses/fckspellcheckcommand_ie.js

@@ -1,72 +0,0 @@
-/*
- * FCKeditor - The text editor for Internet - http://www.fckeditor.net
- * Copyright (C) 2003-2010 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 ==
- *
- * FCKStyleCommand Class: represents the "Spell Check" command.
- * (IE specific implementation)
- */
-
-var FCKSpellCheckCommand = function()
-{
-	this.Name = 'SpellCheck' ;
-	this.IsEnabled = true ;
-}
-
-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 ;
-
-		case 'WSC' :
-			FCKDialog.OpenDialog( 'FCKDialog_SpellCheck', 'Spell Check', 'wsc/w.html', 530, 480 ) ;
-	}
-}
-
-FCKSpellCheckCommand.prototype._RunIeSpell = function()
-{
-	try
-	{
-		var oIeSpell = new ActiveXObject( "ieSpell.ieSpellExtension" ) ;
-		oIeSpell.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 != FCK_EDITMODE_WYSIWYG )
-		return FCK_TRISTATE_DISABLED ;
-	return this.IsEnabled ? FCK_TRISTATE_OFF : FCK_TRISTATE_DISABLED ;
-}

+ 0 - 60
main/inc/lib/fckeditor/editor/_source/commandclasses/fckstylecommand.js

@@ -1,60 +0,0 @@
-/*
- * FCKeditor - The text editor for Internet - http://www.fckeditor.net
- * Copyright (C) 2003-2010 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 ==
- *
- * FCKStyleCommand Class: represents the "Style" command.
- */
-
-var FCKStyleCommand = function()
-{}
-
-FCKStyleCommand.prototype =
-{
-	Name : 'Style',
-
-	Execute : function( styleName, styleComboItem )
-	{
-		FCKUndo.SaveUndoStep() ;
-
-		if ( styleComboItem.Selected )
-			FCK.Styles.RemoveStyle( styleComboItem.Style ) ;
-		else
-			FCK.Styles.ApplyStyle( styleComboItem.Style ) ;
-
-		FCKUndo.SaveUndoStep() ;
-
-		FCK.Focus() ;
-		FCK.Events.FireEvent( 'OnSelectionChange' ) ;
-	},
-
-	GetState : function()
-	{
-		if ( FCK.EditMode != FCK_EDITMODE_WYSIWYG || !FCK.EditorDocument )
-			return FCK_TRISTATE_DISABLED ;
-
-		if ( FCKSelection.GetType() == 'Control' )
-		{
-			var el = FCKSelection.GetSelectedElement() ;
-			if ( !el || !FCKStyles.CheckHasObjectStyle( el.nodeName.toLowerCase() ) )
-				return FCK_TRISTATE_DISABLED ;
-		}
-
-		return FCK_TRISTATE_OFF ;
-	}
-};

+ 0 - 106
main/inc/lib/fckeditor/editor/_source/commandclasses/fcktablecommand.js

@@ -1,106 +0,0 @@
-/*
- * FCKeditor - The text editor for Internet - http://www.fckeditor.net
- * Copyright (C) 2003-2010 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 ==
- *
- * FCKPastePlainTextCommand Class: represents the
- * "Paste as Plain Text" command.
- */
-
-var FCKTableCommand = function( command )
-{
-	this.Name = command ;
-}
-
-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 FCK_TRISTATE_OFF ;
-				else
-					return FCK_TRISTATE_DISABLED ;
-			case 'TableMergeCells' :
-				if ( FCKTableHandler.CheckIsSelectionRectangular()
-						&& FCKTableHandler.GetSelectedCells().length > 1 )
-					return FCK_TRISTATE_OFF ;
-				else
-					return FCK_TRISTATE_DISABLED ;
-			case 'TableMergeRight' :
-				return FCKTableHandler.GetMergeRightTarget() ? FCK_TRISTATE_OFF : FCK_TRISTATE_DISABLED ;
-			case 'TableMergeDown' :
-				return FCKTableHandler.GetMergeDownTarget() ? FCK_TRISTATE_OFF : FCK_TRISTATE_DISABLED ;
-			default :
-				return FCK_TRISTATE_OFF ;
-		}
-	}
-	else
-		return FCK_TRISTATE_DISABLED;
-}

+ 0 - 201
main/inc/lib/fckeditor/editor/_source/commandclasses/fcktextcolorcommand.js

@@ -1,201 +0,0 @@
-/*
- * FCKeditor - The text editor for Internet - http://www.fckeditor.net
- * Copyright (C) 2003-2010 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 ==
- *
- * FCKTextColorCommand Class: represents the text color comand. It shows the
- * color selection panel.
- */
-
-// FCKTextColorCommand Constructor
-//		type: can be 'ForeColor' or 'BackColor'.
-var FCKTextColorCommand = function( type )
-{
-	this.Name = type == 'ForeColor' ? 'TextColor' : 'BGColor' ;
-	this.Type = type ;
-
-	var oWindow ;
-
-	if ( FCKBrowserInfo.IsIE )
-		oWindow = window ;
-	else if ( FCK.ToolbarSet._IFrame )
-		oWindow = FCKTools.GetElementWindow( FCK.ToolbarSet._IFrame ) ;
-	else
-		oWindow = window.parent ;
-
-	this._Panel = new FCKPanel( oWindow ) ;
-	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( panelX, panelY, relElement )
-{
-	// Show the Color Panel at the desired position.
-	this._Panel.Show( panelX, panelY, relElement ) ;
-}
-
-FCKTextColorCommand.prototype.SetColor = function( color )
-{
-	FCKUndo.SaveUndoStep() ;
-
-	var style = FCKStyles.GetStyle( '_FCK_' +
-		( this.Type == 'ForeColor' ? 'Color' : 'BackColor' ) ) ;
-
-	if ( !color || color.length == 0 )
-		FCK.Styles.RemoveStyle( style ) ;
-	else
-	{
-		style.SetVariable( 'Color', color ) ;
-		FCKStyles.ApplyStyle( style ) ;
-	}
-
-	FCKUndo.SaveUndoStep() ;
-
-	FCK.Focus() ;
-	FCK.Events.FireEvent( 'OnSelectionChange' ) ;
-}
-
-FCKTextColorCommand.prototype.GetState = function()
-{
-	if ( FCK.EditMode != FCK_EDITMODE_WYSIWYG )
-		return FCK_TRISTATE_DISABLED ;
-	return FCK_TRISTATE_OFF ;
-}
-
-function FCKTextColorCommand_OnMouseOver()
-{
-	this.className = 'ColorSelected' ;
-}
-
-function FCKTextColorCommand_OnMouseOut()
-{
-	this.className = 'ColorDeselected' ;
-}
-
-function FCKTextColorCommand_OnClick( ev, command, color )
-{
-	this.className = 'ColorDeselected' ;
-	command.SetColor( color ) ;
-	command._Panel.Hide() ;
-}
-
-function FCKTextColorCommand_AutoOnClick( ev, command )
-{
-	this.className = 'ColorDeselected' ;
-	command.SetColor( '' ) ;
-	command._Panel.Hide() ;
-}
-
-function FCKTextColorCommand_MoreOnClick( ev, command )
-{
-	this.className = 'ColorDeselected' ;
-	command._Panel.Hide() ;
-	FCKDialog.OpenDialog( 'FCKDialog_Color', FCKLang.DlgColorTitle, 'dialog/fck_colorselector.html', 410, 320,
-			FCKTools.Bind( command, command.SetColor ) ) ;
-}
-
-FCKTextColorCommand.prototype._CreatePanelBody = function( targetDocument, targetDiv )
-{
-	function CreateSelectionDiv()
-	{
-		var oDiv = targetDocument.createElement( "DIV" ) ;
-		oDiv.className = 'ColorDeselected' ;
-		FCKTools.AddEventListenerEx( oDiv, 'mouseover', FCKTextColorCommand_OnMouseOver ) ;
-		FCKTools.AddEventListenerEx( oDiv, 'mouseout', FCKTextColorCommand_OnMouseOut ) ;
-
-		return oDiv ;
-	}
-
-	// Create the Table that will hold all colors.
-	var oTable = targetDiv.appendChild( targetDocument.createElement( "TABLE" ) ) ;
-	oTable.className = 'ForceBaseFont' ;		// Firefox 1.5 Bug.
-	oTable.style.tableLayout = 'fixed' ;
-	oTable.cellPadding = 0 ;
-	oTable.cellSpacing = 0 ;
-	oTable.border = 0 ;
-	oTable.width = 150 ;
-
-	var oCell = oTable.insertRow(-1).insertCell(-1) ;
-	oCell.colSpan = 8 ;
-
-	// Create the Button for the "Automatic" color selection.
-	var oDiv = oCell.appendChild( CreateSelectionDiv() ) ;
-	oDiv.innerHTML =
-		'<table cellspacing="0" cellpadding="0" width="100%" border="0">\
-			<tr>\
-				<td><div class="ColorBoxBorder"><div class="ColorBox" style="background-color: #000000"></div></div></td>\
-				<td nowrap width="100%" align="center">' + FCKLang.ColorAutomatic + '</td>\
-			</tr>\
-		</table>' ;
-
-	FCKTools.AddEventListenerEx( oDiv, 'click', FCKTextColorCommand_AutoOnClick, this ) ;
-
-	// Dirty hack for Opera, Safari and Firefox 3.
-	if ( !FCKBrowserInfo.IsIE )
-		oDiv.style.width = '96%' ;
-
-	// Create an array of colors based on the configuration file.
-	var aColors = FCKConfig.FontColors.toString().split(',') ;
-
-	// Create the colors table based on the array.
-	var iCounter = 0 ;
-	while ( iCounter < aColors.length )
-	{
-		var oRow = oTable.insertRow(-1) ;
-
-		for ( var i = 0 ; i < 8 ; i++, iCounter++ )
-		{
-			// The div will be created even if no more colors are available.
-			// Extra divs will be hidden later in the code. (#1597)
-			if ( iCounter < aColors.length )
-			{
-				var colorParts = aColors[iCounter].split('/') ;
-				var colorValue = '#' + colorParts[0] ;
-				var colorName = colorParts[1] || colorValue ;
-			}
-
-			oDiv = oRow.insertCell(-1).appendChild( CreateSelectionDiv() ) ;
-			oDiv.innerHTML = '<div class="ColorBoxBorder"><div class="ColorBox" style="background-color: ' + colorValue + '"></div></div>' ;
-
-			if ( iCounter >= aColors.length )
-				oDiv.style.visibility = 'hidden' ;
-			else
-				FCKTools.AddEventListenerEx( oDiv, 'click', FCKTextColorCommand_OnClick, [ this, colorName ] ) ;
-		}
-	}
-
-	// Create the Row and the Cell for the "More Colors..." button.
-	if ( FCKConfig.EnableMoreFontColors )
-	{
-		oCell = oTable.insertRow(-1).insertCell(-1) ;
-		oCell.colSpan = 8 ;
-
-		oDiv = oCell.appendChild( CreateSelectionDiv() ) ;
-		oDiv.innerHTML = '<table width="100%" cellpadding="0" cellspacing="0" border="0"><tr><td nowrap align="center">' + FCKLang.ColorMoreColors + '</td></tr></table>' ;
-
-		FCKTools.AddEventListenerEx( oDiv, 'click', FCKTextColorCommand_MoreOnClick, this ) ;
-
-		// Dirty hack for Opera, Safari and Firefox 3.
-		if ( !FCKBrowserInfo.IsIE )
-			oDiv.style.width = '96%' ;
-	}
-}

+ 0 - 8
main/inc/lib/fckeditor/editor/_source/commandclasses/index.html

@@ -1,8 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
-<head>
-</head>
-<body>
-<br />
-</body>
-</html>

+ 0 - 56
main/inc/lib/fckeditor/editor/_source/fckconstants.js

@@ -1,56 +0,0 @@
-/*
- * FCKeditor - The text editor for Internet - http://www.fckeditor.net
- * Copyright (C) 2003-2010 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 ==
- *
- * Defines some constants used by the editor. These constants are also
- * globally available in the page where the editor is placed.
- */
-
-// Editor Instance Status.
-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 ;
-
-// Tristate Operations.
-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 ;
-
-// For unknown values.
-var FCK_UNKNOWN				= window.parent.FCK_UNKNOWN				= -9 ;
-
-// Toolbar Items Style.
-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 ;
-
-// Edit Mode
-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/' ;		// Check usage.
-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 ;

+ 0 - 179
main/inc/lib/fckeditor/editor/_source/fckeditorapi.js

@@ -1,179 +0,0 @@
-/*
- * FCKeditor - The text editor for Internet - http://www.fckeditor.net
- * Copyright (C) 2003-2010 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 ==
- *
- * Create the FCKeditorAPI object that is available as a global object in
- * the page where the editor is placed in.
- */
-
-var FCKeditorAPI ;
-
-function InitializeAPI()
-{
-	var oParentWindow = window.parent ;
-
-	if ( !( FCKeditorAPI = oParentWindow.FCKeditorAPI ) )
-	{
-		// Make the FCKeditorAPI object available in the parent window. Use
-		// eval so this core runs in the parent's scope and so it will still be
-		// available if the editor instance is removed ("Can't execute code
-		// from a freed script" error).
-
-		// Note: we check the existence of oEditor.GetParentForm because some external
-		// code (like JSON) can extend the Object prototype and we get then extra oEditor
-		// objects that aren't really FCKeditor instances.
-		var sScript =
-			'window.FCKeditorAPI = {' +
-				'Version : "2.6.6",' +
-				'VersionBuild : "25427",' +
-				'Instances : window.FCKeditorAPI && window.FCKeditorAPI.Instances || {},' +
-
-				'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	: window.FCKeditorAPI && window.FCKeditorAPI._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();' +
-					'}' +
-				'}' +
-			'}' ;
-
-		// In IE, the "eval" function is not always available (it works with
-		// the JavaScript samples, but not with the ASP ones, for example).
-		// So, let's use the execScript instead.
-		if ( oParentWindow.execScript )
-			oParentWindow.execScript( sScript, 'JavaScript' ) ;
-		else
-		{
-			if ( FCKBrowserInfo.IsGecko10 )
-			{
-				// FF 1.0.4 gives an error with the request bellow. The
-				// following seams to work well.
-				eval.call( oParentWindow, sScript ) ;
-			}
-			else if( FCKBrowserInfo.IsAIR )
-			{
-				FCKAdobeAIR.FCKeditorAPI_Evaluate( oParentWindow, sScript ) ;
-			}
-			else if ( FCKBrowserInfo.IsSafari )
-			{
-				// oParentWindow.eval in Safari executes in the calling window
-				// environment, instead of the parent one. The following should
-				// make it work.
-				var oParentDocument = oParentWindow.document ;
-				var eScript = oParentDocument.createElement('script') ;
-				eScript.appendChild( oParentDocument.createTextNode( sScript ) ) ;
-				oParentDocument.documentElement.appendChild( eScript ) ;
-			}
-			else
-				oParentWindow.eval( sScript ) ;
-		}
-
-		FCKeditorAPI = oParentWindow.FCKeditorAPI ;
-
-		// The __Instances properly has been changed to the public Instances,
-		// but we should still have the "deprecated" version of it.
-		FCKeditorAPI.__Instances = FCKeditorAPI.Instances ;
-	}
-
-	// Add the current instance to the FCKeditorAPI's instances collection.
-	FCKeditorAPI.Instances[ FCK.Name ] = FCK ;
-}
-
-// Attach to the form onsubmit event and to the form.submit().
-function _AttachFormSubmitToAPI()
-{
-	// Get the linked field form.
-	var oForm = FCK.GetParentForm() ;
-
-	if ( oForm )
-	{
-		// Attach to the onsubmit event.
-		FCKTools.AddEventListener( oForm, 'submit', FCK.UpdateLinkedField ) ;
-
-		// IE sees oForm.submit function as an 'object'.
-		if ( !oForm._FCKOriginalSubmit && ( typeof( oForm.submit ) == 'function' || ( !oForm.submit.tagName && !oForm.submit.length ) ) )
-		{
-			// Save the original submit.
-			oForm._FCKOriginalSubmit = oForm.submit ;
-
-			// Create our replacement for the submit.
-			oForm.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) ;

+ 0 - 159
main/inc/lib/fckeditor/editor/_source/fckjscoreextensions.js

@@ -1,159 +0,0 @@
-/*
- * FCKeditor - The text editor for Internet - http://www.fckeditor.net
- * Copyright (C) 2003-2010 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 ==
- *
- * Extensions to the JavaScript Core.
- *
- * All custom extensions functions are PascalCased to differ from the standard
- * camelCased ones.
- */
-
-String.prototype.Contains = function( textToCheck )
-{
-	return ( this.indexOf( textToCheck ) > -1 ) ;
-}
-
-String.prototype.Equals = function()
-{
-	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 ( this == aArgs[i] )
-			return true ;
-	}
-	return false ;
-}
-
-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 ;
-}
-
-String.prototype.ReplaceAll = function( searchArray, replaceArray )
-{
-	var replaced = this ;
-
-	for ( var i = 0 ; i < searchArray.length ; i++ )
-	{
-		replaced = replaced.replace( searchArray[i], replaceArray[i] ) ;
-	}
-
-	return replaced ;
-}
-
-String.prototype.StartsWith = function( value )
-{
-	return ( this.substr( 0, value.length ) == value ) ;
-}
-
-// Extends the String object, creating a "EndsWith" method on it.
-String.prototype.EndsWith = function( value, ignoreCase )
-{
-	var L1 = this.length ;
-	var L2 = value.length ;
-
-	if ( L2 > L1 )
-		return false ;
-
-	if ( ignoreCase )
-	{
-		var oRegex = new RegExp( value + '$' , 'i' ) ;
-		return oRegex.test( this ) ;
-	}
-	else
-		return ( L2 == 0 || this.substr( L1 - L2, L2 ) == value ) ;
-}
-
-String.prototype.Remove = function( start, length )
-{
-	var s = '' ;
-
-	if ( start > 0 )
-		s = this.substring( 0, start ) ;
-
-	if ( start + length < this.length )
-		s += this.substring( start + length , this.length ) ;
-
-	return s ;
-}
-
-String.prototype.Trim = function()
-{
-	// We are not using \s because we don't want "non-breaking spaces to be caught".
-	return this.replace( /(^[ \t\n\r]*)|([ \t\n\r]*$)/g, '' ) ;
-}
-
-String.prototype.LTrim = function()
-{
-	// We are not using \s because we don't want "non-breaking spaces to be caught".
-	return this.replace( /^[ \t\n\r]*/g, '' ) ;
-}
-
-String.prototype.RTrim = function()
-{
-	// We are not using \s because we don't want "non-breaking spaces to be caught".
-	return this.replace( /[ \t\n\r]*$/g, '' ) ;
-}
-
-String.prototype.ReplaceNewLineChars = function( replacement )
-{
-	return this.replace( /\n/g, replacement ) ;
-}
-
-String.prototype.Replace = function( regExp, replacement, thisObj )
-{
-	if ( typeof replacement == 'function' )
-	{
-		return this.replace( regExp,
-			function()
-			{
-				return replacement.apply( thisObj || this, arguments ) ;
-			} ) ;
-	}
-	else
-		return this.replace( regExp, replacement ) ;
-}
-
-Array.prototype.IndexOf = function( value )
-{
-	for ( var i = 0 ; i < this.length ; i++ )
-	{
-		if ( this[i] == value )
-			return i ;
-	}
-	return -1 ;
-}

+ 0 - 122
main/inc/lib/fckeditor/editor/_source/fckscriptloader.js

@@ -1,122 +0,0 @@
-/*
- * FCKeditor - The text editor for Internet - http://www.fckeditor.net
- * Copyright (C) 2003-2010 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 a utility object which can be used to load specific components of
- * FCKeditor, including all dependencies.
- */
-
-var FCK_GENERIC = 1 ;
-var FCK_GENERIC_SPECIFIC = 2 ;
-var FCK_SPECIFIC = 3 ;
-
-var FCKScriptLoader = new Object() ;
-FCKScriptLoader.FCKeditorPath = '/fckeditor/' ;
-
-FCKScriptLoader._Scripts = new Object() ;
-FCKScriptLoader._LoadedScripts = new Object() ;
-
-FCKScriptLoader._IsIE = (/msie/).test( navigator.userAgent.toLowerCase() ) ;
-
-FCKScriptLoader.Load = function( scriptName )
-{
-	// Check if the script has already been loaded.
-	if ( scriptName in FCKScriptLoader._LoadedScripts )
-		return ;
-
-	FCKScriptLoader._LoadedScripts[ scriptName ] = true ;
-
-	var oScriptInfo = this._Scripts[ scriptName ] ;
-
-	if ( !oScriptInfo )
-	{
-		alert( 'FCKScriptLoader: The script "' + scriptName + '" could not be loaded' ) ;
-		return ;
-	}
-
-	for ( var i = 0 ; i < oScriptInfo.Dependency.length ; i++ )
-	{
-		this.Load( oScriptInfo.Dependency[i] ) ;
-	}
-
-	var sBaseScriptName = oScriptInfo.BasePath + scriptName.toLowerCase() ;
-
-	if ( oScriptInfo.Compatibility == FCK_GENERIC || oScriptInfo.Compatibility == FCK_GENERIC_SPECIFIC )
-		this._LoadScript( sBaseScriptName + '.js' ) ;
-
-	if ( oScriptInfo.Compatibility == FCK_SPECIFIC || oScriptInfo.Compatibility == FCK_GENERIC_SPECIFIC )
-	{
-		if ( this._IsIE )
-			this._LoadScript( sBaseScriptName + '_ie.js' ) ;
-		else
-			this._LoadScript( sBaseScriptName + '_gecko.js' ) ;
-	}
-}
-
-FCKScriptLoader._LoadScript = function( scriptPathFromSource )
-{
-	document.write( '<script type="text/javascript" src="' + this.FCKeditorPath + 'editor/_source/' + scriptPathFromSource + '"><\/script>' ) ;
-}
-
-FCKScriptLoader.AddScript = function( scriptName, scriptBasePath, dependency, compatibility )
-{
-	this._Scripts[ scriptName ] =
-	{
-		BasePath : scriptBasePath || '',
-		Dependency : dependency || [],
-		Compatibility : compatibility || FCK_GENERIC
-	} ;
-}
-
-/*
- * ####################################
- * ### Scripts Definition List
- */
-
-FCKScriptLoader.AddScript( 'FCKConstants' ) ;
-FCKScriptLoader.AddScript( 'FCKJSCoreExtensions' ) ;
-
-FCKScriptLoader.AddScript( 'FCK_Xhtml10Transitional', '../dtd/' ) ;
-
-FCKScriptLoader.AddScript( 'FCKDataProcessor'	, 'classes/'	, ['FCKConfig','FCKBrowserInfo','FCKRegexLib','FCKXHtml'] ) ;
-FCKScriptLoader.AddScript( 'FCKDocumentFragment', 'classes/'	, ['FCKDomTools'], FCK_SPECIFIC ) ;
-FCKScriptLoader.AddScript( 'FCKDomRange'		, 'classes/'	, ['FCKBrowserInfo','FCKJSCoreExtensions','FCKW3CRange','FCKElementPath','FCKDomTools','FCKTools','FCKDocumentFragment'], FCK_GENERIC_SPECIFIC ) ;
-FCKScriptLoader.AddScript( 'FCKDomRangeIterator', 'classes/'	, ['FCKDomRange','FCKListsLib'], FCK_GENERIC ) ;
-FCKScriptLoader.AddScript( 'FCKElementPath'		, 'classes/'	, ['FCKListsLib'], FCK_GENERIC ) ;
-FCKScriptLoader.AddScript( 'FCKEnterKey'		, 'classes/'	, ['FCKDomRange','FCKDomTools','FCKTools','FCKKeystrokeHandler','FCKListHandler'], FCK_GENERIC ) ;
-FCKScriptLoader.AddScript( 'FCKPanel'			, 'classes/'	, ['FCKBrowserInfo','FCKConfig','FCKTools'], FCK_GENERIC ) ;
-FCKScriptLoader.AddScript( 'FCKImagePreloader'	, 'classes/' ) ;
-FCKScriptLoader.AddScript( 'FCKKeystrokeHandler', 'classes/'	, ['FCKConstants','FCKBrowserInfo','FCKTools'], FCK_GENERIC ) ;
-FCKScriptLoader.AddScript( 'FCKStyle'			, 'classes/'	, ['FCKConstants','FCKDomRange','FCKDomRangeIterator','FCKDomTools','FCKListsLib','FCK_Xhtml10Transitional'], FCK_GENERIC ) ;
-FCKScriptLoader.AddScript( 'FCKW3CRange'		, 'classes/'	, ['FCKDomTools','FCKTools','FCKDocumentFragment'], FCK_GENERIC ) ;
-
-FCKScriptLoader.AddScript( 'FCKBrowserInfo'		, 'internals/'	, ['FCKJSCoreExtensions'] ) ;
-FCKScriptLoader.AddScript( 'FCKCodeFormatter'	, 'internals/' ) ;
-FCKScriptLoader.AddScript( 'FCKConfig'			, 'internals/'	, ['FCKBrowserInfo','FCKConstants'] ) ;
-FCKScriptLoader.AddScript( 'FCKDebug'			, 'internals/'	, ['FCKConfig'] ) ;
-FCKScriptLoader.AddScript( 'FCKDomTools'		, 'internals/'	, ['FCKJSCoreExtensions','FCKBrowserInfo','FCKTools','FCKDomRange'], FCK_GENERIC ) ;
-FCKScriptLoader.AddScript( 'FCKListsLib'		, 'internals/' ) ;
-FCKScriptLoader.AddScript( 'FCKListHandler'		, 'internals/'	, ['FCKConfig', 'FCKDocumentFragment', 'FCKJSCoreExtensions','FCKDomTools'], FCK_GENERIC ) ;
-FCKScriptLoader.AddScript( 'FCKRegexLib'		, 'internals/' ) ;
-FCKScriptLoader.AddScript( 'FCKStyles'			, 'internals/'	, ['FCKConfig', 'FCKDocumentFragment', 'FCKDomRange','FCKDomTools','FCKElementPath','FCKTools'], FCK_GENERIC ) ;
-FCKScriptLoader.AddScript( 'FCKTools'			, 'internals/'	, ['FCKJSCoreExtensions','FCKBrowserInfo'], FCK_GENERIC_SPECIFIC ) ;
-FCKScriptLoader.AddScript( 'FCKXHtml'			, 'internals/'	, ['FCKBrowserInfo','FCKCodeFormatter','FCKConfig','FCKDomTools','FCKListsLib','FCKRegexLib','FCKTools','FCKXHtmlEntities'], FCK_GENERIC_SPECIFIC ) ;
-FCKScriptLoader.AddScript( 'FCKXHtmlEntities'	, 'internals/'	, ['FCKConfig'] ) ;
-
-// ####################################

+ 0 - 8
main/inc/lib/fckeditor/editor/_source/index.html

@@ -1,8 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
-<head>
-</head>
-<body>
-<br />
-</body>
-</html>

+ 0 - 1296
main/inc/lib/fckeditor/editor/_source/internals/fck.js

@@ -1,1296 +0,0 @@
-/*
- * FCKeditor - The text editor for Internet - http://www.fckeditor.net
- * Copyright (C) 2003-2010 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 ==
- *
- * Creation and initialization of the "FCK" object. This is the main object
- * that represents an editor instance.
- */
-
-// FCK represents the active editor instance.
-var FCK =
-{
-	Name			: FCKURLParams[ 'InstanceName' ],
-	Status			: FCK_STATUS_NOTLOADED,
-	EditMode		: FCK_EDITMODE_WYSIWYG,
-	Toolbar			: null,
-	HasFocus		: false,
-	DataProcessor	: new FCKDataProcessor(),
-
-	GetInstanceObject	: (function()
-	{
-		var w = window ;
-		return function( name )
-		{
-			return w[name] ;
-		}
-	})(),
-
-	AttachToOnSelectionChange : function( functionPointer )
-	{
-		this.Events.AttachEvent( 'OnSelectionChange', functionPointer ) ;
-	},
-
-	GetLinkedFieldValue : function()
-	{
-		return this.LinkedField.value ;
-	},
-
-	GetParentForm : function()
-	{
-		return this.LinkedField.form ;
-	} ,
-
-	// # START : IsDirty implementation
-
-	StartupValue : '',
-
-	IsDirty : function()
-	{
-		if ( this.EditMode == FCK_EDITMODE_SOURCE )
-			return ( this.StartupValue != this.EditingArea.Textarea.value ) ;
-		else
-		{
-			// It can happen switching between design and source mode in Gecko
-			if ( ! this.EditorDocument )
-				return false ;
-
-			return ( this.StartupValue != this.EditorDocument.body.innerHTML ) ;
-		}
-	},
-
-	ResetIsDirty : function()
-	{
-		if ( this.EditMode == FCK_EDITMODE_SOURCE )
-			this.StartupValue = this.EditingArea.Textarea.value ;
-		else if ( this.EditorDocument.body )
-			this.StartupValue = this.EditorDocument.body.innerHTML ;
-	},
-
-	// # END : IsDirty implementation
-
-	StartEditor : function()
-	{
-		this.TempBaseTag = FCKConfig.BaseHref.length > 0 ? '<base href="' + FCKConfig.BaseHref + '" _fcktemp="true"></base>' : '' ;
-
-		// Setup the keystroke handler.
-		var oKeystrokeHandler = FCK.KeystrokeHandler = new FCKKeystrokeHandler() ;
-		oKeystrokeHandler.OnKeystroke = _FCK_KeystrokeHandler_OnKeystroke ;
-
-		// Set the config keystrokes.
-		oKeystrokeHandler.SetKeystrokes( FCKConfig.Keystrokes ) ;
-
-		// In IE7, if the editor tries to access the clipboard by code, a dialog is
-		// shown to the user asking if the application is allowed to access or not.
-		// Due to the IE implementation of it, the KeystrokeHandler will not work
-		//well in this case, so we must leave the pasting keys to have their default behavior.
-		if ( FCKBrowserInfo.IsIE7 )
-		{
-			if ( ( CTRL + 86 /*V*/ ) in oKeystrokeHandler.Keystrokes )
-				oKeystrokeHandler.SetKeystrokes( [ CTRL + 86, true ] ) ;
-
-			if ( ( SHIFT + 45 /*INS*/ ) in oKeystrokeHandler.Keystrokes )
-				oKeystrokeHandler.SetKeystrokes( [ SHIFT + 45, true ] ) ;
-		}
-
-		// Retain default behavior for Ctrl-Backspace. (Bug #362)
-		oKeystrokeHandler.SetKeystrokes( [ CTRL + 8, true ] ) ;
-
-		this.EditingArea = new FCKEditingArea( document.getElementById( 'xEditingArea' ) ) ;
-		this.EditingArea.FFSpellChecker = FCKConfig.FirefoxSpellChecker ;
-
-		// Set the editor's startup contents.
-		this.SetData( this.GetLinkedFieldValue(), true ) ;
-
-		// Tab key handling for source mode.
-		FCKTools.AddEventListener( document, "keydown", this._TabKeyHandler ) ;
-
-		// Add selection change listeners. They must be attached only once.
-		this.AttachToOnSelectionChange( _FCK_PaddingNodeListener ) ;
-		if ( FCKBrowserInfo.IsGecko )
-			this.AttachToOnSelectionChange( this._ExecCheckEmptyBlock ) ;
-
-	},
-
-	Focus : function()
-	{
-		FCK.EditingArea.Focus() ;
-	},
-
-	SetStatus : function( newStatus )
-	{
-		this.Status = newStatus ;
-
-		if ( newStatus == FCK_STATUS_ACTIVE )
-		{
-			FCKFocusManager.AddWindow( window, true ) ;
-
-			if ( FCKBrowserInfo.IsIE )
-				FCKFocusManager.AddWindow( window.frameElement, true ) ;
-
-			// Force the focus in the editor.
-			if ( FCKConfig.StartupFocus )
-				FCK.Focus() ;
-		}
-
-		this.Events.FireEvent( 'OnStatusChange', newStatus ) ;
-
-	},
-
-	// Fixes the body by moving all inline and text nodes to appropriate block
-	// elements.
-	FixBody : function()
-	{
-		var sBlockTag = FCKConfig.EnterMode ;
-
-		// In 'br' mode, no fix must be done.
-		if ( sBlockTag != 'p' && sBlockTag != 'div' )
-			return ;
-
-		var oDocument = this.EditorDocument ;
-
-		if ( !oDocument )
-			return ;
-
-		var oBody = oDocument.body ;
-
-		if ( !oBody )
-			return ;
-
-		FCKDomTools.TrimNode( oBody ) ;
-
-		var oNode = oBody.firstChild ;
-		var oNewBlock ;
-
-		while ( oNode )
-		{
-			var bMoveNode = false ;
-
-			switch ( oNode.nodeType )
-			{
-				// Element Node.
-				case 1 :
-					var nodeName = oNode.nodeName.toLowerCase() ;
-					if ( !FCKListsLib.BlockElements[ nodeName ] &&
-							nodeName != 'li' &&
-							!oNode.getAttribute('_fckfakelement') &&
-							oNode.getAttribute('_moz_dirty') == null )
-						bMoveNode = true ;
-					break ;
-
-				// Text Node.
-				case 3 :
-					// Ignore space only or empty text.
-					if ( oNewBlock || oNode.nodeValue.Trim().length > 0 )
-						bMoveNode = true ;
-					break;
-
-				// Comment Node
-				case 8 :
-					if ( oNewBlock )
-						bMoveNode = true ;
-					break;
-			}
-
-			if ( bMoveNode )
-			{
-				var oParent = oNode.parentNode ;
-
-				if ( !oNewBlock )
-					oNewBlock = oParent.insertBefore( oDocument.createElement( sBlockTag ), oNode ) ;
-
-				oNewBlock.appendChild( oParent.removeChild( oNode ) ) ;
-
-				oNode = oNewBlock.nextSibling ;
-			}
-			else
-			{
-				if ( oNewBlock )
-				{
-					FCKDomTools.TrimNode( oNewBlock ) ;
-					oNewBlock = null ;
-				}
-				oNode = oNode.nextSibling ;
-			}
-		}
-
-		if ( oNewBlock )
-			FCKDomTools.TrimNode( oNewBlock ) ;
-	},
-
-	GetData : function( format )
-	{
-		FCK.Events.FireEvent("OnBeforeGetData") ;
-
-		// We assume that if the user is in source editing, the editor value must
-		// represent the exact contents of the source, as the user wanted it to be.
-		if ( FCK.EditMode == FCK_EDITMODE_SOURCE )
-				return FCK.EditingArea.Textarea.value ;
-
-		this.FixBody() ;
-
-		var oDoc = FCK.EditorDocument ;
-		if ( !oDoc )
-			return null ;
-
-		var isFullPage = FCKConfig.FullPage ;
-
-		// Call the Data Processor to generate the output data.
-		var data = FCK.DataProcessor.ConvertToDataFormat(
-			isFullPage ? oDoc.documentElement : oDoc.body,
-			!isFullPage,
-			FCKConfig.IgnoreEmptyParagraphValue,
-			format ) ;
-
-		// Restore protected attributes.
-		data = FCK.ProtectEventsRestore( data ) ;
-
-		if ( FCKBrowserInfo.IsIE )
-			data = data.replace( FCKRegexLib.ToReplace, '$1' ) ;
-
-		if ( isFullPage )
-		{
-			if ( FCK.DocTypeDeclaration && FCK.DocTypeDeclaration.length > 0 )
-				data = FCK.DocTypeDeclaration + '\n' + data ;
-
-			if ( FCK.XmlDeclaration && FCK.XmlDeclaration.length > 0 )
-				data = FCK.XmlDeclaration + '\n' + data ;
-		}
-
-		data = FCKConfig.ProtectedSource.Revert( data ) ;
-
-		setTimeout( function() { FCK.Events.FireEvent("OnAfterGetData") ; }, 0 ) ;
-
-		return data ;
-	},
-
-	UpdateLinkedField : function()
-	{
-		var value = FCK.GetXHTML( FCKConfig.FormatOutput ) ;
-
-		if ( FCKConfig.HtmlEncodeOutput )
-			value = FCKTools.HTMLEncode( value ) ;
-
-		FCK.LinkedField.value = value ;
-		FCK.Events.FireEvent( 'OnAfterLinkedFieldUpdate' ) ;
-	},
-
-	RegisteredDoubleClickHandlers : new Object(),
-
-	OnDoubleClick : function( element )
-	{
-		var oCalls = FCK.RegisteredDoubleClickHandlers[ element.tagName.toUpperCase() ] ;
-
-		if ( oCalls )
-		{
-			for ( var i = 0 ; i < oCalls.length ; i++ )
-				oCalls[ i ]( element ) ;
-		}
-
-		// Generic handler for any element
-		oCalls = FCK.RegisteredDoubleClickHandlers[ '*' ] ;
-
-		if ( oCalls )
-		{
-			for ( var i = 0 ; i < oCalls.length ; i++ )
-				oCalls[ i ]( element ) ;
-		}
-
-	},
-
-	// Register objects that can handle double click operations.
-	RegisterDoubleClickHandler : function( handlerFunction, tag )
-	{
-		var nodeName = tag || '*' ;
-		nodeName = nodeName.toUpperCase() ;
-
-		var aTargets ;
-
-		if ( !( aTargets = FCK.RegisteredDoubleClickHandlers[ nodeName ] ) )
-			FCK.RegisteredDoubleClickHandlers[ nodeName ] = [ handlerFunction ] ;
-		else
-		{
-			// Check that the event handler isn't already registered with the same listener
-			// It doesn't detect function pointers belonging to an object (at least in Gecko)
-			if ( aTargets.IndexOf( handlerFunction ) == -1 )
-				aTargets.push( handlerFunction ) ;
-		}
-
-	},
-
-	OnAfterSetHTML : function()
-	{
-		FCKDocumentProcessor.Process( FCK.EditorDocument ) ;
-		FCKUndo.SaveUndoStep() ;
-
-		FCK.Events.FireEvent( 'OnSelectionChange' ) ;
-		FCK.Events.FireEvent( 'OnAfterSetHTML' ) ;
-	},
-
-	// Saves URLs on links and images on special attributes, so they don't change when
-	// moving around.
-	ProtectUrls : function( html )
-	{
-		// <A> href
-		html = html.replace( FCKRegexLib.ProtectUrlsA	, '$& _fcksavedurl=$1' ) ;
-
-		// <IMG> src
-		html = html.replace( FCKRegexLib.ProtectUrlsImg	, '$& _fcksavedurl=$1' ) ;
-
-		// <AREA> href
-		html = html.replace( FCKRegexLib.ProtectUrlsArea	, '$& _fcksavedurl=$1' ) ;
-
-		return html ;
-	},
-
-	// Saves event attributes (like onclick) so they don't get executed while
-	// editing.
-	ProtectEvents : function( html )
-	{
-		return html.replace( FCKRegexLib.TagsWithEvent, _FCK_ProtectEvents_ReplaceTags ) ;
-	},
-
-	ProtectEventsRestore : function( html )
-	{
-		return html.replace( FCKRegexLib.ProtectedEvents, _FCK_ProtectEvents_RestoreEvents ) ;
-	},
-
-	ProtectTags : function( html )
-	{
-		var sTags = FCKConfig.ProtectedTags ;
-
-		// IE doesn't support <abbr> and it breaks it. Let's protect it.
-		if ( FCKBrowserInfo.IsIE )
-			sTags += sTags.length > 0 ? '|ABBR|XML|EMBED|OBJECT' : 'ABBR|XML|EMBED|OBJECT' ;
-
-		var oRegex ;
-		if ( sTags.length > 0 )
-		{
-			oRegex = new RegExp( '<(' + sTags + ')(?!\w|:)', 'gi' ) ;            
-			html = html.replace( oRegex, '<FCK:$1' ) ;
-
-			oRegex = new RegExp( '<\/(' + sTags + ')>', 'gi' ) ;            
-			html = html.replace( oRegex, '<\/FCK:$1>' ) ;
-		}
-
-		// Protect some empty elements. We must do it separately because the
-		// original tag may not contain the closing slash, like <hr>:
-		//		- <meta> tags get executed, so if you have a redirect meta, the
-		//		  content will move to the target page.
-		//		- <hr> may destroy the document structure if not well
-		//		  positioned. The trick is protect it here and restore them in
-		//		  the FCKDocumentProcessor.
-		sTags = 'META' ;
-		if ( FCKBrowserInfo.IsIE )
-			sTags += '|HR' ;
-        
-        //Fixes bug when editing meta tags see BT#4370
-		//oRegex = new RegExp( '<((' + sTags + ')(?=\\s|>|/)[\\s\\S]*?)/?>', 'gi' ) ;
-        oRegex = new RegExp( '<((' + sTags + ')(?=\s|>)[\s\S]*?)/?>', 'gi' ) ;
-		html = html.replace( oRegex, '<FCK:$1 />' ) ;
-
-		return html ;
-	},
-
-	SetData : function( data, resetIsDirty )
-	{
-		this.EditingArea.Mode = FCK.EditMode ;
-
-		// If there was an onSelectionChange listener in IE we must remove it to avoid crashes #1498
-		if ( FCKBrowserInfo.IsIE && FCK.EditorDocument )
-		{
-			FCK.EditorDocument.detachEvent("onselectionchange", Doc_OnSelectionChange ) ;
-		}
-
-		FCKTempBin.Reset() ;
-
-		// Bug #2469: SelectionData.createRange becomes undefined after the editor
-		// iframe is changed by FCK.SetData().
-		FCK.Selection.Release() ;
-
-		if ( FCK.EditMode == FCK_EDITMODE_WYSIWYG )
-		{
-			// Save the resetIsDirty for later use (async)
-			this._ForceResetIsDirty = ( resetIsDirty === true ) ;
-
-			// Protect parts of the code that must remain untouched (and invisible)
-			// during editing.
-			data = FCKConfig.ProtectedSource.Protect( data ) ;
-
-			// Call the Data Processor to transform the data.
-			data = FCK.DataProcessor.ConvertToHtml( data ) ;
-
-			// Fix for invalid self-closing tags (see #152).
-			data = data.replace( FCKRegexLib.InvalidSelfCloseTags, '$1></$2>' ) ;
-
-			// Protect event attributes (they could get fired in the editing area).
-			data = FCK.ProtectEvents( data ) ;
-
-			// Protect some things from the browser itself.
-			data = FCK.ProtectUrls( data ) ;
-			data = FCK.ProtectTags( data ) ;
-
-			// Insert the base tag (FCKConfig.BaseHref), if not exists in the source.
-			// The base must be the first tag in the HEAD, to get relative
-			// links on styles, for example.
-			if ( FCK.TempBaseTag.length > 0 && !FCKRegexLib.HasBaseTag.test( data ) )
-				data = data.replace( FCKRegexLib.HeadOpener, '$&' + FCK.TempBaseTag ) ;
-
-			// Build the HTML for the additional things we need on <head>.
-			var sHeadExtra = '' ;
-
-			if ( !FCKConfig.FullPage )
-				sHeadExtra += _FCK_GetEditorAreaStyleTags() ;
-
-			if ( FCKBrowserInfo.IsIE )
-				sHeadExtra += FCK._GetBehaviorsStyle() ;
-			else if ( FCKConfig.ShowBorders )
-				sHeadExtra += FCKTools.GetStyleHtml( FCK_ShowTableBordersCSS, true ) ;
-
-			sHeadExtra += FCKTools.GetStyleHtml( FCK_InternalCSS, true ) ;
-
-			// Attention: do not change it before testing it well (sample07)!
-			// This is tricky... if the head ends with <meta ... content type>,
-			// Firefox will break. But, it works if we place our extra stuff as
-			// the last elements in the HEAD.
-			data = data.replace( FCKRegexLib.HeadCloser, sHeadExtra + '$&' ) ;
-
-			// Load the HTML in the editing area.
-			this.EditingArea.OnLoad = _FCK_EditingArea_OnLoad ;
-			this.EditingArea.Start( data ) ;
-		}
-		else
-		{
-			// Remove the references to the following elements, as the editing area
-			// IFRAME will be removed.
-			FCK.EditorWindow	= null ;
-			FCK.EditorDocument	= null ;
-			FCKDomTools.PaddingNode = null ;
-
-			this.EditingArea.OnLoad = null ;
-			this.EditingArea.Start( data ) ;
-
-			// Enables the context menu in the textarea.
-			this.EditingArea.Textarea._FCKShowContextMenu = true ;
-
-			// Removes the enter key handler.
-			FCK.EnterKeyHandler = null ;
-
-			if ( resetIsDirty )
-				this.ResetIsDirty() ;
-
-			// Listen for keystroke events.
-			FCK.KeystrokeHandler.AttachToElement( this.EditingArea.Textarea ) ;
-
-			this.EditingArea.Textarea.focus() ;
-
-			FCK.Events.FireEvent( 'OnAfterSetHTML' ) ;
-		}
-
-		if ( window.onresize )
-			window.onresize() ;
-	},
-
-	// This collection is used by the browser specific implementations to tell
-	// which named commands must be handled separately.
-	RedirectNamedCommands : new Object(),
-
-	ExecuteNamedCommand : function( commandName, commandParameter, noRedirect, noSaveUndo )
-	{
-		if ( !noSaveUndo )
-			FCKUndo.SaveUndoStep() ;
-
-		if ( !noRedirect && FCK.RedirectNamedCommands[ commandName ] != null )
-			FCK.ExecuteRedirectedNamedCommand( commandName, commandParameter ) ;
-		else
-		{
-			FCK.Focus() ;
-			FCK.EditorDocument.execCommand( commandName, false, commandParameter ) ;
-			FCK.Events.FireEvent( 'OnSelectionChange' ) ;
-		}
-
-		if ( !noSaveUndo )
-		FCKUndo.SaveUndoStep() ;
-	},
-
-	GetNamedCommandState : function( commandName )
-	{
-		try
-		{
-
-			// Bug #50 : Safari never returns positive state for the Paste command, override that.
-			if ( FCKBrowserInfo.IsSafari && FCK.EditorWindow && commandName.IEquals( 'Paste' ) )
-				return FCK_TRISTATE_OFF ;
-
-			if ( !FCK.EditorDocument.queryCommandEnabled( commandName ) )
-				return FCK_TRISTATE_DISABLED ;
-			else
-			{
-				return FCK.EditorDocument.queryCommandState( commandName ) ? FCK_TRISTATE_ON : FCK_TRISTATE_OFF ;
-			}
-		}
-		catch ( e )
-		{
-			return FCK_TRISTATE_OFF ;
-		}
-	},
-
-	GetNamedCommandValue : function( commandName )
-	{
-		var sValue = '' ;
-		var eState = FCK.GetNamedCommandState( commandName ) ;
-
-		if ( eState == FCK_TRISTATE_DISABLED )
-			return null ;
-
-		try
-		{
-			sValue = this.EditorDocument.queryCommandValue( commandName ) ;
-		}
-		catch(e) {}
-
-		return sValue ? sValue : '' ;
-	},
-
-	Paste : function( _callListenersOnly )
-	{
-		// First call 'OnPaste' listeners.
-		if ( FCK.Status != FCK_STATUS_COMPLETE || !FCK.Events.FireEvent( 'OnPaste' ) )
-			return false ;
-
-		// Then call the default implementation.
-		return _callListenersOnly || FCK._ExecPaste() ;
-	},
-
-	PasteFromWord : function()
-	{
-		FCKDialog.OpenDialog( 'FCKDialog_Paste', FCKLang.PasteFromWord, 'dialog/fck_paste.html', 400, 330, 'Word' ) ;
-	},
-
-	Preview : function()
-	{
-		var sHTML ;
-
-		if ( FCKConfig.FullPage )
-		{
-			if ( FCK.TempBaseTag.length > 0 )
-				sHTML = FCK.TempBaseTag + FCK.GetXHTML() ;
-			else
-				sHTML = FCK.GetXHTML() ;
-		}
-		else
-		{
-			sHTML =
-				FCKConfig.DocType +
-				'<html dir="' + FCKConfig.ContentLangDirection + '">' +
-				'<head>' +
-				FCK.TempBaseTag +
-				'<title>' + FCKLang.Preview + '</title>' +
-				_FCK_GetEditorAreaStyleTags() +
-				'</head><body' + FCKConfig.GetBodyAttributes() + '>' +
-				FCK.GetXHTML() +
-				'</body></html>' ;
-		}
-
-		var iWidth	= FCKConfig.ScreenWidth * 0.8 ;
-		var iHeight	= FCKConfig.ScreenHeight * 0.7 ;
-		var iLeft	= ( FCKConfig.ScreenWidth - iWidth ) / 2 ;
-
-		var sOpenUrl = '' ;
-		if ( FCK_IS_CUSTOM_DOMAIN && FCKBrowserInfo.IsIE)
-		{
-			window._FCKHtmlToLoad = sHTML ;
-			sOpenUrl = 'javascript:void( (function(){' +
-				'document.open() ;' +
-				'document.domain="' + document.domain + '" ;' +
-				'document.write( window.opener._FCKHtmlToLoad );' +
-				'document.close() ;' +
-				'window.opener._FCKHtmlToLoad = null ;' +
-				'})() )' ;
-		}
-
-		var oWindow = window.open( sOpenUrl, null, 'toolbar=yes,location=no,status=yes,menubar=yes,scrollbars=yes,resizable=yes,width=' + iWidth + ',height=' + iHeight + ',left=' + iLeft ) ;
-
-		if ( !FCK_IS_CUSTOM_DOMAIN || !FCKBrowserInfo.IsIE)
-		{
-			oWindow.document.write( sHTML );
-			oWindow.document.close();
-		}
-
-	},
-
-	SwitchEditMode : function( noUndo )
-	{
-		var bIsWysiwyg = ( FCK.EditMode == FCK_EDITMODE_WYSIWYG ) ;
-
-		// Save the current IsDirty state, so we may restore it after the switch.
-		var bIsDirty = FCK.IsDirty() ;
-
-		var sHtml ;
-
-		// Update the HTML in the view output to show, also update
-		// FCKTempBin for IE to avoid #2263.
-		if ( bIsWysiwyg )
-		{
-			FCKCommands.GetCommand( 'ShowBlocks' ).SaveState() ;
-			if ( !noUndo && FCKBrowserInfo.IsIE )
-				FCKUndo.SaveUndoStep() ;
-
-			sHtml = FCK.GetXHTML( FCKConfig.FormatSource ) ;
-
-			if ( FCKBrowserInfo.IsIE )
-				FCKTempBin.ToHtml() ;
-
-			if ( sHtml == null )
-				return false ;
-		}
-		else
-			sHtml = this.EditingArea.Textarea.value ;
-
-		FCK.EditMode = bIsWysiwyg ? FCK_EDITMODE_SOURCE : FCK_EDITMODE_WYSIWYG ;
-
-		FCK.SetData( sHtml, !bIsDirty ) ;
-
-		// Set the Focus.
-		FCK.Focus() ;
-
-		// Update the toolbar (Running it directly causes IE to fail).
-		FCKTools.RunFunction( FCK.ToolbarSet.RefreshModeState, FCK.ToolbarSet ) ;
-
-		return true ;
-	},
-
-	InsertElement : function( element )
-	{
-		// The parameter may be a string (element name), so transform it in an element.
-		if ( typeof element == 'string' )
-			element = this.EditorDocument.createElement( element ) ;
-
-		var elementName = element.nodeName.toLowerCase() ;
-
-		FCKSelection.Restore() ;
-
-		// Create a range for the selection. V3 will have a new selection
-		// object that may internally supply this feature.
-		var range = new FCKDomRange( this.EditorWindow ) ;
-
-		// Move to the selection and delete it.
-		range.MoveToSelection() ;
-		range.DeleteContents() ;
-
-		if ( FCKListsLib.BlockElements[ elementName ] != null )
-		{
-			if ( range.StartBlock )
-			{
-				if ( range.CheckStartOfBlock() )
-					range.MoveToPosition( range.StartBlock, 3 ) ;
-				else if ( range.CheckEndOfBlock() )
-					range.MoveToPosition( range.StartBlock, 4 ) ;
-				else
-					range.SplitBlock() ;
-			}
-
-			range.InsertNode( element ) ;
-
-			var next = FCKDomTools.GetNextSourceElement( element, false, null, [ 'hr','br','param','img','area','input' ], true ) ;
-
-			// Be sure that we have something after the new element, so we can move the cursor there.
-			if ( !next && FCKConfig.EnterMode != 'br')
-			{
-				next = this.EditorDocument.body.appendChild( this.EditorDocument.createElement( FCKConfig.EnterMode ) ) ;
-
-				if ( FCKBrowserInfo.IsGeckoLike )
-					FCKTools.AppendBogusBr( next ) ;
-			}
-
-			if ( FCKListsLib.EmptyElements[ elementName ] == null )
-				range.MoveToElementEditStart( element ) ;
-			else if ( next )
-				range.MoveToElementEditStart( next ) ;
-			else
-				range.MoveToPosition( element, 4 ) ;
-
-			if ( FCKBrowserInfo.IsGeckoLike )
-			{
-				if ( next )
-					FCKDomTools.ScrollIntoView( next, false );
-				FCKDomTools.ScrollIntoView( element, false );
-			}
-		}
-		else
-		{
-			// Insert the node.
-			range.InsertNode( element ) ;
-
-			// Move the selection right after the new element.
-			// DISCUSSION: Should we select the element instead?
-			range.SetStart( element, 4 ) ;
-			range.SetEnd( element, 4 ) ;
-		}
-
-		range.Select() ;
-		range.Release() ;
-
-		// REMOVE IT: The focus should not really be set here. It is up to the
-		// calling code to reset the focus if needed.
-		this.Focus() ;
-
-		return element ;
-	},
-
-	_InsertBlockElement : function( blockElement )
-	{
-	},
-
-	_IsFunctionKey : function( keyCode )
-	{
-		// keys that are captured but do not change editor contents
-		if ( keyCode >= 16 && keyCode <= 20 )
-			// shift, ctrl, alt, pause, capslock
-			return true ;
-		if ( keyCode == 27 || ( keyCode >= 33 && keyCode <= 40 ) )
-			// esc, page up, page down, end, home, left, up, right, down
-			return true ;
-		if ( keyCode == 45 )
-			// insert, no effect on FCKeditor, yet
-			return true ;
-		return false ;
-	},
-
-	_KeyDownListener : function( evt )
-	{
-		if (! evt)
-			evt = FCK.EditorWindow.event ;
-		if ( FCK.EditorWindow )
-		{
-			if ( !FCK._IsFunctionKey(evt.keyCode) // do not capture function key presses, like arrow keys or shift/alt/ctrl
-					&& !(evt.ctrlKey || evt.metaKey) // do not capture Ctrl hotkeys, as they have their snapshot capture logic
-					&& !(evt.keyCode == 46) ) // do not capture Del, it has its own capture logic in fckenterkey.js
-				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( evt )
-	{
-		if ( ! evt )
-			evt = window.event ;
-
-		var keystrokeValue = evt.keyCode ;
-
-		// Pressing <Tab> in source mode should produce a tab space in the text area, not
-		// changing the focus to something else.
-		if ( keystrokeValue == 9 && FCK.EditMode != FCK_EDITMODE_WYSIWYG )
-		{
-			if ( FCKBrowserInfo.IsIE )
-			{
-				var range = document.selection.createRange() ;
-				if ( range.parentElement() != FCK.EditingArea.Textarea )
-					return true ;
-				range.text = '\t' ;
-				range.select() ;
-			}
-			else
-			{
-				var a = [] ;
-				var el = FCK.EditingArea.Textarea ;
-				var selStart = el.selectionStart ;
-				var selEnd = el.selectionEnd ;
-				a.push( el.value.substr(0, selStart ) ) ;
-				a.push( '\t' ) ;
-				a.push( el.value.substr( selEnd ) ) ;
-				el.value = a.join( '' ) ;
-				el.setSelectionRange( selStart + 1, selStart + 1 ) ;
-			}
-
-			if ( evt.preventDefault )
-				return evt.preventDefault() ;
-
-			return evt.returnValue = false ;
-		}
-
-		return true ;
-	}
-} ;
-
-FCK.Events = new FCKEvents( FCK ) ;
-
-// DEPRECATED in favor or "GetData".
-FCK.GetHTML	= FCK.GetXHTML = FCK.GetData ;
-
-// DEPRECATED in favor of "SetData".
-FCK.SetHTML = FCK.SetData ;
-
-// InsertElementAndGetIt and CreateElement are Deprecated : returns the same value as InsertElement.
-FCK.InsertElementAndGetIt = FCK.CreateElement = FCK.InsertElement ;
-
-// Replace all events attributes (like onclick).
-function _FCK_ProtectEvents_ReplaceTags( tagMatch )
-{
-	return tagMatch.replace( FCKRegexLib.EventAttributes, _FCK_ProtectEvents_ReplaceEvents ) ;
-}
-
-// Replace an event attribute with its respective __fckprotectedatt attribute.
-// The original event markup will be encoded and saved as the value of the new
-// attribute.
-function _FCK_ProtectEvents_ReplaceEvents( eventMatch, attName )
-{
-	return ' ' + attName + '_fckprotectedatt="' + encodeURIComponent( eventMatch ) + '"' ;
-}
-
-function _FCK_ProtectEvents_RestoreEvents( match, encodedOriginal )
-{
-	return decodeURIComponent( encodedOriginal ) ;
-}
-
-function _FCK_MouseEventsListener( evt )
-{
-	if ( ! evt )
-		evt = window.event ;
-	if ( evt.type == 'mousedown' )
-		FCK.MouseDownFlag = true ;
-	else if ( evt.type == 'mouseup' )
-		FCK.MouseDownFlag = false ;
-	else if ( evt.type == 'mousemove' )
-		FCK.Events.FireEvent( 'OnMouseMove', evt ) ;
-}
-
-function _FCK_PaddingNodeListener()
-{
-	if ( FCKConfig.EnterMode.IEquals( 'br' ) )
-		return ;
-	FCKDomTools.EnforcePaddingNode( FCK.EditorDocument, FCKConfig.EnterMode ) ;
-
-	if ( ! FCKBrowserInfo.IsIE && FCKDomTools.PaddingNode )
-	{
-		// Prevent the caret from going between the body and the padding node in Firefox.
-		// i.e. <body>|<p></p></body>
-		var sel = FCKSelection.GetSelection() ;
-		if ( sel && sel.rangeCount == 1 )
-		{
-			var range = sel.getRangeAt( 0 ) ;
-			if ( range.collapsed && range.startContainer == FCK.EditorDocument.body && range.startOffset == 0 )
-			{
-				range.selectNodeContents( FCKDomTools.PaddingNode ) ;
-				range.collapse( true ) ;
-				sel.removeAllRanges() ;
-				sel.addRange( range ) ;
-			}
-		}
-	}
-	else if ( FCKDomTools.PaddingNode )
-	{
-		// Prevent the caret from going into an empty body but not into the padding node in IE.
-		// i.e. <body><p></p>|</body>
-		var parentElement = FCKSelection.GetParentElement() ;
-		var paddingNode = FCKDomTools.PaddingNode ;
-		if ( parentElement && parentElement.nodeName.IEquals( 'body' ) )
-		{
-			if ( FCK.EditorDocument.body.childNodes.length == 1
-					&& FCK.EditorDocument.body.firstChild == paddingNode )
-			{
-				/*
-				 * Bug #1764: Don't move the selection if the
-				 * current selection isn't in the editor
-				 * document.
-				 */
-				if ( FCKSelection._GetSelectionDocument( FCK.EditorDocument.selection ) != FCK.EditorDocument )
-					return ;
-
-				var range = FCK.EditorDocument.body.createTextRange() ;
-				var clearContents = false ;
-				if ( !paddingNode.childNodes.firstChild )
-				{
-					paddingNode.appendChild( FCKTools.GetElementDocument( paddingNode ).createTextNode( '\ufeff' ) ) ;
-					clearContents = true ;
-				}
-				range.moveToElementText( paddingNode ) ;
-				range.select() ;
-				if ( clearContents )
-					range.pasteHTML( '' ) ;
-			}
-		}
-	}
-}
-
-function _FCK_EditingArea_OnLoad()
-{
-	// Get the editor's window and document (DOM)
-	FCK.EditorWindow	= FCK.EditingArea.Window ;
-	FCK.EditorDocument	= FCK.EditingArea.Document ;
-
-	if ( FCKBrowserInfo.IsIE )
-		FCKTempBin.ToElements() ;
-
-	FCK.InitializeBehaviors() ;
-
-	// Listen for mousedown and mouseup events for tracking drag and drops.
-	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 )
-	{
-		// #3481: WebKit has a bug with paste where the paste contents may leak
-		// outside table cells. So add padding nodes before and after the paste.
-		FCKTools.AddEventListener( FCK.EditorDocument, 'paste', function( evt )
-		{
-			var range = new FCKDomRange( FCK.EditorWindow );
-			var nodeBefore = FCK.EditorDocument.createTextNode( '\ufeff' );
-			var nodeAfter = FCK.EditorDocument.createElement( 'a' );
-			nodeAfter.id = 'fck_paste_padding';
-			nodeAfter.innerHTML = '&#65279;';
-			range.MoveToSelection();
-			range.DeleteContents();
-
-			// Insert padding nodes.
-			range.InsertNode( nodeBefore );
-			range.Collapse();
-			range.InsertNode( nodeAfter );
-
-			// Move the selection to between the padding nodes.
-			range.MoveToPosition( nodeAfter, 3 );
-			range.Select();
-
-			// Remove the padding nodes after the paste is done.
-			setTimeout( function()
-				{
-					nodeBefore.parentNode.removeChild( nodeBefore );
-					nodeAfter = FCK.EditorDocument.getElementById( 'fck_paste_padding' );
-					nodeAfter.parentNode.removeChild( nodeAfter );
-				}, 0 );
-		} );
-	}
-
-	// Most of the CTRL key combos do not work under Safari for onkeydown and onkeypress (See #1119)
-	// But we can use the keyup event to override some of these...
-	if ( FCKBrowserInfo.IsSafari )
-	{
-		var undoFunc = function( evt )
-		{
-			if ( ! ( evt.ctrlKey || evt.metaKey ) )
-				return ;
-			if ( FCK.EditMode != FCK_EDITMODE_WYSIWYG )
-				return ;
-			switch ( evt.keyCode )
-			{
-				case 89:
-					FCKUndo.Redo() ;
-					break ;
-				case 90:
-					FCKUndo.Undo() ;
-					break ;
-			}
-		}
-
-		FCKTools.AddEventListener( FCK.EditorDocument, 'keyup', undoFunc ) ;
-	}
-
-	// Create the enter key handler
-	FCK.EnterKeyHandler = new FCKEnterKey( FCK.EditorWindow, FCKConfig.EnterMode, FCKConfig.ShiftEnterMode, FCKConfig.TabSpaces ) ;
-
-	// Listen for keystroke events.
-	FCK.KeystrokeHandler.AttachToElement( FCK.EditorDocument ) ;
-
-	if ( FCK._ForceResetIsDirty )
-		FCK.ResetIsDirty() ;
-
-	// This is a tricky thing for IE. In some cases, even if the cursor is
-	// blinking in the editing, the keystroke handler doesn't catch keyboard
-	// events. We must activate the editing area to make it work. (#142).
-	if ( FCKBrowserInfo.IsIE && FCK.HasFocus )
-		FCK.EditorDocument.body.setActive() ;
-
-	FCK.OnAfterSetHTML() ;
-
-	// Restore show blocks status.
-	FCKCommands.GetCommand( 'ShowBlocks' ).RestoreState() ;
-
-	// Check if it is not a startup call, otherwise complete the startup.
-	if ( FCK.Status != FCK_STATUS_NOTLOADED )
-		return ;
-
-	FCK.SetStatus( FCK_STATUS_ACTIVE ) ;
-}
-
-function _FCK_GetEditorAreaStyleTags()
-{
-	return FCKTools.GetStyleHtml( FCKConfig.EditorAreaCSS ) +
-		FCKTools.GetStyleHtml( FCKConfig.EditorAreaStyles ) ;
-}
-
-function _FCK_KeystrokeHandler_OnKeystroke( keystroke, keystrokeValue )
-{
-	if ( FCK.Status != FCK_STATUS_COMPLETE )
-		return false ;
-
-	if ( FCK.EditMode == FCK_EDITMODE_WYSIWYG )
-	{
-		switch ( keystrokeValue )
-		{
-			case 'Paste' :
-				return !FCK.Paste() ;
-
-			case 'Cut' :
-				FCKUndo.SaveUndoStep() ;
-				return false ;
-		}
-	}
-	else
-	{
-		// In source mode, some actions must have their default behavior.
-		if ( keystrokeValue.Equals( 'Paste', 'Undo', 'Redo', 'SelectAll', 'Cut' ) )
-			return false ;
-	}
-
-	// The return value indicates if the default behavior of the keystroke must
-	// be cancelled. Let's do that only if the Execute() call explicitly returns "false".
-	var oCommand = FCK.Commands.GetCommand( keystrokeValue ) ;
-
-	// If the command is disabled then ignore the keystroke
-	if ( oCommand.GetState() == FCK_TRISTATE_DISABLED )
-		return false ;
-
-	return ( oCommand.Execute.apply( oCommand, FCKTools.ArgumentsToArray( arguments, 2 ) ) !== false ) ;
-}
-
-// Set the FCK.LinkedField reference to the field that will be used to post the
-// editor data.
-(function()
-{
-	// There is a bug on IE... getElementById returns any META tag that has the
-	// name set to the ID you are looking for. So the best way in to get the array
-	// by names and look for the correct one.
-	// As ASP.Net generates a ID that is different from the Name, we must also
-	// look for the field based on the ID (the first one is the ID).
-
-	var oDocument = window.parent.document ;
-
-	// Try to get the field using the ID.
-	var eLinkedField = oDocument.getElementById( FCK.Name ) ;
-
-	var i = 0;
-	while ( eLinkedField || i == 0 )
-	{
-		if ( eLinkedField && eLinkedField.tagName.toLowerCase().Equals( 'input', 'textarea' ) )
-		{
-			FCK.LinkedField = eLinkedField ;
-			break ;
-		}
-
-		eLinkedField = oDocument.getElementsByName( FCK.Name )[i++] ;
-	}
-})() ;
-
-var FCKTempBin =
-{
-	Elements : new Array(),
-
-	AddElement : function( element )
-	{
-		var iIndex = this.Elements.length ;
-		this.Elements[ iIndex ] = element ;
-		return iIndex ;
-	},
-
-	RemoveElement : function( index )
-	{
-		var e = this.Elements[ index ] ;
-		this.Elements[ index ] = 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 node = FCK.EditorDocument.createElement( 'div' ) ;
-		for ( var i = 0 ; i < this.Elements.length ; i++ )
-		{
-			if ( this.Elements[i].isHtml )
-			{
-				node.innerHTML = this.Elements[i] ;
-				this.Elements[i] = node.firstChild.removeChild( node.firstChild.lastChild ) ;
-			}
-		}
-	}
-} ;
-
-
-
-// # Focus Manager: Manages the focus in the editor.
-var FCKFocusManager = FCK.FocusManager =
-{
-	IsLocked : false,
-
-	AddWindow : function( win, sendToEditingArea )
-	{
-		var oTarget ;
-
-		if ( FCKBrowserInfo.IsIE )
-			oTarget = win.nodeType == 1 ? win : win.frameElement ? win.frameElement : win.document ;
-		else if ( FCKBrowserInfo.IsSafari )
-			oTarget = win ;
-		else
-			oTarget = win.document ;
-
-		FCKTools.AddEventListener( oTarget, 'blur', FCKFocusManager_Win_OnBlur ) ;
-		FCKTools.AddEventListener( oTarget, 'focus', sendToEditingArea ? FCKFocusManager_Win_OnFocus_Area : FCKFocusManager_Win_OnFocus ) ;
-	},
-
-	RemoveWindow : function( win )
-	{
-		if ( FCKBrowserInfo.IsIE )
-			oTarget = win.nodeType == 1 ? win : win.frameElement ? win.frameElement : win.document ;
-		else
-			oTarget = win.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()
-{
-	// Check if we are already focusing the editor (to avoid loops).
-	if ( FCKFocusManager._IsFocusing )
-		return ;
-
-	FCKFocusManager._IsFocusing = true ;
-
-	FCK.Focus() ;
-	FCKFocusManager_Win_OnFocus() ;
-
-	// The above FCK.Focus() call may trigger other focus related functions.
-	// So, to avoid a loop, we delay the focusing mark removal, so it get
-	// executed after all othre functions have been run.
-	FCKTools.RunFunction( function()
-		{
-			delete FCKFocusManager._IsFocusing ;
-		} ) ;
-}
-
-function FCKFocusManager_Win_OnFocus()
-{
-	FCKFocusManager._ResetTimer() ;
-
-	if ( !FCK.HasFocus && !FCKFocusManager.IsLocked )
-	{
-		FCK.HasFocus = true ;
-		FCK.Events.FireEvent( "OnFocus" ) ;
-	}
-}
-
-/*
- * #1633 : Protect the editor iframe from external styles.
- * Notice that we can't use FCKTools.ResetStyles here since FCKTools isn't
- * loaded yet.
- */
-(function()
-{
-	var el = window.frameElement ;
-	var width = el.width ;
-	var height = el.height ;
-	if ( /^\d+$/.test( width ) ) width += 'px' ;
-	if ( /^\d+$/.test( height ) ) height += 'px' ;
-	var style = el.style ;
-	style.border = style.padding = style.margin = 0 ;
-	style.backgroundColor = 'transparent';
-	style.backgroundImage = 'none';
-	style.width = width ;
-	style.height = height ;
-})() ;

+ 0 - 345
main/inc/lib/fckeditor/editor/_source/internals/fck_contextmenu.js

@@ -1,345 +0,0 @@
-/*
- * FCKeditor - The text editor for Internet - http://www.fckeditor.net
- * Copyright (C) 2003-2010 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 ==
- *
- * Defines the FCK.ContextMenu object that is responsible for all
- * Context Menu operations in the editing area.
- */
-
-FCK.ContextMenu = new Object() ;
-FCK.ContextMenu.Listeners = new Array() ;
-
-FCK.ContextMenu.RegisterListener = function( listener )
-{
-	if ( listener )
-		this.Listeners.push( listener ) ;
-}
-
-function FCK_ContextMenu_Init()
-{
-	var oInnerContextMenu = FCK.ContextMenu._InnerContextMenu = new FCKContextMenu( FCKBrowserInfo.IsIE ? window : window.parent, FCKLang.Dir ) ;
-	oInnerContextMenu.CtrlDisable	= FCKConfig.BrowserContextMenuOnCtrl ;
-	oInnerContextMenu.OnBeforeOpen	= FCK_ContextMenu_OnBeforeOpen ;
-	oInnerContextMenu.OnItemClick	= FCK_ContextMenu_OnItemClick ;
-
-	// Get the registering function.
-	var oMenu = FCK.ContextMenu ;
-
-	// Register all configured context menu listeners.
-	for ( var i = 0 ; i < FCKConfig.ContextMenu.length ; i++ )
-		oMenu.RegisterListener( FCK_ContextMenu_GetListener( FCKConfig.ContextMenu[i] ) ) ;
-}
-
-function FCK_ContextMenu_GetListener( listenerName )
-{
-	switch ( listenerName )
-	{
-		case 'Generic' :
-			return {
-			AddItems : function( menu, tag, tagName )
-			{
-				menu.AddItem( 'Cut'		, FCKLang.Cut	, 7, FCKCommands.GetCommand( 'Cut' ).GetState() == FCK_TRISTATE_DISABLED ) ;
-				menu.AddItem( 'Copy'	, FCKLang.Copy	, 8, FCKCommands.GetCommand( 'Copy' ).GetState() == FCK_TRISTATE_DISABLED ) ;
-				menu.AddItem( 'Paste'	, FCKLang.Paste	, 9, FCKCommands.GetCommand( 'Paste' ).GetState() == FCK_TRISTATE_DISABLED ) ;
-			}} ;
-
-		case 'Table' :
-			return {
-			AddItems : function( menu, tag, tagName )
-			{
-				var bIsTable	= ( tagName == 'TABLE' ) ;
-				var bIsCell		= ( !bIsTable && FCKSelection.HasAncestorNode( 'TABLE' ) ) ;
-
-				if ( bIsCell )
-				{
-					menu.AddSeparator() ;
-					var oItem = menu.AddItem( 'Cell'	, FCKLang.CellCM ) ;
-					oItem.AddItem( 'TableInsertCellBefore'	, FCKLang.InsertCellBefore, 69 ) ;
-					oItem.AddItem( 'TableInsertCellAfter'	, FCKLang.InsertCellAfter, 58 ) ;
-					oItem.AddItem( 'TableDeleteCells'	, FCKLang.DeleteCells, 59 ) ;
-					if ( FCKBrowserInfo.IsGecko )
-						oItem.AddItem( 'TableMergeCells'	, FCKLang.MergeCells, 60,
-							FCKCommands.GetCommand( 'TableMergeCells' ).GetState() == FCK_TRISTATE_DISABLED ) ;
-					else
-					{
-						oItem.AddItem( 'TableMergeRight'	, FCKLang.MergeRight, 60,
-							FCKCommands.GetCommand( 'TableMergeRight' ).GetState() == FCK_TRISTATE_DISABLED ) ;
-						oItem.AddItem( 'TableMergeDown'		, FCKLang.MergeDown, 60,
-							FCKCommands.GetCommand( 'TableMergeDown' ).GetState() == FCK_TRISTATE_DISABLED ) ;
-					}
-					oItem.AddItem( 'TableHorizontalSplitCell'	, FCKLang.HorizontalSplitCell, 61,
-						FCKCommands.GetCommand( 'TableHorizontalSplitCell' ).GetState() == FCK_TRISTATE_DISABLED ) ;
-					oItem.AddItem( 'TableVerticalSplitCell'	, FCKLang.VerticalSplitCell, 61,
-						FCKCommands.GetCommand( 'TableVerticalSplitCell' ).GetState() == FCK_TRISTATE_DISABLED ) ;
-					oItem.AddSeparator() ;
-					oItem.AddItem( 'TableCellProp'		, FCKLang.CellProperties, 57,
-						FCKCommands.GetCommand( 'TableCellProp' ).GetState() == FCK_TRISTATE_DISABLED ) ;
-
-					menu.AddSeparator() ;
-					oItem = menu.AddItem( 'Row'			, FCKLang.RowCM ) ;
-					oItem.AddItem( 'TableInsertRowBefore'		, FCKLang.InsertRowBefore, 70 ) ;
-					oItem.AddItem( 'TableInsertRowAfter'		, FCKLang.InsertRowAfter, 62 ) ;
-					oItem.AddItem( 'TableDeleteRows'	, FCKLang.DeleteRows, 63 ) ;
-
-					menu.AddSeparator() ;
-					oItem = menu.AddItem( 'Column'		, FCKLang.ColumnCM ) ;
-					oItem.AddItem( 'TableInsertColumnBefore', FCKLang.InsertColumnBefore, 71 ) ;
-					oItem.AddItem( 'TableInsertColumnAfter'	, FCKLang.InsertColumnAfter, 64 ) ;
-					oItem.AddItem( 'TableDeleteColumns'	, FCKLang.DeleteColumns, 65 ) ;
-				}
-
-				if ( bIsTable || bIsCell )
-				{
-					menu.AddSeparator() ;
-					menu.AddItem( 'TableDelete'			, FCKLang.TableDelete ) ;
-					menu.AddItem( 'TableProp'			, FCKLang.TableProperties, 39 ) ;
-				}
-			}} ;
-
-		case 'Link' :
-			return {
-			AddItems : function( menu, tag, tagName )
-			{
-				var bInsideLink = ( tagName == 'A' || FCKSelection.HasAncestorNode( 'A' ) ) ;
-
-				if ( bInsideLink || FCK.GetNamedCommandState( 'Unlink' ) != FCK_TRISTATE_DISABLED )
-				{
-					// Go up to the anchor to test its properties
-					var oLink = FCKSelection.MoveToAncestorNode( 'A' ) ;
-					var bIsAnchor = ( oLink && oLink.name.length > 0 && oLink.href.length == 0 ) ;
-					// If it isn't a link then don't add the Link context menu
-					if ( bIsAnchor )
-						return ;
-
-					menu.AddSeparator() ;
-					menu.AddItem( 'VisitLink', FCKLang.VisitLink ) ;
-					menu.AddSeparator() ;
-					if ( bInsideLink )
-						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 )
-			{
-				// Go up to the anchor to test its properties
-				var oLink = FCKSelection.MoveToAncestorNode( 'A' ) ;
-				var bIsAnchor = ( oLink && oLink.name.length > 0 ) ;
-
-				if ( bIsAnchor || ( 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 currentBlocks = FCKDomTools.GetSelectedDivContainers() ;
-
-				if ( currentBlocks.length > 0 )
-				{
-					menu.AddSeparator() ;
-					menu.AddItem( 'EditDiv', FCKLang.EditDiv, 75 ) ;
-					menu.AddItem( 'DeleteDiv', FCKLang.DeleteDiv, 76 ) ;
-				}
-			}} ;
-
-	}
-	return null ;
-}
-
-function FCK_ContextMenu_OnBeforeOpen()
-{
-	// Update the UI.
-	FCK.Events.FireEvent( 'OnSelectionChange' ) ;
-
-	// Get the actual selected tag (if any).
-	var oTag, sTagName ;
-
-	// The extra () is to avoid a warning with strict error checking. This is ok.
-	if ( (oTag = FCKSelection.GetSelectedElement()) )
-		sTagName = oTag.tagName ;
-
-	// Cleanup the current menu items.
-	var oMenu = FCK.ContextMenu._InnerContextMenu ;
-	oMenu.RemoveAllItems() ;
-
-	// Loop through the listeners.
-	var aListeners = FCK.ContextMenu.Listeners ;
-	for ( var i = 0 ; i < aListeners.length ; i++ )
-		aListeners[i].AddItems( oMenu, oTag, sTagName ) ;
-}
-
-function FCK_ContextMenu_OnItemClick( item )
-{
-	// IE might work incorrectly if we refocus the editor #798
-	if ( !FCKBrowserInfo.IsIE )
-		FCK.Focus() ;
-
-	FCKCommands.GetCommand( item.Name ).Execute( item.CustomData ) ;
-}

+ 0 - 507
main/inc/lib/fckeditor/editor/_source/internals/fck_gecko.js

@@ -1,507 +0,0 @@
-/*
- * FCKeditor - The text editor for Internet - http://www.fckeditor.net
- * Copyright (C) 2003-2010 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 ==
- *
- * Creation and initialization of the "FCK" object. This is the main
- * object that represents an editor instance.
- * (Gecko specific implementations)
- */
-
-FCK.Description = "FCKeditor for Gecko Browsers" ;
-
-FCK.InitializeBehaviors = function()
-{
-	// When calling "SetData", the editing area IFRAME gets a fixed height. So we must recalculate it.
-	if ( window.onresize )		// Not for Safari/Opera.
-		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 text = evt.dataTransfer.getData( 'Text' ) ;
-				text = FCKTools.HTMLEncode( text ) ;
-				text = FCKTools.ProcessLineBreaks( window, FCKConfig, text ) ;
-				FCK.InsertHtml( text ) ;
-			}
-			else if ( FCKConfig.ShowDropDialog )
-				FCK.PasteAsPlainText() ;
-
-			evt.preventDefault() ;
-			evt.stopPropagation() ;
-		}
-	}
-
-	this._ExecCheckCaret = function( evt )
-	{
-		if ( FCK.EditMode != FCK_EDITMODE_WYSIWYG )
-			return ;
-
-		if ( evt.type == 'keypress' )
-		{
-			var keyCode = evt.keyCode ;
-			// ignore if positioning key is not pressed.
-			// left or up arrow keys need to be processed as well, since <a> links can be expanded in Gecko's editor
-			// when the caret moved left or up from another block element below.
-			if ( keyCode < 33 || keyCode > 40 )
-				return ;
-		}
-
-		var blockEmptyStop = function( node )
-		{
-			if ( node.nodeType != 1 )
-				return false ;
-			var tag = node.tagName.toLowerCase() ;
-			return ( FCKListsLib.BlockElements[tag] || FCKListsLib.EmptyElements[tag] ) ;
-		}
-
-		var moveCursor = function()
-		{
-			var selection = FCKSelection.GetSelection() ;
-			var range = selection.getRangeAt(0) ;
-			if ( ! range || ! range.collapsed )
-				return ;
-
-			var node = range.endContainer ;
-
-			// only perform the patched behavior if we're at the end of a text node.
-			if ( node.nodeType != 3 )
-				return ;
-
-			if ( node.nodeValue.length != range.endOffset )
-				return ;
-
-			// only perform the patched behavior if we're in an <a> tag, or the End key is pressed.
-			var parentTag = node.parentNode.tagName.toLowerCase() ;
-			if ( ! (  parentTag == 'a' || ( !FCKBrowserInfo.IsOpera && String(node.parentNode.contentEditable) == 'false' ) ||
-					( ! ( FCKListsLib.BlockElements[parentTag] || FCKListsLib.NonEmptyBlockElements[parentTag] )
-					  && keyCode == 35 ) ) )
-				return ;
-
-			// our caret has moved to just after the last character of a text node under an unknown tag, how to proceed?
-			// first, see if there are other text nodes by DFS walking from this text node.
-			// 	- if the DFS has scanned all nodes under my parent, then go the next step.
-			//	- if there is a text node after me but still under my parent, then do nothing and return.
-			var nextTextNode = FCKTools.GetNextTextNode( node, node.parentNode, blockEmptyStop ) ;
-			if ( nextTextNode )
-				return ;
-
-			// we're pretty sure we need to move the caret forcefully from here.
-			range = FCK.EditorDocument.createRange() ;
-
-			nextTextNode = FCKTools.GetNextTextNode( node, node.parentNode.parentNode, blockEmptyStop ) ;
-			if ( nextTextNode )
-			{
-				// Opera thinks the dummy empty text node we append beyond the end of <a> nodes occupies a caret
-				// position. So if the user presses the left key and we reset the caret position here, the user
-				// wouldn't be able to go back.
-				if ( FCKBrowserInfo.IsOpera && keyCode == 37 )
-					return ;
-
-				// now we want to get out of our current parent node, adopt the next parent, and move the caret to
-				// the appropriate text node under our new parent.
-				// our new parent might be our current parent's siblings if we are lucky.
-				range.setStart( nextTextNode, 0 ) ;
-				range.setEnd( nextTextNode, 0 ) ;
-			}
-			else
-			{
-				// no suitable next siblings under our grandparent! what to do next?
-				while ( node.parentNode
-					&& node.parentNode != FCK.EditorDocument.body
-					&& node.parentNode != FCK.EditorDocument.documentElement
-					&& node == node.parentNode.lastChild
-					&& ( ! FCKListsLib.BlockElements[node.parentNode.tagName.toLowerCase()]
-					  && ! FCKListsLib.NonEmptyBlockElements[node.parentNode.tagName.toLowerCase()] ) )
-					node = node.parentNode ;
-
-
-				if ( FCKListsLib.BlockElements[ parentTag ]
-						|| FCKListsLib.EmptyElements[ parentTag ]
-						|| node == FCK.EditorDocument.body )
-				{
-					// if our parent is a block node, move to the end of our parent.
-					range.setStart( node, node.childNodes.length ) ;
-					range.setEnd( node, node.childNodes.length ) ;
-				}
-				else
-				{
-					// things are a little bit more interesting if our parent is not a block node
-					// due to the weired ways how Gecko's caret acts...
-					var stopNode = node.nextSibling ;
-
-					// find out the next block/empty element at our grandparent, we'll
-					// move the caret just before it.
-					while ( stopNode )
-					{
-						if ( stopNode.nodeType != 1 )
-						{
-							stopNode = stopNode.nextSibling ;
-							continue ;
-						}
-
-						var stopTag = stopNode.tagName.toLowerCase() ;
-						if ( FCKListsLib.BlockElements[stopTag] || FCKListsLib.EmptyElements[stopTag]
-							|| FCKListsLib.NonEmptyBlockElements[stopTag] )
-							break ;
-						stopNode = stopNode.nextSibling ;
-					}
-
-					// note that the dummy marker below is NEEDED, otherwise the caret's behavior will
-					// be broken in Gecko.
-					var marker = FCK.EditorDocument.createTextNode( '' ) ;
-					if ( stopNode )
-						node.parentNode.insertBefore( marker, stopNode ) ;
-					else
-						node.parentNode.appendChild( marker ) ;
-					range.setStart( marker, 0 ) ;
-					range.setEnd( marker, 0 ) ;
-				}
-			}
-
-			selection.removeAllRanges() ;
-			selection.addRange( range ) ;
-			FCK.Events.FireEvent( "OnSelectionChange" ) ;
-		}
-
-		setTimeout( moveCursor, 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 ) ;
-
-	// On Gecko, firing the "OnSelectionChange" event on every key press started to be too much
-	// slow. So, a timer has been implemented to solve performance issues when typing to quickly.
-	this.EditorDocument.addEventListener( 'keyup', this.ExecOnSelectionChangeTimer, false ) ;
-
-	this._DblClickListener = function( e )
-	{
-		FCK.OnDoubleClick( e.target ) ;
-		e.stopPropagation() ;
-	}
-	this.EditorDocument.addEventListener( 'dblclick', this._DblClickListener, true ) ;
-
-	// Record changes for the undo system when there are key down events.
-	this.EditorDocument.addEventListener( 'keydown', this._KeyDownListener, false ) ;
-
-	// Hooks for data object drops
-	if ( FCKBrowserInfo.IsGecko )
-	{
-		this.EditorWindow.addEventListener( 'dragdrop', this._ExecDrop, true ) ;
-	}
-	else if ( FCKBrowserInfo.IsSafari )
-	{
-		this.EditorDocument.addEventListener( 'dragover', function ( evt )
-				{ if ( !FCK.MouseDownFlag && FCK.Config.ForcePasteAsPlainText ) evt.returnValue = false ; }, true ) ;
-		this.EditorDocument.addEventListener( 'drop', this._ExecDrop, true ) ;
-		this.EditorDocument.addEventListener( 'mousedown',
-			function( ev )
-			{
-				var element = ev.srcElement ;
-
-				if ( element.nodeName.IEquals( 'IMG', 'HR', 'INPUT', 'TEXTAREA', 'SELECT' ) )
-				{
-					FCKSelection.SelectNode( element ) ;
-				}
-			}, 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 ) ;
-	}
-
-	// Kludge for buggy Gecko caret positioning logic (Bug #393 and #1056)
-	if ( FCKBrowserInfo.IsGecko || FCKBrowserInfo.IsOpera )
-	{
-		this.EditorDocument.addEventListener( 'keypress', this._ExecCheckCaret, false ) ;
-		this.EditorDocument.addEventListener( 'click', this._ExecCheckCaret, false ) ;
-	}
-
-	// Reset the context menu.
-	FCK.ContextMenu._InnerContextMenu.SetMouseClickWindow( FCK.EditorWindow ) ;
-	FCK.ContextMenu._InnerContextMenu.AttachToElement( FCK.EditorDocument ) ;
-}
-
-FCK.MakeEditable = function()
-{
-	this.EditingArea.MakeEditable() ;
-}
-
-// Disable the context menu in the editor (outside the editing area).
-function Document_OnContextMenu( e )
-{
-	if ( !e.target._FCKShowContextMenu )
-		e.preventDefault() ;
-}
-document.oncontextmenu = Document_OnContextMenu ;
-
-// GetNamedCommandState overload for Gecko.
-FCK._BaseGetNamedCommandState = FCK.GetNamedCommandState ;
-FCK.GetNamedCommandState = function( commandName )
-{
-	switch ( commandName )
-	{
-		case 'Unlink' :
-			return FCKSelection.HasAncestorNode('A') ? FCK_TRISTATE_OFF : FCK_TRISTATE_DISABLED ;
-		default :
-			return FCK._BaseGetNamedCommandState( commandName ) ;
-	}
-}
-
-// Named commands to be handled by this browsers specific implementation.
-FCK.RedirectNamedCommands =
-{
-	Print	: true,
-	Paste	: true
-} ;
-
-// ExecuteNamedCommand overload for Gecko.
-FCK.ExecuteRedirectedNamedCommand = function( commandName, commandParameter )
-{
-	switch ( commandName )
-	{
-		case 'Print' :
-			FCK.EditorWindow.print() ;
-			break ;
-		case 'Paste' :
-			try
-			{
-				// Force the paste dialog for Safari (#50).
-				if ( FCKBrowserInfo.IsSafari )
-					throw '' ;
-
-				if ( FCK.Paste() )
-					FCK.ExecuteNamedCommand( 'Paste', null, true ) ;
-			}
-			catch (e)	{
-				if ( FCKConfig.ForcePasteAsPlainText )
-					FCK.PasteAsPlainText() ;
-				else
-					FCKDialog.OpenDialog( 'FCKDialog_Paste', FCKLang.Paste, 'dialog/fck_paste.html', 400, 330, 'Security' ) ;
-			}
-			break ;
-		default :
-			FCK.ExecuteNamedCommand( commandName, commandParameter ) ;
-	}
-}
-
-FCK._ExecPaste = function()
-{
-	// Save a snapshot for undo before actually paste the text
-	FCKUndo.SaveUndoStep() ;
-
-	if ( FCKConfig.ForcePasteAsPlainText )
-	{
-		FCK.PasteAsPlainText() ;
-		return false ;
-	}
-
-	/* For now, the AutoDetectPasteFromWord feature is IE only. */
-	return true ;
-}
-
-//**
-// FCK.InsertHtml: Inserts HTML at the current cursor location. Deletes the
-// selected content if any.
-FCK.InsertHtml = function( html )
-{
-	var doc = FCK.EditorDocument,
-		range;
-
-	html = FCKConfig.ProtectedSource.Protect( html ) ;
-	html = FCK.ProtectEvents( html ) ;
-	html = FCK.ProtectUrls( html ) ;
-	html = FCK.ProtectTags( html ) ;
-
-	// Save an undo snapshot first.
-	FCKUndo.SaveUndoStep() ;
-
-	if ( FCKBrowserInfo.IsGecko )
-	{
-		html = html.replace( /&nbsp;$/, '$&<span _fcktemp="1"/>' ) ;
-
-		var docFrag = new FCKDocumentFragment( this.EditorDocument ) ;
-		docFrag.AppendHtml( html ) ;
-
-		var lastNode = docFrag.RootNode.lastChild ;
-
-		range = new FCKDomRange( this.EditorWindow ) ;
-		range.MoveToSelection() ;
-
-		// If the first element (if exists) of the document fragment is a block
-		// element, then split the current block. (#1537)
-		var currentNode = docFrag.RootNode.firstChild ;
-		while ( currentNode && currentNode.nodeType != 1 )
-			currentNode = currentNode.nextSibling ;
-
-		if ( currentNode && FCKListsLib.BlockElements[ currentNode.nodeName.toLowerCase() ] )
-			range.SplitBlock() ;
-
-		range.DeleteContents() ;
-		range.InsertNode( docFrag.RootNode ) ;
-
-		range.MoveToPosition( lastNode, 4 ) ;
-	}
-	else
-		doc.execCommand( 'inserthtml', false, html ) ;
-
-	this.Focus() ;
-
-	// Save the caret position before calling document processor.
-	if ( !range )
-	{
-		range = new FCKDomRange( this.EditorWindow ) ;
-		range.MoveToSelection() ;
-	}
-	var bookmark = range.CreateBookmark() ;
-
-	FCKDocumentProcessor.Process( doc ) ;
-
-	// Restore caret position, ignore any errors in case the document
-	// processor removed the bookmark <span>s for some reason.
-	try
-	{
-		range.MoveToBookmark( bookmark ) ;
-		range.Select() ;
-	}
-	catch ( e ) {}
-
-	// For some strange reason the SaveUndoStep() call doesn't activate the undo button at the first InsertHtml() call.
-	this.Events.FireEvent( "OnSelectionChange" ) ;
-}
-
-FCK.PasteAsPlainText = function()
-{
-	// TODO: Implement the "Paste as Plain Text" code.
-
-	// If the function is called immediately Firefox 2 does automatically paste the contents as soon as the new dialog is created
-	// so we run it in a Timeout and the paste event can be cancelled
-	FCKTools.RunFunction( FCKDialog.OpenDialog, FCKDialog, ['FCKDialog_Paste', FCKLang.PasteAsText, 'dialog/fck_paste.html', 400, 330, 'PlainText'] ) ;
-
-/*
-	var sText = FCKTools.HTMLEncode( clipboardData.getData("Text") ) ;
-	sText = sText.replace( /\n/g, '<BR>' ) ;
-	this.InsertHtml( sText ) ;
-*/
-}
-/*
-FCK.PasteFromWord = function()
-{
-	// TODO: Implement the "Paste as Plain Text" code.
-
-	FCKDialog.OpenDialog( 'FCKDialog_Paste', FCKLang.PasteFromWord, 'dialog/fck_paste.html', 400, 330, 'Word' ) ;
-
-//	FCK.CleanAndPaste( FCK.GetClipboardHTML() ) ;
-}
-*/
-FCK.GetClipboardHTML = function()
-{
-	return '' ;
-}
-
-FCK.CreateLink = function( url, noUndo )
-{
-	// Creates the array that will be returned. It contains one or more created links (see #220).
-	var aCreatedLinks = new Array() ;
-
-	// Only for Safari, a collapsed selection may create a link. All other
-	// browser will have no links created. So, we check it here and return
-	// immediatelly, having the same cross browser behavior.
-	if ( FCKSelection.GetSelection().isCollapsed )
-		return aCreatedLinks ;
-
-	FCK.ExecuteNamedCommand( 'Unlink', null, false, !!noUndo ) ;
-
-	if ( url.length > 0 )
-	{
-		// Generate a temporary name for the link.
-		var sTempUrl = 'javascript:void(0);/*' + ( new Date().getTime() ) + '*/' ;
-
-		// Use the internal "CreateLink" command to create the link.
-		FCK.ExecuteNamedCommand( 'CreateLink', sTempUrl, false, !!noUndo ) ;
-
-		// Retrieve the just created links using XPath.
-		var oLinksInteractor = this.EditorDocument.evaluate("//a[@href='" + sTempUrl + "']", this.EditorDocument.body, null, XPathResult.UNORDERED_NODE_SNAPSHOT_TYPE, null) ;
-
-		// Add all links to the returning array.
-		for ( var i = 0 ; i < oLinksInteractor.snapshotLength ; i++ )
-		{
-			var oLink = oLinksInteractor.snapshotItem( i ) ;
-			oLink.href = url ;
-
-			aCreatedLinks.push( oLink ) ;
-		}
-	}
-
-	return aCreatedLinks ;
-}
-
-FCK._FillEmptyBlock = function( emptyBlockNode )
-{
-	if ( ! emptyBlockNode || emptyBlockNode.nodeType != 1 )
-		return ;
-	var nodeTag = emptyBlockNode.tagName.toLowerCase() ;
-	if ( nodeTag != 'p' && nodeTag != 'div' )
-		return ;
-	if ( emptyBlockNode.firstChild )
-		return ;
-	FCKTools.AppendBogusBr( emptyBlockNode ) ;
-}
-
-FCK._ExecCheckEmptyBlock = function()
-{
-	FCK._FillEmptyBlock( FCK.EditorDocument.body.firstChild ) ;
-	var sel = FCKSelection.GetSelection() ;
-	if ( !sel || sel.rangeCount < 1 )
-		return ;
-	var range = sel.getRangeAt( 0 );
-	FCK._FillEmptyBlock( range.startContainer ) ;
-}

+ 0 - 466
main/inc/lib/fckeditor/editor/_source/internals/fck_ie.js

@@ -1,466 +0,0 @@
-/*
- * FCKeditor - The text editor for Internet - http://www.fckeditor.net
- * Copyright (C) 2003-2010 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 ==
- *
- * Creation and initialization of the "FCK" object. This is the main
- * object that represents an editor instance.
- * (IE specific implementations)
- */
-
-FCK.Description = "FCKeditor for Internet Explorer 5.5+" ;
-
-FCK._GetBehaviorsStyle = function()
-{
-	if ( !FCK._BehaviorsStyle )
-	{
-		var sBasePath = FCKConfig.BasePath ;
-		var sTableBehavior = '' ;
-		var sStyle ;
-
-		// The behaviors should be pointed using the BasePath to avoid security
-		// errors when using a different BaseHref.
-		sStyle = '<style type="text/css" _fcktemp="true">' ;
-
-		if ( FCKConfig.ShowBorders )
-			sTableBehavior = 'url(' + sBasePath + 'css/behaviors/showtableborders.htc)' ;
-
-		// Disable resize handlers.
-		sStyle += 'INPUT,TEXTAREA,SELECT,.FCK__Anchor,.FCK__PageBreak,.FCK__InputHidden' ;
-
-		if ( FCKConfig.DisableObjectResizing )
-		{
-			sStyle += ',IMG' ;
-			sTableBehavior += ' url(' + sBasePath + 'css/behaviors/disablehandles.htc)' ;
-		}
-
-		sStyle += ' { behavior: url(' + sBasePath + 'css/behaviors/disablehandles.htc) ; }' ;
-
-		if ( sTableBehavior.length > 0 )
-			sStyle += 'TABLE { behavior: ' + sTableBehavior + ' ; }' ;
-
-		sStyle += '</style>' ;
-		FCK._BehaviorsStyle = sStyle ;
-	}
-
-	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 body = FCK.EditorDocument.body ;
-
-	body.detachEvent( 'onpaste', Doc_OnPaste ) ;
-
-	var ret = FCK.Paste( !FCKConfig.ForcePasteAsPlainText && !FCKConfig.AutoDetectPasteFromWord ) ;
-
-	body.attachEvent( 'onpaste', Doc_OnPaste ) ;
-
-	return ret ;
-}
-
-function Doc_OnDblClick()
-{
-	FCK.OnDoubleClick( FCK.EditorWindow.event.srcElement ) ;
-	FCK.EditorWindow.event.cancelBubble = true ;
-}
-
-function Doc_OnSelectionChange()
-{
-	// Don't fire the event if no document is loaded.
-	if ( !FCK.IsSelectionChangeLocked && FCK.EditorDocument )
-		FCK.Events.FireEvent( "OnSelectionChange" ) ;
-}
-
-function Doc_OnDrop()
-{
-	if ( FCK.MouseDownFlag )
-	{
-		FCK.MouseDownFlag = false ;
-		return ;
-	}
-
-	if ( FCKConfig.ForcePasteAsPlainText )
-	{
-		var evt = FCK.EditorWindow.event ;
-
-		if ( FCK._CheckIsPastingEnabled() || FCKConfig.ShowDropDialog )
-			FCK.PasteAsPlainText( evt.dataTransfer.getData( 'Text' ) ) ;
-
-		evt.returnValue = false ;
-		evt.cancelBubble = true ;
-	}
-}
-
-FCK.InitializeBehaviors = function( dontReturn )
-{
-	// Set the focus to the editable area when clicking in the document area.
-	// TODO: The cursor must be positioned at the end.
-	this.EditorDocument.attachEvent( 'onmouseup', Doc_OnMouseUp ) ;
-
-	// Intercept pasting operations
-	this.EditorDocument.body.attachEvent( 'onpaste', Doc_OnPaste ) ;
-
-	// Intercept drop operations
-	this.EditorDocument.body.attachEvent( 'ondrop', Doc_OnDrop ) ;
-
-	// Reset the context menu.
-	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() ; } ) ;
-
-	// Catch cursor selection changes.
-	this.EditorDocument.attachEvent("onselectionchange", Doc_OnSelectionChange ) ;
-
-	FCKTools.AddEventListener( FCK.EditorDocument, 'mousedown', Doc_OnMouseDown ) ;
-}
-
-FCK.InsertHtml = function( html )
-{
-	html = FCKConfig.ProtectedSource.Protect( html ) ;
-	html = FCK.ProtectEvents( html ) ;
-	html = FCK.ProtectUrls( html ) ;
-	html = FCK.ProtectTags( html ) ;
-
-//	FCK.Focus() ;
-	FCKSelection.Restore() ;
-	FCK.EditorWindow.focus() ;
-
-	FCKUndo.SaveUndoStep() ;
-
-	// Gets the actual selection.
-	var oSel = FCKSelection.GetSelection() ;
-
-	// Deletes the actual selection contents.
-	if ( oSel.type.toLowerCase() == 'control' )
-		oSel.clear() ;
-
-	// Using the following trick, any comment in the beginning of the HTML will
-	// be preserved.
-	html = '<span id="__fakeFCKRemove__" style="display:none;">fakeFCKRemove</span>' + html ;
-
-	// Insert the HTML.
-	oSel.createRange().pasteHTML( html ) ;
-
-	// Remove the fake node
-	var fake = FCK.EditorDocument.getElementById('__fakeFCKRemove__') ;
-	// If the span is the only child of a node (so the inserted HTML is beyond that),
-	// remove also that parent that isn't needed. #1537
-	if (fake.parentNode.childNodes.length == 1)
-		fake = fake.parentNode ;
-	fake.removeNode( true ) ;
-
-	FCKDocumentProcessor.Process( FCK.EditorDocument ) ;
-
-	// For some strange reason the SaveUndoStep() call doesn't activate the undo button at the first InsertHtml() call.
-	this.Events.FireEvent( "OnSelectionChange" ) ;
-}
-
-FCK.SetInnerHtml = function( html )		// IE Only
-{
-	var oDoc = FCK.EditorDocument ;
-	// Using the following trick, any comment in the beginning of the HTML will
-	// be preserved.
-	oDoc.body.innerHTML = '<div id="__fakeFCKRemove__">&nbsp;</div>' + html ;
-	oDoc.getElementById('__fakeFCKRemove__').removeNode( true ) ;
-}
-
-function FCK_PreloadImages()
-{
-	var oPreloader = new FCKImagePreloader() ;
-
-	// Add the configured images.
-	oPreloader.AddImages( FCKConfig.PreloadImages ) ;
-
-	// Add the skin icons strip.
-	oPreloader.AddImages( FCKConfig.SkinPath + 'fck_strip.gif' ) ;
-
-	oPreloader.OnComplete = LoadToolbarSetup ;
-	oPreloader.Start() ;
-}
-
-// Disable the context menu in the editor (outside the editing area).
-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()
-{
-	// As we call ExecuteNamedCommand('Paste'), it would enter in a loop. So, let's use a semaphore.
-	if ( FCK._PasteIsRunning )
-		return true ;
-
-	if ( FCKConfig.ForcePasteAsPlainText )
-	{
-		FCK.PasteAsPlainText() ;
-		return false ;
-	}
-
-	var sHTML = FCK._CheckIsPastingEnabled( true ) ;
-
-	if ( sHTML === false )
-		FCKTools.RunFunction( FCKDialog.OpenDialog, FCKDialog, ['FCKDialog_Paste', FCKLang.Paste, 'dialog/fck_paste.html', 400, 330, 'Security'] ) ;
-	else
-	{
-		if ( FCKConfig.AutoDetectPasteFromWord && sHTML.length > 0 )
-		{
-			var re = /<\w[^>]*(( class="?MsoNormal"?)|(="mso-))/gi ;
-			if ( re.test( sHTML ) )
-			{
-				if ( confirm( FCKLang.PasteWordConfirm ) )
-				{
-					FCK.PasteFromWord() ;
-					return false ;
-				}
-			}
-		}
-
-		// Instead of inserting the retrieved HTML, let's leave the OS work for us,
-		// by calling FCK.ExecuteNamedCommand( 'Paste' ). It could give better results.
-
-		// Enable the semaphore to avoid a loop.
-		FCK._PasteIsRunning = true ;
-
-		FCK.ExecuteNamedCommand( 'Paste' ) ;
-
-		// Removes the semaphore.
-		delete FCK._PasteIsRunning ;
-	}
-
-	// Let's always make a custom implementation (return false), otherwise
-	// the new Keyboard Handler may conflict with this code, and the CTRL+V code
-	// could result in a simple "V" being pasted.
-	return false ;
-}
-
-FCK.PasteAsPlainText = function( forceText )
-{
-	if ( !FCK._CheckIsPastingEnabled() )
-	{
-		FCKDialog.OpenDialog( 'FCKDialog_Paste', FCKLang.PasteAsText, 'dialog/fck_paste.html', 400, 330, 'PlainText' ) ;
-		return ;
-	}
-
-	// Get the data available in the clipboard in text format.
-	var sText = null ;
-	if ( ! forceText )
-		sText = clipboardData.getData("Text") ;
-	else
-		sText = forceText ;
-
-	if ( sText && sText.length > 0 )
-	{
-		// Replace the carriage returns with <BR>
-		sText = FCKTools.HTMLEncode( sText ) ;
-		sText = FCKTools.ProcessLineBreaks( window, FCKConfig, sText ) ;
-
-		var closeTagIndex = sText.search( '</p>' ) ;
-		var startTagIndex = sText.search( '<p>' ) ;
-
-		if ( ( closeTagIndex != -1 && startTagIndex != -1 && closeTagIndex < startTagIndex )
-				|| ( closeTagIndex != -1 && startTagIndex == -1 ) )
-		{
-			var prefix = sText.substr( 0, closeTagIndex ) ;
-			sText = sText.substr( closeTagIndex + 4 ) ;
-			this.InsertHtml( prefix ) ;
-		}
-
-		// Insert the resulting data in the editor.
-		FCKUndo.SaveLocked = true ;
-		this.InsertHtml( sText ) ;
-		FCKUndo.SaveLocked = false ;
-	}
-}
-
-FCK._CheckIsPastingEnabled = function( returnContents )
-{
-	// The following seams to be the only reliable way to check is script
-	// pasting operations are enabled in the security settings of IE6 and IE7.
-	// It adds a little bit of overhead to the check, but so far that's the
-	// only way, mainly because of IE7.
-
-	FCK._PasteIsEnabled = false ;
-
-	document.body.attachEvent( 'onpaste', FCK_CheckPasting_Listener ) ;
-
-	// The execCommand in GetClipboardHTML will fire the "onpaste", only if the
-	// security settings are enabled.
-	var oReturn = FCK.GetClipboardHTML() ;
-
-	document.body.detachEvent( 'onpaste', FCK_CheckPasting_Listener ) ;
-
-	if ( FCK._PasteIsEnabled )
-	{
-		if ( !returnContents )
-			oReturn = true ;
-	}
-	else
-		oReturn = false ;
-
-	delete FCK._PasteIsEnabled ;
-
-	return oReturn ;
-}
-
-function FCK_CheckPasting_Listener()
-{
-	FCK._PasteIsEnabled = true ;
-}
-
-FCK.GetClipboardHTML = function()
-{
-	var oDiv = document.getElementById( '___FCKHiddenDiv' ) ;
-
-	if ( !oDiv )
-	{
-		oDiv = document.createElement( 'DIV' ) ;
-		oDiv.id = '___FCKHiddenDiv' ;
-
-		var oDivStyle = oDiv.style ;
-		oDivStyle.position		= 'absolute' ;
-		oDivStyle.visibility	= oDivStyle.overflow	= 'hidden' ;
-		oDivStyle.width			= oDivStyle.height		= 1 ;
-
-		document.body.appendChild( oDiv ) ;
-	}
-
-	oDiv.innerHTML = '' ;
-
-	var oTextRange = document.body.createTextRange() ;
-	oTextRange.moveToElementText( oDiv ) ;
-	oTextRange.execCommand( 'Paste' ) ;
-
-	var sData = oDiv.innerHTML ;
-	oDiv.innerHTML = '' ;
-
-	return sData ;
-}
-
-FCK.CreateLink = function( url, noUndo )
-{
-	// Creates the array that will be returned. It contains one or more created links (see #220).
-	var aCreatedLinks = new Array() ;
-	var isControl = FCKSelection.GetType() == 'Control' ;
-	var selectedElement = isControl && FCKSelection.GetSelectedElement() ;
-
-	// Remove any existing link in the selection.
-	// IE BUG: Unlinking a floating control selection that is not inside a link
-	// will collapse the selection. (#3677)
-	if ( !( isControl && !FCKTools.GetElementAscensor( selectedElement, 'a' ) ) )
-		FCK.ExecuteNamedCommand( 'Unlink', null, false, !!noUndo ) ;
-
-	if ( url.length > 0 )
-	{
-		// If there are several images, and you try to link each one, all the images get inside the link:
-		// <img><img> -> <a><img></a><img> -> <a><img><img></a> due to the call to 'CreateLink' (bug in IE)
-		if ( isControl )
-		{
-			// Create a link
-			var oLink = this.EditorDocument.createElement( 'A' ) ;
-			oLink.href = url ;
-
-			// Get the selected object
-			var oControl = selectedElement ;
-			// Put the link just before the object
-			oControl.parentNode.insertBefore(oLink, oControl) ;
-			// Move the object inside the link
-			oControl.parentNode.removeChild( oControl ) ;
-			oLink.appendChild( oControl ) ;
-
-			return [ oLink ] ;
-		}
-
-		// Generate a temporary name for the link.
-		var sTempUrl = 'javascript:void(0);/*' + ( new Date().getTime() ) + '*/' ;
-
-		// Use the internal "CreateLink" command to create the link.
-		FCK.ExecuteNamedCommand( 'CreateLink', sTempUrl, false, !!noUndo ) ;
-
-		// Look for the just create link.
-		var oLinks = this.EditorDocument.links ;
-
-		for ( i = 0 ; i < oLinks.length ; i++ )
-		{
-			var oLink = oLinks[i] ;
-
-			// Check it this a newly created link.
-			// getAttribute must be used. oLink.url may cause problems with IE7 (#555).
-			if ( oLink.getAttribute( 'href', 2 ) == sTempUrl )
-			{
-				var sInnerHtml = oLink.innerHTML ;	// Save the innerHTML (IE changes it if it is like an URL).
-				oLink.href = url ;
-				oLink.innerHTML = sInnerHtml ;		// Restore the innerHTML.
-
-				// If the last child is a <br> move it outside the link or it
-				// will be too easy to select this link again #388.
-				var oLastChild = oLink.lastChild ;
-				if ( oLastChild && oLastChild.nodeName == 'BR' )
-				{
-					// Move the BR after the link.
-					FCKDomTools.InsertAfterNode( oLink, oLink.removeChild( oLastChild ) ) ;
-				}
-
-				aCreatedLinks.push( oLink ) ;
-			}
-		}
-	}
-
-	return aCreatedLinks ;
-}
-
-function _FCK_RemoveDisabledAtt()
-{
-	this.removeAttribute( 'disabled' ) ;
-}
-
-function Doc_OnMouseDown( evt )
-{
-	var e = evt.srcElement ;
-
-	// Radio buttons and checkboxes should not be allowed to be triggered in IE
-	// in editable mode. Otherwise the whole browser window may be locked by
-	// the buttons. (#1782)
-	if ( e.nodeName && e.nodeName.IEquals( 'input' ) && e.type.IEquals( ['radio', 'checkbox'] ) && !e.disabled )
-	{
-		e.disabled = true ;
-		FCKTools.SetTimeout( _FCK_RemoveDisabledAtt, 1, e ) ;
-	}
-}

+ 0 - 65
main/inc/lib/fckeditor/editor/_source/internals/fckbrowserinfo.js

@@ -1,65 +0,0 @@
-/*
- * FCKeditor - The text editor for Internet - http://www.fckeditor.net
- * Copyright (C) 2003-2010 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 ==
- *
- * Contains browser detection information.
- */
-
-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/'),		// Read "IsWebKit"
-	IsOpera		: !!window.opera,
-	IsAIR		: s.Contains(' adobeair/'),
-	IsMac		: s.Contains('macintosh')
-} ;
-
-// Completes the browser info with further Gecko information.
-(function( browserInfo )
-{
-	browserInfo.IsGecko = ( navigator.product == 'Gecko' ) && !browserInfo.IsSafari && !browserInfo.IsOpera ;
-	browserInfo.IsGeckoLike = ( browserInfo.IsGecko || browserInfo.IsSafari || browserInfo.IsOpera ) ;
-
-	if ( browserInfo.IsGecko )
-	{
-		var geckoMatch = s.match( /rv:(\d+\.\d+)/ ) ;
-		var geckoVersion = geckoMatch && parseFloat( geckoMatch[1] ) ;
-
-		// Actually "10" refers to Gecko versions before Firefox 1.5, when
-		// Gecko 1.8 (build 20051111) has been released.
-
-		// Some browser (like Mozilla 1.7.13) may have a Gecko build greater
-		// than 20051111, so we must also check for the revision number not to
-		// be 1.7 (we are assuming that rv < 1.7 will not have build > 20051111).
-
-		if ( geckoVersion )
-		{
-			browserInfo.IsGecko10 = ( geckoVersion < 1.8 ) ;
-			browserInfo.IsGecko19 = ( geckoVersion > 1.8 ) ;
-		}
-	}
-
-	if ( browserInfo.IsSafari )
-		browserInfo.IsSafari3 = ( parseFloat( s.match( / applewebkit\/(\d+)/ )[1] ) < 526 ) ;
-
-})(FCKBrowserInfo) ;

+ 0 - 100
main/inc/lib/fckeditor/editor/_source/internals/fckcodeformatter.js

@@ -1,100 +0,0 @@
-/*
- * FCKeditor - The text editor for Internet - http://www.fckeditor.net
- * Copyright (C) 2003-2010 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 ==
- *
- * Format the HTML.
- */
-
-var FCKCodeFormatter = new Object() ;
-
-FCKCodeFormatter.Init = function()
-{
-	var oRegex = this.Regex = new Object() ;
-
-	// Regex for line breaks.
-	oRegex.BlocksOpener = /\<(P|DIV|H1|H2|H3|H4|H5|H6|ADDRESS|PRE|OL|UL|LI|DL|DT|DD|TITLE|META|LINK|BASE|SCRIPT|LINK|TD|TH|AREA|OPTION)[^\>]*\>/gi ;
-	oRegex.BlocksCloser = /\<\/(P|DIV|H1|H2|H3|H4|H5|H6|ADDRESS|PRE|OL|UL|LI|DL|DT|DD|TITLE|META|LINK|BASE|SCRIPT|LINK|TD|TH|AREA|OPTION)[^\>]*\>/gi ;
-
-	oRegex.NewLineTags	= /\<(BR|HR)[^\>]*\>/gi ;
-
-	oRegex.MainTags = /\<\/?(HTML|HEAD|BODY|FORM|TABLE|TBODY|THEAD|TR)[^\>]*\>/gi ;
-
-	oRegex.LineSplitter = /\s*\n+\s*/g ;
-
-	// Regex for indentation.
-	oRegex.IncreaseIndent = /^\<(HTML|HEAD|BODY|FORM|TABLE|TBODY|THEAD|TR|UL|OL|DL)[ \/\>]/i ;
-	oRegex.DecreaseIndent = /^\<\/(HTML|HEAD|BODY|FORM|TABLE|TBODY|THEAD|TR|UL|OL|DL)[ \>]/i ;
-	oRegex.FormatIndentatorRemove = new RegExp( '^' + FCKConfig.FormatIndentator ) ;
-
-	oRegex.ProtectedTags = /(<PRE[^>]*>)([\s\S]*?)(<\/PRE>)/gi ;
-}
-
-FCKCodeFormatter._ProtectData = function( outer, opener, data, closer )
-{
-	return opener + '___FCKpd___' + ( FCKCodeFormatter.ProtectedData.push( data ) - 1 ) + closer ;
-}
-
-FCKCodeFormatter.Format = function( html )
-{
-	if ( !this.Regex )
-		this.Init() ;
-
-	// Protected content that remain untouched during the
-	// process go in the following array.
-	FCKCodeFormatter.ProtectedData = new Array() ;
-
-	var sFormatted = html.replace( this.Regex.ProtectedTags, FCKCodeFormatter._ProtectData ) ;
-
-	// Line breaks.
-	sFormatted		= sFormatted.replace( this.Regex.BlocksOpener, '\n$&' ) ;
-	sFormatted		= sFormatted.replace( this.Regex.BlocksCloser, '$&\n' ) ;
-	sFormatted		= sFormatted.replace( this.Regex.NewLineTags, '$&\n' ) ;
-	sFormatted		= sFormatted.replace( this.Regex.MainTags, '\n$&\n' ) ;
-
-	// Indentation.
-	var sIndentation = '' ;
-
-	var asLines = sFormatted.split( this.Regex.LineSplitter ) ;
-	sFormatted = '' ;
-
-	for ( var i = 0 ; i < asLines.length ; i++ )
-	{
-		var sLine = asLines[i] ;
-
-		if ( sLine.length == 0 )
-			continue ;
-
-		if ( this.Regex.DecreaseIndent.test( sLine ) )
-			sIndentation = sIndentation.replace( this.Regex.FormatIndentatorRemove, '' ) ;
-
-		sFormatted += sIndentation + sLine + '\n' ;
-
-		if ( this.Regex.IncreaseIndent.test( sLine ) )
-			sIndentation += FCKConfig.FormatIndentator ;
-	}
-
-	// Now we put back the protected data.
-	for ( var j = 0 ; j < FCKCodeFormatter.ProtectedData.length ; j++ )
-	{
-		var oRegex = new RegExp( '___FCKpd___' + j ) ;
-		sFormatted = sFormatted.replace( oRegex, FCKCodeFormatter.ProtectedData[j].replace( /\$/g, '$$$$' ) ) ;
-	}
-
-	return sFormatted.Trim() ;
-}

+ 0 - 175
main/inc/lib/fckeditor/editor/_source/internals/fckcommands.js

@@ -1,175 +0,0 @@
-/*
- * FCKeditor - The text editor for Internet - http://www.fckeditor.net
- * Copyright (C) 2003-2010 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 ==
- *
- * Define all commands available in the editor.
- */
-
-var FCKCommands = FCK.Commands = new Object() ;
-FCKCommands.LoadedCommands = new Object() ;
-
-FCKCommands.RegisterCommand = function( commandName, command )
-{
-	this.LoadedCommands[ commandName ] = command ;
-}
-
-FCKCommands.GetCommand = function( commandName )
-{
-	var oCommand = FCKCommands.LoadedCommands[ commandName ] ;
-
-	if ( oCommand )
-		return oCommand ;
-
-	switch ( commandName )
-	{
-		case 'Bold'			:
-		case 'Italic'		:
-		case 'Underline'	:
-		case 'StrikeThrough':
-		case 'Subscript'	:
-		case 'Superscript'	: oCommand = new FCKCoreStyleCommand( commandName ) ; break ;
-
-		case 'RemoveFormat'	: oCommand = new FCKRemoveFormatCommand() ; break ;
-
-		case 'DocProps'		: oCommand = new FCKDialogCommand( 'DocProps'	, FCKLang.DocProps				, 'dialog/fck_docprops.html'	, 400, 380, FCKCommands.GetFullPageState ) ; break ;
-		case 'Templates'	: oCommand = new FCKDialogCommand( 'Templates'	, FCKLang.DlgTemplatesTitle		, 'dialog/fck_template.html'	, 380, 450 ) ; break ;
-		case 'Link'			: oCommand = new FCKDialogCommand( 'Link'		, FCKLang.DlgLnkWindowTitle		, 'dialog/fck_link.html'		, 400, 300 ) ; break ;
-		case 'Unlink'		: oCommand = new FCKUnlinkCommand() ; break ;
-		case 'VisitLink'	: oCommand = new FCKVisitLinkCommand() ; break ;
-		case 'Anchor'		: oCommand = new FCKDialogCommand( 'Anchor'		, FCKLang.DlgAnchorTitle		, 'dialog/fck_anchor.html'		, 370, 160 ) ; break ;
-		case 'AnchorDelete'	: oCommand = new FCKAnchorDeleteCommand() ; break ;
-		case 'BulletedList'	: oCommand = new FCKDialogCommand( 'BulletedList', FCKLang.BulletedListProp		, 'dialog/fck_listprop.html?UL'	, 370, 160 ) ; break ;
-		case 'NumberedList'	: oCommand = new FCKDialogCommand( 'NumberedList', FCKLang.NumberedListProp		, 'dialog/fck_listprop.html?OL'	, 370, 160 ) ; break ;
-		case 'About'		: oCommand = new FCKDialogCommand( 'About'		, FCKLang.About					, 'dialog/fck_about.html'		, 420, 330, function(){ return FCK_TRISTATE_OFF ; } ) ; break ;
-		case 'Find'			: oCommand = new FCKDialogCommand( 'Find'		, FCKLang.DlgFindAndReplaceTitle, 'dialog/fck_replace.html'		, 340, 230, null, null, 'Find' ) ; break ;
-		case 'Replace'		: oCommand = new FCKDialogCommand( 'Replace'	, FCKLang.DlgFindAndReplaceTitle, 'dialog/fck_replace.html'		, 340, 230, null, null, 'Replace' ) ; break ;
-
-		case 'Image'		: oCommand = new FCKDialogCommand( 'Image'		, FCKLang.DlgImgTitle			, 'dialog/fck_image.html'		, 450, 390 ) ; break ;
-		case 'Flash'		: oCommand = new FCKDialogCommand( 'Flash'		, FCKLang.DlgFlashTitle			, 'dialog/fck_flash.html'		, 450, 390 ) ; break ;
-		case 'SpecialChar'	: oCommand = new FCKDialogCommand( 'SpecialChar', FCKLang.DlgSpecialCharTitle	, 'dialog/fck_specialchar.html'	, 400, 290 ) ; break ;
-		case 'Smiley'		: oCommand = new FCKDialogCommand( 'Smiley'		, FCKLang.DlgSmileyTitle		, 'dialog/fck_smiley.html'		, FCKConfig.SmileyWindowWidth, FCKConfig.SmileyWindowHeight ) ; break ;
-		case 'Table'		: oCommand = new FCKDialogCommand( 'Table'		, FCKLang.DlgTableTitle			, 'dialog/fck_table.html'		, 480, 250 ) ; break ;
-		case 'TableProp'	: oCommand = new FCKDialogCommand( 'Table'		, FCKLang.DlgTableTitle			, 'dialog/fck_table.html?Parent', 480, 250 ) ; break ;
-		case 'TableCellProp': oCommand = new FCKDialogCommand( 'TableCell'	, FCKLang.DlgCellTitle			, 'dialog/fck_tablecell.html'	, 550, 240 ) ; break ;
-
-		case 'Style'		: oCommand = new FCKStyleCommand() ; break ;
-
-		case 'FontName'		: oCommand = new FCKFontNameCommand() ; break ;
-		case 'FontSize'		: oCommand = new FCKFontSizeCommand() ; break ;
-		case 'FontFormat'	: oCommand = new FCKFormatBlockCommand() ; break ;
-
-		case 'Source'		: oCommand = new FCKSourceCommand() ; break ;
-		case 'Preview'		: oCommand = new FCKPreviewCommand() ; break ;
-		case 'Save'			: oCommand = new FCKSaveCommand() ; break ;
-		case 'NewPage'		: oCommand = new FCKNewPageCommand() ; break ;
-		case 'PageBreak'	: oCommand = new FCKPageBreakCommand() ; break ;
-		case 'Rule'			: oCommand = new FCKRuleCommand() ; break ;
-		case 'Nbsp'			: oCommand = new FCKNbsp() ; break ;
-
-		case 'TextColor'	: oCommand = new FCKTextColorCommand('ForeColor') ; break ;
-		case 'BGColor'		: oCommand = new FCKTextColorCommand('BackColor') ; break ;
-
-		case 'Paste'		: oCommand = new FCKPasteCommand() ; break ;
-		case 'PasteText'	: oCommand = new FCKPastePlainTextCommand() ; break ;
-		case 'PasteWord'	: oCommand = new FCKPasteWordCommand() ; break ;
-
-		case 'JustifyLeft'	: oCommand = new FCKJustifyCommand( 'left' ) ; break ;
-		case 'JustifyCenter'	: oCommand = new FCKJustifyCommand( 'center' ) ; break ;
-		case 'JustifyRight'	: oCommand = new FCKJustifyCommand( 'right' ) ; break ;
-		case 'JustifyFull'	: oCommand = new FCKJustifyCommand( 'justify' ) ; break ;
-		case 'Indent'	: oCommand = new FCKIndentCommand( 'indent', FCKConfig.IndentLength ) ; break ;
-		case 'Outdent'	: oCommand = new FCKIndentCommand( 'outdent', FCKConfig.IndentLength * -1 ) ; break ;
-		case 'Blockquote'	: oCommand = new FCKBlockQuoteCommand() ; break ;
-		case 'CreateDiv'	: oCommand = new FCKDialogCommand( 'CreateDiv', FCKLang.CreateDiv, 'dialog/fck_div.html', 380, 210, null, null, true ) ; break ;
-		case 'EditDiv'		: oCommand = new FCKDialogCommand( 'EditDiv', FCKLang.EditDiv, 'dialog/fck_div.html', 380, 210, null, null, false ) ; break ;
-		case 'DeleteDiv'	: oCommand = new FCKDeleteDivCommand() ; break ;
-
-		case 'TableInsertRowAfter'		: oCommand = new FCKTableCommand('TableInsertRowAfter') ; break ;
-		case 'TableInsertRowBefore'		: oCommand = new FCKTableCommand('TableInsertRowBefore') ; break ;
-		case 'TableDeleteRows'			: oCommand = new FCKTableCommand('TableDeleteRows') ; break ;
-		case 'TableInsertColumnAfter'	: oCommand = new FCKTableCommand('TableInsertColumnAfter') ; break ;
-		case 'TableInsertColumnBefore'	: oCommand = new FCKTableCommand('TableInsertColumnBefore') ; break ;
-		case 'TableDeleteColumns'		: oCommand = new FCKTableCommand('TableDeleteColumns') ; break ;
-		case 'TableInsertCellAfter'		: oCommand = new FCKTableCommand('TableInsertCellAfter') ; break ;
-		case 'TableInsertCellBefore'	: oCommand = new FCKTableCommand('TableInsertCellBefore') ; break ;
-		case 'TableDeleteCells'			: oCommand = new FCKTableCommand('TableDeleteCells') ; break ;
-		case 'TableMergeCells'			: oCommand = new FCKTableCommand('TableMergeCells') ; break ;
-		case 'TableMergeRight'			: oCommand = new FCKTableCommand('TableMergeRight') ; break ;
-		case 'TableMergeDown'			: oCommand = new FCKTableCommand('TableMergeDown') ; break ;
-		case 'TableHorizontalSplitCell'	: oCommand = new FCKTableCommand('TableHorizontalSplitCell') ; break ;
-		case 'TableVerticalSplitCell'	: oCommand = new FCKTableCommand('TableVerticalSplitCell') ; break ;
-		case 'TableDelete'				: oCommand = new FCKTableCommand('TableDelete') ; break ;
-
-		case 'Form'			: oCommand = new FCKDialogCommand( 'Form'		, FCKLang.Form			, 'dialog/fck_form.html'		, 380, 210 ) ; break ;
-		case 'Checkbox'		: oCommand = new FCKDialogCommand( 'Checkbox'	, FCKLang.Checkbox		, 'dialog/fck_checkbox.html'	, 380, 200 ) ; break ;
-		case 'Radio'		: oCommand = new FCKDialogCommand( 'Radio'		, FCKLang.RadioButton	, 'dialog/fck_radiobutton.html'	, 380, 200 ) ; break ;
-		case 'TextField'	: oCommand = new FCKDialogCommand( 'TextField'	, FCKLang.TextField		, 'dialog/fck_textfield.html'	, 380, 210 ) ; break ;
-		case 'Textarea'		: oCommand = new FCKDialogCommand( 'Textarea'	, FCKLang.Textarea		, 'dialog/fck_textarea.html'	, 380, 210 ) ; break ;
-		case 'HiddenField'	: oCommand = new FCKDialogCommand( 'HiddenField', FCKLang.HiddenField	, 'dialog/fck_hiddenfield.html'	, 380, 190 ) ; break ;
-		case 'Button'		: oCommand = new FCKDialogCommand( 'Button'		, FCKLang.Button		, 'dialog/fck_button.html'		, 380, 210 ) ; break ;
-		case 'Select'		: oCommand = new FCKDialogCommand( 'Select'		, FCKLang.SelectionField, 'dialog/fck_select.html'		, 400, 340 ) ; break ;
-		case 'ImageButton'	: oCommand = new FCKDialogCommand( 'ImageButton', FCKLang.ImageButton	, 'dialog/fck_image.html?ImageButton', 450, 390 ) ; break ;
-
-		case 'SpellCheck'	: oCommand = new FCKSpellCheckCommand() ; break ;
-		case 'FitWindow'	: oCommand = new FCKFitWindow() ; break ;
-
-		case 'Undo'	: oCommand = new FCKUndoCommand() ; break ;
-		case 'Redo'	: oCommand = new FCKRedoCommand() ; break ;
-		case 'Copy'	: oCommand = new FCKCutCopyCommand( false ) ; break ;
-		case 'Cut'	: oCommand = new FCKCutCopyCommand( true ) ; break ;
-
-		case 'SelectAll'			: oCommand = new FCKSelectAllCommand() ; break ;
-		case 'InsertOrderedList'	: oCommand = new FCKListCommand( 'insertorderedlist', 'ol' ) ; break ;
-		case 'InsertUnorderedList'	: oCommand = new FCKListCommand( 'insertunorderedlist', 'ul' ) ; break ;
-		case 'ShowBlocks' : oCommand = new FCKShowBlockCommand( 'ShowBlocks', FCKConfig.StartupShowBlocks ? FCK_TRISTATE_ON : FCK_TRISTATE_OFF ) ; break ;
-
-		// Generic Undefined command (usually used when a command is under development).
-		case 'Undefined'	: oCommand = new FCKUndefinedCommand() ; break ;
-
-		case 'Scayt' : oCommand = FCKScayt.CreateCommand() ; break ;
-		case 'ScaytContext' : oCommand = FCKScayt.CreateContextCommand() ; break ;
-
-		// By default we assume that it is a named command.
-		default:
-			if ( FCKRegexLib.NamedCommands.test( commandName ) )
-				oCommand = new FCKNamedCommand( commandName ) ;
-			else
-			{
-				alert( FCKLang.UnknownCommand.replace( /%1/g, commandName ) ) ;
-				return null ;
-			}
-	}
-
-	FCKCommands.LoadedCommands[ commandName ] = oCommand ;
-
-	return oCommand ;
-}
-
-// Gets the state of the "Document Properties" button. It must be enabled only
-// when "Full Page" editing is available.
-FCKCommands.GetFullPageState = function()
-{
-	return FCKConfig.FullPage ? FCK_TRISTATE_OFF : FCK_TRISTATE_DISABLED ;
-}
-
-
-FCKCommands.GetBooleanState = function( isDisabled )
-{
-	return isDisabled ? FCK_TRISTATE_DISABLED : FCK_TRISTATE_OFF ;
-}

+ 0 - 237
main/inc/lib/fckeditor/editor/_source/internals/fckconfig.js

@@ -1,237 +0,0 @@
-/*
- * FCKeditor - The text editor for Internet - http://www.fckeditor.net
- * Copyright (C) 2003-2010 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 ==
- *
- * Creates and initializes the FCKConfig object.
- */
-
-var FCKConfig = FCK.Config = new Object() ;
-
-/*
-	For the next major version (probably 3.0) we should move all this stuff to
-	another dedicated object and leave FCKConfig as a holder object for settings only).
-*/
-
-// Editor Base Path
-if ( document.location.protocol == 'file:' )
-{
-	FCKConfig.BasePath = decodeURIComponent( document.location.pathname.substr(1) ) ;
-	FCKConfig.BasePath = FCKConfig.BasePath.replace( /\\/gi, '/' ) ;
-
-	// The way to address local files is different according to the OS.
-	// In Windows it is file:// but in MacOs it is file:/// so let's get it automatically
-	var sFullProtocol = document.location.href.match( /^(file\:\/{2,3})/ )[1] ;
-	// #945 Opera does strange things with files loaded from the disk, and it fails in Mac to load xml files
-	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\/$/, '' ) ;
-
-// There is a bug in Gecko. If the editor is hidden on startup, an error is
-// thrown when trying to get the screen dimensions.
-try
-{
-	FCKConfig.ScreenWidth	= screen.width ;
-	FCKConfig.ScreenHeight	= screen.height ;
-}
-catch (e)
-{
-	FCKConfig.ScreenWidth	= 800 ;
-	FCKConfig.ScreenHeight	= 600 ;
-}
-
-// Override the actual configuration values with the values passed throw the
-// hidden field "<InstanceName>___Config".
-FCKConfig.ProcessHiddenField = function()
-{
-	this.PageConfig = new Object() ;
-
-	// Get the hidden field.
-	var oConfigField = window.parent.document.getElementById( FCK.Name + '___Config' ) ;
-
-	// Do nothing if the config field was not defined.
-	if ( ! oConfigField ) return ;
-
-	var aCouples = oConfigField.value.split('&') ;
-
-	for ( var i = 0 ; i < aCouples.length ; i++ )
-	{
-		if ( aCouples[i].length == 0 )
-			continue ;
-
-		var aConfig = aCouples[i].split( '=' ) ;
-		var sKey = decodeURIComponent( aConfig[0] ) ;
-		var sVal = decodeURIComponent( aConfig[1] ) ;
-
-		if ( sKey == 'CustomConfigurationsPath' )	// The Custom Config File path must be loaded immediately.
-			FCKConfig[ sKey ] = sVal ;
-
-		else if ( sVal.toLowerCase() == "true" )	// If it is a boolean TRUE.
-			this.PageConfig[ sKey ] = true ;
-
-		else if ( sVal.toLowerCase() == "false" )	// If it is a boolean FALSE.
-			this.PageConfig[ sKey ] = false ;
-
-		else if ( sVal.length > 0 && !isNaN( sVal ) )	// If it is a number.
-			this.PageConfig[ sKey ] = parseFloat( sVal ) ;
-
-		else										// In any other case it is a string.
-			this.PageConfig[ sKey ] = sVal ;
-	}
-}
-
-function FCKConfig_LoadPageConfig()
-{
-	var oPageConfig = FCKConfig.PageConfig ;
-	for ( var sKey in oPageConfig )
-		FCKConfig[ sKey ] = oPageConfig[ sKey ] ;
-}
-
-function FCKConfig_PreProcess()
-{
-	var oConfig = FCKConfig ;
-
-	// Force debug mode if fckdebug=true in the QueryString (main page).
-	if ( oConfig.AllowQueryStringDebug )
-	{
-		try
-		{
-			if ( (/fckdebug=true/i).test( window.top.location.search ) )
-				oConfig.Debug = true ;
-		}
-		catch (e) { /* Ignore it. Much probably we are inside a FRAME where the "top" is in another domain (security error). */ }
-	}
-
-	// Certifies that the "PluginsPath" configuration ends with a slash.
-	if ( !oConfig.PluginsPath.EndsWith('/') )
-		oConfig.PluginsPath += '/' ;
-
-	// If no ToolbarComboPreviewCSS, point it to EditorAreaCSS.
-	var sComboPreviewCSS = oConfig.ToolbarComboPreviewCSS ;
-	if ( !sComboPreviewCSS || sComboPreviewCSS.length == 0 )
-		oConfig.ToolbarComboPreviewCSS = oConfig.EditorAreaCSS ;
-
-	// Turn the attributes that will be removed in the RemoveFormat from a string to an array
-	oConfig.RemoveAttributesArray = (oConfig.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' ;
-}
-
-// Define toolbar sets collection.
-FCKConfig.ToolbarSets = new Object() ;
-
-// Defines the plugins collection.
-FCKConfig.Plugins = new Object() ;
-FCKConfig.Plugins.Items = new Array() ;
-
-FCKConfig.Plugins.Add = function( name, langs, path )
-{
-	FCKConfig.Plugins.Items.push( [name, langs, path] ) ;
-}
-
-// FCKConfig.ProtectedSource: object that holds a collection of Regular
-// Expressions that defined parts of the raw HTML that must remain untouched
-// like custom tags, scripts, server side code, etc...
-FCKConfig.ProtectedSource = new Object() ;
-
-// Generates a string used to identify and locate the Protected Tags comments.
-FCKConfig.ProtectedSource._CodeTag = (new Date()).valueOf() ;
-
-// Initialize the regex array with the default ones.
-FCKConfig.ProtectedSource.RegexEntries = [
-	// First of any other protection, we must protect all comments to avoid
-	// loosing them (of course, IE related).
-	/<!--[\s\S]*?-->/g ,
-
-	// Script tags will also be forced to be protected, otherwise IE will execute them.
-	/<script[\s\S]*?<\/script>/gi,
-
-	// <noscript> tags (get lost in IE and messed up in FF).
-	/<noscript[\s\S]*?<\/noscript>/gi
-] ;
-
-FCKConfig.ProtectedSource.Add = function( regexPattern )
-{
-	this.RegexEntries.push( regexPattern ) ;
-}
-
-FCKConfig.ProtectedSource.Protect = function( html )
-{
-	var codeTag = this._CodeTag ;
-	function _Replace( protectedSource )
-	{
-		var index = FCKTempBin.AddElement( protectedSource ) ;
-		return '<!--{' + codeTag + index + '}-->' ;
-	}
-
-	for ( var i = 0 ; i < this.RegexEntries.length ; i++ )
-	{
-		html = html.replace( this.RegexEntries[i], _Replace ) ;
-	}
-
-	return html ;
-}
-
-FCKConfig.ProtectedSource.Revert = function( html, clearBin )
-{
-	function _Replace( m, opener, index )
-	{
-		var protectedValue = clearBin ? FCKTempBin.RemoveElement( index ) : FCKTempBin.Elements[ index ] ;
-		// There could be protected source inside another one.
-		return FCKConfig.ProtectedSource.Revert( protectedValue, clearBin ) ;
-	}
-
-	var regex = new RegExp( "(<|&lt;)!--\\{" + this._CodeTag + "(\\d+)\\}--(>|&gt;)", "g" ) ;
-	return html.replace( regex, _Replace ) ;
-}
-
-// Returns a string with the attributes that must be appended to the body
-FCKConfig.GetBodyAttributes = function()
-{
-	var bodyAttributes = '' ;
-	// Add id and class to the body.
-	if ( this.BodyId && this.BodyId.length > 0 )
-		bodyAttributes += ' id="' + this.BodyId + '"' ;
-	if ( this.BodyClass && this.BodyClass.length > 0 )
-		bodyAttributes += ' class="' + this.BodyClass + '"' ;
-
-	return bodyAttributes ;
-}
-
-// Sets the body attributes directly on the node
-FCKConfig.ApplyBodyAttributes = function( oBody )
-{
-	// Add ID and Class to the body
-	if ( this.BodyId && this.BodyId.length > 0 )
-		oBody.id = FCKConfig.BodyId ;
-	if ( this.BodyClass && this.BodyClass.length > 0 )
-		oBody.className += ' ' + FCKConfig.BodyClass ;
-}

+ 0 - 59
main/inc/lib/fckeditor/editor/_source/internals/fckdebug.js

@@ -1,59 +0,0 @@
-/*
- * FCKeditor - The text editor for Internet - http://www.fckeditor.net
- * Copyright (C) 2003-2010 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 ==
- *
- * Debug window control and operations.
- */
-
-// Public function defined here must be declared in fckdebug_empty.js.
-
-var FCKDebug =
-{
-	Output : function( message, color, noParse )
-	{
-		if ( ! FCKConfig.Debug )
-			return ;
-
-		try
-		{
-			this._GetWindow().Output( message, color, noParse ) ;
-		}
-		catch ( e ) {}	 // Ignore errors
-	},
-
-	OutputObject : function( anyObject, color )
-	{
-		if ( ! FCKConfig.Debug )
-			return ;
-
-		try
-		{
-			this._GetWindow().OutputObject( anyObject, color ) ;
-		}
-		catch ( e ) {}	 // Ignore errors
-	},
-
-	_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 ;
-	}
-} ;

+ 0 - 31
main/inc/lib/fckeditor/editor/_source/internals/fckdebug_empty.js

@@ -1,31 +0,0 @@
-/*
- * FCKeditor - The text editor for Internet - http://www.fckeditor.net
- * Copyright (C) 2003-2010 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 ==
- *
- * Debug window control and operations (empty for the compressed files - #2043).
- */
-
-var FCKDebug =
-{
-	Output : function()
-	{},
-
-	OutputObject : function()
-	{}
-} ;

+ 0 - 239
main/inc/lib/fckeditor/editor/_source/internals/fckdialog.js

@@ -1,239 +0,0 @@
-/*
- * FCKeditor - The text editor for Internet - http://www.fckeditor.net
- * Copyright (C) 2003-2010 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 ==
- *
- * Dialog windows operations.
- */
-
-var FCKDialog = ( function()
-{
-	var topDialog ;
-	var baseZIndex ;
-	var cover ;
-
-	// The document that holds the dialog.
-	var topWindow = window.parent ;
-
-	while ( topWindow.parent && topWindow.parent != topWindow )
-	{
-		try
-		{
-			if ( topWindow.parent.document.domain != document.domain )
-				break ;
-			if ( topWindow.parent.document.getElementsByTagName( 'frameset' ).length > 0 )
-				break ;
-		}
-		catch ( e )
-		{
-			break ;
-		}
-		topWindow = topWindow.parent ;
-	}
-
-	var topDocument = topWindow.document ;
-
-	var getZIndex = function()
-	{
-		if ( !baseZIndex )
-			baseZIndex = FCKConfig.FloatingPanelsZIndex + 999 ;
-		return ++baseZIndex ;
-	}
-
-	// TODO : This logic is not actually working when reducing the window, only
-	// when enlarging it.
-	var resizeHandler = function()
-	{
-		if ( !cover )
-			return ;
-
-		var relElement = FCKTools.IsStrictMode( topDocument ) ? topDocument.documentElement : topDocument.body ;
-
-		FCKDomTools.SetElementStyles( cover,
-			{
-				'width' : Math.max( relElement.scrollWidth,
-					relElement.clientWidth,
-					topDocument.scrollWidth || 0 ) - 1 + 'px',
-				'height' : Math.max( relElement.scrollHeight,
-					relElement.clientHeight,
-					topDocument.scrollHeight || 0 ) - 1 + 'px'
-			} ) ;
-	}
-
-	return {
-		/**
-		 * Opens a dialog window using the standard dialog template.
-		 */
-		OpenDialog : function( dialogName, dialogTitle, dialogPage, width, height, customValue, resizable )
-		{
-			if ( !topDialog )
-				this.DisplayMainCover() ;
-
-			// Setup the dialog info to be passed to the dialog.
-			var dialogInfo =
-			{
-				Title : dialogTitle,
-				Page : dialogPage,
-				Editor : window,
-				CustomValue : customValue,		// Optional
-				TopWindow : topWindow
-			}
-
-			FCK.ToolbarSet.CurrentInstance.Selection.Save( true ) ;
-
-			// Calculate the dialog position, centering it on the screen.
-			var viewSize = FCKTools.GetViewPaneSize( topWindow ) ;
-			var scrollPosition = { 'X' : 0, 'Y' : 0 } ;
-			var useAbsolutePosition = FCKBrowserInfo.IsIE && ( !FCKBrowserInfo.IsIE7 || !FCKTools.IsStrictMode( topWindow.document ) ) ;
-			if ( useAbsolutePosition )
-				scrollPosition = FCKTools.GetScrollPosition( topWindow ) ;
-			var iTop  = Math.max( scrollPosition.Y + ( viewSize.Height - height - 20 ) / 2, 0 ) ;
-			var iLeft = Math.max( scrollPosition.X + ( viewSize.Width - width - 20 )  / 2, 0 ) ;
-
-			// Setup the IFRAME that will hold the dialog.
-			var dialog = topDocument.createElement( 'iframe' ) ;
-			FCKTools.ResetStyles( dialog ) ;
-			dialog.src = FCKConfig.BasePath + 'fckdialog.html' ;
-
-			// Dummy URL for testing whether the code in fckdialog.js alone leaks memory.
-			// dialog.src = 'about:blank';
-
-			dialog.frameBorder = 0 ;
-			dialog.allowTransparency = true ;
-			FCKDomTools.SetElementStyles( dialog,
-					{
-						'position'	: ( useAbsolutePosition ) ? 'absolute' : 'fixed',
-						'top'		: iTop + 'px',
-						'left'		: iLeft + 'px',
-						'width'		: width + 'px',
-						'height'	: height + 'px',
-						'zIndex'	: getZIndex()
-					} ) ;
-
-			// Save the dialog info to be used by the dialog page once loaded.
-			dialog._DialogArguments = dialogInfo ;
-
-			// Append the IFRAME to the target document.
-			topDocument.body.appendChild( dialog ) ;
-
-			// Keep record of the dialog's parent/child relationships.
-			dialog._ParentDialog = topDialog ;
-			topDialog = dialog ;
-		},
-
-		/**
-		 * (For internal use)
-		 * Called when the top dialog is closed.
-		 */
-		OnDialogClose : function( dialogWindow )
-		{
-			var dialog = dialogWindow.frameElement ;
-			FCKDomTools.RemoveNode( dialog ) ;
-
-			if ( dialog._ParentDialog )		// Nested Dialog.
-			{
-				topDialog = dialog._ParentDialog ;
-				dialog._ParentDialog.contentWindow.SetEnabled( true ) ;
-			}
-			else							// First Dialog.
-			{
-				// Set the Focus in the browser, so the "OnBlur" event is not
-				// fired. In IE, there is no need to do that because the dialog
-				// already moved the selection to the editing area before
-				// closing (EnsureSelection). Also, the Focus() call here
-				// causes memory leak on IE7 (weird).
-				if ( !FCKBrowserInfo.IsIE )
-					FCK.Focus() ;
-
-				this.HideMainCover() ;
-				// Bug #1918: Assigning topDialog = null directly causes IE6 to crash.
-				setTimeout( function(){ topDialog = null ; }, 0 ) ;
-
-				// Release the previously saved selection.
-				FCK.ToolbarSet.CurrentInstance.Selection.Release() ;
-			}
-		},
-
-		DisplayMainCover : function()
-		{
-			// Setup the DIV that will be used to cover.
-			cover = topDocument.createElement( 'div' ) ;
-			FCKTools.ResetStyles( cover ) ;
-			FCKDomTools.SetElementStyles( cover,
-				{
-					'position' : 'absolute',
-					'zIndex' : getZIndex(),
-					'top' : '0px',
-					'left' : '0px',
-					'backgroundColor' : FCKConfig.BackgroundBlockerColor
-				} ) ;
-			FCKDomTools.SetOpacity( cover, FCKConfig.BackgroundBlockerOpacity ) ;
-
-			// For IE6-, we need to fill the cover with a transparent IFRAME,
-			// to properly block <select> fields.
-			if ( FCKBrowserInfo.IsIE && !FCKBrowserInfo.IsIE7 )
-			{
-				var iframe = topDocument.createElement( 'iframe' ) ;
-				FCKTools.ResetStyles( iframe ) ;
-				iframe.hideFocus = true ;
-				iframe.frameBorder = 0 ;
-				iframe.src = FCKTools.GetVoidUrl() ;
-				FCKDomTools.SetElementStyles( iframe,
-					{
-						'width' : '100%',
-						'height' : '100%',
-						'position' : 'absolute',
-						'left' : '0px',
-						'top' : '0px',
-						'filter' : 'progid:DXImageTransform.Microsoft.Alpha(opacity=0)'
-					} ) ;
-				cover.appendChild( iframe ) ;
-			}
-
-			// We need to manually adjust the cover size on resize.
-			FCKTools.AddEventListener( topWindow, 'resize', resizeHandler ) ;
-			resizeHandler() ;
-
-			topDocument.body.appendChild( cover ) ;
-
-			FCKFocusManager.Lock() ;
-
-			// Prevent the user from refocusing the disabled
-			// editing window by pressing Tab. (Bug #2065)
-			var el = FCK.ToolbarSet.CurrentInstance.GetInstanceObject( 'frameElement' ) ;
-			el._fck_originalTabIndex = el.tabIndex ;
-			el.tabIndex = -1 ;
-		},
-
-		HideMainCover : function()
-		{
-			FCKDomTools.RemoveNode( cover ) ;
-			FCKFocusManager.Unlock() ;
-
-			// Revert the tab index hack. (Bug #2065)
-			var el = FCK.ToolbarSet.CurrentInstance.GetInstanceObject( 'frameElement' ) ;
-			el.tabIndex = el._fck_originalTabIndex ;
-			FCKDomTools.ClearElementJSProperty( el, '_fck_originalTabIndex' ) ;
-		},
-
-		GetCover : function()
-		{
-			return cover ;
-		}
-	} ;
-} )() ;

+ 0 - 270
main/inc/lib/fckeditor/editor/_source/internals/fckdocumentprocessor.js

@@ -1,270 +0,0 @@
-/*
- * FCKeditor - The text editor for Internet - http://www.fckeditor.net
- * Copyright (C) 2003-2010 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 ==
- *
- * Advanced document processors.
- */
-
-var FCKDocumentProcessor = new Object() ;
-FCKDocumentProcessor._Items = new Array() ;
-
-FCKDocumentProcessor.AppendNew = function()
-{
-	var oNewItem = new Object() ;
-	this._Items.push( oNewItem ) ;
-	return oNewItem ;
-}
-
-FCKDocumentProcessor.Process = function( document )
-{
-	var bIsDirty = FCK.IsDirty() ;
-	var oProcessor, i = 0 ;
-	while( ( oProcessor = this._Items[i++] ) )
-		oProcessor.ProcessDocument( document ) ;
-	if ( !bIsDirty )
-		FCK.ResetIsDirty() ;
-}
-
-var FCKDocumentProcessor_CreateFakeImage = function( fakeClass, realElement )
-{
-	var oImg = FCKTools.GetElementDocument( realElement ).createElement( 'IMG' ) ;
-	oImg.className = fakeClass ;
-	oImg.src = FCKConfig.BasePath + 'images/spacer.gif' ;
-	oImg.setAttribute( '_fckfakelement', 'true', 0 ) ;
-	oImg.setAttribute( '_fckrealelement', FCKTempBin.AddElement( realElement ), 0 ) ;
-	return oImg ;
-}
-
-// Link Anchors
-if ( FCKBrowserInfo.IsIE || FCKBrowserInfo.IsOpera )
-{
-	var FCKAnchorsProcessor = FCKDocumentProcessor.AppendNew() ;
-	FCKAnchorsProcessor.ProcessDocument = function( document )
-	{
-		var aLinks = document.getElementsByTagName( 'A' ) ;
-
-		var oLink ;
-		var i = aLinks.length - 1 ;
-		while ( i >= 0 && ( oLink = aLinks[i--] ) )
-		{
-			// If it is anchor. Doesn't matter if it's also a link (even better: we show that it's both a link and an anchor)
-			if ( oLink.name.length > 0 )
-			{
-				//if the anchor has some content then we just add a temporary class
-				if ( oLink.innerHTML !== '' )
-				{
-					if ( FCKBrowserInfo.IsIE )
-						oLink.className += ' FCK__AnchorC' ;
-				}
-				else
-				{
-					var oImg = FCKDocumentProcessor_CreateFakeImage( 'FCK__Anchor', oLink.cloneNode(true) ) ;
-					oImg.setAttribute( '_fckanchor', 'true', 0 ) ;
-
-					oLink.parentNode.insertBefore( oImg, oLink ) ;
-					oLink.parentNode.removeChild( oLink ) ;
-				}
-			}
-		}
-	}
-}
-
-// Page Breaks
-var FCKPageBreaksProcessor = FCKDocumentProcessor.AppendNew() ;
-FCKPageBreaksProcessor.ProcessDocument = function( document )
-{
-	var aDIVs = document.getElementsByTagName( 'DIV' ) ;
-
-	var eDIV ;
-	var i = aDIVs.length - 1 ;
-	while ( i >= 0 && ( eDIV = aDIVs[i--] ) )
-	{
-		if ( eDIV.style.pageBreakAfter == 'always' && eDIV.childNodes.length == 1 && eDIV.childNodes[0].style && eDIV.childNodes[0].style.display == 'none' )
-		{
-			var oFakeImage = FCKDocumentProcessor_CreateFakeImage( 'FCK__PageBreak', eDIV.cloneNode(true) ) ;
-
-			eDIV.parentNode.insertBefore( oFakeImage, eDIV ) ;
-			eDIV.parentNode.removeChild( eDIV ) ;
-		}
-	}
-/*
-	var aCenters = document.getElementsByTagName( 'CENTER' ) ;
-
-	var oCenter ;
-	var i = aCenters.length - 1 ;
-	while ( i >= 0 && ( oCenter = aCenters[i--] ) )
-	{
-		if ( oCenter.style.pageBreakAfter == 'always' && oCenter.innerHTML.Trim().length == 0 )
-		{
-			var oFakeImage = FCKDocumentProcessor_CreateFakeImage( 'FCK__PageBreak', oCenter.cloneNode(true) ) ;
-
-			oCenter.parentNode.insertBefore( oFakeImage, oCenter ) ;
-			oCenter.parentNode.removeChild( oCenter ) ;
-		}
-	}
-*/
-}
-
-// EMBED and OBJECT tags.
-var FCKEmbedAndObjectProcessor = (function()
-{
-	var customProcessors = [] ;
-
-	var processElement = function( el )
-	{
-		var clone = el.cloneNode( true ) ;
-		var replaceElement ;
-		var fakeImg = replaceElement = FCKDocumentProcessor_CreateFakeImage( 'FCK__UnknownObject', clone ) ;
-		FCKEmbedAndObjectProcessor.RefreshView( fakeImg, el ) ;
-
-		for ( var i = 0 ; i < customProcessors.length ; i++ )
-			replaceElement = customProcessors[i]( el, replaceElement ) || replaceElement ;
-
-		if ( replaceElement != fakeImg )
-			FCKTempBin.RemoveElement( fakeImg.getAttribute( '_fckrealelement' ) ) ;
-
-		el.parentNode.replaceChild( replaceElement, el ) ;
-	}
-
-	var processElementsByName = function( elementName, doc )
-	{
-		var aObjects = doc.getElementsByTagName( elementName );
-		for ( var i = aObjects.length - 1 ; i >= 0 ; i-- )
-			processElement( aObjects[i] ) ;
-	}
-
-	var processObjectAndEmbed = function( doc )
-	{
-		processElementsByName( 'object', doc );
-		processElementsByName( 'embed', doc );
-	}
-
-	return FCKTools.Merge( FCKDocumentProcessor.AppendNew(),
-		       {
-				ProcessDocument : function( doc )
-				{
-					// Firefox 3 would sometimes throw an unknown exception while accessing EMBEDs and OBJECTs
-					// without the setTimeout().
-					if ( FCKBrowserInfo.IsGecko )
-						FCKTools.RunFunction( processObjectAndEmbed, this, [ doc ] ) ;
-					else
-						processObjectAndEmbed( 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 )
-				{
-					customProcessors.push( func ) ;
-				}
-			} ) ;
-} )() ;
-
-FCK.GetRealElement = function( fakeElement )
-{
-	var e = FCKTempBin.Elements[ fakeElement.getAttribute('_fckrealelement') ] ;
-
-	if ( fakeElement.getAttribute('_fckflash') )
-	{
-		if ( fakeElement.style.width.length > 0 )
-				e.width = FCKTools.ConvertStyleSizeToHtml( fakeElement.style.width ) ;
-
-		if ( fakeElement.style.height.length > 0 )
-				e.height = FCKTools.ConvertStyleSizeToHtml( fakeElement.style.height ) ;
-	}
-
-	return e ;
-}
-
-// HR Processor.
-// This is a IE only (tricky) thing. We protect all HR tags before loading them
-// (see FCK.ProtectTags). Here we put the HRs back.
-if ( FCKBrowserInfo.IsIE )
-{
-	FCKDocumentProcessor.AppendNew().ProcessDocument = function( document )
-	{
-		var aHRs = document.getElementsByTagName( 'HR' ) ;
-
-		var eHR ;
-		var i = aHRs.length - 1 ;
-		while ( i >= 0 && ( eHR = aHRs[i--] ) )
-		{
-			// Create the replacement HR.
-			var newHR = document.createElement( 'hr' ) ;
-			newHR.mergeAttributes( eHR, true ) ;
-
-			// We must insert the new one after it. insertBefore will not work in all cases.
-			FCKDomTools.InsertAfterNode( eHR, newHR ) ;
-
-			eHR.parentNode.removeChild( eHR ) ;
-		}
-	}
-}
-
-// INPUT:hidden Processor.
-FCKDocumentProcessor.AppendNew().ProcessDocument = function( document )
-{
-	var aInputs = document.getElementsByTagName( 'INPUT' ) ;
-
-	var oInput ;
-	var i = aInputs.length - 1 ;
-	while ( i >= 0 && ( oInput = aInputs[i--] ) )
-	{
-		if ( oInput.type == 'hidden' )
-		{
-			var oImg = FCKDocumentProcessor_CreateFakeImage( 'FCK__InputHidden', oInput.cloneNode(true) ) ;
-			oImg.setAttribute( '_fckinputhidden', 'true', 0 ) ;
-
-			oInput.parentNode.insertBefore( oImg, oInput ) ;
-			oInput.parentNode.removeChild( oInput ) ;
-		}
-	}
-}
-
-// Flash handler.
-FCKEmbedAndObjectProcessor.AddCustomHandler( function( el, fakeImg )
-	{
-		if ( ! ( el.nodeName.IEquals( 'embed' ) && ( el.type == 'application/x-shockwave-flash' || /\.swf($|#|\?)/i.test( el.src ) ) ) )
-			return ;
-		fakeImg.className = 'FCK__Flash' ;
-		fakeImg.setAttribute( '_fckflash', 'true', 0 );
-	} ) ;
-
-// Buggy <span class="Apple-style-span"> tags added by Safari.
-if ( FCKBrowserInfo.IsSafari )
-{
-	FCKDocumentProcessor.AppendNew().ProcessDocument = function( doc )
-	{
-		var spans = doc.getElementsByClassName ?
-			doc.getElementsByClassName( 'Apple-style-span' ) :
-			Array.prototype.filter.call(
-					doc.getElementsByTagName( 'span' ),
-					function( item ){ return item.className == 'Apple-style-span' ; }
-					) ;
-		for ( var i = spans.length - 1 ; i >= 0 ; i-- )
-			FCKDomTools.RemoveNode( spans[i], true ) ;
-	}
-}

+ 0 - 1085
main/inc/lib/fckeditor/editor/_source/internals/fckdomtools.js

@@ -1,1085 +0,0 @@
-/*
- * FCKeditor - The text editor for Internet - http://www.fckeditor.net
- * Copyright (C) 2003-2010 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 to work with the DOM.
- */
-
-var FCKDomTools =
-{
-	/**
-	 * Move all child nodes from one node to another.
-	 */
-	MoveChildren : function( source, target, toTargetStart )
-	{
-		if ( source == target )
-			return ;
-
-		var eChild ;
-
-		if ( toTargetStart )
-		{
-			while ( (eChild = source.lastChild) )
-				target.insertBefore( source.removeChild( eChild ), target.firstChild ) ;
-		}
-		else
-		{
-			while ( (eChild = source.firstChild) )
-				target.appendChild( source.removeChild( eChild ) ) ;
-		}
-	},
-
-	MoveNode : function( source, target, toTargetStart )
-	{
-		if ( toTargetStart )
-			target.insertBefore( FCKDomTools.RemoveNode( source ), target.firstChild ) ;
-		else
-			target.appendChild( FCKDomTools.RemoveNode( source ) ) ;
-	},
-
-	// Remove blank spaces from the beginning and the end of the contents of a node.
-	TrimNode : function( node )
-	{
-		this.LTrimNode( node ) ;
-		this.RTrimNode( node ) ;
-	},
-
-	LTrimNode : function( node )
-	{
-		var eChildNode ;
-
-		while ( (eChildNode = node.firstChild) )
-		{
-			if ( eChildNode.nodeType == 3 )
-			{
-				var sTrimmed = eChildNode.nodeValue.LTrim() ;
-				var iOriginalLength = eChildNode.nodeValue.length ;
-
-				if ( sTrimmed.length == 0 )
-				{
-					node.removeChild( eChildNode ) ;
-					continue ;
-				}
-				else if ( sTrimmed.length < iOriginalLength )
-				{
-					eChildNode.splitText( iOriginalLength - sTrimmed.length ) ;
-					node.removeChild( node.firstChild ) ;
-				}
-			}
-			break ;
-		}
-	},
-
-	RTrimNode : function( node )
-	{
-		var eChildNode ;
-
-		while ( (eChildNode = node.lastChild) )
-		{
-			if ( eChildNode.nodeType == 3 )
-			{
-				var sTrimmed = eChildNode.nodeValue.RTrim() ;
-				var iOriginalLength = eChildNode.nodeValue.length ;
-
-				if ( sTrimmed.length == 0 )
-				{
-					// If the trimmed text node is empty, just remove it.
-
-					// Use "eChildNode.parentNode" instead of "node" to avoid IE bug (#81).
-					eChildNode.parentNode.removeChild( eChildNode ) ;
-					continue ;
-				}
-				else if ( sTrimmed.length < iOriginalLength )
-				{
-					// If the trimmed text length is less than the original
-					// length, strip all spaces from the end by splitting
-					// the text and removing the resulting useless node.
-
-					eChildNode.splitText( sTrimmed.length ) ;
-					// Use "node.lastChild.parentNode" instead of "node" to avoid IE bug (#81).
-					node.lastChild.parentNode.removeChild( node.lastChild ) ;
-				}
-			}
-			break ;
-		}
-
-		if ( !FCKBrowserInfo.IsIE && !FCKBrowserInfo.IsOpera )
-		{
-			eChildNode = node.lastChild ;
-
-			if ( eChildNode && eChildNode.nodeType == 1 && eChildNode.nodeName.toLowerCase() == 'br' )
-			{
-				// Use "eChildNode.parentNode" instead of "node" to avoid IE bug (#324).
-				eChildNode.parentNode.removeChild( eChildNode ) ;
-			}
-		}
-	},
-
-	RemoveNode : function( node, excludeChildren )
-	{
-		if ( excludeChildren )
-		{
-			// Move all children before the node.
-			var eChild ;
-			while ( (eChild = node.firstChild) )
-				node.parentNode.insertBefore( node.removeChild( eChild ), node ) ;
-		}
-
-		return node.parentNode.removeChild( node ) ;
-	},
-
-	GetFirstChild : function( node, childNames )
-	{
-		// If childNames is a string, transform it in a Array.
-		if ( typeof ( childNames ) == 'string' )
-			childNames = [ childNames ] ;
-
-		var eChild = node.firstChild ;
-		while( eChild )
-		{
-			if ( eChild.nodeType == 1 && eChild.tagName.Equals.apply( eChild.tagName, childNames ) )
-				return eChild ;
-
-			eChild = eChild.nextSibling ;
-		}
-
-		return null ;
-	},
-
-	GetLastChild : function( node, childNames )
-	{
-		// If childNames is a string, transform it in a Array.
-		if ( typeof ( childNames ) == 'string' )
-			childNames = [ childNames ] ;
-
-		var eChild = node.lastChild ;
-		while( eChild )
-		{
-			if ( eChild.nodeType == 1 && ( !childNames || eChild.tagName.Equals( childNames ) ) )
-				return eChild ;
-
-			eChild = eChild.previousSibling ;
-		}
-
-		return null ;
-	},
-
-	/*
-	 * Gets the previous element (nodeType=1) in the source order. Returns
-	 * "null" If no element is found.
-	 *		@param {Object} currentNode The node to start searching from.
-	 *		@param {Boolean} ignoreSpaceTextOnly Sets how text nodes will be
-	 *				handled. If set to "true", only white spaces text nodes
-	 *				will be ignored, while non white space text nodes will stop
-	 *				the search, returning null. If "false" or omitted, all
-	 *				text nodes are ignored.
-	 *		@param {string[]} stopSearchElements An array of element names that
-	 *				will cause the search to stop when found, returning null.
-	 *				May be omitted (or null).
-	 *		@param {string[]} ignoreElements An array of element names that
-	 *				must be ignored during the search.
-	 */
-	GetPreviousSourceElement : function( currentNode, ignoreSpaceTextOnly, stopSearchElements, ignoreElements )
-	{
-		if ( !currentNode )
-			return null ;
-
-		if ( stopSearchElements && currentNode.nodeType == 1 && currentNode.nodeName.IEquals( stopSearchElements ) )
-			return null ;
-
-		if ( currentNode.previousSibling )
-			currentNode = currentNode.previousSibling ;
-		else
-			return this.GetPreviousSourceElement( currentNode.parentNode, ignoreSpaceTextOnly, stopSearchElements, ignoreElements ) ;
-
-		while ( currentNode )
-		{
-			if ( currentNode.nodeType == 1 )
-			{
-				if ( stopSearchElements && currentNode.nodeName.IEquals( stopSearchElements ) )
-					break ;
-
-				if ( !ignoreElements || !currentNode.nodeName.IEquals( ignoreElements ) )
-					return currentNode ;
-			}
-			else if ( ignoreSpaceTextOnly && currentNode.nodeType == 3 && currentNode.nodeValue.RTrim().length > 0 )
-				break ;
-
-			if ( currentNode.lastChild )
-				currentNode = currentNode.lastChild ;
-			else
-				return this.GetPreviousSourceElement( currentNode, ignoreSpaceTextOnly, stopSearchElements, ignoreElements ) ;
-		}
-
-		return null ;
-	},
-
-	/*
-	 * Gets the next element (nodeType=1) in the source order. Returns
-	 * "null" If no element is found.
-	 *		@param {Object} currentNode The node to start searching from.
-	 *		@param {Boolean} ignoreSpaceTextOnly Sets how text nodes will be
-	 *				handled. If set to "true", only white spaces text nodes
-	 *				will be ignored, while non white space text nodes will stop
-	 *				the search, returning null. If "false" or omitted, all
-	 *				text nodes are ignored.
-	 *		@param {string[]} stopSearchElements An array of element names that
-	 *				will cause the search to stop when found, returning null.
-	 *				May be omitted (or null).
-	 *		@param {string[]} ignoreElements An array of element names that
-	 *				must be ignored during the search.
-	 */
-	GetNextSourceElement : function( currentNode, ignoreSpaceTextOnly, stopSearchElements, ignoreElements, startFromSibling )
-	{
-		while( ( currentNode = this.GetNextSourceNode( currentNode, startFromSibling ) ) )	// Only one "=".
-		{
-			if ( currentNode.nodeType == 1 )
-			{
-				if ( stopSearchElements && currentNode.nodeName.IEquals( stopSearchElements ) )
-					break ;
-
-				if ( ignoreElements && currentNode.nodeName.IEquals( ignoreElements ) )
-					return this.GetNextSourceElement( currentNode, ignoreSpaceTextOnly, stopSearchElements, ignoreElements ) ;
-
-				return currentNode ;
-			}
-			else if ( ignoreSpaceTextOnly && currentNode.nodeType == 3 && currentNode.nodeValue.RTrim().length > 0 )
-				break ;
-		}
-
-		return null ;
-	},
-
-	/*
-	 * Get the next DOM node available in source order.
-	 */
-	GetNextSourceNode : function( currentNode, startFromSibling, nodeType, stopSearchNode )
-	{
-		if ( !currentNode )
-			return null ;
-
-		var node ;
-
-		if ( !startFromSibling && currentNode.firstChild )
-			node = currentNode.firstChild ;
-		else
-		{
-			if ( stopSearchNode && currentNode == stopSearchNode )
-				return null ;
-
-			node = currentNode.nextSibling ;
-
-			if ( !node && ( !stopSearchNode || stopSearchNode != currentNode.parentNode ) )
-				return this.GetNextSourceNode( currentNode.parentNode, true, nodeType, stopSearchNode ) ;
-		}
-
-		if ( nodeType && node && node.nodeType != nodeType )
-			return this.GetNextSourceNode( node, false, nodeType, stopSearchNode ) ;
-
-		return node ;
-	},
-
-	/*
-	 * Get the next DOM node available in source order.
-	 */
-	GetPreviousSourceNode : function( currentNode, startFromSibling, nodeType, stopSearchNode )
-	{
-		if ( !currentNode )
-			return null ;
-
-		var node ;
-
-		if ( !startFromSibling && currentNode.lastChild )
-			node = currentNode.lastChild ;
-		else
-		{
-			if ( stopSearchNode && currentNode == stopSearchNode )
-				return null ;
-
-			node = currentNode.previousSibling ;
-
-			if ( !node && ( !stopSearchNode || stopSearchNode != currentNode.parentNode ) )
-				return this.GetPreviousSourceNode( currentNode.parentNode, true, nodeType, stopSearchNode ) ;
-		}
-
-		if ( nodeType && node && node.nodeType != nodeType )
-			return this.GetPreviousSourceNode( node, false, nodeType, stopSearchNode ) ;
-
-		return node ;
-	},
-
-	// Inserts a element after a existing one.
-	InsertAfterNode : function( existingNode, newNode )
-	{
-		return existingNode.parentNode.insertBefore( newNode, existingNode.nextSibling ) ;
-	},
-
-	GetParents : function( node )
-	{
-		var parents = new Array() ;
-
-		while ( node )
-		{
-			parents.unshift( node ) ;
-			node = node.parentNode ;
-		}
-
-		return parents ;
-	},
-
-	GetCommonParents : function( node1, node2 )
-	{
-		var p1 = this.GetParents( node1 ) ;
-		var p2 = this.GetParents( node2 ) ;
-		var retval = [] ;
-		for ( var i = 0 ; i < p1.length ; i++ )
-		{
-			if ( p1[i] == p2[i] )
-				retval.push( p1[i] ) ;
-		}
-		return retval ;
-	},
-
-	GetCommonParentNode : function( node1, node2, tagList )
-	{
-		var tagMap = {} ;
-		if ( ! tagList.pop )
-			tagList = [ tagList ] ;
-		while ( tagList.length > 0 )
-			tagMap[tagList.pop().toLowerCase()] = 1 ;
-
-		var commonParents = this.GetCommonParents( node1, node2 ) ;
-		var currentParent = null ;
-		while ( ( currentParent = commonParents.pop() ) )
-		{
-			if ( tagMap[currentParent.nodeName.toLowerCase()] )
-				return currentParent ;
-		}
-		return null ;
-	},
-
-	GetIndexOf : function( node )
-	{
-		var currentNode = node.parentNode ? node.parentNode.firstChild : null ;
-		var currentIndex = -1 ;
-
-		while ( currentNode )
-		{
-			currentIndex++ ;
-
-			if ( currentNode == node )
-				return currentIndex ;
-
-			currentNode = currentNode.nextSibling ;
-		}
-
-		return -1 ;
-	},
-
-	PaddingNode : null,
-
-	EnforcePaddingNode : function( doc, tagName )
-	{
-		// In IE it can happen when the page is reloaded that doc or doc.body is null, so exit here
-		try
-		{
-			if ( !doc || !doc.body )
-				return ;
-		}
-		catch (e)
-		{
-			return ;
-		}
-
-		this.CheckAndRemovePaddingNode( doc, tagName, true ) ;
-		try
-		{
-			if ( doc.body.lastChild && ( doc.body.lastChild.nodeType != 1
-					|| doc.body.lastChild.tagName.toLowerCase() == tagName.toLowerCase() ) )
-				return ;
-		}
-		catch (e)
-		{
-			return ;
-		}
-
-		var node = doc.createElement( tagName ) ;
-		if ( FCKBrowserInfo.IsGecko && FCKListsLib.NonEmptyBlockElements[ tagName ] )
-			FCKTools.AppendBogusBr( node ) ;
-		this.PaddingNode = node ;
-		if ( doc.body.childNodes.length == 1
-				&& doc.body.firstChild.nodeType == 1
-				&& doc.body.firstChild.tagName.toLowerCase() == 'br'
-				&& ( doc.body.firstChild.getAttribute( '_moz_dirty' ) != null
-					|| doc.body.firstChild.getAttribute( 'type' ) == '_moz' ) )
-			doc.body.replaceChild( node, doc.body.firstChild ) ;
-		else
-			doc.body.appendChild( node ) ;
-	},
-
-	CheckAndRemovePaddingNode : function( doc, tagName, dontRemove )
-	{
-		var paddingNode = this.PaddingNode ;
-		if ( ! paddingNode )
-			return ;
-
-		// If the padding node is changed, remove its status as a padding node.
-		try
-		{
-			if ( paddingNode.parentNode != doc.body
-				|| paddingNode.tagName.toLowerCase() != tagName
-				|| ( paddingNode.childNodes.length > 1 )
-				|| ( paddingNode.firstChild && paddingNode.firstChild.nodeValue != '\xa0'
-					&& String(paddingNode.firstChild.tagName).toLowerCase() != 'br' ) )
-			{
-				this.PaddingNode = null ;
-				return ;
-			}
-		}
-		catch (e)
-		{
-				this.PaddingNode = null ;
-				return ;
-		}
-
-		// Now we're sure the padding node exists, and it is unchanged, and it
-		// isn't the only node in doc.body, remove it.
-		if ( !dontRemove )
-		{
-			if ( paddingNode.parentNode.childNodes.length > 1 )
-				paddingNode.parentNode.removeChild( paddingNode ) ;
-			this.PaddingNode = null ;
-		}
-	},
-
-	HasAttribute : function( element, attributeName )
-	{
-		if ( element.hasAttribute )
-			return element.hasAttribute( attributeName ) ;
-		else
-		{
-			var att = element.attributes[ attributeName ] ;
-			return ( att != undefined && att.specified ) ;
-		}
-	},
-
-	/**
-	 * Checks if an element has "specified" attributes.
-	 */
-	HasAttributes : function( element )
-	{
-		var attributes = element.attributes ;
-
-		for ( var i = 0 ; i < attributes.length ; i++ )
-		{
-			if ( FCKBrowserInfo.IsIE )
-			{
-				var attributeNodeName = attributes[i].nodeName ;
-
-				if ( attributeNodeName.StartsWith( '_fck' ) )
-				{
-					/**
-					 * There are places in the FCKeditor code where HTML element objects
-					 * get values stored as properties (e.g. _fckxhtmljob).  In Internet
-					 * Explorer, these are interpreted as attempts to set attributes on
-					 * the element.
-					 *
-					 * http://msdn.microsoft.com/en-us/library/ms533026(VS.85).aspx#Accessing_Element_Pr
-					 *
-					 * Counting these as HTML attributes cripples
-					 * FCK.Style.RemoveFromRange() once FCK.GetData() has been called.
-					 *
-					 * The above conditional prevents these internal properties being
-					 * counted as attributes.
-					 *
-					 * refs #2156 and #2834
-					 */
-
-					continue ;
-				}
-
-				if ( attributeNodeName == 'class' )
-				{
-					// IE has a strange bug. If calling removeAttribute('className'),
-					// the attributes collection will still contain the "class"
-					// attribute, which will be marked as "specified", even if the
-					// outerHTML of the element is not displaying the class attribute.
-					// Note : I was not able to reproduce it outside the editor,
-					// but I've faced it while working on the TC of #1391.
-					if ( element.className.length > 0 )
-						return true ;
-					continue ;
-				}
-			}
-			if ( attributes[i].specified )
-				return true ;
-		}
-
-		return false ;
-	},
-
-	/**
-	 * Remove an attribute from an element.
-	 */
-	RemoveAttribute : function( element, attributeName )
-	{
-		if ( FCKBrowserInfo.IsIE && attributeName.toLowerCase() == 'class' )
-			attributeName = 'className' ;
-
-		return element.removeAttribute( attributeName, 0 ) ;
-	},
-
-	/**
-	 * Removes an array of attributes from an element
-	 */
-	RemoveAttributes : function (element, aAttributes )
-	{
-		for ( var i = 0 ; i < aAttributes.length ; i++ )
-			this.RemoveAttribute( element, aAttributes[i] );
-	},
-
-	GetAttributeValue : function( element, att )
-	{
-		var attName = att ;
-
-		if ( typeof att == 'string' )
-			att = element.attributes[ att ] ;
-		else
-			attName = att.nodeName ;
-
-		if ( att && att.specified )
-		{
-			// IE returns "null" for the nodeValue of a "style" attribute.
-			if ( attName == 'style' )
-				return element.style.cssText ;
-			// There are two cases when the nodeValue must be used:
-			//		- for the "class" attribute (all browsers).
-			//		- for events attributes (IE only).
-			else if ( attName == 'class' || attName.indexOf('on') == 0 )
-				return att.nodeValue ;
-			else
-			{
-				// Use getAttribute to get its value  exactly as it is
-				// defined.
-				return element.getAttribute( attName, 2 ) ;
-			}
-		}
-		return null ;
-	},
-
-	/**
-	 * Checks whether one element contains the other.
-	 */
-	Contains : function( mainElement, otherElement )
-	{
-		// IE supports contains, but only for element nodes.
-		if ( mainElement.contains && otherElement.nodeType == 1 )
-			return mainElement.contains( otherElement ) ;
-
-		while ( ( otherElement = otherElement.parentNode ) )	// Only one "="
-		{
-			if ( otherElement == mainElement )
-				return true ;
-		}
-		return false ;
-	},
-
-	/**
-	 * Breaks a parent element in the position of one of its contained elements.
-	 * For example, in the following case:
-	 *		<b>This <i>is some<span /> sample</i> test text</b>
-	 * If element = <span />, we have these results:
-	 *		<b>This <i>is some</i><span /><i> sample</i> test text</b>			(If parent = <i>)
-	 *		<b>This <i>is some</i></b><span /><b><i> sample</i> test text</b>	(If parent = <b>)
-	 */
-	BreakParent : function( element, parent, reusableRange )
-	{
-		var range = reusableRange || new FCKDomRange( FCKTools.GetElementWindow( element ) ) ;
-
-		// We'll be extracting part of this element, so let's use our
-		// range to get the correct piece.
-		range.SetStart( element, 4 ) ;
-		range.SetEnd( parent, 4 ) ;
-
-		// Extract it.
-		var docFrag = range.ExtractContents() ;
-
-		// Move the element outside the broken element.
-		range.InsertNode( element.parentNode.removeChild( element ) ) ;
-
-		// Re-insert the extracted piece after the element.
-		docFrag.InsertAfterNode( element ) ;
-
-		range.Release( !!reusableRange ) ;
-	},
-
-	/**
-	 * Retrieves a uniquely identifiable tree address of a DOM tree node.
-	 * The tree address returns is an array of integers, with each integer
-	 * indicating a child index from a DOM tree node, starting from
-	 * document.documentElement.
-	 *
-	 * For example, assuming <body> is the second child from <html> (<head>
-	 * being the first), and we'd like to address the third child under the
-	 * fourth child of body, the tree address returned would be:
-	 * [1, 3, 2]
-	 *
-	 * The tree address cannot be used for finding back the DOM tree node once
-	 * the DOM tree structure has been modified.
-	 */
-	GetNodeAddress : function( node, normalized )
-	{
-		var retval = [] ;
-		while ( node && node != FCKTools.GetElementDocument( node ).documentElement )
-		{
-			var parentNode = node.parentNode ;
-			var currentIndex = -1 ;
-			for( var i = 0 ; i < parentNode.childNodes.length ; i++ )
-			{
-				var candidate = parentNode.childNodes[i] ;
-				if ( normalized === true &&
-						candidate.nodeType == 3 &&
-						candidate.previousSibling &&
-						candidate.previousSibling.nodeType == 3 )
-					continue;
-				currentIndex++ ;
-				if ( parentNode.childNodes[i] == node )
-					break ;
-			}
-			retval.unshift( currentIndex ) ;
-			node = node.parentNode ;
-		}
-		return retval ;
-	},
-
-	/**
-	 * The reverse transformation of FCKDomTools.GetNodeAddress(). This
-	 * function returns the DOM node pointed to by its index address.
-	 */
-	GetNodeFromAddress : function( doc, addr, normalized )
-	{
-		var cursor = doc.documentElement ;
-		for ( var i = 0 ; i < addr.length ; i++ )
-		{
-			var target = addr[i] ;
-			if ( ! normalized )
-			{
-				cursor = cursor.childNodes[target] ;
-				continue ;
-			}
-
-			var currentIndex = -1 ;
-			for (var j = 0 ; j < cursor.childNodes.length ; j++ )
-			{
-				var candidate = cursor.childNodes[j] ;
-				if ( normalized === true &&
-						candidate.nodeType == 3 &&
-						candidate.previousSibling &&
-						candidate.previousSibling.nodeType == 3 )
-					continue ;
-				currentIndex++ ;
-				if ( currentIndex == target )
-				{
-					cursor = candidate ;
-					break ;
-				}
-			}
-		}
-		return cursor ;
-	},
-
-	CloneElement : function( element )
-	{
-		element = element.cloneNode( false ) ;
-
-		// The "id" attribute should never be cloned to avoid duplication.
-		element.removeAttribute( 'id', false ) ;
-
-		return element ;
-	},
-
-	ClearElementJSProperty : function( element, attrName )
-	{
-		if ( FCKBrowserInfo.IsIE )
-			element.removeAttribute( attrName ) ;
-		else
-			delete element[attrName] ;
-	},
-
-	SetElementMarker : function ( markerObj, element, attrName, value)
-	{
-		var id = String( parseInt( Math.random() * 0xffffffff, 10 ) ) ;
-		element._FCKMarkerId = id ;
-		element[attrName] = value ;
-		if ( ! markerObj[id] )
-			markerObj[id] = { 'element' : element, 'markers' : {} } ;
-		markerObj[id]['markers'][attrName] = value ;
-	},
-
-	ClearElementMarkers : function( markerObj, element, clearMarkerObj )
-	{
-		var id = element._FCKMarkerId ;
-		if ( ! id )
-			return ;
-		this.ClearElementJSProperty( element, '_FCKMarkerId' ) ;
-		for ( var j in markerObj[id]['markers'] )
-			this.ClearElementJSProperty( element, j ) ;
-		if ( clearMarkerObj )
-			delete markerObj[id] ;
-	},
-
-	ClearAllMarkers : function( markerObj )
-	{
-		for ( var i in markerObj )
-			this.ClearElementMarkers( markerObj, markerObj[i]['element'], true ) ;
-	},
-
-	/**
-	 * Convert a DOM list tree into a data structure that is easier to
-	 * manipulate. This operation should be non-intrusive in the sense that it
-	 * does not change the DOM tree, with the exception that it may add some
-	 * markers to the list item nodes when markerObj is specified.
-	 */
-	ListToArray : function( listNode, markerObj, baseArray, baseIndentLevel, grandparentNode )
-	{
-		if ( ! listNode.nodeName.IEquals( ['ul', 'ol'] ) )
-			return [] ;
-
-		if ( ! baseIndentLevel )
-			baseIndentLevel = 0 ;
-		if ( ! baseArray )
-			baseArray = [] ;
-		// Iterate over all list items to get their contents and look for inner lists.
-		for ( var i = 0 ; i < listNode.childNodes.length ; i++ )
-		{
-			var listItem = listNode.childNodes[i] ;
-			if ( ! listItem.nodeName.IEquals( 'li' ) )
-				continue ;
-			var itemObj = { 'parent' : listNode, 'indent' : baseIndentLevel, 'contents' : [] } ;
-			if ( ! grandparentNode )
-			{
-				itemObj.grandparent = listNode.parentNode ;
-				if ( itemObj.grandparent && itemObj.grandparent.nodeName.IEquals( 'li' ) )
-					itemObj.grandparent = itemObj.grandparent.parentNode ;
-			}
-			else
-				itemObj.grandparent = grandparentNode ;
-			if ( markerObj )
-				this.SetElementMarker( markerObj, listItem, '_FCK_ListArray_Index', baseArray.length ) ;
-			baseArray.push( itemObj ) ;
-			for ( var j = 0 ; j < listItem.childNodes.length ; j++ )
-			{
-				var child = listItem.childNodes[j] ;
-				if ( child.nodeName.IEquals( ['ul', 'ol'] ) )
-					// Note the recursion here, it pushes inner list items with
-					// +1 indentation in the correct order.
-					this.ListToArray( child, markerObj, baseArray, baseIndentLevel + 1, itemObj.grandparent ) ;
-				else
-					itemObj.contents.push( child ) ;
-			}
-		}
-		return baseArray ;
-	},
-
-	// Convert our internal representation of a list back to a DOM forest.
-	ArrayToList : function( listArray, markerObj, baseIndex )
-	{
-		if ( baseIndex == undefined )
-			baseIndex = 0 ;
-		if ( ! listArray || listArray.length < baseIndex + 1 )
-			return null ;
-		var doc = FCKTools.GetElementDocument( listArray[baseIndex].parent ) ;
-		var retval = doc.createDocumentFragment() ;
-		var rootNode = null ;
-		var currentIndex = baseIndex ;
-		var indentLevel = Math.max( listArray[baseIndex].indent, 0 ) ;
-		var currentListItem = null ;
-		while ( true )
-		{
-			var item = listArray[currentIndex] ;
-			if ( item.indent == indentLevel )
-			{
-				if ( ! rootNode || listArray[currentIndex].parent.nodeName != rootNode.nodeName )
-				{
-					rootNode = listArray[currentIndex].parent.cloneNode( false ) ;
-					retval.appendChild( rootNode ) ;
-				}
-				currentListItem = doc.createElement( 'li' ) ;
-				rootNode.appendChild( currentListItem ) ;
-				for ( var i = 0 ; i < item.contents.length ; i++ )
-					currentListItem.appendChild( item.contents[i].cloneNode( true ) ) ;
-				currentIndex++ ;
-			}
-			else if ( item.indent == Math.max( indentLevel, 0 ) + 1 )
-			{
-				var listData = this.ArrayToList( listArray, null, currentIndex ) ;
-				currentListItem.appendChild( listData.listNode ) ;
-				currentIndex = listData.nextIndex ;
-			}
-			else if ( item.indent == -1 && baseIndex == 0 && item.grandparent )
-			{
-				var currentListItem ;
-				if ( item.grandparent.nodeName.IEquals( ['ul', 'ol'] ) )
-					currentListItem = doc.createElement( 'li' ) ;
-				else
-				{
-					if ( FCKConfig.EnterMode.IEquals( ['div', 'p'] ) && ! item.grandparent.nodeName.IEquals( 'td' ) )
-						currentListItem = doc.createElement( FCKConfig.EnterMode ) ;
-					else
-						currentListItem = doc.createDocumentFragment() ;
-				}
-				for ( var i = 0 ; i < item.contents.length ; i++ )
-					currentListItem.appendChild( item.contents[i].cloneNode( true ) ) ;
-				if ( currentListItem.nodeType == 11 )
-				{
-					if ( currentListItem.lastChild &&
-							currentListItem.lastChild.getAttribute &&
-							currentListItem.lastChild.getAttribute( 'type' ) == '_moz' )
-						currentListItem.removeChild( currentListItem.lastChild );
-					currentListItem.appendChild( doc.createElement( 'br' ) ) ;
-				}
-				if ( currentListItem.nodeName.IEquals( FCKConfig.EnterMode ) && currentListItem.firstChild )
-				{
-					this.TrimNode( currentListItem ) ;
-					if ( FCKListsLib.BlockBoundaries[currentListItem.firstChild.nodeName.toLowerCase()] )
-					{
-						var tmp = doc.createDocumentFragment() ;
-						while ( currentListItem.firstChild )
-							tmp.appendChild( currentListItem.removeChild( currentListItem.firstChild ) ) ;
-						currentListItem = tmp ;
-					}
-				}
-				if ( FCKBrowserInfo.IsGeckoLike && currentListItem.nodeName.IEquals( ['div', 'p'] ) )
-					FCKTools.AppendBogusBr( currentListItem ) ;
-				retval.appendChild( currentListItem ) ;
-				rootNode = null ;
-				currentIndex++ ;
-			}
-			else
-				return null ;
-
-			if ( listArray.length <= currentIndex || Math.max( listArray[currentIndex].indent, 0 ) < indentLevel )
-			{
-				break ;
-			}
-		}
-
-		// Clear marker attributes for the new list tree made of cloned nodes, if any.
-		if ( markerObj )
-		{
-			var currentNode = retval.firstChild ;
-			while ( currentNode )
-			{
-				if ( currentNode.nodeType == 1 )
-					this.ClearElementMarkers( markerObj, currentNode ) ;
-				currentNode = this.GetNextSourceNode( currentNode ) ;
-			}
-		}
-
-		return { 'listNode' : retval, 'nextIndex' : currentIndex } ;
-	},
-
-	/**
-	 * Get the next sibling node for a node. If "includeEmpties" is false,
-	 * only element or non empty text nodes are returned.
-	 */
-	GetNextSibling : function( node, includeEmpties )
-	{
-		node = node.nextSibling ;
-
-		while ( node && !includeEmpties && node.nodeType != 1 && ( node.nodeType != 3 || node.nodeValue.length == 0 ) )
-			node = node.nextSibling ;
-
-		return node ;
-	},
-
-	/**
-	 * Get the previous sibling node for a node. If "includeEmpties" is false,
-	 * only element or non empty text nodes are returned.
-	 */
-	GetPreviousSibling : function( node, includeEmpties )
-	{
-		node = node.previousSibling ;
-
-		while ( node && !includeEmpties && node.nodeType != 1 && ( node.nodeType != 3 || node.nodeValue.length == 0 ) )
-			node = node.previousSibling ;
-
-		return node ;
-	},
-
-	/**
-	 * Checks if an element has no "useful" content inside of it
-	 * node tree. No "useful" content means empty text node or a signle empty
-	 * inline node.
-	 * elementCheckCallback may point to a function that returns a boolean
-	 * indicating that a child element must be considered in the element check.
-	 */
-	CheckIsEmptyElement : function( element, elementCheckCallback )
-	{
-		var child = element.firstChild ;
-		var elementChild ;
-
-		while ( child )
-		{
-			if ( child.nodeType == 1 )
-			{
-				if ( elementChild || !FCKListsLib.InlineNonEmptyElements[ child.nodeName.toLowerCase() ] )
-					return false ;
-
-				if ( !elementCheckCallback || elementCheckCallback( child ) === true )
-					elementChild = child ;
-			}
-			else if ( child.nodeType == 3 && child.nodeValue.length > 0 )
-				return false ;
-
-			child = child.nextSibling ;
-		}
-
-		return elementChild ? this.CheckIsEmptyElement( elementChild, elementCheckCallback ) : true ;
-	},
-
-	SetElementStyles : function( element, styleDict )
-	{
-		var style = element.style ;
-		for ( var styleName in styleDict )
-			style[ styleName ] = styleDict[ styleName ] ;
-	},
-
-	SetOpacity : function( element, opacity )
-	{
-		if ( FCKBrowserInfo.IsIE )
-		{
-			opacity = Math.round( opacity * 100 ) ;
-			element.style.filter = ( opacity > 100 ? '' : 'progid:DXImageTransform.Microsoft.Alpha(opacity=' + opacity + ')' ) ;
-		}
-		else
-			element.style.opacity = opacity ;
-	},
-
-	GetCurrentElementStyle : function( element, propertyName )
-	{
-		if ( FCKBrowserInfo.IsIE )
-			return element.currentStyle[ propertyName ] ;
-		else
-			return element.ownerDocument.defaultView.getComputedStyle( element, '' ).getPropertyValue( propertyName ) ;
-	},
-
-	GetPositionedAncestor : function( element )
-	{
-		var currentElement = element ;
-
-		while ( currentElement != FCKTools.GetElementDocument( currentElement ).documentElement )
-		{
-			if ( this.GetCurrentElementStyle( currentElement, 'position' ) != 'static' )
-				return currentElement ;
-
-			if ( currentElement == FCKTools.GetElementDocument( currentElement ).documentElement
-					&& currentWindow != w )
-				currentElement = currentWindow.frameElement ;
-			else
-				currentElement = currentElement.parentNode ;
-		}
-
-		return null ;
-	},
-
-	/**
-	 * Current implementation for ScrollIntoView (due to #1462 and #2279). We
-	 * don't have a complete implementation here, just the things that fit our
-	 * needs.
-	 */
-	ScrollIntoView : function( element, alignTop )
-	{
-		// Get the element window.
-		var window = FCKTools.GetElementWindow( element ) ;
-		var windowHeight = FCKTools.GetViewPaneSize( window ).Height ;
-
-		// Starts the offset that will be scrolled with the negative value of
-		// the visible window height.
-		var offset = windowHeight * -1 ;
-
-		// Appends the height it we are about to align the bottoms.
-		if ( alignTop === false )
-		{
-			offset += element.offsetHeight || 0 ;
-
-			// Consider the margin in the scroll, which is ok for our current
-			// needs, but needs investigation if we will be using this function
-			// in other places.
-			offset += parseInt( this.GetCurrentElementStyle( element, 'marginBottom' ) || 0, 10 ) || 0 ;
-		}
-
-		// Appends the offsets for the entire element hierarchy.
-		var elementPosition = FCKTools.GetDocumentPosition( window, element ) ;
-		offset += elementPosition.y ;
-
-		// Scroll the window to the desired position, if not already visible.
-		var currentScroll = FCKTools.GetScrollPosition( window ).Y ;
-		if ( offset > 0 && ( offset > currentScroll || offset < currentScroll - windowHeight ) )
-			window.scrollTo( 0, offset ) ;
-	},
-
-	/**
-	 * Check if the element can be edited inside the browser.
-	 */
-	CheckIsEditable : function( element )
-	{
-		// Get the element name.
-		var nodeName = element.nodeName.toLowerCase() ;
-
-		// Get the element DTD (defaults to span for unknown elements).
-		var childDTD = FCK.DTD[ nodeName ] || FCK.DTD.span ;
-
-		// In the DTD # == text node.
-		return ( childDTD['#'] && !FCKListsLib.NonEditableElements[ nodeName ] ) ;
-	},
-
-	GetSelectedDivContainers : function()
-	{
-		var currentBlocks = [] ;
-		var range = new FCKDomRange( FCK.EditorWindow ) ;
-		range.MoveToSelection() ;
-
-		var startNode = range.GetTouchedStartNode() ;
-		var endNode = range.GetTouchedEndNode() ;
-		var currentNode = startNode ;
-
-		if ( startNode == endNode )
-		{
-			while ( endNode.nodeType == 1 && endNode.lastChild )
-				endNode = endNode.lastChild ;
-			endNode = FCKDomTools.GetNextSourceNode( endNode ) ;
-		}
-
-		while ( currentNode && currentNode != endNode )
-		{
-			if ( currentNode.nodeType != 3 || !/^[ \t\n]*$/.test( currentNode.nodeValue ) )
-			{
-				var path = new FCKElementPath( currentNode ) ;
-				var blockLimit = path.BlockLimit ;
-				if ( blockLimit && blockLimit.nodeName.IEquals( 'div' ) && currentBlocks.IndexOf( blockLimit ) == -1 )
-					currentBlocks.push( blockLimit ) ;
-			}
-
-			currentNode = FCKDomTools.GetNextSourceNode( currentNode ) ;
-		}
-
-		return currentBlocks ;
-	}
-} ;

+ 0 - 165
main/inc/lib/fckeditor/editor/_source/internals/fcklanguagemanager.js

@@ -1,165 +0,0 @@
-/*
- * FCKeditor - The text editor for Internet - http://www.fckeditor.net
- * Copyright (C) 2003-2010 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 ==
- *
- * Defines the FCKLanguageManager object that is used for language
- * operations.
- */
-
-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',
-		is		: 'Icelandic',
-		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 sUserLang ;
-
-			// IE accepts "navigator.userLanguage" while Gecko "navigator.language".
-			if ( navigator.userLanguage )
-				sUserLang = navigator.userLanguage.toLowerCase() ;
-			else if ( navigator.language )
-				sUserLang = navigator.language.toLowerCase() ;
-			else
-			{
-				// Firefox 1.0 PR has a bug: it doens't support the "language" property.
-				return FCKConfig.DefaultLanguage ;
-			}
-
-			// Some language codes are set in 5 characters,
-			// like "pt-br" for Brazilian Portuguese.
-			if ( sUserLang.length >= 5 )
-			{
-				sUserLang = sUserLang.substr(0,5) ;
-				if ( this.AvailableLanguages[sUserLang] ) return sUserLang ;
-			}
-
-			// If the user's browser is set to, for example, "pt-br" but only the
-			// "pt" language file is available then get that file.
-			if ( sUserLang.length >= 2 )
-			{
-				sUserLang = sUserLang.substr(0,2) ;
-				if ( this.AvailableLanguages[sUserLang] ) return sUserLang ;
-			}
-		}
-
-		return this.DefaultLanguage ;
-	},
-
-	TranslateElements : function( targetDocument, tag, propertyToSet, encode )
-	{
-		var e = targetDocument.getElementsByTagName(tag) ;
-		var sKey, s ;
-		for ( var i = 0 ; i < e.length ; i++ )
-		{
-			// The extra () is to avoid a warning with strict error checking. This is ok.
-			if ( (sKey = e[i].getAttribute( 'fckLang' )) )
-			{
-				// The extra () is to avoid a warning with strict error checking. This is ok.
-				if ( (s = FCKLang[ sKey ]) )
-				{
-					if ( encode )
-						s = FCKTools.HTMLEncode( s ) ;
-					e[i][ propertyToSet ] = s ;
-				}
-			}
-		}
-	},
-
-	TranslatePage : function( targetDocument )
-	{
-		this.TranslateElements( targetDocument, 'INPUT', 'value' ) ;
-		this.TranslateElements( targetDocument, 'SPAN', 'innerHTML' ) ;
-		this.TranslateElements( targetDocument, 'LABEL', 'innerHTML' ) ;
-		this.TranslateElements( targetDocument, 'OPTION', 'innerHTML', true ) ;
-		this.TranslateElements( targetDocument, 'LEGEND', 'innerHTML' ) ;
-	},
-
-	Initialize : function()
-	{
-		if ( this.AvailableLanguages[ FCKConfig.DefaultLanguage ] )
-			this.DefaultLanguage = FCKConfig.DefaultLanguage ;
-		else
-			this.DefaultLanguage = 'en' ;
-
-		this.ActiveLanguage = new Object() ;
-		this.ActiveLanguage.Code = this.GetActiveLanguage() ;
-		this.ActiveLanguage.Name = this.AvailableLanguages[ this.ActiveLanguage.Code ] ;
-	}
-} ;

+ 0 - 152
main/inc/lib/fckeditor/editor/_source/internals/fcklisthandler.js

@@ -1,152 +0,0 @@
-/*
- * FCKeditor - The text editor for Internet - http://www.fckeditor.net
- * Copyright (C) 2003-2010 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 ==
- *
- * Tool object to manage HTML lists items (UL, OL and LI).
- */
-
-var FCKListHandler =
-{
-	OutdentListItem : function( listItem )
-	{
-		var eParent = listItem.parentNode ;
-
-		// It may happen that a LI is not in a UL or OL (Orphan).
-		if ( eParent.tagName.toUpperCase().Equals( 'UL','OL' ) )
-		{
-			var oDocument = FCKTools.GetElementDocument( listItem ) ;
-			var oDogFrag = new FCKDocumentFragment( oDocument ) ;
-
-			// All children and successive siblings will be moved to a a DocFrag.
-			var eNextSiblings = oDogFrag.RootNode ;
-			var eHasLiSibling = false ;
-
-			// If we have nested lists inside it, let's move it to the list of siblings.
-			var eChildList = FCKDomTools.GetFirstChild( listItem, ['UL','OL'] ) ;
-			if ( eChildList )
-			{
-				eHasLiSibling = true ;
-
-				var eChild ;
-				// The extra () is to avoid a warning with strict error checking. This is ok.
-				while ( (eChild = eChildList.firstChild) )
-					eNextSiblings.appendChild( eChildList.removeChild( eChild ) ) ;
-
-				FCKDomTools.RemoveNode( eChildList ) ;
-			}
-
-			// Move all successive siblings.
-			var eSibling ;
-			var eHasSuccessiveLiSibling = false ;
-			// The extra () is to avoid a warning with strict error checking. This is ok.
-			while ( (eSibling = listItem.nextSibling) )
-			{
-				if ( !eHasLiSibling && eSibling.nodeType == 1 && eSibling.nodeName.toUpperCase() == 'LI' )
-					eHasSuccessiveLiSibling = eHasLiSibling = true ;
-
-				eNextSiblings.appendChild( eSibling.parentNode.removeChild( eSibling ) ) ;
-
-				// If a sibling is a incorrectly nested UL or OL, consider only its children.
-				if ( !eHasSuccessiveLiSibling && eSibling.nodeType == 1 && eSibling.nodeName.toUpperCase().Equals( 'UL','OL' ) )
-					FCKDomTools.RemoveNode( eSibling, true ) ;
-			}
-
-			// If we are in a list chain.
-			var sParentParentTag = eParent.parentNode.tagName.toUpperCase() ;
-			var bWellNested = ( sParentParentTag == 'LI' ) ;
-			if ( bWellNested || sParentParentTag.Equals( 'UL','OL' ) )
-			{
-				if ( eHasLiSibling )
-				{
-					var eChildList = eParent.cloneNode( false ) ;
-					oDogFrag.AppendTo( eChildList ) ;
-					listItem.appendChild( eChildList ) ;
-				}
-				else if ( bWellNested )
-					oDogFrag.InsertAfterNode( eParent.parentNode ) ;
-				else
-					oDogFrag.InsertAfterNode( eParent ) ;
-
-				// Move the LI after its parent.parentNode (the upper LI in the hierarchy).
-				if ( bWellNested )
-					FCKDomTools.InsertAfterNode( eParent.parentNode, eParent.removeChild( listItem ) ) ;
-				else
-					FCKDomTools.InsertAfterNode( eParent, eParent.removeChild( listItem ) ) ;
-			}
-			else
-			{
-				if ( eHasLiSibling )
-				{
-					var eNextList = eParent.cloneNode( false ) ;
-					oDogFrag.AppendTo( eNextList ) ;
-					FCKDomTools.InsertAfterNode( eParent, eNextList ) ;
-				}
-
-				var eBlock = oDocument.createElement( FCKConfig.EnterMode == 'p' ? 'p' : 'div' ) ;
-				FCKDomTools.MoveChildren( eParent.removeChild( listItem ), eBlock ) ;
-				FCKDomTools.InsertAfterNode( eParent, eBlock ) ;
-
-				if ( FCKConfig.EnterMode == 'br' )
-				{
-					// We need the bogus to make it work properly. In Gecko, we
-					// need it before the new block, on IE, after it.
-					if ( FCKBrowserInfo.IsGecko )
-						eBlock.parentNode.insertBefore( FCKTools.CreateBogusBR( oDocument ), eBlock ) ;
-					else
-						FCKDomTools.InsertAfterNode( eBlock, FCKTools.CreateBogusBR( oDocument ) ) ;
-
-					FCKDomTools.RemoveNode( eBlock, true ) ;
-				}
-			}
-
-			if ( this.CheckEmptyList( eParent ) )
-				FCKDomTools.RemoveNode( eParent, true ) ;
-		}
-	},
-
-	CheckEmptyList : function( listElement )
-	{
-		return ( FCKDomTools.GetFirstChild( listElement, 'LI' ) == null ) ;
-	},
-
-	// Check if the list has contents (excluding nested lists).
-	CheckListHasContents : function( listElement )
-	{
-		var eChildNode = listElement.firstChild ;
-
-		while ( eChildNode )
-		{
-			switch ( eChildNode.nodeType )
-			{
-				case 1 :
-					if ( !eChildNode.nodeName.IEquals( 'UL','LI' ) )
-						return true ;
-					break ;
-
-				case 3 :
-					if ( eChildNode.nodeValue.Trim().length > 0 )
-						return true ;
-			}
-
-			eChildNode = eChildNode.nextSibling ;
-		}
-
-		return false ;
-	}
-} ;

+ 0 - 63
main/inc/lib/fckeditor/editor/_source/internals/fcklistslib.js

@@ -1,63 +0,0 @@
-/*
- * FCKeditor - The text editor for Internet - http://www.fckeditor.net
- * Copyright (C) 2003-2010 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 ==
- *
- * Library of keys collections.
- *
- * Test have shown that check for the existence of a key in an object is the
- * most efficient list entry check (10x faster that regex). Example:
- *		if ( FCKListsLib.<ListName>[key] != null )
- */
-
-var FCKListsLib =
-{
-	// We are not handling <ins> and <del> as block elements, for now.
-	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 },
-
-	// Block elements that may be filled with &nbsp; if empty.
-	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 },
-
-	// Inline elements which MUST have child nodes.
-	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 },
-
-	// Inline elements which are not marked as empty "Empty" in the XHTML DTD.
-	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 },
-
-	// Elements marked as empty "Empty" in the XHTML DTD.
-	EmptyElements : { base:1,col:1,meta:1,link:1,hr:1,br:1,param:1,img:1,area:1,input:1 },
-
-	// Elements that may be considered the "Block boundary" in an element path.
-	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 },
-
-	// Elements that may be considered the "Block limit" in an element path.
-	PathBlockLimitElements : { body:1,div:1,td:1,th:1,caption:1,form:1 },
-
-	// Block elements for the Styles System.
-	StyleBlockElements : { address:1,div:1,h1:1,h2:1,h3:1,h4:1,h5:1,h6:1,p:1,pre:1 },
-
-	// Object elements for the Styles System.
-	StyleObjectElements : { img:1,hr:1,li:1,table:1,tr:1,td:1,embed:1,object:1,ol:1,ul:1 },
-
-	// Elements that accept text nodes, but are not possible to edit in the browser.
-	NonEditableElements : { button:1,option:1,script:1,iframe:1,textarea:1,object:1,embed:1,map:1,applet:1 },
-
-	// Elements used to separate block contents.
-	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 }
-} ;

+ 0 - 46
main/inc/lib/fckeditor/editor/_source/internals/fckplugins.js

@@ -1,46 +0,0 @@
-/*
- * FCKeditor - The text editor for Internet - http://www.fckeditor.net
- * Copyright (C) 2003-2010 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 ==
- *
- * Defines the FCKPlugins object that is responsible for loading the Plugins.
- */
-
-var FCKPlugins = FCK.Plugins = new Object() ;
-FCKPlugins.ItemsCount = 0 ;
-FCKPlugins.Items = new Object() ;
-
-FCKPlugins.Load = function()
-{
-	var oItems = FCKPlugins.Items ;
-
-	// build the plugins collection.
-	for ( var i = 0 ; i < FCKConfig.Plugins.Items.length ; i++ )
-	{
-		var oItem = FCKConfig.Plugins.Items[i] ;
-		var oPlugin = oItems[ oItem[0] ] = new FCKPlugin( oItem[0], oItem[1], oItem[2] ) ;
-		FCKPlugins.ItemsCount++ ;
-	}
-
-	// Load all items in the plugins collection.
-	for ( var s in oItems )
-		oItems[s].Load() ;
-
-	// This is a self destroyable function (must be called once).
-	FCKPlugins.Load = null ;
-}

+ 0 - 100
main/inc/lib/fckeditor/editor/_source/internals/fckregexlib.js

@@ -1,100 +0,0 @@
-/*
- * FCKeditor - The text editor for Internet - http://www.fckeditor.net
- * Copyright (C) 2003-2010 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 some Regular Expressions used by the editor.
- */
-
-var FCKRegexLib =
-{
-// This is the Regular expression used by the SetData method for the "&apos;" entity.
-AposEntity		: /&apos;/gi ,
-
-// Used by the Styles combo to identify styles that can't be applied to text.
-ObjectElements	: /^(?:IMG|TABLE|TR|TD|TH|INPUT|SELECT|TEXTAREA|HR|OBJECT|A|UL|OL|LI)$/i ,
-
-// List all named commands (commands that can be interpreted by the browser "execCommand" method.
-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,
-
-// Temporary text used to solve some browser specific limitations.
-ToReplace		: /___fcktoreplace:([\w]+)/ig ,
-
-// Get the META http-equiv attribute from the tag.
-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 ,
-
-// Temporary classes (Tables without border, Anchors with content) used in IE
-FCK_Class		: /\s*FCK__[^ ]*(?=\s+|$)/ ,
-
-// Validate element names (it must be in lowercase).
-ElementName		: /(^[a-z_:][\w.\-:]*\w$)|(^[a-z_]$)/ ,
-
-// Used in conjunction with the FCKConfig.ForceSimpleAmpersand configuration option.
-ForceSimpleAmpersand : /___FCKAmp___/g ,
-
-// Get the closing parts of the tags with no closing tags, like <br/>... gets the "/>" part.
-SpaceNoClose	: /\/>/g ,
-
-// Empty elements may be <p></p> or even a simple opening <p> (see #211).
-EmptyParagraph	: /^<(p|div|address|h\d|center)(?=[ >])[^>]*>\s*(<\/\1>)?$/ ,
-
-EmptyOutParagraph : /^<(p|div|address|h\d|center)(?=[ >])[^>]*>(?:\s*|&nbsp;|&#160;)(<\/\1>)?$/ ,
-
-TagBody			: /></ ,
-
-GeckoEntitiesMarker : /#\?-\:/g ,
-
-// We look for the "src" and href attribute with the " or ' or without one of
-// them. We have to do all in one, otherwise we will have problems with URLs
-// like "thumbnail.php?src=someimage.jpg" (SF-BUG 1554141).
-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/ ,
-
-// These regex are used to save the original event attributes in the 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,
-
-// [a-zA-Z0-9:]+ seams to be more efficient than [\w:]+
-InvalidSelfCloseTags : /(<(?!base|meta|link|hr|br|param|img|area|input)([a-zA-Z0-9:]+)[^>]*)\/>/gi,
-
-// All variables defined in a style attribute or style definition. The variable
-// name is returned with $2.
-StyleVariableAttName : /#\(\s*("|')(.+?)\1[^\)]*\s*\)/g,
-
-RegExp : /^\/(.*)\/([gim]*)$/,
-
-HtmlTag : /<[^\s<>](?:"[^"]*"|'[^']*'|[^<])*>/
-} ;

+ 0 - 447
main/inc/lib/fckeditor/editor/_source/internals/fckscayt.js

@@ -1,447 +0,0 @@
-/*
- * FCKeditor - The text editor for Internet - http://www.fckeditor.net
- * Copyright (C) 2003-2010 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 ==
- */
-
-var FCKScayt;
-
-(function()
-{
-	var scaytOnLoad = [] ;
-	var isEngineLoaded = ( FCK && FCK.EditorWindow && FCK.EditorWindow.parent.parent.scayt)
-						? true : false ;
-	var scaytEnable = false;
-	var scaytReady  = false;
-
-	function ScaytEngineLoad( callback )
-	{
-		if ( isEngineLoaded )
-			return ;
-
-		isEngineLoaded = true ;
-		var top = FCK.EditorWindow.parent.parent;
-
-		var init = function ()
-		{
-			window.scayt = top.scayt ;
-			InitScayt() ;
-			var ScaytCombobox =  FCKToolbarItems.LoadedItems[ 'ScaytCombobox' ] ;
-			ScaytCombobox && ScaytCombobox.SetEnabled( scyt_control && scyt_control.disabled ) ;
-			InitSetup() ;
-		};
-
-		if ( top.scayt )
-		{
-			init() ;
-			return ;
-		}
-
-		// Compose the scayt url.
-		if (FCK.Config.ScaytCustomUrl)
-			FCK.Config.ScaytCustomUrl = new String(FCK.Config.ScaytCustomUrl).replace( new RegExp( "^http[s]*:\/\/"),"") ;
-
-		var protocol	= document.location.protocol ;
-		var baseUrl		= FCK.Config.ScaytCustomUrl ||'svc.spellchecker.net/spellcheck3/lf/scayt/scayt4.js' ;
-		var scaytUrl	= protocol + '//' + baseUrl ;
-		var scaytConfigBaseUrl =  ParseUrl( scaytUrl ).path +  '/' ;
-
-		// SCAYT is targetted to CKEditor, so we need this trick to make it work here.
-		var CKEDITOR = top.window.CKEDITOR || ( top.window.CKEDITOR = {} ) ;
-		CKEDITOR._djScaytConfig =
-		{
-			baseUrl : scaytConfigBaseUrl,
-			addOnLoad : function()
-			{
-				init();
-			},
-			isDebug : false
-		};
-
-
-		if ( callback )
-			scaytOnLoad.push( callback ) ;
-
-		DoLoadScript( scaytUrl ) ;
-	}
-
-	/**
-	 * DoLoadScript - load scripts with dinamic tag script creating
-	 * @param string url
-	 */
-	function DoLoadScript( url )
-	{
-		if (!url)
-            return false ;
-		var top = FCK.EditorWindow.parent.parent;
-        var s = top.document.createElement('script') ;
-        s.type = 'text/javascript' ;
-        s.src = url ;
-        top.document.getElementsByTagName('head')[0].appendChild(s) ;
-
-        return true ;
-	}
-
-	function ParseUrl( data )
-	{
-		var m = data.match(/(.*)[\/\\]([^\/\\]+\.\w+)$/) ;
-		return m ? { path: m[1], file: m[2] } : data ;
-	}
-
-	function createScaytControl ()
-	{
-		// Get public scayt params.
-		var oParams = {} ;
-		var top = FCK.EditorWindow.parent.parent;
-		oParams.srcNodeRef				= FCK.EditingArea.IFrame; 		// Get the iframe.
-		// syntax : AppName.AppVersion@AppRevision
-		//oParams.assocApp  = "FCKEDITOR." + FCKeditorAPI.Varsion + "@" + FCKeditorAPI.VersionBuild;
-		oParams.customerid 				= FCK.Config.ScaytCustomerid ;
-		oParams.customDictionaryName 	= FCK.Config.ScaytCustomDictionaryName ;
-		oParams.userDictionaryName 		= FCK.Config.ScaytUserDictionaryName ;
-		oParams.defLang 				= FCK.Config.ScaytDefLang ;
-
-		var scayt = top.scayt;
-		var scayt_control = window.scayt_control = new scayt( oParams ) ;
-	}
-
-	function InitScayt()
-	{
-		createScaytControl();
-
-		var scayt_control = window.scayt_control ;
-
-		if ( scayt_control )
-		{
-			scayt_control.setDisabled( false ) ;
-			scaytReady = true;
-			scaytEnable = !scayt_control.disabled ;
-
-			// set default scayt status
-			var ScaytCombobox = FCKToolbarItems.LoadedItems[ 'ScaytCombobox' ] ;
-			ScaytCombobox && ScaytCombobox.Enable() ;
-			ShowScaytState() ;
-		}
-
-		for ( var i = 0 ; i < scaytOnLoad.length ; i++ )
-		{
-			try
-			{
-				scaytOnLoad[i].call( this ) ;
-			}
-			catch(err)
-			{}
-		}
-	}
-
-	// ###
-	// SCAYT command class.
-	var ScaytCommand  = function()
-	{
-		name = 'Scayt' ;
-	}
-
-	ScaytCommand.prototype.Execute = function( action )
-	{
-		switch ( action )
-		{
-			case 'Options' :
-			case 'Langs' :
-			case 'About' :
-				if ( isEngineLoaded && scaytReady && !scaytEnable )
-				{
-					ScaytMessage( 'SCAYT is not enabled' );
-					break;
-				}
-
-				if ( isEngineLoaded && scaytReady )
-					FCKDialog.OpenDialog( 'Scayt', 'SCAYT Settings', 'dialog/fck_scayt.html?' + action.toLowerCase(), 343, 343 );
-				break;
-
-			default :
-				if ( !isEngineLoaded )
-				{
-					var me = this;
-					ScaytEngineLoad( function ()
-						{
-							me.SetEnabled( !window.scayt_control.disabled ) ;
-						}) ;
-
-					return true;
-				}
-				else if ( scaytReady )
-				{
-					// Switch the current scayt state.
-					if ( scaytEnable )
-						this.Disable() ;
-					else
-						this.Enable() ;
-
-					ShowScaytState() ;
-				}
-
-		}
-
-		if ( !isEngineLoaded )
-			return ScaytMessage( 'SCAYT is not loaded' ) || false;
-
-		if ( !scaytReady )
-			return ScaytMessage( 'SCAYT is not ready' ) || false;
-
-
-		return true;
-	}
-
-	ScaytCommand.prototype.Enable = function()
-	{
-		window.scayt_control.setDisabled( false ) ;
-		scaytEnable = true;
-	}
-
-	ScaytCommand.prototype.Disable = function()
-	{
-		window.scayt_control.setDisabled( true ) ;
-		scaytEnable = false;
-	}
-
-	ScaytCommand.prototype.SetEnabled = function( state )
-	{
-		if ( state )
-			this.Enable() ;
-		else
-			this.Disable() ;
-
-		ShowScaytState() ;
-		return true;
-	}
-
-	ScaytCommand.prototype.GetState = function()
-	{
-		return FCK_TRISTATE_OFF;
-	}
-
-	function ShowScaytState()
-	{
-		var combo = FCKToolbarItems.GetItem( 'SpellCheck' ) ;
-
-		if ( !combo || !combo._Combo || !combo._Combo._OuterTable )
-			return;
-
-		var bItem = combo._Combo._OuterTable.getElementsByTagName( 'img' )[1] ;
-		var dNode = combo._Combo.Items['trigger'] ;
-
-		if ( scaytEnable )
-		{
-			bItem.style.opacity = '1' ;
-			dNode.innerHTML = GetStatusLabel() ;
-		}
-		else
-		{
-			bItem.style.opacity = '0.5' ;
-			dNode.innerHTML = GetStatusLabel() ;
-		}
-	}
-
-	function GetStatusLabel()
-	{
-		if ( !scaytReady )
-			return  '<b>Enable SCAYT</b>' ;
-
-		return scaytEnable ? '<b>Disable SCAYT</b>' : '<b>Enable SCAYT</b>' ;
-	}
-
-	// ###
-	// Class for the toolbar item.
-	var ToolbarScaytComboBox = function( tooltip, style )
-	{
-		this.Command = FCKCommands.GetCommand( 'Scayt' ) ;
-		this.CommandName = 'Scayt' ;
-		this.Label = this.GetLabel() ;
-		this.Tooltip = FCKLang.ScaytTitle ;
-		this.Style = FCK_TOOLBARITEM_ONLYTEXT ; //FCK_TOOLBARITEM_ICONTEXT OR FCK_TOOLBARITEM_ONLYTEXT
-	}
-
-	ToolbarScaytComboBox.prototype = new FCKToolbarSpecialCombo ;
-
-	//Add the items to the combo list
-	ToolbarScaytComboBox.prototype.CreateItems = function()
-	{
-		this._Combo.AddItem( 'Trigger', '<b>Enable SCAYT</b>' );
-		this._Combo.AddItem( 'Options', FCKLang.ScaytTitleOptions || "Options"  );
-		this._Combo.AddItem( 'Langs', FCKLang.ScaytTitleLangs || "Languages");
-		this._Combo.AddItem( 'About', FCKLang.ScaytTitleAbout || "About");
-	}
-
-	// Label shown in the toolbar.
-	ToolbarScaytComboBox.prototype.GetLabel = function()
-	{
-		var strip = FCKConfig.SkinPath + 'fck_strip.gif';
-
-		return FCKBrowserInfo.IsIE ?
-				'<div class="TB_Button_Image"><img src="' + strip + '" style="top:-192px"></div>'
-			:
-				'<img class="TB_Button_Image" src="' + FCK_SPACER_PATH + '" style="background-position: 0px -192px;background-image: url(' + strip + ');">';
-	}
-
-	function ScaytMessage( m )
-	{
-		m && alert( m ) ;
-	}
-
-	var ScaytContextCommand = function()
-	{
-		name = 'ScaytContext' ;
-	}
-
-	ScaytContextCommand.prototype.Execute = function( contextInfo )
-	{
-		var action = contextInfo && contextInfo.action,
-			node = action && contextInfo.node,
-			scayt_control = window.scayt_control;
-
-		if ( node )
-		{
-			switch ( action )
-			{
-				case 'Suggestion' :
-					scayt_control.replace( node, contextInfo.suggestion ) ;
-					break ;
-				case 'Ignore' :
-					scayt_control.ignore( node ) ;
-					break ;
-				case 'Ignore All' :
-					scayt_control.ignoreAll( node ) ;
-					break ;
-				case 'Add Word' :
-					var top = FCK.EditorWindow.parent.parent ;
-					top.scayt.addWordToUserDictionary( node ) ;
-					break ;
-			}
-		}
-	}
-
-	// Register context menu listeners.
-	function InitSetup()
-	{
-		FCK.ContextMenu.RegisterListener(
-			{
-				AddItems : function( menu )
-				{
-					var top = FCK.EditorWindow.parent.parent;
-
-					var scayt_control = window.scayt_control,
-						scayt = top.scayt;
-
-					if ( !scayt_control )
-						return;
-
-					var node = scayt_control.getScaytNode() ;
-
-					if ( !node )
-						return;
-
-					var suggestions = scayt.getSuggestion( scayt_control.getWord( node ), scayt_control.getLang() ) ;
-
-					if ( !suggestions || !suggestions.length )
-						return;
-
-					menu.AddSeparator() ;
-
-					var maxSuggestions = FCK.Config.ScaytMaxSuggestions || 5 ;
-					var suggAveCount = ( maxSuggestions == -1 ) ? suggestions.length : maxSuggestions ;
-
-					for ( var i = 0 ; i < suggAveCount ; i += 1 )
-					{
-						if ( suggestions[i] )
-						{
-							menu.AddItem( 'ScaytContext', suggestions[i], null, false, {
-								'action' : 'Suggestion',
-								'node' : node,
-								'suggestion' : suggestions[i] } ) ;
-						}
-					}
-
-					menu.AddSeparator() ;
-
-					menu.AddItem( 'ScaytContext', 'Ignore', null, false, { 'action' : 'Ignore', 'node' : node } );
-					menu.AddItem( 'ScaytContext', 'Ignore All', null, false, { 'action' : 'Ignore All', 'node' : node } );
-					menu.AddItem( 'ScaytContext', 'Add Word', null, false, { 'action' : 'Add Word', 'node' : node } );
-					try
-					{
-						if (scaytReady && scaytEnable)
-							scayt_control.fireOnContextMenu( null, FCK.ContextMenu._InnerContextMenu);
-
-					}
-					catch( err ) {}
-				}
-			}) ;
-
-		FCK.Events.AttachEvent( 'OnPaste', function()
-			{
-					window.scayt_control.refresh() ;
-					return true;
-			} ) ;
-	}
-
-	// ##
-	// Register event listeners.
-
- 	FCK.Events.AttachEvent( 'OnAfterSetHTML', function()
-		{
-			if ( FCKConfig.SpellChecker == 'SCAYT' )
-			{
-				if ( !isEngineLoaded && FCK.Config.ScaytAutoStartup )
-					ScaytEngineLoad() ;
-
-				if ( FCK.EditMode == FCK_EDITMODE_WYSIWYG && isEngineLoaded && scaytReady )
-					createScaytControl();
-
-				ShowScaytState() ;
-			}
-		} ) ;
-
-	FCK.Events.AttachEvent( 'OnBeforeGetData', function()
-		{
-			scaytReady && window.scayt_control.reset();
-		} ) ;
-
-	FCK.Events.AttachEvent( 'OnAfterGetData', function()
-		{
-			scaytReady && window.scayt_control.refresh();
-		} ) ;
-
-	// ###
-	// The main object that holds the SCAYT interaction in the code.
-	FCKScayt =
-	{
-		CreateCommand : function()
-		{
-			return new ScaytCommand();
-		},
-
-		CreateContextCommand : function()
-		{
-			return new ScaytContextCommand();
-		},
-
-		CreateToolbarItem : function()
-		{
-			return new ToolbarScaytComboBox() ;
-		}
-	} ;
-})() ;

+ 0 - 42
main/inc/lib/fckeditor/editor/_source/internals/fckselection.js

@@ -1,42 +0,0 @@
-/*
- * FCKeditor - The text editor for Internet - http://www.fckeditor.net
- * Copyright (C) 2003-2010 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 ==
- *
- * Active selection functions.
- */
-
-var FCKSelection = FCK.Selection =
-{
-	GetParentBlock : function()
-	{
-		var retval = this.GetParentElement() ;
-		while ( retval )
-		{
-			if ( FCKListsLib.BlockBoundaries[retval.nodeName.toLowerCase()] )
-				break ;
-			retval = retval.parentNode ;
-		}
-		return retval ;
-	},
-
-	ApplyStyle : function( styleDefinition )
-	{
-		FCKStyles.ApplyStyle( new FCKStyle( styleDefinition ) ) ;
-	}
-} ;

+ 0 - 231
main/inc/lib/fckeditor/editor/_source/internals/fckselection_gecko.js

@@ -1,231 +0,0 @@
-/*
- * FCKeditor - The text editor for Internet - http://www.fckeditor.net
- * Copyright (C) 2003-2010 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 ==
- *
- * Active selection functions. (Gecko specific implementation)
- */
-
-// Get the selection type (like document.select.type in IE).
-FCKSelection.GetType = function()
-{
-	// By default set the type to "Text".
-	var type = 'Text' ;
-
-	// Check if the actual selection is a Control (IMG, TABLE, HR, etc...).
-
-	var sel ;
-	try { sel = this.GetSelection() ; } catch (e) {}
-
-	if ( sel && sel.rangeCount == 1 )
-	{
-		var range = sel.getRangeAt(0) ;
-		if ( range.startContainer == range.endContainer
-			&& ( range.endOffset - range.startOffset ) == 1
-			&& range.startContainer.nodeType == 1
-			&& FCKListsLib.StyleObjectElements[ range.startContainer.childNodes[ range.startOffset ].nodeName.toLowerCase() ] )
-		{
-			type = 'Control' ;
-		}
-	}
-
-	return type ;
-}
-
-// Retrieves the selected element (if any), just in the case that a single
-// element (object like and image or a table) is selected.
-FCKSelection.GetSelectedElement = function()
-{
-	var selection = !!FCK.EditorWindow && this.GetSelection() ;
-	if ( !selection || selection.rangeCount < 1 )
-		return null ;
-
-	var range = selection.getRangeAt( 0 ) ;
-	if ( range.startContainer != range.endContainer || range.startContainer.nodeType != 1 || range.startOffset != range.endOffset - 1 )
-		return null ;
-
-	var node = range.startContainer.childNodes[ range.startOffset ] ;
-	if ( node.nodeType != 1 )
-		return null ;
-
-	return node ;
-}
-
-FCKSelection.GetParentElement = function()
-{
-	if ( this.GetType() == 'Control' )
-		return FCKSelection.GetSelectedElement().parentNode ;
-	else
-	{
-		var oSel = this.GetSelection() ;
-		if ( oSel )
-		{
-			// if anchorNode == focusNode, see if the selection is text only or including nodes.
-			// if text only, return the parent node.
-			// if the selection includes DOM nodes, then the anchorNode is the nearest container.
-			if ( oSel.anchorNode && oSel.anchorNode == oSel.focusNode )
-			{
-				var oRange = oSel.getRangeAt( 0 ) ;
-				if ( oRange.collapsed || oRange.startContainer.nodeType == 3 )
-					return oSel.anchorNode.parentNode ;
-				else
-					return oSel.anchorNode ;
-			}
-
-			// looks like we're having a large selection here. To make the behavior same as IE's TextRange.parentElement(),
-			// we need to find the nearest ancestor node which encapsulates both the beginning and the end of the selection.
-			// TODO: A simpler logic can be found.
-			var anchorPath = new FCKElementPath( oSel.anchorNode ) ;
-			var focusPath = new FCKElementPath( oSel.focusNode ) ;
-			var deepPath = null ;
-			var shallowPath = null ;
-			if ( anchorPath.Elements.length > focusPath.Elements.length )
-			{
-				deepPath = anchorPath.Elements ;
-				shallowPath = focusPath.Elements ;
-			}
-			else
-			{
-				deepPath = focusPath.Elements ;
-				shallowPath = anchorPath.Elements ;
-			}
-
-			var deepPathBase = deepPath.length - shallowPath.length ;
-			for( var i = 0 ; i < shallowPath.length ; i++)
-			{
-				if ( deepPath[deepPathBase + i] == shallowPath[i])
-					return shallowPath[i];
-			}
-			return null ;
-		}
-	}
-	return null ;
-}
-
-FCKSelection.GetBoundaryParentElement = function( startBoundary )
-{
-	if ( ! FCK.EditorWindow )
-		return null ;
-	if ( this.GetType() == 'Control' )
-		return FCKSelection.GetSelectedElement().parentNode ;
-	else
-	{
-		var oSel = this.GetSelection() ;
-		if ( oSel && oSel.rangeCount > 0 )
-		{
-			var range = oSel.getRangeAt( startBoundary ? 0 : ( oSel.rangeCount - 1 ) ) ;
-
-			var element = startBoundary ? range.startContainer : range.endContainer ;
-
-			return ( element.nodeType == 1 ? element : element.parentNode ) ;
-		}
-	}
-	return null ;
-}
-
-FCKSelection.SelectNode = function( element )
-{
-	var oRange = FCK.EditorDocument.createRange() ;
-	oRange.selectNode( element ) ;
-
-	var oSel = this.GetSelection() ;
-	oSel.removeAllRanges() ;
-	oSel.addRange( oRange ) ;
-}
-
-FCKSelection.Collapse = function( toStart )
-{
-	var oSel = this.GetSelection() ;
-
-	if ( toStart == null || toStart === true )
-		oSel.collapseToStart() ;
-	else
-		oSel.collapseToEnd() ;
-}
-
-// The "nodeTagName" parameter must be Upper Case.
-FCKSelection.HasAncestorNode = function( nodeTagName )
-{
-	var oContainer = this.GetSelectedElement() ;
-	if ( ! oContainer && FCK.EditorWindow )
-	{
-		try		{ oContainer = this.GetSelection().getRangeAt(0).startContainer ; }
-		catch(e){}
-	}
-
-	while ( oContainer )
-	{
-		if ( oContainer.nodeType == 1 && oContainer.nodeName.IEquals( nodeTagName ) ) return true ;
-		oContainer = oContainer.parentNode ;
-	}
-
-	return false ;
-}
-
-// The "nodeTagName" parameter must be Upper Case.
-FCKSelection.MoveToAncestorNode = function( nodeTagName )
-{
-	var oNode ;
-
-	var oContainer = this.GetSelectedElement() ;
-	if ( ! oContainer ) {
-        var selection = this.GetSelection();
-        if (selection.rangeCount) {
-		    oContainer = selection.getRangeAt(0).startContainer ;
-        }
-    }
-
-	while ( oContainer ) {
-		if ( oContainer.nodeName.IEquals( nodeTagName ) )
-			return oContainer ;
-
-		oContainer = oContainer.parentNode ;
-	}
-	return null;
-}
-
-FCKSelection.Delete = function()
-{
-	// Gets the actual selection.
-	var oSel = this.GetSelection() ;
-
-	// Deletes the actual selection contents.
-	for ( var i = 0 ; i < oSel.rangeCount ; i++ )
-	{
-		oSel.getRangeAt(i).deleteContents() ;
-	}
-
-	return oSel ;
-}
-
-/**
- * Returns the native selection object.
- */
-FCKSelection.GetSelection = function()
-{
-	return FCK.EditorWindow.getSelection() ;
-}
-
-// The following are IE only features (we don't need then in other browsers
-// currently).
-FCKSelection.Save = function()
-{}
-FCKSelection.Restore = function()
-{}
-FCKSelection.Release = function()
-{}

+ 0 - 288
main/inc/lib/fckeditor/editor/_source/internals/fckselection_ie.js

@@ -1,288 +0,0 @@
-/*
- * FCKeditor - The text editor for Internet - http://www.fckeditor.net
- * Copyright (C) 2003-2010 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 ==
- *
- * Active selection functions. (IE specific implementation)
- */
-
-// Get the selection type.
-FCKSelection.GetType = function()
-{
-	// It is possible that we can still get a text range object even when type=='None' is returned by IE.
-	// So we'd better check the object returned by createRange() rather than by looking at the type.
-	try
-	{
-		var ieType = FCKSelection.GetSelection().type ;
-		if ( ieType == 'Control' || ieType == 'Text' )
-			return ieType ;
-
-		if ( this.GetSelection().createRange().parentElement )
-			return 'Text' ;
-	}
-	catch(e)
-	{
-		// Nothing to do, it will return None properly.
-	}
-
-	return 'None' ;
-} ;
-
-// Retrieves the selected element (if any), just in the case that a single
-// element (object like and image or a table) is selected.
-FCKSelection.GetSelectedElement = function()
-{
-	if ( this.GetType() == 'Control' )
-	{
-		var oRange = this.GetSelection().createRange() ;
-
-		if ( oRange && oRange.item )
-			return this.GetSelection().createRange().item(0) ;
-	}
-	return null ;
-} ;
-
-FCKSelection.GetParentElement = function()
-{
-	switch ( this.GetType() )
-	{
-		case 'Control' :
-			var el = FCKSelection.GetSelectedElement() ;
-			return el ? el.parentElement : null ;
-
-		case 'None' :
-			return null ;
-
-		default :
-			return this.GetSelection().createRange().parentElement() ;
-	}
-} ;
-
-FCKSelection.GetBoundaryParentElement = function( startBoundary )
-{
-	switch ( this.GetType() )
-	{
-		case 'Control' :
-			var el = FCKSelection.GetSelectedElement() ;
-			return el ? el.parentElement : null ;
-
-		case 'None' :
-			return null ;
-
-		default :
-			var doc = FCK.EditorDocument ;
-
-			var range = doc.selection.createRange() ;
-			range.collapse( startBoundary !== false ) ;
-
-			var el = range.parentElement() ;
-
-			// It may happen that range is comming from outside "doc", so we
-			// must check it (#1204).
-			return FCKTools.GetElementDocument( el ) == doc ? el : null ;
-	}
-} ;
-
-FCKSelection.SelectNode = function( node )
-{
-	FCK.Focus() ;
-	this.GetSelection().empty() ;
-	var oRange ;
-	try
-	{
-		// Try to select the node as a control.
-		oRange = FCK.EditorDocument.body.createControlRange() ;
-		oRange.addElement( node ) ;
-		oRange.select() ;
-	}
-	catch(e)
-	{
-		// If failed, select it as a text range.
-		oRange = FCK.EditorDocument.body.createTextRange() ;
-		oRange.moveToElementText( node ) ;
-		oRange.select() ;
-	}
-
-} ;
-
-FCKSelection.Collapse = function( toStart )
-{
-	FCK.Focus() ;
-	if ( this.GetType() == 'Text' )
-	{
-		var oRange = this.GetSelection().createRange() ;
-		oRange.collapse( toStart == null || toStart === true ) ;
-		oRange.select() ;
-	}
-} ;
-
-// The "nodeTagName" parameter must be Upper Case.
-FCKSelection.HasAncestorNode = function( nodeTagName )
-{
-	var oContainer ;
-
-	if ( this.GetSelection().type == "Control" )
-	{
-		oContainer = this.GetSelectedElement() ;
-	}
-	else
-	{
-		var oRange  = this.GetSelection().createRange() ;
-		oContainer = oRange.parentElement() ;
-	}
-
-	while ( oContainer )
-	{
-		if ( oContainer.nodeName.IEquals( nodeTagName ) ) return true ;
-		oContainer = oContainer.parentNode ;
-	}
-
-	return false ;
-} ;
-
-// The "nodeTagName" parameter must be UPPER CASE.
-// It can be also an array of names
-FCKSelection.MoveToAncestorNode = function( nodeTagName )
-{
-	var oNode, 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)
-			{
-				oNode = oRange(i).parentNode ;
-				break ;
-			}
-		}
-	}
-	else
-	{
-		oRange  = this.GetSelection().createRange() ;
-		oNode = oRange.parentElement() ;
-	}
-
-	while ( oNode && !oNode.nodeName.Equals( nodeTagName ) )
-		oNode = oNode.parentNode ;
-
-	return oNode ;
-} ;
-
-FCKSelection.Delete = function()
-{
-	// Gets the actual selection.
-	var oSel = this.GetSelection() ;
-
-	// Deletes the actual selection contents.
-	if ( oSel.type.toLowerCase() != "none" )
-	{
-		oSel.clear() ;
-	}
-
-	return oSel ;
-} ;
-
-/**
- * Returns the native selection object.
- */
-FCKSelection.GetSelection = function()
-{
-	this.Restore() ;
-	return FCK.EditorDocument.selection ;
-}
-
-FCKSelection.Save = function( lock )
-{
-	var editorDocument = FCK.EditorDocument ;
-
-	if ( !editorDocument )
-		return ;
-
-	// Avoid saving again a selection while a dialog is open #2616
-	if ( this.locked )
-		return ;
-	this.locked = !!lock ;
-
-	var selection = editorDocument.selection ;
-	var range ;
-
-	if ( selection )
-	{
-		// The call might fail if the document doesn't have the focus (#1801),
-		// but we don't want to modify the current selection (#2495) with a call to FCK.Focus() ;
-		try {
-			range = selection.createRange() ;
-		}
-		catch(e) {}
-
-		// Ensure that the range comes from the editor document.
-		if ( range )
-		{
-			if ( range.parentElement && FCKTools.GetElementDocument( range.parentElement() ) != editorDocument )
-				range = null ;
-			else if ( range.item && FCKTools.GetElementDocument( range.item(0) )!= editorDocument )
-				range = null ;
-		}
-	}
-
-	this.SelectionData = range ;
-}
-
-FCKSelection._GetSelectionDocument = function( selection )
-{
-	var range = selection.createRange() ;
-	if ( !range )
-		return null;
-	else if ( range.item )
-		return FCKTools.GetElementDocument( range.item( 0 ) ) ;
-	else
-		return FCKTools.GetElementDocument( range.parentElement() ) ;
-}
-
-FCKSelection.Restore = function()
-{
-	if ( this.SelectionData )
-	{
-		FCK.IsSelectionChangeLocked = true ;
-
-		try
-		{
-			// Don't repeat the restore process if the editor document is already selected.
-			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()
-{
-	this.locked = false ;
-	delete this.SelectionData ;
-}

+ 0 - 381
main/inc/lib/fckeditor/editor/_source/internals/fckstyles.js

@@ -1,381 +0,0 @@
-/*
- * FCKeditor - The text editor for Internet - http://www.fckeditor.net
- * Copyright (C) 2003-2010 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 ==
- *
- * Handles styles in a give document.
- */
-
-var FCKStyles = FCK.Styles =
-{
-	_Callbacks : {},
-	_ObjectStyles : {},
-
-	ApplyStyle : function( style )
-	{
-		if ( typeof style == 'string' )
-			style = this.GetStyles()[ style ] ;
-
-		if ( style )
-		{
-			if ( style.GetType() == FCK_STYLE_OBJECT )
-				style.ApplyToObject( FCKSelection.GetSelectedElement() ) ;
-			else
-				style.ApplyToSelection( FCK.EditorWindow ) ;
-
-			FCK.Events.FireEvent( 'OnSelectionChange' ) ;
-		}
-	},
-
-	RemoveStyle : function( style )
-	{
-		if ( typeof style == 'string' )
-			style = this.GetStyles()[ style ] ;
-
-		if ( style )
-		{
-			style.RemoveFromSelection( FCK.EditorWindow ) ;
-			FCK.Events.FireEvent( 'OnSelectionChange' ) ;
-		}
-	},
-
-	/**
-	 * Defines a callback function to be called when the current state of a
-	 * specific style changes.
-	 */
-	AttachStyleStateChange : function( styleName, callback, callbackOwner )
-	{
-		var callbacks = this._Callbacks[ styleName ] ;
-
-		if ( !callbacks )
-			callbacks = this._Callbacks[ styleName ] = [] ;
-
-		callbacks.push( [ callback, callbackOwner ] ) ;
-	},
-
-	CheckSelectionChanges : function()
-	{
-		var startElement = FCKSelection.GetBoundaryParentElement( true ) ;
-
-		if ( !startElement )
-			return ;
-
-		// Walks the start node parents path, checking all styles that are being listened.
-		var path = new FCKElementPath( startElement ) ;
-		var styles = this.GetStyles() ;
-
-		for ( var styleName in styles )
-		{
-			var callbacks = this._Callbacks[ styleName ] ;
-
-			if ( callbacks )
-			{
-				var style = styles[ styleName ] ;
-				var state = style.CheckActive( path ) ;
-
-				if ( state != ( style._LastState || null ) )
-				{
-					style._LastState = state ;
-
-					for ( var i = 0 ; i < callbacks.length ; i++ )
-					{
-						var callback = callbacks[i][0] ;
-						var callbackOwner = callbacks[i][1] ;
-
-						callback.call( callbackOwner || window, styleName, state ) ;
-					}
-				}
-			}
-		}
-	},
-
-	CheckStyleInSelection : function( styleName )
-	{
-		return false ;
-	},
-
-	_GetRemoveFormatTagsRegex : function ()
-	{
-		var regex = new RegExp( '^(?:' + FCKConfig.RemoveFormatTags.replace( /,/g,'|' ) + ')$', 'i' ) ;
-
-		return (this._GetRemoveFormatTagsRegex = function()
-		{
-			return regex ;
-		})
-		&& regex  ;
-	},
-
-	/**
-	 * Remove all styles from the current selection.
-	 * TODO:
-	 *  - This is almost a duplication of FCKStyle.RemoveFromRange. We should
-	 *    try to merge things.
-	 */
-	RemoveAll : function()
-	{
-		var range = new FCKDomRange( FCK.EditorWindow ) ;
-		range.MoveToSelection() ;
-
-		if ( range.CheckIsCollapsed() )
-			return ;
-
-			// Expand the range, if inside inline element boundaries.
-		range.Expand( 'inline_elements' ) ;
-
-		// Get the bookmark nodes.
-		// Bookmark the range so we can re-select it after processing.
-		var bookmark = range.CreateBookmark( true ) ;
-
-		// The style will be applied within the bookmark boundaries.
-		var startNode	= range.GetBookmarkNode( bookmark, true ) ;
-		var endNode		= range.GetBookmarkNode( bookmark, false ) ;
-
-		range.Release( true ) ;
-
-		var tagsRegex = this._GetRemoveFormatTagsRegex() ;
-
-		// We need to check the selection boundaries (bookmark spans) to break
-		// the code in a way that we can properly remove partially selected nodes.
-		// For example, removing a <b> style from
-		//		<b>This is [some text</b> to show <b>the] problem</b>
-		// ... where [ and ] represent the selection, must result:
-		//		<b>This is </b>[some text to show the]<b> problem</b>
-		// The strategy is simple, we just break the partial nodes before the
-		// removal logic, having something that could be represented this way:
-		//		<b>This is </b>[<b>some text</b> to show <b>the</b>]<b> problem</b>
-
-		// Let's start checking the start boundary.
-		var path = new FCKElementPath( startNode ) ;
-		var pathElements = path.Elements ;
-		var pathElement ;
-
-		for ( var i = 1 ; i < pathElements.length ; i++ )
-		{
-			pathElement = pathElements[i] ;
-
-			if ( pathElement == path.Block || pathElement == path.BlockLimit )
-				break ;
-
-			// If this element can be removed (even partially).
-			if ( tagsRegex.test( pathElement.nodeName ) )
-				FCKDomTools.BreakParent( startNode, pathElement, range ) ;
-		}
-
-		// Now the end boundary.
-		path = new FCKElementPath( endNode ) ;
-		pathElements = path.Elements ;
-
-		for ( var i = 1 ; i < pathElements.length ; i++ )
-		{
-			pathElement = pathElements[i] ;
-
-			if ( pathElement == path.Block || pathElement == path.BlockLimit )
-				break ;
-
-			elementName = pathElement.nodeName.toLowerCase() ;
-
-			// If this element can be removed (even partially).
-			if ( tagsRegex.test( pathElement.nodeName ) )
-				FCKDomTools.BreakParent( endNode, pathElement, range ) ;
-		}
-
-		// Navigate through all nodes between the bookmarks.
-		var currentNode = FCKDomTools.GetNextSourceNode( startNode, true, 1 ) ;
-
-		while ( currentNode )
-		{
-			// If we have reached the end of the selection, stop looping.
-			if ( currentNode == endNode )
-				break ;
-
-			// Cache the next node to be processed. Do it now, because
-			// currentNode may be removed.
-			var nextNode = FCKDomTools.GetNextSourceNode( currentNode, false, 1 ) ;
-
-			// Remove elements nodes that match with this style rules.
-			if ( tagsRegex.test( currentNode.nodeName ) )
-				FCKDomTools.RemoveNode( currentNode, true ) ;
-			else
-				FCKDomTools.RemoveAttributes( currentNode, FCKConfig.RemoveAttributesArray );
-
-			currentNode = nextNode ;
-		}
-
-		range.SelectBookmark( bookmark ) ;
-
-		FCK.Events.FireEvent( 'OnSelectionChange' ) ;
-	},
-
-	GetStyle : function( styleName )
-	{
-		return this.GetStyles()[ styleName ] ;
-	},
-
-	GetStyles : function()
-	{
-		var styles = this._GetStyles ;
-		if ( !styles )
-		{
-			styles = this._GetStyles = FCKTools.Merge(
-				this._LoadStylesCore(),
-				this._LoadStylesCustom(),
-				this._LoadStylesXml() ) ;
-		}
-		return styles ;
-	},
-
-	CheckHasObjectStyle : function( elementName )
-	{
-		return !!this._ObjectStyles[ elementName ] ;
-	},
-
-	_LoadStylesCore : function()
-	{
-		var styles = {};
-		var styleDefs = FCKConfig.CoreStyles ;
-
-		for ( var styleName in styleDefs )
-		{
-			// Core styles are prefixed with _FCK_.
-			var style = styles[ '_FCK_' + styleName ] = new FCKStyle( styleDefs[ styleName ] ) ;
-			style.IsCore = true ;
-		}
-		return styles ;
-	},
-
-	_LoadStylesCustom : function()
-	{
-		var styles = {};
-		var styleDefs = FCKConfig.CustomStyles ;
-
-		if ( styleDefs )
-		{
-			for ( var styleName in styleDefs )
-			{
-				var style = styles[ styleName ] = new FCKStyle( styleDefs[ styleName ] ) ;
-				style.Name = styleName ;
-			}
-		}
-
-		return styles ;
-	},
-
-	_LoadStylesXml : function()
-	{
-		var styles = {};
-
-		var stylesXmlPath = FCKConfig.StylesXmlPath ;
-
-		if ( !stylesXmlPath || stylesXmlPath.length == 0 )
-			return styles ;
-
-		// Load the XML file into a FCKXml object.
-		var xml = new FCKXml() ;
-		xml.LoadUrl( stylesXmlPath ) ;
-
-		var stylesXmlObj = FCKXml.TransformToObject( xml.SelectSingleNode( 'Styles' ) ) ;
-
-		// Get the "Style" nodes defined in the XML file.
-		var styleNodes = stylesXmlObj.$Style ;
-
-		// Check that it did contain some valid nodes
-		if ( !styleNodes )
-			return styles ;
-
-		// Add each style to our "Styles" collection.
-		for ( var i = 0 ; i < styleNodes.length ; i++ )
-		{
-			var styleNode = styleNodes[i] ;
-
-			var element = ( styleNode.element || '' ).toLowerCase() ;
-
-			if ( element.length == 0 )
-				throw( 'The element name is required. Error loading "' + stylesXmlPath + '"' ) ;
-
-			var styleDef = {
-				Element : element,
-				Attributes : {},
-				Styles : {},
-				Overrides : []
-			} ;
-
-			// Get the attributes defined for the style (if any).
-			var attNodes = styleNode.$Attribute || [] ;
-
-			// Add the attributes to the style definition object.
-			for ( var j = 0 ; j < attNodes.length ; j++ )
-			{
-				styleDef.Attributes[ attNodes[j].name ] = attNodes[j].value ;
-			}
-
-			// Get the styles defined for the style (if any).
-			var cssStyleNodes = styleNode.$Style || [] ;
-
-			// Add the attributes to the style definition object.
-			for ( j = 0 ; j < cssStyleNodes.length ; j++ )
-			{
-				styleDef.Styles[ cssStyleNodes[j].name ] = cssStyleNodes[j].value ;
-			}
-
-			// Load override definitions.
-			var cssStyleOverrideNodes = styleNode.$Override ;
-			if ( cssStyleOverrideNodes )
-			{
-				for ( j = 0 ; j < cssStyleOverrideNodes.length ; j++ )
-				{
-					var overrideNode = cssStyleOverrideNodes[j] ;
-					var overrideDef =
-					{
-						Element : overrideNode.element
-					} ;
-
-					var overrideAttNode = overrideNode.$Attribute ;
-					if ( overrideAttNode )
-					{
-						overrideDef.Attributes = {} ;
-						for ( var k = 0 ; k < overrideAttNode.length ; k++ )
-						{
-							var overrideAttValue = overrideAttNode[k].value || null ;
-							if ( overrideAttValue )
-							{
-								// Check if the override attribute value is a regular expression.
-								var regexMatch = overrideAttValue && FCKRegexLib.RegExp.exec( overrideAttValue ) ;
-								if ( regexMatch )
-									overrideAttValue = new RegExp( regexMatch[1], regexMatch[2] || '' ) ;
-							}
-							overrideDef.Attributes[ overrideAttNode[k].name ] = overrideAttValue ;
-						}
-					}
-
-					styleDef.Overrides.push( overrideDef ) ;
-				}
-			}
-
-			var style = new FCKStyle( styleDef ) ;
-			style.Name = styleNode.name || element ;
-
-			if ( style.GetType() == FCK_STYLE_OBJECT )
-				this._ObjectStyles[ element ] = true ;
-
-			// Add the style to the "Styles" collection using it's name as the key.
-			styles[ style.Name ] = style ;
-		}
-
-		return styles ;
-	}
-} ;

+ 0 - 863
main/inc/lib/fckeditor/editor/_source/internals/fcktablehandler.js

@@ -1,863 +0,0 @@
-/*
- * FCKeditor - The text editor for Internet - http://www.fckeditor.net
- * Copyright (C) 2003-2010 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 ==
- *
- * Manage table operations.
- */
-
-var FCKTableHandler = new Object() ;
-
-FCKTableHandler.InsertRow = function( insertBefore )
-{
-	// Get the row where the selection is placed in.
-	var oRow = FCKSelection.MoveToAncestorNode( 'TR' ) ;
-	if ( !oRow ) return ;
-
-	// Create a clone of the row.
-	var oNewRow = oRow.cloneNode( true ) ;
-
-	// Insert the new row (copy) before of it.
-	oRow.parentNode.insertBefore( oNewRow, oRow ) ;
-
-	// Clean one of the rows to produce the illusion of inserting an empty row before or after.
-	FCKTableHandler.ClearRow( insertBefore ? oNewRow : oRow ) ;
-}
-
-FCKTableHandler.DeleteRows = function( row )
-{
-	// If no row has been passed as a parameter,
-	// then get the row( s ) containing the cells where the selection is placed in.
-	// If user selected multiple rows ( by selecting multiple cells ), walk
-	// the selected cell list and delete the rows containing the selected cells
-	if ( ! row )
-	{
-		var aCells = FCKTableHandler.GetSelectedCells() ;
-		var aRowsToDelete = new Array() ;
-		//queue up the rows -- it's possible ( and likely ) that we may get duplicates
-		for ( var i = 0; i < aCells.length; i++ )
-		{
-			var oRow = aCells[i].parentNode ;
-			aRowsToDelete[oRow.rowIndex] = oRow ;
-		}
-		for ( var i = aRowsToDelete.length; i >= 0; i-- )
-		{
-			if ( aRowsToDelete[i] )
-				FCKTableHandler.DeleteRows( aRowsToDelete[i] );
-		}
-		return ;
-	}
-
-	// Get the row's table.
-	var oTable = FCKTools.GetElementAscensor( row, 'TABLE' ) ;
-
-	// If just one row is available then delete the entire table.
-	if ( oTable.rows.length == 1 )
-	{
-		FCKTableHandler.DeleteTable( oTable ) ;
-		return ;
-	}
-
-	// Delete the row.
-	row.parentNode.removeChild( row ) ;
-}
-
-FCKTableHandler.DeleteTable = function( table )
-{
-	// If no table has been passed as a parameter,
-	// then get the table where the selection is placed in.
-	if ( !table )
-	{
-		table = FCKSelection.GetSelectedElement() ;
-		if ( !table || table.tagName != 'TABLE' )
-			table = FCKSelection.MoveToAncestorNode( 'TABLE' ) ;
-	}
-	if ( !table ) return ;
-
-	// Delete the table.
-	FCKSelection.SelectNode( table ) ;
-	FCKSelection.Collapse();
-
-	// if the table is wrapped with a singleton <p> ( or something similar ), remove
-	// the surrounding tag -- which likely won't show after deletion anyway
-	if ( table.parentNode.childNodes.length == 1 )
-		table.parentNode.parentNode.removeChild( table.parentNode );
-	else
-		table.parentNode.removeChild( table  ) ;
-}
-
-FCKTableHandler.InsertColumn = function( insertBefore )
-{
-	// Get the cell where the selection is placed in.
-	var oCell = null ;
-	var nodes = this.GetSelectedCells() ;
-
-	if ( nodes && nodes.length )
-		oCell = nodes[ insertBefore ? 0 : ( nodes.length - 1 ) ] ;
-
-	if ( ! oCell )
-		return ;
-
-	// Get the cell's table.
-	var oTable = FCKTools.GetElementAscensor( oCell, 'TABLE' ) ;
-
-	var iIndex = oCell.cellIndex ;
-
-	// Loop through all rows available in the table.
-	for ( var i = 0 ; i < oTable.rows.length ; i++ )
-	{
-		// Get the row.
-		var oRow = oTable.rows[i] ;
-
-		// If the row doesn't have enough cells, ignore it.
-		if ( oRow.cells.length < ( iIndex + 1 ) )
-			continue ;
-
-		oCell = oRow.cells[iIndex].cloneNode(false) ;
-
-		if ( FCKBrowserInfo.IsGeckoLike )
-			FCKTools.AppendBogusBr( oCell ) ;
-
-		// Get back the currently selected cell.
-		var oBaseCell = oRow.cells[iIndex] ;
-
-		oRow.insertBefore( oCell, ( insertBefore ? oBaseCell : oBaseCell.nextSibling ) ) ;
-	}
-}
-
-FCKTableHandler.DeleteColumns = function( oCell )
-{
-	// if user selected multiple cols ( by selecting multiple cells ), walk
-	// the selected cell list and delete the rows containing the selected cells
-	if ( !oCell  )
-	{
-		var aColsToDelete = FCKTableHandler.GetSelectedCells();
-		for ( var i = aColsToDelete.length; i >= 0; i--  )
-		{
-			if ( aColsToDelete[i]  )
-				FCKTableHandler.DeleteColumns( aColsToDelete[i]  );
-		}
-		return;
-	}
-
-	if ( !oCell ) return ;
-
-	// Get the cell's table.
-	var oTable = FCKTools.GetElementAscensor( oCell, 'TABLE' ) ;
-
-	// Get the cell index.
-	var iIndex = oCell.cellIndex ;
-
-	// Loop throw all rows (from down to up, because it's possible that some
-	// rows will be deleted).
-	for ( var i = oTable.rows.length - 1 ; i >= 0 ; i-- )
-	{
-		// Get the row.
-		var oRow = oTable.rows[i] ;
-
-		// If the cell to be removed is the first one and the row has just one cell.
-		if ( iIndex == 0 && oRow.cells.length == 1 )
-		{
-			// Remove the entire row.
-			FCKTableHandler.DeleteRows( oRow ) ;
-			continue ;
-		}
-
-		// If the cell to be removed exists the delete it.
-		if ( oRow.cells[iIndex] )
-			oRow.removeChild( oRow.cells[iIndex] ) ;
-	}
-}
-
-FCKTableHandler.InsertCell = function( cell, insertBefore )
-{
-	// Get the cell where the selection is placed in.
-	var oCell = null ;
-	var nodes = this.GetSelectedCells() ;
-	if ( nodes && nodes.length )
-		oCell = nodes[ insertBefore ? 0 : ( nodes.length - 1 ) ] ;
-	if ( ! oCell )
-		return null ;
-
-	// Create the new cell element to be added.
-	var oNewCell = FCK.EditorDocument.createElement( 'TD' ) ;
-	if ( FCKBrowserInfo.IsGeckoLike )
-		FCKTools.AppendBogusBr( oNewCell ) ;
-
-	if ( !insertBefore && oCell.cellIndex == oCell.parentNode.cells.length - 1 )
-		oCell.parentNode.appendChild( oNewCell ) ;
-	else
-		oCell.parentNode.insertBefore( oNewCell, insertBefore ? oCell : oCell.nextSibling ) ;
-
-	return oNewCell ;
-}
-
-FCKTableHandler.DeleteCell = function( cell )
-{
-	// If this is the last cell in the row.
-	if ( cell.parentNode.cells.length == 1 )
-	{
-		// Delete the entire row.
-		FCKTableHandler.DeleteRows( cell.parentNode ) ;
-		return ;
-	}
-
-	// Delete the cell from the row.
-	cell.parentNode.removeChild( cell ) ;
-}
-
-FCKTableHandler.DeleteCells = function()
-{
-	var aCells = FCKTableHandler.GetSelectedCells() ;
-
-	for ( var i = aCells.length - 1 ; i >= 0  ; i-- )
-	{
-		FCKTableHandler.DeleteCell( aCells[i] ) ;
-	}
-}
-
-FCKTableHandler._MarkCells = function( cells, label )
-{
-	for ( var i = 0 ; i < cells.length ; i++ )
-		cells[i][label] = true ;
-}
-
-FCKTableHandler._UnmarkCells = function( cells, label )
-{
-	for ( var i = 0 ; i < cells.length ; i++ )
-	{
-		FCKDomTools.ClearElementJSProperty(cells[i], label ) ;
-	}
-}
-
-FCKTableHandler._ReplaceCellsByMarker = function( tableMap, marker, substitute )
-{
-	for ( var i = 0 ; i < tableMap.length ; i++ )
-	{
-		for ( var j = 0 ; j < tableMap[i].length ; j++ )
-		{
-			if ( tableMap[i][j][marker] )
-				tableMap[i][j] = substitute ;
-		}
-	}
-}
-
-FCKTableHandler._GetMarkerGeometry = function( tableMap, rowIdx, colIdx, markerName )
-{
-	var selectionWidth = 0 ;
-	var selectionHeight = 0 ;
-	var cellsLeft = 0 ;
-	var cellsUp = 0 ;
-	for ( var i = colIdx ; tableMap[rowIdx][i] && tableMap[rowIdx][i][markerName] ; i++ )
-		selectionWidth++ ;
-	for ( var i = colIdx - 1 ; tableMap[rowIdx][i] && tableMap[rowIdx][i][markerName] ; i-- )
-	{
-		selectionWidth++ ;
-		cellsLeft++ ;
-	}
-	for ( var i = rowIdx ; tableMap[i] && tableMap[i][colIdx] && tableMap[i][colIdx][markerName] ; i++ )
-		selectionHeight++ ;
-	for ( var i = rowIdx - 1 ; tableMap[i] && tableMap[i][colIdx] && tableMap[i][colIdx][markerName] ; i-- )
-	{
-		selectionHeight++ ;
-		cellsUp++ ;
-	}
-	return { 'width' : selectionWidth, 'height' : selectionHeight, 'x' : cellsLeft, 'y' : cellsUp } ;
-}
-
-FCKTableHandler.CheckIsSelectionRectangular = function()
-{
-	// If every row and column in an area on a plane are of the same width and height,
-	// Then the area is a rectangle.
-	var cells = FCKTableHandler.GetSelectedCells() ;
-	if ( cells.length < 1 )
-		return false ;
-
-	// Check if the selected cells are all in the same table section (thead, tfoot or tbody)
-	for (var i = 0; i < cells.length; i++)
-	{
-		if ( cells[i].parentNode.parentNode != cells[0].parentNode.parentNode )
-			return false ;
-	}
-
-	this._MarkCells( cells, '_CellSelected' ) ;
-
-	var tableMap = this._CreateTableMap( cells[0] ) ;
-	var rowIdx = cells[0].parentNode.rowIndex ;
-	var colIdx = this._GetCellIndexSpan( tableMap, rowIdx, cells[0] ) ;
-
-	var geometry = this._GetMarkerGeometry( tableMap, rowIdx, colIdx, '_CellSelected' ) ;
-	var baseColIdx = colIdx - geometry.x ;
-	var baseRowIdx = rowIdx - geometry.y ;
-
-	if ( geometry.width >= geometry.height )
-	{
-		for ( colIdx = baseColIdx ; colIdx < baseColIdx + geometry.width ; colIdx++ )
-		{
-			rowIdx = baseRowIdx + ( colIdx - baseColIdx ) % geometry.height ;
-			if ( ! tableMap[rowIdx] || ! tableMap[rowIdx][colIdx] )
-			{
-				this._UnmarkCells( cells, '_CellSelected' ) ;
-				return false ;
-			}
-			var g = this._GetMarkerGeometry( tableMap, rowIdx, colIdx, '_CellSelected' ) ;
-			if ( g.width != geometry.width || g.height != geometry.height )
-			{
-				this._UnmarkCells( cells, '_CellSelected' ) ;
-				return false ;
-			}
-		}
-	}
-	else
-	{
-		for ( rowIdx = baseRowIdx ; rowIdx < baseRowIdx + geometry.height ; rowIdx++ )
-		{
-			colIdx = baseColIdx + ( rowIdx - baseRowIdx ) % geometry.width ;
-			if ( ! tableMap[rowIdx] || ! tableMap[rowIdx][colIdx] )
-			{
-				this._UnmarkCells( cells, '_CellSelected' ) ;
-				return false ;
-			}
-			var g = this._GetMarkerGeometry( tableMap, rowIdx, colIdx, '_CellSelected' ) ;
-			if ( g.width != geometry.width || g.height != geometry.height )
-			{
-				this._UnmarkCells( cells, '_CellSelected' ) ;
-				return false ;
-			}
-		}
-	}
-
-	this._UnmarkCells( cells, '_CellSelected' ) ;
-	return true ;
-}
-
-FCKTableHandler.MergeCells = function()
-{
-	// Get all selected cells.
-	var cells = this.GetSelectedCells() ;
-	if ( cells.length < 2 )
-		return ;
-
-	// Assume the selected cells are already in a rectangular geometry.
-	// Because the checking is already done by FCKTableCommand.
-	var refCell = cells[0] ;
-	var tableMap = this._CreateTableMap( refCell ) ;
-	var rowIdx = refCell.parentNode.rowIndex ;
-	var colIdx = this._GetCellIndexSpan( tableMap, rowIdx, refCell ) ;
-
-	this._MarkCells( cells, '_SelectedCells' ) ;
-	var selectionGeometry = this._GetMarkerGeometry( tableMap, rowIdx, colIdx, '_SelectedCells' ) ;
-
-	var baseColIdx = colIdx - selectionGeometry.x ;
-	var baseRowIdx = rowIdx - selectionGeometry.y ;
-	var cellContents = FCKTools.GetElementDocument( refCell ).createDocumentFragment() ;
-	for ( var i = 0 ; i < selectionGeometry.height ; i++ )
-	{
-		var rowChildNodesCount = 0 ;
-		for ( var j = 0 ; j < selectionGeometry.width ; j++ )
-		{
-			var currentCell = tableMap[baseRowIdx + i][baseColIdx + j] ;
-			while ( currentCell.childNodes.length > 0 )
-			{
-				var node = currentCell.removeChild( currentCell.firstChild ) ;
-				if ( node.nodeType != 1
-					|| ( node.getAttribute( 'type', 2 ) != '_moz' && node.getAttribute( '_moz_dirty' ) != null ) )
-				{
-					cellContents.appendChild( node ) ;
-					rowChildNodesCount++ ;
-				}
-			}
-		}
-		if ( rowChildNodesCount > 0 )
-			cellContents.appendChild( FCK.EditorDocument.createElement( 'br' ) ) ;
-	}
-
-	this._ReplaceCellsByMarker( tableMap, '_SelectedCells', refCell ) ;
-	this._UnmarkCells( cells, '_SelectedCells' ) ;
-	this._InstallTableMap( tableMap, refCell.parentNode.parentNode.parentNode ) ;
-	refCell.appendChild( cellContents ) ;
-
-	if ( FCKBrowserInfo.IsGeckoLike && ( ! refCell.firstChild ) )
-		FCKTools.AppendBogusBr( refCell ) ;
-
-	this._MoveCaretToCell( refCell, false ) ;
-}
-
-FCKTableHandler.MergeRight = function()
-{
-	var target = this.GetMergeRightTarget() ;
-	if ( target == null )
-		return ;
-	var refCell = target.refCell ;
-	var tableMap = target.tableMap ;
-	var nextCell = target.nextCell ;
-
-	var cellContents = FCK.EditorDocument.createDocumentFragment() ;
-	while ( nextCell && nextCell.childNodes && nextCell.childNodes.length > 0 )
-		cellContents.appendChild( nextCell.removeChild( nextCell.firstChild ) ) ;
-
-	nextCell.parentNode.removeChild( nextCell ) ;
-	refCell.appendChild( cellContents ) ;
-	this._MarkCells( [nextCell], '_Replace' ) ;
-	this._ReplaceCellsByMarker( tableMap, '_Replace', refCell ) ;
-	this._InstallTableMap( tableMap, refCell.parentNode.parentNode.parentNode ) ;
-
-	this._MoveCaretToCell( refCell, false ) ;
-}
-
-FCKTableHandler.MergeDown = function()
-{
-	var target = this.GetMergeDownTarget() ;
-	if ( target == null )
-		return ;
-	var refCell = target.refCell ;
-	var tableMap = target.tableMap ;
-	var nextCell = target.nextCell ;
-
-	var cellContents = FCKTools.GetElementDocument( refCell ).createDocumentFragment() ;
-	while ( nextCell && nextCell.childNodes && nextCell.childNodes.length > 0 )
-		cellContents.appendChild( nextCell.removeChild( nextCell.firstChild ) ) ;
-	if ( cellContents.firstChild )
-		cellContents.insertBefore( FCK.EditorDocument.createElement( 'br' ), cellContents.firstChild ) ;
-	refCell.appendChild( cellContents ) ;
-	this._MarkCells( [nextCell], '_Replace' ) ;
-	this._ReplaceCellsByMarker( tableMap, '_Replace', refCell ) ;
-	this._InstallTableMap( tableMap, refCell.parentNode.parentNode.parentNode ) ;
-
-	this._MoveCaretToCell( refCell, false ) ;
-}
-
-FCKTableHandler.HorizontalSplitCell = function()
-{
-	var cells = FCKTableHandler.GetSelectedCells() ;
-	if ( cells.length != 1 )
-		return ;
-
-	var refCell = cells[0] ;
-	var tableMap = this._CreateTableMap( refCell ) ;
-	var rowIdx = refCell.parentNode.rowIndex ;
-	var colIdx = FCKTableHandler._GetCellIndexSpan( tableMap, rowIdx, refCell ) ;
-	var cellSpan = isNaN( refCell.colSpan ) ? 1 : refCell.colSpan ;
-
-	if ( cellSpan > 1 )
-	{
-		// Splitting a multi-column cell - original cell gets ceil(colSpan/2) columns,
-		// new cell gets floor(colSpan/2).
-		var newCellSpan = Math.ceil( cellSpan / 2 ) ;
-		var newCell = FCK.EditorDocument.createElement( refCell.nodeName ) ;
-		if ( FCKBrowserInfo.IsGeckoLike )
-			FCKTools.AppendBogusBr( newCell ) ;
-		var startIdx = colIdx + newCellSpan ;
-		var endIdx = colIdx + cellSpan ;
-		var rowSpan = isNaN( refCell.rowSpan ) ? 1 : refCell.rowSpan ;
-		for ( var r = rowIdx ; r < rowIdx + rowSpan ; r++ )
-		{
-			for ( var i = startIdx ; i < endIdx ; i++ )
-				tableMap[r][i] = newCell ;
-		}
-	}
-	else
-	{
-		// Splitting a single-column cell - add a new cell, and expand
-		// cells crossing the same column.
-		var newTableMap = [] ;
-		for ( var i = 0 ; i < tableMap.length ; i++ )
-		{
-			var newRow = tableMap[i].slice( 0, colIdx ) ;
-			if ( tableMap[i].length <= colIdx )
-			{
-				newTableMap.push( newRow ) ;
-				continue ;
-			}
-			if ( tableMap[i][colIdx] == refCell )
-			{
-				newRow.push( refCell ) ;
-				newRow.push( FCK.EditorDocument.createElement( refCell.nodeName ) ) ;
-				if ( FCKBrowserInfo.IsGeckoLike )
-					FCKTools.AppendBogusBr( newRow[newRow.length - 1] ) ;
-			}
-			else
-			{
-				newRow.push( tableMap[i][colIdx] ) ;
-				newRow.push( tableMap[i][colIdx] ) ;
-			}
-			for ( var j = colIdx + 1 ; j < tableMap[i].length ; j++ )
-				newRow.push( tableMap[i][j] ) ;
-			newTableMap.push( newRow ) ;
-		}
-		tableMap = newTableMap ;
-	}
-
-	this._InstallTableMap( tableMap, refCell.parentNode.parentNode.parentNode ) ;
-}
-
-FCKTableHandler.VerticalSplitCell = function()
-{
-	var cells = FCKTableHandler.GetSelectedCells() ;
-	if ( cells.length != 1 )
-		return ;
-
-	var currentCell = cells[0] ;
-	var tableMap = this._CreateTableMap( currentCell ) ;
-	var currentRowIndex = currentCell.parentNode.rowIndex ;
-	var cellIndex = FCKTableHandler._GetCellIndexSpan( tableMap, currentRowIndex, currentCell ) ;
-	// Save current cell colSpan
-	var currentColSpan = isNaN( currentCell.colSpan ) ? 1 : currentCell.colSpan ;
-	var currentRowSpan = currentCell.rowSpan ;
-	if ( isNaN( currentRowSpan ) )
-		currentRowSpan = 1 ;
-
-	if ( currentRowSpan > 1 )
-	{
-		// 1. Set the current cell's rowSpan to 1.
-		currentCell.rowSpan = Math.ceil( currentRowSpan / 2 ) ;
-
-		// 2. Find the appropriate place to insert a new cell at the next row.
-		var newCellRowIndex = currentRowIndex + Math.ceil( currentRowSpan / 2 ) ;
-		var oRow = tableMap[newCellRowIndex] ;
-		var insertMarker = null ;
-		for ( var i = cellIndex+1 ; i < oRow.length ; i++ )
-		{
-			if ( oRow[i].parentNode.rowIndex == newCellRowIndex )
-			{
-				insertMarker = oRow[i] ;
-				break ;
-			}
-		}
-
-		// 3. Insert the new cell to the indicated place, with the appropriate rowSpan and colSpan, next row.
-		var newCell = FCK.EditorDocument.createElement( currentCell.nodeName ) ;
-		newCell.rowSpan = Math.floor( currentRowSpan / 2 ) ;
-		if ( currentColSpan > 1 )
-			newCell.colSpan = currentColSpan ;
-		if ( FCKBrowserInfo.IsGeckoLike )
-			FCKTools.AppendBogusBr( newCell ) ;
-		currentCell.parentNode.parentNode.parentNode.rows[newCellRowIndex].insertBefore( newCell, insertMarker ) ;
-	}
-	else
-	{
-		// 1. Insert a new row.
-		var newSectionRowIdx = currentCell.parentNode.sectionRowIndex + 1 ;
-		var newRow = FCK.EditorDocument.createElement( 'tr' ) ;
-		var tSection = currentCell.parentNode.parentNode ;
-		if ( tSection.rows.length > newSectionRowIdx )
-			tSection.insertBefore( newRow, tSection.rows[newSectionRowIdx] ) ;
-		else
-			tSection.appendChild( newRow ) ;
-
-		// 2. +1 to rowSpan for all cells crossing currentCell's row.
-		for ( var i = 0 ; i < tableMap[currentRowIndex].length ; )
-		{
-			var colSpan = tableMap[currentRowIndex][i].colSpan ;
-			if ( isNaN( colSpan ) || colSpan < 1 )
-				colSpan = 1 ;
-			if ( i == cellIndex )
-			{
-				i += colSpan ;
-				continue ;
-			}
-			var rowSpan = tableMap[currentRowIndex][i].rowSpan ;
-			if ( isNaN( rowSpan ) )
-				rowSpan = 1 ;
-			tableMap[currentRowIndex][i].rowSpan = rowSpan + 1 ;
-			i += colSpan ;
-		}
-
-		// 3. Insert a new cell to new row. Set colSpan on the new cell.
-		var newCell = FCK.EditorDocument.createElement( currentCell.nodeName ) ;
-		if ( currentColSpan > 1 )
-			newCell.colSpan = currentColSpan ;
-		if ( FCKBrowserInfo.IsGeckoLike )
-			FCKTools.AppendBogusBr( newCell	) ;
-		newRow.appendChild( newCell ) ;
-	}
-}
-
-// Get the cell index from a TableMap.
-FCKTableHandler._GetCellIndexSpan = function( tableMap, rowIndex, cell )
-{
-	if ( tableMap.length < rowIndex + 1 )
-		return null ;
-
-	var oRow = tableMap[ rowIndex ] ;
-
-	for ( var c = 0 ; c < oRow.length ; c++ )
-	{
-		if ( oRow[c] == cell )
-			return c ;
-	}
-
-	return null ;
-}
-
-// Get the cell location from a TableMap. Returns an array with an [x,y] location
-FCKTableHandler._GetCellLocation = function( tableMap, cell  )
-{
-	for ( var i = 0 ; i < tableMap.length; i++ )
-	{
-		for ( var c = 0 ; c < tableMap[i].length ; c++  )
-		{
-			if ( tableMap[i][c] == cell  ) return [i,c];
-		}
-	}
-	return null ;
-}
-
-// This function is quite hard to explain. It creates a matrix representing all cells in a table.
-// The difference here is that the "spanned" cells (colSpan and rowSpan) are duplicated on the matrix
-// cells that are "spanned". For example, a row with 3 cells where the second cell has colSpan=2 and rowSpan=3
-// will produce a bi-dimensional matrix with the following values (representing the cells):
-//		Cell1, Cell2, Cell2, Cell3
-//		Cell4, Cell2, Cell2, Cell5
-//		Cell6, Cell2, Cell2, Cell7
-FCKTableHandler._CreateTableMap = function( refCell )
-{
-	var table = (refCell.nodeName == 'TABLE' ? refCell : refCell.parentNode.parentNode.parentNode ) ;
-
-	var aRows = table.rows ;
-
-	// Row and Column counters.
-	var r = -1 ;
-
-	var aMap = new Array() ;
-
-	for ( var i = 0 ; i < aRows.length ; i++ )
-	{
-		r++ ;
-		if ( !aMap[r] )
-			aMap[r] = new Array() ;
-
-		var c = -1 ;
-
-		for ( var j = 0 ; j < aRows[i].cells.length ; j++ )
-		{
-			var oCell = aRows[i].cells[j] ;
-
-			c++ ;
-			while ( aMap[r][c] )
-				c++ ;
-
-			var iColSpan = isNaN( oCell.colSpan ) ? 1 : oCell.colSpan ;
-			var iRowSpan = isNaN( oCell.rowSpan ) ? 1 : oCell.rowSpan ;
-
-			for ( var rs = 0 ; rs < iRowSpan ; rs++ )
-			{
-				if ( !aMap[r + rs] )
-					aMap[r + rs] = new Array() ;
-
-				for ( var cs = 0 ; cs < iColSpan ; cs++ )
-				{
-					aMap[r + rs][c + cs] = aRows[i].cells[j] ;
-				}
-			}
-
-			c += iColSpan - 1 ;
-		}
-	}
-	return aMap ;
-}
-
-// This function is the inverse of _CreateTableMap - it takes in a table map and converts it to an HTML table.
-FCKTableHandler._InstallTableMap = function( tableMap, table )
-{
-	// Workaround for #1917 : MSIE will always report a cell's rowSpan as 1 as long
-	// as the cell is not attached to a row. So we'll need an alternative attribute
-	// for storing the calculated rowSpan in IE.
-	var rowSpanAttr = FCKBrowserInfo.IsIE ? "_fckrowspan" : "rowSpan" ;
-
-	// Disconnect all the cells in tableMap from their parents, set all colSpan and rowSpan attributes to 1.
-	for ( var i = 0 ; i < tableMap.length ; i++ )
-	{
-		for ( var j = 0 ; j < tableMap[i].length ; j++ )
-		{
-			var cell = tableMap[i][j] ;
-			if ( cell.parentNode )
-				cell.parentNode.removeChild( cell ) ;
-			cell.colSpan = cell[rowSpanAttr] = 1 ;
-		}
-	}
-
-	// Scan by rows and set colSpan.
-	var maxCol = 0 ;
-	for ( var i = 0 ; i < tableMap.length ; i++ )
-	{
-		for ( var j = 0 ; j < tableMap[i].length ; j++ )
-		{
-			var cell = tableMap[i][j] ;
-			if ( ! cell)
-				continue ;
-			if ( j > maxCol )
-				maxCol = j ;
-			if ( cell._colScanned === true )
-				continue ;
-			if ( tableMap[i][j-1] == cell )
-				cell.colSpan++ ;
-			if ( tableMap[i][j+1] != cell )
-				cell._colScanned = true ;
-		}
-	}
-
-	// Scan by columns and set rowSpan.
-	for ( var i = 0 ; i <= maxCol ; i++ )
-	{
-		for ( var j = 0 ; j < tableMap.length ; j++ )
-		{
-			if ( ! tableMap[j] )
-				continue ;
-			var cell = tableMap[j][i] ;
-			if ( ! cell || cell._rowScanned === true )
-				continue ;
-			if ( tableMap[j-1] && tableMap[j-1][i] == cell )
-				cell[rowSpanAttr]++ ;
-			if ( ! tableMap[j+1] || tableMap[j+1][i] != cell )
-				cell._rowScanned = true ;
-		}
-	}
-
-	// Clear all temporary flags.
-	for ( var i = 0 ; i < tableMap.length ; i++ )
-	{
-		for ( var j = 0 ; j < tableMap[i].length ; j++)
-		{
-			var cell = tableMap[i][j] ;
-			FCKDomTools.ClearElementJSProperty(cell, '_colScanned' ) ;
-			FCKDomTools.ClearElementJSProperty(cell, '_rowScanned' ) ;
-		}
-	}
-
-	// Insert physical rows and columns to the table.
-	for ( var i = 0 ; i < tableMap.length ; i++ )
-	{
-		var rowObj = FCK.EditorDocument.createElement( 'tr' ) ;
-		for ( var j = 0 ; j < tableMap[i].length ; )
-		{
-			var cell = tableMap[i][j] ;
-			if ( tableMap[i-1] && tableMap[i-1][j] == cell )
-			{
-				j += cell.colSpan ;
-				continue ;
-			}
-			rowObj.appendChild( cell ) ;
-			if ( rowSpanAttr != 'rowSpan' )
-			{
-				cell.rowSpan = cell[rowSpanAttr] ;
-				cell.removeAttribute( rowSpanAttr ) ;
-			}
-			j += cell.colSpan ;
-			if ( cell.colSpan == 1 )
-				cell.removeAttribute( 'colspan' ) ;
-			if ( cell.rowSpan == 1 )
-				cell.removeAttribute( 'rowspan' ) ;
-		}
-		if ( FCKBrowserInfo.IsIE )
-		{
-			table.rows[i].replaceNode( rowObj ) ;
-		}
-		else
-		{
-			table.rows[i].innerHTML = '' ;
-			FCKDomTools.MoveChildren( rowObj, table.rows[i] ) ;
-		}
-	}
-}
-
-FCKTableHandler._MoveCaretToCell = function ( refCell, toStart )
-{
-	var range = new FCKDomRange( FCK.EditorWindow ) ;
-	range.MoveToNodeContents( refCell ) ;
-	range.Collapse( toStart ) ;
-	range.Select() ;
-}
-
-FCKTableHandler.ClearRow = function( tr )
-{
-	// Get the array of row's cells.
-	var aCells = tr.cells ;
-
-	// Replace the contents of each cell with "nothing".
-	for ( var i = 0 ; i < aCells.length ; i++ )
-	{
-		aCells[i].innerHTML = '' ;
-
-		if ( FCKBrowserInfo.IsGeckoLike )
-			FCKTools.AppendBogusBr( aCells[i] ) ;
-	}
-}
-
-FCKTableHandler.GetMergeRightTarget = function()
-{
-	var cells = this.GetSelectedCells() ;
-	if ( cells.length != 1 )
-		return null ;
-
-	var refCell = cells[0] ;
-	var tableMap = this._CreateTableMap( refCell ) ;
-	var rowIdx = refCell.parentNode.rowIndex ;
-	var colIdx = this._GetCellIndexSpan( tableMap, rowIdx, refCell ) ;
-	var nextColIdx = colIdx + ( isNaN( refCell.colSpan ) ? 1 : refCell.colSpan ) ;
-	var nextCell = tableMap[rowIdx][nextColIdx] ;
-
-	if ( ! nextCell )
-		return null ;
-
-	// The two cells must have the same vertical geometry, otherwise merging does not make sense.
-	this._MarkCells( [refCell, nextCell], '_SizeTest' ) ;
-	var refGeometry = this._GetMarkerGeometry( tableMap, rowIdx, colIdx, '_SizeTest' ) ;
-	var nextGeometry = this._GetMarkerGeometry( tableMap, rowIdx, nextColIdx, '_SizeTest' ) ;
-	this._UnmarkCells( [refCell, nextCell], '_SizeTest' ) ;
-
-	if ( refGeometry.height != nextGeometry.height || refGeometry.y != nextGeometry.y )
-		return null ;
-
-	return { 'refCell' : refCell, 'nextCell' : nextCell, 'tableMap' : tableMap } ;
-}
-
-FCKTableHandler.GetMergeDownTarget = function()
-{
-	var cells = this.GetSelectedCells() ;
-	if ( cells.length != 1 )
-		return null ;
-
-	var refCell = cells[0] ;
-	var tableMap = this._CreateTableMap( refCell ) ;
-	var rowIdx = refCell.parentNode.rowIndex ;
-	var colIdx = this._GetCellIndexSpan( tableMap, rowIdx, refCell ) ;
-	var newRowIdx = rowIdx + ( isNaN( refCell.rowSpan ) ? 1 : refCell.rowSpan ) ;
-	if ( ! tableMap[newRowIdx] )
-		return null ;
-
-	var nextCell = tableMap[newRowIdx][colIdx] ;
-
-	if ( ! nextCell )
-		return null ;
-
-	// Check if the selected cells are both in the same table section (thead, tfoot or tbody).
-	if ( refCell.parentNode.parentNode != nextCell.parentNode.parentNode )
-		return null ;
-
-	// The two cells must have the same horizontal geometry, otherwise merging does not makes sense.
-	this._MarkCells( [refCell, nextCell], '_SizeTest' ) ;
-	var refGeometry = this._GetMarkerGeometry( tableMap, rowIdx, colIdx, '_SizeTest' ) ;
-	var nextGeometry = this._GetMarkerGeometry( tableMap, newRowIdx, colIdx, '_SizeTest' ) ;
-	this._UnmarkCells( [refCell, nextCell], '_SizeTest' ) ;
-
-	if ( refGeometry.width != nextGeometry.width || refGeometry.x != nextGeometry.x )
-		return null ;
-
-	return { 'refCell' : refCell, 'nextCell' : nextCell, 'tableMap' : tableMap } ;
-}

+ 0 - 56
main/inc/lib/fckeditor/editor/_source/internals/fcktablehandler_gecko.js

@@ -1,56 +0,0 @@
-/*
- * FCKeditor - The text editor for Internet - http://www.fckeditor.net
- * Copyright (C) 2003-2010 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 ==
- *
- * Manage table operations (non-IE).
- */
-
-FCKTableHandler.GetSelectedCells = function()
-{
-	var aCells = new Array() ;
-
-	var oSelection = FCKSelection.GetSelection() ;
-
-	// If the selection is a text.
-	if ( oSelection.rangeCount == 1 && oSelection.anchorNode.nodeType == 3 )
-	{
-		var oParent = FCKTools.GetElementAscensor( oSelection.anchorNode, 'TD,TH' ) ;
-
-		if ( oParent )
-			aCells[0] = oParent ;
-
-		return aCells ;
-	}
-
-	for ( var i = 0 ; i < oSelection.rangeCount ; i++ )
-	{
-		var oRange = oSelection.getRangeAt(i) ;
-		var oCell ;
-
-		if ( oRange.startContainer.tagName.Equals( 'TD', 'TH' ) )
-			oCell = oRange.startContainer ;
-		else
-			oCell = oRange.startContainer.childNodes[ oRange.startOffset ] ;
-
-		if ( oCell.nodeName.Equals( 'TD', 'TH' ) )
-			aCells[aCells.length] = oCell ;
-	}
-
-	return aCells ;
-}

+ 0 - 64
main/inc/lib/fckeditor/editor/_source/internals/fcktablehandler_ie.js

@@ -1,64 +0,0 @@
-/*
- * FCKeditor - The text editor for Internet - http://www.fckeditor.net
- * Copyright (C) 2003-2010 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 ==
- *
- * Manage table operations (IE specific).
- */
-
-FCKTableHandler.GetSelectedCells = function()
-{
-	if ( FCKSelection.GetType() == 'Control' )
-	{
-		var td = FCKSelection.MoveToAncestorNode( ['TD', 'TH'] ) ;
-		return td ? [ td ] : [] ;
-	}
-
-	var aCells = new Array() ;
-
-	var oRange = FCKSelection.GetSelection().createRange() ;
-//	var oParent = oRange.parentElement() ;
-	var oParent = FCKSelection.GetParentElement() ;
-
-	if ( oParent && oParent.tagName.Equals( 'TD', 'TH' ) )
-		aCells[0] = oParent ;
-	else
-	{
-		oParent = FCKSelection.MoveToAncestorNode( 'TABLE' ) ;
-
-		if ( oParent )
-		{
-			// Loops throw all cells checking if the cell is, or part of it, is inside the selection
-			// and then add it to the selected cells collection.
-			for ( var i = 0 ; i < oParent.cells.length ; i++ )
-			{
-				var oCellRange = FCK.EditorDocument.body.createTextRange() ;
-				oCellRange.moveToElementText( oParent.cells[i] ) ;
-
-				if ( oRange.inRange( oCellRange )
-					|| ( oRange.compareEndPoints('StartToStart',oCellRange) >= 0 &&  oRange.compareEndPoints('StartToEnd',oCellRange) <= 0 )
-					|| ( oRange.compareEndPoints('EndToStart',oCellRange) >= 0 &&  oRange.compareEndPoints('EndToEnd',oCellRange) <= 0 ) )
-				{
-					aCells[aCells.length] = oParent.cells[i] ;
-				}
-			}
-		}
-	}
-
-	return aCells ;
-}

+ 0 - 131
main/inc/lib/fckeditor/editor/_source/internals/fcktoolbaritems.js

@@ -1,131 +0,0 @@
-/*
- * FCKeditor - The text editor for Internet - http://www.fckeditor.net
- * Copyright (C) 2003-2010 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 ==
- *
- * Toolbar items definitions.
- */
-
-var FCKToolbarItems = new Object() ;
-FCKToolbarItems.LoadedItems = new Object() ;
-
-FCKToolbarItems.RegisterItem = function( itemName, item )
-{
-	this.LoadedItems[ itemName ] = item ;
-}
-
-FCKToolbarItems.GetItem = function( itemName )
-{
-	var oItem = FCKToolbarItems.LoadedItems[ itemName ] ;
-
-	if ( oItem )
-		return oItem ;
-
-	switch ( itemName )
-	{
-		case 'Source'			: oItem = new FCKToolbarButton( 'Source'	, FCKLang.Source, null, FCK_TOOLBARITEM_ICONTEXT, true, true, 1 ) ; break ;
-		case 'DocProps'			: oItem = new FCKToolbarButton( 'DocProps'	, FCKLang.DocProps, null, null, null, null, 2 ) ; break ;
-		case 'Save'				: oItem = new FCKToolbarButton( 'Save'		, FCKLang.Save, null, null, true, null, 3 ) ; break ;
-		case 'NewPage'			: oItem = new FCKToolbarButton( 'NewPage'	, FCKLang.NewPage, null, null, true, null, 4  ) ; break ;
-		case 'Preview'			: oItem = new FCKToolbarButton( 'Preview'	, FCKLang.Preview, null, null, true, null, 5  ) ; break ;
-		case 'Templates'		: oItem = new FCKToolbarButton( 'Templates'	, FCKLang.Templates, null, null, null, null, 6 ) ; break ;
-		case 'About'			: oItem = new FCKToolbarButton( 'About'		, FCKLang.About, null, null, true, null, 47  ) ; break ;
-
-		case 'Cut'				: oItem = new FCKToolbarButton( 'Cut'		, FCKLang.Cut, null, null, false, true, 7 ) ; break ;
-		case 'Copy'				: oItem = new FCKToolbarButton( 'Copy'		, FCKLang.Copy, null, null, false, true, 8 ) ; break ;
-		case 'Paste'			: oItem = new FCKToolbarButton( 'Paste'		, FCKLang.Paste, null, null, false, true, 9 ) ; break ;
-		case 'PasteText'		: oItem = new FCKToolbarButton( 'PasteText'	, FCKLang.PasteText, null, null, false, true, 10 ) ; break ;
-		case 'PasteWord'		: oItem = new FCKToolbarButton( 'PasteWord'	, FCKLang.PasteWord, null, null, false, true, 11 ) ; break ;
-		case 'Print'			: oItem = new FCKToolbarButton( 'Print'		, FCKLang.Print, null, null, false, true, 12 ) ; break ;
-		case 'Undo'				: oItem = new FCKToolbarButton( 'Undo'		, FCKLang.Undo, null, null, false, true, 14 ) ; break ;
-		case 'Redo'				: oItem = new FCKToolbarButton( 'Redo'		, FCKLang.Redo, null, null, false, true, 15 ) ; break ;
-		case 'SelectAll'		: oItem = new FCKToolbarButton( 'SelectAll'	, FCKLang.SelectAll, null, null, true, null, 18 ) ; break ;
-		case 'RemoveFormat'		: oItem = new FCKToolbarButton( 'RemoveFormat', FCKLang.RemoveFormat, null, null, false, true, 19 ) ; break ;
-		case 'FitWindow'		: oItem = new FCKToolbarButton( 'FitWindow'	, FCKLang.FitWindow, null, null, true, true, 66 ) ; break ;
-
-		case 'Bold'				: oItem = new FCKToolbarButton( 'Bold'		, FCKLang.Bold, null, null, false, true, 20 ) ; break ;
-		case 'Italic'			: oItem = new FCKToolbarButton( 'Italic'	, FCKLang.Italic, null, null, false, true, 21 ) ; break ;
-		case 'Underline'		: oItem = new FCKToolbarButton( 'Underline'	, FCKLang.Underline, null, null, false, true, 22 ) ; break ;
-		case 'StrikeThrough'	: oItem = new FCKToolbarButton( 'StrikeThrough'	, FCKLang.StrikeThrough, null, null, false, true, 23 ) ; break ;
-		case 'Subscript'		: oItem = new FCKToolbarButton( 'Subscript'		, FCKLang.Subscript, null, null, false, true, 24 ) ; break ;
-		case 'Superscript'		: oItem = new FCKToolbarButton( 'Superscript'	, FCKLang.Superscript, null, null, false, true, 25 ) ; break ;
-
-		case 'OrderedList'		: oItem = new FCKToolbarButton( 'InsertOrderedList'		, FCKLang.NumberedListLbl, FCKLang.NumberedList, null, false, true, 26 ) ; break ;
-		case 'UnorderedList'	: oItem = new FCKToolbarButton( 'InsertUnorderedList'	, FCKLang.BulletedListLbl, FCKLang.BulletedList, null, false, true, 27 ) ; break ;
-		case 'Outdent'			: oItem = new FCKToolbarButton( 'Outdent'	, FCKLang.DecreaseIndent, null, null, false, true, 28 ) ; break ;
-		case 'Indent'			: oItem = new FCKToolbarButton( 'Indent'	, FCKLang.IncreaseIndent, null, null, false, true, 29 ) ; break ;
-		case 'Blockquote'			: oItem = new FCKToolbarButton( 'Blockquote'	, FCKLang.Blockquote, null, null, false, true, 73 ) ; break ;
-		case 'CreateDiv'			: oItem = new FCKToolbarButton( 'CreateDiv'	, FCKLang.CreateDiv, null, null, false, true, 74 ) ; break ;
-
-		case 'Link'				: oItem = new FCKToolbarButton( 'Link'		, FCKLang.InsertLinkLbl, FCKLang.InsertLink, null, false, true, 34 ) ; break ;
-		case 'Unlink'			: oItem = new FCKToolbarButton( 'Unlink'	, FCKLang.RemoveLink, null, null, false, true, 35 ) ; break ;
-		case 'Anchor'			: oItem = new FCKToolbarButton( 'Anchor'	, FCKLang.Anchor, null, null, null, null, 36 ) ; break ;
-
-		case 'Image'			: oItem = new FCKToolbarButton( 'Image'			, FCKLang.InsertImageLbl, FCKLang.InsertImage, null, false, true, 37 ) ; break ;
-		case 'Flash'			: oItem = new FCKToolbarButton( 'Flash'			, FCKLang.InsertFlashLbl, FCKLang.InsertFlash, null, false, true, 38 ) ; break ;
-		case 'Table'			: oItem = new FCKToolbarButton( 'Table'			, FCKLang.InsertTableLbl, FCKLang.InsertTable, null, false, true, 39 ) ; break ;
-		case 'SpecialChar'		: oItem = new FCKToolbarButton( 'SpecialChar'	, FCKLang.InsertSpecialCharLbl, FCKLang.InsertSpecialChar, null, false, true, 42 ) ; break ;
-		case 'Smiley'			: oItem = new FCKToolbarButton( 'Smiley'		, FCKLang.InsertSmileyLbl, FCKLang.InsertSmiley, null, false, true, 41 ) ; break ;
-		case 'PageBreak'		: oItem = new FCKToolbarButton( 'PageBreak'		, FCKLang.PageBreakLbl, FCKLang.PageBreak, null, false, true, 43 ) ; break ;
-
-		case 'Rule'				: oItem = new FCKToolbarButton( 'Rule'			, FCKLang.InsertLineLbl, FCKLang.InsertLine, null, false, true, 40 ) ; break ;
-
-		case 'JustifyLeft'		: oItem = new FCKToolbarButton( 'JustifyLeft'	, FCKLang.LeftJustify, null, null, false, true, 30 ) ; break ;
-		case 'JustifyCenter'	: oItem = new FCKToolbarButton( 'JustifyCenter'	, FCKLang.CenterJustify, null, null, false, true, 31 ) ; break ;
-		case 'JustifyRight'		: oItem = new FCKToolbarButton( 'JustifyRight'	, FCKLang.RightJustify, null, null, false, true, 32 ) ; break ;
-		case 'JustifyFull'		: oItem = new FCKToolbarButton( 'JustifyFull'	, FCKLang.BlockJustify, null, null, false, true, 33 ) ; break ;
-
-		case 'Style'			: oItem = new FCKToolbarStyleCombo() ; break ;
-		case 'FontName'			: oItem = new FCKToolbarFontsCombo() ; break ;
-		case 'FontSize'			: oItem = new FCKToolbarFontSizeCombo() ; break ;
-		case 'FontFormat'		: oItem = new FCKToolbarFontFormatCombo() ; break ;
-
-		case 'TextColor'		: oItem = new FCKToolbarPanelButton( 'TextColor', FCKLang.TextColor, null, null, 45 ) ; break ;
-		case 'BGColor'			: oItem = new FCKToolbarPanelButton( 'BGColor'	, FCKLang.BGColor, null, null, 46 ) ; break ;
-
-		case 'Find'				: oItem = new FCKToolbarButton( 'Find'		, FCKLang.Find, null, null, null, null, 16 ) ; break ;
-		case 'Replace'			: oItem = new FCKToolbarButton( 'Replace'	, FCKLang.Replace, null, null, null, null, 17 ) ; break ;
-
-		case 'Form'				: oItem = new FCKToolbarButton( 'Form'			, FCKLang.Form, null, null, null, null, 48 ) ; break ;
-		case 'Checkbox'			: oItem = new FCKToolbarButton( 'Checkbox'		, FCKLang.Checkbox, null, null, null, null, 49 ) ; break ;
-		case 'Radio'			: oItem = new FCKToolbarButton( 'Radio'			, FCKLang.RadioButton, null, null, null, null, 50 ) ; break ;
-		case 'TextField'		: oItem = new FCKToolbarButton( 'TextField'		, FCKLang.TextField, null, null, null, null, 51 ) ; break ;
-		case 'Textarea'			: oItem = new FCKToolbarButton( 'Textarea'		, FCKLang.Textarea, null, null, null, null, 52 ) ; break ;
-		case 'HiddenField'		: oItem = new FCKToolbarButton( 'HiddenField'	, FCKLang.HiddenField, null, null, null, null, 56 ) ; break ;
-		case 'Button'			: oItem = new FCKToolbarButton( 'Button'		, FCKLang.Button, null, null, null, null, 54 ) ; break ;
-		case 'Select'			: oItem = new FCKToolbarButton( 'Select'		, FCKLang.SelectionField, null, null, null, null, 53 ) ; break ;
-		case 'ImageButton'		: oItem = new FCKToolbarButton( 'ImageButton'	, FCKLang.ImageButton, null, null, null, null, 55 ) ; break ;
-		case 'ShowBlocks'		: oItem = new FCKToolbarButton( 'ShowBlocks'	, FCKLang.ShowBlocks, null, null, null, true, 72 ) ; break ;
-
-		case 'SpellCheck' :
-			if ( FCKConfig.SpellChecker == 'SCAYT' )
-				oItem = FCKScayt.CreateToolbarItem() ;
-			else
-				oItem = new FCKToolbarButton( 'SpellCheck', FCKLang.SpellCheck, null, null, null, null, 13 ) ;
-
-			 break ;
-
-		default:
-			alert( FCKLang.UnknownToolbarItem.replace( /%1/g, itemName ) ) ;
-			return null ;
-	}
-
-	FCKToolbarItems.LoadedItems[ itemName ] = oItem ;
-
-	return oItem ;
-}

+ 0 - 399
main/inc/lib/fckeditor/editor/_source/internals/fcktoolbarset.js

@@ -1,399 +0,0 @@
-/*
- * FCKeditor - The text editor for Internet - http://www.fckeditor.net
- * Copyright (C) 2003-2010 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 ==
- *
- * Defines the FCKToolbarSet object that is used to load and draw the
- * toolbar.
- */
-
-function FCKToolbarSet_Create( overhideLocation )
-{
-	var oToolbarSet ;
-
-	var sLocation = overhideLocation || FCKConfig.ToolbarLocation ;
-	switch ( sLocation )
-	{
-		case 'In' :
-			document.getElementById( 'xToolbarRow' ).style.display = '' ;
-			oToolbarSet = new FCKToolbarSet( document ) ;
-			break ;
-		case 'None' :
-			oToolbarSet = new FCKToolbarSet( document ) ;
-			break ;
-
-//		case 'OutTop' :
-			// Not supported.
-
-		default :
-			FCK.Events.AttachEvent( 'OnBlur', FCK_OnBlur ) ;
-			FCK.Events.AttachEvent( 'OnFocus', FCK_OnFocus ) ;
-
-			var eToolbarTarget ;
-
-			// Out:[TargetWindow]([TargetId])
-			var oOutMatch = sLocation.match( /^Out:(.+)\((\w+)\)$/ ) ;
-			if ( oOutMatch )
-			{
-				if ( FCKBrowserInfo.IsAIR )
-					FCKAdobeAIR.ToolbarSet_GetOutElement( window, oOutMatch ) ;
-				else
-					eToolbarTarget = eval( 'parent.' + oOutMatch[1] ).document.getElementById( oOutMatch[2] ) ;
-			}
-			else
-			{
-				// Out:[TargetId]
-				oOutMatch = sLocation.match( /^Out:(\w+)$/ ) ;
-				if ( oOutMatch )
-					eToolbarTarget = parent.document.getElementById( oOutMatch[1] ) ;
-			}
-
-			if ( !eToolbarTarget )
-			{
-				alert( 'Invalid value for "ToolbarLocation"' ) ;
-				return arguments.callee( 'In' );
-			}
-
-			// If it is a shared toolbar, it may be already available in the target element.
-			oToolbarSet = eToolbarTarget.__FCKToolbarSet ;
-			if ( oToolbarSet )
-				break ;
-
-			// Create the IFRAME that will hold the toolbar inside the target element.
-			var eToolbarIFrame = FCKTools.GetElementDocument( eToolbarTarget ).createElement( 'iframe' ) ;
-			eToolbarIFrame.src = 'javascript:void(0)' ;
-			eToolbarIFrame.frameBorder = 0 ;
-			eToolbarIFrame.width = '100%' ;
-			eToolbarIFrame.height = '10' ;
-			eToolbarTarget.appendChild( eToolbarIFrame ) ;
-			eToolbarIFrame.unselectable = 'on' ;
-
-			// Write the basic HTML for the toolbar (copy from the editor main page).
-			var eTargetDocument = eToolbarIFrame.contentWindow.document ;
-
-			// Workaround for Safari 12256. Ticket #63
-			var sBase = '' ;
-			if ( FCKBrowserInfo.IsSafari )
-				sBase = '<base href="' + window.document.location + '">' ;
-
-			// Initialize the IFRAME document body.
-			eTargetDocument.open() ;
-			eTargetDocument.write( '<html><head>' + sBase + '<script type="text/javascript"> var adjust = function() { window.frameElement.height = document.body.scrollHeight ; }; '
-					+ 'window.onresize = window.onload = '
-					+ 'function(){'		// poll scrollHeight until it no longer changes for 1 sec.
-					+ '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>' ) ;
-			eTargetDocument.close() ;
-
-			if( FCKBrowserInfo.IsAIR )
-				FCKAdobeAIR.ToolbarSet_InitOutFrame( eTargetDocument ) ;
-
-			FCKTools.AddEventListener( eTargetDocument, 'contextmenu', FCKTools.CancelEvent ) ;
-
-			// Load external resources (must be done here, otherwise Firefox will not
-			// have the document DOM ready to be used right away.
-			FCKTools.AppendStyleSheet( eTargetDocument, FCKConfig.SkinEditorCSS ) ;
-
-			oToolbarSet = eToolbarTarget.__FCKToolbarSet = new FCKToolbarSet( eTargetDocument ) ;
-			oToolbarSet._IFrame = eToolbarIFrame ;
-
-			if ( FCK.IECleanup )
-				FCK.IECleanup.AddItem( eToolbarTarget, FCKToolbarSet_Target_Cleanup ) ;
-	}
-
-	oToolbarSet.CurrentInstance = FCK ;
-	if ( !oToolbarSet.ToolbarItems )
-		oToolbarSet.ToolbarItems = FCKToolbarItems ;
-
-	FCK.AttachToOnSelectionChange( oToolbarSet.RefreshItemsState ) ;
-
-	return oToolbarSet ;
-}
-
-function FCK_OnBlur( editorInstance )
-{
-	var eToolbarSet = editorInstance.ToolbarSet ;
-
-	if ( eToolbarSet.CurrentInstance == editorInstance )
-		eToolbarSet.Disable() ;
-}
-
-function FCK_OnFocus( editorInstance )
-{
-	var oToolbarset = editorInstance.ToolbarSet ;
-	var oInstance = editorInstance || FCK ;
-
-	// Unregister the toolbar window from the current instance.
-	oToolbarset.CurrentInstance.FocusManager.RemoveWindow( oToolbarset._IFrame.contentWindow ) ;
-
-	// Set the new current instance.
-	oToolbarset.CurrentInstance = oInstance ;
-
-	// Register the toolbar window in the current instance.
-	oInstance.FocusManager.AddWindow( oToolbarset._IFrame.contentWindow, true ) ;
-
-	oToolbarset.Enable() ;
-}
-
-function FCKToolbarSet_Cleanup()
-{
-	this._TargetElement = null ;
-	this._IFrame = null ;
-}
-
-function FCKToolbarSet_Target_Cleanup()
-{
-	this.__FCKToolbarSet = null ;
-}
-
-var FCKToolbarSet = function( targetDocument )
-{
-	this._Document = targetDocument ;
-
-	// Get the element that will hold the elements structure.
-	this._TargetElement	= targetDocument.getElementById( 'xToolbar' ) ;
-
-	// Setup the expand and collapse handlers.
-	var eExpandHandle	= targetDocument.getElementById( 'xExpandHandle' ) ;
-	var eCollapseHandle	= targetDocument.getElementById( 'xCollapseHandle' ) ;
-
-	eExpandHandle.title		= FCKLang.ToolbarExpand ;
-	FCKTools.AddEventListener( eExpandHandle, 'click', FCKToolbarSet_Expand_OnClick ) ;
-
-	eCollapseHandle.title	= FCKLang.ToolbarCollapse ;
-	FCKTools.AddEventListener( eCollapseHandle, 'click', FCKToolbarSet_Collapse_OnClick ) ;
-
-	// Set the toolbar state at startup.
-	if ( !FCKConfig.ToolbarCanCollapse || FCKConfig.ToolbarStartExpanded )
-		this.Expand() ;
-	else
-		this.Collapse() ;
-
-	// Enable/disable the collapse handler
-	eCollapseHandle.style.display = FCKConfig.ToolbarCanCollapse ? '' : 'none' ;
-
-	if ( FCKConfig.ToolbarCanCollapse )
-		eCollapseHandle.style.display = '' ;
-	else
-		targetDocument.getElementById( 'xTBLeftBorder' ).style.display = '' ;
-
-	// Set the default properties.
-	this.Toolbars = new Array() ;
-	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( collapse )
-{
-	this._Document.getElementById( 'xCollapsed' ).style.display = collapse ? '' : 'none' ;
-	this._Document.getElementById( 'xExpanded' ).style.display = collapse ? 'none' : '' ;
-
-	if ( window.onresize )
-	{
-		// I had to use "setTimeout" because Gecko was not responding in a right
-		// way when calling window.onresize() directly.
-		FCKTools.RunFunction( window.onresize ) ;
-	}
-}
-
-FCKToolbarSet.prototype.Load = function( toolbarSetName )
-{
-	this.Name = toolbarSetName ;
-
-	this.Items = new Array() ;
-
-	// Reset the array of toolbar items that are active only on WYSIWYG mode.
-	this.ItemsWysiwygOnly = new Array() ;
-
-	// Reset the array of toolbar items that are sensitive to the cursor position.
-	this.ItemsContextSensitive = new Array() ;
-
-	// Cleanup the target element.
-	this._TargetElement.innerHTML = '' ;
-
-	var ToolbarSet = FCKConfig.ToolbarSets[toolbarSetName] ;
-
-	if ( !ToolbarSet )
-	{
-		alert( FCKLang.UnknownToolbarSet.replace( /%1/g, toolbarSetName ) ) ;
-		return ;
-	}
-
-	this.Toolbars = new Array() ;
-
-	for ( var x = 0 ; x < ToolbarSet.length ; x++ )
-	{
-		var oToolbarItems = ToolbarSet[x] ;
-
-		// If the configuration for the toolbar is missing some element or has any extra comma
-		// this item won't be valid, so skip it and keep on processing.
-		if ( !oToolbarItems )
-			continue ;
-
-		var oToolbar ;
-
-		if ( typeof( oToolbarItems ) == 'string' )
-		{
-			if ( oToolbarItems == '/' )
-				oToolbar = new FCKToolbarBreak() ;
-		}
-		else
-		{
-			oToolbar = new FCKToolbar() ;
-
-			for ( var j = 0 ; j < oToolbarItems.length ; j++ )
-			{
-				var sItem = oToolbarItems[j] ;
-
-				if ( sItem == '-')
-					oToolbar.AddSeparator() ;
-				else
-				{
-					var oItem = FCKToolbarItems.GetItem( sItem ) ;
-					if ( oItem )
-					{
-						oToolbar.AddItem( oItem ) ;
-
-						this.Items.push( oItem ) ;
-
-						if ( !oItem.SourceView )
-							this.ItemsWysiwygOnly.push( oItem ) ;
-
-						if ( oItem.ContextSensitive )
-							this.ItemsContextSensitive.push( oItem ) ;
-					}
-				}
-			}
-
-			// oToolbar.AddTerminator() ;
-		}
-
-		oToolbar.Create( this._TargetElement ) ;
-
-		this.Toolbars[ this.Toolbars.length ] = oToolbar ;
-	}
-
-	FCKTools.DisableSelection( this._Document.getElementById( 'xCollapseHandle' ).parentNode ) ;
-
-	if ( FCK.Status != FCK_STATUS_COMPLETE )
-		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 aItems = this.Items ;
-	for ( var i = 0 ; i < aItems.length ; i++ )
-		aItems[i].RefreshState() ;
-}
-
-FCKToolbarSet.prototype.Disable = function()
-{
-	if ( !this.IsEnabled )
-		return ;
-
-	this.IsEnabled = false ;
-
-	var aItems = this.Items ;
-	for ( var i = 0 ; i < aItems.length ; i++ )
-		aItems[i].Disable() ;
-}
-
-FCKToolbarSet.prototype.RefreshModeState = function( editorInstance )
-{
-	if ( FCK.Status != FCK_STATUS_COMPLETE )
-		return ;
-
-	var oToolbarSet = editorInstance ? editorInstance.ToolbarSet : this ;
-	var aItems = oToolbarSet.ItemsWysiwygOnly ;
-
-	if ( FCK.EditMode == FCK_EDITMODE_WYSIWYG )
-	{
-		// Enable all buttons that are available on WYSIWYG mode only.
-		for ( var i = 0 ; i < aItems.length ; i++ )
-			aItems[i].Enable() ;
-
-		// Refresh the buttons state.
-		oToolbarSet.RefreshItemsState( editorInstance ) ;
-	}
-	else
-	{
-		// Refresh the buttons state.
-		oToolbarSet.RefreshItemsState( editorInstance ) ;
-
-		// Disable all buttons that are available on WYSIWYG mode only.
-		for ( var j = 0 ; j < aItems.length ; j++ )
-			aItems[j].Disable() ;
-	}
-}
-
-FCKToolbarSet.prototype.RefreshItemsState = function( editorInstance )
-{
-
-	var aItems = ( editorInstance ? editorInstance.ToolbarSet : this ).ItemsContextSensitive ;
-
-	for ( var i = 0 ; i < aItems.length ; i++ )
-		aItems[i].RefreshState() ;
-}

+ 0 - 749
main/inc/lib/fckeditor/editor/_source/internals/fcktools.js

@@ -1,749 +0,0 @@
-/*
- * FCKeditor - The text editor for Internet - http://www.fckeditor.net
- * Copyright (C) 2003-2010 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.
- */
-
-var FCKTools = new Object() ;
-
-FCKTools.CreateBogusBR = function( targetDocument )
-{
-	var eBR = targetDocument.createElement( 'br' ) ;
-//	eBR.setAttribute( '_moz_editor_bogus_node', 'TRUE' ) ;
-	eBR.setAttribute( 'type', '_moz' ) ;
-	return eBR ;
-}
-
-/**
- * Fixes relative URL entries defined inside CSS styles by appending a prefix
- * to them.
- * @param (String) cssStyles The CSS styles definition possibly containing url()
- *		paths.
- * @param (String) urlFixPrefix The prefix to append to relative URLs.
- */
-FCKTools.FixCssUrls = function( urlFixPrefix, cssStyles )
-{
-	if ( !urlFixPrefix || urlFixPrefix.length == 0 )
-		return cssStyles ;
-
-	return cssStyles.replace( /url\s*\(([\s'"]*)(.*?)([\s"']*)\)/g, function( match, opener, path, closer )
-		{
-			if ( /^\/|^\w?:/.test( path ) )
-				return match ;
-			else
-				return 'url(' + opener + urlFixPrefix + path + closer + ')' ;
-		} ) ;
-}
-
-FCKTools._GetUrlFixedCss = function( cssStyles, urlFixPrefix )
-{
-	var match = cssStyles.match( /^([^|]+)\|([\s\S]*)/ ) ;
-
-	if ( match )
-		return FCKTools.FixCssUrls( match[1], match[2] ) ;
-	else
-		return cssStyles ;
-}
-
-/**
- * Appends a <link css> or <style> element to the document.
- * @param (Object) documentElement The DOM document object to which append the
- *		stylesheet.
- * @param (Variant) cssFileOrDef A String pointing to the CSS file URL or an
- *		Array with many CSS file URLs or the CSS definitions for the <style>
- *		element.
- * @return {Array} An array containing all elements created in the target
- *		document. It may include <link> or <style> elements, depending on the
- *		value passed with cssFileOrDef.
- */
-FCKTools.AppendStyleSheet = function( domDocument, cssFileOrArrayOrDef )
-{
-	if ( !cssFileOrArrayOrDef )
-		return [] ;
-
-	if ( typeof( cssFileOrArrayOrDef ) == 'string' )
-	{
-		// Test if the passed argument is an URL.
-		if ( /[\\\/\.][^{}]*$/.test( cssFileOrArrayOrDef ) )
-		{
-			// The string may have several URLs separated by comma.
-			return this.AppendStyleSheet( domDocument, cssFileOrArrayOrDef.split(',') ) ;
-		}
-		else
-			return [ this.AppendStyleString( domDocument, FCKTools._GetUrlFixedCss( cssFileOrArrayOrDef ) ) ] ;
-	}
-	else
-	{
-		var styles = [] ;
-		for ( var i = 0 ; i < cssFileOrArrayOrDef.length ; i++ )
-			styles.push( this._AppendStyleSheet( domDocument, cssFileOrArrayOrDef[i] ) ) ;
-		return styles ;
-	}
-}
-
-FCKTools.GetStyleHtml = (function()
-{
-	var getStyle = function( styleDef, markTemp )
-	{
-		if ( styleDef.length == 0 )
-			return '' ;
-
-		var temp = markTemp ? ' _fcktemp="true"' : '' ;
-		return '<' + 'style type="text/css"' + temp + '>' + styleDef + '<' + '/style>' ;
-	}
-
-	var getLink = function( cssFileUrl, markTemp )
-	{
-		if ( cssFileUrl.length == 0 )
-			return '' ;
-
-		var temp = markTemp ? ' _fcktemp="true"' : '' ;
-		return '<' + 'link href="' + cssFileUrl + '" type="text/css" rel="stylesheet" ' + temp + '/>' ;
-	}
-
-	return function( cssFileOrArrayOrDef, markTemp )
-	{
-		if ( !cssFileOrArrayOrDef )
-			return '' ;
-
-		if ( typeof( cssFileOrArrayOrDef ) == 'string' )
-		{
-			// Test if the passed argument is an URL.
-			if ( /[\\\/\.][^{}]*$/.test( cssFileOrArrayOrDef ) )
-			{
-				// The string may have several URLs separated by comma.
-				return this.GetStyleHtml( cssFileOrArrayOrDef.split(','), markTemp ) ;
-			}
-			else
-				return getStyle( this._GetUrlFixedCss( cssFileOrArrayOrDef ), markTemp ) ;
-		}
-		else
-		{
-			var html = '' ;
-
-			for ( var i = 0 ; i < cssFileOrArrayOrDef.length ; i++ )
-				html += getLink( cssFileOrArrayOrDef[i], markTemp ) ;
-
-			return html ;
-		}
-	}
-})() ;
-
-FCKTools.GetElementDocument = function ( element )
-{
-	return element.ownerDocument || element.document ;
-}
-
-// Get the window object where the element is placed in.
-FCKTools.GetElementWindow = function( element )
-{
-	return this.GetDocumentWindow( this.GetElementDocument( element ) ) ;
-}
-
-FCKTools.GetDocumentWindow = function( document )
-{
-	// With Safari, there is not way to retrieve the window from the document, so we must fix it.
-	if ( FCKBrowserInfo.IsSafari && !document.parentWindow )
-		this.FixDocumentParentWindow( window.top ) ;
-
-	return document.parentWindow || document.defaultView ;
-}
-
-/*
-	This is a Safari specific function that fix the reference to the parent
-	window from the document object.
-*/
-FCKTools.FixDocumentParentWindow = function( targetWindow )
-{
-	if ( targetWindow.document )
-		targetWindow.document.parentWindow = targetWindow ;
-
-	for ( var i = 0 ; i < targetWindow.frames.length ; i++ )
-		FCKTools.FixDocumentParentWindow( targetWindow.frames[i] ) ;
-}
-
-FCKTools.HTMLEncode = function( text )
-{
-	if ( !text )
-		return '' ;
-
-	text = text.replace( /&/g, '&amp;' ) ;
-	text = text.replace( /</g, '&lt;' ) ;
-	text = text.replace( />/g, '&gt;' ) ;
-
-	return text ;
-}
-
-FCKTools.HTMLDecode = function( text )
-{
-	if ( !text )
-		return '' ;
-
-	text = text.replace( /&gt;/g, '>' ) ;
-	text = text.replace( /&lt;/g, '<' ) ;
-	text = text.replace( /&amp;/g, '&' ) ;
-
-	return text ;
-}
-
-FCKTools._ProcessLineBreaksForPMode = function( oEditor, text, liState, node, strArray )
-{
-	var closeState = 0 ;
-	var blockStartTag = "<p>" ;
-	var blockEndTag = "</p>" ;
-	var lineBreakTag = "<br />" ;
-	if ( liState )
-	{
-		blockStartTag = "<li>" ;
-		blockEndTag = "</li>" ;
-		closeState = 1 ;
-	}
-
-	// Are we currently inside a <p> tag now?
-	// If yes, close it at the next double line break.
-	while ( node && node != oEditor.FCK.EditorDocument.body )
-	{
-		if ( node.tagName.toLowerCase() == 'p' )
-		{
-			closeState = 1 ;
-			break;
-		}
-		node = node.parentNode ;
-	}
-
-	for ( var i = 0 ; i < text.length ; i++ )
-	{
-		var c = text.charAt( i ) ;
-		if ( c == '\r' )
-			continue ;
-
-		if ( c != '\n' )
-		{
-			strArray.push( c ) ;
-			continue ;
-		}
-
-		// Now we have encountered a line break.
-		// Check if the next character is also a line break.
-		var n = text.charAt( i + 1 ) ;
-		if ( n == '\r' )
-		{
-			i++ ;
-			n = text.charAt( i + 1 ) ;
-		}
-		if ( n == '\n' )
-		{
-			i++ ;	// ignore next character - we have already processed it.
-			if ( closeState )
-				strArray.push( blockEndTag ) ;
-			strArray.push( blockStartTag ) ;
-			closeState = 1 ;
-		}
-		else
-			strArray.push( lineBreakTag ) ;
-	}
-}
-
-FCKTools._ProcessLineBreaksForDivMode = function( oEditor, text, liState, node, strArray )
-{
-	var closeState = 0 ;
-	var blockStartTag = "<div>" ;
-	var blockEndTag = "</div>" ;
-	if ( liState )
-	{
-		blockStartTag = "<li>" ;
-		blockEndTag = "</li>" ;
-		closeState = 1 ;
-	}
-
-	// Are we currently inside a <div> tag now?
-	// If yes, close it at the next double line break.
-	while ( node && node != oEditor.FCK.EditorDocument.body )
-	{
-		if ( node.tagName.toLowerCase() == 'div' )
-		{
-			closeState = 1 ;
-			break ;
-		}
-		node = node.parentNode ;
-	}
-
-	for ( var i = 0 ; i < text.length ; i++ )
-	{
-		var c = text.charAt( i ) ;
-		if ( c == '\r' )
-			continue ;
-
-		if ( c != '\n' )
-		{
-			strArray.push( c ) ;
-			continue ;
-		}
-
-		if ( closeState )
-		{
-			if ( strArray[ strArray.length - 1 ] == blockStartTag )
-			{
-				// A div tag must have some contents inside for it to be visible.
-				strArray.push( "&nbsp;" ) ;
-			}
-			strArray.push( blockEndTag ) ;
-		}
-		strArray.push( blockStartTag ) ;
-		closeState = 1 ;
-	}
-	if ( closeState )
-		strArray.push( blockEndTag ) ;
-}
-
-FCKTools._ProcessLineBreaksForBrMode = function( oEditor, text, liState, node, strArray )
-{
-	var closeState = 0 ;
-	var blockStartTag = "<br />" ;
-	var blockEndTag = "" ;
-	if ( liState )
-	{
-		blockStartTag = "<li>" ;
-		blockEndTag = "</li>" ;
-		closeState = 1 ;
-	}
-
-	for ( var i = 0 ; i < text.length ; i++ )
-	{
-		var c = text.charAt( i ) ;
-		if ( c == '\r' )
-			continue ;
-
-		if ( c != '\n' )
-		{
-			strArray.push( c ) ;
-			continue ;
-		}
-
-		if ( closeState && blockEndTag.length )
-			strArray.push ( blockEndTag ) ;
-		strArray.push( blockStartTag ) ;
-		closeState = 1 ;
-	}
-}
-
-FCKTools.ProcessLineBreaks = function( oEditor, oConfig, text )
-{
-	var enterMode = oConfig.EnterMode.toLowerCase() ;
-	var strArray = [] ;
-
-	// Is the caret or selection inside an <li> tag now?
-	var liState = 0 ;
-	var range = new oEditor.FCKDomRange( oEditor.FCK.EditorWindow ) ;
-	range.MoveToSelection() ;
-	var node = range._Range.startContainer ;
-	while ( node && node.nodeType != 1 )
-		node = node.parentNode ;
-	if ( node && node.tagName.toLowerCase() == 'li' )
-		liState = 1 ;
-
-	if ( enterMode == 'p' )
-		this._ProcessLineBreaksForPMode( oEditor, text, liState, node, strArray ) ;
-	else if ( enterMode == 'div' )
-		this._ProcessLineBreaksForDivMode( oEditor, text, liState, node, strArray ) ;
-	else if ( enterMode == 'br' )
-		this._ProcessLineBreaksForBrMode( oEditor, text, liState, node, strArray ) ;
-	return strArray.join( "" ) ;
-}
-
-/**
- * Adds an option to a SELECT element.
- */
-FCKTools.AddSelectOption = function( selectElement, optionText, optionValue )
-{
-	var oOption = FCKTools.GetElementDocument( selectElement ).createElement( "OPTION" ) ;
-
-	oOption.text	= optionText ;
-	oOption.value	= optionValue ;
-
-	selectElement.options.add(oOption) ;
-
-	return oOption ;
-}
-
-FCKTools.RunFunction = function( func, thisObject, paramsArray, timerWindow )
-{
-	if ( func )
-		this.SetTimeout( func, 0, thisObject, paramsArray, timerWindow ) ;
-}
-
-FCKTools.SetTimeout = function( func, milliseconds, thisObject, paramsArray, timerWindow )
-{
-	return ( timerWindow || window ).setTimeout(
-		function()
-		{
-			if ( paramsArray )
-				func.apply( thisObject, [].concat( paramsArray ) ) ;
-			else
-				func.apply( thisObject ) ;
-		},
-		milliseconds ) ;
-}
-
-FCKTools.SetInterval = function( func, milliseconds, thisObject, paramsArray, timerWindow )
-{
-	return ( timerWindow || window ).setInterval(
-		function()
-		{
-			func.apply( thisObject, paramsArray || [] ) ;
-		},
-		milliseconds ) ;
-}
-
-FCKTools.ConvertStyleSizeToHtml = function( size )
-{
-	return size.EndsWith( '%' ) ? size : parseInt( size, 10 ) ;
-}
-
-FCKTools.ConvertHtmlSizeToStyle = function( size )
-{
-	return size.EndsWith( '%' ) ? size : ( size + 'px' ) ;
-}
-
-// START iCM MODIFICATIONS
-// Amended to accept a list of one or more ascensor tag names
-// Amended to check the element itself before working back up through the parent hierarchy
-FCKTools.GetElementAscensor = function( element, ascensorTagNames )
-{
-//	var e = element.parentNode ;
-	var e = element ;
-	var lstTags = "," + ascensorTagNames.toUpperCase() + "," ;
-
-	while ( e )
-	{
-		if ( lstTags.indexOf( "," + e.nodeName.toUpperCase() + "," ) != -1 )
-			return e ;
-
-		e = e.parentNode ;
-	}
-	return null ;
-}
-// END iCM MODIFICATIONS
-
-FCKTools.CreateEventListener = function( func, params )
-{
-	var f = function()
-	{
-		var aAllParams = [] ;
-
-		for ( var i = 0 ; i < arguments.length ; i++ )
-			aAllParams.push( arguments[i] ) ;
-
-		func.apply( this, aAllParams.concat( params ) ) ;
-	}
-
-	return f ;
-}
-
-FCKTools.IsStrictMode = function( document )
-{
-	// There is no compatMode in Safari, but it seams that it always behave as
-	// CSS1Compat, so let's assume it as the default for that browser.
-	return ( 'CSS1Compat' == ( document.compatMode || ( FCKBrowserInfo.IsSafari ? 'CSS1Compat' : null ) ) ) ;
-}
-
-// Transforms a "arguments" object to an array.
-FCKTools.ArgumentsToArray = function( args, startIndex, maxLength )
-{
-	startIndex = startIndex || 0 ;
-	maxLength = maxLength || args.length ;
-
-	var argsArray = new Array() ;
-
-	for ( var i = startIndex ; i < startIndex + maxLength && i < args.length ; i++ )
-		argsArray.push( args[i] ) ;
-
-	return argsArray ;
-}
-
-FCKTools.CloneObject = function( sourceObject )
-{
-	var fCloneCreator = function() {} ;
-	fCloneCreator.prototype = sourceObject ;
-	return new fCloneCreator ;
-}
-
-// Appends a bogus <br> at the end of the element, if not yet available.
-FCKTools.AppendBogusBr = function( element )
-{
-	if ( !element )
-		return ;
-
-	var eLastChild = this.GetLastItem( element.getElementsByTagName('br') ) ;
-
-	if ( !eLastChild || ( eLastChild.getAttribute( 'type', 2 ) != '_moz' && eLastChild.getAttribute( '_moz_dirty' ) == null ) )
-	{
-		var doc = this.GetElementDocument( element ) ;
-
-		if ( FCKBrowserInfo.IsOpera )
-			element.appendChild( doc.createTextNode('') ) ;
-		else
-			element.appendChild( this.CreateBogusBR( doc ) ) ;
-	}
-}
-
-FCKTools.GetLastItem = function( list )
-{
-	if ( list.length > 0 )
-		return list[ list.length - 1 ] ;
-
-	return null ;
-}
-
-FCKTools.GetDocumentPosition = function( w, node )
-{
-	var x = 0 ;
-	var y = 0 ;
-	var curNode = node ;
-	var prevNode = null ;
-	var curWindow = FCKTools.GetElementWindow( curNode ) ;
-	while ( curNode && !( curWindow == w && ( curNode == w.document.body || curNode == w.document.documentElement ) ) )
-	{
-		x += curNode.offsetLeft - curNode.scrollLeft ;
-		y += curNode.offsetTop - curNode.scrollTop ;
-
-		if ( ! FCKBrowserInfo.IsOpera )
-		{
-			var scrollNode = prevNode ;
-			while ( scrollNode && scrollNode != curNode )
-			{
-				x -= scrollNode.scrollLeft ;
-				y -= scrollNode.scrollTop ;
-				scrollNode = scrollNode.parentNode ;
-			}
-		}
-
-		prevNode = curNode ;
-		if ( curNode.offsetParent )
-			curNode = curNode.offsetParent ;
-		else
-		{
-			if ( curWindow != w )
-			{
-				curNode = curWindow.frameElement ;
-				prevNode = null ;
-				if ( curNode )
-					curWindow = curNode.contentWindow.parent ;
-			}
-			else
-				curNode = null ;
-		}
-	}
-
-	// document.body is a special case when it comes to offsetTop and offsetLeft values.
-	// 1. It matters if document.body itself is a positioned element;
-	// 2. It matters is when we're in IE and the element has no positioned ancestor.
-	// Otherwise the values should be ignored.
-	if ( FCKDomTools.GetCurrentElementStyle( w.document.body, 'position') != 'static'
-			|| ( FCKBrowserInfo.IsIE && FCKDomTools.GetPositionedAncestor( node ) == null ) )
-	{
-		x += w.document.body.offsetLeft ;
-		y += w.document.body.offsetTop ;
-	}
-
-	return { "x" : x, "y" : y } ;
-}
-
-FCKTools.GetWindowPosition = function( w, node )
-{
-	var pos = this.GetDocumentPosition( w, node ) ;
-	var scroll = FCKTools.GetScrollPosition( w ) ;
-	pos.x -= scroll.X ;
-	pos.y -= scroll.Y ;
-	return pos ;
-}
-
-FCKTools.ProtectFormStyles = function( formNode )
-{
-	if ( !formNode || formNode.nodeType != 1 || formNode.tagName.toLowerCase() != 'form' )
-		return [] ;
-	var hijackRecord = [] ;
-	var hijackNames = [ 'style', 'className' ] ;
-	for ( var i = 0 ; i < hijackNames.length ; i++ )
-	{
-		var name = hijackNames[i] ;
-		if ( formNode.elements.namedItem( name ) )
-		{
-			var hijackNode = formNode.elements.namedItem( name ) ;
-			hijackRecord.push( [ hijackNode, hijackNode.nextSibling ] ) ;
-			formNode.removeChild( hijackNode ) ;
-		}
-	}
-	return hijackRecord ;
-}
-
-FCKTools.RestoreFormStyles = function( formNode, hijackRecord )
-{
-	if ( !formNode || formNode.nodeType != 1 || formNode.tagName.toLowerCase() != 'form' )
-		return ;
-	if ( hijackRecord.length > 0 )
-	{
-		for ( var i = hijackRecord.length - 1 ; i >= 0 ; i-- )
-		{
-			var node = hijackRecord[i][0] ;
-			var sibling = hijackRecord[i][1] ;
-			if ( sibling )
-				formNode.insertBefore( node, sibling ) ;
-			else
-				formNode.appendChild( node ) ;
-		}
-	}
-}
-
-// Perform a one-step DFS walk.
-FCKTools.GetNextNode = function( node, limitNode )
-{
-	if ( node.firstChild )
-		return node.firstChild ;
-	else if ( node.nextSibling )
-		return node.nextSibling ;
-	else
-	{
-		var ancestor = node.parentNode ;
-		while ( ancestor )
-		{
-			if ( ancestor == limitNode )
-				return null ;
-			if ( ancestor.nextSibling )
-				return ancestor.nextSibling ;
-			else
-				ancestor = ancestor.parentNode ;
-		}
-	}
-	return null ;
-}
-
-FCKTools.GetNextTextNode = function( textnode, limitNode, checkStop )
-{
-	node = this.GetNextNode( textnode, limitNode ) ;
-	if ( checkStop && node && checkStop( node ) )
-		return null ;
-	while ( node && node.nodeType != 3 )
-	{
-		node = this.GetNextNode( node, limitNode ) ;
-		if ( checkStop && node && checkStop( node ) )
-			return null ;
-	}
-	return node ;
-}
-
-/**
- * Merge all objects passed by argument into a single object.
- */
-FCKTools.Merge = function()
-{
-	var args = arguments ;
-	var o = args[0] ;
-
-	for ( var i = 1 ; i < args.length ; i++ )
-	{
-		var arg = args[i] ;
-		for ( var p in arg )
-			o[p] = arg[p] ;
-	}
-
-	return o ;
-}
-
-/**
- * Check if the passed argument is a real Array. It may not working when
- * calling it cross windows.
- */
-FCKTools.IsArray = function( it )
-{
-	return ( it instanceof Array ) ;
-}
-
-/**
- * Appends a "length" property to an object, containing the number of
- * properties available on it, excluded the append property itself.
- */
-FCKTools.AppendLengthProperty = function( targetObject, propertyName )
-{
-	var counter = 0 ;
-
-	for ( var n in targetObject )
-		counter++ ;
-
-	return targetObject[ propertyName || 'length' ] = counter ;
-}
-
-/**
- * Gets the browser parsed version of a css text (style attribute value). On
- * some cases, the browser makes changes to the css text, returning a different
- * value. For example, hexadecimal colors get transformed to rgb().
- */
-FCKTools.NormalizeCssText = function( unparsedCssText )
-{
-	// Injects the style in a temporary span object, so the browser parses it,
-	// retrieving its final format.
-	var tempSpan = document.createElement( 'span' ) ;
-	tempSpan.style.cssText = unparsedCssText ;
-	return tempSpan.style.cssText ;
-}
-
-/**
- * Binding the "this" reference to an object for a function.
- */
-FCKTools.Bind = function( subject, func )
-{
-  return function(){ return func.apply( subject, arguments ) ; } ;
-}
-
-/**
- * Retrieve the correct "empty iframe" URL for the current browser, which
- * causes the minimum fuzz (e.g. security warnings in HTTPS, DNS error in
- * IE5.5, etc.) for that browser, making the iframe ready to DOM use whithout
- * having to loading an external file.
- */
-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 "" ;					// IE7+ / IE5.5
-		else
-			return "javascript: '';" ;	// IE6+
-	}
-
-	return "javascript: void(0);" ;		// All other browsers.
-}
-
-FCKTools.ResetStyles = function( element )
-{
-	element.style.cssText = 'margin:0;' +
-		'padding:0;' +
-		'border:0;' +
-		'background-color:transparent;' +
-		'background-image:none;' ;
-}

+ 0 - 282
main/inc/lib/fckeditor/editor/_source/internals/fcktools_gecko.js

@@ -1,282 +0,0 @@
-/*
- * FCKeditor - The text editor for Internet - http://www.fckeditor.net
- * Copyright (C) 2003-2010 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. (Gecko version).
- */
-
-FCKTools.CancelEvent = function( e )
-{
-	if ( e )
-		e.preventDefault() ;
-}
-
-FCKTools.DisableSelection = function( element )
-{
-	if ( FCKBrowserInfo.IsGecko )
-		element.style.MozUserSelect		= 'none' ;	// Gecko only.
-	else if ( FCKBrowserInfo.IsSafari )
-		element.style.KhtmlUserSelect	= 'none' ;	// WebKit only.
-	else
-		element.style.userSelect		= 'none' ;	// CSS3 (not supported yet).
-}
-
-// Appends a CSS file to a document.
-FCKTools._AppendStyleSheet = function( documentElement, cssFileUrl )
-{
-	var e = documentElement.createElement( 'LINK' ) ;
-	e.rel	= 'stylesheet' ;
-	e.type	= 'text/css' ;
-	e.href	= cssFileUrl ;
-	documentElement.getElementsByTagName("HEAD")[0].appendChild( e ) ;
-	return e ;
-}
-
-// Appends a CSS style string to a document.
-FCKTools.AppendStyleString = function( documentElement, cssStyles )
-{
-	if ( !cssStyles )
-		return null ;
-
-	var e = documentElement.createElement( "STYLE" ) ;
-	e.appendChild( documentElement.createTextNode( cssStyles ) ) ;
-	documentElement.getElementsByTagName( "HEAD" )[0].appendChild( e ) ;
-	return e ;
-}
-
-// Removes all attributes and values from the element.
-FCKTools.ClearElementAttributes = function( element )
-{
-	// Loop throw all attributes in the element
-	for ( var i = 0 ; i < element.attributes.length ; i++ )
-	{
-		// Remove the element by name.
-		element.removeAttribute( element.attributes[i].name, 0 ) ;	// 0 : Case Insensitive
-	}
-}
-
-// Returns an Array of strings with all defined in the elements inside another element.
-FCKTools.GetAllChildrenIds = function( parentElement )
-{
-	// Create the array that will hold all Ids.
-	var aIds = new Array() ;
-
-	// Define a recursive function that search for the Ids.
-	var fGetIds = function( parent )
-	{
-		for ( var i = 0 ; i < parent.childNodes.length ; i++ )
-		{
-			var sId = parent.childNodes[i].id ;
-
-			// Check if the Id is defined for the element.
-			if ( sId && sId.length > 0 ) aIds[ aIds.length ] = sId ;
-
-			// Recursive call.
-			fGetIds( parent.childNodes[i] ) ;
-		}
-	}
-
-	// Start the recursive calls.
-	fGetIds( parentElement ) ;
-
-	return aIds ;
-}
-
-// Replaces a tag with its contents. For example "<span>My <b>tag</b></span>"
-// will be replaced with "My <b>tag</b>".
-FCKTools.RemoveOuterTags = function( e )
-{
-	var oFragment = e.ownerDocument.createDocumentFragment() ;
-
-	for ( var i = 0 ; i < e.childNodes.length ; i++ )
-		oFragment.appendChild( e.childNodes[i].cloneNode(true) ) ;
-
-	e.parentNode.replaceChild( oFragment, e ) ;
-}
-
-FCKTools.CreateXmlObject = function( object )
-{
-	switch ( object )
-	{
-		case 'XmlHttp' :
-			return new XMLHttpRequest() ;
-
-		case 'DOMDocument' :
-			// Originaly, we were had the following here:
-			// return document.implementation.createDocument( '', '', null ) ;
-			// But that doesn't work if we're running under domain relaxation mode, so we need a workaround.
-			// See http://ajaxian.com/archives/xml-messages-with-cross-domain-json about the trick we're using.
-			var doc = ( new DOMParser() ).parseFromString( '<tmp></tmp>', 'text/xml' ) ;
-			FCKDomTools.RemoveNode( doc.firstChild ) ;
-			return doc ;
-	}
-	return null ;
-}
-
-FCKTools.GetScrollPosition = function( relativeWindow )
-{
-	return { X : relativeWindow.pageXOffset, Y : relativeWindow.pageYOffset } ;
-}
-
-FCKTools.AddEventListener = function( sourceObject, eventName, listener )
-{
-	sourceObject.addEventListener( eventName, listener, false ) ;
-}
-
-FCKTools.RemoveEventListener = function( sourceObject, eventName, listener )
-{
-	sourceObject.removeEventListener( eventName, listener, false ) ;
-}
-
-// Listeners attached with this function cannot be detached.
-FCKTools.AddEventListenerEx = function( sourceObject, eventName, listener, paramsArray )
-{
-	sourceObject.addEventListener(
-		eventName,
-		function( e )
-		{
-			listener.apply( sourceObject, [ e ].concat( paramsArray || [] ) ) ;
-		},
-		false
-	) ;
-}
-
-// Returns and object with the "Width" and "Height" properties.
-FCKTools.GetViewPaneSize = function( win )
-{
-	return { Width : win.innerWidth, Height : win.innerHeight } ;
-}
-
-FCKTools.SaveStyles = function( element )
-{
-	var data = FCKTools.ProtectFormStyles( element ) ;
-
-	var oSavedStyles = new Object() ;
-
-	if ( element.className.length > 0 )
-	{
-		oSavedStyles.Class = element.className ;
-		element.className = '' ;
-	}
-
-	var sInlineStyle = element.getAttribute( 'style' ) ;
-
-	if ( sInlineStyle && sInlineStyle.length > 0 )
-	{
-		oSavedStyles.Inline = sInlineStyle ;
-		element.setAttribute( 'style', '', 0 ) ;	// 0 : Case Insensitive
-	}
-
-	FCKTools.RestoreFormStyles( element, data ) ;
-	return oSavedStyles ;
-}
-
-FCKTools.RestoreStyles = function( element, savedStyles )
-{
-	var data = FCKTools.ProtectFormStyles( element ) ;
-	element.className = savedStyles.Class || '' ;
-
-	if ( savedStyles.Inline )
-		element.setAttribute( 'style', savedStyles.Inline, 0 ) ;	// 0 : Case Insensitive
-	else
-		element.removeAttribute( 'style', 0 ) ;
-	FCKTools.RestoreFormStyles( element, data ) ;
-}
-
-FCKTools.RegisterDollarFunction = function( targetWindow )
-{
-	targetWindow.$ = function( id )
-	{
-		return targetWindow.document.getElementById( id ) ;
-	} ;
-}
-
-FCKTools.AppendElement = function( target, elementName )
-{
-	return target.appendChild( target.ownerDocument.createElement( elementName ) ) ;
-}
-
-// Get the coordinates of an element.
-//		@el : The element to get the position.
-//		@relativeWindow: The window to which we want the coordinates relative to.
-FCKTools.GetElementPosition = function( el, relativeWindow )
-{
-	// Initializes the Coordinates object that will be returned by the function.
-	var c = { X:0, Y:0 } ;
-
-	var oWindow = relativeWindow || window ;
-
-	var oOwnerWindow = FCKTools.GetElementWindow( el ) ;
-
-	var previousElement = null ;
-	// Loop throw the offset chain.
-	while ( el )
-	{
-		var sPosition = oOwnerWindow.getComputedStyle(el, '').position ;
-
-		// Check for non "static" elements.
-		// 'FCKConfig.FloatingPanelsZIndex' -- Submenus are under a positioned IFRAME.
-		if ( sPosition && sPosition != 'static' && el.style.zIndex != FCKConfig.FloatingPanelsZIndex )
-			break ;
-
-		/*
-		FCKDebug.Output( el.tagName + ":" + "offset=" + el.offsetLeft + "," + el.offsetTop + "  "
-				+ "scroll=" + el.scrollLeft + "," + el.scrollTop ) ;
-		*/
-
-		c.X += el.offsetLeft - el.scrollLeft ;
-		c.Y += el.offsetTop - el.scrollTop  ;
-
-		// Backtrack due to offsetParent's calculation by the browser ignores scrollLeft and scrollTop.
-		// Backtracking is not needed for Opera
-		if ( ! FCKBrowserInfo.IsOpera )
-		{
-			var scrollElement = previousElement ;
-			while ( scrollElement && scrollElement != el )
-			{
-				c.X -= scrollElement.scrollLeft ;
-				c.Y -= scrollElement.scrollTop ;
-				scrollElement = scrollElement.parentNode ;
-			}
-		}
-
-		previousElement = el ;
-		if ( el.offsetParent )
-			el = el.offsetParent ;
-		else
-		{
-			if ( oOwnerWindow != oWindow )
-			{
-				el = oOwnerWindow.frameElement ;
-				previousElement = null ;
-				if ( el )
-					oOwnerWindow = FCKTools.GetElementWindow( el ) ;
-			}
-			else
-			{
-				c.X += el.scrollLeft ;
-				c.Y += el.scrollTop  ;
-				break ;
-			}
-		}
-	}
-
-	// Return the Coordinates object
-	return c ;
-}

+ 0 - 234
main/inc/lib/fckeditor/editor/_source/internals/fcktools_ie.js

@@ -1,234 +0,0 @@
-/*
- * FCKeditor - The text editor for Internet - http://www.fckeditor.net
- * Copyright (C) 2003-2010 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. (IE version).
- */
-
-FCKTools.CancelEvent = function( e )
-{
-	return false ;
-}
-
-// Appends one or more CSS files to a document.
-FCKTools._AppendStyleSheet = function( documentElement, cssFileUrl )
-{
-	return documentElement.createStyleSheet( cssFileUrl ).owningElement ;
-}
-
-// Appends a CSS style string to a document.
-FCKTools.AppendStyleString = function( documentElement, cssStyles )
-{
-	if ( !cssStyles )
-		return null ;
-
-	var s = documentElement.createStyleSheet( "" ) ;
-	s.cssText = cssStyles ;
-	return s ;
-}
-
-// Removes all attributes and values from the element.
-FCKTools.ClearElementAttributes = function( element )
-{
-	element.clearAttributes() ;
-}
-
-FCKTools.GetAllChildrenIds = function( parentElement )
-{
-	var aIds = new Array() ;
-	for ( var i = 0 ; i < parentElement.all.length ; i++ )
-	{
-		var sId = parentElement.all[i].id ;
-		if ( sId && sId.length > 0 )
-			aIds[ aIds.length ] = sId ;
-	}
-	return aIds ;
-}
-
-FCKTools.RemoveOuterTags = function( e )
-{
-	e.insertAdjacentHTML( 'beforeBegin', e.innerHTML ) ;
-	e.parentNode.removeChild( e ) ;
-}
-
-FCKTools.CreateXmlObject = function( object )
-{
-	var aObjs ;
-
-	switch ( object )
-	{
-		case 'XmlHttp' :
-			// Try the native XMLHttpRequest introduced with IE7.
-			if ( document.location.protocol != 'file:' )
-				try { return new XMLHttpRequest() ; } catch (e) {}
-
-			aObjs = [ 'MSXML2.XmlHttp', 'Microsoft.XmlHttp' ] ;
-			break ;
-
-		case 'DOMDocument' :
-			aObjs = [ 'MSXML2.DOMDocument', 'Microsoft.XmlDom' ] ;
-			break ;
-	}
-
-	for ( var i = 0 ; i < 2 ; i++ )
-	{
-		try { return new ActiveXObject( aObjs[i] ) ; }
-		catch (e)
-		{}
-	}
-
-	if ( FCKLang.NoActiveX )
-	{
-		alert( FCKLang.NoActiveX ) ;
-		FCKLang.NoActiveX = null ;
-	}
-	return null ;
-}
-
-FCKTools.DisableSelection = function( element )
-{
-	element.unselectable = 'on' ;
-
-	var e, i = 0 ;
-	// The extra () is to avoid a warning with strict error checking. This is ok.
-	while ( (e = element.all[ i++ ]) )
-	{
-		switch ( e.tagName )
-		{
-			case 'IFRAME' :
-			case 'TEXTAREA' :
-			case 'INPUT' :
-			case 'SELECT' :
-				/* Ignore the above tags */
-				break ;
-			default :
-				e.unselectable = 'on' ;
-		}
-	}
-}
-
-FCKTools.GetScrollPosition = function( relativeWindow )
-{
-	var oDoc = relativeWindow.document ;
-
-	// Try with the doc element.
-	var oPos = { X : oDoc.documentElement.scrollLeft, Y : oDoc.documentElement.scrollTop } ;
-
-	if ( oPos.X > 0 || oPos.Y > 0 )
-		return oPos ;
-
-	// If no scroll, try with the body.
-	return { X : oDoc.body.scrollLeft, Y : oDoc.body.scrollTop } ;
-}
-
-FCKTools.AddEventListener = function( sourceObject, eventName, listener )
-{
-	sourceObject.attachEvent( 'on' + eventName, listener ) ;
-}
-
-FCKTools.RemoveEventListener = function( sourceObject, eventName, listener )
-{
-	sourceObject.detachEvent( 'on' + eventName, listener ) ;
-}
-
-// Listeners attached with this function cannot be detached.
-FCKTools.AddEventListenerEx = function( sourceObject, eventName, listener, paramsArray )
-{
-	// Ok... this is a closures party, but is the only way to make it clean of memory leaks.
-	var o = new Object() ;
-	o.Source = sourceObject ;
-	o.Params = paramsArray || [] ;	// Memory leak if we have DOM objects here.
-	o.Listener = function( ev )
-	{
-		return listener.apply( o.Source, [ ev ].concat( o.Params ) ) ;
-	}
-
-	if ( FCK.IECleanup )
-		FCK.IECleanup.AddItem( null, function() { o.Source = null ; o.Params = null ; } ) ;
-
-	sourceObject.attachEvent( 'on' + eventName, o.Listener ) ;
-
-	sourceObject = null ;	// Memory leak cleaner (because of the above closure).
-	paramsArray = null ;	// Memory leak cleaner (because of the above closure).
-}
-
-// Returns and object with the "Width" and "Height" properties.
-FCKTools.GetViewPaneSize = function( win )
-{
-	var oSizeSource ;
-
-	var oDoc = win.document.documentElement ;
-	if ( oDoc && oDoc.clientWidth )				// IE6 Strict Mode
-		oSizeSource = oDoc ;
-	else
-		oSizeSource = win.document.body ;		// Other IEs
-
-	if ( oSizeSource )
-		return { Width : oSizeSource.clientWidth, Height : oSizeSource.clientHeight } ;
-	else
-		return { Width : 0, Height : 0 } ;
-}
-
-FCKTools.SaveStyles = function( element )
-{
-	var data = FCKTools.ProtectFormStyles( element ) ;
-
-	var oSavedStyles = new Object() ;
-
-	if ( element.className.length > 0 )
-	{
-		oSavedStyles.Class = element.className ;
-		element.className = '' ;
-	}
-
-	var sInlineStyle = element.style.cssText ;
-
-	if ( sInlineStyle.length > 0 )
-	{
-		oSavedStyles.Inline = sInlineStyle ;
-		element.style.cssText = '' ;
-	}
-
-	FCKTools.RestoreFormStyles( element, data ) ;
-	return oSavedStyles ;
-}
-
-FCKTools.RestoreStyles = function( element, savedStyles )
-{
-	var data = FCKTools.ProtectFormStyles( element ) ;
-	element.className		= savedStyles.Class || '' ;
-	element.style.cssText	= savedStyles.Inline || '' ;
-	FCKTools.RestoreFormStyles( element, data ) ;
-}
-
-FCKTools.RegisterDollarFunction = function( targetWindow )
-{
-	targetWindow.$ = targetWindow.document.getElementById ;
-}
-
-FCKTools.AppendElement = function( target, elementName )
-{
-	return target.appendChild( this.GetElementDocument( target ).createElement( elementName ) ) ;
-}
-
-// This function may be used by Regex replacements.
-FCKTools.ToLowerCase = function( strValue )
-{
-	return strValue.toLowerCase() ;
-}

+ 0 - 223
main/inc/lib/fckeditor/editor/_source/internals/fckundo.js

@@ -1,223 +0,0 @@
-/*
- * FCKeditor - The text editor for Internet - http://www.fckeditor.net
- * Copyright (C) 2003-2010 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 ==
- */
-
-var FCKUndo = new Object() ;
-
-FCKUndo.SavedData = new Array() ;
-FCKUndo.CurrentIndex = -1 ;
-FCKUndo.TypesCount = 0 ;
-FCKUndo.Changed = false ;	// Is the document changed in respect to its initial image?
-FCKUndo.MaxTypes = 25 ;
-FCKUndo.Typing = false ;
-FCKUndo.SaveLocked = false ;
-
-FCKUndo._GetBookmark = function()
-{
-	FCKSelection.Restore() ;
-
-	var range = new FCKDomRange( FCK.EditorWindow ) ;
-	try
-	{
-		// There are some tricky cases where this might fail (e.g. having a lone empty table in IE)
-		range.MoveToSelection() ;
-	}
-	catch ( e )
-	{
-		return null ;
-	}
-	if ( FCKBrowserInfo.IsIE )
-	{
-		var bookmark = range.CreateBookmark() ;
-		var dirtyHtml = FCK.EditorDocument.body.innerHTML ;
-		range.MoveToBookmark( bookmark ) ;
-		return [ bookmark, dirtyHtml ] ;
-	}
-	return range.CreateBookmark2() ;
-}
-
-FCKUndo._SelectBookmark = function( bookmark )
-{
-	if ( ! bookmark )
-		return ;
-
-	var range = new FCKDomRange( FCK.EditorWindow ) ;
-	if ( bookmark instanceof Object )
-	{
-		if ( FCKBrowserInfo.IsIE )
-			range.MoveToBookmark( bookmark[0] ) ;
-		else
-			range.MoveToBookmark2( bookmark ) ;
-		try
-		{
-			// this does not always succeed, there are still some tricky cases where it fails
-			// e.g. add a special character at end of document, undo, redo -> error
-			range.Select() ;
-		}
-		catch ( e )
-		{
-			// if select restore fails, put the caret at the end of the document
-			range.MoveToPosition( FCK.EditorDocument.body, 4 ) ;
-			range.Select() ;
-		}
-	}
-}
-
-FCKUndo._CompareCursors = function( cursor1, cursor2 )
-{
-	for ( var i = 0 ; i < Math.min( cursor1.length, cursor2.length ) ; i++ )
-	{
-		if ( cursor1[i] < cursor2[i] )
-			return -1;
-		else if (cursor1[i] > cursor2[i] )
-			return 1;
-	}
-	if ( cursor1.length < cursor2.length )
-		return -1;
-	else if (cursor1.length > cursor2.length )
-		return 1;
-	return 0;
-}
-
-FCKUndo._CheckIsBookmarksEqual = function( bookmark1, bookmark2 )
-{
-	if ( ! ( bookmark1 && bookmark2 ) )
-		return false ;
-	if ( FCKBrowserInfo.IsIE )
-	{
-		var startOffset1 = bookmark1[1].search( bookmark1[0].StartId ) ;
-		var startOffset2 = bookmark2[1].search( bookmark2[0].StartId ) ;
-		var endOffset1 = bookmark1[1].search( bookmark1[0].EndId ) ;
-		var endOffset2 = bookmark2[1].search( bookmark2[0].EndId ) ;
-		return startOffset1 == startOffset2 && endOffset1 == endOffset2 ;
-	}
-	else
-	{
-		return this._CompareCursors( bookmark1.Start, bookmark2.Start ) == 0
-			&& this._CompareCursors( bookmark1.End, bookmark2.End ) == 0 ;
-	}
-}
-
-FCKUndo.SaveUndoStep = function()
-{
-	if ( FCK.EditMode != FCK_EDITMODE_WYSIWYG || this.SaveLocked )
-		return ;
-
-	// Assume the editor content is changed when SaveUndoStep() is called after the first time.
-	// This also enables the undo button in toolbar.
-	if ( this.SavedData.length )
-		this.Changed = true ;
-
-	// Get the HTML content.
-	var sHtml = FCK.EditorDocument.body.innerHTML ;
-	var bookmark = this._GetBookmark() ;
-
-	// Shrink the array to the current level.
-	this.SavedData = this.SavedData.slice( 0, this.CurrentIndex + 1 ) ;
-
-	// Cancel operation if the new step is identical to the previous one.
-	if ( this.CurrentIndex > 0
-			&& sHtml == this.SavedData[ this.CurrentIndex ][0]
-			&& this._CheckIsBookmarksEqual( bookmark, this.SavedData[ this.CurrentIndex ][1] ) )
-		return ;
-	// Save the selection and caret position in the first undo level for the first change.
-	else if ( this.CurrentIndex == 0 && this.SavedData.length && sHtml == this.SavedData[0][0] )
-	{
-		this.SavedData[0][1] = bookmark ;
-		return ;
-	}
-
-	// If we reach the Maximum number of undo levels, we must remove the first
-	// entry of the list shifting all elements.
-	if ( this.CurrentIndex + 1 >= FCKConfig.MaxUndoLevels )
-		this.SavedData.shift() ;
-	else
-		this.CurrentIndex++ ;
-
-	// Save the new level in front of the actual position.
-	this.SavedData[ this.CurrentIndex ] = [ sHtml, bookmark ] ;
-
-	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 it is the first step.
-		if ( this.CurrentIndex == ( this.SavedData.length - 1 ) )
-		{
-			// Save the actual state for a possible "Redo" call.
-			this.SaveUndoStep() ;
-		}
-
-		// Go a step back.
-		this._ApplyUndoLevel( --this.CurrentIndex ) ;
-
-		FCK.Events.FireEvent( "OnSelectionChange" ) ;
-	}
-}
-
-FCKUndo.Redo = function()
-{
-	if ( this.CheckRedoState() )
-	{
-		// Go a step forward.
-		this._ApplyUndoLevel( ++this.CurrentIndex ) ;
-
-		FCK.Events.FireEvent( "OnSelectionChange" ) ;
-	}
-}
-
-FCKUndo._ApplyUndoLevel = function( level )
-{
-	var oData = this.SavedData[ level ] ;
-
-	if ( !oData )
-		return ;
-
-	// Update the editor contents with that step data.
-	if ( FCKBrowserInfo.IsIE )
-	{
-		if ( oData[1] && oData[1][1] )
-			FCK.SetInnerHtml( oData[1][1] ) ;
-		else
-			FCK.SetInnerHtml( oData[0] ) ;
-	}
-	else
-		FCK.EditorDocument.body.innerHTML = oData[0] ;
-
-	// Restore the selection
-	this._SelectBookmark( oData[1] ) ;
-
-	this.TypesCount = 0 ;
-	this.Changed = false ;
-	this.Typing = false ;
-}

+ 0 - 39
main/inc/lib/fckeditor/editor/_source/internals/fckurlparams.js

@@ -1,39 +0,0 @@
-/*
- * FCKeditor - The text editor for Internet - http://www.fckeditor.net
- * Copyright (C) 2003-2010 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 ==
- *
- * Defines the FCKURLParams object that is used to get all parameters
- * passed by the URL QueryString (after the "?").
- */
-
-// #### URLParams: holds all URL passed parameters (like ?Param1=Value1&Param2=Value2)
-var FCKURLParams = new Object() ;
-
-(function()
-{
-	var aParams = document.location.search.substr(1).split('&') ;
-	for ( var i = 0 ; i < aParams.length ; i++ )
-	{
-		var aParam = aParams[i].split('=') ;
-		var sParamName  = decodeURIComponent( aParam[0] ) ;
-		var sParamValue = decodeURIComponent( aParam[1] ) ;
-
-		FCKURLParams[ sParamName ] = sParamValue ;
-	}
-})();

Some files were not shown because too many files changed in this diff