adva_fckeditor 0.0.1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (501) hide show
  1. checksums.yaml +7 -0
  2. data/.gitignore +17 -0
  3. data/Gemfile +4 -0
  4. data/LICENSE +22 -0
  5. data/README +21 -0
  6. data/README.md +29 -0
  7. data/Rakefile +2 -0
  8. data/adva_fckeditor.gemspec +19 -0
  9. data/app/assets/javascripts/adva_fckeditor/config.js +58 -0
  10. data/app/assets/javascripts/adva_fckeditor/fckeditor/editor/_source/classes/fckcontextmenu.js +223 -0
  11. data/app/assets/javascripts/adva_fckeditor/fckeditor/editor/_source/classes/fckdataprocessor.js +119 -0
  12. data/app/assets/javascripts/adva_fckeditor/fckeditor/editor/_source/classes/fckdocumentfragment_gecko.js +53 -0
  13. data/app/assets/javascripts/adva_fckeditor/fckeditor/editor/_source/classes/fckdocumentfragment_ie.js +58 -0
  14. data/app/assets/javascripts/adva_fckeditor/fckeditor/editor/_source/classes/fckdomrange.js +935 -0
  15. data/app/assets/javascripts/adva_fckeditor/fckeditor/editor/_source/classes/fckdomrange_gecko.js +104 -0
  16. data/app/assets/javascripts/adva_fckeditor/fckeditor/editor/_source/classes/fckdomrange_ie.js +199 -0
  17. data/app/assets/javascripts/adva_fckeditor/fckeditor/editor/_source/classes/fckdomrangeiterator.js +327 -0
  18. data/app/assets/javascripts/adva_fckeditor/fckeditor/editor/_source/classes/fckeditingarea.js +368 -0
  19. data/app/assets/javascripts/adva_fckeditor/fckeditor/editor/_source/classes/fckelementpath.js +89 -0
  20. data/app/assets/javascripts/adva_fckeditor/fckeditor/editor/_source/classes/fckenterkey.js +708 -0
  21. data/app/assets/javascripts/adva_fckeditor/fckeditor/editor/_source/classes/fckevents.js +71 -0
  22. data/app/assets/javascripts/adva_fckeditor/fckeditor/editor/_source/classes/fckhtmliterator.js +142 -0
  23. data/app/assets/javascripts/adva_fckeditor/fckeditor/editor/_source/classes/fckicon.js +103 -0
  24. data/app/assets/javascripts/adva_fckeditor/fckeditor/editor/_source/classes/fckiecleanup.js +68 -0
  25. data/app/assets/javascripts/adva_fckeditor/fckeditor/editor/_source/classes/fckimagepreloader.js +64 -0
  26. data/app/assets/javascripts/adva_fckeditor/fckeditor/editor/_source/classes/fckkeystrokehandler.js +141 -0
  27. data/app/assets/javascripts/adva_fckeditor/fckeditor/editor/_source/classes/fckmenublock.js +153 -0
  28. data/app/assets/javascripts/adva_fckeditor/fckeditor/editor/_source/classes/fckmenublockpanel.js +54 -0
  29. data/app/assets/javascripts/adva_fckeditor/fckeditor/editor/_source/classes/fckmenuitem.js +161 -0
  30. data/app/assets/javascripts/adva_fckeditor/fckeditor/editor/_source/classes/fckpanel.js +463 -0
  31. data/app/assets/javascripts/adva_fckeditor/fckeditor/editor/_source/classes/fckplugin.js +56 -0
  32. data/app/assets/javascripts/adva_fckeditor/fckeditor/editor/_source/classes/fckspecialcombo.js +376 -0
  33. data/app/assets/javascripts/adva_fckeditor/fckeditor/editor/_source/classes/fckstyle.js +1500 -0
  34. data/app/assets/javascripts/adva_fckeditor/fckeditor/editor/_source/classes/fcktoolbar.js +103 -0
  35. data/app/assets/javascripts/adva_fckeditor/fckeditor/editor/_source/classes/fcktoolbarbreak_gecko.js +36 -0
  36. data/app/assets/javascripts/adva_fckeditor/fckeditor/editor/_source/classes/fcktoolbarbreak_ie.js +38 -0
  37. data/app/assets/javascripts/adva_fckeditor/fckeditor/editor/_source/classes/fcktoolbarbutton.js +81 -0
  38. data/app/assets/javascripts/adva_fckeditor/fckeditor/editor/_source/classes/fcktoolbarbuttonui.js +198 -0
  39. data/app/assets/javascripts/adva_fckeditor/fckeditor/editor/_source/classes/fcktoolbarfontformatcombo.js +139 -0
  40. data/app/assets/javascripts/adva_fckeditor/fckeditor/editor/_source/classes/fcktoolbarfontscombo.js +98 -0
  41. data/app/assets/javascripts/adva_fckeditor/fckeditor/editor/_source/classes/fcktoolbarfontsizecombo.js +76 -0
  42. data/app/assets/javascripts/adva_fckeditor/fckeditor/editor/_source/classes/fcktoolbarpanelbutton.js +103 -0
  43. data/app/assets/javascripts/adva_fckeditor/fckeditor/editor/_source/classes/fcktoolbarspecialcombo.js +146 -0
  44. data/app/assets/javascripts/adva_fckeditor/fckeditor/editor/_source/classes/fcktoolbarstylecombo.js +200 -0
  45. data/app/assets/javascripts/adva_fckeditor/fckeditor/editor/_source/classes/fckw3crange.js +451 -0
  46. data/app/assets/javascripts/adva_fckeditor/fckeditor/editor/_source/classes/fckxml.js +108 -0
  47. data/app/assets/javascripts/adva_fckeditor/fckeditor/editor/_source/classes/fckxml_gecko.js +106 -0
  48. data/app/assets/javascripts/adva_fckeditor/fckeditor/editor/_source/classes/fckxml_ie.js +93 -0
  49. data/app/assets/javascripts/adva_fckeditor/fckeditor/editor/_source/commandclasses/fck_othercommands.js +634 -0
  50. data/app/assets/javascripts/adva_fckeditor/fckeditor/editor/_source/commandclasses/fckblockquotecommand.js +281 -0
  51. data/app/assets/javascripts/adva_fckeditor/fckeditor/editor/_source/commandclasses/fckcorestylecommand.js +61 -0
  52. data/app/assets/javascripts/adva_fckeditor/fckeditor/editor/_source/commandclasses/fckfitwindow.js +213 -0
  53. data/app/assets/javascripts/adva_fckeditor/fckeditor/editor/_source/commandclasses/fckindentcommands.js +282 -0
  54. data/app/assets/javascripts/adva_fckeditor/fckeditor/editor/_source/commandclasses/fckjustifycommands.js +173 -0
  55. data/app/assets/javascripts/adva_fckeditor/fckeditor/editor/_source/commandclasses/fcklistcommands.js +382 -0
  56. data/app/assets/javascripts/adva_fckeditor/fckeditor/editor/_source/commandclasses/fcknamedcommand.js +39 -0
  57. data/app/assets/javascripts/adva_fckeditor/fckeditor/editor/_source/commandclasses/fckpasteplaintextcommand.js +40 -0
  58. data/app/assets/javascripts/adva_fckeditor/fckeditor/editor/_source/commandclasses/fckpastewordcommand.js +40 -0
  59. data/app/assets/javascripts/adva_fckeditor/fckeditor/editor/_source/commandclasses/fckremoveformatcommand.js +45 -0
  60. data/app/assets/javascripts/adva_fckeditor/fckeditor/editor/_source/commandclasses/fckshowblocks.js +94 -0
  61. data/app/assets/javascripts/adva_fckeditor/fckeditor/editor/_source/commandclasses/fckspellcheckcommand_gecko.js +49 -0
  62. data/app/assets/javascripts/adva_fckeditor/fckeditor/editor/_source/commandclasses/fckspellcheckcommand_ie.js +72 -0
  63. data/app/assets/javascripts/adva_fckeditor/fckeditor/editor/_source/commandclasses/fckstylecommand.js +60 -0
  64. data/app/assets/javascripts/adva_fckeditor/fckeditor/editor/_source/commandclasses/fcktablecommand.js +106 -0
  65. data/app/assets/javascripts/adva_fckeditor/fckeditor/editor/_source/commandclasses/fcktextcolorcommand.js +201 -0
  66. data/app/assets/javascripts/adva_fckeditor/fckeditor/editor/_source/fckconstants.js +56 -0
  67. data/app/assets/javascripts/adva_fckeditor/fckeditor/editor/_source/fckeditorapi.js +179 -0
  68. data/app/assets/javascripts/adva_fckeditor/fckeditor/editor/_source/fckjscoreextensions.js +159 -0
  69. data/app/assets/javascripts/adva_fckeditor/fckeditor/editor/_source/fckscriptloader.js +122 -0
  70. data/app/assets/javascripts/adva_fckeditor/fckeditor/editor/_source/internals/fck.js +1256 -0
  71. data/app/assets/javascripts/adva_fckeditor/fckeditor/editor/_source/internals/fck_contextmenu.js +345 -0
  72. data/app/assets/javascripts/adva_fckeditor/fckeditor/editor/_source/internals/fck_gecko.js +497 -0
  73. data/app/assets/javascripts/adva_fckeditor/fckeditor/editor/_source/internals/fck_ie.js +456 -0
  74. data/app/assets/javascripts/adva_fckeditor/fckeditor/editor/_source/internals/fckbrowserinfo.js +61 -0
  75. data/app/assets/javascripts/adva_fckeditor/fckeditor/editor/_source/internals/fckcodeformatter.js +100 -0
  76. data/app/assets/javascripts/adva_fckeditor/fckeditor/editor/_source/internals/fckcommands.js +172 -0
  77. data/app/assets/javascripts/adva_fckeditor/fckeditor/editor/_source/internals/fckconfig.js +237 -0
  78. data/app/assets/javascripts/adva_fckeditor/fckeditor/editor/_source/internals/fckdebug.js +59 -0
  79. data/app/assets/javascripts/adva_fckeditor/fckeditor/editor/_source/internals/fckdebug_empty.js +31 -0
  80. data/app/assets/javascripts/adva_fckeditor/fckeditor/editor/_source/internals/fckdialog.js +239 -0
  81. data/app/assets/javascripts/adva_fckeditor/fckeditor/editor/_source/internals/fckdocumentprocessor.js +270 -0
  82. data/app/assets/javascripts/adva_fckeditor/fckeditor/editor/_source/internals/fckdomtools.js +1057 -0
  83. data/app/assets/javascripts/adva_fckeditor/fckeditor/editor/_source/internals/fcklanguagemanager.js +165 -0
  84. data/app/assets/javascripts/adva_fckeditor/fckeditor/editor/_source/internals/fcklisthandler.js +152 -0
  85. data/app/assets/javascripts/adva_fckeditor/fckeditor/editor/_source/internals/fcklistslib.js +63 -0
  86. data/app/assets/javascripts/adva_fckeditor/fckeditor/editor/_source/internals/fckplugins.js +46 -0
  87. data/app/assets/javascripts/adva_fckeditor/fckeditor/editor/_source/internals/fckregexlib.js +100 -0
  88. data/app/assets/javascripts/adva_fckeditor/fckeditor/editor/_source/internals/fckselection.js +42 -0
  89. data/app/assets/javascripts/adva_fckeditor/fckeditor/editor/_source/internals/fckselection_gecko.js +228 -0
  90. data/app/assets/javascripts/adva_fckeditor/fckeditor/editor/_source/internals/fckselection_ie.js +287 -0
  91. data/app/assets/javascripts/adva_fckeditor/fckeditor/editor/_source/internals/fckstyles.js +381 -0
  92. data/app/assets/javascripts/adva_fckeditor/fckeditor/editor/_source/internals/fcktablehandler.js +863 -0
  93. data/app/assets/javascripts/adva_fckeditor/fckeditor/editor/_source/internals/fcktablehandler_gecko.js +56 -0
  94. data/app/assets/javascripts/adva_fckeditor/fckeditor/editor/_source/internals/fcktablehandler_ie.js +64 -0
  95. data/app/assets/javascripts/adva_fckeditor/fckeditor/editor/_source/internals/fcktoolbaritems.js +124 -0
  96. data/app/assets/javascripts/adva_fckeditor/fckeditor/editor/_source/internals/fcktoolbarset.js +399 -0
  97. data/app/assets/javascripts/adva_fckeditor/fckeditor/editor/_source/internals/fcktools.js +749 -0
  98. data/app/assets/javascripts/adva_fckeditor/fckeditor/editor/_source/internals/fcktools_gecko.js +282 -0
  99. data/app/assets/javascripts/adva_fckeditor/fckeditor/editor/_source/internals/fcktools_ie.js +234 -0
  100. data/app/assets/javascripts/adva_fckeditor/fckeditor/editor/_source/internals/fckundo.js +223 -0
  101. data/app/assets/javascripts/adva_fckeditor/fckeditor/editor/_source/internals/fckurlparams.js +39 -0
  102. data/app/assets/javascripts/adva_fckeditor/fckeditor/editor/_source/internals/fckxhtml.js +534 -0
  103. data/app/assets/javascripts/adva_fckeditor/fckeditor/editor/_source/internals/fckxhtml_gecko.js +114 -0
  104. data/app/assets/javascripts/adva_fckeditor/fckeditor/editor/_source/internals/fckxhtml_ie.js +213 -0
  105. data/app/assets/javascripts/adva_fckeditor/fckeditor/editor/_source/internals/fckxhtmlentities.js +357 -0
  106. data/app/assets/javascripts/adva_fckeditor/fckeditor/editor/css/behaviors/disablehandles.htc +15 -0
  107. data/app/assets/javascripts/adva_fckeditor/fckeditor/editor/css/behaviors/showtableborders.htc +36 -0
  108. data/app/assets/javascripts/adva_fckeditor/fckeditor/editor/css/fck_editorarea.css +110 -0
  109. data/app/assets/javascripts/adva_fckeditor/fckeditor/editor/css/fck_internal.css +199 -0
  110. data/app/assets/javascripts/adva_fckeditor/fckeditor/editor/css/fck_showtableborders_gecko.css +49 -0
  111. data/app/assets/javascripts/adva_fckeditor/fckeditor/editor/css/images/block_address.png +0 -0
  112. data/app/assets/javascripts/adva_fckeditor/fckeditor/editor/css/images/block_blockquote.png +0 -0
  113. data/app/assets/javascripts/adva_fckeditor/fckeditor/editor/css/images/block_div.png +0 -0
  114. data/app/assets/javascripts/adva_fckeditor/fckeditor/editor/css/images/block_h1.png +0 -0
  115. data/app/assets/javascripts/adva_fckeditor/fckeditor/editor/css/images/block_h2.png +0 -0
  116. data/app/assets/javascripts/adva_fckeditor/fckeditor/editor/css/images/block_h3.png +0 -0
  117. data/app/assets/javascripts/adva_fckeditor/fckeditor/editor/css/images/block_h4.png +0 -0
  118. data/app/assets/javascripts/adva_fckeditor/fckeditor/editor/css/images/block_h5.png +0 -0
  119. data/app/assets/javascripts/adva_fckeditor/fckeditor/editor/css/images/block_h6.png +0 -0
  120. data/app/assets/javascripts/adva_fckeditor/fckeditor/editor/css/images/block_p.png +0 -0
  121. data/app/assets/javascripts/adva_fckeditor/fckeditor/editor/css/images/block_pre.png +0 -0
  122. data/app/assets/javascripts/adva_fckeditor/fckeditor/editor/css/images/fck_anchor.gif +0 -0
  123. data/app/assets/javascripts/adva_fckeditor/fckeditor/editor/css/images/fck_flashlogo.gif +0 -0
  124. data/app/assets/javascripts/adva_fckeditor/fckeditor/editor/css/images/fck_hiddenfield.gif +0 -0
  125. data/app/assets/javascripts/adva_fckeditor/fckeditor/editor/css/images/fck_pagebreak.gif +0 -0
  126. data/app/assets/javascripts/adva_fckeditor/fckeditor/editor/css/images/fck_plugin.gif +0 -0
  127. data/app/assets/javascripts/adva_fckeditor/fckeditor/editor/dialog/common/fck_dialog_common.css +85 -0
  128. data/app/assets/javascripts/adva_fckeditor/fckeditor/editor/dialog/common/fck_dialog_common.js +347 -0
  129. data/app/assets/javascripts/adva_fckeditor/fckeditor/editor/dialog/common/images/locked.gif +0 -0
  130. data/app/assets/javascripts/adva_fckeditor/fckeditor/editor/dialog/common/images/reset.gif +0 -0
  131. data/app/assets/javascripts/adva_fckeditor/fckeditor/editor/dialog/common/images/unlocked.gif +0 -0
  132. data/app/assets/javascripts/adva_fckeditor/fckeditor/editor/dialog/fck_about/logo_fckeditor.gif +0 -0
  133. data/app/assets/javascripts/adva_fckeditor/fckeditor/editor/dialog/fck_about/logo_fredck.gif +0 -0
  134. data/app/assets/javascripts/adva_fckeditor/fckeditor/editor/dialog/fck_about/sponsors/spellchecker_net.gif +0 -0
  135. data/app/assets/javascripts/adva_fckeditor/fckeditor/editor/dialog/fck_about.html +161 -0
  136. data/app/assets/javascripts/adva_fckeditor/fckeditor/editor/dialog/fck_anchor.html +220 -0
  137. data/app/assets/javascripts/adva_fckeditor/fckeditor/editor/dialog/fck_button.html +104 -0
  138. data/app/assets/javascripts/adva_fckeditor/fckeditor/editor/dialog/fck_checkbox.html +104 -0
  139. data/app/assets/javascripts/adva_fckeditor/fckeditor/editor/dialog/fck_colorselector.html +172 -0
  140. data/app/assets/javascripts/adva_fckeditor/fckeditor/editor/dialog/fck_div.html +396 -0
  141. data/app/assets/javascripts/adva_fckeditor/fckeditor/editor/dialog/fck_docprops/fck_document_preview.html +113 -0
  142. data/app/assets/javascripts/adva_fckeditor/fckeditor/editor/dialog/fck_docprops.html +600 -0
  143. data/app/assets/javascripts/adva_fckeditor/fckeditor/editor/dialog/fck_flash/fck_flash.js +300 -0
  144. data/app/assets/javascripts/adva_fckeditor/fckeditor/editor/dialog/fck_flash/fck_flash_preview.html +50 -0
  145. data/app/assets/javascripts/adva_fckeditor/fckeditor/editor/dialog/fck_flash.html +152 -0
  146. data/app/assets/javascripts/adva_fckeditor/fckeditor/editor/dialog/fck_form.html +109 -0
  147. data/app/assets/javascripts/adva_fckeditor/fckeditor/editor/dialog/fck_hiddenfield.html +115 -0
  148. data/app/assets/javascripts/adva_fckeditor/fckeditor/editor/dialog/fck_image/fck_image.js +512 -0
  149. data/app/assets/javascripts/adva_fckeditor/fckeditor/editor/dialog/fck_image/fck_image_preview.html +72 -0
  150. data/app/assets/javascripts/adva_fckeditor/fckeditor/editor/dialog/fck_image.html +258 -0
  151. data/app/assets/javascripts/adva_fckeditor/fckeditor/editor/dialog/fck_link/fck_link.js +893 -0
  152. data/app/assets/javascripts/adva_fckeditor/fckeditor/editor/dialog/fck_link.html +295 -0
  153. data/app/assets/javascripts/adva_fckeditor/fckeditor/editor/dialog/fck_listprop.html +120 -0
  154. data/app/assets/javascripts/adva_fckeditor/fckeditor/editor/dialog/fck_paste.html +347 -0
  155. data/app/assets/javascripts/adva_fckeditor/fckeditor/editor/dialog/fck_radiobutton.html +104 -0
  156. data/app/assets/javascripts/adva_fckeditor/fckeditor/editor/dialog/fck_replace.html +650 -0
  157. data/app/assets/javascripts/adva_fckeditor/fckeditor/editor/dialog/fck_select/fck_select.js +194 -0
  158. data/app/assets/javascripts/adva_fckeditor/fckeditor/editor/dialog/fck_select.html +180 -0
  159. data/app/assets/javascripts/adva_fckeditor/fckeditor/editor/dialog/fck_smiley.html +111 -0
  160. data/app/assets/javascripts/adva_fckeditor/fckeditor/editor/dialog/fck_source.html +68 -0
  161. data/app/assets/javascripts/adva_fckeditor/fckeditor/editor/dialog/fck_specialchar.html +121 -0
  162. data/app/assets/javascripts/adva_fckeditor/fckeditor/editor/dialog/fck_spellerpages/spellerpages/blank.html +0 -0
  163. data/app/assets/javascripts/adva_fckeditor/fckeditor/editor/dialog/fck_spellerpages/spellerpages/controlWindow.js +87 -0
  164. data/app/assets/javascripts/adva_fckeditor/fckeditor/editor/dialog/fck_spellerpages/spellerpages/controls.html +153 -0
  165. data/app/assets/javascripts/adva_fckeditor/fckeditor/editor/dialog/fck_spellerpages/spellerpages/server-scripts/spellchecker.cfm +148 -0
  166. data/app/assets/javascripts/adva_fckeditor/fckeditor/editor/dialog/fck_spellerpages/spellerpages/server-scripts/spellchecker.php +199 -0
  167. data/app/assets/javascripts/adva_fckeditor/fckeditor/editor/dialog/fck_spellerpages/spellerpages/server-scripts/spellchecker.pl +181 -0
  168. data/app/assets/javascripts/adva_fckeditor/fckeditor/editor/dialog/fck_spellerpages/spellerpages/spellChecker.js +461 -0
  169. data/app/assets/javascripts/adva_fckeditor/fckeditor/editor/dialog/fck_spellerpages/spellerpages/spellchecker.html +71 -0
  170. data/app/assets/javascripts/adva_fckeditor/fckeditor/editor/dialog/fck_spellerpages/spellerpages/spellerStyle.css +49 -0
  171. data/app/assets/javascripts/adva_fckeditor/fckeditor/editor/dialog/fck_spellerpages/spellerpages/wordWindow.js +272 -0
  172. data/app/assets/javascripts/adva_fckeditor/fckeditor/editor/dialog/fck_spellerpages.html +70 -0
  173. data/app/assets/javascripts/adva_fckeditor/fckeditor/editor/dialog/fck_table.html +439 -0
  174. data/app/assets/javascripts/adva_fckeditor/fckeditor/editor/dialog/fck_tablecell.html +293 -0
  175. data/app/assets/javascripts/adva_fckeditor/fckeditor/editor/dialog/fck_template/images/template1.gif +0 -0
  176. data/app/assets/javascripts/adva_fckeditor/fckeditor/editor/dialog/fck_template/images/template2.gif +0 -0
  177. data/app/assets/javascripts/adva_fckeditor/fckeditor/editor/dialog/fck_template/images/template3.gif +0 -0
  178. data/app/assets/javascripts/adva_fckeditor/fckeditor/editor/dialog/fck_template.html +242 -0
  179. data/app/assets/javascripts/adva_fckeditor/fckeditor/editor/dialog/fck_textarea.html +94 -0
  180. data/app/assets/javascripts/adva_fckeditor/fckeditor/editor/dialog/fck_textfield.html +136 -0
  181. data/app/assets/javascripts/adva_fckeditor/fckeditor/editor/dtd/fck_dtd_test.html +41 -0
  182. data/app/assets/javascripts/adva_fckeditor/fckeditor/editor/dtd/fck_xhtml10strict.js +116 -0
  183. data/app/assets/javascripts/adva_fckeditor/fckeditor/editor/dtd/fck_xhtml10transitional.js +140 -0
  184. data/app/assets/javascripts/adva_fckeditor/fckeditor/editor/fckdebug.html +153 -0
  185. data/app/assets/javascripts/adva_fckeditor/fckeditor/editor/fckdialog.html +819 -0
  186. data/app/assets/javascripts/adva_fckeditor/fckeditor/editor/fckeditor.html +317 -0
  187. data/app/assets/javascripts/adva_fckeditor/fckeditor/editor/fckeditor.original.html +424 -0
  188. data/app/assets/javascripts/adva_fckeditor/fckeditor/editor/filemanager/browser/default/browser.css +87 -0
  189. data/app/assets/javascripts/adva_fckeditor/fckeditor/editor/filemanager/browser/default/browser.html +200 -0
  190. data/app/assets/javascripts/adva_fckeditor/fckeditor/editor/filemanager/browser/default/frmactualfolder.html +95 -0
  191. data/app/assets/javascripts/adva_fckeditor/fckeditor/editor/filemanager/browser/default/frmcreatefolder.html +114 -0
  192. data/app/assets/javascripts/adva_fckeditor/fckeditor/editor/filemanager/browser/default/frmfolders.html +198 -0
  193. data/app/assets/javascripts/adva_fckeditor/fckeditor/editor/filemanager/browser/default/frmresourceslist.html +185 -0
  194. data/app/assets/javascripts/adva_fckeditor/fckeditor/editor/filemanager/browser/default/frmresourcetype.html +69 -0
  195. data/app/assets/javascripts/adva_fckeditor/fckeditor/editor/filemanager/browser/default/frmupload.html +115 -0
  196. data/app/assets/javascripts/adva_fckeditor/fckeditor/editor/filemanager/browser/default/images/ButtonArrow.gif +0 -0
  197. data/app/assets/javascripts/adva_fckeditor/fckeditor/editor/filemanager/browser/default/images/Folder.gif +0 -0
  198. data/app/assets/javascripts/adva_fckeditor/fckeditor/editor/filemanager/browser/default/images/Folder32.gif +0 -0
  199. data/app/assets/javascripts/adva_fckeditor/fckeditor/editor/filemanager/browser/default/images/FolderOpened.gif +0 -0
  200. data/app/assets/javascripts/adva_fckeditor/fckeditor/editor/filemanager/browser/default/images/FolderOpened32.gif +0 -0
  201. data/app/assets/javascripts/adva_fckeditor/fckeditor/editor/filemanager/browser/default/images/FolderUp.gif +0 -0
  202. data/app/assets/javascripts/adva_fckeditor/fckeditor/editor/filemanager/browser/default/images/icons/32/ai.gif +0 -0
  203. data/app/assets/javascripts/adva_fckeditor/fckeditor/editor/filemanager/browser/default/images/icons/32/avi.gif +0 -0
  204. data/app/assets/javascripts/adva_fckeditor/fckeditor/editor/filemanager/browser/default/images/icons/32/bmp.gif +0 -0
  205. data/app/assets/javascripts/adva_fckeditor/fckeditor/editor/filemanager/browser/default/images/icons/32/cs.gif +0 -0
  206. data/app/assets/javascripts/adva_fckeditor/fckeditor/editor/filemanager/browser/default/images/icons/32/default.icon.gif +0 -0
  207. data/app/assets/javascripts/adva_fckeditor/fckeditor/editor/filemanager/browser/default/images/icons/32/dll.gif +0 -0
  208. data/app/assets/javascripts/adva_fckeditor/fckeditor/editor/filemanager/browser/default/images/icons/32/doc.gif +0 -0
  209. data/app/assets/javascripts/adva_fckeditor/fckeditor/editor/filemanager/browser/default/images/icons/32/exe.gif +0 -0
  210. data/app/assets/javascripts/adva_fckeditor/fckeditor/editor/filemanager/browser/default/images/icons/32/fla.gif +0 -0
  211. data/app/assets/javascripts/adva_fckeditor/fckeditor/editor/filemanager/browser/default/images/icons/32/gif.gif +0 -0
  212. data/app/assets/javascripts/adva_fckeditor/fckeditor/editor/filemanager/browser/default/images/icons/32/htm.gif +0 -0
  213. data/app/assets/javascripts/adva_fckeditor/fckeditor/editor/filemanager/browser/default/images/icons/32/html.gif +0 -0
  214. data/app/assets/javascripts/adva_fckeditor/fckeditor/editor/filemanager/browser/default/images/icons/32/jpg.gif +0 -0
  215. data/app/assets/javascripts/adva_fckeditor/fckeditor/editor/filemanager/browser/default/images/icons/32/js.gif +0 -0
  216. data/app/assets/javascripts/adva_fckeditor/fckeditor/editor/filemanager/browser/default/images/icons/32/mdb.gif +0 -0
  217. data/app/assets/javascripts/adva_fckeditor/fckeditor/editor/filemanager/browser/default/images/icons/32/mp3.gif +0 -0
  218. data/app/assets/javascripts/adva_fckeditor/fckeditor/editor/filemanager/browser/default/images/icons/32/pdf.gif +0 -0
  219. data/app/assets/javascripts/adva_fckeditor/fckeditor/editor/filemanager/browser/default/images/icons/32/png.gif +0 -0
  220. data/app/assets/javascripts/adva_fckeditor/fckeditor/editor/filemanager/browser/default/images/icons/32/ppt.gif +0 -0
  221. data/app/assets/javascripts/adva_fckeditor/fckeditor/editor/filemanager/browser/default/images/icons/32/rdp.gif +0 -0
  222. data/app/assets/javascripts/adva_fckeditor/fckeditor/editor/filemanager/browser/default/images/icons/32/swf.gif +0 -0
  223. data/app/assets/javascripts/adva_fckeditor/fckeditor/editor/filemanager/browser/default/images/icons/32/swt.gif +0 -0
  224. data/app/assets/javascripts/adva_fckeditor/fckeditor/editor/filemanager/browser/default/images/icons/32/txt.gif +0 -0
  225. data/app/assets/javascripts/adva_fckeditor/fckeditor/editor/filemanager/browser/default/images/icons/32/vsd.gif +0 -0
  226. data/app/assets/javascripts/adva_fckeditor/fckeditor/editor/filemanager/browser/default/images/icons/32/xls.gif +0 -0
  227. data/app/assets/javascripts/adva_fckeditor/fckeditor/editor/filemanager/browser/default/images/icons/32/xml.gif +0 -0
  228. data/app/assets/javascripts/adva_fckeditor/fckeditor/editor/filemanager/browser/default/images/icons/32/zip.gif +0 -0
  229. data/app/assets/javascripts/adva_fckeditor/fckeditor/editor/filemanager/browser/default/images/icons/ai.gif +0 -0
  230. data/app/assets/javascripts/adva_fckeditor/fckeditor/editor/filemanager/browser/default/images/icons/avi.gif +0 -0
  231. data/app/assets/javascripts/adva_fckeditor/fckeditor/editor/filemanager/browser/default/images/icons/bmp.gif +0 -0
  232. data/app/assets/javascripts/adva_fckeditor/fckeditor/editor/filemanager/browser/default/images/icons/cs.gif +0 -0
  233. data/app/assets/javascripts/adva_fckeditor/fckeditor/editor/filemanager/browser/default/images/icons/default.icon.gif +0 -0
  234. data/app/assets/javascripts/adva_fckeditor/fckeditor/editor/filemanager/browser/default/images/icons/dll.gif +0 -0
  235. data/app/assets/javascripts/adva_fckeditor/fckeditor/editor/filemanager/browser/default/images/icons/doc.gif +0 -0
  236. data/app/assets/javascripts/adva_fckeditor/fckeditor/editor/filemanager/browser/default/images/icons/exe.gif +0 -0
  237. data/app/assets/javascripts/adva_fckeditor/fckeditor/editor/filemanager/browser/default/images/icons/fla.gif +0 -0
  238. data/app/assets/javascripts/adva_fckeditor/fckeditor/editor/filemanager/browser/default/images/icons/gif.gif +0 -0
  239. data/app/assets/javascripts/adva_fckeditor/fckeditor/editor/filemanager/browser/default/images/icons/htm.gif +0 -0
  240. data/app/assets/javascripts/adva_fckeditor/fckeditor/editor/filemanager/browser/default/images/icons/html.gif +0 -0
  241. data/app/assets/javascripts/adva_fckeditor/fckeditor/editor/filemanager/browser/default/images/icons/jpg.gif +0 -0
  242. data/app/assets/javascripts/adva_fckeditor/fckeditor/editor/filemanager/browser/default/images/icons/js.gif +0 -0
  243. data/app/assets/javascripts/adva_fckeditor/fckeditor/editor/filemanager/browser/default/images/icons/mdb.gif +0 -0
  244. data/app/assets/javascripts/adva_fckeditor/fckeditor/editor/filemanager/browser/default/images/icons/mp3.gif +0 -0
  245. data/app/assets/javascripts/adva_fckeditor/fckeditor/editor/filemanager/browser/default/images/icons/pdf.gif +0 -0
  246. data/app/assets/javascripts/adva_fckeditor/fckeditor/editor/filemanager/browser/default/images/icons/png.gif +0 -0
  247. data/app/assets/javascripts/adva_fckeditor/fckeditor/editor/filemanager/browser/default/images/icons/ppt.gif +0 -0
  248. data/app/assets/javascripts/adva_fckeditor/fckeditor/editor/filemanager/browser/default/images/icons/rdp.gif +0 -0
  249. data/app/assets/javascripts/adva_fckeditor/fckeditor/editor/filemanager/browser/default/images/icons/swf.gif +0 -0
  250. data/app/assets/javascripts/adva_fckeditor/fckeditor/editor/filemanager/browser/default/images/icons/swt.gif +0 -0
  251. data/app/assets/javascripts/adva_fckeditor/fckeditor/editor/filemanager/browser/default/images/icons/txt.gif +0 -0
  252. data/app/assets/javascripts/adva_fckeditor/fckeditor/editor/filemanager/browser/default/images/icons/vsd.gif +0 -0
  253. data/app/assets/javascripts/adva_fckeditor/fckeditor/editor/filemanager/browser/default/images/icons/xls.gif +0 -0
  254. data/app/assets/javascripts/adva_fckeditor/fckeditor/editor/filemanager/browser/default/images/icons/xml.gif +0 -0
  255. data/app/assets/javascripts/adva_fckeditor/fckeditor/editor/filemanager/browser/default/images/icons/zip.gif +0 -0
  256. data/app/assets/javascripts/adva_fckeditor/fckeditor/editor/filemanager/browser/default/images/spacer.gif +0 -0
  257. data/app/assets/javascripts/adva_fckeditor/fckeditor/editor/filemanager/browser/default/js/common.js +88 -0
  258. data/app/assets/javascripts/adva_fckeditor/fckeditor/editor/filemanager/browser/default/js/fckxml.js +147 -0
  259. data/app/assets/javascripts/adva_fckeditor/fckeditor/editor/filemanager/connectors/asp/basexml.asp +63 -0
  260. data/app/assets/javascripts/adva_fckeditor/fckeditor/editor/filemanager/connectors/asp/class_upload.asp +353 -0
  261. data/app/assets/javascripts/adva_fckeditor/fckeditor/editor/filemanager/connectors/asp/commands.asp +198 -0
  262. data/app/assets/javascripts/adva_fckeditor/fckeditor/editor/filemanager/connectors/asp/config.asp +128 -0
  263. data/app/assets/javascripts/adva_fckeditor/fckeditor/editor/filemanager/connectors/asp/connector.asp +88 -0
  264. data/app/assets/javascripts/adva_fckeditor/fckeditor/editor/filemanager/connectors/asp/io.asp +237 -0
  265. data/app/assets/javascripts/adva_fckeditor/fckeditor/editor/filemanager/connectors/asp/upload.asp +65 -0
  266. data/app/assets/javascripts/adva_fckeditor/fckeditor/editor/filemanager/connectors/asp/util.asp +55 -0
  267. data/app/assets/javascripts/adva_fckeditor/fckeditor/editor/filemanager/connectors/aspx/config.ascx +98 -0
  268. data/app/assets/javascripts/adva_fckeditor/fckeditor/editor/filemanager/connectors/aspx/connector.aspx +32 -0
  269. data/app/assets/javascripts/adva_fckeditor/fckeditor/editor/filemanager/connectors/aspx/upload.aspx +32 -0
  270. data/app/assets/javascripts/adva_fckeditor/fckeditor/editor/filemanager/connectors/cfm/ImageObject.cfc +273 -0
  271. data/app/assets/javascripts/adva_fckeditor/fckeditor/editor/filemanager/connectors/cfm/cf5_connector.cfm +315 -0
  272. data/app/assets/javascripts/adva_fckeditor/fckeditor/editor/filemanager/connectors/cfm/cf5_upload.cfm +299 -0
  273. data/app/assets/javascripts/adva_fckeditor/fckeditor/editor/filemanager/connectors/cfm/cf_basexml.cfm +68 -0
  274. data/app/assets/javascripts/adva_fckeditor/fckeditor/editor/filemanager/connectors/cfm/cf_commands.cfm +230 -0
  275. data/app/assets/javascripts/adva_fckeditor/fckeditor/editor/filemanager/connectors/cfm/cf_connector.cfm +89 -0
  276. data/app/assets/javascripts/adva_fckeditor/fckeditor/editor/filemanager/connectors/cfm/cf_io.cfm +291 -0
  277. data/app/assets/javascripts/adva_fckeditor/fckeditor/editor/filemanager/connectors/cfm/cf_upload.cfm +72 -0
  278. data/app/assets/javascripts/adva_fckeditor/fckeditor/editor/filemanager/connectors/cfm/cf_util.cfm +131 -0
  279. data/app/assets/javascripts/adva_fckeditor/fckeditor/editor/filemanager/connectors/cfm/config.cfm +189 -0
  280. data/app/assets/javascripts/adva_fckeditor/fckeditor/editor/filemanager/connectors/cfm/connector.cfm +32 -0
  281. data/app/assets/javascripts/adva_fckeditor/fckeditor/editor/filemanager/connectors/cfm/image.cfc +1324 -0
  282. data/app/assets/javascripts/adva_fckeditor/fckeditor/editor/filemanager/connectors/cfm/upload.cfm +31 -0
  283. data/app/assets/javascripts/adva_fckeditor/fckeditor/editor/filemanager/connectors/lasso/config.lasso +65 -0
  284. data/app/assets/javascripts/adva_fckeditor/fckeditor/editor/filemanager/connectors/lasso/connector.lasso +322 -0
  285. data/app/assets/javascripts/adva_fckeditor/fckeditor/editor/filemanager/connectors/lasso/upload.lasso +168 -0
  286. data/app/assets/javascripts/adva_fckeditor/fckeditor/editor/filemanager/connectors/perl/basexml.pl +63 -0
  287. data/app/assets/javascripts/adva_fckeditor/fckeditor/editor/filemanager/connectors/perl/commands.pl +187 -0
  288. data/app/assets/javascripts/adva_fckeditor/fckeditor/editor/filemanager/connectors/perl/connector.cgi +136 -0
  289. data/app/assets/javascripts/adva_fckeditor/fckeditor/editor/filemanager/connectors/perl/io.pl +141 -0
  290. data/app/assets/javascripts/adva_fckeditor/fckeditor/editor/filemanager/connectors/perl/upload.cgi +117 -0
  291. data/app/assets/javascripts/adva_fckeditor/fckeditor/editor/filemanager/connectors/perl/upload_fck.pl +686 -0
  292. data/app/assets/javascripts/adva_fckeditor/fckeditor/editor/filemanager/connectors/perl/util.pl +68 -0
  293. data/app/assets/javascripts/adva_fckeditor/fckeditor/editor/filemanager/connectors/php/basexml.php +93 -0
  294. data/app/assets/javascripts/adva_fckeditor/fckeditor/editor/filemanager/connectors/php/commands.php +302 -0
  295. data/app/assets/javascripts/adva_fckeditor/fckeditor/editor/filemanager/connectors/php/config.php +151 -0
  296. data/app/assets/javascripts/adva_fckeditor/fckeditor/editor/filemanager/connectors/php/connector.php +90 -0
  297. data/app/assets/javascripts/adva_fckeditor/fckeditor/editor/filemanager/connectors/php/io.php +296 -0
  298. data/app/assets/javascripts/adva_fckeditor/fckeditor/editor/filemanager/connectors/php/phpcompat.php +17 -0
  299. data/app/assets/javascripts/adva_fckeditor/fckeditor/editor/filemanager/connectors/php/upload.php +59 -0
  300. data/app/assets/javascripts/adva_fckeditor/fckeditor/editor/filemanager/connectors/php/util.php +220 -0
  301. data/app/assets/javascripts/adva_fckeditor/fckeditor/editor/filemanager/connectors/py/config.py +146 -0
  302. data/app/assets/javascripts/adva_fckeditor/fckeditor/editor/filemanager/connectors/py/connector.py +118 -0
  303. data/app/assets/javascripts/adva_fckeditor/fckeditor/editor/filemanager/connectors/py/fckcommands.py +198 -0
  304. data/app/assets/javascripts/adva_fckeditor/fckeditor/editor/filemanager/connectors/py/fckconnector.py +90 -0
  305. data/app/assets/javascripts/adva_fckeditor/fckeditor/editor/filemanager/connectors/py/fckoutput.py +116 -0
  306. data/app/assets/javascripts/adva_fckeditor/fckeditor/editor/filemanager/connectors/py/fckutil.py +126 -0
  307. data/app/assets/javascripts/adva_fckeditor/fckeditor/editor/filemanager/connectors/py/htaccess.txt +23 -0
  308. data/app/assets/javascripts/adva_fckeditor/fckeditor/editor/filemanager/connectors/py/upload.py +88 -0
  309. data/app/assets/javascripts/adva_fckeditor/fckeditor/editor/filemanager/connectors/py/wsgi.py +58 -0
  310. data/app/assets/javascripts/adva_fckeditor/fckeditor/editor/filemanager/connectors/py/zope.py +188 -0
  311. data/app/assets/javascripts/adva_fckeditor/fckeditor/editor/filemanager/connectors/test.html +210 -0
  312. data/app/assets/javascripts/adva_fckeditor/fckeditor/editor/filemanager/connectors/uploadtest.html +192 -0
  313. data/app/assets/javascripts/adva_fckeditor/fckeditor/editor/images/anchor.gif +0 -0
  314. data/app/assets/javascripts/adva_fckeditor/fckeditor/editor/images/arrow_ltr.gif +0 -0
  315. data/app/assets/javascripts/adva_fckeditor/fckeditor/editor/images/arrow_rtl.gif +0 -0
  316. data/app/assets/javascripts/adva_fckeditor/fckeditor/editor/images/smiley/msn/angel_smile.gif +0 -0
  317. data/app/assets/javascripts/adva_fckeditor/fckeditor/editor/images/smiley/msn/angry_smile.gif +0 -0
  318. data/app/assets/javascripts/adva_fckeditor/fckeditor/editor/images/smiley/msn/broken_heart.gif +0 -0
  319. data/app/assets/javascripts/adva_fckeditor/fckeditor/editor/images/smiley/msn/cake.gif +0 -0
  320. data/app/assets/javascripts/adva_fckeditor/fckeditor/editor/images/smiley/msn/confused_smile.gif +0 -0
  321. data/app/assets/javascripts/adva_fckeditor/fckeditor/editor/images/smiley/msn/cry_smile.gif +0 -0
  322. data/app/assets/javascripts/adva_fckeditor/fckeditor/editor/images/smiley/msn/devil_smile.gif +0 -0
  323. data/app/assets/javascripts/adva_fckeditor/fckeditor/editor/images/smiley/msn/embaressed_smile.gif +0 -0
  324. data/app/assets/javascripts/adva_fckeditor/fckeditor/editor/images/smiley/msn/envelope.gif +0 -0
  325. data/app/assets/javascripts/adva_fckeditor/fckeditor/editor/images/smiley/msn/heart.gif +0 -0
  326. data/app/assets/javascripts/adva_fckeditor/fckeditor/editor/images/smiley/msn/kiss.gif +0 -0
  327. data/app/assets/javascripts/adva_fckeditor/fckeditor/editor/images/smiley/msn/lightbulb.gif +0 -0
  328. data/app/assets/javascripts/adva_fckeditor/fckeditor/editor/images/smiley/msn/omg_smile.gif +0 -0
  329. data/app/assets/javascripts/adva_fckeditor/fckeditor/editor/images/smiley/msn/regular_smile.gif +0 -0
  330. data/app/assets/javascripts/adva_fckeditor/fckeditor/editor/images/smiley/msn/sad_smile.gif +0 -0
  331. data/app/assets/javascripts/adva_fckeditor/fckeditor/editor/images/smiley/msn/shades_smile.gif +0 -0
  332. data/app/assets/javascripts/adva_fckeditor/fckeditor/editor/images/smiley/msn/teeth_smile.gif +0 -0
  333. data/app/assets/javascripts/adva_fckeditor/fckeditor/editor/images/smiley/msn/thumbs_down.gif +0 -0
  334. data/app/assets/javascripts/adva_fckeditor/fckeditor/editor/images/smiley/msn/thumbs_up.gif +0 -0
  335. data/app/assets/javascripts/adva_fckeditor/fckeditor/editor/images/smiley/msn/tounge_smile.gif +0 -0
  336. data/app/assets/javascripts/adva_fckeditor/fckeditor/editor/images/smiley/msn/whatchutalkingabout_smile.gif +0 -0
  337. data/app/assets/javascripts/adva_fckeditor/fckeditor/editor/images/smiley/msn/wink_smile.gif +0 -0
  338. data/app/assets/javascripts/adva_fckeditor/fckeditor/editor/images/spacer.gif +0 -0
  339. data/app/assets/javascripts/adva_fckeditor/fckeditor/editor/js/fckadobeair.js +176 -0
  340. data/app/assets/javascripts/adva_fckeditor/fckeditor/editor/js/fckeditorcode_gecko.js +108 -0
  341. data/app/assets/javascripts/adva_fckeditor/fckeditor/editor/js/fckeditorcode_ie.js +109 -0
  342. data/app/assets/javascripts/adva_fckeditor/fckeditor/editor/lang/_translationstatus.txt +79 -0
  343. data/app/assets/javascripts/adva_fckeditor/fckeditor/editor/lang/af.js +534 -0
  344. data/app/assets/javascripts/adva_fckeditor/fckeditor/editor/lang/ar.js +534 -0
  345. data/app/assets/javascripts/adva_fckeditor/fckeditor/editor/lang/bg.js +534 -0
  346. data/app/assets/javascripts/adva_fckeditor/fckeditor/editor/lang/bn.js +534 -0
  347. data/app/assets/javascripts/adva_fckeditor/fckeditor/editor/lang/bs.js +534 -0
  348. data/app/assets/javascripts/adva_fckeditor/fckeditor/editor/lang/ca.js +534 -0
  349. data/app/assets/javascripts/adva_fckeditor/fckeditor/editor/lang/cs.js +534 -0
  350. data/app/assets/javascripts/adva_fckeditor/fckeditor/editor/lang/da.js +534 -0
  351. data/app/assets/javascripts/adva_fckeditor/fckeditor/editor/lang/de.js +534 -0
  352. data/app/assets/javascripts/adva_fckeditor/fckeditor/editor/lang/el.js +534 -0
  353. data/app/assets/javascripts/adva_fckeditor/fckeditor/editor/lang/en-au.js +534 -0
  354. data/app/assets/javascripts/adva_fckeditor/fckeditor/editor/lang/en-ca.js +534 -0
  355. data/app/assets/javascripts/adva_fckeditor/fckeditor/editor/lang/en-uk.js +534 -0
  356. data/app/assets/javascripts/adva_fckeditor/fckeditor/editor/lang/en.js +534 -0
  357. data/app/assets/javascripts/adva_fckeditor/fckeditor/editor/lang/eo.js +534 -0
  358. data/app/assets/javascripts/adva_fckeditor/fckeditor/editor/lang/es.js +534 -0
  359. data/app/assets/javascripts/adva_fckeditor/fckeditor/editor/lang/et.js +534 -0
  360. data/app/assets/javascripts/adva_fckeditor/fckeditor/editor/lang/eu.js +535 -0
  361. data/app/assets/javascripts/adva_fckeditor/fckeditor/editor/lang/fa.js +534 -0
  362. data/app/assets/javascripts/adva_fckeditor/fckeditor/editor/lang/fi.js +534 -0
  363. data/app/assets/javascripts/adva_fckeditor/fckeditor/editor/lang/fo.js +534 -0
  364. data/app/assets/javascripts/adva_fckeditor/fckeditor/editor/lang/fr-ca.js +534 -0
  365. data/app/assets/javascripts/adva_fckeditor/fckeditor/editor/lang/fr.js +534 -0
  366. data/app/assets/javascripts/adva_fckeditor/fckeditor/editor/lang/gl.js +534 -0
  367. data/app/assets/javascripts/adva_fckeditor/fckeditor/editor/lang/gu.js +534 -0
  368. data/app/assets/javascripts/adva_fckeditor/fckeditor/editor/lang/he.js +534 -0
  369. data/app/assets/javascripts/adva_fckeditor/fckeditor/editor/lang/hi.js +534 -0
  370. data/app/assets/javascripts/adva_fckeditor/fckeditor/editor/lang/hr.js +534 -0
  371. data/app/assets/javascripts/adva_fckeditor/fckeditor/editor/lang/hu.js +534 -0
  372. data/app/assets/javascripts/adva_fckeditor/fckeditor/editor/lang/is.js +534 -0
  373. data/app/assets/javascripts/adva_fckeditor/fckeditor/editor/lang/it.js +534 -0
  374. data/app/assets/javascripts/adva_fckeditor/fckeditor/editor/lang/ja.js +534 -0
  375. data/app/assets/javascripts/adva_fckeditor/fckeditor/editor/lang/km.js +534 -0
  376. data/app/assets/javascripts/adva_fckeditor/fckeditor/editor/lang/ko.js +534 -0
  377. data/app/assets/javascripts/adva_fckeditor/fckeditor/editor/lang/lt.js +534 -0
  378. data/app/assets/javascripts/adva_fckeditor/fckeditor/editor/lang/lv.js +534 -0
  379. data/app/assets/javascripts/adva_fckeditor/fckeditor/editor/lang/mn.js +534 -0
  380. data/app/assets/javascripts/adva_fckeditor/fckeditor/editor/lang/ms.js +534 -0
  381. data/app/assets/javascripts/adva_fckeditor/fckeditor/editor/lang/nb.js +534 -0
  382. data/app/assets/javascripts/adva_fckeditor/fckeditor/editor/lang/nl.js +534 -0
  383. data/app/assets/javascripts/adva_fckeditor/fckeditor/editor/lang/no.js +534 -0
  384. data/app/assets/javascripts/adva_fckeditor/fckeditor/editor/lang/pl.js +534 -0
  385. data/app/assets/javascripts/adva_fckeditor/fckeditor/editor/lang/pt-br.js +534 -0
  386. data/app/assets/javascripts/adva_fckeditor/fckeditor/editor/lang/pt.js +534 -0
  387. data/app/assets/javascripts/adva_fckeditor/fckeditor/editor/lang/ro.js +534 -0
  388. data/app/assets/javascripts/adva_fckeditor/fckeditor/editor/lang/ru.js +534 -0
  389. data/app/assets/javascripts/adva_fckeditor/fckeditor/editor/lang/sk.js +534 -0
  390. data/app/assets/javascripts/adva_fckeditor/fckeditor/editor/lang/sl.js +534 -0
  391. data/app/assets/javascripts/adva_fckeditor/fckeditor/editor/lang/sr-latn.js +534 -0
  392. data/app/assets/javascripts/adva_fckeditor/fckeditor/editor/lang/sr.js +534 -0
  393. data/app/assets/javascripts/adva_fckeditor/fckeditor/editor/lang/sv.js +534 -0
  394. data/app/assets/javascripts/adva_fckeditor/fckeditor/editor/lang/th.js +534 -0
  395. data/app/assets/javascripts/adva_fckeditor/fckeditor/editor/lang/tr.js +534 -0
  396. data/app/assets/javascripts/adva_fckeditor/fckeditor/editor/lang/uk.js +534 -0
  397. data/app/assets/javascripts/adva_fckeditor/fckeditor/editor/lang/vi.js +534 -0
  398. data/app/assets/javascripts/adva_fckeditor/fckeditor/editor/lang/zh-cn.js +534 -0
  399. data/app/assets/javascripts/adva_fckeditor/fckeditor/editor/lang/zh.js +534 -0
  400. data/app/assets/javascripts/adva_fckeditor/fckeditor/editor/plugins/autogrow/fckplugin.js +111 -0
  401. data/app/assets/javascripts/adva_fckeditor/fckeditor/editor/plugins/bbcode/_sample/sample.config.js +26 -0
  402. data/app/assets/javascripts/adva_fckeditor/fckeditor/editor/plugins/bbcode/_sample/sample.html +67 -0
  403. data/app/assets/javascripts/adva_fckeditor/fckeditor/editor/plugins/bbcode/fckplugin.js +123 -0
  404. data/app/assets/javascripts/adva_fckeditor/fckeditor/editor/plugins/dragresizetable/fckplugin.js +529 -0
  405. data/app/assets/javascripts/adva_fckeditor/fckeditor/editor/plugins/placeholder/fck_placeholder.html +105 -0
  406. data/app/assets/javascripts/adva_fckeditor/fckeditor/editor/plugins/placeholder/fckplugin.js +187 -0
  407. data/app/assets/javascripts/adva_fckeditor/fckeditor/editor/plugins/placeholder/lang/de.js +27 -0
  408. data/app/assets/javascripts/adva_fckeditor/fckeditor/editor/plugins/placeholder/lang/en.js +27 -0
  409. data/app/assets/javascripts/adva_fckeditor/fckeditor/editor/plugins/placeholder/lang/es.js +27 -0
  410. data/app/assets/javascripts/adva_fckeditor/fckeditor/editor/plugins/placeholder/lang/fr.js +27 -0
  411. data/app/assets/javascripts/adva_fckeditor/fckeditor/editor/plugins/placeholder/lang/it.js +27 -0
  412. data/app/assets/javascripts/adva_fckeditor/fckeditor/editor/plugins/placeholder/lang/pl.js +27 -0
  413. data/app/assets/javascripts/adva_fckeditor/fckeditor/editor/plugins/placeholder/placeholder.gif +0 -0
  414. data/app/assets/javascripts/adva_fckeditor/fckeditor/editor/plugins/simplecommands/fckplugin.js +29 -0
  415. data/app/assets/javascripts/adva_fckeditor/fckeditor/editor/plugins/tablecommands/fckplugin.js +33 -0
  416. data/app/assets/javascripts/adva_fckeditor/fckeditor/editor/skins/_fckviewstrips.html +121 -0
  417. data/app/assets/javascripts/adva_fckeditor/fckeditor/editor/skins/default/fck_dialog.css +402 -0
  418. data/app/assets/javascripts/adva_fckeditor/fckeditor/editor/skins/default/fck_dialog_ie6.js +110 -0
  419. data/app/assets/javascripts/adva_fckeditor/fckeditor/editor/skins/default/fck_editor.css +464 -0
  420. data/app/assets/javascripts/adva_fckeditor/fckeditor/editor/skins/default/fck_strip.gif +0 -0
  421. data/app/assets/javascripts/adva_fckeditor/fckeditor/editor/skins/default/images/dialog.sides.gif +0 -0
  422. data/app/assets/javascripts/adva_fckeditor/fckeditor/editor/skins/default/images/dialog.sides.png +0 -0
  423. data/app/assets/javascripts/adva_fckeditor/fckeditor/editor/skins/default/images/dialog.sides.rtl.png +0 -0
  424. data/app/assets/javascripts/adva_fckeditor/fckeditor/editor/skins/default/images/sprites.gif +0 -0
  425. data/app/assets/javascripts/adva_fckeditor/fckeditor/editor/skins/default/images/sprites.png +0 -0
  426. data/app/assets/javascripts/adva_fckeditor/fckeditor/editor/skins/default/images/toolbar.arrowright.gif +0 -0
  427. data/app/assets/javascripts/adva_fckeditor/fckeditor/editor/skins/default/images/toolbar.buttonarrow.gif +0 -0
  428. data/app/assets/javascripts/adva_fckeditor/fckeditor/editor/skins/default/images/toolbar.collapse.gif +0 -0
  429. data/app/assets/javascripts/adva_fckeditor/fckeditor/editor/skins/default/images/toolbar.end.gif +0 -0
  430. data/app/assets/javascripts/adva_fckeditor/fckeditor/editor/skins/default/images/toolbar.expand.gif +0 -0
  431. data/app/assets/javascripts/adva_fckeditor/fckeditor/editor/skins/default/images/toolbar.separator.gif +0 -0
  432. data/app/assets/javascripts/adva_fckeditor/fckeditor/editor/skins/default/images/toolbar.start.gif +0 -0
  433. data/app/assets/javascripts/adva_fckeditor/fckeditor/editor/skins/default/toolbar/configurecell.gif +0 -0
  434. data/app/assets/javascripts/adva_fckeditor/fckeditor/editor/skins/office2003/fck_dialog.css +402 -0
  435. data/app/assets/javascripts/adva_fckeditor/fckeditor/editor/skins/office2003/fck_dialog_ie6.js +110 -0
  436. data/app/assets/javascripts/adva_fckeditor/fckeditor/editor/skins/office2003/fck_editor.css +476 -0
  437. data/app/assets/javascripts/adva_fckeditor/fckeditor/editor/skins/office2003/fck_strip.gif +0 -0
  438. data/app/assets/javascripts/adva_fckeditor/fckeditor/editor/skins/office2003/images/dialog.sides.gif +0 -0
  439. data/app/assets/javascripts/adva_fckeditor/fckeditor/editor/skins/office2003/images/dialog.sides.png +0 -0
  440. data/app/assets/javascripts/adva_fckeditor/fckeditor/editor/skins/office2003/images/dialog.sides.rtl.png +0 -0
  441. data/app/assets/javascripts/adva_fckeditor/fckeditor/editor/skins/office2003/images/sprites.gif +0 -0
  442. data/app/assets/javascripts/adva_fckeditor/fckeditor/editor/skins/office2003/images/sprites.png +0 -0
  443. data/app/assets/javascripts/adva_fckeditor/fckeditor/editor/skins/office2003/images/toolbar.arrowright.gif +0 -0
  444. data/app/assets/javascripts/adva_fckeditor/fckeditor/editor/skins/office2003/images/toolbar.bg.gif +0 -0
  445. data/app/assets/javascripts/adva_fckeditor/fckeditor/editor/skins/office2003/images/toolbar.buttonarrow.gif +0 -0
  446. data/app/assets/javascripts/adva_fckeditor/fckeditor/editor/skins/office2003/images/toolbar.collapse.gif +0 -0
  447. data/app/assets/javascripts/adva_fckeditor/fckeditor/editor/skins/office2003/images/toolbar.end.gif +0 -0
  448. data/app/assets/javascripts/adva_fckeditor/fckeditor/editor/skins/office2003/images/toolbar.expand.gif +0 -0
  449. data/app/assets/javascripts/adva_fckeditor/fckeditor/editor/skins/office2003/images/toolbar.separator.gif +0 -0
  450. data/app/assets/javascripts/adva_fckeditor/fckeditor/editor/skins/office2003/images/toolbar.start.gif +0 -0
  451. data/app/assets/javascripts/adva_fckeditor/fckeditor/editor/skins/silver/fck_dialog.css +402 -0
  452. data/app/assets/javascripts/adva_fckeditor/fckeditor/editor/skins/silver/fck_dialog_ie6.js +110 -0
  453. data/app/assets/javascripts/adva_fckeditor/fckeditor/editor/skins/silver/fck_editor.css +473 -0
  454. data/app/assets/javascripts/adva_fckeditor/fckeditor/editor/skins/silver/fck_strip.gif +0 -0
  455. data/app/assets/javascripts/adva_fckeditor/fckeditor/editor/skins/silver/images/dialog.sides.gif +0 -0
  456. data/app/assets/javascripts/adva_fckeditor/fckeditor/editor/skins/silver/images/dialog.sides.png +0 -0
  457. data/app/assets/javascripts/adva_fckeditor/fckeditor/editor/skins/silver/images/dialog.sides.rtl.png +0 -0
  458. data/app/assets/javascripts/adva_fckeditor/fckeditor/editor/skins/silver/images/sprites.gif +0 -0
  459. data/app/assets/javascripts/adva_fckeditor/fckeditor/editor/skins/silver/images/sprites.png +0 -0
  460. data/app/assets/javascripts/adva_fckeditor/fckeditor/editor/skins/silver/images/toolbar.arrowright.gif +0 -0
  461. data/app/assets/javascripts/adva_fckeditor/fckeditor/editor/skins/silver/images/toolbar.buttonarrow.gif +0 -0
  462. data/app/assets/javascripts/adva_fckeditor/fckeditor/editor/skins/silver/images/toolbar.buttonbg.gif +0 -0
  463. data/app/assets/javascripts/adva_fckeditor/fckeditor/editor/skins/silver/images/toolbar.collapse.gif +0 -0
  464. data/app/assets/javascripts/adva_fckeditor/fckeditor/editor/skins/silver/images/toolbar.end.gif +0 -0
  465. data/app/assets/javascripts/adva_fckeditor/fckeditor/editor/skins/silver/images/toolbar.expand.gif +0 -0
  466. data/app/assets/javascripts/adva_fckeditor/fckeditor/editor/skins/silver/images/toolbar.separator.gif +0 -0
  467. data/app/assets/javascripts/adva_fckeditor/fckeditor/editor/skins/silver/images/toolbar.start.gif +0 -0
  468. data/app/assets/javascripts/adva_fckeditor/fckeditor/editor/wsc/ciframe.html +65 -0
  469. data/app/assets/javascripts/adva_fckeditor/fckeditor/editor/wsc/tmpFrameset.html +67 -0
  470. data/app/assets/javascripts/adva_fckeditor/fckeditor/editor/wsc/w.html +227 -0
  471. data/app/assets/javascripts/adva_fckeditor/fckeditor/fckconfig.js +325 -0
  472. data/app/assets/javascripts/adva_fckeditor/fckeditor/fckeditor.js +330 -0
  473. data/app/assets/javascripts/adva_fckeditor/fckeditor/fckpackager.xml +262 -0
  474. data/app/assets/javascripts/adva_fckeditor/fckeditor/fckstyles.xml +111 -0
  475. data/app/assets/javascripts/adva_fckeditor/fckeditor/fcktemplates.xml +103 -0
  476. data/app/assets/javascripts/adva_fckeditor/fckeditor/license.txt +1246 -0
  477. data/app/assets/javascripts/adva_fckeditor/fckeditor_plugins/cells/cell.html +259 -0
  478. data/app/assets/javascripts/adva_fckeditor/fckeditor_plugins/cells/fckplugin.js +21 -0
  479. data/app/assets/javascripts/adva_fckeditor/fckeditor_plugins/cells/lang/de.js +4 -0
  480. data/app/assets/javascripts/adva_fckeditor/fckeditor_plugins/cells/lang/en.js +4 -0
  481. data/app/assets/javascripts/adva_fckeditor/fckeditor_plugins/youtube/fckplugin.js +8 -0
  482. data/app/assets/javascripts/adva_fckeditor/fckeditor_plugins/youtube/lang/de.js +21 -0
  483. data/app/assets/javascripts/adva_fckeditor/fckeditor_plugins/youtube/lang/en.js +21 -0
  484. data/app/assets/javascripts/adva_fckeditor/fckeditor_plugins/youtube/lang/it.js +22 -0
  485. data/app/assets/javascripts/adva_fckeditor/fckeditor_plugins/youtube/lang/ja.js +21 -0
  486. data/app/assets/javascripts/adva_fckeditor/fckeditor_plugins/youtube/lang/lt.js +21 -0
  487. data/app/assets/javascripts/adva_fckeditor/fckeditor_plugins/youtube/lang/no.js +21 -0
  488. data/app/assets/javascripts/adva_fckeditor/fckeditor_plugins/youtube/lang/pt.js +21 -0
  489. data/app/assets/javascripts/adva_fckeditor/fckeditor_plugins/youtube/lang/zh-cn.js +21 -0
  490. data/app/assets/javascripts/adva_fckeditor/fckeditor_plugins/youtube/lang/zh.js +21 -0
  491. data/app/assets/javascripts/adva_fckeditor/fckeditor_plugins/youtube/license.txt +286 -0
  492. data/app/assets/javascripts/adva_fckeditor/fckeditor_plugins/youtube/readme.txt +54 -0
  493. data/app/assets/javascripts/adva_fckeditor/fckeditor_plugins/youtube/youtube.gif +0 -0
  494. data/app/assets/javascripts/adva_fckeditor/fckeditor_plugins/youtube/youtube.html +47 -0
  495. data/app/assets/javascripts/adva_fckeditor/fckeditor_plugins/youtube/youtube.js +121 -0
  496. data/app/assets/javascripts/adva_fckeditor/setup_fckeditor.js +49 -0
  497. data/app/assets/javascripts/adva_fckeditor/setup_fckeditor.prototype.js +38 -0
  498. data/lib/adva_fckeditor/version.rb +3 -0
  499. data/lib/adva_fckeditor.rb +13 -0
  500. data/lib/fckeditor.rb +6 -0
  501. metadata +556 -0
