aloha-rails 0.0.1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (1045) hide show
  1. data/.gitignore +18 -0
  2. data/Gemfile +4 -0
  3. data/LICENSE +22 -0
  4. data/README.md +34 -0
  5. data/Rakefile +9 -0
  6. data/aloha-rails.gemspec +22 -0
  7. data/lib/aloha-rails.rb +13 -0
  8. data/lib/aloha-rails/engine.rb +9 -0
  9. data/lib/aloha-rails/helpers.rb +45 -0
  10. data/lib/aloha-rails/railtie.rb +9 -0
  11. data/lib/aloha-rails/version.rb +5 -0
  12. data/lib/generators/aloha/install/USAGE +9 -0
  13. data/lib/generators/aloha/install/install_generator.rb +25 -0
  14. data/lib/generators/aloha/install/templates/aloha-config.coffee +88 -0
  15. data/lib/generators/aloha/install/templates/aloha-config.js +108 -0
  16. data/lib/generators/aloha/install/templates/aloha.rb +21 -0
  17. data/lib/generators/aloha/install/templates/application.js +16 -0
  18. data/spec/aloha_spec.rb +20 -0
  19. data/spec/helpers/aloha_helpers_spec.rb +69 -0
  20. data/spec/spec_helper.rb +17 -0
  21. data/vendor/assets/javascripts/aloha/css/aloha-core.css +44 -0
  22. data/vendor/assets/javascripts/aloha/css/aloha-sidebar.css +284 -0
  23. data/vendor/assets/javascripts/aloha/css/aloha.css +7774 -0
  24. data/vendor/assets/javascripts/aloha/css/ext-aloha-reset.css +33 -0
  25. data/vendor/assets/javascripts/aloha/css/ext-aloha.css +357 -0
  26. data/vendor/assets/javascripts/aloha/img/arrow-down.png +0 -0
  27. data/vendor/assets/javascripts/aloha/img/arrow-left.png +0 -0
  28. data/vendor/assets/javascripts/aloha/img/arrow.png +0 -0
  29. data/vendor/assets/javascripts/aloha/img/base-big.png +0 -0
  30. data/vendor/assets/javascripts/aloha/img/base-multi.png +0 -0
  31. data/vendor/assets/javascripts/aloha/img/base.png +0 -0
  32. data/vendor/assets/javascripts/aloha/img/bg.png +0 -0
  33. data/vendor/assets/javascripts/aloha/img/breadcrumb-divider.png +0 -0
  34. data/vendor/assets/javascripts/aloha/img/fade-in.png +0 -0
  35. data/vendor/assets/javascripts/aloha/img/fade-out.png +0 -0
  36. data/vendor/assets/javascripts/aloha/img/gentics-logo.png +0 -0
  37. data/vendor/assets/javascripts/aloha/img/grabhandle.png +0 -0
  38. data/vendor/assets/javascripts/aloha/img/maximize.png +0 -0
  39. data/vendor/assets/javascripts/aloha/img/multisplit-base.jpg +0 -0
  40. data/vendor/assets/javascripts/aloha/img/multisplit-close.gif +0 -0
  41. data/vendor/assets/javascripts/aloha/img/multisplit-open.gif +0 -0
  42. data/vendor/assets/javascripts/aloha/img/pin.png +0 -0
  43. data/vendor/assets/javascripts/aloha/img/removeformat.png +0 -0
  44. data/vendor/assets/javascripts/aloha/img/text_indent.png +0 -0
  45. data/vendor/assets/javascripts/aloha/img/text_indent_remove.png +0 -0
  46. data/vendor/assets/javascripts/aloha/lib/aloha-bootstrap.js +27645 -0
  47. data/vendor/assets/javascripts/aloha/lib/aloha.js +88750 -0
  48. data/vendor/assets/javascripts/aloha/lib/aloha/command.js +246 -0
  49. data/vendor/assets/javascripts/aloha/lib/aloha/console.js +330 -0
  50. data/vendor/assets/javascripts/aloha/lib/aloha/contenthandlermanager.js +65 -0
  51. data/vendor/assets/javascripts/aloha/lib/aloha/core.js +560 -0
  52. data/vendor/assets/javascripts/aloha/lib/aloha/ecma5.js +194 -0
  53. data/vendor/assets/javascripts/aloha/lib/aloha/ecma5shims.js +280 -0
  54. data/vendor/assets/javascripts/aloha/lib/aloha/editable.js +854 -0
  55. data/vendor/assets/javascripts/aloha/lib/aloha/engine.js +8306 -0
  56. data/vendor/assets/javascripts/aloha/lib/aloha/ext-alohaproxy.js +86 -0
  57. data/vendor/assets/javascripts/aloha/lib/aloha/ext-alohareader.js +50 -0
  58. data/vendor/assets/javascripts/aloha/lib/aloha/ext-alohatreeloader.js +77 -0
  59. data/vendor/assets/javascripts/aloha/lib/aloha/ext.js +32 -0
  60. data/vendor/assets/javascripts/aloha/lib/aloha/floatingmenu.js +1304 -0
  61. data/vendor/assets/javascripts/aloha/lib/aloha/ierange-m2.js +546 -0
  62. data/vendor/assets/javascripts/aloha/lib/aloha/jquery.aloha.js +324 -0
  63. data/vendor/assets/javascripts/aloha/lib/aloha/jquery.js +24 -0
  64. data/vendor/assets/javascripts/aloha/lib/aloha/jquery.patch.js +115 -0
  65. data/vendor/assets/javascripts/aloha/lib/aloha/markup.js +977 -0
  66. data/vendor/assets/javascripts/aloha/lib/aloha/message.js +115 -0
  67. data/vendor/assets/javascripts/aloha/lib/aloha/nls/de/i18n.js +10 -0
  68. data/vendor/assets/javascripts/aloha/lib/aloha/nls/i18n.js +20 -0
  69. data/vendor/assets/javascripts/aloha/lib/aloha/observable.js +106 -0
  70. data/vendor/assets/javascripts/aloha/lib/aloha/plugin.js +276 -0
  71. data/vendor/assets/javascripts/aloha/lib/aloha/pluginmanager.js +146 -0
  72. data/vendor/assets/javascripts/aloha/lib/aloha/rangy-core.js +3242 -0
  73. data/vendor/assets/javascripts/aloha/lib/aloha/registry.js +59 -0
  74. data/vendor/assets/javascripts/aloha/lib/aloha/repository.js +241 -0
  75. data/vendor/assets/javascripts/aloha/lib/aloha/repositorymanager.js +570 -0
  76. data/vendor/assets/javascripts/aloha/lib/aloha/repositoryobjects.js +146 -0
  77. data/vendor/assets/javascripts/aloha/lib/aloha/selection.js +2083 -0
  78. data/vendor/assets/javascripts/aloha/lib/aloha/sidebar.js +1133 -0
  79. data/vendor/assets/javascripts/aloha/lib/aloha/ui-attributefield.js +530 -0
  80. data/vendor/assets/javascripts/aloha/lib/aloha/ui-browser.js +214 -0
  81. data/vendor/assets/javascripts/aloha/lib/aloha/ui.js +889 -0
  82. data/vendor/assets/javascripts/aloha/lib/css.js +313 -0
  83. data/vendor/assets/javascripts/aloha/lib/i18n.js +153 -0
  84. data/vendor/assets/javascripts/aloha/lib/jquery-plugin.js +46 -0
  85. data/vendor/assets/javascripts/aloha/lib/order.js +140 -0
  86. data/vendor/assets/javascripts/aloha/lib/require.js +2013 -0
  87. data/vendor/assets/javascripts/aloha/lib/text.js +262 -0
  88. data/vendor/assets/javascripts/aloha/lib/util/class.js +80 -0
  89. data/vendor/assets/javascripts/aloha/lib/util/dom.js +1673 -0
  90. data/vendor/assets/javascripts/aloha/lib/util/json2.js +481 -0
  91. data/vendor/assets/javascripts/aloha/lib/util/lang.js +66 -0
  92. data/vendor/assets/javascripts/aloha/lib/util/position.js +158 -0
  93. data/vendor/assets/javascripts/aloha/lib/util/range.js +923 -0
  94. data/vendor/assets/javascripts/aloha/lib/vendor/ext-3.2.1/adapter/jquery/ext-jquery-adapter-debug.js +2470 -0
  95. data/vendor/assets/javascripts/aloha/lib/vendor/ext-3.2.1/adapter/jquery/ext-jquery-adapter.js +7 -0
  96. data/vendor/assets/javascripts/aloha/lib/vendor/ext-3.2.1/ext-all-debug.js +47684 -0
  97. data/vendor/assets/javascripts/aloha/lib/vendor/ext-3.2.1/ext-all.js +13 -0
  98. data/vendor/assets/javascripts/aloha/lib/vendor/ext-3.2.1/gpl-3.0.txt +674 -0
  99. data/vendor/assets/javascripts/aloha/lib/vendor/ext-3.2.1/license.txt +42 -0
  100. data/vendor/assets/javascripts/aloha/lib/vendor/ext-3.2.1/resources/charts.swf +0 -0
  101. data/vendor/assets/javascripts/aloha/lib/vendor/ext-3.2.1/resources/css/ext-all.css +5903 -0
  102. data/vendor/assets/javascripts/aloha/lib/vendor/ext-3.2.1/resources/css/ext-all.less +6795 -0
  103. data/vendor/assets/javascripts/aloha/lib/vendor/ext-3.2.1/resources/css/xtheme-gray.css +1692 -0
  104. data/vendor/assets/javascripts/aloha/lib/vendor/ext-3.2.1/resources/expressinstall.swf +0 -0
  105. data/vendor/assets/javascripts/aloha/lib/vendor/ext-3.2.1/resources/images/default/box/corners-blue.gif +0 -0
  106. data/vendor/assets/javascripts/aloha/lib/vendor/ext-3.2.1/resources/images/default/box/corners.gif +0 -0
  107. data/vendor/assets/javascripts/aloha/lib/vendor/ext-3.2.1/resources/images/default/box/l-blue.gif +0 -0
  108. data/vendor/assets/javascripts/aloha/lib/vendor/ext-3.2.1/resources/images/default/box/l.gif +0 -0
  109. data/vendor/assets/javascripts/aloha/lib/vendor/ext-3.2.1/resources/images/default/box/r-blue.gif +0 -0
  110. data/vendor/assets/javascripts/aloha/lib/vendor/ext-3.2.1/resources/images/default/box/r.gif +0 -0
  111. data/vendor/assets/javascripts/aloha/lib/vendor/ext-3.2.1/resources/images/default/box/tb-blue.gif +0 -0
  112. data/vendor/assets/javascripts/aloha/lib/vendor/ext-3.2.1/resources/images/default/box/tb.gif +0 -0
  113. data/vendor/assets/javascripts/aloha/lib/vendor/ext-3.2.1/resources/images/default/button/arrow.gif +0 -0
  114. data/vendor/assets/javascripts/aloha/lib/vendor/ext-3.2.1/resources/images/default/button/btn.gif +0 -0
  115. data/vendor/assets/javascripts/aloha/lib/vendor/ext-3.2.1/resources/images/default/button/group-cs.gif +0 -0
  116. data/vendor/assets/javascripts/aloha/lib/vendor/ext-3.2.1/resources/images/default/button/group-lr.gif +0 -0
  117. data/vendor/assets/javascripts/aloha/lib/vendor/ext-3.2.1/resources/images/default/button/group-tb.gif +0 -0
  118. data/vendor/assets/javascripts/aloha/lib/vendor/ext-3.2.1/resources/images/default/button/s-arrow-b-noline.gif +0 -0
  119. data/vendor/assets/javascripts/aloha/lib/vendor/ext-3.2.1/resources/images/default/button/s-arrow-b.gif +0 -0
  120. data/vendor/assets/javascripts/aloha/lib/vendor/ext-3.2.1/resources/images/default/button/s-arrow-bo.gif +0 -0
  121. data/vendor/assets/javascripts/aloha/lib/vendor/ext-3.2.1/resources/images/default/button/s-arrow-noline.gif +0 -0
  122. data/vendor/assets/javascripts/aloha/lib/vendor/ext-3.2.1/resources/images/default/button/s-arrow-o.gif +0 -0
  123. data/vendor/assets/javascripts/aloha/lib/vendor/ext-3.2.1/resources/images/default/button/s-arrow.gif +0 -0
  124. data/vendor/assets/javascripts/aloha/lib/vendor/ext-3.2.1/resources/images/default/dd/drop-add.gif +0 -0
  125. data/vendor/assets/javascripts/aloha/lib/vendor/ext-3.2.1/resources/images/default/dd/drop-no.gif +0 -0
  126. data/vendor/assets/javascripts/aloha/lib/vendor/ext-3.2.1/resources/images/default/dd/drop-yes.gif +0 -0
  127. data/vendor/assets/javascripts/aloha/lib/vendor/ext-3.2.1/resources/images/default/editor/tb-sprite.gif +0 -0
  128. data/vendor/assets/javascripts/aloha/lib/vendor/ext-3.2.1/resources/images/default/form/checkbox.gif +0 -0
  129. data/vendor/assets/javascripts/aloha/lib/vendor/ext-3.2.1/resources/images/default/form/clear-trigger.gif +0 -0
  130. data/vendor/assets/javascripts/aloha/lib/vendor/ext-3.2.1/resources/images/default/form/clear-trigger.psd +0 -0
  131. data/vendor/assets/javascripts/aloha/lib/vendor/ext-3.2.1/resources/images/default/form/date-trigger.gif +0 -0
  132. data/vendor/assets/javascripts/aloha/lib/vendor/ext-3.2.1/resources/images/default/form/date-trigger.psd +0 -0
  133. data/vendor/assets/javascripts/aloha/lib/vendor/ext-3.2.1/resources/images/default/form/error-tip-corners.gif +0 -0
  134. data/vendor/assets/javascripts/aloha/lib/vendor/ext-3.2.1/resources/images/default/form/exclamation.gif +0 -0
  135. data/vendor/assets/javascripts/aloha/lib/vendor/ext-3.2.1/resources/images/default/form/radio.gif +0 -0
  136. data/vendor/assets/javascripts/aloha/lib/vendor/ext-3.2.1/resources/images/default/form/search-trigger.gif +0 -0
  137. data/vendor/assets/javascripts/aloha/lib/vendor/ext-3.2.1/resources/images/default/form/search-trigger.psd +0 -0
  138. data/vendor/assets/javascripts/aloha/lib/vendor/ext-3.2.1/resources/images/default/form/text-bg.gif +0 -0
  139. data/vendor/assets/javascripts/aloha/lib/vendor/ext-3.2.1/resources/images/default/form/trigger-square.gif +0 -0
  140. data/vendor/assets/javascripts/aloha/lib/vendor/ext-3.2.1/resources/images/default/form/trigger-square.psd +0 -0
  141. data/vendor/assets/javascripts/aloha/lib/vendor/ext-3.2.1/resources/images/default/form/trigger-tpl.gif +0 -0
  142. data/vendor/assets/javascripts/aloha/lib/vendor/ext-3.2.1/resources/images/default/form/trigger.gif +0 -0
  143. data/vendor/assets/javascripts/aloha/lib/vendor/ext-3.2.1/resources/images/default/form/trigger.psd +0 -0
  144. data/vendor/assets/javascripts/aloha/lib/vendor/ext-3.2.1/resources/images/default/gradient-bg.gif +0 -0
  145. data/vendor/assets/javascripts/aloha/lib/vendor/ext-3.2.1/resources/images/default/grid/arrow-left-white.gif +0 -0
  146. data/vendor/assets/javascripts/aloha/lib/vendor/ext-3.2.1/resources/images/default/grid/arrow-right-white.gif +0 -0
  147. data/vendor/assets/javascripts/aloha/lib/vendor/ext-3.2.1/resources/images/default/grid/col-move-bottom.gif +0 -0
  148. data/vendor/assets/javascripts/aloha/lib/vendor/ext-3.2.1/resources/images/default/grid/col-move-top.gif +0 -0
  149. data/vendor/assets/javascripts/aloha/lib/vendor/ext-3.2.1/resources/images/default/grid/columns.gif +0 -0
  150. data/vendor/assets/javascripts/aloha/lib/vendor/ext-3.2.1/resources/images/default/grid/dirty.gif +0 -0
  151. data/vendor/assets/javascripts/aloha/lib/vendor/ext-3.2.1/resources/images/default/grid/done.gif +0 -0
  152. data/vendor/assets/javascripts/aloha/lib/vendor/ext-3.2.1/resources/images/default/grid/drop-no.gif +0 -0
  153. data/vendor/assets/javascripts/aloha/lib/vendor/ext-3.2.1/resources/images/default/grid/drop-yes.gif +0 -0
  154. data/vendor/assets/javascripts/aloha/lib/vendor/ext-3.2.1/resources/images/default/grid/footer-bg.gif +0 -0
  155. data/vendor/assets/javascripts/aloha/lib/vendor/ext-3.2.1/resources/images/default/grid/grid-blue-hd.gif +0 -0
  156. data/vendor/assets/javascripts/aloha/lib/vendor/ext-3.2.1/resources/images/default/grid/grid-blue-split.gif +0 -0
  157. data/vendor/assets/javascripts/aloha/lib/vendor/ext-3.2.1/resources/images/default/grid/grid-hrow.gif +0 -0
  158. data/vendor/assets/javascripts/aloha/lib/vendor/ext-3.2.1/resources/images/default/grid/grid-loading.gif +0 -0
  159. data/vendor/assets/javascripts/aloha/lib/vendor/ext-3.2.1/resources/images/default/grid/grid-split.gif +0 -0
  160. data/vendor/assets/javascripts/aloha/lib/vendor/ext-3.2.1/resources/images/default/grid/grid-vista-hd.gif +0 -0
  161. data/vendor/assets/javascripts/aloha/lib/vendor/ext-3.2.1/resources/images/default/grid/grid3-hd-btn.gif +0 -0
  162. data/vendor/assets/javascripts/aloha/lib/vendor/ext-3.2.1/resources/images/default/grid/grid3-hrow-over.gif +0 -0
  163. data/vendor/assets/javascripts/aloha/lib/vendor/ext-3.2.1/resources/images/default/grid/grid3-hrow.gif +0 -0
  164. data/vendor/assets/javascripts/aloha/lib/vendor/ext-3.2.1/resources/images/default/grid/grid3-special-col-bg.gif +0 -0
  165. data/vendor/assets/javascripts/aloha/lib/vendor/ext-3.2.1/resources/images/default/grid/grid3-special-col-sel-bg.gif +0 -0
  166. data/vendor/assets/javascripts/aloha/lib/vendor/ext-3.2.1/resources/images/default/grid/group-by.gif +0 -0
  167. data/vendor/assets/javascripts/aloha/lib/vendor/ext-3.2.1/resources/images/default/grid/group-collapse.gif +0 -0
  168. data/vendor/assets/javascripts/aloha/lib/vendor/ext-3.2.1/resources/images/default/grid/group-expand-sprite.gif +0 -0
  169. data/vendor/assets/javascripts/aloha/lib/vendor/ext-3.2.1/resources/images/default/grid/group-expand.gif +0 -0
  170. data/vendor/assets/javascripts/aloha/lib/vendor/ext-3.2.1/resources/images/default/grid/hd-pop.gif +0 -0
  171. data/vendor/assets/javascripts/aloha/lib/vendor/ext-3.2.1/resources/images/default/grid/hmenu-asc.gif +0 -0
  172. data/vendor/assets/javascripts/aloha/lib/vendor/ext-3.2.1/resources/images/default/grid/hmenu-desc.gif +0 -0
  173. data/vendor/assets/javascripts/aloha/lib/vendor/ext-3.2.1/resources/images/default/grid/hmenu-lock.gif +0 -0
  174. data/vendor/assets/javascripts/aloha/lib/vendor/ext-3.2.1/resources/images/default/grid/hmenu-lock.png +0 -0
  175. data/vendor/assets/javascripts/aloha/lib/vendor/ext-3.2.1/resources/images/default/grid/hmenu-unlock.gif +0 -0
  176. data/vendor/assets/javascripts/aloha/lib/vendor/ext-3.2.1/resources/images/default/grid/hmenu-unlock.png +0 -0
  177. data/vendor/assets/javascripts/aloha/lib/vendor/ext-3.2.1/resources/images/default/grid/invalid_line.gif +0 -0
  178. data/vendor/assets/javascripts/aloha/lib/vendor/ext-3.2.1/resources/images/default/grid/loading.gif +0 -0
  179. data/vendor/assets/javascripts/aloha/lib/vendor/ext-3.2.1/resources/images/default/grid/mso-hd.gif +0 -0
  180. data/vendor/assets/javascripts/aloha/lib/vendor/ext-3.2.1/resources/images/default/grid/nowait.gif +0 -0
  181. data/vendor/assets/javascripts/aloha/lib/vendor/ext-3.2.1/resources/images/default/grid/page-first-disabled.gif +0 -0
  182. data/vendor/assets/javascripts/aloha/lib/vendor/ext-3.2.1/resources/images/default/grid/page-first.gif +0 -0
  183. data/vendor/assets/javascripts/aloha/lib/vendor/ext-3.2.1/resources/images/default/grid/page-last-disabled.gif +0 -0
  184. data/vendor/assets/javascripts/aloha/lib/vendor/ext-3.2.1/resources/images/default/grid/page-last.gif +0 -0
  185. data/vendor/assets/javascripts/aloha/lib/vendor/ext-3.2.1/resources/images/default/grid/page-next-disabled.gif +0 -0
  186. data/vendor/assets/javascripts/aloha/lib/vendor/ext-3.2.1/resources/images/default/grid/page-next.gif +0 -0
  187. data/vendor/assets/javascripts/aloha/lib/vendor/ext-3.2.1/resources/images/default/grid/page-prev-disabled.gif +0 -0
  188. data/vendor/assets/javascripts/aloha/lib/vendor/ext-3.2.1/resources/images/default/grid/page-prev.gif +0 -0
  189. data/vendor/assets/javascripts/aloha/lib/vendor/ext-3.2.1/resources/images/default/grid/pick-button.gif +0 -0
  190. data/vendor/assets/javascripts/aloha/lib/vendor/ext-3.2.1/resources/images/default/grid/refresh.gif +0 -0
  191. data/vendor/assets/javascripts/aloha/lib/vendor/ext-3.2.1/resources/images/default/grid/row-check-sprite.gif +0 -0
  192. data/vendor/assets/javascripts/aloha/lib/vendor/ext-3.2.1/resources/images/default/grid/row-expand-sprite.gif +0 -0
  193. data/vendor/assets/javascripts/aloha/lib/vendor/ext-3.2.1/resources/images/default/grid/row-over.gif +0 -0
  194. data/vendor/assets/javascripts/aloha/lib/vendor/ext-3.2.1/resources/images/default/grid/row-sel.gif +0 -0
  195. data/vendor/assets/javascripts/aloha/lib/vendor/ext-3.2.1/resources/images/default/grid/sort-hd.gif +0 -0
  196. data/vendor/assets/javascripts/aloha/lib/vendor/ext-3.2.1/resources/images/default/grid/sort_asc.gif +0 -0
  197. data/vendor/assets/javascripts/aloha/lib/vendor/ext-3.2.1/resources/images/default/grid/sort_desc.gif +0 -0
  198. data/vendor/assets/javascripts/aloha/lib/vendor/ext-3.2.1/resources/images/default/grid/wait.gif +0 -0
  199. data/vendor/assets/javascripts/aloha/lib/vendor/ext-3.2.1/resources/images/default/layout/collapse.gif +0 -0
  200. data/vendor/assets/javascripts/aloha/lib/vendor/ext-3.2.1/resources/images/default/layout/expand.gif +0 -0
  201. data/vendor/assets/javascripts/aloha/lib/vendor/ext-3.2.1/resources/images/default/layout/gradient-bg.gif +0 -0
  202. data/vendor/assets/javascripts/aloha/lib/vendor/ext-3.2.1/resources/images/default/layout/mini-bottom.gif +0 -0
  203. data/vendor/assets/javascripts/aloha/lib/vendor/ext-3.2.1/resources/images/default/layout/mini-left.gif +0 -0
  204. data/vendor/assets/javascripts/aloha/lib/vendor/ext-3.2.1/resources/images/default/layout/mini-right.gif +0 -0
  205. data/vendor/assets/javascripts/aloha/lib/vendor/ext-3.2.1/resources/images/default/layout/mini-top.gif +0 -0
  206. data/vendor/assets/javascripts/aloha/lib/vendor/ext-3.2.1/resources/images/default/layout/ns-collapse.gif +0 -0
  207. data/vendor/assets/javascripts/aloha/lib/vendor/ext-3.2.1/resources/images/default/layout/ns-expand.gif +0 -0
  208. data/vendor/assets/javascripts/aloha/lib/vendor/ext-3.2.1/resources/images/default/layout/panel-close.gif +0 -0
  209. data/vendor/assets/javascripts/aloha/lib/vendor/ext-3.2.1/resources/images/default/layout/panel-title-bg.gif +0 -0
  210. data/vendor/assets/javascripts/aloha/lib/vendor/ext-3.2.1/resources/images/default/layout/panel-title-light-bg.gif +0 -0
  211. data/vendor/assets/javascripts/aloha/lib/vendor/ext-3.2.1/resources/images/default/layout/stick.gif +0 -0
  212. data/vendor/assets/javascripts/aloha/lib/vendor/ext-3.2.1/resources/images/default/layout/stuck.gif +0 -0
  213. data/vendor/assets/javascripts/aloha/lib/vendor/ext-3.2.1/resources/images/default/layout/tab-close-on.gif +0 -0
  214. data/vendor/assets/javascripts/aloha/lib/vendor/ext-3.2.1/resources/images/default/layout/tab-close.gif +0 -0
  215. data/vendor/assets/javascripts/aloha/lib/vendor/ext-3.2.1/resources/images/default/menu/checked.gif +0 -0
  216. data/vendor/assets/javascripts/aloha/lib/vendor/ext-3.2.1/resources/images/default/menu/group-checked.gif +0 -0
  217. data/vendor/assets/javascripts/aloha/lib/vendor/ext-3.2.1/resources/images/default/menu/item-over.gif +0 -0
  218. data/vendor/assets/javascripts/aloha/lib/vendor/ext-3.2.1/resources/images/default/menu/menu-parent.gif +0 -0
  219. data/vendor/assets/javascripts/aloha/lib/vendor/ext-3.2.1/resources/images/default/menu/menu.gif +0 -0
  220. data/vendor/assets/javascripts/aloha/lib/vendor/ext-3.2.1/resources/images/default/menu/unchecked.gif +0 -0
  221. data/vendor/assets/javascripts/aloha/lib/vendor/ext-3.2.1/resources/images/default/panel/corners-sprite.gif +0 -0
  222. data/vendor/assets/javascripts/aloha/lib/vendor/ext-3.2.1/resources/images/default/panel/left-right.gif +0 -0
  223. data/vendor/assets/javascripts/aloha/lib/vendor/ext-3.2.1/resources/images/default/panel/light-hd.gif +0 -0
  224. data/vendor/assets/javascripts/aloha/lib/vendor/ext-3.2.1/resources/images/default/panel/tool-sprite-tpl.gif +0 -0
  225. data/vendor/assets/javascripts/aloha/lib/vendor/ext-3.2.1/resources/images/default/panel/tool-sprites.gif +0 -0
  226. data/vendor/assets/javascripts/aloha/lib/vendor/ext-3.2.1/resources/images/default/panel/tools-sprites-trans.gif +0 -0
  227. data/vendor/assets/javascripts/aloha/lib/vendor/ext-3.2.1/resources/images/default/panel/top-bottom.gif +0 -0
  228. data/vendor/assets/javascripts/aloha/lib/vendor/ext-3.2.1/resources/images/default/panel/top-bottom.png +0 -0
  229. data/vendor/assets/javascripts/aloha/lib/vendor/ext-3.2.1/resources/images/default/panel/white-corners-sprite.gif +0 -0
  230. data/vendor/assets/javascripts/aloha/lib/vendor/ext-3.2.1/resources/images/default/panel/white-left-right.gif +0 -0
  231. data/vendor/assets/javascripts/aloha/lib/vendor/ext-3.2.1/resources/images/default/panel/white-top-bottom.gif +0 -0
  232. data/vendor/assets/javascripts/aloha/lib/vendor/ext-3.2.1/resources/images/default/progress/progress-bg.gif +0 -0
  233. data/vendor/assets/javascripts/aloha/lib/vendor/ext-3.2.1/resources/images/default/qtip/bg.gif +0 -0
  234. data/vendor/assets/javascripts/aloha/lib/vendor/ext-3.2.1/resources/images/default/qtip/close.gif +0 -0
  235. data/vendor/assets/javascripts/aloha/lib/vendor/ext-3.2.1/resources/images/default/qtip/tip-anchor-sprite.gif +0 -0
  236. data/vendor/assets/javascripts/aloha/lib/vendor/ext-3.2.1/resources/images/default/qtip/tip-sprite.gif +0 -0
  237. data/vendor/assets/javascripts/aloha/lib/vendor/ext-3.2.1/resources/images/default/s.gif +0 -0
  238. data/vendor/assets/javascripts/aloha/lib/vendor/ext-3.2.1/resources/images/default/shadow-c.png +0 -0
  239. data/vendor/assets/javascripts/aloha/lib/vendor/ext-3.2.1/resources/images/default/shadow-lr.png +0 -0
  240. data/vendor/assets/javascripts/aloha/lib/vendor/ext-3.2.1/resources/images/default/shadow.png +0 -0
  241. data/vendor/assets/javascripts/aloha/lib/vendor/ext-3.2.1/resources/images/default/shared/blue-loading.gif +0 -0
  242. data/vendor/assets/javascripts/aloha/lib/vendor/ext-3.2.1/resources/images/default/shared/calendar.gif +0 -0
  243. data/vendor/assets/javascripts/aloha/lib/vendor/ext-3.2.1/resources/images/default/shared/glass-bg.gif +0 -0
  244. data/vendor/assets/javascripts/aloha/lib/vendor/ext-3.2.1/resources/images/default/shared/hd-sprite.gif +0 -0
  245. data/vendor/assets/javascripts/aloha/lib/vendor/ext-3.2.1/resources/images/default/shared/large-loading.gif +0 -0
  246. data/vendor/assets/javascripts/aloha/lib/vendor/ext-3.2.1/resources/images/default/shared/left-btn.gif +0 -0
  247. data/vendor/assets/javascripts/aloha/lib/vendor/ext-3.2.1/resources/images/default/shared/loading-balls.gif +0 -0
  248. data/vendor/assets/javascripts/aloha/lib/vendor/ext-3.2.1/resources/images/default/shared/right-btn.gif +0 -0
  249. data/vendor/assets/javascripts/aloha/lib/vendor/ext-3.2.1/resources/images/default/shared/warning.gif +0 -0
  250. data/vendor/assets/javascripts/aloha/lib/vendor/ext-3.2.1/resources/images/default/sizer/e-handle-dark.gif +0 -0
  251. data/vendor/assets/javascripts/aloha/lib/vendor/ext-3.2.1/resources/images/default/sizer/e-handle.gif +0 -0
  252. data/vendor/assets/javascripts/aloha/lib/vendor/ext-3.2.1/resources/images/default/sizer/ne-handle-dark.gif +0 -0
  253. data/vendor/assets/javascripts/aloha/lib/vendor/ext-3.2.1/resources/images/default/sizer/ne-handle.gif +0 -0
  254. data/vendor/assets/javascripts/aloha/lib/vendor/ext-3.2.1/resources/images/default/sizer/nw-handle-dark.gif +0 -0
  255. data/vendor/assets/javascripts/aloha/lib/vendor/ext-3.2.1/resources/images/default/sizer/nw-handle.gif +0 -0
  256. data/vendor/assets/javascripts/aloha/lib/vendor/ext-3.2.1/resources/images/default/sizer/s-handle-dark.gif +0 -0
  257. data/vendor/assets/javascripts/aloha/lib/vendor/ext-3.2.1/resources/images/default/sizer/s-handle.gif +0 -0
  258. data/vendor/assets/javascripts/aloha/lib/vendor/ext-3.2.1/resources/images/default/sizer/se-handle-dark.gif +0 -0
  259. data/vendor/assets/javascripts/aloha/lib/vendor/ext-3.2.1/resources/images/default/sizer/se-handle.gif +0 -0
  260. data/vendor/assets/javascripts/aloha/lib/vendor/ext-3.2.1/resources/images/default/sizer/square.gif +0 -0
  261. data/vendor/assets/javascripts/aloha/lib/vendor/ext-3.2.1/resources/images/default/sizer/sw-handle-dark.gif +0 -0
  262. data/vendor/assets/javascripts/aloha/lib/vendor/ext-3.2.1/resources/images/default/sizer/sw-handle.gif +0 -0
  263. data/vendor/assets/javascripts/aloha/lib/vendor/ext-3.2.1/resources/images/default/slider/slider-bg.png +0 -0
  264. data/vendor/assets/javascripts/aloha/lib/vendor/ext-3.2.1/resources/images/default/slider/slider-thumb.png +0 -0
  265. data/vendor/assets/javascripts/aloha/lib/vendor/ext-3.2.1/resources/images/default/slider/slider-v-bg.png +0 -0
  266. data/vendor/assets/javascripts/aloha/lib/vendor/ext-3.2.1/resources/images/default/slider/slider-v-thumb.png +0 -0
  267. data/vendor/assets/javascripts/aloha/lib/vendor/ext-3.2.1/resources/images/default/tabs/scroll-left.gif +0 -0
  268. data/vendor/assets/javascripts/aloha/lib/vendor/ext-3.2.1/resources/images/default/tabs/scroll-right.gif +0 -0
  269. data/vendor/assets/javascripts/aloha/lib/vendor/ext-3.2.1/resources/images/default/tabs/scroller-bg.gif +0 -0
  270. data/vendor/assets/javascripts/aloha/lib/vendor/ext-3.2.1/resources/images/default/tabs/tab-btm-inactive-left-bg.gif +0 -0
  271. data/vendor/assets/javascripts/aloha/lib/vendor/ext-3.2.1/resources/images/default/tabs/tab-btm-inactive-right-bg.gif +0 -0
  272. data/vendor/assets/javascripts/aloha/lib/vendor/ext-3.2.1/resources/images/default/tabs/tab-btm-left-bg.gif +0 -0
  273. data/vendor/assets/javascripts/aloha/lib/vendor/ext-3.2.1/resources/images/default/tabs/tab-btm-over-left-bg.gif +0 -0
  274. data/vendor/assets/javascripts/aloha/lib/vendor/ext-3.2.1/resources/images/default/tabs/tab-btm-over-right-bg.gif +0 -0
  275. data/vendor/assets/javascripts/aloha/lib/vendor/ext-3.2.1/resources/images/default/tabs/tab-btm-right-bg.gif +0 -0
  276. data/vendor/assets/javascripts/aloha/lib/vendor/ext-3.2.1/resources/images/default/tabs/tab-close.gif +0 -0
  277. data/vendor/assets/javascripts/aloha/lib/vendor/ext-3.2.1/resources/images/default/tabs/tab-strip-bg.gif +0 -0
  278. data/vendor/assets/javascripts/aloha/lib/vendor/ext-3.2.1/resources/images/default/tabs/tab-strip-bg.png +0 -0
  279. data/vendor/assets/javascripts/aloha/lib/vendor/ext-3.2.1/resources/images/default/tabs/tab-strip-btm-bg.gif +0 -0
  280. data/vendor/assets/javascripts/aloha/lib/vendor/ext-3.2.1/resources/images/default/tabs/tabs-sprite.gif +0 -0
  281. data/vendor/assets/javascripts/aloha/lib/vendor/ext-3.2.1/resources/images/default/toolbar/bg.gif +0 -0
  282. data/vendor/assets/javascripts/aloha/lib/vendor/ext-3.2.1/resources/images/default/toolbar/btn-arrow-light.gif +0 -0
  283. data/vendor/assets/javascripts/aloha/lib/vendor/ext-3.2.1/resources/images/default/toolbar/btn-arrow.gif +0 -0
  284. data/vendor/assets/javascripts/aloha/lib/vendor/ext-3.2.1/resources/images/default/toolbar/btn-over-bg.gif +0 -0
  285. data/vendor/assets/javascripts/aloha/lib/vendor/ext-3.2.1/resources/images/default/toolbar/gray-bg.gif +0 -0
  286. data/vendor/assets/javascripts/aloha/lib/vendor/ext-3.2.1/resources/images/default/toolbar/more.gif +0 -0
  287. data/vendor/assets/javascripts/aloha/lib/vendor/ext-3.2.1/resources/images/default/toolbar/tb-bg.gif +0 -0
  288. data/vendor/assets/javascripts/aloha/lib/vendor/ext-3.2.1/resources/images/default/toolbar/tb-btn-sprite.gif +0 -0
  289. data/vendor/assets/javascripts/aloha/lib/vendor/ext-3.2.1/resources/images/default/toolbar/tb-xl-btn-sprite.gif +0 -0
  290. data/vendor/assets/javascripts/aloha/lib/vendor/ext-3.2.1/resources/images/default/toolbar/tb-xl-sep.gif +0 -0
  291. data/vendor/assets/javascripts/aloha/lib/vendor/ext-3.2.1/resources/images/default/tree/arrows.gif +0 -0
  292. data/vendor/assets/javascripts/aloha/lib/vendor/ext-3.2.1/resources/images/default/tree/drop-add.gif +0 -0
  293. data/vendor/assets/javascripts/aloha/lib/vendor/ext-3.2.1/resources/images/default/tree/drop-between.gif +0 -0
  294. data/vendor/assets/javascripts/aloha/lib/vendor/ext-3.2.1/resources/images/default/tree/drop-no.gif +0 -0
  295. data/vendor/assets/javascripts/aloha/lib/vendor/ext-3.2.1/resources/images/default/tree/drop-over.gif +0 -0
  296. data/vendor/assets/javascripts/aloha/lib/vendor/ext-3.2.1/resources/images/default/tree/drop-under.gif +0 -0
  297. data/vendor/assets/javascripts/aloha/lib/vendor/ext-3.2.1/resources/images/default/tree/drop-yes.gif +0 -0
  298. data/vendor/assets/javascripts/aloha/lib/vendor/ext-3.2.1/resources/images/default/tree/elbow-end-minus-nl.gif +0 -0
  299. data/vendor/assets/javascripts/aloha/lib/vendor/ext-3.2.1/resources/images/default/tree/elbow-end-minus.gif +0 -0
  300. data/vendor/assets/javascripts/aloha/lib/vendor/ext-3.2.1/resources/images/default/tree/elbow-end-plus-nl.gif +0 -0
  301. data/vendor/assets/javascripts/aloha/lib/vendor/ext-3.2.1/resources/images/default/tree/elbow-end-plus.gif +0 -0
  302. data/vendor/assets/javascripts/aloha/lib/vendor/ext-3.2.1/resources/images/default/tree/elbow-end.gif +0 -0
  303. data/vendor/assets/javascripts/aloha/lib/vendor/ext-3.2.1/resources/images/default/tree/elbow-line.gif +0 -0
  304. data/vendor/assets/javascripts/aloha/lib/vendor/ext-3.2.1/resources/images/default/tree/elbow-minus-nl.gif +0 -0
  305. data/vendor/assets/javascripts/aloha/lib/vendor/ext-3.2.1/resources/images/default/tree/elbow-minus.gif +0 -0
  306. data/vendor/assets/javascripts/aloha/lib/vendor/ext-3.2.1/resources/images/default/tree/elbow-plus-nl.gif +0 -0
  307. data/vendor/assets/javascripts/aloha/lib/vendor/ext-3.2.1/resources/images/default/tree/elbow-plus.gif +0 -0
  308. data/vendor/assets/javascripts/aloha/lib/vendor/ext-3.2.1/resources/images/default/tree/elbow.gif +0 -0
  309. data/vendor/assets/javascripts/aloha/lib/vendor/ext-3.2.1/resources/images/default/tree/folder-open.gif +0 -0
  310. data/vendor/assets/javascripts/aloha/lib/vendor/ext-3.2.1/resources/images/default/tree/folder.gif +0 -0
  311. data/vendor/assets/javascripts/aloha/lib/vendor/ext-3.2.1/resources/images/default/tree/leaf.gif +0 -0
  312. data/vendor/assets/javascripts/aloha/lib/vendor/ext-3.2.1/resources/images/default/tree/loading.gif +0 -0
  313. data/vendor/assets/javascripts/aloha/lib/vendor/ext-3.2.1/resources/images/default/tree/s.gif +0 -0
  314. data/vendor/assets/javascripts/aloha/lib/vendor/ext-3.2.1/resources/images/default/window/icon-error.gif +0 -0
  315. data/vendor/assets/javascripts/aloha/lib/vendor/ext-3.2.1/resources/images/default/window/icon-info.gif +0 -0
  316. data/vendor/assets/javascripts/aloha/lib/vendor/ext-3.2.1/resources/images/default/window/icon-question.gif +0 -0
  317. data/vendor/assets/javascripts/aloha/lib/vendor/ext-3.2.1/resources/images/default/window/icon-warning.gif +0 -0
  318. data/vendor/assets/javascripts/aloha/lib/vendor/ext-3.2.1/resources/images/default/window/left-corners.png +0 -0
  319. data/vendor/assets/javascripts/aloha/lib/vendor/ext-3.2.1/resources/images/default/window/left-corners.psd +0 -0
  320. data/vendor/assets/javascripts/aloha/lib/vendor/ext-3.2.1/resources/images/default/window/left-right.png +0 -0
  321. data/vendor/assets/javascripts/aloha/lib/vendor/ext-3.2.1/resources/images/default/window/left-right.psd +0 -0
  322. data/vendor/assets/javascripts/aloha/lib/vendor/ext-3.2.1/resources/images/default/window/right-corners.png +0 -0
  323. data/vendor/assets/javascripts/aloha/lib/vendor/ext-3.2.1/resources/images/default/window/right-corners.psd +0 -0
  324. data/vendor/assets/javascripts/aloha/lib/vendor/ext-3.2.1/resources/images/default/window/top-bottom.png +0 -0
  325. data/vendor/assets/javascripts/aloha/lib/vendor/ext-3.2.1/resources/images/default/window/top-bottom.psd +0 -0
  326. data/vendor/assets/javascripts/aloha/lib/vendor/ext-3.2.1/resources/images/gray/button/btn-arrow.gif +0 -0
  327. data/vendor/assets/javascripts/aloha/lib/vendor/ext-3.2.1/resources/images/gray/button/btn-sprite.gif +0 -0
  328. data/vendor/assets/javascripts/aloha/lib/vendor/ext-3.2.1/resources/images/gray/button/btn.gif +0 -0
  329. data/vendor/assets/javascripts/aloha/lib/vendor/ext-3.2.1/resources/images/gray/button/group-cs.gif +0 -0
  330. data/vendor/assets/javascripts/aloha/lib/vendor/ext-3.2.1/resources/images/gray/button/group-lr.gif +0 -0
  331. data/vendor/assets/javascripts/aloha/lib/vendor/ext-3.2.1/resources/images/gray/button/group-tb.gif +0 -0
  332. data/vendor/assets/javascripts/aloha/lib/vendor/ext-3.2.1/resources/images/gray/button/s-arrow-bo.gif +0 -0
  333. data/vendor/assets/javascripts/aloha/lib/vendor/ext-3.2.1/resources/images/gray/button/s-arrow-o.gif +0 -0
  334. data/vendor/assets/javascripts/aloha/lib/vendor/ext-3.2.1/resources/images/gray/form/clear-trigger.gif +0 -0
  335. data/vendor/assets/javascripts/aloha/lib/vendor/ext-3.2.1/resources/images/gray/form/date-trigger.gif +0 -0
  336. data/vendor/assets/javascripts/aloha/lib/vendor/ext-3.2.1/resources/images/gray/form/search-trigger.gif +0 -0
  337. data/vendor/assets/javascripts/aloha/lib/vendor/ext-3.2.1/resources/images/gray/form/trigger-square.gif +0 -0
  338. data/vendor/assets/javascripts/aloha/lib/vendor/ext-3.2.1/resources/images/gray/form/trigger.gif +0 -0
  339. data/vendor/assets/javascripts/aloha/lib/vendor/ext-3.2.1/resources/images/gray/gradient-bg.gif +0 -0
  340. data/vendor/assets/javascripts/aloha/lib/vendor/ext-3.2.1/resources/images/gray/grid/col-move-bottom.gif +0 -0
  341. data/vendor/assets/javascripts/aloha/lib/vendor/ext-3.2.1/resources/images/gray/grid/col-move-top.gif +0 -0
  342. data/vendor/assets/javascripts/aloha/lib/vendor/ext-3.2.1/resources/images/gray/grid/grid3-hd-btn.gif +0 -0
  343. data/vendor/assets/javascripts/aloha/lib/vendor/ext-3.2.1/resources/images/gray/grid/grid3-hrow-over.gif +0 -0
  344. data/vendor/assets/javascripts/aloha/lib/vendor/ext-3.2.1/resources/images/gray/grid/grid3-hrow-over2.gif +0 -0
  345. data/vendor/assets/javascripts/aloha/lib/vendor/ext-3.2.1/resources/images/gray/grid/grid3-hrow.gif +0 -0
  346. data/vendor/assets/javascripts/aloha/lib/vendor/ext-3.2.1/resources/images/gray/grid/grid3-hrow2.gif +0 -0
  347. data/vendor/assets/javascripts/aloha/lib/vendor/ext-3.2.1/resources/images/gray/grid/grid3-special-col-bg.gif +0 -0
  348. data/vendor/assets/javascripts/aloha/lib/vendor/ext-3.2.1/resources/images/gray/grid/grid3-special-col-bg2.gif +0 -0
  349. data/vendor/assets/javascripts/aloha/lib/vendor/ext-3.2.1/resources/images/gray/grid/grid3-special-col-sel-bg.gif +0 -0
  350. data/vendor/assets/javascripts/aloha/lib/vendor/ext-3.2.1/resources/images/gray/grid/group-collapse.gif +0 -0
  351. data/vendor/assets/javascripts/aloha/lib/vendor/ext-3.2.1/resources/images/gray/grid/group-expand-sprite.gif +0 -0
  352. data/vendor/assets/javascripts/aloha/lib/vendor/ext-3.2.1/resources/images/gray/grid/group-expand.gif +0 -0
  353. data/vendor/assets/javascripts/aloha/lib/vendor/ext-3.2.1/resources/images/gray/grid/page-first.gif +0 -0
  354. data/vendor/assets/javascripts/aloha/lib/vendor/ext-3.2.1/resources/images/gray/grid/page-last.gif +0 -0
  355. data/vendor/assets/javascripts/aloha/lib/vendor/ext-3.2.1/resources/images/gray/grid/page-next.gif +0 -0
  356. data/vendor/assets/javascripts/aloha/lib/vendor/ext-3.2.1/resources/images/gray/grid/page-prev.gif +0 -0
  357. data/vendor/assets/javascripts/aloha/lib/vendor/ext-3.2.1/resources/images/gray/grid/refresh.gif +0 -0
  358. data/vendor/assets/javascripts/aloha/lib/vendor/ext-3.2.1/resources/images/gray/grid/row-expand-sprite.gif +0 -0
  359. data/vendor/assets/javascripts/aloha/lib/vendor/ext-3.2.1/resources/images/gray/grid/sort_asc.gif +0 -0
  360. data/vendor/assets/javascripts/aloha/lib/vendor/ext-3.2.1/resources/images/gray/grid/sort_desc.gif +0 -0
  361. data/vendor/assets/javascripts/aloha/lib/vendor/ext-3.2.1/resources/images/gray/menu/group-checked.gif +0 -0
  362. data/vendor/assets/javascripts/aloha/lib/vendor/ext-3.2.1/resources/images/gray/menu/item-over-disabled.gif +0 -0
  363. data/vendor/assets/javascripts/aloha/lib/vendor/ext-3.2.1/resources/images/gray/menu/item-over.gif +0 -0
  364. data/vendor/assets/javascripts/aloha/lib/vendor/ext-3.2.1/resources/images/gray/menu/menu-parent.gif +0 -0
  365. data/vendor/assets/javascripts/aloha/lib/vendor/ext-3.2.1/resources/images/gray/panel/corners-sprite.gif +0 -0
  366. data/vendor/assets/javascripts/aloha/lib/vendor/ext-3.2.1/resources/images/gray/panel/left-right.gif +0 -0
  367. data/vendor/assets/javascripts/aloha/lib/vendor/ext-3.2.1/resources/images/gray/panel/light-hd.gif +0 -0
  368. data/vendor/assets/javascripts/aloha/lib/vendor/ext-3.2.1/resources/images/gray/panel/tool-sprite-tpl.gif +0 -0
  369. data/vendor/assets/javascripts/aloha/lib/vendor/ext-3.2.1/resources/images/gray/panel/tool-sprites.gif +0 -0
  370. data/vendor/assets/javascripts/aloha/lib/vendor/ext-3.2.1/resources/images/gray/panel/tools-sprites-trans.gif +0 -0
  371. data/vendor/assets/javascripts/aloha/lib/vendor/ext-3.2.1/resources/images/gray/panel/top-bottom.gif +0 -0
  372. data/vendor/assets/javascripts/aloha/lib/vendor/ext-3.2.1/resources/images/gray/panel/top-bottom.png +0 -0
  373. data/vendor/assets/javascripts/aloha/lib/vendor/ext-3.2.1/resources/images/gray/panel/white-corners-sprite.gif +0 -0
  374. data/vendor/assets/javascripts/aloha/lib/vendor/ext-3.2.1/resources/images/gray/panel/white-left-right.gif +0 -0
  375. data/vendor/assets/javascripts/aloha/lib/vendor/ext-3.2.1/resources/images/gray/panel/white-top-bottom.gif +0 -0
  376. data/vendor/assets/javascripts/aloha/lib/vendor/ext-3.2.1/resources/images/gray/progress/progress-bg.gif +0 -0
  377. data/vendor/assets/javascripts/aloha/lib/vendor/ext-3.2.1/resources/images/gray/qtip/bg.gif +0 -0
  378. data/vendor/assets/javascripts/aloha/lib/vendor/ext-3.2.1/resources/images/gray/qtip/close.gif +0 -0
  379. data/vendor/assets/javascripts/aloha/lib/vendor/ext-3.2.1/resources/images/gray/qtip/tip-anchor-sprite.gif +0 -0
  380. data/vendor/assets/javascripts/aloha/lib/vendor/ext-3.2.1/resources/images/gray/qtip/tip-sprite.gif +0 -0
  381. data/vendor/assets/javascripts/aloha/lib/vendor/ext-3.2.1/resources/images/gray/s.gif +0 -0
  382. data/vendor/assets/javascripts/aloha/lib/vendor/ext-3.2.1/resources/images/gray/shared/hd-sprite.gif +0 -0
  383. data/vendor/assets/javascripts/aloha/lib/vendor/ext-3.2.1/resources/images/gray/shared/left-btn.gif +0 -0
  384. data/vendor/assets/javascripts/aloha/lib/vendor/ext-3.2.1/resources/images/gray/shared/right-btn.gif +0 -0
  385. data/vendor/assets/javascripts/aloha/lib/vendor/ext-3.2.1/resources/images/gray/sizer/e-handle.gif +0 -0
  386. data/vendor/assets/javascripts/aloha/lib/vendor/ext-3.2.1/resources/images/gray/sizer/ne-handle.gif +0 -0
  387. data/vendor/assets/javascripts/aloha/lib/vendor/ext-3.2.1/resources/images/gray/sizer/nw-handle.gif +0 -0
  388. data/vendor/assets/javascripts/aloha/lib/vendor/ext-3.2.1/resources/images/gray/sizer/s-handle.gif +0 -0
  389. data/vendor/assets/javascripts/aloha/lib/vendor/ext-3.2.1/resources/images/gray/sizer/se-handle.gif +0 -0
  390. data/vendor/assets/javascripts/aloha/lib/vendor/ext-3.2.1/resources/images/gray/sizer/square.gif +0 -0
  391. data/vendor/assets/javascripts/aloha/lib/vendor/ext-3.2.1/resources/images/gray/sizer/sw-handle.gif +0 -0
  392. data/vendor/assets/javascripts/aloha/lib/vendor/ext-3.2.1/resources/images/gray/slider/slider-thumb.png +0 -0
  393. data/vendor/assets/javascripts/aloha/lib/vendor/ext-3.2.1/resources/images/gray/slider/slider-v-thumb.png +0 -0
  394. data/vendor/assets/javascripts/aloha/lib/vendor/ext-3.2.1/resources/images/gray/tabs/scroll-left.gif +0 -0
  395. data/vendor/assets/javascripts/aloha/lib/vendor/ext-3.2.1/resources/images/gray/tabs/scroll-right.gif +0 -0
  396. data/vendor/assets/javascripts/aloha/lib/vendor/ext-3.2.1/resources/images/gray/tabs/scroller-bg.gif +0 -0
  397. data/vendor/assets/javascripts/aloha/lib/vendor/ext-3.2.1/resources/images/gray/tabs/tab-btm-inactive-left-bg.gif +0 -0
  398. data/vendor/assets/javascripts/aloha/lib/vendor/ext-3.2.1/resources/images/gray/tabs/tab-btm-inactive-right-bg.gif +0 -0
  399. data/vendor/assets/javascripts/aloha/lib/vendor/ext-3.2.1/resources/images/gray/tabs/tab-btm-left-bg.gif +0 -0
  400. data/vendor/assets/javascripts/aloha/lib/vendor/ext-3.2.1/resources/images/gray/tabs/tab-btm-over-left-bg.gif +0 -0
  401. data/vendor/assets/javascripts/aloha/lib/vendor/ext-3.2.1/resources/images/gray/tabs/tab-btm-over-right-bg.gif +0 -0
  402. data/vendor/assets/javascripts/aloha/lib/vendor/ext-3.2.1/resources/images/gray/tabs/tab-btm-right-bg.gif +0 -0
  403. data/vendor/assets/javascripts/aloha/lib/vendor/ext-3.2.1/resources/images/gray/tabs/tab-close.gif +0 -0
  404. data/vendor/assets/javascripts/aloha/lib/vendor/ext-3.2.1/resources/images/gray/tabs/tab-strip-bg.gif +0 -0
  405. data/vendor/assets/javascripts/aloha/lib/vendor/ext-3.2.1/resources/images/gray/tabs/tab-strip-bg.png +0 -0
  406. data/vendor/assets/javascripts/aloha/lib/vendor/ext-3.2.1/resources/images/gray/tabs/tab-strip-btm-bg.gif +0 -0
  407. data/vendor/assets/javascripts/aloha/lib/vendor/ext-3.2.1/resources/images/gray/tabs/tabs-sprite.gif +0 -0
  408. data/vendor/assets/javascripts/aloha/lib/vendor/ext-3.2.1/resources/images/gray/toolbar/bg.gif +0 -0
  409. data/vendor/assets/javascripts/aloha/lib/vendor/ext-3.2.1/resources/images/gray/toolbar/btn-arrow-light.gif +0 -0
  410. data/vendor/assets/javascripts/aloha/lib/vendor/ext-3.2.1/resources/images/gray/toolbar/btn-arrow.gif +0 -0
  411. data/vendor/assets/javascripts/aloha/lib/vendor/ext-3.2.1/resources/images/gray/toolbar/btn-over-bg.gif +0 -0
  412. data/vendor/assets/javascripts/aloha/lib/vendor/ext-3.2.1/resources/images/gray/toolbar/gray-bg.gif +0 -0
  413. data/vendor/assets/javascripts/aloha/lib/vendor/ext-3.2.1/resources/images/gray/toolbar/more.gif +0 -0
  414. data/vendor/assets/javascripts/aloha/lib/vendor/ext-3.2.1/resources/images/gray/toolbar/tb-bg.gif +0 -0
  415. data/vendor/assets/javascripts/aloha/lib/vendor/ext-3.2.1/resources/images/gray/toolbar/tb-btn-sprite.gif +0 -0
  416. data/vendor/assets/javascripts/aloha/lib/vendor/ext-3.2.1/resources/images/gray/tree/arrows.gif +0 -0
  417. data/vendor/assets/javascripts/aloha/lib/vendor/ext-3.2.1/resources/images/gray/tree/elbow-end-minus-nl.gif +0 -0
  418. data/vendor/assets/javascripts/aloha/lib/vendor/ext-3.2.1/resources/images/gray/tree/elbow-end-minus.gif +0 -0
  419. data/vendor/assets/javascripts/aloha/lib/vendor/ext-3.2.1/resources/images/gray/tree/elbow-end-plus-nl.gif +0 -0
  420. data/vendor/assets/javascripts/aloha/lib/vendor/ext-3.2.1/resources/images/gray/tree/elbow-end-plus.gif +0 -0
  421. data/vendor/assets/javascripts/aloha/lib/vendor/ext-3.2.1/resources/images/gray/window/icon-error.gif +0 -0
  422. data/vendor/assets/javascripts/aloha/lib/vendor/ext-3.2.1/resources/images/gray/window/icon-info.gif +0 -0
  423. data/vendor/assets/javascripts/aloha/lib/vendor/ext-3.2.1/resources/images/gray/window/icon-question.gif +0 -0
  424. data/vendor/assets/javascripts/aloha/lib/vendor/ext-3.2.1/resources/images/gray/window/icon-warning.gif +0 -0
  425. data/vendor/assets/javascripts/aloha/lib/vendor/ext-3.2.1/resources/images/gray/window/left-corners.png +0 -0
  426. data/vendor/assets/javascripts/aloha/lib/vendor/ext-3.2.1/resources/images/gray/window/left-corners.pspimage +0 -0
  427. data/vendor/assets/javascripts/aloha/lib/vendor/ext-3.2.1/resources/images/gray/window/left-right.png +0 -0
  428. data/vendor/assets/javascripts/aloha/lib/vendor/ext-3.2.1/resources/images/gray/window/right-corners.png +0 -0
  429. data/vendor/assets/javascripts/aloha/lib/vendor/ext-3.2.1/resources/images/gray/window/top-bottom.png +0 -0
  430. data/vendor/assets/javascripts/aloha/lib/vendor/ext-3.2.1/resources/resources.jsb +507 -0
  431. data/vendor/assets/javascripts/aloha/lib/vendor/jquery-1.6.1.js +8936 -0
  432. data/vendor/assets/javascripts/aloha/lib/vendor/jquery.json-2.2.min.js +33 -0
  433. data/vendor/assets/javascripts/aloha/lib/vendor/jquery.store.js +446 -0
  434. data/vendor/assets/javascripts/aloha/lib/vendor/sanitize.js +267 -0
  435. data/vendor/assets/javascripts/aloha/plugins/common/abbr/css/abbr.css +0 -0
  436. data/vendor/assets/javascripts/aloha/plugins/common/abbr/lib/abbr-plugin.js +293 -0
  437. data/vendor/assets/javascripts/aloha/plugins/common/abbr/nls/de/i18n.js +1 -0
  438. data/vendor/assets/javascripts/aloha/plugins/common/abbr/nls/i18n.js +4 -0
  439. data/vendor/assets/javascripts/aloha/plugins/common/abbr/package.json +1 -0
  440. data/vendor/assets/javascripts/aloha/plugins/common/align/LICENSE +166 -0
  441. data/vendor/assets/javascripts/aloha/plugins/common/align/README +12 -0
  442. data/vendor/assets/javascripts/aloha/plugins/common/align/css/align.css +19 -0
  443. data/vendor/assets/javascripts/aloha/plugins/common/align/img/align.png +0 -0
  444. data/vendor/assets/javascripts/aloha/plugins/common/align/lib/align-plugin.js +345 -0
  445. data/vendor/assets/javascripts/aloha/plugins/common/align/nls/en/i18n.js +1 -0
  446. data/vendor/assets/javascripts/aloha/plugins/common/align/nls/fr/i18n.js +1 -0
  447. data/vendor/assets/javascripts/aloha/plugins/common/align/nls/i18n.js +6 -0
  448. data/vendor/assets/javascripts/aloha/plugins/common/align/package.json +2 -0
  449. data/vendor/assets/javascripts/aloha/plugins/common/block/README +0 -0
  450. data/vendor/assets/javascripts/aloha/plugins/common/block/css/block.css +51 -0
  451. data/vendor/assets/javascripts/aloha/plugins/common/block/img/toolbar-draghandle.gif +0 -0
  452. data/vendor/assets/javascripts/aloha/plugins/common/block/lib/block-plugin.js +104 -0
  453. data/vendor/assets/javascripts/aloha/plugins/common/block/lib/block.js +442 -0
  454. data/vendor/assets/javascripts/aloha/plugins/common/block/lib/blockcontenthandler.js +58 -0
  455. data/vendor/assets/javascripts/aloha/plugins/common/block/lib/blockmanager.js +242 -0
  456. data/vendor/assets/javascripts/aloha/plugins/common/block/lib/editor.js +209 -0
  457. data/vendor/assets/javascripts/aloha/plugins/common/block/lib/editormanager.js +34 -0
  458. data/vendor/assets/javascripts/aloha/plugins/common/block/lib/sidebarattributeeditor.js +119 -0
  459. data/vendor/assets/javascripts/aloha/plugins/common/block/package.json +11 -0
  460. data/vendor/assets/javascripts/aloha/plugins/common/characterpicker/css/characterpicker.css +38 -0
  461. data/vendor/assets/javascripts/aloha/plugins/common/characterpicker/img/icon.png +0 -0
  462. data/vendor/assets/javascripts/aloha/plugins/common/characterpicker/lib/characterpicker-plugin.js +227 -0
  463. data/vendor/assets/javascripts/aloha/plugins/common/characterpicker/nls/de/i18n.js +1 -0
  464. data/vendor/assets/javascripts/aloha/plugins/common/characterpicker/nls/i18n.js +4 -0
  465. data/vendor/assets/javascripts/aloha/plugins/common/commands/css/abbr.css +0 -0
  466. data/vendor/assets/javascripts/aloha/plugins/common/commands/lib/commands-plugin.js +15 -0
  467. data/vendor/assets/javascripts/aloha/plugins/common/commands/lib/inserthtml.js +107 -0
  468. data/vendor/assets/javascripts/aloha/plugins/common/commands/package.json +1 -0
  469. data/vendor/assets/javascripts/aloha/plugins/common/contenthandler/README.md +0 -0
  470. data/vendor/assets/javascripts/aloha/plugins/common/contenthandler/lib/contenthandler-plugin.js +54 -0
  471. data/vendor/assets/javascripts/aloha/plugins/common/contenthandler/lib/genericcontenthandler.js +255 -0
  472. data/vendor/assets/javascripts/aloha/plugins/common/contenthandler/lib/oembedcontenthandler.js +276 -0
  473. data/vendor/assets/javascripts/aloha/plugins/common/contenthandler/lib/sanitizecontenthandler.js +136 -0
  474. data/vendor/assets/javascripts/aloha/plugins/common/contenthandler/lib/wordcontenthandler.js +279 -0
  475. data/vendor/assets/javascripts/aloha/plugins/common/contenthandler/package.json +1 -0
  476. data/vendor/assets/javascripts/aloha/plugins/common/format/css/format.css +8 -0
  477. data/vendor/assets/javascripts/aloha/plugins/common/format/img/em.png +0 -0
  478. data/vendor/assets/javascripts/aloha/plugins/common/format/img/strong.png +0 -0
  479. data/vendor/assets/javascripts/aloha/plugins/common/format/lib/format-plugin.js +303 -0
  480. data/vendor/assets/javascripts/aloha/plugins/common/format/nls/de/i18n.js +1 -0
  481. data/vendor/assets/javascripts/aloha/plugins/common/format/nls/eo/i18n.js +1 -0
  482. data/vendor/assets/javascripts/aloha/plugins/common/format/nls/fi/i18n.js +1 -0
  483. data/vendor/assets/javascripts/aloha/plugins/common/format/nls/fr/i18n.js +1 -0
  484. data/vendor/assets/javascripts/aloha/plugins/common/format/nls/i18n.js +10 -0
  485. data/vendor/assets/javascripts/aloha/plugins/common/format/nls/it/i18n.js +1 -0
  486. data/vendor/assets/javascripts/aloha/plugins/common/format/nls/pl/i18n.js +1 -0
  487. data/vendor/assets/javascripts/aloha/plugins/common/format/nls/ru/i18n.js +1 -0
  488. data/vendor/assets/javascripts/aloha/plugins/common/highlighteditables/css/highlighteditables.css +14 -0
  489. data/vendor/assets/javascripts/aloha/plugins/common/highlighteditables/lib/highlighteditables-plugin.js +72 -0
  490. data/vendor/assets/javascripts/aloha/plugins/common/highlighteditables/package.json +1 -0
  491. data/vendor/assets/javascripts/aloha/plugins/common/horizontalruler/css/horizontalruler.css +4 -0
  492. data/vendor/assets/javascripts/aloha/plugins/common/horizontalruler/img/icon.png +0 -0
  493. data/vendor/assets/javascripts/aloha/plugins/common/horizontalruler/lib/horizontalruler-plugin.js +55 -0
  494. data/vendor/assets/javascripts/aloha/plugins/common/horizontalruler/nls/de/i18n.js +1 -0
  495. data/vendor/assets/javascripts/aloha/plugins/common/horizontalruler/nls/i18n.js +4 -0
  496. data/vendor/assets/javascripts/aloha/plugins/common/image/AGPL3 +661 -0
  497. data/vendor/assets/javascripts/aloha/plugins/common/image/LICENSE +25 -0
  498. data/vendor/assets/javascripts/aloha/plugins/common/image/README.md +83 -0
  499. data/vendor/assets/javascripts/aloha/plugins/common/image/css/image.css +124 -0
  500. data/vendor/assets/javascripts/aloha/plugins/common/image/demo/crop.html +76 -0
  501. data/vendor/assets/javascripts/aloha/plugins/common/image/demo/crop.php +21 -0
  502. data/vendor/assets/javascripts/aloha/plugins/common/image/demo/cropnresize.jpg +0 -0
  503. data/vendor/assets/javascripts/aloha/plugins/common/image/demo/index.html +120 -0
  504. data/vendor/assets/javascripts/aloha/plugins/common/image/img/blank.jpg +0 -0
  505. data/vendor/assets/javascripts/aloha/plugins/common/image/img/cropnresize.png +0 -0
  506. data/vendor/assets/javascripts/aloha/plugins/common/image/img/handle-sw.png +0 -0
  507. data/vendor/assets/javascripts/aloha/plugins/common/image/img/image-align-left.png +0 -0
  508. data/vendor/assets/javascripts/aloha/plugins/common/image/img/image-align-none.png +0 -0
  509. data/vendor/assets/javascripts/aloha/plugins/common/image/img/image-align-right.png +0 -0
  510. data/vendor/assets/javascripts/aloha/plugins/common/image/img/image-border.png +0 -0
  511. data/vendor/assets/javascripts/aloha/plugins/common/image/img/image-title.png +0 -0
  512. data/vendor/assets/javascripts/aloha/plugins/common/image/img/image.gif +0 -0
  513. data/vendor/assets/javascripts/aloha/plugins/common/image/img/padding-decrease.gif +0 -0
  514. data/vendor/assets/javascripts/aloha/plugins/common/image/img/padding-increase.gif +0 -0
  515. data/vendor/assets/javascripts/aloha/plugins/common/image/img/page.png +0 -0
  516. data/vendor/assets/javascripts/aloha/plugins/common/image/img/size-decrease.gif +0 -0
  517. data/vendor/assets/javascripts/aloha/plugins/common/image/img/size-increase.gif +0 -0
  518. data/vendor/assets/javascripts/aloha/plugins/common/image/lib/image-plugin.js +1615 -0
  519. data/vendor/assets/javascripts/aloha/plugins/common/image/nls/cz/i18n.js +16 -0
  520. data/vendor/assets/javascripts/aloha/plugins/common/image/nls/de/i18n.js +1 -0
  521. data/vendor/assets/javascripts/aloha/plugins/common/image/nls/fr/i18n.js +1 -0
  522. data/vendor/assets/javascripts/aloha/plugins/common/image/nls/i18n.js +7 -0
  523. data/vendor/assets/javascripts/aloha/plugins/common/image/nls/ru/i18n.js +16 -0
  524. data/vendor/assets/javascripts/aloha/plugins/common/image/package.json +1 -0
  525. data/vendor/assets/javascripts/aloha/plugins/common/image/test/test.css +12 -0
  526. data/vendor/assets/javascripts/aloha/plugins/common/image/test/test.html +40 -0
  527. data/vendor/assets/javascripts/aloha/plugins/common/image/vendor/jcrop/jcrop.gif +0 -0
  528. data/vendor/assets/javascripts/aloha/plugins/common/image/vendor/jcrop/jquery.jcrop.css +35 -0
  529. data/vendor/assets/javascripts/aloha/plugins/common/image/vendor/jcrop/jquery.jcrop.min.js +163 -0
  530. data/vendor/assets/javascripts/aloha/plugins/common/image/vendor/mousewheel/mousewheel.js +60 -0
  531. data/vendor/assets/javascripts/aloha/plugins/common/image/vendor/ui/jquery-ui-1.8.10.custom.min.js +97 -0
  532. data/vendor/assets/javascripts/aloha/plugins/common/image/vendor/ui/ui-lightness/images/ui-bg_diagonals-thick_18_b81900_40x40.png +0 -0
  533. data/vendor/assets/javascripts/aloha/plugins/common/image/vendor/ui/ui-lightness/images/ui-bg_diagonals-thick_20_666666_40x40.png +0 -0
  534. data/vendor/assets/javascripts/aloha/plugins/common/image/vendor/ui/ui-lightness/images/ui-bg_flat_10_000000_40x100.png +0 -0
  535. data/vendor/assets/javascripts/aloha/plugins/common/image/vendor/ui/ui-lightness/images/ui-bg_glass_100_f6f6f6_1x400.png +0 -0
  536. data/vendor/assets/javascripts/aloha/plugins/common/image/vendor/ui/ui-lightness/images/ui-bg_glass_100_fdf5ce_1x400.png +0 -0
  537. data/vendor/assets/javascripts/aloha/plugins/common/image/vendor/ui/ui-lightness/images/ui-bg_glass_65_ffffff_1x400.png +0 -0
  538. data/vendor/assets/javascripts/aloha/plugins/common/image/vendor/ui/ui-lightness/images/ui-bg_gloss-wave_35_f6a828_500x100.png +0 -0
  539. data/vendor/assets/javascripts/aloha/plugins/common/image/vendor/ui/ui-lightness/images/ui-bg_highlight-soft_100_eeeeee_1x100.png +0 -0
  540. data/vendor/assets/javascripts/aloha/plugins/common/image/vendor/ui/ui-lightness/images/ui-bg_highlight-soft_75_ffe45c_1x100.png +0 -0
  541. data/vendor/assets/javascripts/aloha/plugins/common/image/vendor/ui/ui-lightness/images/ui-icons_222222_256x240.png +0 -0
  542. data/vendor/assets/javascripts/aloha/plugins/common/image/vendor/ui/ui-lightness/images/ui-icons_228ef1_256x240.png +0 -0
  543. data/vendor/assets/javascripts/aloha/plugins/common/image/vendor/ui/ui-lightness/images/ui-icons_ef8c08_256x240.png +0 -0
  544. data/vendor/assets/javascripts/aloha/plugins/common/image/vendor/ui/ui-lightness/images/ui-icons_ffd27a_256x240.png +0 -0
  545. data/vendor/assets/javascripts/aloha/plugins/common/image/vendor/ui/ui-lightness/images/ui-icons_ffffff_256x240.png +0 -0
  546. data/vendor/assets/javascripts/aloha/plugins/common/image/vendor/ui/ui-lightness/jquery-ui-1.8.10.cropnresize.css +33 -0
  547. data/vendor/assets/javascripts/aloha/plugins/common/image/vendor/ui/ui-lightness/jquery-ui-1.8.10.custom.css +314 -0
  548. data/vendor/assets/javascripts/aloha/plugins/common/link/css/link.css +55 -0
  549. data/vendor/assets/javascripts/aloha/plugins/common/link/demo/background.png +0 -0
  550. data/vendor/assets/javascripts/aloha/plugins/common/link/demo/external-link-ltr-icon.png +0 -0
  551. data/vendor/assets/javascripts/aloha/plugins/common/link/demo/index.css +91 -0
  552. data/vendor/assets/javascripts/aloha/plugins/common/link/demo/index.html +91 -0
  553. data/vendor/assets/javascripts/aloha/plugins/common/link/extra/delicious.js +246 -0
  554. data/vendor/assets/javascripts/aloha/plugins/common/link/extra/linklist.js +227 -0
  555. data/vendor/assets/javascripts/aloha/plugins/common/link/extra/slowlinklist.js +228 -0
  556. data/vendor/assets/javascripts/aloha/plugins/common/link/lib/link-plugin.js +759 -0
  557. data/vendor/assets/javascripts/aloha/plugins/common/link/nls/de/i18n.js +13 -0
  558. data/vendor/assets/javascripts/aloha/plugins/common/link/nls/fr/i18n.js +6 -0
  559. data/vendor/assets/javascripts/aloha/plugins/common/link/nls/i18n.js +9 -0
  560. data/vendor/assets/javascripts/aloha/plugins/common/link/nls/pl/i18n.js +6 -0
  561. data/vendor/assets/javascripts/aloha/plugins/common/link/nls/ru/i18n.js +6 -0
  562. data/vendor/assets/javascripts/aloha/plugins/common/list/lib/list-plugin.js +849 -0
  563. data/vendor/assets/javascripts/aloha/plugins/common/list/nls/de/i18n.js +1 -0
  564. data/vendor/assets/javascripts/aloha/plugins/common/list/nls/eo/i18n.js +1 -0
  565. data/vendor/assets/javascripts/aloha/plugins/common/list/nls/fi/i18n.js +1 -0
  566. data/vendor/assets/javascripts/aloha/plugins/common/list/nls/fr/i18n.js +1 -0
  567. data/vendor/assets/javascripts/aloha/plugins/common/list/nls/i18n.js +9 -0
  568. data/vendor/assets/javascripts/aloha/plugins/common/list/nls/it/i18n.js +1 -0
  569. data/vendor/assets/javascripts/aloha/plugins/common/list/nls/ru/i18n.js +1 -0
  570. data/vendor/assets/javascripts/aloha/plugins/common/list/package.json +1 -0
  571. data/vendor/assets/javascripts/aloha/plugins/common/paste/README.md +3 -0
  572. data/vendor/assets/javascripts/aloha/plugins/common/paste/lib/paste-plugin.js +221 -0
  573. data/vendor/assets/javascripts/aloha/plugins/common/paste/package.json +8 -0
  574. data/vendor/assets/javascripts/aloha/plugins/common/table/css/table.css +160 -0
  575. data/vendor/assets/javascripts/aloha/plugins/common/table/img/down.cur +0 -0
  576. data/vendor/assets/javascripts/aloha/plugins/common/table/img/left.cur +0 -0
  577. data/vendor/assets/javascripts/aloha/plugins/common/table/img/table_layout.png +0 -0
  578. data/vendor/assets/javascripts/aloha/plugins/common/table/img/wai-green.png +0 -0
  579. data/vendor/assets/javascripts/aloha/plugins/common/table/img/wai-red.png +0 -0
  580. data/vendor/assets/javascripts/aloha/plugins/common/table/lib/table-cell.js +463 -0
  581. data/vendor/assets/javascripts/aloha/plugins/common/table/lib/table-create-layer.js +210 -0
  582. data/vendor/assets/javascripts/aloha/plugins/common/table/lib/table-plugin-utils.js +355 -0
  583. data/vendor/assets/javascripts/aloha/plugins/common/table/lib/table-plugin.js +1498 -0
  584. data/vendor/assets/javascripts/aloha/plugins/common/table/lib/table-selection.js +374 -0
  585. data/vendor/assets/javascripts/aloha/plugins/common/table/lib/table.js +1529 -0
  586. data/vendor/assets/javascripts/aloha/plugins/common/table/nls/de/i18n.js +1 -0
  587. data/vendor/assets/javascripts/aloha/plugins/common/table/nls/eo/i18n.js +1 -0
  588. data/vendor/assets/javascripts/aloha/plugins/common/table/nls/fi/i18n.js +1 -0
  589. data/vendor/assets/javascripts/aloha/plugins/common/table/nls/fr/i18n.js +1 -0
  590. data/vendor/assets/javascripts/aloha/plugins/common/table/nls/i18n.js +11 -0
  591. data/vendor/assets/javascripts/aloha/plugins/common/table/nls/it/i18n.js +1 -0
  592. data/vendor/assets/javascripts/aloha/plugins/common/table/nls/pl/i18n.js +1 -0
  593. data/vendor/assets/javascripts/aloha/plugins/common/table/nls/ru/i18n.js +1 -0
  594. data/vendor/assets/javascripts/aloha/plugins/common/table/package.json +1 -0
  595. data/vendor/assets/javascripts/aloha/plugins/common/undo/demo/index.css +49 -0
  596. data/vendor/assets/javascripts/aloha/plugins/common/undo/demo/index.html +85 -0
  597. data/vendor/assets/javascripts/aloha/plugins/common/undo/lib/undo-plugin.js +134 -0
  598. data/vendor/assets/javascripts/aloha/plugins/common/undo/package.json +7 -0
  599. data/vendor/assets/javascripts/aloha/plugins/common/undo/vendor/diff_match_patch_uncompressed.js +2155 -0
  600. data/vendor/assets/javascripts/aloha/plugins/common/undo/vendor/undo.js +119 -0
  601. data/vendor/assets/javascripts/aloha/plugins/extra/attributes/README +0 -0
  602. data/vendor/assets/javascripts/aloha/plugins/extra/attributes/css/attributes.css +12 -0
  603. data/vendor/assets/javascripts/aloha/plugins/extra/attributes/lib/attributes-plugin.js +217 -0
  604. data/vendor/assets/javascripts/aloha/plugins/extra/attributes/nls/de/i18n.js +1 -0
  605. data/vendor/assets/javascripts/aloha/plugins/extra/attributes/nls/en/i18n.js +1 -0
  606. data/vendor/assets/javascripts/aloha/plugins/extra/attributes/nls/i18n.js +5 -0
  607. data/vendor/assets/javascripts/aloha/plugins/extra/browser/README +0 -0
  608. data/vendor/assets/javascripts/aloha/plugins/extra/browser/css/browser.css +360 -0
  609. data/vendor/assets/javascripts/aloha/plugins/extra/browser/css/browser.jqgrid.css +374 -0
  610. data/vendor/assets/javascripts/aloha/plugins/extra/browser/css/browsercombined.css +752 -0
  611. data/vendor/assets/javascripts/aloha/plugins/extra/browser/css/images/ui-bg_flat_0_aaaaaa_40x100.png +0 -0
  612. data/vendor/assets/javascripts/aloha/plugins/extra/browser/css/images/ui-bg_flat_75_ffffff_40x100.png +0 -0
  613. data/vendor/assets/javascripts/aloha/plugins/extra/browser/css/images/ui-bg_glass_55_fbf9ee_1x400.png +0 -0
  614. data/vendor/assets/javascripts/aloha/plugins/extra/browser/css/images/ui-bg_glass_65_ffffff_1x400.png +0 -0
  615. data/vendor/assets/javascripts/aloha/plugins/extra/browser/css/images/ui-bg_glass_75_dadada_1x400.png +0 -0
  616. data/vendor/assets/javascripts/aloha/plugins/extra/browser/css/images/ui-bg_glass_75_e6e6e6_1x400.png +0 -0
  617. data/vendor/assets/javascripts/aloha/plugins/extra/browser/css/images/ui-bg_glass_95_fef1ec_1x400.png +0 -0
  618. data/vendor/assets/javascripts/aloha/plugins/extra/browser/css/images/ui-bg_highlight-soft_75_cccccc_1x100.png +0 -0
  619. data/vendor/assets/javascripts/aloha/plugins/extra/browser/css/images/ui-icons_222222_256x240.png +0 -0
  620. data/vendor/assets/javascripts/aloha/plugins/extra/browser/css/images/ui-icons_2e83ff_256x240.png +0 -0
  621. data/vendor/assets/javascripts/aloha/plugins/extra/browser/css/images/ui-icons_454545_256x240.png +0 -0
  622. data/vendor/assets/javascripts/aloha/plugins/extra/browser/css/images/ui-icons_888888_256x240.png +0 -0
  623. data/vendor/assets/javascripts/aloha/plugins/extra/browser/css/images/ui-icons_cd0a0a_256x240.png +0 -0
  624. data/vendor/assets/javascripts/aloha/plugins/extra/browser/css/jquery-ui-1.8.13.custom.css +319 -0
  625. data/vendor/assets/javascripts/aloha/plugins/extra/browser/css/jstree.css +88 -0
  626. data/vendor/assets/javascripts/aloha/plugins/extra/browser/css/throbber.gif +0 -0
  627. data/vendor/assets/javascripts/aloha/plugins/extra/browser/css/ui.jqgrid.css +148 -0
  628. data/vendor/assets/javascripts/aloha/plugins/extra/browser/img/arrow-000-medium.png +0 -0
  629. data/vendor/assets/javascripts/aloha/plugins/extra/browser/img/arrow-180.png +0 -0
  630. data/vendor/assets/javascripts/aloha/plugins/extra/browser/img/arrow-315-medium.png +0 -0
  631. data/vendor/assets/javascripts/aloha/plugins/extra/browser/img/arrow-stop-180.png +0 -0
  632. data/vendor/assets/javascripts/aloha/plugins/extra/browser/img/arrow-stop.png +0 -0
  633. data/vendor/assets/javascripts/aloha/plugins/extra/browser/img/arrow.png +0 -0
  634. data/vendor/assets/javascripts/aloha/plugins/extra/browser/img/control-stop-square-small.png +0 -0
  635. data/vendor/assets/javascripts/aloha/plugins/extra/browser/img/folder-horizontal-open.png +0 -0
  636. data/vendor/assets/javascripts/aloha/plugins/extra/browser/img/folder-open.png +0 -0
  637. data/vendor/assets/javascripts/aloha/plugins/extra/browser/img/gcn-icons/gcn-icon-file.gif +0 -0
  638. data/vendor/assets/javascripts/aloha/plugins/extra/browser/img/gcn-icons/gcn-icon-image.gif +0 -0
  639. data/vendor/assets/javascripts/aloha/plugins/extra/browser/img/gcn-icons/gcn-icon-page.gif +0 -0
  640. data/vendor/assets/javascripts/aloha/plugins/extra/browser/img/magnifier-left.png +0 -0
  641. data/vendor/assets/javascripts/aloha/plugins/extra/browser/img/page.png +0 -0
  642. data/vendor/assets/javascripts/aloha/plugins/extra/browser/img/picture.png +0 -0
  643. data/vendor/assets/javascripts/aloha/plugins/extra/browser/img/sort-alphabet-descending.png +0 -0
  644. data/vendor/assets/javascripts/aloha/plugins/extra/browser/img/sort-alphabet.png +0 -0
  645. data/vendor/assets/javascripts/aloha/plugins/extra/browser/img/throbber.gif +0 -0
  646. data/vendor/assets/javascripts/aloha/plugins/extra/browser/lib/browser-plugin.js +10 -0
  647. data/vendor/assets/javascripts/aloha/plugins/extra/browser/lib/browser.js +1103 -0
  648. data/vendor/assets/javascripts/aloha/plugins/extra/browser/lib/locale.js +26 -0
  649. data/vendor/assets/javascripts/aloha/plugins/extra/browser/nls/de.json +1 -0
  650. data/vendor/assets/javascripts/aloha/plugins/extra/browser/nls/de/i18n.js +18 -0
  651. data/vendor/assets/javascripts/aloha/plugins/extra/browser/nls/en.json +1 -0
  652. data/vendor/assets/javascripts/aloha/plugins/extra/browser/nls/en/i18n.js +18 -0
  653. data/vendor/assets/javascripts/aloha/plugins/extra/browser/nls/i18n.js +4 -0
  654. data/vendor/assets/javascripts/aloha/plugins/extra/browser/vendor/grid.locale.de.js +134 -0
  655. data/vendor/assets/javascripts/aloha/plugins/extra/browser/vendor/grid.locale.en.js +129 -0
  656. data/vendor/assets/javascripts/aloha/plugins/extra/browser/vendor/jquery.jqGrid.js +467 -0
  657. data/vendor/assets/javascripts/aloha/plugins/extra/browser/vendor/jquery.jstree.js +4544 -0
  658. data/vendor/assets/javascripts/aloha/plugins/extra/browser/vendor/jquery.ui.js +756 -0
  659. data/vendor/assets/javascripts/aloha/plugins/extra/browser/vendor/ui-layout.js +108 -0
  660. data/vendor/assets/javascripts/aloha/plugins/extra/cite/README +0 -0
  661. data/vendor/assets/javascripts/aloha/plugins/extra/cite/css/cite.css +49 -0
  662. data/vendor/assets/javascripts/aloha/plugins/extra/cite/img/blockquote.png +0 -0
  663. data/vendor/assets/javascripts/aloha/plugins/extra/cite/img/icon_cite.png +0 -0
  664. data/vendor/assets/javascripts/aloha/plugins/extra/cite/lib/cite-plugin.js +539 -0
  665. data/vendor/assets/javascripts/aloha/plugins/extra/cite/nls/de/i18n.js +1 -0
  666. data/vendor/assets/javascripts/aloha/plugins/extra/cite/nls/en/i18n.js +1 -0
  667. data/vendor/assets/javascripts/aloha/plugins/extra/cite/nls/i18n.js +4 -0
  668. data/vendor/assets/javascripts/aloha/plugins/extra/cite/package.json +1 -0
  669. data/vendor/assets/javascripts/aloha/plugins/extra/comments/img/add-icon.png +0 -0
  670. data/vendor/assets/javascripts/aloha/plugins/extra/comments/img/add.png +0 -0
  671. data/vendor/assets/javascripts/aloha/plugins/extra/comments/img/comments.png +0 -0
  672. data/vendor/assets/javascripts/aloha/plugins/extra/comments/img/hr.png +0 -0
  673. data/vendor/assets/javascripts/aloha/plugins/extra/comments/img/textbox.png +0 -0
  674. data/vendor/assets/javascripts/aloha/plugins/extra/comments/package.json +1 -0
  675. data/vendor/assets/javascripts/aloha/plugins/extra/comments/src/comments.css +442 -0
  676. data/vendor/assets/javascripts/aloha/plugins/extra/comments/src/comments.js +669 -0
  677. data/vendor/assets/javascripts/aloha/plugins/extra/draganddropfiles/AGPL3 +661 -0
  678. data/vendor/assets/javascripts/aloha/plugins/extra/draganddropfiles/LICENSE +25 -0
  679. data/vendor/assets/javascripts/aloha/plugins/extra/draganddropfiles/README.md +5 -0
  680. data/vendor/assets/javascripts/aloha/plugins/extra/draganddropfiles/TODO.md +2 -0
  681. data/vendor/assets/javascripts/aloha/plugins/extra/draganddropfiles/demo/index.css +47 -0
  682. data/vendor/assets/javascripts/aloha/plugins/extra/draganddropfiles/demo/index.html +101 -0
  683. data/vendor/assets/javascripts/aloha/plugins/extra/draganddropfiles/demo/migration/index.css +189 -0
  684. data/vendor/assets/javascripts/aloha/plugins/extra/draganddropfiles/demo/migration/index.html +321 -0
  685. data/vendor/assets/javascripts/aloha/plugins/extra/draganddropfiles/demo/specs/DragnDropnImage.graphml +677 -0
  686. data/vendor/assets/javascripts/aloha/plugins/extra/draganddropfiles/demo/style.css +47 -0
  687. data/vendor/assets/javascripts/aloha/plugins/extra/draganddropfiles/demo/upload.php +26 -0
  688. data/vendor/assets/javascripts/aloha/plugins/extra/draganddropfiles/i18n/en.json +1 -0
  689. data/vendor/assets/javascripts/aloha/plugins/extra/draganddropfiles/i18n/fr.json +1 -0
  690. data/vendor/assets/javascripts/aloha/plugins/extra/draganddropfiles/img/cross.png +0 -0
  691. data/vendor/assets/javascripts/aloha/plugins/extra/draganddropfiles/img/hourglass.png +0 -0
  692. data/vendor/assets/javascripts/aloha/plugins/extra/draganddropfiles/img/loading.gif +0 -0
  693. data/vendor/assets/javascripts/aloha/plugins/extra/draganddropfiles/img/page.png +0 -0
  694. data/vendor/assets/javascripts/aloha/plugins/extra/draganddropfiles/img/tick.png +0 -0
  695. data/vendor/assets/javascripts/aloha/plugins/extra/draganddropfiles/lib/draganddropfiles-plugin.js +4 -0
  696. data/vendor/assets/javascripts/aloha/plugins/extra/draganddropfiles/lib/dragndropfiles.css +110 -0
  697. data/vendor/assets/javascripts/aloha/plugins/extra/draganddropfiles/lib/dragndropfiles.js +349 -0
  698. data/vendor/assets/javascripts/aloha/plugins/extra/draganddropfiles/lib/dropfilesrepository.js +365 -0
  699. data/vendor/assets/javascripts/aloha/plugins/extra/draganddropfiles/package.json +1 -0
  700. data/vendor/assets/javascripts/aloha/plugins/extra/formatlesspaste/README.md +3 -0
  701. data/vendor/assets/javascripts/aloha/plugins/extra/formatlesspaste/css/formatless.css +7 -0
  702. data/vendor/assets/javascripts/aloha/plugins/extra/formatlesspaste/img/button.png +0 -0
  703. data/vendor/assets/javascripts/aloha/plugins/extra/formatlesspaste/lib/formatlesshandler.js +67 -0
  704. data/vendor/assets/javascripts/aloha/plugins/extra/formatlesspaste/lib/formatlesspaste-plugin.js +103 -0
  705. data/vendor/assets/javascripts/aloha/plugins/extra/formatlesspaste/nls/de/i18n.js +1 -0
  706. data/vendor/assets/javascripts/aloha/plugins/extra/formatlesspaste/nls/i18n.js +7 -0
  707. data/vendor/assets/javascripts/aloha/plugins/extra/formatlesspaste/package.json +8 -0
  708. data/vendor/assets/javascripts/aloha/plugins/extra/headerids/README +0 -0
  709. data/vendor/assets/javascripts/aloha/plugins/extra/headerids/css/headerids.css +8 -0
  710. data/vendor/assets/javascripts/aloha/plugins/extra/headerids/lib/headerids-plugin.js +127 -0
  711. data/vendor/assets/javascripts/aloha/plugins/extra/headerids/nls/de/i18n.js +1 -0
  712. data/vendor/assets/javascripts/aloha/plugins/extra/headerids/nls/en/i18n.js +1 -0
  713. data/vendor/assets/javascripts/aloha/plugins/extra/headerids/nls/i18n.js +5 -0
  714. data/vendor/assets/javascripts/aloha/plugins/extra/hints/dep/jquery.poshytip.js +470 -0
  715. data/vendor/assets/javascripts/aloha/plugins/extra/hints/i18n/de.json +1 -0
  716. data/vendor/assets/javascripts/aloha/plugins/extra/hints/i18n/en.json +1 -0
  717. data/vendor/assets/javascripts/aloha/plugins/extra/hints/img/tip-twitter_arrows.gif +0 -0
  718. data/vendor/assets/javascripts/aloha/plugins/extra/hints/package.json +9 -0
  719. data/vendor/assets/javascripts/aloha/plugins/extra/hints/src/hints.css +61 -0
  720. data/vendor/assets/javascripts/aloha/plugins/extra/hints/src/hints.js +49 -0
  721. data/vendor/assets/javascripts/aloha/plugins/extra/linkbrowser/README +0 -0
  722. data/vendor/assets/javascripts/aloha/plugins/extra/linkbrowser/img/flags/ad.png +0 -0
  723. data/vendor/assets/javascripts/aloha/plugins/extra/linkbrowser/img/flags/ae.png +0 -0
  724. data/vendor/assets/javascripts/aloha/plugins/extra/linkbrowser/img/flags/af.png +0 -0
  725. data/vendor/assets/javascripts/aloha/plugins/extra/linkbrowser/img/flags/ag.png +0 -0
  726. data/vendor/assets/javascripts/aloha/plugins/extra/linkbrowser/img/flags/ai.png +0 -0
  727. data/vendor/assets/javascripts/aloha/plugins/extra/linkbrowser/img/flags/al.png +0 -0
  728. data/vendor/assets/javascripts/aloha/plugins/extra/linkbrowser/img/flags/am.png +0 -0
  729. data/vendor/assets/javascripts/aloha/plugins/extra/linkbrowser/img/flags/an.png +0 -0
  730. data/vendor/assets/javascripts/aloha/plugins/extra/linkbrowser/img/flags/ao.png +0 -0
  731. data/vendor/assets/javascripts/aloha/plugins/extra/linkbrowser/img/flags/ar.png +0 -0
  732. data/vendor/assets/javascripts/aloha/plugins/extra/linkbrowser/img/flags/as.png +0 -0
  733. data/vendor/assets/javascripts/aloha/plugins/extra/linkbrowser/img/flags/at.png +0 -0
  734. data/vendor/assets/javascripts/aloha/plugins/extra/linkbrowser/img/flags/au.png +0 -0
  735. data/vendor/assets/javascripts/aloha/plugins/extra/linkbrowser/img/flags/aw.png +0 -0
  736. data/vendor/assets/javascripts/aloha/plugins/extra/linkbrowser/img/flags/ax.png +0 -0
  737. data/vendor/assets/javascripts/aloha/plugins/extra/linkbrowser/img/flags/az.png +0 -0
  738. data/vendor/assets/javascripts/aloha/plugins/extra/linkbrowser/img/flags/ba.png +0 -0
  739. data/vendor/assets/javascripts/aloha/plugins/extra/linkbrowser/img/flags/bb.png +0 -0
  740. data/vendor/assets/javascripts/aloha/plugins/extra/linkbrowser/img/flags/bd.png +0 -0
  741. data/vendor/assets/javascripts/aloha/plugins/extra/linkbrowser/img/flags/be.png +0 -0
  742. data/vendor/assets/javascripts/aloha/plugins/extra/linkbrowser/img/flags/bf.png +0 -0
  743. data/vendor/assets/javascripts/aloha/plugins/extra/linkbrowser/img/flags/bg.png +0 -0
  744. data/vendor/assets/javascripts/aloha/plugins/extra/linkbrowser/img/flags/bh.png +0 -0
  745. data/vendor/assets/javascripts/aloha/plugins/extra/linkbrowser/img/flags/bi.png +0 -0
  746. data/vendor/assets/javascripts/aloha/plugins/extra/linkbrowser/img/flags/bj.png +0 -0
  747. data/vendor/assets/javascripts/aloha/plugins/extra/linkbrowser/img/flags/bm.png +0 -0
  748. data/vendor/assets/javascripts/aloha/plugins/extra/linkbrowser/img/flags/bn.png +0 -0
  749. data/vendor/assets/javascripts/aloha/plugins/extra/linkbrowser/img/flags/bo.png +0 -0
  750. data/vendor/assets/javascripts/aloha/plugins/extra/linkbrowser/img/flags/br.png +0 -0
  751. data/vendor/assets/javascripts/aloha/plugins/extra/linkbrowser/img/flags/bs.png +0 -0
  752. data/vendor/assets/javascripts/aloha/plugins/extra/linkbrowser/img/flags/bt.png +0 -0
  753. data/vendor/assets/javascripts/aloha/plugins/extra/linkbrowser/img/flags/bv.png +0 -0
  754. data/vendor/assets/javascripts/aloha/plugins/extra/linkbrowser/img/flags/bw.png +0 -0
  755. data/vendor/assets/javascripts/aloha/plugins/extra/linkbrowser/img/flags/by.png +0 -0
  756. data/vendor/assets/javascripts/aloha/plugins/extra/linkbrowser/img/flags/bz.png +0 -0
  757. data/vendor/assets/javascripts/aloha/plugins/extra/linkbrowser/img/flags/ca.png +0 -0
  758. data/vendor/assets/javascripts/aloha/plugins/extra/linkbrowser/img/flags/catalonia.png +0 -0
  759. data/vendor/assets/javascripts/aloha/plugins/extra/linkbrowser/img/flags/cc.png +0 -0
  760. data/vendor/assets/javascripts/aloha/plugins/extra/linkbrowser/img/flags/cd.png +0 -0
  761. data/vendor/assets/javascripts/aloha/plugins/extra/linkbrowser/img/flags/cf.png +0 -0
  762. data/vendor/assets/javascripts/aloha/plugins/extra/linkbrowser/img/flags/cg.png +0 -0
  763. data/vendor/assets/javascripts/aloha/plugins/extra/linkbrowser/img/flags/ch.png +0 -0
  764. data/vendor/assets/javascripts/aloha/plugins/extra/linkbrowser/img/flags/ci.png +0 -0
  765. data/vendor/assets/javascripts/aloha/plugins/extra/linkbrowser/img/flags/ck.png +0 -0
  766. data/vendor/assets/javascripts/aloha/plugins/extra/linkbrowser/img/flags/cl.png +0 -0
  767. data/vendor/assets/javascripts/aloha/plugins/extra/linkbrowser/img/flags/cm.png +0 -0
  768. data/vendor/assets/javascripts/aloha/plugins/extra/linkbrowser/img/flags/cn.png +0 -0
  769. data/vendor/assets/javascripts/aloha/plugins/extra/linkbrowser/img/flags/co.png +0 -0
  770. data/vendor/assets/javascripts/aloha/plugins/extra/linkbrowser/img/flags/cr.png +0 -0
  771. data/vendor/assets/javascripts/aloha/plugins/extra/linkbrowser/img/flags/cs.png +0 -0
  772. data/vendor/assets/javascripts/aloha/plugins/extra/linkbrowser/img/flags/cu.png +0 -0
  773. data/vendor/assets/javascripts/aloha/plugins/extra/linkbrowser/img/flags/cv.png +0 -0
  774. data/vendor/assets/javascripts/aloha/plugins/extra/linkbrowser/img/flags/cx.png +0 -0
  775. data/vendor/assets/javascripts/aloha/plugins/extra/linkbrowser/img/flags/cy.png +0 -0
  776. data/vendor/assets/javascripts/aloha/plugins/extra/linkbrowser/img/flags/cz.png +0 -0
  777. data/vendor/assets/javascripts/aloha/plugins/extra/linkbrowser/img/flags/de.png +0 -0
  778. data/vendor/assets/javascripts/aloha/plugins/extra/linkbrowser/img/flags/dj.png +0 -0
  779. data/vendor/assets/javascripts/aloha/plugins/extra/linkbrowser/img/flags/dk.png +0 -0
  780. data/vendor/assets/javascripts/aloha/plugins/extra/linkbrowser/img/flags/dm.png +0 -0
  781. data/vendor/assets/javascripts/aloha/plugins/extra/linkbrowser/img/flags/do.png +0 -0
  782. data/vendor/assets/javascripts/aloha/plugins/extra/linkbrowser/img/flags/dz.png +0 -0
  783. data/vendor/assets/javascripts/aloha/plugins/extra/linkbrowser/img/flags/ec.png +0 -0
  784. data/vendor/assets/javascripts/aloha/plugins/extra/linkbrowser/img/flags/ee.png +0 -0
  785. data/vendor/assets/javascripts/aloha/plugins/extra/linkbrowser/img/flags/eg.png +0 -0
  786. data/vendor/assets/javascripts/aloha/plugins/extra/linkbrowser/img/flags/eh.png +0 -0
  787. data/vendor/assets/javascripts/aloha/plugins/extra/linkbrowser/img/flags/en.png +0 -0
  788. data/vendor/assets/javascripts/aloha/plugins/extra/linkbrowser/img/flags/er.png +0 -0
  789. data/vendor/assets/javascripts/aloha/plugins/extra/linkbrowser/img/flags/es.png +0 -0
  790. data/vendor/assets/javascripts/aloha/plugins/extra/linkbrowser/img/flags/et.png +0 -0
  791. data/vendor/assets/javascripts/aloha/plugins/extra/linkbrowser/img/flags/europeanunion.png +0 -0
  792. data/vendor/assets/javascripts/aloha/plugins/extra/linkbrowser/img/flags/fam.png +0 -0
  793. data/vendor/assets/javascripts/aloha/plugins/extra/linkbrowser/img/flags/fi.png +0 -0
  794. data/vendor/assets/javascripts/aloha/plugins/extra/linkbrowser/img/flags/fj.png +0 -0
  795. data/vendor/assets/javascripts/aloha/plugins/extra/linkbrowser/img/flags/fk.png +0 -0
  796. data/vendor/assets/javascripts/aloha/plugins/extra/linkbrowser/img/flags/fm.png +0 -0
  797. data/vendor/assets/javascripts/aloha/plugins/extra/linkbrowser/img/flags/fo.png +0 -0
  798. data/vendor/assets/javascripts/aloha/plugins/extra/linkbrowser/img/flags/fr.png +0 -0
  799. data/vendor/assets/javascripts/aloha/plugins/extra/linkbrowser/img/flags/ga.png +0 -0
  800. data/vendor/assets/javascripts/aloha/plugins/extra/linkbrowser/img/flags/gb.png +0 -0
  801. data/vendor/assets/javascripts/aloha/plugins/extra/linkbrowser/img/flags/gd.png +0 -0
  802. data/vendor/assets/javascripts/aloha/plugins/extra/linkbrowser/img/flags/ge.png +0 -0
  803. data/vendor/assets/javascripts/aloha/plugins/extra/linkbrowser/img/flags/gf.png +0 -0
  804. data/vendor/assets/javascripts/aloha/plugins/extra/linkbrowser/img/flags/gh.png +0 -0
  805. data/vendor/assets/javascripts/aloha/plugins/extra/linkbrowser/img/flags/gi.png +0 -0
  806. data/vendor/assets/javascripts/aloha/plugins/extra/linkbrowser/img/flags/gl.png +0 -0
  807. data/vendor/assets/javascripts/aloha/plugins/extra/linkbrowser/img/flags/gm.png +0 -0
  808. data/vendor/assets/javascripts/aloha/plugins/extra/linkbrowser/img/flags/gn.png +0 -0
  809. data/vendor/assets/javascripts/aloha/plugins/extra/linkbrowser/img/flags/gp.png +0 -0
  810. data/vendor/assets/javascripts/aloha/plugins/extra/linkbrowser/img/flags/gq.png +0 -0
  811. data/vendor/assets/javascripts/aloha/plugins/extra/linkbrowser/img/flags/gr.png +0 -0
  812. data/vendor/assets/javascripts/aloha/plugins/extra/linkbrowser/img/flags/gs.png +0 -0
  813. data/vendor/assets/javascripts/aloha/plugins/extra/linkbrowser/img/flags/gt.png +0 -0
  814. data/vendor/assets/javascripts/aloha/plugins/extra/linkbrowser/img/flags/gu.png +0 -0
  815. data/vendor/assets/javascripts/aloha/plugins/extra/linkbrowser/img/flags/gw.png +0 -0
  816. data/vendor/assets/javascripts/aloha/plugins/extra/linkbrowser/img/flags/gy.png +0 -0
  817. data/vendor/assets/javascripts/aloha/plugins/extra/linkbrowser/img/flags/hk.png +0 -0
  818. data/vendor/assets/javascripts/aloha/plugins/extra/linkbrowser/img/flags/hm.png +0 -0
  819. data/vendor/assets/javascripts/aloha/plugins/extra/linkbrowser/img/flags/hn.png +0 -0
  820. data/vendor/assets/javascripts/aloha/plugins/extra/linkbrowser/img/flags/hr.png +0 -0
  821. data/vendor/assets/javascripts/aloha/plugins/extra/linkbrowser/img/flags/ht.png +0 -0
  822. data/vendor/assets/javascripts/aloha/plugins/extra/linkbrowser/img/flags/hu.png +0 -0
  823. data/vendor/assets/javascripts/aloha/plugins/extra/linkbrowser/img/flags/id.png +0 -0
  824. data/vendor/assets/javascripts/aloha/plugins/extra/linkbrowser/img/flags/ie.png +0 -0
  825. data/vendor/assets/javascripts/aloha/plugins/extra/linkbrowser/img/flags/il.png +0 -0
  826. data/vendor/assets/javascripts/aloha/plugins/extra/linkbrowser/img/flags/in.png +0 -0
  827. data/vendor/assets/javascripts/aloha/plugins/extra/linkbrowser/img/flags/io.png +0 -0
  828. data/vendor/assets/javascripts/aloha/plugins/extra/linkbrowser/img/flags/iq.png +0 -0
  829. data/vendor/assets/javascripts/aloha/plugins/extra/linkbrowser/img/flags/ir.png +0 -0
  830. data/vendor/assets/javascripts/aloha/plugins/extra/linkbrowser/img/flags/is.png +0 -0
  831. data/vendor/assets/javascripts/aloha/plugins/extra/linkbrowser/img/flags/it.png +0 -0
  832. data/vendor/assets/javascripts/aloha/plugins/extra/linkbrowser/img/flags/jm.png +0 -0
  833. data/vendor/assets/javascripts/aloha/plugins/extra/linkbrowser/img/flags/jo.png +0 -0
  834. data/vendor/assets/javascripts/aloha/plugins/extra/linkbrowser/img/flags/jp.png +0 -0
  835. data/vendor/assets/javascripts/aloha/plugins/extra/linkbrowser/img/flags/ke.png +0 -0
  836. data/vendor/assets/javascripts/aloha/plugins/extra/linkbrowser/img/flags/kg.png +0 -0
  837. data/vendor/assets/javascripts/aloha/plugins/extra/linkbrowser/img/flags/kh.png +0 -0
  838. data/vendor/assets/javascripts/aloha/plugins/extra/linkbrowser/img/flags/ki.png +0 -0
  839. data/vendor/assets/javascripts/aloha/plugins/extra/linkbrowser/img/flags/km.png +0 -0
  840. data/vendor/assets/javascripts/aloha/plugins/extra/linkbrowser/img/flags/kn.png +0 -0
  841. data/vendor/assets/javascripts/aloha/plugins/extra/linkbrowser/img/flags/kp.png +0 -0
  842. data/vendor/assets/javascripts/aloha/plugins/extra/linkbrowser/img/flags/kr.png +0 -0
  843. data/vendor/assets/javascripts/aloha/plugins/extra/linkbrowser/img/flags/kw.png +0 -0
  844. data/vendor/assets/javascripts/aloha/plugins/extra/linkbrowser/img/flags/ky.png +0 -0
  845. data/vendor/assets/javascripts/aloha/plugins/extra/linkbrowser/img/flags/kz.png +0 -0
  846. data/vendor/assets/javascripts/aloha/plugins/extra/linkbrowser/img/flags/la.png +0 -0
  847. data/vendor/assets/javascripts/aloha/plugins/extra/linkbrowser/img/flags/lb.png +0 -0
  848. data/vendor/assets/javascripts/aloha/plugins/extra/linkbrowser/img/flags/lc.png +0 -0
  849. data/vendor/assets/javascripts/aloha/plugins/extra/linkbrowser/img/flags/li.png +0 -0
  850. data/vendor/assets/javascripts/aloha/plugins/extra/linkbrowser/img/flags/lk.png +0 -0
  851. data/vendor/assets/javascripts/aloha/plugins/extra/linkbrowser/img/flags/lr.png +0 -0
  852. data/vendor/assets/javascripts/aloha/plugins/extra/linkbrowser/img/flags/ls.png +0 -0
  853. data/vendor/assets/javascripts/aloha/plugins/extra/linkbrowser/img/flags/lt.png +0 -0
  854. data/vendor/assets/javascripts/aloha/plugins/extra/linkbrowser/img/flags/lu.png +0 -0
  855. data/vendor/assets/javascripts/aloha/plugins/extra/linkbrowser/img/flags/lv.png +0 -0
  856. data/vendor/assets/javascripts/aloha/plugins/extra/linkbrowser/img/flags/ly.png +0 -0
  857. data/vendor/assets/javascripts/aloha/plugins/extra/linkbrowser/img/flags/ma.png +0 -0
  858. data/vendor/assets/javascripts/aloha/plugins/extra/linkbrowser/img/flags/mc.png +0 -0
  859. data/vendor/assets/javascripts/aloha/plugins/extra/linkbrowser/img/flags/md.png +0 -0
  860. data/vendor/assets/javascripts/aloha/plugins/extra/linkbrowser/img/flags/me.png +0 -0
  861. data/vendor/assets/javascripts/aloha/plugins/extra/linkbrowser/img/flags/mg.png +0 -0
  862. data/vendor/assets/javascripts/aloha/plugins/extra/linkbrowser/img/flags/mh.png +0 -0
  863. data/vendor/assets/javascripts/aloha/plugins/extra/linkbrowser/img/flags/mk.png +0 -0
  864. data/vendor/assets/javascripts/aloha/plugins/extra/linkbrowser/img/flags/ml.png +0 -0
  865. data/vendor/assets/javascripts/aloha/plugins/extra/linkbrowser/img/flags/mm.png +0 -0
  866. data/vendor/assets/javascripts/aloha/plugins/extra/linkbrowser/img/flags/mn.png +0 -0
  867. data/vendor/assets/javascripts/aloha/plugins/extra/linkbrowser/img/flags/mo.png +0 -0
  868. data/vendor/assets/javascripts/aloha/plugins/extra/linkbrowser/img/flags/mp.png +0 -0
  869. data/vendor/assets/javascripts/aloha/plugins/extra/linkbrowser/img/flags/mq.png +0 -0
  870. data/vendor/assets/javascripts/aloha/plugins/extra/linkbrowser/img/flags/mr.png +0 -0
  871. data/vendor/assets/javascripts/aloha/plugins/extra/linkbrowser/img/flags/ms.png +0 -0
  872. data/vendor/assets/javascripts/aloha/plugins/extra/linkbrowser/img/flags/mt.png +0 -0
  873. data/vendor/assets/javascripts/aloha/plugins/extra/linkbrowser/img/flags/mu.png +0 -0
  874. data/vendor/assets/javascripts/aloha/plugins/extra/linkbrowser/img/flags/mv.png +0 -0
  875. data/vendor/assets/javascripts/aloha/plugins/extra/linkbrowser/img/flags/mw.png +0 -0
  876. data/vendor/assets/javascripts/aloha/plugins/extra/linkbrowser/img/flags/mx.png +0 -0
  877. data/vendor/assets/javascripts/aloha/plugins/extra/linkbrowser/img/flags/my.png +0 -0
  878. data/vendor/assets/javascripts/aloha/plugins/extra/linkbrowser/img/flags/mz.png +0 -0
  879. data/vendor/assets/javascripts/aloha/plugins/extra/linkbrowser/img/flags/na.png +0 -0
  880. data/vendor/assets/javascripts/aloha/plugins/extra/linkbrowser/img/flags/nc.png +0 -0
  881. data/vendor/assets/javascripts/aloha/plugins/extra/linkbrowser/img/flags/ne.png +0 -0
  882. data/vendor/assets/javascripts/aloha/plugins/extra/linkbrowser/img/flags/nf.png +0 -0
  883. data/vendor/assets/javascripts/aloha/plugins/extra/linkbrowser/img/flags/ng.png +0 -0
  884. data/vendor/assets/javascripts/aloha/plugins/extra/linkbrowser/img/flags/ni.png +0 -0
  885. data/vendor/assets/javascripts/aloha/plugins/extra/linkbrowser/img/flags/nl.png +0 -0
  886. data/vendor/assets/javascripts/aloha/plugins/extra/linkbrowser/img/flags/no.png +0 -0
  887. data/vendor/assets/javascripts/aloha/plugins/extra/linkbrowser/img/flags/np.png +0 -0
  888. data/vendor/assets/javascripts/aloha/plugins/extra/linkbrowser/img/flags/nr.png +0 -0
  889. data/vendor/assets/javascripts/aloha/plugins/extra/linkbrowser/img/flags/nu.png +0 -0
  890. data/vendor/assets/javascripts/aloha/plugins/extra/linkbrowser/img/flags/nz.png +0 -0
  891. data/vendor/assets/javascripts/aloha/plugins/extra/linkbrowser/img/flags/om.png +0 -0
  892. data/vendor/assets/javascripts/aloha/plugins/extra/linkbrowser/img/flags/pa.png +0 -0
  893. data/vendor/assets/javascripts/aloha/plugins/extra/linkbrowser/img/flags/pe.png +0 -0
  894. data/vendor/assets/javascripts/aloha/plugins/extra/linkbrowser/img/flags/pf.png +0 -0
  895. data/vendor/assets/javascripts/aloha/plugins/extra/linkbrowser/img/flags/pg.png +0 -0
  896. data/vendor/assets/javascripts/aloha/plugins/extra/linkbrowser/img/flags/ph.png +0 -0
  897. data/vendor/assets/javascripts/aloha/plugins/extra/linkbrowser/img/flags/pk.png +0 -0
  898. data/vendor/assets/javascripts/aloha/plugins/extra/linkbrowser/img/flags/pl.png +0 -0
  899. data/vendor/assets/javascripts/aloha/plugins/extra/linkbrowser/img/flags/pm.png +0 -0
  900. data/vendor/assets/javascripts/aloha/plugins/extra/linkbrowser/img/flags/pn.png +0 -0
  901. data/vendor/assets/javascripts/aloha/plugins/extra/linkbrowser/img/flags/pr.png +0 -0
  902. data/vendor/assets/javascripts/aloha/plugins/extra/linkbrowser/img/flags/ps.png +0 -0
  903. data/vendor/assets/javascripts/aloha/plugins/extra/linkbrowser/img/flags/pt.png +0 -0
  904. data/vendor/assets/javascripts/aloha/plugins/extra/linkbrowser/img/flags/pw.png +0 -0
  905. data/vendor/assets/javascripts/aloha/plugins/extra/linkbrowser/img/flags/py.png +0 -0
  906. data/vendor/assets/javascripts/aloha/plugins/extra/linkbrowser/img/flags/qa.png +0 -0
  907. data/vendor/assets/javascripts/aloha/plugins/extra/linkbrowser/img/flags/re.png +0 -0
  908. data/vendor/assets/javascripts/aloha/plugins/extra/linkbrowser/img/flags/ro.png +0 -0
  909. data/vendor/assets/javascripts/aloha/plugins/extra/linkbrowser/img/flags/rs.png +0 -0
  910. data/vendor/assets/javascripts/aloha/plugins/extra/linkbrowser/img/flags/ru.png +0 -0
  911. data/vendor/assets/javascripts/aloha/plugins/extra/linkbrowser/img/flags/rw.png +0 -0
  912. data/vendor/assets/javascripts/aloha/plugins/extra/linkbrowser/img/flags/sa.png +0 -0
  913. data/vendor/assets/javascripts/aloha/plugins/extra/linkbrowser/img/flags/sb.png +0 -0
  914. data/vendor/assets/javascripts/aloha/plugins/extra/linkbrowser/img/flags/sc.png +0 -0
  915. data/vendor/assets/javascripts/aloha/plugins/extra/linkbrowser/img/flags/scotland.png +0 -0
  916. data/vendor/assets/javascripts/aloha/plugins/extra/linkbrowser/img/flags/sd.png +0 -0
  917. data/vendor/assets/javascripts/aloha/plugins/extra/linkbrowser/img/flags/se.png +0 -0
  918. data/vendor/assets/javascripts/aloha/plugins/extra/linkbrowser/img/flags/sg.png +0 -0
  919. data/vendor/assets/javascripts/aloha/plugins/extra/linkbrowser/img/flags/sh.png +0 -0
  920. data/vendor/assets/javascripts/aloha/plugins/extra/linkbrowser/img/flags/si.png +0 -0
  921. data/vendor/assets/javascripts/aloha/plugins/extra/linkbrowser/img/flags/sj.png +0 -0
  922. data/vendor/assets/javascripts/aloha/plugins/extra/linkbrowser/img/flags/sk.png +0 -0
  923. data/vendor/assets/javascripts/aloha/plugins/extra/linkbrowser/img/flags/sl.png +0 -0
  924. data/vendor/assets/javascripts/aloha/plugins/extra/linkbrowser/img/flags/sm.png +0 -0
  925. data/vendor/assets/javascripts/aloha/plugins/extra/linkbrowser/img/flags/sn.png +0 -0
  926. data/vendor/assets/javascripts/aloha/plugins/extra/linkbrowser/img/flags/so.png +0 -0
  927. data/vendor/assets/javascripts/aloha/plugins/extra/linkbrowser/img/flags/sr.png +0 -0
  928. data/vendor/assets/javascripts/aloha/plugins/extra/linkbrowser/img/flags/st.png +0 -0
  929. data/vendor/assets/javascripts/aloha/plugins/extra/linkbrowser/img/flags/sv.png +0 -0
  930. data/vendor/assets/javascripts/aloha/plugins/extra/linkbrowser/img/flags/sy.png +0 -0
  931. data/vendor/assets/javascripts/aloha/plugins/extra/linkbrowser/img/flags/sz.png +0 -0
  932. data/vendor/assets/javascripts/aloha/plugins/extra/linkbrowser/img/flags/tc.png +0 -0
  933. data/vendor/assets/javascripts/aloha/plugins/extra/linkbrowser/img/flags/td.png +0 -0
  934. data/vendor/assets/javascripts/aloha/plugins/extra/linkbrowser/img/flags/tf.png +0 -0
  935. data/vendor/assets/javascripts/aloha/plugins/extra/linkbrowser/img/flags/tg.png +0 -0
  936. data/vendor/assets/javascripts/aloha/plugins/extra/linkbrowser/img/flags/th.png +0 -0
  937. data/vendor/assets/javascripts/aloha/plugins/extra/linkbrowser/img/flags/tj.png +0 -0
  938. data/vendor/assets/javascripts/aloha/plugins/extra/linkbrowser/img/flags/tk.png +0 -0
  939. data/vendor/assets/javascripts/aloha/plugins/extra/linkbrowser/img/flags/tl.png +0 -0
  940. data/vendor/assets/javascripts/aloha/plugins/extra/linkbrowser/img/flags/tm.png +0 -0
  941. data/vendor/assets/javascripts/aloha/plugins/extra/linkbrowser/img/flags/tn.png +0 -0
  942. data/vendor/assets/javascripts/aloha/plugins/extra/linkbrowser/img/flags/to.png +0 -0
  943. data/vendor/assets/javascripts/aloha/plugins/extra/linkbrowser/img/flags/tr.png +0 -0
  944. data/vendor/assets/javascripts/aloha/plugins/extra/linkbrowser/img/flags/tt.png +0 -0
  945. data/vendor/assets/javascripts/aloha/plugins/extra/linkbrowser/img/flags/tv.png +0 -0
  946. data/vendor/assets/javascripts/aloha/plugins/extra/linkbrowser/img/flags/tw.png +0 -0
  947. data/vendor/assets/javascripts/aloha/plugins/extra/linkbrowser/img/flags/tz.png +0 -0
  948. data/vendor/assets/javascripts/aloha/plugins/extra/linkbrowser/img/flags/ua.png +0 -0
  949. data/vendor/assets/javascripts/aloha/plugins/extra/linkbrowser/img/flags/ug.png +0 -0
  950. data/vendor/assets/javascripts/aloha/plugins/extra/linkbrowser/img/flags/um.png +0 -0
  951. data/vendor/assets/javascripts/aloha/plugins/extra/linkbrowser/img/flags/us.png +0 -0
  952. data/vendor/assets/javascripts/aloha/plugins/extra/linkbrowser/img/flags/uy.png +0 -0
  953. data/vendor/assets/javascripts/aloha/plugins/extra/linkbrowser/img/flags/uz.png +0 -0
  954. data/vendor/assets/javascripts/aloha/plugins/extra/linkbrowser/img/flags/va.png +0 -0
  955. data/vendor/assets/javascripts/aloha/plugins/extra/linkbrowser/img/flags/vc.png +0 -0
  956. data/vendor/assets/javascripts/aloha/plugins/extra/linkbrowser/img/flags/ve.png +0 -0
  957. data/vendor/assets/javascripts/aloha/plugins/extra/linkbrowser/img/flags/vg.png +0 -0
  958. data/vendor/assets/javascripts/aloha/plugins/extra/linkbrowser/img/flags/vi.png +0 -0
  959. data/vendor/assets/javascripts/aloha/plugins/extra/linkbrowser/img/flags/vn.png +0 -0
  960. data/vendor/assets/javascripts/aloha/plugins/extra/linkbrowser/img/flags/vu.png +0 -0
  961. data/vendor/assets/javascripts/aloha/plugins/extra/linkbrowser/img/flags/wales.png +0 -0
  962. data/vendor/assets/javascripts/aloha/plugins/extra/linkbrowser/img/flags/wf.png +0 -0
  963. data/vendor/assets/javascripts/aloha/plugins/extra/linkbrowser/img/flags/ws.png +0 -0
  964. data/vendor/assets/javascripts/aloha/plugins/extra/linkbrowser/img/flags/ye.png +0 -0
  965. data/vendor/assets/javascripts/aloha/plugins/extra/linkbrowser/img/flags/yt.png +0 -0
  966. data/vendor/assets/javascripts/aloha/plugins/extra/linkbrowser/img/flags/za.png +0 -0
  967. data/vendor/assets/javascripts/aloha/plugins/extra/linkbrowser/img/flags/zm.png +0 -0
  968. data/vendor/assets/javascripts/aloha/plugins/extra/linkbrowser/img/flags/zw.png +0 -0
  969. data/vendor/assets/javascripts/aloha/plugins/extra/linkbrowser/lib/linkbrowser-plugin.js +153 -0
  970. data/vendor/assets/javascripts/aloha/plugins/extra/linkbrowser/nls/de/i18n.js +1 -0
  971. data/vendor/assets/javascripts/aloha/plugins/extra/linkbrowser/nls/fr/i18n.js +1 -0
  972. data/vendor/assets/javascripts/aloha/plugins/extra/linkbrowser/nls/i18n.js +7 -0
  973. data/vendor/assets/javascripts/aloha/plugins/extra/linkbrowser/nls/pl/i18n.js +1 -0
  974. data/vendor/assets/javascripts/aloha/plugins/extra/linkbrowser/nls/ru/i18n.js +1 -0
  975. data/vendor/assets/javascripts/aloha/plugins/extra/linkchecker/demo/index.css +49 -0
  976. data/vendor/assets/javascripts/aloha/plugins/extra/linkchecker/demo/index.html +82 -0
  977. data/vendor/assets/javascripts/aloha/plugins/extra/linkchecker/i18n/en.json +1 -0
  978. data/vendor/assets/javascripts/aloha/plugins/extra/linkchecker/package.json +1 -0
  979. data/vendor/assets/javascripts/aloha/plugins/extra/linkchecker/proxy.php +244 -0
  980. data/vendor/assets/javascripts/aloha/plugins/extra/linkchecker/src/linkchecker.css +14 -0
  981. data/vendor/assets/javascripts/aloha/plugins/extra/linkchecker/src/linkchecker.js +256 -0
  982. data/vendor/assets/javascripts/aloha/plugins/extra/listenforcer/lib/listenforcer-plugin.js +165 -0
  983. data/vendor/assets/javascripts/aloha/plugins/extra/metaview/README +0 -0
  984. data/vendor/assets/javascripts/aloha/plugins/extra/metaview/css/metaview.css +86 -0
  985. data/vendor/assets/javascripts/aloha/plugins/extra/metaview/img/anchor.png +0 -0
  986. data/vendor/assets/javascripts/aloha/plugins/extra/metaview/img/blockquote.png +0 -0
  987. data/vendor/assets/javascripts/aloha/plugins/extra/metaview/img/button.png +0 -0
  988. data/vendor/assets/javascripts/aloha/plugins/extra/metaview/img/caption.png +0 -0
  989. data/vendor/assets/javascripts/aloha/plugins/extra/metaview/img/cite.png +0 -0
  990. data/vendor/assets/javascripts/aloha/plugins/extra/metaview/img/dd.png +0 -0
  991. data/vendor/assets/javascripts/aloha/plugins/extra/metaview/img/div.png +0 -0
  992. data/vendor/assets/javascripts/aloha/plugins/extra/metaview/img/dl.png +0 -0
  993. data/vendor/assets/javascripts/aloha/plugins/extra/metaview/img/dt.png +0 -0
  994. data/vendor/assets/javascripts/aloha/plugins/extra/metaview/img/h1.png +0 -0
  995. data/vendor/assets/javascripts/aloha/plugins/extra/metaview/img/h2.png +0 -0
  996. data/vendor/assets/javascripts/aloha/plugins/extra/metaview/img/h3.png +0 -0
  997. data/vendor/assets/javascripts/aloha/plugins/extra/metaview/img/h4.png +0 -0
  998. data/vendor/assets/javascripts/aloha/plugins/extra/metaview/img/h5.png +0 -0
  999. data/vendor/assets/javascripts/aloha/plugins/extra/metaview/img/h6.png +0 -0
  1000. data/vendor/assets/javascripts/aloha/plugins/extra/metaview/img/icon_cite.png +0 -0
  1001. data/vendor/assets/javascripts/aloha/plugins/extra/metaview/img/p.png +0 -0
  1002. data/vendor/assets/javascripts/aloha/plugins/extra/metaview/img/pre.png +0 -0
  1003. data/vendor/assets/javascripts/aloha/plugins/extra/metaview/img/table.png +0 -0
  1004. data/vendor/assets/javascripts/aloha/plugins/extra/metaview/img/td.png +0 -0
  1005. data/vendor/assets/javascripts/aloha/plugins/extra/metaview/img/th.png +0 -0
  1006. data/vendor/assets/javascripts/aloha/plugins/extra/metaview/lib/metaview-plugin.js +82 -0
  1007. data/vendor/assets/javascripts/aloha/plugins/extra/metaview/nls/de.json +1 -0
  1008. data/vendor/assets/javascripts/aloha/plugins/extra/metaview/nls/de/i18n.js +1 -0
  1009. data/vendor/assets/javascripts/aloha/plugins/extra/metaview/nls/en.json +1 -0
  1010. data/vendor/assets/javascripts/aloha/plugins/extra/metaview/nls/en/i18n.js +1 -0
  1011. data/vendor/assets/javascripts/aloha/plugins/extra/metaview/nls/i18n.js +5 -0
  1012. data/vendor/assets/javascripts/aloha/plugins/extra/numerated-headers/README +0 -0
  1013. data/vendor/assets/javascripts/aloha/plugins/extra/numerated-headers/css/numerated-headers.css +7 -0
  1014. data/vendor/assets/javascripts/aloha/plugins/extra/numerated-headers/demo/index.css +189 -0
  1015. data/vendor/assets/javascripts/aloha/plugins/extra/numerated-headers/demo/index.html +139 -0
  1016. data/vendor/assets/javascripts/aloha/plugins/extra/numerated-headers/demo/js/aloha-config.js +115 -0
  1017. data/vendor/assets/javascripts/aloha/plugins/extra/numerated-headers/img/headers.png +0 -0
  1018. data/vendor/assets/javascripts/aloha/plugins/extra/numerated-headers/lib/numerated-headers-plugin.js +233 -0
  1019. data/vendor/assets/javascripts/aloha/plugins/extra/numerated-headers/nls/de/i18n.js +1 -0
  1020. data/vendor/assets/javascripts/aloha/plugins/extra/numerated-headers/nls/en/i18n.js +1 -0
  1021. data/vendor/assets/javascripts/aloha/plugins/extra/numerated-headers/nls/i18n.js +5 -0
  1022. data/vendor/assets/javascripts/aloha/plugins/extra/profiler/css/profiler.css +34 -0
  1023. data/vendor/assets/javascripts/aloha/plugins/extra/profiler/lib/profiler-plugin.js +285 -0
  1024. data/vendor/assets/javascripts/aloha/plugins/extra/ribbon/LICENSE.md +662 -0
  1025. data/vendor/assets/javascripts/aloha/plugins/extra/ribbon/README.md +8 -0
  1026. data/vendor/assets/javascripts/aloha/plugins/extra/ribbon/css/ribbon.css +10 -0
  1027. data/vendor/assets/javascripts/aloha/plugins/extra/ribbon/lib/ribbon-plugin.js +186 -0
  1028. data/vendor/assets/javascripts/aloha/plugins/extra/ribbon/package.json +1 -0
  1029. data/vendor/assets/javascripts/aloha/plugins/extra/toc/i18n/de.json +1 -0
  1030. data/vendor/assets/javascripts/aloha/plugins/extra/toc/i18n/en.json +1 -0
  1031. data/vendor/assets/javascripts/aloha/plugins/extra/toc/package.json +1 -0
  1032. data/vendor/assets/javascripts/aloha/plugins/extra/toc/src/toc.js +350 -0
  1033. data/vendor/assets/javascripts/aloha/plugins/extra/vie/LICENSE +22 -0
  1034. data/vendor/assets/javascripts/aloha/plugins/extra/vie/README.markdown +65 -0
  1035. data/vendor/assets/javascripts/aloha/plugins/extra/vie/demo/index.html +93 -0
  1036. data/vendor/assets/javascripts/aloha/plugins/extra/vie/img/cms-decoupled-communications.png +0 -0
  1037. data/vendor/assets/javascripts/aloha/plugins/extra/vie/package.json +1 -0
  1038. data/vendor/assets/javascripts/aloha/plugins/extra/vie/src/backbone-min.js +27 -0
  1039. data/vendor/assets/javascripts/aloha/plugins/extra/vie/src/underscore-min.js +25 -0
  1040. data/vendor/assets/javascripts/aloha/plugins/extra/vie/src/vie-aloha.js +74 -0
  1041. data/vendor/assets/javascripts/aloha/plugins/extra/vie/src/vie-collectionmanager.js +70 -0
  1042. data/vendor/assets/javascripts/aloha/plugins/extra/vie/src/vie-containermanager.js +263 -0
  1043. data/vendor/assets/javascripts/aloha/plugins/extra/vie/src/vie.js +20 -0
  1044. data/vendor/assets/stylesheets/aloha.css +1 -0
  1045. metadata +1133 -0
