Wiki2GoEditor 1.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (403) hide show
  1. data/bin/Wiki2Go_install_editor.rb +13 -0
  2. data/fckeditor/editor/_source/classes/fckcontextmenu.js +134 -0
  3. data/fckeditor/editor/_source/classes/fckdocumentfragment_gecko.js +46 -0
  4. data/fckeditor/editor/_source/classes/fckdocumentfragment_ie.js +58 -0
  5. data/fckeditor/editor/_source/classes/fckdomrange.js +452 -0
  6. data/fckeditor/editor/_source/classes/fckdomrange_gecko.js +71 -0
  7. data/fckeditor/editor/_source/classes/fckdomrange_ie.js +149 -0
  8. data/fckeditor/editor/_source/classes/fckeditingarea.js +253 -0
  9. data/fckeditor/editor/_source/classes/fckelementpath.js +66 -0
  10. data/fckeditor/editor/_source/classes/fckenterkey.js +556 -0
  11. data/fckeditor/editor/_source/classes/fckevents.js +53 -0
  12. data/fckeditor/editor/_source/classes/fckicon.js +98 -0
  13. data/fckeditor/editor/_source/classes/fckiecleanup.js +68 -0
  14. data/fckeditor/editor/_source/classes/fckimagepreloader.js +68 -0
  15. data/fckeditor/editor/_source/classes/fckkeystrokehandler.js +136 -0
  16. data/fckeditor/editor/_source/classes/fckmenublock.js +143 -0
  17. data/fckeditor/editor/_source/classes/fckmenublockpanel.js +54 -0
  18. data/fckeditor/editor/_source/classes/fckmenuitem.js +160 -0
  19. data/fckeditor/editor/_source/classes/fckpanel.js +303 -0
  20. data/fckeditor/editor/_source/classes/fckplugin.js +56 -0
  21. data/fckeditor/editor/_source/classes/fckspecialcombo.js +363 -0
  22. data/fckeditor/editor/_source/classes/fckstyledef.js +59 -0
  23. data/fckeditor/editor/_source/classes/fckstyledef_gecko.js +119 -0
  24. data/fckeditor/editor/_source/classes/fckstyledef_ie.js +142 -0
  25. data/fckeditor/editor/_source/classes/fckstylesloader.js +88 -0
  26. data/fckeditor/editor/_source/classes/fcktoolbar.js +120 -0
  27. data/fckeditor/editor/_source/classes/fcktoolbarbreak_gecko.js +36 -0
  28. data/fckeditor/editor/_source/classes/fcktoolbarbreak_ie.js +38 -0
  29. data/fckeditor/editor/_source/classes/fcktoolbarbutton.js +74 -0
  30. data/fckeditor/editor/_source/classes/fcktoolbarbuttonui.js +222 -0
  31. data/fckeditor/editor/_source/classes/fcktoolbarfontformatcombo.js +114 -0
  32. data/fckeditor/editor/_source/classes/fcktoolbarfontscombo.js +47 -0
  33. data/fckeditor/editor/_source/classes/fcktoolbarfontsizecombo.js +52 -0
  34. data/fckeditor/editor/_source/classes/fcktoolbarpanelbutton.js +91 -0
  35. data/fckeditor/editor/_source/classes/fcktoolbarspecialcombo.js +134 -0
  36. data/fckeditor/editor/_source/classes/fcktoolbarstylecombo.js +111 -0
  37. data/fckeditor/editor/_source/classes/fckw3crange.js +448 -0
  38. data/fckeditor/editor/_source/classes/fckxml_gecko.js +87 -0
  39. data/fckeditor/editor/_source/classes/fckxml_ie.js +90 -0
  40. data/fckeditor/editor/_source/commandclasses/fck_othercommands.js +380 -0
  41. data/fckeditor/editor/_source/commandclasses/fckfitwindow.js +169 -0
  42. data/fckeditor/editor/_source/commandclasses/fcknamedcommand.js +37 -0
  43. data/fckeditor/editor/_source/commandclasses/fckpasteplaintextcommand.js +38 -0
  44. data/fckeditor/editor/_source/commandclasses/fckpastewordcommand.js +40 -0
  45. data/fckeditor/editor/_source/commandclasses/fckspellcheckcommand_gecko.js +39 -0
  46. data/fckeditor/editor/_source/commandclasses/fckspellcheckcommand_ie.js +67 -0
  47. data/fckeditor/editor/_source/commandclasses/fckstylecommand.js +99 -0
  48. data/fckeditor/editor/_source/commandclasses/fcktablecommand.js +71 -0
  49. data/fckeditor/editor/_source/commandclasses/fcktextcolorcommand.js +175 -0
  50. data/fckeditor/editor/_source/fckconstants.js +52 -0
  51. data/fckeditor/editor/_source/fckeditorapi.js +161 -0
  52. data/fckeditor/editor/_source/fckjscoreextensions.js +152 -0
  53. data/fckeditor/editor/_source/fckscriptloader.js +108 -0
  54. data/fckeditor/editor/_source/internals/fck.js +859 -0
  55. data/fckeditor/editor/_source/internals/fck_contextmenu.js +307 -0
  56. data/fckeditor/editor/_source/internals/fck_gecko.js +254 -0
  57. data/fckeditor/editor/_source/internals/fck_ie.js +383 -0
  58. data/fckeditor/editor/_source/internals/fckbrowserinfo.js +48 -0
  59. data/fckeditor/editor/_source/internals/fckcodeformatter.js +100 -0
  60. data/fckeditor/editor/_source/internals/fckcommands.js +132 -0
  61. data/fckeditor/editor/_source/internals/fckconfig.js +199 -0
  62. data/fckeditor/editor/_source/internals/fckdebug.js +56 -0
  63. data/fckeditor/editor/_source/internals/fckdialog.js +38 -0
  64. data/fckeditor/editor/_source/internals/fckdialog_gecko.js +103 -0
  65. data/fckeditor/editor/_source/internals/fckdialog_ie.js +48 -0
  66. data/fckeditor/editor/_source/internals/fckdocumentprocessor.js +243 -0
  67. data/fckeditor/editor/_source/internals/fckdomtools.js +294 -0
  68. data/fckeditor/editor/_source/internals/fcklanguagemanager.js +161 -0
  69. data/fckeditor/editor/_source/internals/fcklisthandler.js +152 -0
  70. data/fckeditor/editor/_source/internals/fcklistslib.js +60 -0
  71. data/fckeditor/editor/_source/internals/fckplugins.js +46 -0
  72. data/fckeditor/editor/_source/internals/fckregexlib.js +95 -0
  73. data/fckeditor/editor/_source/internals/fckselection.js +24 -0
  74. data/fckeditor/editor/_source/internals/fckselection_gecko.js +151 -0
  75. data/fckeditor/editor/_source/internals/fckselection_ie.js +158 -0
  76. data/fckeditor/editor/_source/internals/fcktablehandler.js +385 -0
  77. data/fckeditor/editor/_source/internals/fcktablehandler_gecko.js +57 -0
  78. data/fckeditor/editor/_source/internals/fcktablehandler_ie.js +58 -0
  79. data/fckeditor/editor/_source/internals/fcktoolbaritems.js +121 -0
  80. data/fckeditor/editor/_source/internals/fcktoolbarset.js +357 -0
  81. data/fckeditor/editor/_source/internals/fcktools.js +225 -0
  82. data/fckeditor/editor/_source/internals/fcktools_gecko.js +235 -0
  83. data/fckeditor/editor/_source/internals/fcktools_ie.js +214 -0
  84. data/fckeditor/editor/_source/internals/fckundo_gecko.js +27 -0
  85. data/fckeditor/editor/_source/internals/fckundo_ie.js +123 -0
  86. data/fckeditor/editor/_source/internals/fckurlparams.js +39 -0
  87. data/fckeditor/editor/_source/internals/fckxhtml.js +466 -0
  88. data/fckeditor/editor/_source/internals/fckxhtml_gecko.js +66 -0
  89. data/fckeditor/editor/_source/internals/fckxhtml_ie.js +194 -0
  90. data/fckeditor/editor/_source/internals/fckxhtmlentities.js +345 -0
  91. data/fckeditor/editor/css/behaviors/disablehandles.htc +15 -0
  92. data/fckeditor/editor/css/behaviors/showtableborders.htc +36 -0
  93. data/fckeditor/editor/css/fck_editorarea.css +91 -0
  94. data/fckeditor/editor/css/fck_internal.css +111 -0
  95. data/fckeditor/editor/css/fck_showtableborders_gecko.css +42 -0
  96. data/fckeditor/editor/css/images/fck_anchor.gif +0 -0
  97. data/fckeditor/editor/css/images/fck_flashlogo.gif +0 -0
  98. data/fckeditor/editor/css/images/fck_hiddenfield.gif +0 -0
  99. data/fckeditor/editor/css/images/fck_pagebreak.gif +0 -0
  100. data/fckeditor/editor/dialog/common/fck_dialog_common.css +83 -0
  101. data/fckeditor/editor/dialog/common/fck_dialog_common.js +154 -0
  102. data/fckeditor/editor/dialog/common/fcknumericfield.htc +24 -0
  103. data/fckeditor/editor/dialog/common/images/locked.gif +0 -0
  104. data/fckeditor/editor/dialog/common/images/reset.gif +0 -0
  105. data/fckeditor/editor/dialog/common/images/unlocked.gif +0 -0
  106. data/fckeditor/editor/dialog/common/moz-bindings.xml +30 -0
  107. data/fckeditor/editor/dialog/fck_about.html +155 -0
  108. data/fckeditor/editor/dialog/fck_about/logo_fckeditor.gif +0 -0
  109. data/fckeditor/editor/dialog/fck_about/logo_fredck.gif +0 -0
  110. data/fckeditor/editor/dialog/fck_anchor.html +227 -0
  111. data/fckeditor/editor/dialog/fck_button.html +107 -0
  112. data/fckeditor/editor/dialog/fck_checkbox.html +107 -0
  113. data/fckeditor/editor/dialog/fck_colorselector.html +171 -0
  114. data/fckeditor/editor/dialog/fck_docprops.html +600 -0
  115. data/fckeditor/editor/dialog/fck_docprops/fck_document_preview.html +113 -0
  116. data/fckeditor/editor/dialog/fck_find.html +173 -0
  117. data/fckeditor/editor/dialog/fck_flash.html +146 -0
  118. data/fckeditor/editor/dialog/fck_flash/fck_flash.js +288 -0
  119. data/fckeditor/editor/dialog/fck_flash/fck_flash_preview.html +46 -0
  120. data/fckeditor/editor/dialog/fck_form.html +105 -0
  121. data/fckeditor/editor/dialog/fck_hiddenfield.html +116 -0
  122. data/fckeditor/editor/dialog/fck_image.html +252 -0
  123. data/fckeditor/editor/dialog/fck_image/fck_image.js +486 -0
  124. data/fckeditor/editor/dialog/fck_image/fck_image_preview.html +66 -0
  125. data/fckeditor/editor/dialog/fck_link.html +293 -0
  126. data/fckeditor/editor/dialog/fck_link/fck_link.js +664 -0
  127. data/fckeditor/editor/dialog/fck_listprop.html +116 -0
  128. data/fckeditor/editor/dialog/fck_paste.html +285 -0
  129. data/fckeditor/editor/dialog/fck_radiobutton.html +107 -0
  130. data/fckeditor/editor/dialog/fck_replace.html +156 -0
  131. data/fckeditor/editor/dialog/fck_select.html +176 -0
  132. data/fckeditor/editor/dialog/fck_select/fck_select.js +169 -0
  133. data/fckeditor/editor/dialog/fck_smiley.html +105 -0
  134. data/fckeditor/editor/dialog/fck_source.html +65 -0
  135. data/fckeditor/editor/dialog/fck_specialchar.html +113 -0
  136. data/fckeditor/editor/dialog/fck_spellerpages.html +64 -0
  137. data/fckeditor/editor/dialog/fck_spellerpages/spellerpages/blank.html +0 -0
  138. data/fckeditor/editor/dialog/fck_spellerpages/spellerpages/controlWindow.js +87 -0
  139. data/fckeditor/editor/dialog/fck_spellerpages/spellerpages/controls.html +153 -0
  140. data/fckeditor/editor/dialog/fck_spellerpages/spellerpages/server-scripts/spellchecker.cfm +174 -0
  141. data/fckeditor/editor/dialog/fck_spellerpages/spellerpages/server-scripts/spellchecker.php +196 -0
  142. data/fckeditor/editor/dialog/fck_spellerpages/spellerpages/server-scripts/spellchecker.pl +180 -0
  143. data/fckeditor/editor/dialog/fck_spellerpages/spellerpages/spellChecker.js +462 -0
  144. data/fckeditor/editor/dialog/fck_spellerpages/spellerpages/spellchecker.html +71 -0
  145. data/fckeditor/editor/dialog/fck_spellerpages/spellerpages/spellerStyle.css +49 -0
  146. data/fckeditor/editor/dialog/fck_spellerpages/spellerpages/wordWindow.js +272 -0
  147. data/fckeditor/editor/dialog/fck_table.html +286 -0
  148. data/fckeditor/editor/dialog/fck_tablecell.html +255 -0
  149. data/fckeditor/editor/dialog/fck_template.html +242 -0
  150. data/fckeditor/editor/dialog/fck_template/images/template1.gif +0 -0
  151. data/fckeditor/editor/dialog/fck_template/images/template2.gif +0 -0
  152. data/fckeditor/editor/dialog/fck_template/images/template3.gif +0 -0
  153. data/fckeditor/editor/dialog/fck_textarea.html +94 -0
  154. data/fckeditor/editor/dialog/fck_textfield.html +139 -0
  155. data/fckeditor/editor/fckdebug.html +153 -0
  156. data/fckeditor/editor/fckdialog.html +324 -0
  157. data/fckeditor/editor/fckeditor.html +227 -0
  158. data/fckeditor/editor/fckeditor.original.html +319 -0
  159. data/fckeditor/editor/filemanager/browser/default/browser.css +88 -0
  160. data/fckeditor/editor/filemanager/browser/default/browser.html +154 -0
  161. data/fckeditor/editor/filemanager/browser/default/connectors/asp/basexml.asp +62 -0
  162. data/fckeditor/editor/filemanager/browser/default/connectors/asp/class_upload.asp +234 -0
  163. data/fckeditor/editor/filemanager/browser/default/connectors/asp/commands.asp +183 -0
  164. data/fckeditor/editor/filemanager/browser/default/connectors/asp/config.asp +49 -0
  165. data/fckeditor/editor/filemanager/browser/default/connectors/asp/connector.asp +124 -0
  166. data/fckeditor/editor/filemanager/browser/default/connectors/asp/io.asp +89 -0
  167. data/fckeditor/editor/filemanager/browser/default/connectors/asp/util.asp +55 -0
  168. data/fckeditor/editor/filemanager/browser/default/connectors/aspx/connector.aspx +30 -0
  169. data/fckeditor/editor/filemanager/browser/default/connectors/cfm/config.cfm +99 -0
  170. data/fckeditor/editor/filemanager/browser/default/connectors/cfm/connector.cfm +363 -0
  171. data/fckeditor/editor/filemanager/browser/default/connectors/lasso/config.lasso +65 -0
  172. data/fckeditor/editor/filemanager/browser/default/connectors/lasso/connector.lasso +249 -0
  173. data/fckeditor/editor/filemanager/browser/default/connectors/perl/basexml.pl +63 -0
  174. data/fckeditor/editor/filemanager/browser/default/connectors/perl/commands.pl +158 -0
  175. data/fckeditor/editor/filemanager/browser/default/connectors/perl/connector.cgi +137 -0
  176. data/fckeditor/editor/filemanager/browser/default/connectors/perl/io.pl +131 -0
  177. data/fckeditor/editor/filemanager/browser/default/connectors/perl/upload_fck.pl +667 -0
  178. data/fckeditor/editor/filemanager/browser/default/connectors/perl/util.pl +60 -0
  179. data/fckeditor/editor/filemanager/browser/default/connectors/php/basexml.php +75 -0
  180. data/fckeditor/editor/filemanager/browser/default/connectors/php/commands.php +222 -0
  181. data/fckeditor/editor/filemanager/browser/default/connectors/php/config.php +56 -0
  182. data/fckeditor/editor/filemanager/browser/default/connectors/php/connector.php +113 -0
  183. data/fckeditor/editor/filemanager/browser/default/connectors/php/io.php +101 -0
  184. data/fckeditor/editor/filemanager/browser/default/connectors/php/util.php +41 -0
  185. data/fckeditor/editor/filemanager/browser/default/connectors/py/connector.py +785 -0
  186. data/fckeditor/editor/filemanager/browser/default/connectors/test.html +180 -0
  187. data/fckeditor/editor/filemanager/browser/default/frmactualfolder.html +67 -0
  188. data/fckeditor/editor/filemanager/browser/default/frmcreatefolder.html +113 -0
  189. data/fckeditor/editor/filemanager/browser/default/frmfolders.html +196 -0
  190. data/fckeditor/editor/filemanager/browser/default/frmresourceslist.html +160 -0
  191. data/fckeditor/editor/filemanager/browser/default/frmresourcetype.html +65 -0
  192. data/fckeditor/editor/filemanager/browser/default/frmupload.html +113 -0
  193. data/fckeditor/editor/filemanager/browser/default/images/ButtonArrow.gif +0 -0
  194. data/fckeditor/editor/filemanager/browser/default/images/Folder.gif +0 -0
  195. data/fckeditor/editor/filemanager/browser/default/images/Folder32.gif +0 -0
  196. data/fckeditor/editor/filemanager/browser/default/images/FolderOpened.gif +0 -0
  197. data/fckeditor/editor/filemanager/browser/default/images/FolderOpened32.gif +0 -0
  198. data/fckeditor/editor/filemanager/browser/default/images/FolderUp.gif +0 -0
  199. data/fckeditor/editor/filemanager/browser/default/images/icons/32/ai.gif +0 -0
  200. data/fckeditor/editor/filemanager/browser/default/images/icons/32/avi.gif +0 -0
  201. data/fckeditor/editor/filemanager/browser/default/images/icons/32/bmp.gif +0 -0
  202. data/fckeditor/editor/filemanager/browser/default/images/icons/32/cs.gif +0 -0
  203. data/fckeditor/editor/filemanager/browser/default/images/icons/32/default.icon.gif +0 -0
  204. data/fckeditor/editor/filemanager/browser/default/images/icons/32/dll.gif +0 -0
  205. data/fckeditor/editor/filemanager/browser/default/images/icons/32/doc.gif +0 -0
  206. data/fckeditor/editor/filemanager/browser/default/images/icons/32/exe.gif +0 -0
  207. data/fckeditor/editor/filemanager/browser/default/images/icons/32/fla.gif +0 -0
  208. data/fckeditor/editor/filemanager/browser/default/images/icons/32/gif.gif +0 -0
  209. data/fckeditor/editor/filemanager/browser/default/images/icons/32/htm.gif +0 -0
  210. data/fckeditor/editor/filemanager/browser/default/images/icons/32/html.gif +0 -0
  211. data/fckeditor/editor/filemanager/browser/default/images/icons/32/jpg.gif +0 -0
  212. data/fckeditor/editor/filemanager/browser/default/images/icons/32/js.gif +0 -0
  213. data/fckeditor/editor/filemanager/browser/default/images/icons/32/mdb.gif +0 -0
  214. data/fckeditor/editor/filemanager/browser/default/images/icons/32/mp3.gif +0 -0
  215. data/fckeditor/editor/filemanager/browser/default/images/icons/32/pdf.gif +0 -0
  216. data/fckeditor/editor/filemanager/browser/default/images/icons/32/png.gif +0 -0
  217. data/fckeditor/editor/filemanager/browser/default/images/icons/32/ppt.gif +0 -0
  218. data/fckeditor/editor/filemanager/browser/default/images/icons/32/rdp.gif +0 -0
  219. data/fckeditor/editor/filemanager/browser/default/images/icons/32/swf.gif +0 -0
  220. data/fckeditor/editor/filemanager/browser/default/images/icons/32/swt.gif +0 -0
  221. data/fckeditor/editor/filemanager/browser/default/images/icons/32/txt.gif +0 -0
  222. data/fckeditor/editor/filemanager/browser/default/images/icons/32/vsd.gif +0 -0
  223. data/fckeditor/editor/filemanager/browser/default/images/icons/32/xls.gif +0 -0
  224. data/fckeditor/editor/filemanager/browser/default/images/icons/32/xml.gif +0 -0
  225. data/fckeditor/editor/filemanager/browser/default/images/icons/32/zip.gif +0 -0
  226. data/fckeditor/editor/filemanager/browser/default/images/icons/ai.gif +0 -0
  227. data/fckeditor/editor/filemanager/browser/default/images/icons/avi.gif +0 -0
  228. data/fckeditor/editor/filemanager/browser/default/images/icons/bmp.gif +0 -0
  229. data/fckeditor/editor/filemanager/browser/default/images/icons/cs.gif +0 -0
  230. data/fckeditor/editor/filemanager/browser/default/images/icons/default.icon.gif +0 -0
  231. data/fckeditor/editor/filemanager/browser/default/images/icons/dll.gif +0 -0
  232. data/fckeditor/editor/filemanager/browser/default/images/icons/doc.gif +0 -0
  233. data/fckeditor/editor/filemanager/browser/default/images/icons/exe.gif +0 -0
  234. data/fckeditor/editor/filemanager/browser/default/images/icons/fla.gif +0 -0
  235. data/fckeditor/editor/filemanager/browser/default/images/icons/gif.gif +0 -0
  236. data/fckeditor/editor/filemanager/browser/default/images/icons/htm.gif +0 -0
  237. data/fckeditor/editor/filemanager/browser/default/images/icons/html.gif +0 -0
  238. data/fckeditor/editor/filemanager/browser/default/images/icons/jpg.gif +0 -0
  239. data/fckeditor/editor/filemanager/browser/default/images/icons/js.gif +0 -0
  240. data/fckeditor/editor/filemanager/browser/default/images/icons/mdb.gif +0 -0
  241. data/fckeditor/editor/filemanager/browser/default/images/icons/mp3.gif +0 -0
  242. data/fckeditor/editor/filemanager/browser/default/images/icons/pdf.gif +0 -0
  243. data/fckeditor/editor/filemanager/browser/default/images/icons/png.gif +0 -0
  244. data/fckeditor/editor/filemanager/browser/default/images/icons/ppt.gif +0 -0
  245. data/fckeditor/editor/filemanager/browser/default/images/icons/rdp.gif +0 -0
  246. data/fckeditor/editor/filemanager/browser/default/images/icons/swf.gif +0 -0
  247. data/fckeditor/editor/filemanager/browser/default/images/icons/swt.gif +0 -0
  248. data/fckeditor/editor/filemanager/browser/default/images/icons/txt.gif +0 -0
  249. data/fckeditor/editor/filemanager/browser/default/images/icons/vsd.gif +0 -0
  250. data/fckeditor/editor/filemanager/browser/default/images/icons/xls.gif +0 -0
  251. data/fckeditor/editor/filemanager/browser/default/images/icons/xml.gif +0 -0
  252. data/fckeditor/editor/filemanager/browser/default/images/icons/zip.gif +0 -0
  253. data/fckeditor/editor/filemanager/browser/default/images/spacer.gif +0 -0
  254. data/fckeditor/editor/filemanager/browser/default/js/common.js +55 -0
  255. data/fckeditor/editor/filemanager/browser/default/js/fckxml.js +130 -0
  256. data/fckeditor/editor/filemanager/upload/asp/class_upload.asp +234 -0
  257. data/fckeditor/editor/filemanager/upload/asp/config.asp +52 -0
  258. data/fckeditor/editor/filemanager/upload/asp/io.asp +29 -0
  259. data/fckeditor/editor/filemanager/upload/asp/upload.asp +121 -0
  260. data/fckeditor/editor/filemanager/upload/aspx/upload.aspx +30 -0
  261. data/fckeditor/editor/filemanager/upload/cfm/config.cfm +98 -0
  262. data/fckeditor/editor/filemanager/upload/cfm/upload.cfm +168 -0
  263. data/fckeditor/editor/filemanager/upload/lasso/config.lasso +65 -0
  264. data/fckeditor/editor/filemanager/upload/lasso/upload.lasso +157 -0
  265. data/fckeditor/editor/filemanager/upload/php/config.php +56 -0
  266. data/fckeditor/editor/filemanager/upload/php/upload.php +124 -0
  267. data/fckeditor/editor/filemanager/upload/php/util.php +40 -0
  268. data/fckeditor/editor/filemanager/upload/test.html +133 -0
  269. data/fckeditor/editor/images/anchor.gif +0 -0
  270. data/fckeditor/editor/images/arrow_ltr.gif +0 -0
  271. data/fckeditor/editor/images/arrow_rtl.gif +0 -0
  272. data/fckeditor/editor/images/smiley/msn/angel_smile.gif +0 -0
  273. data/fckeditor/editor/images/smiley/msn/angry_smile.gif +0 -0
  274. data/fckeditor/editor/images/smiley/msn/broken_heart.gif +0 -0
  275. data/fckeditor/editor/images/smiley/msn/cake.gif +0 -0
  276. data/fckeditor/editor/images/smiley/msn/confused_smile.gif +0 -0
  277. data/fckeditor/editor/images/smiley/msn/cry_smile.gif +0 -0
  278. data/fckeditor/editor/images/smiley/msn/devil_smile.gif +0 -0
  279. data/fckeditor/editor/images/smiley/msn/embaressed_smile.gif +0 -0
  280. data/fckeditor/editor/images/smiley/msn/envelope.gif +0 -0
  281. data/fckeditor/editor/images/smiley/msn/heart.gif +0 -0
  282. data/fckeditor/editor/images/smiley/msn/kiss.gif +0 -0
  283. data/fckeditor/editor/images/smiley/msn/lightbulb.gif +0 -0
  284. data/fckeditor/editor/images/smiley/msn/omg_smile.gif +0 -0
  285. data/fckeditor/editor/images/smiley/msn/regular_smile.gif +0 -0
  286. data/fckeditor/editor/images/smiley/msn/sad_smile.gif +0 -0
  287. data/fckeditor/editor/images/smiley/msn/shades_smile.gif +0 -0
  288. data/fckeditor/editor/images/smiley/msn/teeth_smile.gif +0 -0
  289. data/fckeditor/editor/images/smiley/msn/thumbs_down.gif +0 -0
  290. data/fckeditor/editor/images/smiley/msn/thumbs_up.gif +0 -0
  291. data/fckeditor/editor/images/smiley/msn/tounge_smile.gif +0 -0
  292. data/fckeditor/editor/images/smiley/msn/whatchutalkingabout_smile.gif +0 -0
  293. data/fckeditor/editor/images/smiley/msn/wink_smile.gif +0 -0
  294. data/fckeditor/editor/images/spacer.gif +0 -0
  295. data/fckeditor/editor/js/fckeditorcode_gecko.js +98 -0
  296. data/fckeditor/editor/js/fckeditorcode_ie.js +99 -0
  297. data/fckeditor/editor/lang/_getfontformat.html +85 -0
  298. data/fckeditor/editor/lang/_translationstatus.txt +76 -0
  299. data/fckeditor/editor/lang/af.js +504 -0
  300. data/fckeditor/editor/lang/ar.js +504 -0
  301. data/fckeditor/editor/lang/bg.js +504 -0
  302. data/fckeditor/editor/lang/bn.js +504 -0
  303. data/fckeditor/editor/lang/bs.js +504 -0
  304. data/fckeditor/editor/lang/ca.js +504 -0
  305. data/fckeditor/editor/lang/cs.js +504 -0
  306. data/fckeditor/editor/lang/da.js +504 -0
  307. data/fckeditor/editor/lang/de.js +504 -0
  308. data/fckeditor/editor/lang/el.js +504 -0
  309. data/fckeditor/editor/lang/en-au.js +504 -0
  310. data/fckeditor/editor/lang/en-ca.js +504 -0
  311. data/fckeditor/editor/lang/en-uk.js +504 -0
  312. data/fckeditor/editor/lang/en.js +504 -0
  313. data/fckeditor/editor/lang/eo.js +504 -0
  314. data/fckeditor/editor/lang/es.js +504 -0
  315. data/fckeditor/editor/lang/et.js +504 -0
  316. data/fckeditor/editor/lang/eu.js +505 -0
  317. data/fckeditor/editor/lang/fa.js +504 -0
  318. data/fckeditor/editor/lang/fi.js +504 -0
  319. data/fckeditor/editor/lang/fo.js +504 -0
  320. data/fckeditor/editor/lang/fr.js +504 -0
  321. data/fckeditor/editor/lang/gl.js +504 -0
  322. data/fckeditor/editor/lang/he.js +504 -0
  323. data/fckeditor/editor/lang/hi.js +504 -0
  324. data/fckeditor/editor/lang/hr.js +504 -0
  325. data/fckeditor/editor/lang/hu.js +504 -0
  326. data/fckeditor/editor/lang/it.js +504 -0
  327. data/fckeditor/editor/lang/ja.js +504 -0
  328. data/fckeditor/editor/lang/km.js +504 -0
  329. data/fckeditor/editor/lang/ko.js +504 -0
  330. data/fckeditor/editor/lang/lt.js +504 -0
  331. data/fckeditor/editor/lang/lv.js +504 -0
  332. data/fckeditor/editor/lang/mn.js +504 -0
  333. data/fckeditor/editor/lang/ms.js +504 -0
  334. data/fckeditor/editor/lang/nb.js +504 -0
  335. data/fckeditor/editor/lang/nl.js +504 -0
  336. data/fckeditor/editor/lang/no.js +504 -0
  337. data/fckeditor/editor/lang/pl.js +504 -0
  338. data/fckeditor/editor/lang/pt-br.js +504 -0
  339. data/fckeditor/editor/lang/pt.js +504 -0
  340. data/fckeditor/editor/lang/ro.js +504 -0
  341. data/fckeditor/editor/lang/ru.js +504 -0
  342. data/fckeditor/editor/lang/sk.js +504 -0
  343. data/fckeditor/editor/lang/sl.js +504 -0
  344. data/fckeditor/editor/lang/sr-latn.js +504 -0
  345. data/fckeditor/editor/lang/sr.js +504 -0
  346. data/fckeditor/editor/lang/sv.js +504 -0
  347. data/fckeditor/editor/lang/th.js +504 -0
  348. data/fckeditor/editor/lang/tr.js +504 -0
  349. data/fckeditor/editor/lang/uk.js +504 -0
  350. data/fckeditor/editor/lang/vi.js +504 -0
  351. data/fckeditor/editor/lang/zh-cn.js +504 -0
  352. data/fckeditor/editor/lang/zh.js +504 -0
  353. data/fckeditor/editor/plugins/autogrow/fckplugin.js +92 -0
  354. data/fckeditor/editor/plugins/placeholder/fck_placeholder.html +100 -0
  355. data/fckeditor/editor/plugins/placeholder/fckplugin.js +187 -0
  356. data/fckeditor/editor/plugins/placeholder/lang/de.js +27 -0
  357. data/fckeditor/editor/plugins/placeholder/lang/en.js +27 -0
  358. data/fckeditor/editor/plugins/placeholder/lang/fr.js +27 -0
  359. data/fckeditor/editor/plugins/placeholder/lang/it.js +27 -0
  360. data/fckeditor/editor/plugins/placeholder/lang/pl.js +27 -0
  361. data/fckeditor/editor/plugins/placeholder/placeholder.gif +0 -0
  362. data/fckeditor/editor/plugins/simplecommands/fckplugin.js +29 -0
  363. data/fckeditor/editor/plugins/tablecommands/fckplugin.js +32 -0
  364. data/fckeditor/editor/skins/_fckviewstrips.html +121 -0
  365. data/fckeditor/editor/skins/default/fck_dialog.css +137 -0
  366. data/fckeditor/editor/skins/default/fck_editor.css +464 -0
  367. data/fckeditor/editor/skins/default/fck_strip.gif +0 -0
  368. data/fckeditor/editor/skins/default/images/toolbar.arrowright.gif +0 -0
  369. data/fckeditor/editor/skins/default/images/toolbar.buttonarrow.gif +0 -0
  370. data/fckeditor/editor/skins/default/images/toolbar.collapse.gif +0 -0
  371. data/fckeditor/editor/skins/default/images/toolbar.end.gif +0 -0
  372. data/fckeditor/editor/skins/default/images/toolbar.expand.gif +0 -0
  373. data/fckeditor/editor/skins/default/images/toolbar.separator.gif +0 -0
  374. data/fckeditor/editor/skins/default/images/toolbar.start.gif +0 -0
  375. data/fckeditor/editor/skins/office2003/fck_dialog.css +138 -0
  376. data/fckeditor/editor/skins/office2003/fck_editor.css +476 -0
  377. data/fckeditor/editor/skins/office2003/fck_strip.gif +0 -0
  378. data/fckeditor/editor/skins/office2003/images/toolbar.arrowright.gif +0 -0
  379. data/fckeditor/editor/skins/office2003/images/toolbar.bg.gif +0 -0
  380. data/fckeditor/editor/skins/office2003/images/toolbar.buttonarrow.gif +0 -0
  381. data/fckeditor/editor/skins/office2003/images/toolbar.collapse.gif +0 -0
  382. data/fckeditor/editor/skins/office2003/images/toolbar.end.gif +0 -0
  383. data/fckeditor/editor/skins/office2003/images/toolbar.expand.gif +0 -0
  384. data/fckeditor/editor/skins/office2003/images/toolbar.separator.gif +0 -0
  385. data/fckeditor/editor/skins/office2003/images/toolbar.start.gif +0 -0
  386. data/fckeditor/editor/skins/silver/fck_dialog.css +141 -0
  387. data/fckeditor/editor/skins/silver/fck_editor.css +473 -0
  388. data/fckeditor/editor/skins/silver/fck_strip.gif +0 -0
  389. data/fckeditor/editor/skins/silver/images/toolbar.arrowright.gif +0 -0
  390. data/fckeditor/editor/skins/silver/images/toolbar.buttonarrow.gif +0 -0
  391. data/fckeditor/editor/skins/silver/images/toolbar.buttonbg.gif +0 -0
  392. data/fckeditor/editor/skins/silver/images/toolbar.collapse.gif +0 -0
  393. data/fckeditor/editor/skins/silver/images/toolbar.end.gif +0 -0
  394. data/fckeditor/editor/skins/silver/images/toolbar.expand.gif +0 -0
  395. data/fckeditor/editor/skins/silver/images/toolbar.separator.gif +0 -0
  396. data/fckeditor/editor/skins/silver/images/toolbar.start.gif +0 -0
  397. data/fckeditor/fckconfig.js +224 -0
  398. data/fckeditor/fckeditor.js +214 -0
  399. data/fckeditor/fckstyles.xml +53 -0
  400. data/fckeditor/fcktemplates.xml +103 -0
  401. data/lib/Wiki2GoEditor/Install/editor.rb +39 -0
  402. data/test/test_install.rb +40 -0
  403. metadata +517 -0