@@ -0,0 +1,935 @@
1
+ /*
2
+ * FCKeditor - The text editor for Internet - http://www.fckeditor.net
3
+ * Copyright (C) 2003-2009 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
+ * Class for working with a selection range, much like the W3C DOM Range, but
22
+ * it is not intended to be an implementation of the W3C interface.
23
+ */
24
+
25
+ var FCKDomRange = function( sourceWindow )
26
+ {
27
+ this.Window = sourceWindow ;
28
+ this._Cache = {} ;
29
+ }
30
+
31
+ FCKDomRange.prototype =
32
+ {
33
+
34
+ _UpdateElementInfo : function()
35
+ {
36
+ var innerRange = this._Range ;
37
+
38
+ if ( !innerRange )
39
+ this.Release( true ) ;
40
+ else
41
+ {
42
+ // For text nodes, the node itself is the StartNode.
43
+ var eStart = innerRange.startContainer ;
44
+
45
+ var oElementPath = new FCKElementPath( eStart ) ;
46
+ this.StartNode = eStart.nodeType == 3 ? eStart : eStart.childNodes[ innerRange.startOffset ] ;
47
+ this.StartContainer = eStart ;
48
+ this.StartBlock = oElementPath.Block ;
49
+ this.StartBlockLimit = oElementPath.BlockLimit ;
50
+
51
+ if ( innerRange.collapsed )
52
+ {
53
+ this.EndNode = this.StartNode ;
54
+ this.EndContainer = this.StartContainer ;
55
+ this.EndBlock = this.StartBlock ;
56
+ this.EndBlockLimit = this.StartBlockLimit ;
57
+ }
58
+ else
59
+ {
60
+ var eEnd = innerRange.endContainer ;
61
+
62
+ if ( eStart != eEnd )
63
+ oElementPath = new FCKElementPath( eEnd ) ;
64
+
65
+ // The innerRange.endContainer[ innerRange.endOffset ] is not
66
+ // usually part of the range, but the marker for the range end. So,
67
+ // let's get the previous available node as the real end.
68
+ var eEndNode = eEnd ;
69
+ if ( innerRange.endOffset == 0 )
70
+ {
71
+ while ( eEndNode && !eEndNode.previousSibling )
72
+ eEndNode = eEndNode.parentNode ;
73
+
74
+ if ( eEndNode )
75
+ eEndNode = eEndNode.previousSibling ;
76
+ }
77
+ else if ( eEndNode.nodeType == 1 )
78
+ eEndNode = eEndNode.childNodes[ innerRange.endOffset - 1 ] ;
79
+
80
+ this.EndNode = eEndNode ;
81
+ this.EndContainer = eEnd ;
82
+ this.EndBlock = oElementPath.Block ;
83
+ this.EndBlockLimit = oElementPath.BlockLimit ;
84
+ }
85
+ }
86
+
87
+ this._Cache = {} ;
88
+ },
89
+
90
+ CreateRange : function()
91
+ {
92
+ return new FCKW3CRange( this.Window.document ) ;
93
+ },
94
+
95
+ DeleteContents : function()
96
+ {
97
+ if ( this._Range )
98
+ {
99
+ this._Range.deleteContents() ;
100
+ this._UpdateElementInfo() ;
101
+ }
102
+ },
103
+
104
+ ExtractContents : function()
105
+ {
106
+ if ( this._Range )
107
+ {
108
+ var docFrag = this._Range.extractContents() ;
109
+ this._UpdateElementInfo() ;
110
+ return docFrag ;
111
+ }
112
+ return null ;
113
+ },
114
+
115
+ CheckIsCollapsed : function()
116
+ {
117
+ if ( this._Range )
118
+ return this._Range.collapsed ;
119
+
120
+ return false ;
121
+ },
122
+
123
+ Collapse : function( toStart )
124
+ {
125
+ if ( this._Range )
126
+ this._Range.collapse( toStart ) ;
127
+
128
+ this._UpdateElementInfo() ;
129
+ },
130
+
131
+ Clone : function()
132
+ {
133
+ var oClone = FCKTools.CloneObject( this ) ;
134
+
135
+ if ( this._Range )
136
+ oClone._Range = this._Range.cloneRange() ;
137
+
138
+ return oClone ;
139
+ },
140
+
141
+ MoveToNodeContents : function( targetNode )
142
+ {
143
+ if ( !this._Range )
144
+ this._Range = this.CreateRange() ;
145
+
146
+ this._Range.selectNodeContents( targetNode ) ;
147
+
148
+ this._UpdateElementInfo() ;
149
+ },
150
+
151
+ MoveToElementStart : function( targetElement )
152
+ {
153
+ this.SetStart(targetElement,1) ;
154
+ this.SetEnd(targetElement,1) ;
155
+ },
156
+
157
+ // Moves to the first editing point inside a element. For example, in a
158
+ // element tree like "<p><b><i></i></b> Text</p>", the start editing point
159
+ // is "<p><b><i>^</i></b> Text</p>" (inside <i>).
160
+ MoveToElementEditStart : function( targetElement )
161
+ {
162
+ var editableElement ;
163
+
164
+ while ( targetElement && targetElement.nodeType == 1 )
165
+ {
166
+ if ( FCKDomTools.CheckIsEditable( targetElement ) )
167
+ editableElement = targetElement ;
168
+ else if ( editableElement )
169
+ break ; // If we already found an editable element, stop the loop.
170
+
171
+ targetElement = targetElement.firstChild ;
172
+ }
173
+
174
+ if ( editableElement )
175
+ this.MoveToElementStart( editableElement ) ;
176
+ },
177
+
178
+ InsertNode : function( node )
179
+ {
180
+ if ( this._Range )
181
+ this._Range.insertNode( node ) ;
182
+ },
183
+
184
+ CheckIsEmpty : function()
185
+ {
186
+ if ( this.CheckIsCollapsed() )
187
+ return true ;
188
+
189
+ // Inserts the contents of the range in a div tag.
190
+ var eToolDiv = this.Window.document.createElement( 'div' ) ;
191
+ this._Range.cloneContents().AppendTo( eToolDiv ) ;
192
+
193
+ FCKDomTools.TrimNode( eToolDiv ) ;
194
+
195
+ return ( eToolDiv.innerHTML.length == 0 ) ;
196
+ },
197
+
198
+ /**
199
+ * Checks if the start boundary of the current range is "visually" (like a
200
+ * selection caret) at the beginning of the block. It means that some
201
+ * things could be brefore the range, like spaces or empty inline elements,
202
+ * but it would still be considered at the beginning of the block.
203
+ */
204
+ CheckStartOfBlock : function()
205
+ {
206
+ var cache = this._Cache ;
207
+ var bIsStartOfBlock = cache.IsStartOfBlock ;
208
+
209
+ if ( bIsStartOfBlock != undefined )
210
+ return bIsStartOfBlock ;
211
+
212
+ // Take the block reference.
213
+ var block = this.StartBlock || this.StartBlockLimit ;
214
+
215
+ var container = this._Range.startContainer ;
216
+ var offset = this._Range.startOffset ;
217
+ var currentNode ;
218
+
219
+ if ( offset > 0 )
220
+ {
221
+ // First, check the start container. If it is a text node, get the
222
+ // substring of the node value before the range offset.
223
+ if ( container.nodeType == 3 )
224
+ {
225
+ var textValue = container.nodeValue.substr( 0, offset ).Trim() ;
226
+
227
+ // If we have some text left in the container, we are not at
228
+ // the end for the block.
229
+ if ( textValue.length != 0 )
230
+ return cache.IsStartOfBlock = false ;
231
+ }
232
+ else
233
+ currentNode = container.childNodes[ offset - 1 ] ;
234
+ }
235
+
236
+ // We'll not have a currentNode if the container was a text node, or
237
+ // the offset is zero.
238
+ if ( !currentNode )
239
+ currentNode = FCKDomTools.GetPreviousSourceNode( container, true, null, block ) ;
240
+
241
+ while ( currentNode )
242
+ {
243
+ switch ( currentNode.nodeType )
244
+ {
245
+ case 1 :
246
+ // It's not an inline element.
247
+ if ( !FCKListsLib.InlineChildReqElements[ currentNode.nodeName.toLowerCase() ] )
248
+ return cache.IsStartOfBlock = false ;
249
+
250
+ break ;
251
+
252
+ case 3 :
253
+ // It's a text node with real text.
254
+ if ( currentNode.nodeValue.Trim().length > 0 )
255
+ return cache.IsStartOfBlock = false ;
256
+ }
257
+
258
+ currentNode = FCKDomTools.GetPreviousSourceNode( currentNode, false, null, block ) ;
259
+ }
260
+
261
+ return cache.IsStartOfBlock = true ;
262
+ },
263
+
264
+ /**
265
+ * Checks if the end boundary of the current range is "visually" (like a
266
+ * selection caret) at the end of the block. It means that some things
267
+ * could be after the range, like spaces, empty inline elements, or a
268
+ * single <br>, but it would still be considered at the end of the block.
269
+ */
270
+ CheckEndOfBlock : function( refreshSelection )
271
+ {
272
+ var isEndOfBlock = this._Cache.IsEndOfBlock ;
273
+
274
+ if ( isEndOfBlock != undefined )
275
+ return isEndOfBlock ;
276
+
277
+ // Take the block reference.
278
+ var block = this.EndBlock || this.EndBlockLimit ;
279
+
280
+ var container = this._Range.endContainer ;
281
+ var offset = this._Range.endOffset ;
282
+ var currentNode ;
283
+
284
+ // First, check the end container. If it is a text node, get the
285
+ // substring of the node value after the range offset.
286
+ if ( container.nodeType == 3 )
287
+ {
288
+ var textValue = container.nodeValue ;
289
+ if ( offset < textValue.length )
290
+ {
291
+ textValue = textValue.substr( offset ) ;
292
+
293
+ // If we have some text left in the container, we are not at
294
+ // the end for the block.
295
+ if ( textValue.Trim().length != 0 )
296
+ return this._Cache.IsEndOfBlock = false ;
297
+ }
298
+ }
299
+ else
300
+ currentNode = container.childNodes[ offset ] ;
301
+
302
+ // We'll not have a currentNode if the container was a text node, of
303
+ // the offset is out the container children limits (after it probably).
304
+ if ( !currentNode )
305
+ currentNode = FCKDomTools.GetNextSourceNode( container, true, null, block ) ;
306
+
307
+ var hadBr = false ;
308
+
309
+ while ( currentNode )
310
+ {
311
+ switch ( currentNode.nodeType )
312
+ {
313
+ case 1 :
314
+ var nodeName = currentNode.nodeName.toLowerCase() ;
315
+
316
+ // It's an inline element.
317
+ if ( FCKListsLib.InlineChildReqElements[ nodeName ] )
318
+ break ;
319
+
320
+ // It is the first <br> found.
321
+ if ( nodeName == 'br' && !hadBr )
322
+ {
323
+ hadBr = true ;
324
+ break ;
325
+ }
326
+
327
+ return this._Cache.IsEndOfBlock = false ;
328
+
329
+ case 3 :
330
+ // It's a text node with real text.
331
+ if ( currentNode.nodeValue.Trim().length > 0 )
332
+ return this._Cache.IsEndOfBlock = false ;
333
+ }
334
+
335
+ currentNode = FCKDomTools.GetNextSourceNode( currentNode, false, null, block ) ;
336
+ }
337
+
338
+ if ( refreshSelection )
339
+ this.Select() ;
340
+
341
+ return this._Cache.IsEndOfBlock = true ;
342
+ },
343
+
344
+ // This is an "intrusive" way to create a bookmark. It includes <span> tags
345
+ // in the range boundaries. The advantage of it is that it is possible to
346
+ // handle DOM mutations when moving back to the bookmark.
347
+ // Attention: the inclusion of nodes in the DOM is a design choice and
348
+ // should not be changed as there are other points in the code that may be
349
+ // using those nodes to perform operations. See GetBookmarkNode.
350
+ // For performance, includeNodes=true if intended to SelectBookmark.
351
+ CreateBookmark : function( includeNodes )
352
+ {
353
+ // Create the bookmark info (random IDs).
354
+ var oBookmark =
355
+ {
356
+ StartId : (new Date()).valueOf() + Math.floor(Math.random()*1000) + 'S',
357
+ EndId : (new Date()).valueOf() + Math.floor(Math.random()*1000) + 'E'
358
+ } ;
359
+
360
+ var oDoc = this.Window.document ;
361
+ var eStartSpan ;
362
+ var eEndSpan ;
363
+ var oClone ;
364
+
365
+ // For collapsed ranges, add just the start marker.
366
+ if ( !this.CheckIsCollapsed() )
367
+ {
368
+ eEndSpan = oDoc.createElement( 'span' ) ;
369
+ eEndSpan.style.display = 'none' ;
370
+ eEndSpan.id = oBookmark.EndId ;
371
+ eEndSpan.setAttribute( '_fck_bookmark', true ) ;
372
+
373
+ // For IE, it must have something inside, otherwise it may be
374
+ // removed during DOM operations.
375
+ // if ( FCKBrowserInfo.IsIE )
376
+ eEndSpan.innerHTML = '&nbsp;' ;
377
+
378
+ oClone = this.Clone() ;
379
+ oClone.Collapse( false ) ;
380
+ oClone.InsertNode( eEndSpan ) ;
381
+ }
382
+
383
+ eStartSpan = oDoc.createElement( 'span' ) ;
384
+ eStartSpan.style.display = 'none' ;
385
+ eStartSpan.id = oBookmark.StartId ;
386
+ eStartSpan.setAttribute( '_fck_bookmark', true ) ;
387
+
388
+ // For IE, it must have something inside, otherwise it may be removed
389
+ // during DOM operations.
390
+ // if ( FCKBrowserInfo.IsIE )
391
+ eStartSpan.innerHTML = '&nbsp;' ;
392
+
393
+ oClone = this.Clone() ;
394
+ oClone.Collapse( true ) ;
395
+ oClone.InsertNode( eStartSpan ) ;
396
+
397
+ if ( includeNodes )
398
+ {
399
+ oBookmark.StartNode = eStartSpan ;
400
+ oBookmark.EndNode = eEndSpan ;
401
+ }
402
+
403
+ // Update the range position.
404
+ if ( eEndSpan )
405
+ {
406
+ this.SetStart( eStartSpan, 4 ) ;
407
+ this.SetEnd( eEndSpan, 3 ) ;
408
+ }
409
+ else
410
+ this.MoveToPosition( eStartSpan, 4 ) ;
411
+
412
+ return oBookmark ;
413
+ },
414
+
415
+ // This one should be a part of a hypothetic "bookmark" object.
416
+ GetBookmarkNode : function( bookmark, start )
417
+ {
418
+ var doc = this.Window.document ;
419
+
420
+ if ( start )
421
+ return bookmark.StartNode || doc.getElementById( bookmark.StartId ) ;
422
+ else
423
+ return bookmark.EndNode || doc.getElementById( bookmark.EndId ) ;
424
+ },
425
+
426
+ MoveToBookmark : function( bookmark, preserveBookmark )
427
+ {
428
+ var eStartSpan = this.GetBookmarkNode( bookmark, true ) ;
429
+ var eEndSpan = this.GetBookmarkNode( bookmark, false ) ;
430
+
431
+ this.SetStart( eStartSpan, 3 ) ;
432
+
433
+ if ( !preserveBookmark )
434
+ FCKDomTools.RemoveNode( eStartSpan ) ;
435
+
436
+ // If collapsed, the end span will not be available.
437
+ if ( eEndSpan )
438
+ {
439
+ this.SetEnd( eEndSpan, 3 ) ;
440
+
441
+ if ( !preserveBookmark )
442
+ FCKDomTools.RemoveNode( eEndSpan ) ;
443
+ }
444
+ else
445
+ this.Collapse( true ) ;
446
+
447
+ this._UpdateElementInfo() ;
448
+ },
449
+
450
+ // Non-intrusive bookmark algorithm
451
+ CreateBookmark2 : function()
452
+ {
453
+ // If there is no range then get out of here.
454
+ // It happens on initial load in Safari #962 and if the editor it's hidden also in Firefox
455
+ if ( ! this._Range )
456
+ return { "Start" : 0, "End" : 0 } ;
457
+
458
+ // First, we record down the offset values
459
+ var bookmark =
460
+ {
461
+ "Start" : [ this._Range.startOffset ],
462
+ "End" : [ this._Range.endOffset ]
463
+ } ;
464
+ // Since we're treating the document tree as normalized, we need to backtrack the text lengths
465
+ // of previous text nodes into the offset value.
466
+ var curStart = this._Range.startContainer.previousSibling ;
467
+ var curEnd = this._Range.endContainer.previousSibling ;
468
+
469
+ // Also note that the node that we use for "address base" would change during backtracking.
470
+ var addrStart = this._Range.startContainer ;
471
+ var addrEnd = this._Range.endContainer ;
472
+ while ( curStart && curStart.nodeType == 3 && addrStart.nodeType == 3 )
473
+ {
474
+ bookmark.Start[0] += curStart.length ;
475
+ addrStart = curStart ;
476
+ curStart = curStart.previousSibling ;
477
+ }
478
+ while ( curEnd && curEnd.nodeType == 3 && addrEnd.nodeType == 3 )
479
+ {
480
+ bookmark.End[0] += curEnd.length ;
481
+ addrEnd = curEnd ;
482
+ curEnd = curEnd.previousSibling ;
483
+ }
484
+
485
+ // If the object pointed to by the startOffset and endOffset are text nodes, we need
486
+ // to backtrack and add in the text offset to the bookmark addresses.
487
+ if ( addrStart.nodeType == 1 && addrStart.childNodes[bookmark.Start[0]] && addrStart.childNodes[bookmark.Start[0]].nodeType == 3 )
488
+ {
489
+ var curNode = addrStart.childNodes[bookmark.Start[0]] ;
490
+ var offset = 0 ;
491
+ while ( curNode.previousSibling && curNode.previousSibling.nodeType == 3 )
492
+ {
493
+ curNode = curNode.previousSibling ;
494
+ offset += curNode.length ;
495
+ }
496
+ addrStart = curNode ;
497
+ bookmark.Start[0] = offset ;
498
+ }
499
+ if ( addrEnd.nodeType == 1 && addrEnd.childNodes[bookmark.End[0]] && addrEnd.childNodes[bookmark.End[0]].nodeType == 3 )
500
+ {
501
+ var curNode = addrEnd.childNodes[bookmark.End[0]] ;
502
+ var offset = 0 ;
503
+ while ( curNode.previousSibling && curNode.previousSibling.nodeType == 3 )
504
+ {
505
+ curNode = curNode.previousSibling ;
506
+ offset += curNode.length ;
507
+ }
508
+ addrEnd = curNode ;
509
+ bookmark.End[0] = offset ;
510
+ }
511
+
512
+ // Then, we record down the precise position of the container nodes
513
+ // by walking up the DOM tree and counting their childNode index
514
+ bookmark.Start = FCKDomTools.GetNodeAddress( addrStart, true ).concat( bookmark.Start ) ;
515
+ bookmark.End = FCKDomTools.GetNodeAddress( addrEnd, true ).concat( bookmark.End ) ;
516
+ return bookmark;
517
+ },
518
+
519
+ MoveToBookmark2 : function( bookmark )
520
+ {
521
+ // Reverse the childNode counting algorithm in CreateBookmark2()
522
+ var curStart = FCKDomTools.GetNodeFromAddress( this.Window.document, bookmark.Start.slice( 0, -1 ), true ) ;
523
+ var curEnd = FCKDomTools.GetNodeFromAddress( this.Window.document, bookmark.End.slice( 0, -1 ), true ) ;
524
+
525
+ // Generate the W3C Range object and update relevant data
526
+ this.Release( true ) ;
527
+ this._Range = new FCKW3CRange( this.Window.document ) ;
528
+ var startOffset = bookmark.Start[ bookmark.Start.length - 1 ] ;
529
+ var endOffset = bookmark.End[ bookmark.End.length - 1 ] ;
530
+ while ( curStart.nodeType == 3 && startOffset > curStart.length )
531
+ {
532
+ if ( ! curStart.nextSibling || curStart.nextSibling.nodeType != 3 )
533
+ break ;
534
+ startOffset -= curStart.length ;
535
+ curStart = curStart.nextSibling ;
536
+ }
537
+ while ( curEnd.nodeType == 3 && endOffset > curEnd.length )
538
+ {
539
+ if ( ! curEnd.nextSibling || curEnd.nextSibling.nodeType != 3 )
540
+ break ;
541
+ endOffset -= curEnd.length ;
542
+ curEnd = curEnd.nextSibling ;
543
+ }
544
+ this._Range.setStart( curStart, startOffset ) ;
545
+ this._Range.setEnd( curEnd, endOffset ) ;
546
+ this._UpdateElementInfo() ;
547
+ },
548
+
549
+ MoveToPosition : function( targetElement, position )
550
+ {
551
+ this.SetStart( targetElement, position ) ;
552
+ this.Collapse( true ) ;
553
+ },
554
+
555
+ /*
556
+ * Moves the position of the start boundary of the range to a specific position
557
+ * relatively to a element.
558
+ * @position:
559
+ * 1 = After Start <target>^contents</target>
560
+ * 2 = Before End <target>contents^</target>
561
+ * 3 = Before Start ^<target>contents</target>
562
+ * 4 = After End <target>contents</target>^
563
+ */
564
+ SetStart : function( targetElement, position, noInfoUpdate )
565
+ {
566
+ var oRange = this._Range ;
567
+ if ( !oRange )
568
+ oRange = this._Range = this.CreateRange() ;
569
+
570
+ switch( position )
571
+ {
572
+ case 1 : // After Start <target>^contents</target>
573
+ oRange.setStart( targetElement, 0 ) ;
574
+ break ;
575
+
576
+ case 2 : // Before End <target>contents^</target>
577
+ oRange.setStart( targetElement, targetElement.childNodes.length ) ;
578
+ break ;
579
+
580
+ case 3 : // Before Start ^<target>contents</target>
581
+ oRange.setStartBefore( targetElement ) ;
582
+ break ;
583
+
584
+ case 4 : // After End <target>contents</target>^
585
+ oRange.setStartAfter( targetElement ) ;
586
+ }
587
+
588
+ if ( !noInfoUpdate )
589
+ this._UpdateElementInfo() ;
590
+ },
591
+
592
+ /*
593
+ * Moves the position of the start boundary of the range to a specific position
594
+ * relatively to a element.
595
+ * @position:
596
+ * 1 = After Start <target>^contents</target>
597
+ * 2 = Before End <target>contents^</target>
598
+ * 3 = Before Start ^<target>contents</target>
599
+ * 4 = After End <target>contents</target>^
600
+ */
601
+ SetEnd : function( targetElement, position, noInfoUpdate )
602
+ {
603
+ var oRange = this._Range ;
604
+ if ( !oRange )
605
+ oRange = this._Range = this.CreateRange() ;
606
+
607
+ switch( position )
608
+ {
609
+ case 1 : // After Start <target>^contents</target>
610
+ oRange.setEnd( targetElement, 0 ) ;
611
+ break ;
612
+
613
+ case 2 : // Before End <target>contents^</target>
614
+ oRange.setEnd( targetElement, targetElement.childNodes.length ) ;
615
+ break ;
616
+
617
+ case 3 : // Before Start ^<target>contents</target>
618
+ oRange.setEndBefore( targetElement ) ;
619
+ break ;
620
+
621
+ case 4 : // After End <target>contents</target>^
622
+ oRange.setEndAfter( targetElement ) ;
623
+ }
624
+
625
+ if ( !noInfoUpdate )
626
+ this._UpdateElementInfo() ;
627
+ },
628
+
629
+ Expand : function( unit )
630
+ {
631
+ var oNode, oSibling ;
632
+
633
+ switch ( unit )
634
+ {
635
+ // Expand the range to include all inline parent elements if we are
636
+ // are in their boundary limits.
637
+ // For example (where [ ] are the range limits):
638
+ // Before => Some <b>[<i>Some sample text]</i></b>.
639
+ // After => Some [<b><i>Some sample text</i></b>].
640
+ case 'inline_elements' :
641
+ // Expand the start boundary.
642
+ if ( this._Range.startOffset == 0 )
643
+ {
644
+ oNode = this._Range.startContainer ;
645
+
646
+ if ( oNode.nodeType != 1 )
647
+ oNode = oNode.previousSibling ? null : oNode.parentNode ;
648
+
649
+ if ( oNode )
650
+ {
651
+ while ( FCKListsLib.InlineNonEmptyElements[ oNode.nodeName.toLowerCase() ] )
652
+ {
653
+ this._Range.setStartBefore( oNode ) ;
654
+
655
+ if ( oNode != oNode.parentNode.firstChild )
656
+ break ;
657
+
658
+ oNode = oNode.parentNode ;
659
+ }
660
+ }
661
+ }
662
+
663
+ // Expand the end boundary.
664
+ oNode = this._Range.endContainer ;
665
+ var offset = this._Range.endOffset ;
666
+
667
+ if ( ( oNode.nodeType == 3 && offset >= oNode.nodeValue.length ) || ( oNode.nodeType == 1 && offset >= oNode.childNodes.length ) || ( oNode.nodeType != 1 && oNode.nodeType != 3 ) )
668
+ {
669
+ if ( oNode.nodeType != 1 )
670
+ oNode = oNode.nextSibling ? null : oNode.parentNode ;
671
+
672
+ if ( oNode )
673
+ {
674
+ while ( FCKListsLib.InlineNonEmptyElements[ oNode.nodeName.toLowerCase() ] )
675
+ {
676
+ this._Range.setEndAfter( oNode ) ;
677
+
678
+ if ( oNode != oNode.parentNode.lastChild )
679
+ break ;
680
+
681
+ oNode = oNode.parentNode ;
682
+ }
683
+ }
684
+ }
685
+
686
+ break ;
687
+
688
+ case 'block_contents' :
689
+ case 'list_contents' :
690
+ var boundarySet = FCKListsLib.BlockBoundaries ;
691
+ if ( unit == 'list_contents' || FCKConfig.EnterMode == 'br' )
692
+ boundarySet = FCKListsLib.ListBoundaries ;
693
+
694
+ if ( this.StartBlock && FCKConfig.EnterMode != 'br' && unit == 'block_contents' )
695
+ this.SetStart( this.StartBlock, 1 ) ;
696
+ else
697
+ {
698
+ // Get the start node for the current range.
699
+ oNode = this._Range.startContainer ;
700
+
701
+ // If it is an element, get the node right before of it (in source order).
702
+ if ( oNode.nodeType == 1 )
703
+ {
704
+ var lastNode = oNode.childNodes[ this._Range.startOffset ] ;
705
+ if ( lastNode )
706
+ oNode = FCKDomTools.GetPreviousSourceNode( lastNode, true ) ;
707
+ else
708
+ oNode = oNode.lastChild || oNode ;
709
+ }
710
+
711
+ // We must look for the left boundary, relative to the range
712
+ // start, which is limited by a block element.
713
+ while ( oNode
714
+ && ( oNode.nodeType != 1
715
+ || ( oNode != this.StartBlockLimit
716
+ && !boundarySet[ oNode.nodeName.toLowerCase() ] ) ) )
717
+ {
718
+ this._Range.setStartBefore( oNode ) ;
719
+ oNode = oNode.previousSibling || oNode.parentNode ;
720
+ }
721
+ }
722
+
723
+ if ( this.EndBlock && FCKConfig.EnterMode != 'br' && unit == 'block_contents' && this.EndBlock.nodeName.toLowerCase() != 'li' )
724
+ this.SetEnd( this.EndBlock, 2 ) ;
725
+ else
726
+ {
727
+ oNode = this._Range.endContainer ;
728
+ if ( oNode.nodeType == 1 )
729
+ oNode = oNode.childNodes[ this._Range.endOffset ] || oNode.lastChild ;
730
+
731
+ // We must look for the right boundary, relative to the range
732
+ // end, which is limited by a block element.
733
+ while ( oNode
734
+ && ( oNode.nodeType != 1
735
+ || ( oNode != this.StartBlockLimit
736
+ && !boundarySet[ oNode.nodeName.toLowerCase() ] ) ) )
737
+ {
738
+ this._Range.setEndAfter( oNode ) ;
739
+ oNode = oNode.nextSibling || oNode.parentNode ;
740
+ }
741
+
742
+ // In EnterMode='br', the end <br> boundary element must
743
+ // be included in the expanded range.
744
+ if ( oNode && oNode.nodeName.toLowerCase() == 'br' )
745
+ this._Range.setEndAfter( oNode ) ;
746
+ }
747
+
748
+ this._UpdateElementInfo() ;
749
+ }
750
+ },
751
+
752
+ /**
753
+ * Split the block element for the current range. It deletes the contents
754
+ * of the range and splits the block in the collapsed position, resulting
755
+ * in two sucessive blocks. The range is then positioned in the middle of
756
+ * them.
757
+ *
758
+ * It returns and object with the following properties:
759
+ * - PreviousBlock : a reference to the block element that preceeds
760
+ * the range after the split.
761
+ * - NextBlock : a reference to the block element that follows the
762
+ * range after the split.
763
+ * - WasStartOfBlock : a boolean indicating that the range was
764
+ * originaly at the start of the block.
765
+ * - WasEndOfBlock : a boolean indicating that the range was originaly
766
+ * at the end of the block.
767
+ *
768
+ * If the range was originaly at the start of the block, no split will happen
769
+ * and the PreviousBlock value will be null. The same is valid for the
770
+ * NextBlock value if the range was at the end of the block.
771
+ */
772
+ SplitBlock : function( forceBlockTag )
773
+ {
774
+ var blockTag = forceBlockTag || FCKConfig.EnterMode ;
775
+
776
+ if ( !this._Range )
777
+ this.MoveToSelection() ;
778
+
779
+ // The range boundaries must be in the same "block limit" element.
780
+ if ( this.StartBlockLimit == this.EndBlockLimit )
781
+ {
782
+ // Get the current blocks.
783
+ var eStartBlock = this.StartBlock ;
784
+ var eEndBlock = this.EndBlock ;
785
+ var oElementPath = null ;
786
+
787
+ if ( blockTag != 'br' )
788
+ {
789
+ if ( !eStartBlock )
790
+ {
791
+ eStartBlock = this.FixBlock( true, blockTag ) ;
792
+ eEndBlock = this.EndBlock ; // FixBlock may have fixed the EndBlock too.
793
+ }
794
+
795
+ if ( !eEndBlock )
796
+ eEndBlock = this.FixBlock( false, blockTag ) ;
797
+ }
798
+
799
+ // Get the range position.
800
+ var bIsStartOfBlock = ( eStartBlock != null && this.CheckStartOfBlock() ) ;
801
+ var bIsEndOfBlock = ( eEndBlock != null && this.CheckEndOfBlock() ) ;
802
+
803
+ // Delete the current contents.
804
+ if ( !this.CheckIsEmpty() )
805
+ this.DeleteContents() ;
806
+
807
+ if ( eStartBlock && eEndBlock && eStartBlock == eEndBlock )
808
+ {
809
+ if ( bIsEndOfBlock )
810
+ {
811
+ oElementPath = new FCKElementPath( this.StartContainer ) ;
812
+ this.MoveToPosition( eEndBlock, 4 ) ;
813
+ eEndBlock = null ;
814
+ }
815
+ else if ( bIsStartOfBlock )
816
+ {
817
+ oElementPath = new FCKElementPath( this.StartContainer ) ;
818
+ this.MoveToPosition( eStartBlock, 3 ) ;
819
+ eStartBlock = null ;
820
+ }
821
+ else
822
+ {
823
+ // Extract the contents of the block from the selection point to the end of its contents.
824
+ this.SetEnd( eStartBlock, 2 ) ;
825
+ var eDocFrag = this.ExtractContents() ;
826
+
827
+ // Duplicate the block element after it.
828
+ eEndBlock = eStartBlock.cloneNode( false ) ;
829
+ eEndBlock.removeAttribute( 'id', false ) ;
830
+
831
+ // Place the extracted contents in the duplicated block.
832
+ eDocFrag.AppendTo( eEndBlock ) ;
833
+
834
+ FCKDomTools.InsertAfterNode( eStartBlock, eEndBlock ) ;
835
+
836
+ this.MoveToPosition( eStartBlock, 4 ) ;
837
+
838
+ // In Gecko, the last child node must be a bogus <br>.
839
+ // Note: bogus <br> added under <ul> or <ol> would cause lists to be incorrectly rendered.
840
+ if ( FCKBrowserInfo.IsGecko &&
841
+ ! eStartBlock.nodeName.IEquals( ['ul', 'ol'] ) )
842
+ FCKTools.AppendBogusBr( eStartBlock ) ;
843
+ }
844
+ }
845
+
846
+ return {
847
+ PreviousBlock : eStartBlock,
848
+ NextBlock : eEndBlock,
849
+ WasStartOfBlock : bIsStartOfBlock,
850
+ WasEndOfBlock : bIsEndOfBlock,
851
+ ElementPath : oElementPath
852
+ } ;
853
+ }
854
+
855
+ return null ;
856
+ },
857
+
858
+ // Transform a block without a block tag in a valid block (orphan text in the body or td, usually).
859
+ FixBlock : function( isStart, blockTag )
860
+ {
861
+ // Bookmark the range so we can restore it later.
862
+ var oBookmark = this.CreateBookmark() ;
863
+
864
+ // Collapse the range to the requested ending boundary.
865
+ this.Collapse( isStart ) ;
866
+
867
+ // Expands it to the block contents.
868
+ this.Expand( 'block_contents' ) ;
869
+
870
+ // Create the fixed block.
871
+ var oFixedBlock = this.Window.document.createElement( blockTag ) ;
872
+
873
+ // Move the contents of the temporary range to the fixed block.
874
+ this.ExtractContents().AppendTo( oFixedBlock ) ;
875
+ FCKDomTools.TrimNode( oFixedBlock ) ;
876
+
877
+ // If the fixed block is empty (not counting bookmark nodes)
878
+ // Add a <br /> inside to expand it.
879
+ if ( FCKDomTools.CheckIsEmptyElement(oFixedBlock, function( element ) { return element.getAttribute('_fck_bookmark') != 'true' ; } )
880
+ && FCKBrowserInfo.IsGeckoLike )
881
+ FCKTools.AppendBogusBr( oFixedBlock ) ;
882
+
883
+ // Insert the fixed block into the DOM.
884
+ this.InsertNode( oFixedBlock ) ;
885
+
886
+ // Move the range back to the bookmarked place.
887
+ this.MoveToBookmark( oBookmark ) ;
888
+
889
+ return oFixedBlock ;
890
+ },
891
+
892
+ Release : function( preserveWindow )
893
+ {
894
+ if ( !preserveWindow )
895
+ this.Window = null ;
896
+
897
+ this.StartNode = null ;
898
+ this.StartContainer = null ;
899
+ this.StartBlock = null ;
900
+ this.StartBlockLimit = null ;
901
+ this.EndNode = null ;
902
+ this.EndContainer = null ;
903
+ this.EndBlock = null ;
904
+ this.EndBlockLimit = null ;
905
+ this._Range = null ;
906
+ this._Cache = null ;
907
+ },
908
+
909
+ CheckHasRange : function()
910
+ {
911
+ return !!this._Range ;
912
+ },
913
+
914
+ GetTouchedStartNode : function()
915
+ {
916
+ var range = this._Range ;
917
+ var container = range.startContainer ;
918
+
919
+ if ( range.collapsed || container.nodeType != 1 )
920
+ return container ;
921
+
922
+ return container.childNodes[ range.startOffset ] || container ;
923
+ },
924
+
925
+ GetTouchedEndNode : function()
926
+ {
927
+ var range = this._Range ;
928
+ var container = range.endContainer ;
929
+
930
+ if ( range.collapsed || container.nodeType != 1 )
931
+ return container ;
932
+
933
+ return container.childNodes[ range.endOffset - 1 ] || container ;
934
+ }
935
+ } ;