@@ -0,0 +1,262 @@
1
+ /**
2
+ * @license RequireJS text 0.26.0 Copyright (c) 2010-2011, The Dojo Foundation All Rights Reserved.
3
+ * Available via the MIT or new BSD license.
4
+ * see: http://github.com/jrburke/requirejs for details
5
+ */
6
+ /*jslint regexp: false, nomen: false, plusplus: false, strict: false */
7
+ /*global require: false, XMLHttpRequest: false, ActiveXObject: false,
8
+ define: false, window: false, process: false, Packages: false,
9
+ java: false, location: false */
10
+
11
+ (function () {
12
+ var progIds = ['Msxml2.XMLHTTP', 'Microsoft.XMLHTTP', 'Msxml2.XMLHTTP.4.0'],
13
+ xmlRegExp = /^\s*<\?xml(\s)+version=[\'\"](\d)*.(\d)*[\'\"](\s)*\?>/im,
14
+ bodyRegExp = /<body[^>]*>\s*([\s\S]+)\s*<\/body>/im,
15
+ hasLocation = typeof location !== 'undefined' && location.href,
16
+ buildMap = [];
17
+
18
+ define(function () {
19
+ var text, get, fs;
20
+
21
+ if (typeof window !== "undefined" && window.navigator && window.document) {
22
+ get = function (url, callback) {
23
+ var xhr = text.createXhr();
24
+ xhr.open('GET', url, true);
25
+ xhr.onreadystatechange = function (evt) {
26
+ //Do not explicitly handle errors, those should be
27
+ //visible via console output in the browser.
28
+ if (xhr.readyState === 4) {
29
+ callback(xhr.responseText);
30
+ }
31
+ };
32
+ xhr.send(null);
33
+ };
34
+ } else if (typeof process !== "undefined" &&
35
+ process.versions &&
36
+ !!process.versions.node) {
37
+ //Using special require.nodeRequire, something added by r.js.
38
+ fs = require.nodeRequire('fs');
39
+
40
+ get = function (url, callback) {
41
+ callback(fs.readFileSync(url, 'utf8'));
42
+ };
43
+ } else if (typeof Packages !== 'undefined') {
44
+ //Why Java, why is this so awkward?
45
+ get = function (url, callback) {
46
+ var encoding = "utf-8",
47
+ file = new java.io.File(url),
48
+ lineSeparator = java.lang.System.getProperty("line.separator"),
49
+ input = new java.io.BufferedReader(new java.io.InputStreamReader(new java.io.FileInputStream(file), encoding)),
50
+ stringBuffer, line,
51
+ content = '';
52
+ try {
53
+ stringBuffer = new java.lang.StringBuffer();
54
+ line = input.readLine();
55
+
56
+ // Byte Order Mark (BOM) - The Unicode Standard, version 3.0, page 324
57
+ // http://www.unicode.org/faq/utf_bom.html
58
+
59
+ // Note that when we use utf-8, the BOM should appear as "EF BB BF", but it doesn't due to this bug in the JDK:
60
+ // http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=4508058
61
+ if (line && line.length() && line.charAt(0) === 0xfeff) {
62
+ // Eat the BOM, since we've already found the encoding on this file,
63
+ // and we plan to concatenating this buffer with others; the BOM should
64
+ // only appear at the top of a file.
65
+ line = line.substring(1);
66
+ }
67
+
68
+ stringBuffer.append(line);
69
+
70
+ while ((line = input.readLine()) !== null) {
71
+ stringBuffer.append(lineSeparator);
72
+ stringBuffer.append(line);
73
+ }
74
+ //Make sure we return a JavaScript string and not a Java string.
75
+ content = String(stringBuffer.toString()); //String
76
+ } finally {
77
+ input.close();
78
+ }
79
+ callback(content);
80
+ };
81
+ }
82
+
83
+ text = {
84
+ version: '0.26.0',
85
+
86
+ strip: function (content) {
87
+ //Strips <?xml ...?> declarations so that external SVG and XML
88
+ //documents can be added to a document without worry. Also, if the string
89
+ //is an HTML document, only the part inside the body tag is returned.
90
+ if (content) {
91
+ content = content.replace(xmlRegExp, "");
92
+ var matches = content.match(bodyRegExp);
93
+ if (matches) {
94
+ content = matches[1];
95
+ }
96
+ } else {
97
+ content = "";
98
+ }
99
+ return content;
100
+ },
101
+
102
+ jsEscape: function (content) {
103
+ return content.replace(/(['\\])/g, '\\$1')
104
+ .replace(/[\f]/g, "\\f")
105
+ .replace(/[\b]/g, "\\b")
106
+ .replace(/[\n]/g, "\\n")
107
+ .replace(/[\t]/g, "\\t")
108
+ .replace(/[\r]/g, "\\r");
109
+ },
110
+
111
+ createXhr: function () {
112
+ //Would love to dump the ActiveX crap in here. Need IE 6 to die first.
113
+ var xhr, i, progId;
114
+ if (typeof XMLHttpRequest !== "undefined") {
115
+ return new XMLHttpRequest();
116
+ } else {
117
+ for (i = 0; i < 3; i++) {
118
+ progId = progIds[i];
119
+ try {
120
+ xhr = new ActiveXObject(progId);
121
+ } catch (e) {}
122
+
123
+ if (xhr) {
124
+ progIds = [progId]; // so faster next time
125
+ break;
126
+ }
127
+ }
128
+ }
129
+
130
+ if (!xhr) {
131
+ throw new Error("createXhr(): XMLHttpRequest not available");
132
+ }
133
+
134
+ return xhr;
135
+ },
136
+
137
+ get: get,
138
+
139
+ /**
140
+ * Parses a resource name into its component parts. Resource names
141
+ * look like: module/name.ext!strip, where the !strip part is
142
+ * optional.
143
+ * @param {String} name the resource name
144
+ * @returns {Object} with properties "moduleName", "ext" and "strip"
145
+ * where strip is a boolean.
146
+ */
147
+ parseName: function (name) {
148
+ var strip = false, index = name.indexOf("."),
149
+ modName = name.substring(0, index),
150
+ ext = name.substring(index + 1, name.length);
151
+
152
+ index = ext.indexOf("!");
153
+ if (index !== -1) {
154
+ //Pull off the strip arg.
155
+ strip = ext.substring(index + 1, ext.length);
156
+ strip = strip === "strip";
157
+ ext = ext.substring(0, index);
158
+ }
159
+
160
+ return {
161
+ moduleName: modName,
162
+ ext: ext,
163
+ strip: strip
164
+ };
165
+ },
166
+
167
+ xdRegExp: /^((\w+)\:)?\/\/([^\/\\]+)/,
168
+
169
+ /**
170
+ * Is an URL on another domain. Only works for browser use, returns
171
+ * false in non-browser environments. Only used to know if an
172
+ * optimized .js version of a text resource should be loaded
173
+ * instead.
174
+ * @param {String} url
175
+ * @returns Boolean
176
+ */
177
+ canUseXhr: function (url, protocol, hostname, port) {
178
+ var match = text.xdRegExp.exec(url),
179
+ uProtocol, uHostName, uPort;
180
+ if (!match) {
181
+ return true;
182
+ }
183
+ uProtocol = match[2];
184
+ uHostName = match[3];
185
+
186
+ uHostName = uHostName.split(':');
187
+ uPort = uHostName[1];
188
+ uHostName = uHostName[0];
189
+
190
+ return (!uProtocol || uProtocol === protocol) &&
191
+ (!uHostName || uHostName === hostname) &&
192
+ ((!uPort && !uHostName) || uPort === port);
193
+ },
194
+
195
+ finishLoad: function (name, strip, content, onLoad, config) {
196
+ content = strip ? text.strip(content) : content;
197
+ if (config.isBuild && config.inlineText) {
198
+ buildMap[name] = content;
199
+ }
200
+ onLoad(content);
201
+ },
202
+
203
+ load: function (name, req, onLoad, config) {
204
+ //Name has format: some.module.filext!strip
205
+ //The strip part is optional.
206
+ //if strip is present, then that means only get the string contents
207
+ //inside a body tag in an HTML string. For XML/SVG content it means
208
+ //removing the <?xml ...?> declarations so the content can be inserted
209
+ //into the current doc without problems.
210
+
211
+ var parsed = text.parseName(name),
212
+ nonStripName = parsed.moduleName + '.' + parsed.ext,
213
+ url = req.toUrl(nonStripName);
214
+
215
+ //Load the text. Use XHR if possible and in a browser.
216
+ if (!hasLocation || text.canUseXhr(url)) {
217
+ text.get(url, function (content) {
218
+ text.finishLoad(name, parsed.strip, content, onLoad, config);
219
+ });
220
+ } else {
221
+ //Need to fetch the resource across domains. Assume
222
+ //the resource has been optimized into a JS module. Fetch
223
+ //by the module name + extension, but do not include the
224
+ //!strip part to avoid file system issues.
225
+ req([nonStripName], function (content) {
226
+ text.finishLoad(parsed.moduleName + '.' + parsed.ext,
227
+ parsed.strip, content, onLoad, config);
228
+ });
229
+ }
230
+ },
231
+
232
+ write: function (pluginName, moduleName, write, config) {
233
+ if (moduleName in buildMap) {
234
+ var content = text.jsEscape(buildMap[moduleName]);
235
+ write("define('" + pluginName + "!" + moduleName +
236
+ "', function () { return '" + content + "';});\n");
237
+ }
238
+ },
239
+
240
+ writeFile: function (pluginName, moduleName, req, write, config) {
241
+ var parsed = text.parseName(moduleName),
242
+ nonStripName = parsed.moduleName + '.' + parsed.ext,
243
+ //Use a '.js' file name so that it indicates it is a
244
+ //script that can be loaded across domains.
245
+ fileName = req.toUrl(parsed.moduleName + '.' +
246
+ parsed.ext) + '.js';
247
+
248
+ //Leverage own load() method to load plugin value, but only
249
+ //write out values that do not have the strip argument,
250
+ //to avoid any potential issues with ! in file names.
251
+ text.load(nonStripName, req, function (value) {
252
+ //Use own write() method to construct full module value.
253
+ text.write(pluginName, nonStripName, function (contents) {
254
+ write(fileName, contents);
255
+ }, config);
256
+ }, config);
257
+ }
258
+ };
259
+
260
+ return text;
261
+ });
262
+ }());
@@ -0,0 +1,80 @@
1
+ /* Simple JavaScript Inheritance
2
+ * By John Resig http://ejohn.org/
3
+ * MIT Licensed.
4
+ */
5
+ // Inspired by base2 and Prototype
6
+ /*
7
+ * MODIFICATIONS:
8
+ * * The name of the "constructor" method was changed from "init" to "_constructor"
9
+ * * Mixin Support using https://gist.github.com/1006243
10
+ * * Modified to be a require.js module
11
+ */
12
+ define(
13
+ [],
14
+ function(){
15
+ var initializing = false, fnTest = /xyz/.test(function(){xyz;}) ? /\b_super\b/ : /.*/;
16
+
17
+ // The base Class implementation (does nothing)
18
+ // with doing that Class is available in the global namespace.
19
+ this.Class = function(){};
20
+
21
+ // Create a new Class that inherits from this class
22
+ Class.extend = function() {
23
+ var _super = this.prototype;
24
+
25
+ // Instantiate a base class (but only create the instance,
26
+ // don't run the init constructor)
27
+ initializing = true;
28
+ var prototype = new this();
29
+ initializing = false;
30
+
31
+ // Copy the properties over onto the new prototype
32
+ for(var i = 0; i < arguments.length; i++) {
33
+ var prop = arguments[i];
34
+ for (var name in prop) {
35
+ // Check if we're overwriting an existing function
36
+ prototype[name] = typeof prop[name] == "function" &&
37
+ typeof _super[name] == "function" && fnTest.test(prop[name]) ?
38
+ (function(name, fn){
39
+ return function() {
40
+ var tmp = this._super;
41
+
42
+ // Add a new ._super() method that is the same method
43
+ // but on the super-class
44
+ this._super = _super[name];
45
+
46
+ // The method only need to be bound temporarily, so we
47
+ // remove it when we're done executing
48
+ var ret = fn.apply(this, arguments);
49
+ this._super = tmp;
50
+
51
+ return ret;
52
+ };
53
+ })(name, prop[name]) :
54
+ prop[name];
55
+ }
56
+ }
57
+
58
+ // The dummy class constructor
59
+ function Class() {
60
+ // All construction is actually done in the _constructor method
61
+ if ( !initializing && this._constructor )
62
+ this._constructor.apply(this, arguments);
63
+ }
64
+
65
+ // Populate our constructed prototype object
66
+ Class.prototype = prototype;
67
+
68
+ // Enforce the constructor to be what we expect
69
+ Class.constructor = Class;
70
+
71
+ // And make this class extendable
72
+ Class.extend = arguments.callee;
73
+
74
+ return Class;
75
+
76
+ };
77
+
78
+ return this.Class;
79
+
80
+ });
@@ -0,0 +1,1673 @@
1
+ /*!
2
+ * This file is part of Aloha Editor Project http://aloha-editor.org
3
+ * Copyright © 2010-2011 Gentics Software GmbH, aloha@gentics.com
4
+ * Contributors http://aloha-editor.org/contribution.php
5
+ * Licensed unter the terms of http://www.aloha-editor.org/license.html
6
+ *//*
7
+ * Aloha Editor is free software: you can redistribute it and/or modify
8
+ * it under the terms of the GNU Affero General Public License as published by
9
+ * the Free Software Foundation, either version 3 of the License, or
10
+ * (at your option) any later version.*
11
+ *
12
+ * Aloha Editor is distributed in the hope that it will be useful,
13
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
14
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
15
+ * GNU Affero General Public License for more details.
16
+ *
17
+ * You should have received a copy of the GNU Affero General Public License
18
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
19
+ */
20
+
21
+ // Ensure GENTICS Namespace
22
+ GENTICS = window.GENTICS || {};
23
+ GENTICS.Utils = GENTICS.Utils || {};
24
+
25
+ define(
26
+ ['aloha/jquery', 'util/class', 'aloha/ecma5shims'],
27
+ function(jQuery, Class, $_) {
28
+
29
+
30
+ var
31
+ GENTICS = window.GENTICS,
32
+ // Class = window.Class,
33
+ // http://www.w3.org/TR/DOM-Level-3-Core/core.html#ID-1841493061
34
+ Node = {
35
+ 'ELEMENT_NODE' : 1,
36
+ 'ATTRIBUTE_NODE': 2,
37
+ 'TEXT_NODE': 3,
38
+ 'CDATA_SECTION_NODE': 4,
39
+ 'ENTITY_REFERENCE_NODE': 5,
40
+ 'ENTITY_NODE': 6,
41
+ 'PROCESSING_INSTRUCTION_NODE': 7,
42
+ 'COMMENT_NODE': 8,
43
+ 'DOCUMENT_NODE': 9,
44
+ 'DOCUMENT_TYPE_NODE': 10,
45
+ 'DOCUMENT_FRAGMENT_NODE': 11,
46
+ 'NOTATION_NODE': 12,
47
+ //The two nodes are disconnected. Order between disconnected nodes is always implementation-specific.
48
+ 'DOCUMENT_POSITION_DISCONNECTED': 0x01,
49
+ //The second node precedes the reference node.
50
+ 'DOCUMENT_POSITION_PRECEDING': 0x02,
51
+ //The node follows the reference node.
52
+ 'DOCUMENT_POSITION_FOLLOWING': 0x04,
53
+ //The node contains the reference node. A node which contains is always preceding, too.
54
+ 'DOCUMENT_POSITION_CONTAINS': 0x08,
55
+ //The node is contained by the reference node. A node which is contained is always following, too.
56
+ 'DOCUMENT_POSITION_CONTAINED_BY': 0x10,
57
+ //The determination of preceding versus following is implementation-specific.
58
+ 'DOCUMENT_POSITION_IMPLEMENTATION_SPECIFIC': 0x20
59
+ };
60
+
61
+
62
+
63
+ /**
64
+ * @namespace GENTICS.Utils
65
+ * @class Dom provides methods to get information about the DOM and to manipulate it
66
+ * @singleton
67
+ */
68
+ var Dom = Class.extend({
69
+ /**
70
+ * Regex to find word characters.
71
+ */
72
+ wordRegex: /[\u0041-\u005A\u0061-\u007A\u00AA\u00B5\u00BA\u00C0-\u00D6\u00D8-\u00F6\u00F8-\u02C1\u02C6-\u02D1\u02E0-\u02E4\u02EC\u02EE\u0370-\u0374\u0376\u0377\u037A-\u037D\u0386\u0388-\u038A\u038C\u038E-\u03A1\u03A3-\u03F5\u03F7-\u0481\u048A-\u0525\u0531-\u0556\u0559\u0561-\u0587\u05D0-\u05EA\u05F0-\u05F2\u0621-\u064A\u066E\u066F\u0671-\u06D3\u06D5\u06E5\u06E6\u06EE\u06EF\u06FA-\u06FC\u06FF\u0710\u0712-\u072F\u074D-\u07A5\u07B1\u07CA-\u07EA\u07F4\u07F5\u07FA\u0800-\u0815\u081A\u0824\u0828\u0904-\u0939\u093D\u0950\u0958-\u0961\u0971\u0972\u0979-\u097F\u0985-\u098C\u098F\u0990\u0993-\u09A8\u09AA-\u09B0\u09B2\u09B6-\u09B9\u09BD\u09CE\u09DC\u09DD\u09DF-\u09E1\u09F0\u09F1\u0A05-\u0A0A\u0A0F\u0A10\u0A13-\u0A28\u0A2A-\u0A30\u0A32\u0A33\u0A35\u0A36\u0A38\u0A39\u0A59-\u0A5C\u0A5E\u0A72-\u0A74\u0A85-\u0A8D\u0A8F-\u0A91\u0A93-\u0AA8\u0AAA-\u0AB0\u0AB2\u0AB3\u0AB5-\u0AB9\u0ABD\u0AD0\u0AE0\u0AE1\u0B05-\u0B0C\u0B0F\u0B10\u0B13-\u0B28\u0B2A-\u0B30\u0B32\u0B33\u0B35-\u0B39\u0B3D\u0B5C\u0B5D\u0B5F-\u0B61\u0B71\u0B83\u0B85-\u0B8A\u0B8E-\u0B90\u0B92-\u0B95\u0B99\u0B9A\u0B9C\u0B9E\u0B9F\u0BA3\u0BA4\u0BA8-\u0BAA\u0BAE-\u0BB9\u0BD0\u0C05-\u0C0C\u0C0E-\u0C10\u0C12-\u0C28\u0C2A-\u0C33\u0C35-\u0C39\u0C3D\u0C58\u0C59\u0C60\u0C61\u0C85-\u0C8C\u0C8E-\u0C90\u0C92-\u0CA8\u0CAA-\u0CB3\u0CB5-\u0CB9\u0CBD\u0CDE\u0CE0\u0CE1\u0D05-\u0D0C\u0D0E-\u0D10\u0D12-\u0D28\u0D2A-\u0D39\u0D3D\u0D60\u0D61\u0D7A-\u0D7F\u0D85-\u0D96\u0D9A-\u0DB1\u0DB3-\u0DBB\u0DBD\u0DC0-\u0DC6\u0E01-\u0E30\u0E32\u0E33\u0E40-\u0E46\u0E81\u0E82\u0E84\u0E87\u0E88\u0E8A\u0E8D\u0E94-\u0E97\u0E99-\u0E9F\u0EA1-\u0EA3\u0EA5\u0EA7\u0EAA\u0EAB\u0EAD-\u0EB0\u0EB2\u0EB3\u0EBD\u0EC0-\u0EC4\u0EC6\u0EDC\u0EDD\u0F00\u0F40-\u0F47\u0F49-\u0F6C\u0F88-\u0F8B\u1000-\u102A\u103F\u1050-\u1055\u105A-\u105D\u1061\u1065\u1066\u106E-\u1070\u1075-\u1081\u108E\u10A0-\u10C5\u10D0-\u10FA\u10FC\u1100-\u1248\u124A-\u124D\u1250-\u1256\u1258\u125A-\u125D\u1260-\u1288\u128A-\u128D\u1290-\u12B0\u12B2-\u12B5\u12B8-\u12BE\u12C0\u12C2-\u12C5\u12C8-\u12D6\u12D8-\u1310\u1312-\u1315\u1318-\u135A\u1380-\u138F\u13A0-\u13F4\u1401-\u166C\u166F-\u167F\u1681-\u169A\u16A0-\u16EA\u1700-\u170C\u170E-\u1711\u1720-\u1731\u1740-\u1751\u1760-\u176C\u176E-\u1770\u1780-\u17B3\u17D7\u17DC\u1820-\u1877\u1880-\u18A8\u18AA\u18B0-\u18F5\u1900-\u191C\u1950-\u196D\u1970-\u1974\u1980-\u19AB\u19C1-\u19C7\u1A00-\u1A16\u1A20-\u1A54\u1AA7\u1B05-\u1B33\u1B45-\u1B4B\u1B83-\u1BA0\u1BAE\u1BAF\u1C00-\u1C23\u1C4D-\u1C4F\u1C5A-\u1C7D\u1CE9-\u1CEC\u1CEE-\u1CF1\u1D00-\u1DBF\u1E00-\u1F15\u1F18-\u1F1D\u1F20-\u1F45\u1F48-\u1F4D\u1F50-\u1F57\u1F59\u1F5B\u1F5D\u1F5F-\u1F7D\u1F80-\u1FB4\u1FB6-\u1FBC\u1FBE\u1FC2-\u1FC4\u1FC6-\u1FCC\u1FD0-\u1FD3\u1FD6-\u1FDB\u1FE0-\u1FEC\u1FF2-\u1FF4\u1FF6-\u1FFC\u2071\u207F\u2090-\u2094\u2102\u2107\u210A-\u2113\u2115\u2119-\u211D\u2124\u2126\u2128\u212A-\u212D\u212F-\u2139\u213C-\u213F\u2145-\u2149\u214E\u2183\u2184\u2C00-\u2C2E\u2C30-\u2C5E\u2C60-\u2CE4\u2CEB-\u2CEE\u2D00-\u2D25\u2D30-\u2D65\u2D6F\u2D80-\u2D96\u2DA0-\u2DA6\u2DA8-\u2DAE\u2DB0-\u2DB6\u2DB8-\u2DBE\u2DC0-\u2DC6\u2DC8-\u2DCE\u2DD0-\u2DD6\u2DD8-\u2DDE\u2E2F\u3005\u3006\u3031-\u3035\u303B\u303C\u3041-\u3096\u309D-\u309F\u30A1-\u30FA\u30FC-\u30FF\u3105-\u312D\u3131-\u318E\u31A0-\u31B7\u31F0-\u31FF\u3400-\u4DB5\u4E00-\u9FCB\uA000-\uA48C\uA4D0-\uA4FD\uA500-\uA60C\uA610-\uA61F\uA62A\uA62B\uA640-\uA65F\uA662-\uA66E\uA67F-\uA697\uA6A0-\uA6E5\uA717-\uA71F\uA722-\uA788\uA78B\uA78C\uA7FB-\uA801\uA803-\uA805\uA807-\uA80A\uA80C-\uA822\uA840-\uA873\uA882-\uA8B3\uA8F2-\uA8F7\uA8FB\uA90A-\uA925\uA930-\uA946\uA960-\uA97C\uA984-\uA9B2\uA9CF\uAA00-\uAA28\uAA40-\uAA42\uAA44-\uAA4B\uAA60-\uAA76\uAA7A\uAA80-\uAAAF\uAAB1\uAAB5\uAAB6\uAAB9-\uAABD\uAAC0\uAAC2\uAADB-\uAADD\uABC0-\uABE2\uAC00-\uD7A3\uD7B0-\uD7C6\uD7CB-\uD7FB\uF900-\uFA2D\uFA30-\uFA6D\uFA70-\uFAD9\uFB00-\uFB06\uFB13-\uFB17\uFB1D\uFB1F-\uFB28\uFB2A-\uFB36\uFB38-\uFB3C\uFB3E\uFB40\uFB41\uFB43\uFB44\uFB46-\uFBB1\uFBD3-\uFD3D\uFD50-\uFD8F\uFD92-\uFDC7\uFDF0-\uFDFB\uFE70-\uFE74\uFE76-\uFEFC\uFF21-\uFF3A\uFF41-\uFF5A\uFF66-\uFFBE\uFFC2-\uFFC7\uFFCA-\uFFCF\uFFD2-\uFFD7\uFFDA-\uFFDC]/,
73
+
74
+ /**
75
+ * Regex to find non-word characters.
76
+ */
77
+ nonWordRegex: /[^\u0041-\u005A\u0061-\u007A\u00AA\u00B5\u00BA\u00C0-\u00D6\u00D8-\u00F6\u00F8-\u02C1\u02C6-\u02D1\u02E0-\u02E4\u02EC\u02EE\u0370-\u0374\u0376\u0377\u037A-\u037D\u0386\u0388-\u038A\u038C\u038E-\u03A1\u03A3-\u03F5\u03F7-\u0481\u048A-\u0525\u0531-\u0556\u0559\u0561-\u0587\u05D0-\u05EA\u05F0-\u05F2\u0621-\u064A\u066E\u066F\u0671-\u06D3\u06D5\u06E5\u06E6\u06EE\u06EF\u06FA-\u06FC\u06FF\u0710\u0712-\u072F\u074D-\u07A5\u07B1\u07CA-\u07EA\u07F4\u07F5\u07FA\u0800-\u0815\u081A\u0824\u0828\u0904-\u0939\u093D\u0950\u0958-\u0961\u0971\u0972\u0979-\u097F\u0985-\u098C\u098F\u0990\u0993-\u09A8\u09AA-\u09B0\u09B2\u09B6-\u09B9\u09BD\u09CE\u09DC\u09DD\u09DF-\u09E1\u09F0\u09F1\u0A05-\u0A0A\u0A0F\u0A10\u0A13-\u0A28\u0A2A-\u0A30\u0A32\u0A33\u0A35\u0A36\u0A38\u0A39\u0A59-\u0A5C\u0A5E\u0A72-\u0A74\u0A85-\u0A8D\u0A8F-\u0A91\u0A93-\u0AA8\u0AAA-\u0AB0\u0AB2\u0AB3\u0AB5-\u0AB9\u0ABD\u0AD0\u0AE0\u0AE1\u0B05-\u0B0C\u0B0F\u0B10\u0B13-\u0B28\u0B2A-\u0B30\u0B32\u0B33\u0B35-\u0B39\u0B3D\u0B5C\u0B5D\u0B5F-\u0B61\u0B71\u0B83\u0B85-\u0B8A\u0B8E-\u0B90\u0B92-\u0B95\u0B99\u0B9A\u0B9C\u0B9E\u0B9F\u0BA3\u0BA4\u0BA8-\u0BAA\u0BAE-\u0BB9\u0BD0\u0C05-\u0C0C\u0C0E-\u0C10\u0C12-\u0C28\u0C2A-\u0C33\u0C35-\u0C39\u0C3D\u0C58\u0C59\u0C60\u0C61\u0C85-\u0C8C\u0C8E-\u0C90\u0C92-\u0CA8\u0CAA-\u0CB3\u0CB5-\u0CB9\u0CBD\u0CDE\u0CE0\u0CE1\u0D05-\u0D0C\u0D0E-\u0D10\u0D12-\u0D28\u0D2A-\u0D39\u0D3D\u0D60\u0D61\u0D7A-\u0D7F\u0D85-\u0D96\u0D9A-\u0DB1\u0DB3-\u0DBB\u0DBD\u0DC0-\u0DC6\u0E01-\u0E30\u0E32\u0E33\u0E40-\u0E46\u0E81\u0E82\u0E84\u0E87\u0E88\u0E8A\u0E8D\u0E94-\u0E97\u0E99-\u0E9F\u0EA1-\u0EA3\u0EA5\u0EA7\u0EAA\u0EAB\u0EAD-\u0EB0\u0EB2\u0EB3\u0EBD\u0EC0-\u0EC4\u0EC6\u0EDC\u0EDD\u0F00\u0F40-\u0F47\u0F49-\u0F6C\u0F88-\u0F8B\u1000-\u102A\u103F\u1050-\u1055\u105A-\u105D\u1061\u1065\u1066\u106E-\u1070\u1075-\u1081\u108E\u10A0-\u10C5\u10D0-\u10FA\u10FC\u1100-\u1248\u124A-\u124D\u1250-\u1256\u1258\u125A-\u125D\u1260-\u1288\u128A-\u128D\u1290-\u12B0\u12B2-\u12B5\u12B8-\u12BE\u12C0\u12C2-\u12C5\u12C8-\u12D6\u12D8-\u1310\u1312-\u1315\u1318-\u135A\u1380-\u138F\u13A0-\u13F4\u1401-\u166C\u166F-\u167F\u1681-\u169A\u16A0-\u16EA\u1700-\u170C\u170E-\u1711\u1720-\u1731\u1740-\u1751\u1760-\u176C\u176E-\u1770\u1780-\u17B3\u17D7\u17DC\u1820-\u1877\u1880-\u18A8\u18AA\u18B0-\u18F5\u1900-\u191C\u1950-\u196D\u1970-\u1974\u1980-\u19AB\u19C1-\u19C7\u1A00-\u1A16\u1A20-\u1A54\u1AA7\u1B05-\u1B33\u1B45-\u1B4B\u1B83-\u1BA0\u1BAE\u1BAF\u1C00-\u1C23\u1C4D-\u1C4F\u1C5A-\u1C7D\u1CE9-\u1CEC\u1CEE-\u1CF1\u1D00-\u1DBF\u1E00-\u1F15\u1F18-\u1F1D\u1F20-\u1F45\u1F48-\u1F4D\u1F50-\u1F57\u1F59\u1F5B\u1F5D\u1F5F-\u1F7D\u1F80-\u1FB4\u1FB6-\u1FBC\u1FBE\u1FC2-\u1FC4\u1FC6-\u1FCC\u1FD0-\u1FD3\u1FD6-\u1FDB\u1FE0-\u1FEC\u1FF2-\u1FF4\u1FF6-\u1FFC\u2071\u207F\u2090-\u2094\u2102\u2107\u210A-\u2113\u2115\u2119-\u211D\u2124\u2126\u2128\u212A-\u212D\u212F-\u2139\u213C-\u213F\u2145-\u2149\u214E\u2183\u2184\u2C00-\u2C2E\u2C30-\u2C5E\u2C60-\u2CE4\u2CEB-\u2CEE\u2D00-\u2D25\u2D30-\u2D65\u2D6F\u2D80-\u2D96\u2DA0-\u2DA6\u2DA8-\u2DAE\u2DB0-\u2DB6\u2DB8-\u2DBE\u2DC0-\u2DC6\u2DC8-\u2DCE\u2DD0-\u2DD6\u2DD8-\u2DDE\u2E2F\u3005\u3006\u3031-\u3035\u303B\u303C\u3041-\u3096\u309D-\u309F\u30A1-\u30FA\u30FC-\u30FF\u3105-\u312D\u3131-\u318E\u31A0-\u31B7\u31F0-\u31FF\u3400-\u4DB5\u4E00-\u9FCB\uA000-\uA48C\uA4D0-\uA4FD\uA500-\uA60C\uA610-\uA61F\uA62A\uA62B\uA640-\uA65F\uA662-\uA66E\uA67F-\uA697\uA6A0-\uA6E5\uA717-\uA71F\uA722-\uA788\uA78B\uA78C\uA7FB-\uA801\uA803-\uA805\uA807-\uA80A\uA80C-\uA822\uA840-\uA873\uA882-\uA8B3\uA8F2-\uA8F7\uA8FB\uA90A-\uA925\uA930-\uA946\uA960-\uA97C\uA984-\uA9B2\uA9CF\uAA00-\uAA28\uAA40-\uAA42\uAA44-\uAA4B\uAA60-\uAA76\uAA7A\uAA80-\uAAAF\uAAB1\uAAB5\uAAB6\uAAB9-\uAABD\uAAC0\uAAC2\uAADB-\uAADD\uABC0-\uABE2\uAC00-\uD7A3\uD7B0-\uD7C6\uD7CB-\uD7FB\uF900-\uFA2D\uFA30-\uFA6D\uFA70-\uFAD9\uFB00-\uFB06\uFB13-\uFB17\uFB1D\uFB1F-\uFB28\uFB2A-\uFB36\uFB38-\uFB3C\uFB3E\uFB40\uFB41\uFB43\uFB44\uFB46-\uFBB1\uFBD3-\uFD3D\uFD50-\uFD8F\uFD92-\uFDC7\uFDF0-\uFDFB\uFE70-\uFE74\uFE76-\uFEFC\uFF21-\uFF3A\uFF41-\uFF5A\uFF66-\uFFBE\uFFC2-\uFFC7\uFFCA-\uFFCF\uFFD2-\uFFD7\uFFDA-\uFFDC]/,
78
+
79
+ /**
80
+ * Tags which can safely be merged
81
+ * @hide
82
+ */
83
+ mergeableTags: ['b', 'code', 'del', 'em', 'i', 'ins', 'strong', 'sub', 'sup', '#text'],
84
+
85
+ /**
86
+ * Tags which do not mark word boundaries
87
+ * @hide
88
+ */
89
+ nonWordBoundaryTags: ['a', 'b', 'code', 'del', 'em', 'i', 'ins', 'span', 'strong', 'sub', 'sup', '#text'],
90
+
91
+ /**
92
+ * Tags which are considered 'nonempty', even if they have no children (or not data)
93
+ * TODO: finish this list
94
+ * @hide
95
+ */
96
+ nonEmptyTags: ['br'],
97
+
98
+ /**
99
+ * Tags which make up Flow Content or Phrasing Content, according to the HTML 5 specification,
100
+ * @see http://dev.w3.org/html5/spec/Overview.html#flow-content
101
+ * @see http://dev.w3.org/html5/spec/Overview.html#phrasing-content
102
+ * @hide
103
+ */
104
+ tags: {
105
+ 'flow' : [ 'a', 'abbr', 'address', 'area', 'article', 'aside', 'audio',
106
+ 'b', 'bdo', 'blockquote', 'br', 'button', 'canvas', 'cite', 'code',
107
+ 'command', 'datalist', 'del', 'details', 'dfn', 'div', 'dl', 'em',
108
+ 'embed', 'fieldset', 'figure', 'footer', 'form', 'h1', 'h2', 'h3',
109
+ 'h4', 'h5', 'h6', 'header', 'hgroup', 'hr', 'i', 'iframe', 'img',
110
+ 'input', 'ins', 'kbd', 'keygen', 'label', 'map', 'mark', 'math',
111
+ 'menu', 'meter', 'nav', 'noscript', 'object', 'ol', 'output', 'p',
112
+ 'pre', 'progress', 'q', 'ruby', 'samp', 'script', 'section',
113
+ 'select', 'small', 'span', 'strong', 'style', 'sub', 'sup', 'svg',
114
+ 'table', 'textarea', 'time', 'ul', 'var', 'video', 'wbr', '#text' ],
115
+ 'phrasing' : [ 'a', 'abbr', 'area', 'audio', 'b', 'bdo', 'br', 'button',
116
+ 'canvas', 'cite', 'code', 'command', 'datalist', 'del', 'dfn',
117
+ 'em', 'embed', 'i', 'iframe', 'img', 'input', 'ins', 'kbd',
118
+ 'keygen', 'label', 'map', 'mark', 'math', 'meter', 'noscript',
119
+ 'object', 'output', 'progress', 'q', 'ruby', 'samp', 'script',
120
+ 'select', 'small', 'span', 'strong', 'sub', 'sup', 'svg',
121
+ 'textarea', 'time', 'var', 'video', 'wbr', '#text' ]
122
+ },
123
+
124
+ /**
125
+ * Possible children of tags, according to the HTML 5
126
+ * specification.
127
+ * See http://dev.w3.org/html5/spec/Overview.html#elements-1
128
+ * Moved to http://www.whatwg.org/specs/web-apps/current-work/#elements-1
129
+ * @hide
130
+ */
131
+ children: {
132
+ 'a' : 'phrasing', // transparent
133
+ 'abbr' : 'phrasing',
134
+ 'address' : 'flow',
135
+ 'area' : 'empty',
136
+ 'article' : 'flow',
137
+ 'aside' : 'flow',
138
+ 'audio' : 'source', // transparent
139
+ 'b' : 'phrasing',
140
+ 'base' : 'empty',
141
+ 'bdo' : 'phrasing',
142
+ 'blockquote' : 'phrasing',
143
+ 'body' : 'flow',
144
+ 'br' : 'empty',
145
+ 'button' : 'phrasing',
146
+ 'canvas' : 'phrasing', // transparent
147
+ 'caption' : 'flow',
148
+ 'cite' : 'phrasing',
149
+ 'code' : 'phrasing',
150
+ 'col' : 'empty',
151
+ 'colgroup' : 'col',
152
+ 'command' : 'empty',
153
+ 'datalist' : ['phrasing', 'option'],
154
+ 'dd' : 'flow',
155
+ 'del' : 'phrasing',
156
+ 'div' : 'flow',
157
+ 'details' : ['summary', 'flow'],
158
+ 'dfn' : 'flow',
159
+ 'dl' : ['dt','dd'],
160
+ 'dt' : 'phrasing', // varies
161
+ 'em' : 'phrasing',
162
+ 'embed' : 'empty',
163
+ 'fieldset' : ['legend', 'flow'],
164
+ 'figcaption': 'flow',
165
+ 'figure' : ['figcaption', 'flow'],
166
+ 'footer' : 'flow',
167
+ 'form' : 'flow',
168
+ 'h1' : 'phrasing',
169
+ 'h2' : 'phrasing',
170
+ 'h3' : 'phrasing',
171
+ 'h4' : 'phrasing',
172
+ 'h5' : 'phrasing',
173
+ 'h6' : 'phrasing',
174
+ //head
175
+ 'header' : 'flow',
176
+ 'hgroup' : ['h1','h2','h3','h4','h5','h6'],
177
+ 'hr' : 'empty',
178
+ //html :)
179
+ 'i' : 'phrasing',
180
+ 'iframe' : '#text',
181
+ 'img' : 'empty',
182
+ 'input' : 'empty',
183
+ 'ins' : 'phrasing', // transparent
184
+ 'kbd' : 'phrasing',
185
+ 'keygen' : 'empty',
186
+ 'label' : 'phrasing',
187
+ 'legend' : 'phrasing',
188
+ 'li' : 'flow',
189
+ 'link' : 'empty',
190
+ 'map' : 'area', // transparent
191
+ 'mark' : 'phrasing',
192
+ 'menu' : ['li', 'flow'],
193
+ 'meta' : 'empty',
194
+ 'meter' : 'phrasing',
195
+ 'nav' : 'flow',
196
+ 'noscript' : 'phrasing', // varies
197
+ 'object' : 'param', // transparent
198
+ 'ol' : 'li',
199
+ 'optgroup' : 'option',
200
+ 'option' : '#text',
201
+ 'output' : 'phrasing',
202
+ 'p' : 'phrasing',
203
+ 'param' : 'empty',
204
+ 'pre' : 'phrasing',
205
+ 'progress' : 'phrasing',
206
+ 'q' : 'phrasing',
207
+ 'rp' : 'phrasing',
208
+ 'rt' : 'phrasing',
209
+ 'ruby' : ['phrasing', 'rt', 'rp'],
210
+ 's' : 'phrasing',
211
+ 'samp' : 'pharsing',
212
+ 'script' : '#script', //script
213
+ 'section' : 'flow',
214
+ 'select' : ['option', 'optgroup'],
215
+ 'small' : 'phrasing',
216
+ 'source' : 'empty',
217
+ 'span' : 'phrasing',
218
+ 'strong' : 'phrasing',
219
+ 'style' : 'phrasing', // varies
220
+ 'sub' : 'phrasing',
221
+ 'summary' : 'phrasing',
222
+ 'sup' : 'phrasing',
223
+ 'table' : ['caption', 'colgroup', 'thead', 'tbody', 'tfoot', 'tr'],
224
+ 'tbody' : 'tr',
225
+ 'td' : 'flow',
226
+ 'textarea' : '#text',
227
+ 'tfoot' : 'tr',
228
+ 'th' : 'phrasing',
229
+ 'thead' : 'tr',
230
+ 'time' : 'phrasing',
231
+ 'title' : '#text',
232
+ 'tr' : ['th', 'td'],
233
+ 'track' : 'empty',
234
+ 'ul' : 'li',
235
+ 'var' : 'phrasing',
236
+ 'video' : 'source', // transparent
237
+ 'wbr' : 'empty'
238
+ },
239
+
240
+ /**
241
+ * List of nodenames of blocklevel elements
242
+ * TODO: finish this list
243
+ * @hide
244
+ */
245
+ blockLevelElements: ['p', 'h1', 'h2', 'h3', 'h4', 'h5', 'h6', 'blockquote', 'div', 'pre'],
246
+
247
+ /**
248
+ * List of nodenames of list elements
249
+ * @hide
250
+ */
251
+ listElements: ['li', 'ol', 'ul'],
252
+
253
+ /**
254
+ * Splits a DOM element at the given position up until the limiting object(s), so that it is valid HTML again afterwards.
255
+ * @param {RangeObject} range Range object that indicates the position of the splitting.
256
+ * This range will be updated, so that it represents the same range as before the split.
257
+ * @param {jQuery} limit Limiting node(s) for the split.
258
+ * The limiting node will not be included in the split itself.
259
+ * If no limiting object is set, the document body will be the limiting object.
260
+ * @param {boolean} atEnd If set to true, the DOM will be splitted at the end of the range otherwise at the start.
261
+ * @return {object} jQuery object containing the two root DOM objects of the split, true if the DOM did not need to be split or false if the DOM could not be split
262
+ * @method
263
+ */
264
+ split: function (range, limit, atEnd) {
265
+ var
266
+ splitElement = jQuery(range.startContainer),
267
+ splitPosition = range.startOffset,
268
+ updateRange, path, parents,
269
+ newDom, insertElement, secondPart,
270
+ i, pathLength, element, jqelement, children, newElement,
271
+ next, prev, offset;
272
+
273
+
274
+ if (atEnd) {
275
+ splitElement = jQuery(range.endContainer);
276
+ splitPosition = range.endOffset;
277
+ }
278
+
279
+ if (limit.length < 1) {
280
+ limit = jQuery(document.body);
281
+ }
282
+
283
+ // we may have to update the range if it is not collapsed and we are splitting at the start
284
+ updateRange = (!range.isCollapsed() && !atEnd);
285
+
286
+ // find the path up to the highest object that will be splitted
287
+ parents = splitElement.parents().get();
288
+ parents.unshift(splitElement.get(0));
289
+
290
+ jQuery.each(parents, function(index, element) {
291
+ var isLimit = limit.filter(
292
+ function(){
293
+ return this == element;
294
+ }).length;
295
+ if (isLimit) {
296
+ if (index > 0) {
297
+ path = parents.slice(0, index);
298
+ }
299
+ return false;
300
+ }
301
+ });
302
+
303
+ // nothing found to split -> return here
304
+ if (! path) {
305
+ return true;
306
+ }
307
+
308
+ path = path.reverse();
309
+
310
+ // iterate over the path, create new dom nodes for every element and move
311
+ // the contents right of the split to the new element
312
+ for( i=0, pathLength = path.length; i < pathLength; ++i) {
313
+ element = path[i];
314
+ if (i === pathLength - 1) {
315
+ // last element in the path -> we have to split it
316
+
317
+ // split the last part into two parts
318
+ if (element.nodeType === 3) {
319
+ // text node
320
+ secondPart = document.createTextNode(element.data.substring(splitPosition, element.data.length));
321
+ element.data = element.data.substring(0, splitPosition);
322
+ } else {
323
+ // other nodes
324
+ jqelement = jQuery(element);
325
+ children = jqelement.contents();
326
+ newElement = jqelement.clone(false).empty();
327
+ secondPart = newElement.append(children.slice(splitPosition, children.length)).get(0);
328
+ }
329
+
330
+ // update the range if necessary
331
+ if (updateRange && range.endContainer === element) {
332
+ range.endContainer = secondPart;
333
+ range.endOffset -= splitPosition;
334
+ range.clearCaches();
335
+ }
336
+
337
+ // add the second part
338
+ if (insertElement) {
339
+ insertElement.prepend(secondPart);
340
+ } else {
341
+ jQuery(element).after(secondPart);
342
+ }
343
+ } else {
344
+ // create the new element of the same type and prepend it to the previously created element
345
+ newElement = jQuery(element).clone(false).empty();
346
+
347
+ if (!newDom) {
348
+ newDom = newElement;
349
+ } else {
350
+ insertElement.prepend(newElement);
351
+ }
352
+ insertElement = newElement;
353
+
354
+ // move all contents right of the split to the new element
355
+ while ( true ) {
356
+ next = path[i+1].nextSibling;
357
+ if ( !next ) { break; }
358
+ insertElement.append(next);
359
+ }
360
+
361
+ // update the range if necessary
362
+ if (updateRange && range.endContainer === element) {
363
+ range.endContainer = newElement.get(0);
364
+ prev = path[i+1];
365
+ offset = 0;
366
+ while ( true ) {
367
+ prev = prev.previousSibling;
368
+ if ( !prev ) { break; }
369
+ offset++;
370
+ }
371
+ range.endOffset -= offset;
372
+ range.clearCaches();
373
+ }
374
+ }
375
+ }
376
+
377
+ // append the new dom
378
+ jQuery(path[0]).after(newDom);
379
+
380
+ return jQuery([path[0], newDom ? newDom.get(0) : secondPart]);
381
+ },
382
+
383
+ /**
384
+ * Check whether the HTML 5 specification allows direct nesting of the given DOM
385
+ * objects.
386
+ * @param {object} outerDOMObject
387
+ * outer (nesting) DOM Object
388
+ * @param {object} innerDOMObject
389
+ * inner (nested) DOM Object
390
+ * @return {boolean} true when the nesting is allowed, false if not
391
+ * @method
392
+ */
393
+ allowsNesting: function (outerDOMObject, innerDOMObject) {
394
+ if (!outerDOMObject || !outerDOMObject.nodeName || !innerDOMObject
395
+ || !innerDOMObject.nodeName) {
396
+ return false;
397
+ }
398
+
399
+ var outerNodeName = outerDOMObject.nodeName.toLowerCase(),
400
+ innerNodeName = innerDOMObject.nodeName.toLowerCase();
401
+
402
+ if (!this.children[outerNodeName]) {
403
+ return false;
404
+ }
405
+
406
+ // check whether the nesting is configured by node names (like for table)
407
+ if (this.children[outerNodeName] == innerNodeName) {
408
+ return true;
409
+ }
410
+ if (jQuery.isArray(this.children[outerNodeName])
411
+ && jQuery.inArray(innerNodeName, this.children[outerNodeName]) >= 0) {
412
+ return true;
413
+ }
414
+
415
+ if (jQuery.isArray(this.tags[this.children[outerNodeName]])
416
+ && jQuery.inArray(innerNodeName,
417
+ this.tags[this.children[outerNodeName]]) >= 0) {
418
+ return true;
419
+ }
420
+
421
+ return false;
422
+ },
423
+
424
+ /**
425
+ * Apply the given markup additively to the given range. The given rangeObject will be modified if necessary
426
+ * @param {GENTICS.Utils.RangeObject} rangeObject range to which the markup shall be added
427
+ * @param {jQuery} markup markup to be applied as jQuery object
428
+ * @param {boolean} allownesting true when nesting of the added markup is allowed, false if not (default: false)
429
+ * @method
430
+ */
431
+ addMarkup: function (rangeObject, markup, nesting) {
432
+ // split partially contained text nodes at the start and end of the range
433
+ if (rangeObject.startContainer.nodeType === 3 && rangeObject.startOffset > 0
434
+ && rangeObject.startOffset < rangeObject.startContainer.data.length) {
435
+ this.split(rangeObject, jQuery(rangeObject.startContainer).parent(),
436
+ false);
437
+ }
438
+ if (rangeObject.endContainer.nodeType === 3 && rangeObject.endOffset > 0
439
+ && rangeObject.endOffset < rangeObject.endContainer.data.length) {
440
+ this.split(rangeObject, jQuery(rangeObject.endContainer).parent(),
441
+ true);
442
+ }
443
+
444
+ // get the range tree
445
+ var rangeTree = rangeObject.getRangeTree();
446
+ this.recursiveAddMarkup(rangeTree, markup, rangeObject, nesting);
447
+
448
+ // cleanup DOM
449
+ this.doCleanup({'merge' : true, 'removeempty' : true}, rangeObject);
450
+ },
451
+
452
+ /**
453
+ * Recursive helper method to add the given markup to the range
454
+ * @param rangeTree rangetree at the current level
455
+ * @param markup markup to be applied
456
+ * @param rangeObject range object, which eventually is updated
457
+ * @param nesting true when nesting of the added markup is allowed, false if not
458
+ * @hide
459
+ */
460
+ recursiveAddMarkup: function (rangeTree, markup, rangeObject, nesting) {
461
+ var i, innerRange, rangeLength;
462
+
463
+ // iterate through all rangetree objects of that level
464
+ for ( i = 0, rangeLength = rangeTree.length; i < rangeLength; ++i) {
465
+ // check whether the rangetree object is fully contained and the markup may be wrapped around the object
466
+ if (rangeTree[i].type == 'full' && this.allowsNesting(markup.get(0), rangeTree[i].domobj)) {
467
+ // we wrap the object, when
468
+ // 1. nesting of markup is allowed or the node is not of the markup to be added
469
+ // 2. the node an element node or a non-empty text node
470
+ if ((nesting || rangeTree[i].domobj.nodeName != markup.get(0).nodeName)
471
+ && (rangeTree[i].domobj.nodeType !== 3 || jQuery
472
+ .trim(rangeTree[i].domobj.data).length !== 0)) {
473
+ // wrap the object
474
+ jQuery(rangeTree[i].domobj).wrap(markup);
475
+
476
+ // TODO eventually update the range (if it changed)
477
+
478
+ // when nesting is not allowed, we remove the markup from the inner element
479
+ if (!nesting && rangeTree[i].domobj.nodeType !== 3) {
480
+ innerRange = new GENTICS.Utils.RangeObject();
481
+ innerRange.startContainer = innerRange.endContainer = rangeTree[i].domobj.parentNode;
482
+ innerRange.startOffset = 0;
483
+ innerRange.endOffset = innerRange.endContainer.childNodes.length;
484
+ this.removeMarkup(innerRange, markup, jQuery(rangeTree[i].domobj.parentNode));
485
+ }
486
+ }
487
+ } else {
488
+ // TODO check whether the object may be replaced by the given markup
489
+ if (false) {
490
+ // TODO replace
491
+ } else {
492
+ // recurse into the children (if any), but not if nesting is not
493
+ // allowed and the object is of the markup to be added
494
+ if ((nesting || (rangeTree[i].domobj && rangeTree[i].domobj.nodeName !== markup.get(0).nodeName))
495
+ && rangeTree[i].children && rangeTree[i].children.length > 0) {
496
+ this.recursiveAddMarkup(rangeTree[i].children, markup);
497
+ }
498
+ }
499
+ }
500
+ }
501
+ },
502
+
503
+ /**
504
+ * Find the highest occurrence of a node with given nodename within the parents
505
+ * of the start. When limit objects are given, the search stops there.
506
+ * The limiting object is of the found type, it won't be considered
507
+ * @param {DOMObject} start start object
508
+ * @param {String} nodeName name of the node to search for (case-insensitive)
509
+ * @param {jQuery} limit Limiting node(s) as jQuery object (if none given, the search will stop when there are no more parents)
510
+ * @return {DOMObject} the found DOM object or undefined
511
+ * @method
512
+ */
513
+ findHighestElement: function (start, nodeName, limit) {
514
+ nodeName = nodeName.toLowerCase();
515
+
516
+ // this will be the highest found markup object (up to a limit object)
517
+ var highestObject,
518
+ // blah
519
+ testObject = start,
520
+ // helper function to stop when we reach a limit object
521
+ isLimit = limit ? function () {
522
+ return limit.filter(
523
+ function() {
524
+ return testObject == this;
525
+ }
526
+ ).length;
527
+ } : function () {
528
+ return false;
529
+ };
530
+
531
+ // now get the highest parent that has the given markup (until we reached
532
+ // one of the limit objects or there are no more parent nodes)
533
+ while (!isLimit() && testObject) {
534
+ if (testObject.nodeName.toLowerCase() === nodeName) {
535
+ highestObject = testObject;
536
+ }
537
+ testObject = testObject.parentNode;
538
+ }
539
+
540
+ return highestObject;
541
+ },
542
+
543
+ /**
544
+ * Remove the given markup from the given range. The given rangeObject will be modified if necessary
545
+ * TODO: add parameter deep/shallow
546
+ * @param {GENTICS.Utils.RangeObject} rangeObject range from which the markup shall be removed
547
+ * @param {jQuery} markup markup to be removed as jQuery object
548
+ * @param {jQuery} limit Limiting node(s) as jQuery object
549
+ * @method
550
+ */
551
+ removeMarkup: function (rangeObject, markup, limit) {
552
+ var nodeName = markup.get(0).nodeName,
553
+ startSplitLimit = this.findHighestElement(rangeObject.startContainer, nodeName, limit),
554
+ endSplitLimit = this.findHighestElement(rangeObject.endContainer, nodeName, limit),
555
+ didSplit = false,
556
+ highestObject, root, rangeTree;
557
+
558
+ if (startSplitLimit && rangeObject.startOffset > 0) {
559
+ // when the start is in the start of its container, we don't split
560
+ this.split(rangeObject, jQuery(startSplitLimit).parent(), false);
561
+ didSplit = true;
562
+ }
563
+
564
+ if (endSplitLimit) {
565
+ // when the end is in the end of its container, we don't split
566
+ if (rangeObject.endContainer.nodeType === 3 && rangeObject.endOffset < rangeObject.endContainer.data.length) {
567
+ this.split(rangeObject, jQuery(endSplitLimit).parent(), true);
568
+ didSplit = true;
569
+ }
570
+ if (rangeObject.endContainer.nodeType === 1 && rangeObject.endOffset < rangeObject.childNodes.length) {
571
+ this.split(rangeObject, jQuery(endSplitLimit).parent(), true);
572
+ didSplit = true;
573
+ }
574
+ }
575
+
576
+ // when we split the DOM, we maybe need to correct the range
577
+ if (didSplit) {
578
+ rangeObject.correctRange();
579
+ }
580
+
581
+ // find the highest occurrence of the markup
582
+ highestObject = this.findHighestElement(rangeObject.getCommonAncestorContainer(), nodeName, limit);
583
+ root = highestObject ? highestObject.parentNode : rangeObject.getCommonAncestorContainer();
584
+
585
+ if (root) {
586
+ // construct the range tree
587
+ rangeTree = rangeObject.getRangeTree(root);
588
+
589
+ // remove the markup from the range tree
590
+ this.recursiveRemoveMarkup(rangeTree, markup);
591
+
592
+ // cleanup DOM
593
+ this.doCleanup({'merge' : true, 'removeempty' : true}, rangeObject, root);
594
+ }
595
+ },
596
+
597
+ /**
598
+ * TODO: pass the range itself and eventually update it if necessary
599
+ * Recursive helper method to remove the given markup from the range
600
+ * @param rangeTree rangetree at the current level
601
+ * @param markup markup to be applied
602
+ * @hide
603
+ */
604
+ recursiveRemoveMarkup: function (rangeTree, markup) {
605
+ var i, rangeLength, content;
606
+ // iterate over the rangetree objects of this level
607
+ for (i = 0, rangeLength = rangeTree.length; i < rangeLength; ++i) {
608
+ // check whether the object is the markup to be removed and is fully into the range
609
+ if (rangeTree[i].type == 'full' && rangeTree[i].domobj.nodeName == markup.get(0).nodeName) {
610
+ // found the markup, so remove it
611
+ content = jQuery(rangeTree[i].domobj).contents();
612
+ if (content.length > 0) {
613
+ // when the object has children, we unwrap them
614
+ content.first().unwrap();
615
+ } else {
616
+ // obj has no children, so just remove it
617
+ jQuery(rangeTree[i].domobj).remove();
618
+ }
619
+ }
620
+
621
+ // if the object has children, we do the recursion now
622
+ if (rangeTree[i].children) {
623
+ this.recursiveRemoveMarkup(rangeTree[i].children, markup);
624
+ }
625
+ }
626
+ },
627
+
628
+ /**
629
+ * Cleanup the DOM, starting with the given startobject (or the common ancestor container of the given range)
630
+ * ATTENTION: If range is a selection you need to update the selection after doCleanup
631
+ * Cleanup modes (given as properties in 'cleanup'):
632
+ * <pre>
633
+ * - merge: merges multiple successive nodes of same type, if this is allowed, starting at the children of the given node (defaults to false)
634
+ * - removeempty: removes empty element nodes (defaults to false)
635
+ * </pre>
636
+ * Example for calling this method:<br/>
637
+ * <code>GENTICS.Utils.Dom.doCleanup({merge:true,removeempty:false}, range)</code>
638
+ * @param {object} cleanup type of cleanup to be done
639
+ * @param {GENTICS.Utils.RangeObject} rangeObject range which is eventually updated
640
+ * @param {DOMObject} start start object, if not given, the commonancestorcontainer is used as startobject insted
641
+ * @return {boolean} true when the range (startContainer/startOffset/endContainer/endOffset) was modified, false if not
642
+ * @method
643
+ */
644
+ doCleanup: function(cleanup, rangeObject, start) {
645
+ var that = this, prevNode, modifiedRange, startObject, startOffset, endOffset;
646
+
647
+ if (typeof cleanup === 'undefined') {
648
+ cleanup = {};
649
+ }
650
+ if (typeof cleanup.merge === 'undefined') {
651
+ cleanup.merge = false;
652
+ }
653
+ if (typeof cleanup.removeempty === 'undefined') {
654
+ cleanup.removeempty = false;
655
+ }
656
+
657
+ if (typeof start === 'undefined' && rangeObject) {
658
+ start = rangeObject.getCommonAncestorContainer();
659
+ }
660
+ // remember the previous node here (successive nodes of same type will be merged into this)
661
+ prevNode = false;
662
+ // check whether the range needed to be modified during merging
663
+ modifiedRange = false;
664
+ // get the start object
665
+ startObject = jQuery(start);
666
+ startOffset = rangeObject.startOffset;
667
+ endOffset = rangeObject.endOffset;
668
+
669
+ // iterate through all sub nodes
670
+ startObject.contents().each(function(index) {
671
+ // decide further actions by node type
672
+ switch(this.nodeType) {
673
+ // found a non-text node
674
+ case 1:
675
+ if (prevNode && prevNode.nodeName == this.nodeName) {
676
+ // found a successive node of same type
677
+
678
+ // now we check whether the selection starts or ends in the mother node after the current node
679
+ if (rangeObject.startContainer === startObject && startOffset > index) {
680
+ // there will be one less object, so reduce the startOffset by one
681
+ rangeObject.startOffset -= 1;
682
+ // set the flag for range modification
683
+ modifiedRange = true;
684
+ }
685
+ if (rangeObject.endContainer === startObject && endOffset > index) {
686
+ // there will be one less object, so reduce the endOffset by one
687
+ rangeObject.endOffset -= 1;
688
+ // set the flag for range modification
689
+ modifiedRange = true;
690
+ }
691
+
692
+ // merge the contents of this node into the previous one
693
+ jQuery(prevNode).append(jQuery(this).contents());
694
+
695
+ // after merging, we eventually need to cleanup the prevNode again
696
+ modifiedRange |= that.doCleanup(cleanup, rangeObject, prevNode);
697
+
698
+ // remove this node
699
+ jQuery(this).remove();
700
+
701
+ } else {
702
+
703
+ // do the recursion step here
704
+ modifiedRange |= that.doCleanup(cleanup, rangeObject, this);
705
+
706
+ // eventually remove empty elements
707
+ var removed = false;
708
+ if (cleanup.removeempty) {
709
+ if (GENTICS.Utils.Dom.isBlockLevelElement(this) && this.childNodes.length === 0) {
710
+ // jQuery(this).remove();
711
+ removed = true;
712
+ }
713
+ if (jQuery.inArray(this.nodeName.toLowerCase(), that.mergeableTags) >= 0
714
+ && jQuery(this).text().length === 0 && this.childNodes.length === 0) {
715
+ // jQuery(this).remove();
716
+ removed = true;
717
+ }
718
+ }
719
+
720
+ // when the current node was not removed, we eventually store it as previous (mergeable) tag
721
+ if (!removed) {
722
+ if (jQuery.inArray(this.nodeName.toLowerCase(), that.mergeableTags) >= 0) {
723
+ prevNode = this;
724
+ } else {
725
+ prevNode = false;
726
+ }
727
+ } else {
728
+ // now we check whether the selection starts or ends in the mother node of this
729
+ if (rangeObject.startContainer === this.parentNode && startOffset > index) {
730
+ // there will be one less object, so reduce the startOffset by one
731
+ rangeObject.startOffset = rangeObject.startOffset - 1;
732
+ // set the flag for range modification
733
+ modifiedRange = true;
734
+ }
735
+ if (rangeObject.endContainer === this.parentNode && endOffset > index) {
736
+ // there will be one less object, so reduce the endOffset by one
737
+ rangeObject.endOffset = rangeObject.endOffset - 1;
738
+ // set the flag for range modification
739
+ modifiedRange = true;
740
+ }
741
+
742
+ // remove this text node
743
+ jQuery(this).remove();
744
+
745
+ }
746
+ }
747
+
748
+ break;
749
+ // found a text node
750
+ case 3:
751
+ // found a text node
752
+ if (prevNode && prevNode.nodeType === 3 && cleanup.merge) {
753
+ // the current text node will be merged into the last one, so
754
+ // check whether the selection starts or ends in the current
755
+ // text node
756
+ if (rangeObject.startContainer === this) {
757
+ // selection starts in the current text node
758
+
759
+ // update the start container to the last node
760
+ rangeObject.startContainer = prevNode;
761
+
762
+ // update the start offset
763
+ rangeObject.startOffset += prevNode.nodeValue.length;
764
+
765
+ // set the flag for range modification
766
+ modifiedRange = true;
767
+
768
+ } else if (rangeObject.startContainer === prevNode.parentNode
769
+ && rangeObject.startOffset === that.getIndexInParent(prevNode) + 1) {
770
+ // selection starts right between the previous and current text nodes (which will be merged)
771
+
772
+ // update the start container to the previous node
773
+ rangeObject.startContainer = prevNode;
774
+
775
+ // set the start offset
776
+ rangeObject.startOffset = prevNode.nodeValue.length;
777
+
778
+ // set the flag for range modification
779
+ modifiedRange = true;
780
+ }
781
+
782
+ if (rangeObject.endContainer === this) {
783
+ // selection ends in the current text node
784
+
785
+ // update the end container to be the last node
786
+ rangeObject.endContainer = prevNode;
787
+
788
+ // update the end offset
789
+ rangeObject.endOffset += prevNode.nodeValue.length;
790
+
791
+ // set the flag for range modification
792
+ modifiedRange = true;
793
+
794
+ } else if (rangeObject.endContainer === prevNode.parentNode
795
+ && rangeObject.endOffset === that.getIndexInParent(prevNode) + 1) {
796
+ // selection ends right between the previous and current text nodes (which will be merged)
797
+
798
+ // update the end container to the previous node
799
+ rangeObject.endContainer = prevNode;
800
+
801
+ // set the end offset
802
+ rangeObject.endOffset = prevNode.nodeValue.length;
803
+
804
+ // set the flag for range modification
805
+ modifiedRange = true;
806
+ }
807
+
808
+ // now append the contents of the current text node into the previous
809
+ prevNode.data += this.data;
810
+
811
+ // remove empty text nodes
812
+ } else if ( this.nodeValue === '' && cleanup.removeempty ) {
813
+ // do nothing here.
814
+
815
+ // remember it as the last text node if not empty
816
+ } else if ( !(this.nodeValue === '' && cleanup.removeempty) ) {
817
+ prevNode = this;
818
+ // we are finish here don't delete this node
819
+ break;
820
+ }
821
+
822
+ // now we check whether the selection starts or ends in the mother node of this
823
+ if (rangeObject.startContainer === this.parentNode && rangeObject.startOffset > index) {
824
+ // there will be one less object, so reduce the startOffset by one
825
+ rangeObject.startOffset = rangeObject.startOffset - 1;
826
+ // set the flag for range modification
827
+ modifiedRange = true;
828
+ }
829
+ if (rangeObject.endContainer === this.parentNode && rangeObject.endOffset > index) {
830
+ // there will be one less object, so reduce the endOffset by one
831
+ rangeObject.endOffset = rangeObject.endOffset - 1;
832
+ // set the flag for range modification
833
+ modifiedRange = true;
834
+ }
835
+
836
+ // remove this text node
837
+ jQuery(this).remove();
838
+
839
+ break;
840
+ }
841
+ });
842
+
843
+ // eventually remove the startnode itself
844
+ // if (cleanup.removeempty
845
+ // && GENTICS.Utils.Dom.isBlockLevelElement(start)
846
+ // && (!start.childNodes || start.childNodes.length === 0)) {
847
+ // if (rangeObject.startContainer == start) {
848
+ // rangeObject.startContainer = start.parentNode;
849
+ // rangeObject.startOffset = GENTICS.Utils.Dom.getIndexInParent(start);
850
+ // }
851
+ // if (rangeObject.endContainer == start) {
852
+ // rangeObject.endContainer = start.parentNode;
853
+ // rangeObject.endOffset = GENTICS.Utils.Dom.getIndexInParent(start);
854
+ // }
855
+ // startObject.remove();
856
+ // modifiedRange = true;
857
+ // }
858
+
859
+ if (modifiedRange) {
860
+ rangeObject.clearCaches();
861
+ }
862
+
863
+ return modifiedRange;
864
+ },
865
+
866
+ /**
867
+ * Get the index of the given node within its parent node
868
+ * @param {DOMObject} node node to check
869
+ * @return {Integer} index in the parent node or false if no node given or node has no parent
870
+ * @method
871
+ */
872
+ getIndexInParent: function (node) {
873
+ if (!node) {
874
+ return false;
875
+ }
876
+
877
+ var
878
+ index = 0,
879
+ check = node.previousSibling;
880
+
881
+ while(check) {
882
+ index++;
883
+ check = check.previousSibling;
884
+ }
885
+
886
+ return index;
887
+ },
888
+
889
+ /**
890
+ * Check whether the given node is a blocklevel element
891
+ * @param {DOMObject} node node to check
892
+ * @return {boolean} true if yes, false if not (or null)
893
+ * @method
894
+ */
895
+ isBlockLevelElement: function (node) {
896
+ if (!node) {
897
+ return false;
898
+ }
899
+ if (node.nodeType === 1 && jQuery.inArray(node.nodeName.toLowerCase(), this.blockLevelElements) >= 0) {
900
+ return true;
901
+ } else {
902
+ return false;
903
+ }
904
+ },
905
+
906
+ /**
907
+ * Check whether the given node is a linebreak element
908
+ * @param {DOMObject} node node to check
909
+ * @return {boolean} true for linebreak elements, false for everything else
910
+ * @method
911
+ */
912
+ isLineBreakElement: function (node) {
913
+ if (!node) {
914
+ return false;
915
+ }
916
+ return node.nodeType === 1 && node.nodeName.toLowerCase() == 'br';
917
+ },
918
+
919
+ /**
920
+ * Check whether the given node is a list element
921
+ * @param {DOMObject} node node to check
922
+ * @return {boolean} true for list elements (li, ul, ol), false for everything else
923
+ * @method
924
+ */
925
+ isListElement: function (node) {
926
+ if (!node) {
927
+ return false;
928
+ }
929
+ return node.nodeType === 1 && jQuery.inArray(node.nodeName.toLowerCase(), this.listElements) >= 0;
930
+ },
931
+
932
+ /**
933
+ * This method checks, whether the passed dom object is a dom object, that would
934
+ * be split in cases of pressing enter. This currently is true for paragraphs
935
+ * and headings
936
+ * @param {DOMObject} el
937
+ * dom object to check
938
+ * @return {boolean} true for split objects, false for other
939
+ * @method
940
+ */
941
+ isSplitObject: function(el) {
942
+ if (el.nodeType === 1){
943
+ switch(el.nodeName.toLowerCase()) {
944
+ case 'p':
945
+ case 'h1':
946
+ case 'h2':
947
+ case 'h3':
948
+ case 'h4':
949
+ case 'h5':
950
+ case 'h6':
951
+ case 'li':
952
+ return true;
953
+ }
954
+ }
955
+ return false;
956
+ },
957
+
958
+ /**
959
+ * Starting with the given position (between nodes), search in the given direction to an adjacent notempty text node
960
+ * @param {DOMObject} parent parent node containing the position
961
+ * @param {Integer} index index of the position within the parent node
962
+ * @param {boolean} searchleft true when search direction is 'left' (default), false for 'right'
963
+ * @param {object} stopat define at which types of element we shall stop, may contain the following properties
964
+ * <pre>
965
+ * - blocklevel (default: true)
966
+ * - list (default: true)
967
+ * - linebreak (default: true)
968
+ * </pre>
969
+ * @return {DOMObject} the found text node or false if none found
970
+ * @method
971
+ */
972
+ searchAdjacentTextNode: function (parent, index, searchleft, stopat) {
973
+ if (!parent || parent.nodeType !== 1 || index < 0 || index > parent.childNodes.length) {
974
+ return false;
975
+ }
976
+
977
+ if (typeof stopat === 'undefined') {
978
+ stopat = {'blocklevel' : true, 'list' : true, 'linebreak' : true};
979
+ }
980
+
981
+ if (typeof stopat.blocklevel === 'undefined') {
982
+ stopat.blocklevel = true;
983
+ }
984
+ if (typeof stopat.list === 'undefined') {
985
+ stopat.list = true;
986
+ }
987
+ if (typeof stopat.linebreak === 'undefined') {
988
+ stopat.linebreak = true;
989
+ }
990
+
991
+ if (typeof searchleft === 'undefined') {
992
+ searchleft = true;
993
+ }
994
+
995
+ var
996
+ nextNode,
997
+ currentParent = parent;
998
+
999
+ // start at the node left/right of the given position
1000
+ if (searchleft && index > 0) {
1001
+ nextNode = parent.childNodes[index - 1];
1002
+ }
1003
+ if (!searchleft && index < parent.childNodes.length) {
1004
+ nextNode = parent.childNodes[index];
1005
+ }
1006
+
1007
+ //currentParent is not a number therefore it is sufficient to directly test for it with while(currentParent)
1008
+ //otherwise there would be an error if the object is null
1009
+ while (currentParent) {
1010
+ //while (typeof currentParent !== 'undefined') {
1011
+ if (!nextNode) {
1012
+ // no next node found, check whether the parent is a blocklevel element
1013
+ if (stopat.blocklevel && this.isBlockLevelElement(currentParent)) {
1014
+ // do not leave block level elements
1015
+ return false;
1016
+ } else if (stopat.list && this.isListElement(currentParent)) {
1017
+ // do not leave list elements
1018
+ return false;
1019
+ } else {
1020
+ // continue with the parent
1021
+ nextNode = searchleft ? currentParent.previousSibling : currentParent.nextSibling;
1022
+ currentParent = currentParent.parentNode;
1023
+ }
1024
+ } else if (nextNode.nodeType === 3 && jQuery.trim(nextNode.data).length > 0) {
1025
+ // we are lucky and found a notempty text node
1026
+ return nextNode;
1027
+ } else if (stopat.blocklevel && this.isBlockLevelElement(nextNode)) {
1028
+ // we found a blocklevel element, stop here
1029
+ return false;
1030
+ } else if (stopat.linebreak && this.isLineBreakElement(nextNode)) {
1031
+ // we found a linebreak, stop here
1032
+ return false;
1033
+ } else if (stopat.list && this.isListElement(nextNode)) {
1034
+ // we found a linebreak, stop here
1035
+ return false;
1036
+ } else if (nextNode.nodeType === 3) {
1037
+ // we found an empty text node, so step to the next
1038
+ nextNode = searchleft ? nextNode.previousSibling : nextNode.nextSibling;
1039
+ } else {
1040
+ // we found a non-blocklevel element, step into
1041
+ currentParent = nextNode;
1042
+ nextNode = searchleft ? nextNode.lastChild : nextNode.firstChild;
1043
+ }
1044
+ }
1045
+ },
1046
+
1047
+ /**
1048
+ * Insert the given DOM Object into the start/end of the given range. The method
1049
+ * will find the appropriate place in the DOM tree for inserting the given
1050
+ * object, and will eventually split elements in between. The given range will
1051
+ * be updated if necessary. The updated range will NOT embrace the inserted
1052
+ * object, which means that the object is actually inserted before or after the
1053
+ * given range (depending on the atEnd parameter)
1054
+ *
1055
+ * @param {jQuery}
1056
+ * object object to insert into the DOM
1057
+ * @param {GENTICS.Utils.RangeObject}
1058
+ * range range where to insert the object (at start or end)
1059
+ * @param {jQuery}
1060
+ * limit limiting object(s) of the DOM modification
1061
+ * @param {boolean}
1062
+ * atEnd true when the object shall be inserted at the end, false for
1063
+ * insertion at the start (default)
1064
+ * @param {boolean}
1065
+ * true when the insertion shall be done, even if inserting the element
1066
+ * would not be allowed, false to deny inserting unallowed elements (default)
1067
+ * @return true if the object could be inserted, false if not.
1068
+ * @method
1069
+ */
1070
+ insertIntoDOM: function (object, range, limit, atEnd, force) {
1071
+ // first find the appropriate place to insert the given object
1072
+ var parentElements = range.getContainerParents(limit, atEnd),
1073
+ that = this,
1074
+ newParent,
1075
+ container, offset, splitParts, contents;
1076
+
1077
+ if (!limit) {
1078
+ limit = jQuery(document.body);
1079
+ }
1080
+
1081
+ // if no parent elements exist (up to the limit), the new parent will be the
1082
+ // limiter itself
1083
+ if (parentElements.length === 0) {
1084
+ newParent = limit.get(0);
1085
+ } else {
1086
+ jQuery.each(parentElements, function (index, parent) {
1087
+ if (that.allowsNesting(parent, object.get(0))) {
1088
+ newParent = parent;
1089
+ return false;
1090
+ }
1091
+ });
1092
+ }
1093
+
1094
+ if (typeof newParent === 'undefined' && limit.length > 0) {
1095
+ // found no possible new parent, so split up to the limit object
1096
+ newParent = limit.get(0);
1097
+ }
1098
+
1099
+ // check whether it is allowed to insert the element at all
1100
+ if (!this.allowsNesting(newParent, object.get(0)) && !force) {
1101
+ return false;
1102
+ }
1103
+
1104
+ if (typeof newParent !== 'undefined') {
1105
+ // we found a possible new parent, so we split the DOM up to the new parent
1106
+ splitParts = this.split(range, jQuery(newParent), atEnd);
1107
+ if (splitParts === true) {
1108
+ // DOM was not split (there was no need to split it), insert the new object anyway
1109
+ container = range.startContainer;
1110
+ offset = range.startOffset;
1111
+ if (atEnd) {
1112
+ container = range.endContainer;
1113
+ offset = range.endOffset;
1114
+ }
1115
+ if (offset === 0) {
1116
+ // insert right before the first element in the container
1117
+ contents = jQuery(container).contents();
1118
+ if (contents.length > 0) {
1119
+ contents.eq(0).before(object);
1120
+ } else {
1121
+ jQuery(container).append(object);
1122
+ }
1123
+ return true;
1124
+ } else {
1125
+ // insert right after the element at offset-1
1126
+ jQuery(container).contents().eq(offset-1).after(object);
1127
+ return true;
1128
+ }
1129
+ } else if (splitParts) {
1130
+ // if the DOM could be split, we insert the new object in between the split parts
1131
+ splitParts.eq(0).after(object);
1132
+ return true;
1133
+ } else {
1134
+ // could not split, so could not insert
1135
+ return false;
1136
+ }
1137
+ } else {
1138
+ // found no possible new parent, so we shall not insert
1139
+ return false;
1140
+ }
1141
+ },
1142
+
1143
+ /**
1144
+ * Remove the given DOM object from the DOM and modify the given range to reflect the user expected range after the object was removed
1145
+ * TODO: finish this
1146
+ * @param {DOMObject} object DOM object to remove
1147
+ * @param {GENTICS.Utils.RangeObject} range range which eventually be modified
1148
+ * @param {boolean} preserveContent true if the contents of the removed DOM object shall be preserved, false if not (default: false)
1149
+ * @return true if the DOM object could be removed, false if not
1150
+ * @hide
1151
+ */
1152
+ removeFromDOM: function (object, range, preserveContent) {
1153
+ if (preserveContent) {
1154
+ // check whether the range will need modification
1155
+ var indexInParent = this.getIndexInParent(object),
1156
+ numChildren = jQuery(object).contents().length,
1157
+ parent = object.parentNode;
1158
+
1159
+ if (range.startContainer == parent && range.startOffset > indexInParent) {
1160
+ range.startOffset += numChildren - 1;
1161
+ } else if (range.startContainer == object) {
1162
+ range.startContainer = parent;
1163
+ range.startOffset = indexInParent + range.startOffset;
1164
+ }
1165
+
1166
+ if (range.endContainer == parent && range.endOffset > indexInParent) {
1167
+ range.endOffset += numChildren - 1;
1168
+ } else if (range.endContainer == object) {
1169
+ range.endContainer = parent;
1170
+ range.endOffset = indexInParent + range.endOffset;
1171
+ }
1172
+
1173
+ // we simply unwrap the children of the object
1174
+ jQuery(object).contents().unwrap();
1175
+
1176
+ // optionally do cleanup
1177
+ this.doCleanup({'merge' : true}, range, parent);
1178
+ } else {
1179
+ // TODO
1180
+ }
1181
+ },
1182
+
1183
+ /**
1184
+ * Remove the content defined by the given range from the DOM. Update the given
1185
+ * range object to be a collapsed selection at the place of the previous
1186
+ * selection.
1187
+ * @param rangeObject range object
1188
+ * @return true if the range could be removed, false if not
1189
+ */
1190
+ removeRange: function (rangeObject) {
1191
+ if (!rangeObject) {
1192
+ // no range given
1193
+ return false;
1194
+ }
1195
+ if (rangeObject.isCollapsed()) {
1196
+ // the range is collapsed, nothing to delete
1197
+ return false;
1198
+ }
1199
+
1200
+ // split partially contained text nodes at the start and end of the range
1201
+ if (rangeObject.startContainer.nodeType == 3 && rangeObject.startOffset > 0
1202
+ && rangeObject.startOffset < rangeObject.startContainer.data.length) {
1203
+ this.split(rangeObject, jQuery(rangeObject.startContainer).parent(),
1204
+ false);
1205
+ }
1206
+ if (rangeObject.endContainer.nodeType == 3 && rangeObject.endOffset > 0
1207
+ && rangeObject.endOffset < rangeObject.endContainer.data.length) {
1208
+ this.split(rangeObject, jQuery(rangeObject.endContainer).parent(),
1209
+ true);
1210
+ }
1211
+
1212
+ // construct the range tree
1213
+ var rangeTree = rangeObject.getRangeTree();
1214
+
1215
+ // collapse the range
1216
+ rangeObject.endContainer = rangeObject.startContainer;
1217
+ rangeObject.endOffset = rangeObject.startOffset;
1218
+
1219
+ // remove the markup from the range tree
1220
+ this.recursiveRemoveRange(rangeTree, rangeObject);
1221
+
1222
+ // do some cleanup
1223
+ this.doCleanup({'merge' : true}, rangeObject);
1224
+ // this.doCleanup({'merge' : true, 'removeempty' : true}, rangeObject);
1225
+
1226
+ // clear the caches of the range object
1227
+ rangeObject.clearCaches();
1228
+ },
1229
+
1230
+ recursiveRemoveRange: function (rangeTree, rangeObject) {
1231
+ // iterate over the rangetree objects of this level
1232
+ for (var i = 0; i < rangeTree.length; ++i) {
1233
+ // check for nodes fully in the range
1234
+ if (rangeTree[i].type == 'full') {
1235
+ // if the domobj is the startcontainer, or the startcontainer is inside the domobj, we need to update the rangeObject
1236
+ if (jQuery(rangeObject.startContainer).parents().andSelf().filter(rangeTree[i].domobj).length > 0) {
1237
+ rangeObject.startContainer = rangeObject.endContainer = rangeTree[i].domobj.parentNode;
1238
+ rangeObject.startOffset = rangeObject.endOffset = this.getIndexInParent(rangeTree[i].domobj);
1239
+ }
1240
+
1241
+ // remove the object from the DOM
1242
+ jQuery(rangeTree[i].domobj).remove();
1243
+ } else if (rangeTree[i].type == 'partial' && rangeTree[i].children) {
1244
+ // node partially selected and has children, so do recursion
1245
+ this.recursiveRemoveRange(rangeTree[i].children, rangeObject);
1246
+ }
1247
+ }
1248
+ },
1249
+
1250
+ /**
1251
+ * Extend the given range to have start and end at the nearest word boundaries to the left (start) and right (end)
1252
+ * @param {GENTICS.Utils.RangeObject} range range to be extended
1253
+ * @param {boolean} fromBoundaries true if extending will also be done, if one or both ends of the range already are at a word boundary, false if not, default: false
1254
+ * @method
1255
+ */
1256
+ extendToWord: function (range, fromBoundaries) {
1257
+ // search the word boundaries to the left and right
1258
+ var leftBoundary = this.searchWordBoundary(range.startContainer, range.startOffset, true),
1259
+ rightBoundary = this.searchWordBoundary(range.endContainer, range.endOffset, false);
1260
+
1261
+ // check whether we must not extend the range from word boundaries
1262
+ if (!fromBoundaries) {
1263
+ // we only extend the range if both ends would be different
1264
+ if (range.startContainer == leftBoundary.container && range.startOffset == leftBoundary.offset) {
1265
+ return;
1266
+ }
1267
+ if (range.endContainer == rightBoundary.container && range.endOffset == rightBoundary.offset) {
1268
+ return;
1269
+ }
1270
+ }
1271
+
1272
+ // set the new boundaries
1273
+ range.startContainer = leftBoundary.container;
1274
+ range.startOffset = leftBoundary.offset;
1275
+ range.endContainer = rightBoundary.container;
1276
+ range.endOffset = rightBoundary.offset;
1277
+
1278
+ // correct the range
1279
+ range.correctRange();
1280
+
1281
+ // clear caches
1282
+ range.clearCaches();
1283
+ },
1284
+
1285
+ /**
1286
+ * Helper method to check whether the given DOM object is a word boundary.
1287
+ * @param {DOMObject} object DOM object in question
1288
+ * @return {boolean} true when the DOM object is a word boundary, false if not
1289
+ * @hide
1290
+ */
1291
+ isWordBoundaryElement: function (object) {
1292
+ if (!object || !object.nodeName) {
1293
+ return false;
1294
+ }
1295
+ return jQuery.inArray(object.nodeName.toLowerCase(), this.nonWordBoundaryTags) == -1;
1296
+ },
1297
+
1298
+ /**
1299
+ * Search for the next word boundary, starting at the given position
1300
+ * @param {DOMObject} container container of the start position
1301
+ * @param {Integer} offset offset of the start position
1302
+ * @param {boolean} searchleft true for searching to the left, false for searching to the right (default: true)
1303
+ * @return {object} object with properties 'container' and 'offset' marking the found word boundary
1304
+ * @method
1305
+ */
1306
+ searchWordBoundary: function (container, offset, searchleft) {
1307
+ if (typeof searchleft === 'undefined') {
1308
+ searchleft = true;
1309
+ }
1310
+ var boundaryFound = false, wordBoundaryPos, tempWordBoundaryPos, textNode;
1311
+ while (!boundaryFound) {
1312
+ // check the node type
1313
+ if (container.nodeType === 3) {
1314
+ // we are currently in a text node
1315
+
1316
+ // find the nearest word boundary character
1317
+ if (!searchleft) {
1318
+ // search right
1319
+ wordBoundaryPos = container.data.substring(offset).search(this.nonWordRegex);
1320
+ if (wordBoundaryPos != -1) {
1321
+ // found a word boundary
1322
+ offset = offset + wordBoundaryPos;
1323
+ boundaryFound = true;
1324
+ } else {
1325
+ // found no word boundary, so we set the position after the container
1326
+ offset = this.getIndexInParent(container) + 1;
1327
+ container = container.parentNode;
1328
+ }
1329
+ } else {
1330
+ // search left
1331
+ wordBoundaryPos = container.data.substring(0, offset).search(this.nonWordRegex);
1332
+ tempWordBoundaryPos = wordBoundaryPos;
1333
+ while (tempWordBoundaryPos != -1) {
1334
+ wordBoundaryPos = tempWordBoundaryPos;
1335
+ tempWordBoundaryPos = container.data.substring(
1336
+ wordBoundaryPos + 1, offset).search(this.nonWordRegex);
1337
+ if (tempWordBoundaryPos != -1) {
1338
+ tempWordBoundaryPos = tempWordBoundaryPos + wordBoundaryPos + 1;
1339
+ }
1340
+ }
1341
+
1342
+ if (wordBoundaryPos != -1) {
1343
+ // found a word boundary
1344
+ offset = wordBoundaryPos + 1;
1345
+ boundaryFound = true;
1346
+ } else {
1347
+ // found no word boundary, so we set the position before the container
1348
+ offset = this.getIndexInParent(container);
1349
+ container = container.parentNode;
1350
+ }
1351
+ }
1352
+ } else if (container.nodeType === 1) {
1353
+ // we are currently in an element node (between nodes)
1354
+
1355
+ if (!searchleft) {
1356
+ // check whether there is an element to the right
1357
+ if (offset < container.childNodes.length) {
1358
+ // there is an element to the right, check whether it is a word boundary element
1359
+ if (this.isWordBoundaryElement(container.childNodes[offset])) {
1360
+ // we are done
1361
+ boundaryFound = true;
1362
+ } else {
1363
+ // element to the right is no word boundary, so enter it
1364
+ container = container.childNodes[offset];
1365
+ offset = 0;
1366
+ }
1367
+ } else {
1368
+ // no element to the right, check whether the element itself is a boundary element
1369
+ if (this.isWordBoundaryElement(container)) {
1370
+ // we are done
1371
+ boundaryFound = true;
1372
+ } else {
1373
+ // element itself is no boundary element, so go to parent
1374
+ offset = this.getIndexInParent(container) + 1;
1375
+ container = container.parentNode;
1376
+ }
1377
+ }
1378
+ } else {
1379
+ // check whether there is an element to the left
1380
+ if (offset > 0) {
1381
+ // there is an element to the left, check whether it is a word boundary element
1382
+ if (this.isWordBoundaryElement(container.childNodes[offset - 1])) {
1383
+ // we are done
1384
+ boundaryFound = true;
1385
+ } else {
1386
+ // element to the left is no word boundary, so enter it
1387
+ container = container.childNodes[offset - 1];
1388
+ offset = container.nodeType === 3 ? container.data.length : container.childNodes.length;
1389
+ }
1390
+ } else {
1391
+ // no element to the left, check whether the element itself is a boundary element
1392
+ if (this.isWordBoundaryElement(container)) {
1393
+ // we are done
1394
+ boundaryFound = true;
1395
+ } else {
1396
+ // element itself is no boundary element, so go to parent
1397
+ offset = this.getIndexInParent(container);
1398
+ container = container.parentNode;
1399
+ }
1400
+ }
1401
+ }
1402
+ }
1403
+ }
1404
+
1405
+ if (container.nodeType !== 3) {
1406
+ textNode = this.searchAdjacentTextNode(container, offset, !searchleft);
1407
+ if (textNode) {
1408
+ container = textNode;
1409
+ offset = searchleft ? 0 : container.data.length;
1410
+ }
1411
+ }
1412
+
1413
+ return {'container' : container, 'offset' : offset};
1414
+ },
1415
+
1416
+ /**
1417
+ * Check whether the given dom object is empty
1418
+ * @param {DOMObject} domObject object to check
1419
+ * @return {boolean} true when the object is empty, false if not
1420
+ * @method
1421
+ */
1422
+ isEmpty: function (domObject) {
1423
+ // a non dom object is considered empty
1424
+ if (!domObject) {
1425
+ return true;
1426
+ }
1427
+
1428
+ // some tags are considered to be non-empty
1429
+ if (jQuery.inArray(domObject.nodeName.toLowerCase(), this.nonEmptyTags) != -1) {
1430
+ return false;
1431
+ }
1432
+
1433
+ // text nodes are not empty, if they contain non-whitespace characters
1434
+ if (domObject.nodeType === 3) {
1435
+ return domObject.data.search(/\S/) == -1;
1436
+ }
1437
+
1438
+ // all other nodes are not empty if they contain at least one child which is not empty
1439
+ for (var i = 0, childNodes = domObject.childNodes.length; i < childNodes; ++i) {
1440
+ if (!this.isEmpty(domObject.childNodes[i])) {
1441
+ return false;
1442
+ }
1443
+ }
1444
+
1445
+ // found no contents, so the element is empty
1446
+ return true;
1447
+ },
1448
+
1449
+ /**
1450
+ * Set the cursor (collapsed selection) right after the given DOM object
1451
+ * @param domObject DOM object
1452
+ * @method
1453
+ */
1454
+ setCursorAfter: function (domObject) {
1455
+ var
1456
+ newRange = new GENTICS.Utils.RangeObject(),
1457
+ index = this.getIndexInParent(domObject),
1458
+ targetNode,
1459
+ offset;
1460
+
1461
+ // selection cannot be set between to TEXT_NODEs
1462
+ // if domOject is a Text node set selection at last position in that node
1463
+ if ( domObject.nodeType == 3) {
1464
+ targetNode = domObject;
1465
+ offset = targetNode.nodeValue.length;
1466
+
1467
+ // if domOject is a Text node set selection at last position in that node
1468
+ } else if ( domObject.nextSibling && domObject.nextSibling.nodeType == 3) {
1469
+ targetNode = domObject.nextSibling;
1470
+ offset = 0;
1471
+ } else {
1472
+ targetNode = domObject.parentNode;
1473
+ offset = this.getIndexInParent(domObject) + 1;
1474
+ }
1475
+
1476
+ newRange.startContainer = newRange.endContainer = targetNode;
1477
+ newRange.startOffset = newRange.endOffset = offset;
1478
+
1479
+ // select the range
1480
+ newRange.select();
1481
+
1482
+ return newRange;
1483
+ },
1484
+
1485
+ /**
1486
+ * Select a DOM node
1487
+ * will create a new range which spans the provided dom node and selects it afterwards
1488
+ * @param domObject DOM object
1489
+ * @method
1490
+ */
1491
+ selectDomNode: function (domObject) {
1492
+ var newRange = new GENTICS.Utils.RangeObject();
1493
+ newRange.startContainer = newRange.endContainer = domObject.parentNode;
1494
+ newRange.startOffset = this.getIndexInParent(domObject);
1495
+ newRange.endOffset = newRange.startOffset + 1;
1496
+ newRange.select();
1497
+ },
1498
+
1499
+ /**
1500
+ * Set the cursor (collapsed selection) at the start into the given DOM object
1501
+ * @param domObject DOM object
1502
+ * @method
1503
+ */
1504
+ setCursorInto: function (domObject) {
1505
+ // set a new range into the given dom object
1506
+ var newRange = new GENTICS.Utils.RangeObject();
1507
+ newRange.startContainer = newRange.endContainer = domObject;
1508
+ newRange.startOffset = newRange.endOffset = 0;
1509
+
1510
+ // select the range
1511
+ newRange.select();
1512
+ },
1513
+
1514
+
1515
+ /**
1516
+ * "An editing host is a node that is either an Element with a contenteditable
1517
+ * attribute set to the true state, or the Element child of a Document whose
1518
+ * designMode is enabled."
1519
+ * @param domObject DOM object
1520
+ * @method
1521
+ */
1522
+ isEditingHost: function (node) {
1523
+ return node
1524
+ && node.nodeType == 1 //ELEMENT_NODE
1525
+ && (node.contentEditable == "true"
1526
+ || (node.parentNode
1527
+ && node.parentNode.nodeType == 9 //DOCUEMENT_NODE
1528
+ && node.parentNode.designMode == "on"));
1529
+ },
1530
+
1531
+ /**
1532
+ * "Something is editable if it is a node which is not an editing host, does
1533
+ * not have a contenteditable attribute set to the false state, and whose
1534
+ * parent is an editing host or editable."
1535
+ * @param domObject DOM object
1536
+ * @method
1537
+ */
1538
+ isEditable: function (node) {
1539
+ // This is slightly a lie, because we're excluding non-HTML elements with
1540
+ // contentEditable attributes.
1541
+ return node
1542
+ && !this.isEditingHost(node)
1543
+ && (node.nodeType != 1 || node.contentEditable != "false") // ELEMENT_NODE
1544
+ && (this.isEditingHost(node.parentNode) || this.isEditable(node.parentNode));
1545
+ },
1546
+
1547
+ /**
1548
+ * "The editing host of node is null if node is neither editable nor an editing
1549
+ * host; node itself, if node is an editing host; or the nearest ancestor of
1550
+ * node that is an editing host, if node is editable."
1551
+ * @param domObject DOM object
1552
+ * @method
1553
+ */
1554
+ getEditingHostOf: function(node) {
1555
+ if (this.isEditingHost(node)) {
1556
+ return node;
1557
+ } else if (this.isEditable(node)) {
1558
+ var ancestor = node.parentNode;
1559
+ while (!this.isEditingHost(ancestor)) {
1560
+ ancestor = ancestor.parentNode;
1561
+ }
1562
+ return ancestor;
1563
+ } else {
1564
+ return null;
1565
+ }
1566
+ },
1567
+
1568
+ /**
1569
+ *
1570
+ * "Two nodes are in the same editing host if the editing host of the first is
1571
+ * non-null and the same as the editing host of the second."
1572
+ * @param node1 DOM object
1573
+ * @param node2 DOM object
1574
+ * @method
1575
+ */
1576
+ inSameEditingHost: function (node1, node2) {
1577
+ return this.getEditingHostOf(node1)
1578
+ && this.getEditingHostOf(node1) == this.getEditingHostOf(node2);
1579
+ },
1580
+
1581
+ // "A block node is either an Element whose "display" property does not have
1582
+ // resolved value "inline" or "inline-block" or "inline-table" or "none", or a
1583
+ // Document, or a DocumentFragment."
1584
+ isBlockNode: function (node) {
1585
+ return node
1586
+ && ((node.nodeType == $_.Node.ELEMENT_NODE && $_( ["inline", "inline-block", "inline-table", "none"] ).indexOf($_.getComputedStyle(node).display) == -1)
1587
+ || node.nodeType == $_.Node.DOCUMENT_NODE
1588
+ || node.nodeType == $_.Node.DOCUMENT_FRAGMENT_NODE);
1589
+ },
1590
+
1591
+ /**
1592
+ * Get the first visible child of the given node.
1593
+ * @param node node
1594
+ * @param includeNode when set to true, the node itself may be returned, otherwise only children are allowed
1595
+ * @return first visible child or null if none found
1596
+ */
1597
+ getFirstVisibleChild: function (node, includeNode) {
1598
+ // no node -> no child
1599
+ if (!node) {
1600
+ return null;
1601
+ }
1602
+
1603
+ // check whether the node itself is visible
1604
+ if ((node.nodeType == $_.Node.TEXT_NODE && this.isEmpty(node))
1605
+ || (node.nodeType == $_.Node.ELEMENT_NODE && node.offsetHeight == 0 && jQuery.inArray(node.nodeName.toLowerCase(), this.nonEmptyTags) === -1)) {
1606
+ return null;
1607
+ }
1608
+
1609
+ // if the node is a text node, or does not have children, or is not editable, it is the first visible child
1610
+ if (node.nodeType == $_.Node.TEXT_NODE
1611
+ || (node.nodeType == $_.Node.ELEMENT_NODE && node.childNodes.length == 0)
1612
+ || !jQuery(node).contentEditable()) {
1613
+ return includeNode ? node : null;
1614
+ }
1615
+
1616
+ // otherwise traverse through the children
1617
+ for (var i = 0; i < node.childNodes.length; ++i) {
1618
+ var visibleChild = this.getFirstVisibleChild(node.childNodes[i], true);
1619
+ if (visibleChild != null) {
1620
+ return visibleChild;
1621
+ }
1622
+ }
1623
+
1624
+ return null;
1625
+ },
1626
+
1627
+ /**
1628
+ * Get the last visible child of the given node.
1629
+ * @param node node
1630
+ * @param includeNode when set to true, the node itself may be returned, otherwise only children are allowed
1631
+ * @return last visible child or null if none found
1632
+ */
1633
+ getLastVisibleChild: function (node, includeNode) {
1634
+ // no node -> no child
1635
+ if (!node) {
1636
+ return null;
1637
+ }
1638
+
1639
+ // check whether the node itself is visible
1640
+ if ((node.nodeType == $_.Node.TEXT_NODE && this.isEmpty(node))
1641
+ || (node.nodeType == $_.Node.ELEMENT_NODE && node.offsetHeight == 0 && jQuery.inArray(node.nodeName.toLowerCase(), this.nonEmptyTags) === -1)) {
1642
+ return null;
1643
+ }
1644
+
1645
+ // if the node is a text node, or does not have children, or is not editable, it is the first visible child
1646
+ if (node.nodeType == $_.Node.TEXT_NODE
1647
+ || (node.nodeType == $_.Node.ELEMENT_NODE && node.childNodes.length == 0)
1648
+ || !jQuery(node).contentEditable()) {
1649
+ return includeNode ? node : null;
1650
+ }
1651
+
1652
+ // otherwise traverse through the children
1653
+ for (var i = node.childNodes.length - 1; i >= 0; --i) {
1654
+ var visibleChild = this.getLastVisibleChild(node.childNodes[i], true);
1655
+ if (visibleChild != null) {
1656
+ return visibleChild;
1657
+ }
1658
+ }
1659
+
1660
+ return null;
1661
+ }
1662
+ });
1663
+
1664
+
1665
+ /**
1666
+ * Create the singleton object
1667
+ * @hide
1668
+ */
1669
+ GENTICS.Utils.Dom = new Dom();
1670
+
1671
+ return GENTICS.Utils.Dom;
1672
+
1673
+ });