@@ -0,0 +1,152 @@
1
+ /*
2
+ * FCKeditor - The text editor for Internet - http://www.fckeditor.net
3
+ * Copyright (C) 2003-2007 Frederico Caldeira Knabben
4
+ *
5
+ * == BEGIN LICENSE ==
6
+ *
7
+ * Licensed under the terms of any of the following licenses at your
8
+ * choice:
9
+ *
10
+ * - GNU General Public License Version 2 or later (the "GPL")
11
+ * http://www.gnu.org/licenses/gpl.html
12
+ *
13
+ * - GNU Lesser General Public License Version 2.1 or later (the "LGPL")
14
+ * http://www.gnu.org/licenses/lgpl.html
15
+ *
16
+ * - Mozilla Public License Version 1.1 or later (the "MPL")
17
+ * http://www.mozilla.org/MPL/MPL-1.1.html
18
+ *
19
+ * == END LICENSE ==
20
+ *
21
+ * Extensions to the JavaScript Core.
22
+ *
23
+ * All custom extentions functions are PascalCased to differ from the standard
24
+ * camelCased ones.
25
+ */
26
+
27
+ String.prototype.Contains = function( textToCheck )
28
+ {
29
+ return ( this.indexOf( textToCheck ) > -1 ) ;
30
+ }
31
+
32
+ String.prototype.Equals = function()
33
+ {
34
+ var aArgs = arguments ;
35
+
36
+ // The arguments could also be a single array.
37
+ if ( aArgs.length == 1 && aArgs[0].pop )
38
+ aArgs = aArgs[0] ;
39
+
40
+ for ( var i = 0 ; i < aArgs.length ; i++ )
41
+ {
42
+ if ( this == aArgs[i] )
43
+ return true ;
44
+ }
45
+ return false ;
46
+ }
47
+
48
+ String.prototype.IEquals = function()
49
+ {
50
+ var thisUpper = this.toUpperCase() ;
51
+
52
+ var aArgs = arguments ;
53
+
54
+ // The arguments could also be a single array.
55
+ if ( aArgs.length == 1 && aArgs[0].pop )
56
+ aArgs = aArgs[0] ;
57
+
58
+ for ( var i = 0 ; i < aArgs.length ; i++ )
59
+ {
60
+ if ( thisUpper == aArgs[i].toUpperCase() )
61
+ return true ;
62
+ }
63
+ return false ;
64
+ }
65
+
66
+ String.prototype.ReplaceAll = function( searchArray, replaceArray )
67
+ {
68
+ var replaced = this ;
69
+
70
+ for ( var i = 0 ; i < searchArray.length ; i++ )
71
+ {
72
+ replaced = replaced.replace( searchArray[i], replaceArray[i] ) ;
73
+ }
74
+
75
+ return replaced ;
76
+ }
77
+
78
+ Array.prototype.AddItem = function( item )
79
+ {
80
+ var i = this.length ;
81
+ this[ i ] = item ;
82
+ return i ;
83
+ }
84
+
85
+ Array.prototype.IndexOf = function( value )
86
+ {
87
+ for ( var i = 0 ; i < this.length ; i++ )
88
+ {
89
+ if ( this[i] == value )
90
+ return i ;
91
+ }
92
+ return -1 ;
93
+ }
94
+
95
+ String.prototype.StartsWith = function( value )
96
+ {
97
+ return ( this.substr( 0, value.length ) == value ) ;
98
+ }
99
+
100
+ // Extends the String object, creating a "EndsWith" method on it.
101
+ String.prototype.EndsWith = function( value, ignoreCase )
102
+ {
103
+ var L1 = this.length ;
104
+ var L2 = value.length ;
105
+
106
+ if ( L2 > L1 )
107
+ return false ;
108
+
109
+ if ( ignoreCase )
110
+ {
111
+ var oRegex = new RegExp( value + '$' , 'i' ) ;
112
+ return oRegex.test( this ) ;
113
+ }
114
+ else
115
+ return ( L2 == 0 || this.substr( L1 - L2, L2 ) == value ) ;
116
+ }
117
+
118
+ String.prototype.Remove = function( start, length )
119
+ {
120
+ var s = '' ;
121
+
122
+ if ( start > 0 )
123
+ s = this.substring( 0, start ) ;
124
+
125
+ if ( start + length < this.length )
126
+ s += this.substring( start + length , this.length ) ;
127
+
128
+ return s ;
129
+ }
130
+
131
+ String.prototype.Trim = function()
132
+ {
133
+ // We are not using \s because we don't want "non-breaking spaces to be caught".
134
+ return this.replace( /(^[ \t\n\r]*)|([ \t\n\r]*$)/g, '' ) ;
135
+ }
136
+
137
+ String.prototype.LTrim = function()
138
+ {
139
+ // We are not using \s because we don't want "non-breaking spaces to be caught".
140
+ return this.replace( /^[ \t\n\r]*/g, '' ) ;
141
+ }
142
+
143
+ String.prototype.RTrim = function()
144
+ {
145
+ // We are not using \s because we don't want "non-breaking spaces to be caught".
146
+ return this.replace( /[ \t\n\r]*$/g, '' ) ;
147
+ }
148
+
149
+ String.prototype.ReplaceNewLineChars = function( replacement )
150
+ {
151
+ return this.replace( /\n/g, replacement ) ;
152
+ }
@@ -0,0 +1,108 @@
1
+ /*
2
+ * FCKeditor - The text editor for Internet - http://www.fckeditor.net
3
+ * Copyright (C) 2003-2007 Frederico Caldeira Knabben
4
+ *
5
+ * == BEGIN LICENSE ==
6
+ *
7
+ * Licensed under the terms of any of the following licenses at your
8
+ * choice:
9
+ *
10
+ * - GNU General Public License Version 2 or later (the "GPL")
11
+ * http://www.gnu.org/licenses/gpl.html
12
+ *
13
+ * - GNU Lesser General Public License Version 2.1 or later (the "LGPL")
14
+ * http://www.gnu.org/licenses/lgpl.html
15
+ *
16
+ * - Mozilla Public License Version 1.1 or later (the "MPL")
17
+ * http://www.mozilla.org/MPL/MPL-1.1.html
18
+ *
19
+ * == END LICENSE ==
20
+ *
21
+ * This is a utility object which can be used to load specific components of
22
+ * FCKeditor, including all dependencies.
23
+ */
24
+
25
+ var FCK_GENERIC = 1 ;
26
+ var FCK_GENERIC_SPECIFIC = 2 ;
27
+ var FCK_SPECIFIC = 3 ;
28
+
29
+ var FCKScriptLoader = new Object() ;
30
+ FCKScriptLoader.FCKeditorPath = '/fckeditor/' ;
31
+
32
+ FCKScriptLoader._Scripts = new Object() ;
33
+ FCKScriptLoader._LoadedScripts = new Object() ;
34
+
35
+ FCKScriptLoader._IsIE = (/msie/).test( navigator.userAgent.toLowerCase() ) ;
36
+
37
+ FCKScriptLoader.Load = function( scriptName )
38
+ {
39
+ // Check if the script has already been loaded.
40
+ if ( scriptName in FCKScriptLoader._LoadedScripts )
41
+ return ;
42
+
43
+ var oScriptInfo = this._Scripts[ scriptName ] ;
44
+
45
+ if ( !oScriptInfo )
46
+ {
47
+ alert( 'FCKScriptLoader: The script "' + scriptName + '" could not be loaded' ) ;
48
+ return ;
49
+ }
50
+
51
+ for ( var i = 0 ; i < oScriptInfo.Dependency.length ; i++ )
52
+ {
53
+ this.Load( oScriptInfo.Dependency[i] ) ;
54
+ }
55
+
56
+ var sBaseScriptName = oScriptInfo.BasePath + scriptName.toLowerCase() ;
57
+
58
+ if ( oScriptInfo.Compatibility == FCK_GENERIC || oScriptInfo.Compatibility == FCK_GENERIC_SPECIFIC )
59
+ this._LoadScript( sBaseScriptName + '.js' ) ;
60
+
61
+ if ( oScriptInfo.Compatibility == FCK_SPECIFIC || oScriptInfo.Compatibility == FCK_GENERIC_SPECIFIC )
62
+ {
63
+ if ( this._IsIE )
64
+ this._LoadScript( sBaseScriptName + '_ie.js' ) ;
65
+ else
66
+ this._LoadScript( sBaseScriptName + '_gecko.js' ) ;
67
+ }
68
+
69
+ FCKScriptLoader._LoadedScripts[ scriptName ] = true ;
70
+ }
71
+
72
+ FCKScriptLoader._LoadScript = function( scriptPathFromSource )
73
+ {
74
+ document.write( '<script type="text/javascript" src="' + this.FCKeditorPath + 'editor/_source/' + scriptPathFromSource + '" onerror="alert(\'Error loading \' + scriptPathFromSource);"><\/script>' ) ;
75
+ }
76
+
77
+ FCKScriptLoader.AddScript = function( scriptName, scriptBasePath, dependency, compatibility )
78
+ {
79
+ this._Scripts[ scriptName ] =
80
+ {
81
+ BasePath : scriptBasePath || '',
82
+ Dependency : dependency || [],
83
+ Compatibility : compatibility || FCK_GENERIC
84
+ } ;
85
+ }
86
+
87
+ /*
88
+ * ####################################
89
+ * ### Scripts Definition List
90
+ */
91
+
92
+ FCKScriptLoader.AddScript( 'FCKConstants' ) ;
93
+ FCKScriptLoader.AddScript( 'FCKJSCoreExtensions' ) ;
94
+ FCKScriptLoader.AddScript( 'FCKImagePreloader' , 'classes/' ) ;
95
+ FCKScriptLoader.AddScript( 'FCKBrowserInfo' , 'internals/' , ['FCKJSCoreExtensions'] ) ;
96
+ FCKScriptLoader.AddScript( 'FCKConfig' , 'internals/' ) ;
97
+ FCKScriptLoader.AddScript( 'FCKListsLib' , 'internals/' ) ;
98
+ FCKScriptLoader.AddScript( 'FCKDebug' , 'internals/' , ['FCKConfig'] ) ;
99
+ FCKScriptLoader.AddScript( 'FCKDomTools' , 'internals/' , ['FCKJSCoreExtensions'], FCK_GENERIC ) ;
100
+ FCKScriptLoader.AddScript( 'FCKTools' , 'internals/' , ['FCKJSCoreExtensions','FCKBrowserInfo'], FCK_GENERIC_SPECIFIC ) ;
101
+ FCKScriptLoader.AddScript( 'FCKElementPath' , 'classes/' , ['FCKListsLib'], FCK_GENERIC ) ;
102
+ FCKScriptLoader.AddScript( 'FCKDocumentFragment', 'classes/' , ['FCKDomTools'], FCK_SPECIFIC ) ;
103
+ FCKScriptLoader.AddScript( 'FCKDomRange' , 'classes/' , ['FCKBrowserInfo','FCKJSCoreExtensions','FCKW3CRange','FCKElementPath','FCKDomTools','FCKTools','FCKDocumentFragment'], FCK_GENERIC_SPECIFIC ) ;
104
+ FCKScriptLoader.AddScript( 'FCKEnterKey' , 'classes/' , ['FCKDomRange','FCKDomTools','FCKTools','FCKKeystrokeHandler','FCKListHandler'], FCK_GENERIC ) ;
105
+ FCKScriptLoader.AddScript( 'FCKKeystrokeHandler', 'classes/' , ['FCKConstants','FCKBrowserInfo','FCKTools'], FCK_GENERIC ) ;
106
+ FCKScriptLoader.AddScript( 'FCKListHandler' , 'internals/' , ['FCKJSCoreExtensions','FCKDomTools','FCKTools'], FCK_GENERIC ) ;
107
+ FCKScriptLoader.AddScript( 'FCKW3CRange' , 'classes/' , ['FCKDomTools','FCKTools','FCKDocumentFragment'], FCK_GENERIC ) ;
108
+ // ####################################
@@ -0,0 +1,859 @@
1
+ /*
2
+ * FCKeditor - The text editor for Internet - http://www.fckeditor.net
3
+ * Copyright (C) 2003-2007 Frederico Caldeira Knabben
4
+ *
5
+ * == BEGIN LICENSE ==
6
+ *
7
+ * Licensed under the terms of any of the following licenses at your
8
+ * choice:
9
+ *
10
+ * - GNU General Public License Version 2 or later (the "GPL")
11
+ * http://www.gnu.org/licenses/gpl.html
12
+ *
13
+ * - GNU Lesser General Public License Version 2.1 or later (the "LGPL")
14
+ * http://www.gnu.org/licenses/lgpl.html
15
+ *
16
+ * - Mozilla Public License Version 1.1 or later (the "MPL")
17
+ * http://www.mozilla.org/MPL/MPL-1.1.html
18
+ *
19
+ * == END LICENSE ==
20
+ *
21
+ * Creation and initialization of the "FCK" object. This is the main object
22
+ * that represents an editor instance.
23
+ */
24
+
25
+ // FCK represents the active editor instance.
26
+ var FCK =
27
+ {
28
+ Name : FCKURLParams[ 'InstanceName' ],
29
+ Status : FCK_STATUS_NOTLOADED,
30
+ EditMode : FCK_EDITMODE_WYSIWYG,
31
+ Toolbar : null,
32
+ HasFocus : false,
33
+
34
+ GetLinkedFieldValue : function()
35
+ {
36
+ return this.LinkedField.value ;
37
+ },
38
+
39
+ GetParentForm : function()
40
+ {
41
+ return this.LinkedField.form ;
42
+ } ,
43
+
44
+ // # START : IsDirty implementation
45
+
46
+ StartupValue : '',
47
+
48
+ IsDirty : function()
49
+ {
50
+ if ( this.EditMode == FCK_EDITMODE_SOURCE )
51
+ return ( this.StartupValue != this.EditingArea.Textarea.value ) ;
52
+ else
53
+ return ( this.StartupValue != this.EditorDocument.body.innerHTML ) ;
54
+ },
55
+
56
+ ResetIsDirty : function()
57
+ {
58
+ if ( this.EditMode == FCK_EDITMODE_SOURCE )
59
+ this.StartupValue = this.EditingArea.Textarea.value ;
60
+ else if ( this.EditorDocument.body )
61
+ this.StartupValue = this.EditorDocument.body.innerHTML ;
62
+ },
63
+
64
+ // # END : IsDirty implementation
65
+
66
+ StartEditor : function()
67
+ {
68
+ this.TempBaseTag = FCKConfig.BaseHref.length > 0 ? '<base href="' + FCKConfig.BaseHref + '" _fcktemp="true"></base>' : '' ;
69
+
70
+ // Setup the keystroke handler.
71
+ var oKeystrokeHandler = FCK.KeystrokeHandler = new FCKKeystrokeHandler() ;
72
+ oKeystrokeHandler.OnKeystroke = _FCK_KeystrokeHandler_OnKeystroke ;
73
+
74
+ oKeystrokeHandler.SetKeystrokes( FCKConfig.Keystrokes ) ;
75
+
76
+ // In IE7, if the editor tries to access the clipboard by code, a dialog is
77
+ // shown to the user asking if the application is allowed to access or not.
78
+ // Due to the IE implementation of it, the KeystrokeHandler will not work
79
+ //well in this case, so we must leave the pasting keys to have their default behavior.
80
+ if ( FCKBrowserInfo.IsIE7 )
81
+ {
82
+ if ( ( CTRL + 86 /*V*/ ) in oKeystrokeHandler.Keystrokes )
83
+ oKeystrokeHandler.SetKeystrokes( [ CTRL + 86, true ] ) ;
84
+
85
+ if ( ( SHIFT + 45 /*INS*/ ) in oKeystrokeHandler.Keystrokes )
86
+ oKeystrokeHandler.SetKeystrokes( [ SHIFT + 45, true ] ) ;
87
+ }
88
+
89
+ this.EditingArea = new FCKEditingArea( document.getElementById( 'xEditingArea' ) ) ;
90
+ this.EditingArea.FFSpellChecker = false ;
91
+
92
+ // Final setup of the lists lib.
93
+ FCKListsLib.Setup() ;
94
+
95
+ // Set the editor's startup contents
96
+ this.SetHTML( this.GetLinkedFieldValue(), true ) ;
97
+ },
98
+
99
+ Focus : function()
100
+ {
101
+ FCK.EditingArea.Focus() ;
102
+ },
103
+
104
+ SetStatus : function( newStatus )
105
+ {
106
+ this.Status = newStatus ;
107
+
108
+ if ( newStatus == FCK_STATUS_ACTIVE )
109
+ {
110
+ FCKFocusManager.AddWindow( window, true ) ;
111
+
112
+ if ( FCKBrowserInfo.IsIE )
113
+ FCKFocusManager.AddWindow( window.frameElement, true ) ;
114
+
115
+ // Force the focus in the editor.
116
+ if ( FCKConfig.StartupFocus )
117
+ FCK.Focus() ;
118
+ }
119
+
120
+ this.Events.FireEvent( 'OnStatusChange', newStatus ) ;
121
+ },
122
+
123
+ // Fixes the body by moving all inline and text nodes to appropriate block
124
+ // elements.
125
+ FixBody : function()
126
+ {
127
+ var sBlockTag = FCKConfig.EnterMode ;
128
+
129
+ // In 'br' mode, no fix must be done.
130
+ if ( sBlockTag != 'p' && sBlockTag != 'div' )
131
+ return ;
132
+
133
+ var oDocument = this.EditorDocument ;
134
+
135
+ if ( !oDocument )
136
+ return ;
137
+
138
+ var oBody = oDocument.body ;
139
+
140
+ if ( !oBody )
141
+ return ;
142
+
143
+ FCKDomTools.TrimNode( oBody ) ;
144
+
145
+ var oNode = oBody.firstChild ;
146
+ var oNewBlock ;
147
+
148
+ while ( oNode )
149
+ {
150
+ var bMoveNode = false ;
151
+
152
+ switch ( oNode.nodeType )
153
+ {
154
+ // Element Node.
155
+ case 1 :
156
+ if ( !FCKListsLib.BlockElements[ oNode.nodeName.toLowerCase() ] )
157
+ bMoveNode = true ;
158
+ break ;
159
+
160
+ // Text Node.
161
+ case 3 :
162
+ // Ignore space only or empty text.
163
+ if ( oNewBlock || oNode.nodeValue.Trim().length > 0 )
164
+ bMoveNode = true ;
165
+ }
166
+
167
+ if ( bMoveNode )
168
+ {
169
+ var oParent = oNode.parentNode ;
170
+
171
+ if ( !oNewBlock )
172
+ oNewBlock = oParent.insertBefore( oDocument.createElement( sBlockTag ), oNode ) ;
173
+
174
+ oNewBlock.appendChild( oParent.removeChild( oNode ) ) ;
175
+
176
+ oNode = oNewBlock.nextSibling ;
177
+ }
178
+ else
179
+ {
180
+ if ( oNewBlock )
181
+ {
182
+ FCKDomTools.TrimNode( oNewBlock ) ;
183
+ oNewBlock = null ;
184
+ }
185
+ oNode = oNode.nextSibling ;
186
+ }
187
+ }
188
+
189
+ if ( oNewBlock )
190
+ FCKDomTools.TrimNode( oNewBlock ) ;
191
+ },
192
+
193
+ GetXHTML : function( format )
194
+ {
195
+ // We assume that if the user is in source editing, the editor value must
196
+ // represent the exact contents of the source, as the user wanted it to be.
197
+ if ( FCK.EditMode == FCK_EDITMODE_SOURCE )
198
+ return FCK.EditingArea.Textarea.value ;
199
+
200
+ this.FixBody() ;
201
+
202
+ var sXHTML ;
203
+ var oDoc = FCK.EditorDocument ;
204
+
205
+ if ( !oDoc )
206
+ return null ;
207
+
208
+ if ( FCKConfig.FullPage )
209
+ {
210
+ sXHTML = FCKXHtml.GetXHTML( oDoc.getElementsByTagName( 'html' )[0], true, format ) ;
211
+
212
+ if ( FCK.DocTypeDeclaration && FCK.DocTypeDeclaration.length > 0 )
213
+ sXHTML = FCK.DocTypeDeclaration + '\n' + sXHTML ;
214
+
215
+ if ( FCK.XmlDeclaration && FCK.XmlDeclaration.length > 0 )
216
+ sXHTML = FCK.XmlDeclaration + '\n' + sXHTML ;
217
+ }
218
+ else
219
+ {
220
+ sXHTML = FCKXHtml.GetXHTML( oDoc.body, false, format ) ;
221
+
222
+ if ( FCKConfig.IgnoreEmptyParagraphValue && FCKRegexLib.EmptyOutParagraph.test( sXHTML ) )
223
+ sXHTML = '' ;
224
+ }
225
+
226
+ // Restore protected attributes.
227
+ sXHTML = FCK.ProtectEventsRestore( sXHTML ) ;
228
+
229
+ if ( FCKBrowserInfo.IsIE )
230
+ sXHTML = sXHTML.replace( FCKRegexLib.ToReplace, '$1' ) ;
231
+
232
+ return FCKConfig.ProtectedSource.Revert( sXHTML ) ;
233
+ },
234
+
235
+ UpdateLinkedField : function()
236
+ {
237
+ FCK.LinkedField.value = FCK.GetXHTML( FCKConfig.FormatOutput ) ;
238
+ FCK.Events.FireEvent( 'OnAfterLinkedFieldUpdate' ) ;
239
+ },
240
+
241
+ RegisteredDoubleClickHandlers : new Object(),
242
+
243
+ OnDoubleClick : function( element )
244
+ {
245
+ var oHandler = FCK.RegisteredDoubleClickHandlers[ element.tagName ] ;
246
+ if ( oHandler )
247
+ oHandler( element ) ;
248
+ },
249
+
250
+ // Register objects that can handle double click operations.
251
+ RegisterDoubleClickHandler : function( handlerFunction, tag )
252
+ {
253
+ FCK.RegisteredDoubleClickHandlers[ tag.toUpperCase() ] = handlerFunction ;
254
+ },
255
+
256
+ OnAfterSetHTML : function()
257
+ {
258
+ FCKDocumentProcessor.Process( FCK.EditorDocument ) ;
259
+ FCKUndo.SaveUndoStep() ;
260
+
261
+ FCK.Events.FireEvent( 'OnSelectionChange' ) ;
262
+ FCK.Events.FireEvent( 'OnAfterSetHTML' ) ;
263
+ },
264
+
265
+ // Saves URLs on links and images on special attributes, so they don't change when
266
+ // moving around.
267
+ ProtectUrls : function( html )
268
+ {
269
+ // <A> href
270
+ html = html.replace( FCKRegexLib.ProtectUrlsA , '$& _fcksavedurl=$1' ) ;
271
+
272
+ // <IMG> src
273
+ html = html.replace( FCKRegexLib.ProtectUrlsImg , '$& _fcksavedurl=$1' ) ;
274
+
275
+ return html ;
276
+ },
277
+
278
+ // Saves event attributes (like onclick) so they don't get executed while
279
+ // editing.
280
+ ProtectEvents : function( html )
281
+ {
282
+ return html.replace( FCKRegexLib.TagsWithEvent, _FCK_ProtectEvents_ReplaceTags ) ;
283
+ },
284
+
285
+ ProtectEventsRestore : function( html )
286
+ {
287
+ return html.replace( FCKRegexLib.ProtectedEvents, _FCK_ProtectEvents_RestoreEvents ) ;
288
+ },
289
+
290
+ ProtectTags : function( html )
291
+ {
292
+ var sTags = FCKConfig.ProtectedTags ;
293
+
294
+ // IE doesn't support <abbr> and it breaks it. Let's protect it.
295
+ if ( FCKBrowserInfo.IsIE )
296
+ sTags += sTags.length > 0 ? '|ABBR' : 'ABBR' ;
297
+
298
+ var oRegex ;
299
+ if ( sTags.length > 0 )
300
+ {
301
+ oRegex = new RegExp( '<(' + sTags + ')(?!\w|:)', 'gi' ) ;
302
+ html = html.replace( oRegex, '<FCK:$1' ) ;
303
+
304
+ oRegex = new RegExp( '<\/(' + sTags + ')>', 'gi' ) ;
305
+ html = html.replace( oRegex, '<\/FCK:$1>' ) ;
306
+ }
307
+
308
+ // Protect some empty elements. We must do it separately becase the
309
+ // original tag may not contain the closing slash, like <hr>:
310
+ // - <meta> tags get executed, so if you have a redirect meta, the
311
+ // content will move to the target page.
312
+ // - <hr> may destroy the document structure if not well
313
+ // positioned. The trick is protect it here and restore them in
314
+ // the FCKDocumentProcessor.
315
+ sTags = 'META' ;
316
+ if ( FCKBrowserInfo.IsIE )
317
+ sTags += '|HR' ;
318
+
319
+ oRegex = new RegExp( '<((' + sTags + ')(?=\s|>)[\s\S]*?)/?>', 'gi' ) ;
320
+ html = html.replace( oRegex, '<FCK:$1 />' ) ;
321
+
322
+ return html ;
323
+ },
324
+
325
+ SetHTML : function( html, resetIsDirty )
326
+ {
327
+ this.EditingArea.Mode = FCK.EditMode ;
328
+
329
+ if ( FCK.EditMode == FCK_EDITMODE_WYSIWYG )
330
+ {
331
+ html = FCKConfig.ProtectedSource.Protect( html ) ;
332
+
333
+ // Fix for invalid self-closing tags (see #152).
334
+ html = html.replace( FCKRegexLib.InvalidSelfCloseTags, '$1></$2>' ) ;
335
+
336
+ html = FCK.ProtectEvents( html ) ;
337
+ html = FCK.ProtectUrls( html ) ;
338
+ html = FCK.ProtectTags( html ) ;
339
+
340
+ // Firefox can't handle correctly the editing of the STRONG and EM tags.
341
+ // We must replace them with B and I.
342
+ if ( FCKBrowserInfo.IsGecko )
343
+ {
344
+ html = html.replace( FCKRegexLib.StrongOpener, '<b$1' ) ;
345
+ html = html.replace( FCKRegexLib.StrongCloser, '<\/b>' ) ;
346
+ html = html.replace( FCKRegexLib.EmOpener, '<i$1' ) ;
347
+ html = html.replace( FCKRegexLib.EmCloser, '<\/i>' ) ;
348
+ }
349
+
350
+ this._ForceResetIsDirty = ( resetIsDirty === true ) ;
351
+
352
+ var sHtml = '' ;
353
+
354
+ if ( FCKConfig.FullPage )
355
+ {
356
+ // The HTML must be fixed if the <head> is not available.
357
+ if ( !FCKRegexLib.HeadOpener.test( html ) )
358
+ {
359
+ // Check if the <html> is available.
360
+ if ( !FCKRegexLib.HtmlOpener.test( html ) )
361
+ html = '<html dir="' + FCKConfig.ContentLangDirection + '">' + html + '</html>' ;
362
+
363
+ // Add the <head>.
364
+ html = html.replace( FCKRegexLib.HtmlOpener, '$&<head></head>' ) ;
365
+ }
366
+
367
+ // Save the DOCTYPE.
368
+ FCK.DocTypeDeclaration = html.match( FCKRegexLib.DocTypeTag ) ;
369
+
370
+ if ( FCKBrowserInfo.IsIE )
371
+ sHtml = FCK._GetBehaviorsStyle() ;
372
+ else if ( FCKConfig.ShowBorders )
373
+ sHtml = '<link href="' + FCKConfig.FullBasePath + 'css/fck_showtableborders_gecko.css" rel="stylesheet" type="text/css" _fcktemp="true" />' ;
374
+
375
+ sHtml += '<link href="' + FCKConfig.FullBasePath + 'css/fck_internal.css' + '" rel="stylesheet" type="text/css" _fcktemp="true" />' ;
376
+
377
+ // Attention: do not change it before testing it well (sample07)!
378
+ // This is tricky... if the head ends with <meta ... content type>,
379
+ // Firefox will break. But, it works if we include the temporary
380
+ // links as the last elements in the HEAD.
381
+ sHtml = html.replace( FCKRegexLib.HeadCloser, sHtml + '$&' ) ;
382
+
383
+ // Insert the base tag (FCKConfig.BaseHref), if not exists in the source.
384
+ // The base must be the first tag in the HEAD, to get relative
385
+ // links on styles, for example.
386
+ if ( FCK.TempBaseTag.length > 0 && !FCKRegexLib.HasBaseTag.test( html ) )
387
+ sHtml = sHtml.replace( FCKRegexLib.HeadOpener, '$&' + FCK.TempBaseTag ) ;
388
+ }
389
+ else
390
+ {
391
+ sHtml =
392
+ FCKConfig.DocType +
393
+ '<html dir="' + FCKConfig.ContentLangDirection + '"' ;
394
+
395
+ // On IE, if you are use a DOCTYPE differenft of HTML 4 (like
396
+ // XHTML), you must force the vertical scroll to show, otherwise
397
+ // the horizontal one may appear when the page needs vertical scrolling.
398
+ if ( FCKBrowserInfo.IsIE && !FCKRegexLib.Html4DocType.test( FCKConfig.DocType ) )
399
+ sHtml += ' style="overflow-y: scroll"' ;
400
+
401
+ sHtml +=
402
+ '><head><title></title>' +
403
+ _FCK_GetEditorAreaStyleTags() +
404
+ '<link href="' + FCKConfig.FullBasePath + 'css/fck_internal.css' + '" rel="stylesheet" type="text/css" _fcktemp="true" />' ;
405
+
406
+ if ( FCKBrowserInfo.IsIE )
407
+ sHtml += FCK._GetBehaviorsStyle() ;
408
+ else if ( FCKConfig.ShowBorders )
409
+ sHtml += '<link href="' + FCKConfig.FullBasePath + 'css/fck_showtableborders_gecko.css" rel="stylesheet" type="text/css" _fcktemp="true" />' ;
410
+
411
+ sHtml += FCK.TempBaseTag ;
412
+
413
+ // Add ID and Class to the body
414
+ var sBodyTag = '<body' ;
415
+ if ( FCKConfig.BodyId && FCKConfig.BodyId.length > 0 )
416
+ sBodyTag += ' id="' + FCKConfig.BodyId + '"' ;
417
+ if ( FCKConfig.BodyClass && FCKConfig.BodyClass.length > 0 )
418
+ sBodyTag += ' class="' + FCKConfig.BodyClass + '"' ;
419
+ sHtml += '</head>' + sBodyTag + '>' ;
420
+
421
+ if ( FCKBrowserInfo.IsGecko && ( html.length == 0 || FCKRegexLib.EmptyParagraph.test( html ) ) )
422
+ sHtml += GECKO_BOGUS ;
423
+ else
424
+ sHtml += html ;
425
+
426
+ sHtml += '</body></html>' ;
427
+ }
428
+
429
+ this.EditingArea.OnLoad = _FCK_EditingArea_OnLoad ;
430
+ this.EditingArea.Start( sHtml ) ;
431
+ }
432
+ else
433
+ {
434
+ // Remove the references to the following elements, as the editing area
435
+ // IFRAME will be removed.
436
+ FCK.EditorWindow = null ;
437
+ FCK.EditorDocument = null ;
438
+
439
+ this.EditingArea.OnLoad = null ;
440
+ this.EditingArea.Start( html ) ;
441
+
442
+ // Enables the context menu in the textarea.
443
+ this.EditingArea.Textarea._FCKShowContextMenu = true ;
444
+
445
+ // Removes the enter key handler.
446
+ FCK.EnterKeyHandler = null ;
447
+
448
+ if ( resetIsDirty )
449
+ this.ResetIsDirty() ;
450
+
451
+ // Listen for keystroke events.
452
+ FCK.KeystrokeHandler.AttachToElement( this.EditingArea.Textarea ) ;
453
+
454
+ this.EditingArea.Textarea.focus() ;
455
+
456
+ FCK.Events.FireEvent( 'OnAfterSetHTML' ) ;
457
+ }
458
+
459
+ if ( FCKBrowserInfo.IsGecko )
460
+ window.onresize() ;
461
+ },
462
+
463
+ // For the FocusManager
464
+ HasFocus : false,
465
+
466
+
467
+ // This collection is used by the browser specific implementations to tell
468
+ // wich named commands must be handled separately.
469
+ RedirectNamedCommands : new Object(),
470
+
471
+ ExecuteNamedCommand : function( commandName, commandParameter, noRedirect )
472
+ {
473
+ FCKUndo.SaveUndoStep() ;
474
+
475
+ if ( !noRedirect && FCK.RedirectNamedCommands[ commandName ] != null )
476
+ FCK.ExecuteRedirectedNamedCommand( commandName, commandParameter ) ;
477
+ else
478
+ {
479
+ FCK.Focus() ;
480
+ FCK.EditorDocument.execCommand( commandName, false, commandParameter ) ;
481
+ FCK.Events.FireEvent( 'OnSelectionChange' ) ;
482
+ }
483
+
484
+ FCKUndo.SaveUndoStep() ;
485
+ },
486
+
487
+ GetNamedCommandState : function( commandName )
488
+ {
489
+ try
490
+ {
491
+
492
+ if ( !FCK.EditorDocument.queryCommandEnabled( commandName ) )
493
+ return FCK_TRISTATE_DISABLED ;
494
+ else
495
+ return FCK.EditorDocument.queryCommandState( commandName ) ? FCK_TRISTATE_ON : FCK_TRISTATE_OFF ;
496
+ }
497
+ catch ( e )
498
+ {
499
+ return FCK_TRISTATE_OFF ;
500
+ }
501
+ },
502
+
503
+ GetNamedCommandValue : function( commandName )
504
+ {
505
+ var sValue = '' ;
506
+ var eState = FCK.GetNamedCommandState( commandName ) ;
507
+
508
+ if ( eState == FCK_TRISTATE_DISABLED )
509
+ return null ;
510
+
511
+ try
512
+ {
513
+ sValue = this.EditorDocument.queryCommandValue( commandName ) ;
514
+ }
515
+ catch(e) {}
516
+
517
+ return sValue ? sValue : '' ;
518
+ },
519
+
520
+ PasteFromWord : function()
521
+ {
522
+ FCKDialog.OpenDialog( 'FCKDialog_Paste', FCKLang.PasteFromWord, 'dialog/fck_paste.html', 400, 330, 'Word' ) ;
523
+ },
524
+
525
+ Preview : function()
526
+ {
527
+ var iWidth = FCKConfig.ScreenWidth * 0.8 ;
528
+ var iHeight = FCKConfig.ScreenHeight * 0.7 ;
529
+ var iLeft = ( FCKConfig.ScreenWidth - iWidth ) / 2 ;
530
+ var oWindow = window.open( '', null, 'toolbar=yes,location=no,status=yes,menubar=yes,scrollbars=yes,resizable=yes,width=' + iWidth + ',height=' + iHeight + ',left=' + iLeft ) ;
531
+
532
+ var sHTML ;
533
+
534
+ if ( FCKConfig.FullPage )
535
+ {
536
+ if ( FCK.TempBaseTag.length > 0 )
537
+ sHTML = FCK.TempBaseTag + FCK.GetXHTML() ;
538
+ else
539
+ sHTML = FCK.GetXHTML() ;
540
+ }
541
+ else
542
+ {
543
+ sHTML =
544
+ FCKConfig.DocType +
545
+ '<html dir="' + FCKConfig.ContentLangDirection + '">' +
546
+ '<head>' +
547
+ FCK.TempBaseTag +
548
+ '<title>' + FCKLang.Preview + '</title>' +
549
+ _FCK_GetEditorAreaStyleTags() +
550
+ '</head><body>' +
551
+ FCK.GetXHTML() +
552
+ '</body></html>' ;
553
+ }
554
+
555
+ oWindow.document.write( sHTML );
556
+ oWindow.document.close();
557
+ },
558
+
559
+ SwitchEditMode : function( noUndo )
560
+ {
561
+ var bIsWysiwyg = ( FCK.EditMode == FCK_EDITMODE_WYSIWYG ) ;
562
+
563
+ // Save the current IsDirty state, so we may restore it after the switch.
564
+ var bIsDirty = FCK.IsDirty() ;
565
+
566
+ var sHtml ;
567
+
568
+ // Update the HTML in the view output to show.
569
+ if ( bIsWysiwyg )
570
+ {
571
+ if ( !noUndo && FCKBrowserInfo.IsIE )
572
+ FCKUndo.SaveUndoStep() ;
573
+
574
+ sHtml = FCK.GetXHTML( FCKConfig.FormatSource ) ;
575
+
576
+ if ( sHtml == null )
577
+ return false ;
578
+ }
579
+ else
580
+ sHtml = this.EditingArea.Textarea.value ;
581
+
582
+ FCK.EditMode = bIsWysiwyg ? FCK_EDITMODE_SOURCE : FCK_EDITMODE_WYSIWYG ;
583
+
584
+ FCK.SetHTML( sHtml, !bIsDirty ) ;
585
+
586
+ // Set the Focus.
587
+ FCK.Focus() ;
588
+
589
+ // Update the toolbar (Running it directly causes IE to fail).
590
+ FCKTools.RunFunction( FCK.ToolbarSet.RefreshModeState, FCK.ToolbarSet ) ;
591
+
592
+ return true ;
593
+ },
594
+
595
+ CreateElement : function( tag )
596
+ {
597
+ var e = FCK.EditorDocument.createElement( tag ) ;
598
+ return FCK.InsertElementAndGetIt( e ) ;
599
+ },
600
+
601
+ InsertElementAndGetIt : function( e )
602
+ {
603
+ e.setAttribute( 'FCKTempLabel', 'true' ) ;
604
+
605
+ this.InsertElement( e ) ;
606
+
607
+ var aEls = FCK.EditorDocument.getElementsByTagName( e.tagName ) ;
608
+
609
+ for ( var i = 0 ; i < aEls.length ; i++ )
610
+ {
611
+ if ( aEls[i].getAttribute( 'FCKTempLabel' ) )
612
+ {
613
+ aEls[i].removeAttribute( 'FCKTempLabel' ) ;
614
+ return aEls[i] ;
615
+ }
616
+ }
617
+ return null ;
618
+ }
619
+
620
+ } ;
621
+
622
+ FCK.Events = new FCKEvents( FCK ) ;
623
+ // GetHTML is Deprecated : returns the same value as GetXHTML.
624
+ FCK.GetHTML = FCK.GetXHTML ;
625
+
626
+ // Replace all events attributes (like onclick).
627
+ function _FCK_ProtectEvents_ReplaceTags( tagMatch )
628
+ {
629
+ return tagMatch.replace( FCKRegexLib.EventAttributes, _FCK_ProtectEvents_ReplaceEvents ) ;
630
+ }
631
+
632
+ // Replace an event attribute with its respective __fckprotectedatt attribute.
633
+ // The original event markup will be encoded and saved as the value of the new
634
+ // attribute.
635
+ function _FCK_ProtectEvents_ReplaceEvents( eventMatch, attName )
636
+ {
637
+ return ' ' + attName + '_fckprotectedatt="' + eventMatch.ReplaceAll( [/&/g,/'/g,/"/g,/=/g,/</g,/>/g,/\r/g,/\n/g], ['&apos;','&#39;','&quot;','&#61;','&lt;','&gt;','&#10;','&#13;'] ) + '"' ;
638
+ }
639
+
640
+ function _FCK_ProtectEvents_RestoreEvents( match, encodedOriginal )
641
+ {
642
+ return encodedOriginal.ReplaceAll( [/&#39;/g,/&quot;/g,/&#61;/g,/&lt;/g,/&gt;/g,/&#10;/g,/&#13;/g,/&apos;/g], ["'",'"','=','<','>','\r','\n','&'] ) ;
643
+ }
644
+
645
+ function _FCK_EditingArea_OnLoad()
646
+ {
647
+ // Get the editor's window and document (DOM)
648
+ FCK.EditorWindow = FCK.EditingArea.Window ;
649
+ FCK.EditorDocument = FCK.EditingArea.Document ;
650
+
651
+ FCK.InitializeBehaviors() ;
652
+
653
+ // Create the enter key handler
654
+ if ( !FCKConfig.DisableEnterKeyHandler )
655
+ FCK.EnterKeyHandler = new FCKEnterKey( FCK.EditorWindow, FCKConfig.EnterMode, FCKConfig.ShiftEnterMode ) ;
656
+
657
+ // Listen for keystroke events.
658
+ FCK.KeystrokeHandler.AttachToElement( FCK.EditorDocument ) ;
659
+
660
+ if ( FCK._ForceResetIsDirty )
661
+ FCK.ResetIsDirty() ;
662
+
663
+ // This is a tricky thing for IE. In some cases, even if the cursor is
664
+ // blinking in the editing, the keystroke handler doesn't catch keyboard
665
+ // events. We must activate the editing area to make it work. (#142).
666
+ if ( FCKBrowserInfo.IsIE && FCK.HasFocus )
667
+ FCK.EditorDocument.body.setActive() ;
668
+
669
+ FCK.OnAfterSetHTML() ;
670
+
671
+ // Check if it is not a startup call, otherwise complete the startup.
672
+ if ( FCK.Status != FCK_STATUS_NOTLOADED )
673
+ return ;
674
+
675
+ FCK.SetStatus( FCK_STATUS_ACTIVE ) ;
676
+ }
677
+
678
+ function _FCK_GetEditorAreaStyleTags()
679
+ {
680
+ var sTags = '' ;
681
+ var aCSSs = FCKConfig.EditorAreaCSS ;
682
+
683
+ for ( var i = 0 ; i < aCSSs.length ; i++ )
684
+ sTags += '<link href="' + aCSSs[i] + '" rel="stylesheet" type="text/css" />' ;
685
+
686
+ return sTags ;
687
+ }
688
+
689
+ function _FCK_KeystrokeHandler_OnKeystroke( keystroke, keystrokeValue )
690
+ {
691
+ if ( FCK.Status != FCK_STATUS_COMPLETE )
692
+ return false ;
693
+
694
+ if ( FCK.EditMode == FCK_EDITMODE_WYSIWYG )
695
+ {
696
+ if ( keystrokeValue == 'Paste' )
697
+ return !FCK.Events.FireEvent( 'OnPaste' ) ;
698
+ }
699
+ else
700
+ {
701
+ // In source mode, some actions must have their default behavior.
702
+ if ( keystrokeValue.Equals( 'Paste', 'Undo', 'Redo', 'SelectAll' ) )
703
+ return false ;
704
+ }
705
+
706
+ // The return value indicates if the default behavior of the keystroke must
707
+ // be cancelled. Let's do that only if the Execute() call explicitelly returns "false".
708
+ var oCommand = FCK.Commands.GetCommand( keystrokeValue ) ;
709
+ return ( oCommand.Execute.apply( oCommand, FCKTools.ArgumentsToArray( arguments, 2 ) ) !== false ) ;
710
+ }
711
+
712
+ // Set the FCK.LinkedField reference to the field that will be used to post the
713
+ // editor data.
714
+ (function()
715
+ {
716
+ // There is a bug on IE... getElementById returns any META tag that has the
717
+ // name set to the ID you are looking for. So the best way in to get the array
718
+ // by names and look for the correct one.
719
+ // As ASP.Net generates a ID that is different from the Name, we must also
720
+ // look for the field based on the ID (the first one is the ID).
721
+
722
+ var oDocument = window.parent.document ;
723
+
724
+ // Try to get the field using the ID.
725
+ var eLinkedField = oDocument.getElementById( FCK.Name ) ;
726
+
727
+ var i = 0;
728
+ while ( eLinkedField || i == 0 )
729
+ {
730
+ if ( eLinkedField && eLinkedField.tagName.toLowerCase().Equals( 'input', 'textarea' ) )
731
+ {
732
+ FCK.LinkedField = eLinkedField ;
733
+ break ;
734
+ }
735
+
736
+ eLinkedField = oDocument.getElementsByName( FCK.Name )[i++] ;
737
+ }
738
+ })() ;
739
+
740
+ var FCKTempBin =
741
+ {
742
+ Elements : new Array(),
743
+
744
+ AddElement : function( element )
745
+ {
746
+ var iIndex = this.Elements.length ;
747
+ this.Elements[ iIndex ] = element ;
748
+ return iIndex ;
749
+ },
750
+
751
+ RemoveElement : function( index )
752
+ {
753
+ var e = this.Elements[ index ] ;
754
+ this.Elements[ index ] = null ;
755
+ return e ;
756
+ },
757
+
758
+ Reset : function()
759
+ {
760
+ var i = 0 ;
761
+ while ( i < this.Elements.length )
762
+ this.Elements[ i++ ] == null ;
763
+ this.Elements.length = 0 ;
764
+ }
765
+ } ;
766
+
767
+
768
+
769
+ // # Focus Manager: Manages the focus in the editor.
770
+ var FCKFocusManager = FCK.FocusManager =
771
+ {
772
+ IsLocked : false,
773
+
774
+ AddWindow : function( win, sendToEditingArea )
775
+ {
776
+ var oTarget ;
777
+
778
+ if ( FCKBrowserInfo.IsIE )
779
+ oTarget = win.nodeType == 1 ? win : win.frameElement ? win.frameElement : win.document ;
780
+ else
781
+ oTarget = win.document ;
782
+
783
+ FCKTools.AddEventListener( oTarget, 'blur', FCKFocusManager_Win_OnBlur ) ;
784
+ FCKTools.AddEventListener( oTarget, 'focus', sendToEditingArea ? FCKFocusManager_Win_OnFocus_Area : FCKFocusManager_Win_OnFocus ) ;
785
+ },
786
+
787
+ RemoveWindow : function( win )
788
+ {
789
+ if ( FCKBrowserInfo.IsIE )
790
+ oTarget = win.nodeType == 1 ? win : win.frameElement ? win.frameElement : win.document ;
791
+ else
792
+ oTarget = win.document ;
793
+
794
+ FCKTools.RemoveEventListener( oTarget, 'blur', FCKFocusManager_Win_OnBlur ) ;
795
+ FCKTools.RemoveEventListener( oTarget, 'focus', FCKFocusManager_Win_OnFocus_Area ) ;
796
+ FCKTools.RemoveEventListener( oTarget, 'focus', FCKFocusManager_Win_OnFocus ) ;
797
+ },
798
+
799
+ Lock : function()
800
+ {
801
+ this.IsLocked = true ;
802
+ },
803
+
804
+ Unlock : function()
805
+ {
806
+ if ( this._HasPendingBlur )
807
+ FCKFocusManager._Timer = window.setTimeout( FCKFocusManager_FireOnBlur, 100 ) ;
808
+
809
+ this.IsLocked = false ;
810
+ },
811
+
812
+ _ResetTimer : function()
813
+ {
814
+ this._HasPendingBlur = false ;
815
+
816
+ if ( this._Timer )
817
+ {
818
+ window.clearTimeout( this._Timer ) ;
819
+ delete this._Timer ;
820
+ }
821
+ }
822
+ } ;
823
+
824
+ function FCKFocusManager_Win_OnBlur()
825
+ {
826
+ if ( typeof(FCK) != 'undefined' && FCK.HasFocus )
827
+ {
828
+ FCKFocusManager._ResetTimer() ;
829
+ FCKFocusManager._Timer = window.setTimeout( FCKFocusManager_FireOnBlur, 100 ) ;
830
+ }
831
+ }
832
+
833
+ function FCKFocusManager_FireOnBlur()
834
+ {
835
+ if ( FCKFocusManager.IsLocked )
836
+ FCKFocusManager._HasPendingBlur = true ;
837
+ else
838
+ {
839
+ FCK.HasFocus = false ;
840
+ FCK.Events.FireEvent( "OnBlur" ) ;
841
+ }
842
+ }
843
+
844
+ function FCKFocusManager_Win_OnFocus_Area()
845
+ {
846
+ FCK.Focus() ;
847
+ FCKFocusManager_Win_OnFocus() ;
848
+ }
849
+
850
+ function FCKFocusManager_Win_OnFocus()
851
+ {
852
+ FCKFocusManager._ResetTimer() ;
853
+
854
+ if ( !FCK.HasFocus && !FCKFocusManager.IsLocked )
855
+ {
856
+ FCK.HasFocus = true ;
857
+ FCK.Events.FireEvent( "OnFocus" ) ;
858
+ }
859
+ }