tinymce-rails 3.4.4 → 3.4.4.0.2

Sign up to get free protection for your applications and to get access to all the features.
Files changed (271) hide show
  1. data/LICENSE +18 -0
  2. data/README.md +1 -1
  3. data/Rakefile +34 -36
  4. data/assets/integration/tinymce-jquery.js +3 -0
  5. data/assets/integration/tinymce.js +1 -1
  6. data/assets/integration/tinymce/preinit.js.erb +5 -0
  7. data/assets/{vendor → precompiled}/tinymce/jquery.tinymce.js +0 -0
  8. data/assets/{vendor → precompiled}/tinymce/langs/en.js +0 -0
  9. data/assets/{vendor → precompiled}/tinymce/license.txt +0 -0
  10. data/assets/{vendor → precompiled}/tinymce/plugins/advhr/css/advhr.css +0 -0
  11. data/assets/precompiled/tinymce/plugins/advhr/editor_plugin.js +1 -0
  12. data/assets/{vendor/tinymce/plugins/advhr/editor_plugin.js → precompiled/tinymce/plugins/advhr/editor_plugin_src.js} +0 -0
  13. data/assets/{vendor → precompiled}/tinymce/plugins/advhr/js/rule.js +0 -0
  14. data/assets/{vendor → precompiled}/tinymce/plugins/advhr/langs/en_dlg.js +0 -0
  15. data/assets/{vendor → precompiled}/tinymce/plugins/advhr/rule.htm +0 -0
  16. data/assets/{vendor → precompiled}/tinymce/plugins/advimage/css/advimage.css +0 -0
  17. data/assets/precompiled/tinymce/plugins/advimage/editor_plugin.js +1 -0
  18. data/assets/{vendor/tinymce/plugins/advimage/editor_plugin.js → precompiled/tinymce/plugins/advimage/editor_plugin_src.js} +0 -0
  19. data/assets/{vendor → precompiled}/tinymce/plugins/advimage/image.htm +0 -0
  20. data/assets/{vendor → precompiled}/tinymce/plugins/advimage/img/sample.gif +0 -0
  21. data/assets/{vendor → precompiled}/tinymce/plugins/advimage/js/image.js +0 -0
  22. data/assets/{vendor → precompiled}/tinymce/plugins/advimage/langs/en_dlg.js +0 -0
  23. data/assets/{vendor → precompiled}/tinymce/plugins/advlink/css/advlink.css +0 -0
  24. data/assets/precompiled/tinymce/plugins/advlink/editor_plugin.js +1 -0
  25. data/assets/{vendor/tinymce/plugins/advlink/editor_plugin.js → precompiled/tinymce/plugins/advlink/editor_plugin_src.js} +0 -0
  26. data/assets/{vendor → precompiled}/tinymce/plugins/advlink/js/advlink.js +0 -0
  27. data/assets/{vendor → precompiled}/tinymce/plugins/advlink/langs/en_dlg.js +0 -0
  28. data/assets/{vendor → precompiled}/tinymce/plugins/advlink/link.htm +0 -0
  29. data/assets/precompiled/tinymce/plugins/advlist/editor_plugin.js +1 -0
  30. data/assets/{vendor/tinymce/plugins/advlist/editor_plugin.js → precompiled/tinymce/plugins/advlist/editor_plugin_src.js} +0 -0
  31. data/assets/precompiled/tinymce/plugins/autolink/editor_plugin.js +1 -0
  32. data/assets/{vendor/tinymce/plugins/autolink/editor_plugin.js → precompiled/tinymce/plugins/autolink/editor_plugin_src.js} +0 -0
  33. data/assets/precompiled/tinymce/plugins/autoresize/editor_plugin.js +1 -0
  34. data/assets/{vendor/tinymce/plugins/autoresize/editor_plugin.js → precompiled/tinymce/plugins/autoresize/editor_plugin_src.js} +0 -0
  35. data/assets/precompiled/tinymce/plugins/autosave/editor_plugin.js +1 -0
  36. data/assets/{vendor/tinymce/plugins/autosave/editor_plugin.js → precompiled/tinymce/plugins/autosave/editor_plugin_src.js} +0 -0
  37. data/assets/{vendor → precompiled}/tinymce/plugins/autosave/langs/en.js +0 -0
  38. data/assets/precompiled/tinymce/plugins/bbcode/editor_plugin.js +1 -0
  39. data/assets/{vendor/tinymce/plugins/bbcode/editor_plugin.js → precompiled/tinymce/plugins/bbcode/editor_plugin_src.js} +0 -0
  40. data/assets/precompiled/tinymce/plugins/contextmenu/editor_plugin.js +1 -0
  41. data/assets/{vendor/tinymce/plugins/contextmenu/editor_plugin.js → precompiled/tinymce/plugins/contextmenu/editor_plugin_src.js} +0 -0
  42. data/assets/precompiled/tinymce/plugins/directionality/editor_plugin.js +1 -0
  43. data/assets/{vendor/tinymce/plugins/directionality/editor_plugin.js → precompiled/tinymce/plugins/directionality/editor_plugin_src.js} +0 -0
  44. data/assets/precompiled/tinymce/plugins/emotions/editor_plugin.js +1 -0
  45. data/assets/{vendor/tinymce/plugins/emotions/editor_plugin.js → precompiled/tinymce/plugins/emotions/editor_plugin_src.js} +0 -0
  46. data/assets/{vendor → precompiled}/tinymce/plugins/emotions/emotions.htm +0 -0
  47. data/assets/{vendor → precompiled}/tinymce/plugins/emotions/img/smiley-cool.gif +0 -0
  48. data/assets/{vendor → precompiled}/tinymce/plugins/emotions/img/smiley-cry.gif +0 -0
  49. data/assets/{vendor → precompiled}/tinymce/plugins/emotions/img/smiley-embarassed.gif +0 -0
  50. data/assets/{vendor → precompiled}/tinymce/plugins/emotions/img/smiley-foot-in-mouth.gif +0 -0
  51. data/assets/{vendor → precompiled}/tinymce/plugins/emotions/img/smiley-frown.gif +0 -0
  52. data/assets/{vendor → precompiled}/tinymce/plugins/emotions/img/smiley-innocent.gif +0 -0
  53. data/assets/{vendor → precompiled}/tinymce/plugins/emotions/img/smiley-kiss.gif +0 -0
  54. data/assets/{vendor → precompiled}/tinymce/plugins/emotions/img/smiley-laughing.gif +0 -0
  55. data/assets/{vendor → precompiled}/tinymce/plugins/emotions/img/smiley-money-mouth.gif +0 -0
  56. data/assets/{vendor → precompiled}/tinymce/plugins/emotions/img/smiley-sealed.gif +0 -0
  57. data/assets/{vendor → precompiled}/tinymce/plugins/emotions/img/smiley-smile.gif +0 -0
  58. data/assets/{vendor → precompiled}/tinymce/plugins/emotions/img/smiley-surprised.gif +0 -0
  59. data/assets/{vendor → precompiled}/tinymce/plugins/emotions/img/smiley-tongue-out.gif +0 -0
  60. data/assets/{vendor → precompiled}/tinymce/plugins/emotions/img/smiley-undecided.gif +0 -0
  61. data/assets/{vendor → precompiled}/tinymce/plugins/emotions/img/smiley-wink.gif +0 -0
  62. data/assets/{vendor → precompiled}/tinymce/plugins/emotions/img/smiley-yell.gif +0 -0
  63. data/assets/{vendor → precompiled}/tinymce/plugins/emotions/js/emotions.js +0 -0
  64. data/assets/{vendor → precompiled}/tinymce/plugins/emotions/langs/en_dlg.js +0 -0
  65. data/assets/{vendor → precompiled}/tinymce/plugins/example/dialog.htm +0 -0
  66. data/assets/precompiled/tinymce/plugins/example/editor_plugin.js +1 -0
  67. data/assets/{vendor/tinymce/plugins/example/editor_plugin.js → precompiled/tinymce/plugins/example/editor_plugin_src.js} +0 -0
  68. data/assets/{vendor → precompiled}/tinymce/plugins/example/img/example.gif +0 -0
  69. data/assets/{vendor → precompiled}/tinymce/plugins/example/js/dialog.js +0 -0
  70. data/assets/{vendor → precompiled}/tinymce/plugins/example/langs/en.js +0 -0
  71. data/assets/{vendor → precompiled}/tinymce/plugins/example/langs/en_dlg.js +0 -0
  72. data/assets/precompiled/tinymce/plugins/example_dependency/editor_plugin.js +1 -0
  73. data/assets/{vendor/tinymce/plugins/example_dependency/editor_plugin.js → precompiled/tinymce/plugins/example_dependency/editor_plugin_src.js} +0 -0
  74. data/assets/{vendor → precompiled}/tinymce/plugins/fullpage/css/fullpage.css +0 -0
  75. data/assets/precompiled/tinymce/plugins/fullpage/editor_plugin.js +1 -0
  76. data/assets/{vendor/tinymce/plugins/fullpage/editor_plugin.js → precompiled/tinymce/plugins/fullpage/editor_plugin_src.js} +0 -0
  77. data/assets/{vendor → precompiled}/tinymce/plugins/fullpage/fullpage.htm +0 -0
  78. data/assets/{vendor → precompiled}/tinymce/plugins/fullpage/js/fullpage.js +0 -0
  79. data/assets/{vendor → precompiled}/tinymce/plugins/fullpage/langs/en_dlg.js +0 -0
  80. data/assets/precompiled/tinymce/plugins/fullscreen/editor_plugin.js +1 -0
  81. data/assets/{vendor/tinymce/plugins/fullscreen/editor_plugin.js → precompiled/tinymce/plugins/fullscreen/editor_plugin_src.js} +0 -0
  82. data/assets/{vendor → precompiled}/tinymce/plugins/fullscreen/fullscreen.htm +0 -0
  83. data/assets/precompiled/tinymce/plugins/iespell/editor_plugin.js +1 -0
  84. data/assets/{vendor/tinymce/plugins/iespell/editor_plugin.js → precompiled/tinymce/plugins/iespell/editor_plugin_src.js} +0 -0
  85. data/assets/precompiled/tinymce/plugins/inlinepopups/editor_plugin.js +1 -0
  86. data/assets/{vendor/tinymce/plugins/inlinepopups/editor_plugin.js → precompiled/tinymce/plugins/inlinepopups/editor_plugin_src.js} +0 -0
  87. data/assets/{vendor → precompiled}/tinymce/plugins/inlinepopups/skins/clearlooks2/img/alert.gif +0 -0
  88. data/assets/{vendor → precompiled}/tinymce/plugins/inlinepopups/skins/clearlooks2/img/button.gif +0 -0
  89. data/assets/{vendor → precompiled}/tinymce/plugins/inlinepopups/skins/clearlooks2/img/buttons.gif +0 -0
  90. data/assets/{vendor → precompiled}/tinymce/plugins/inlinepopups/skins/clearlooks2/img/confirm.gif +0 -0
  91. data/assets/{vendor → precompiled}/tinymce/plugins/inlinepopups/skins/clearlooks2/img/corners.gif +0 -0
  92. data/assets/{vendor → precompiled}/tinymce/plugins/inlinepopups/skins/clearlooks2/img/horizontal.gif +0 -0
  93. data/assets/{vendor → precompiled}/tinymce/plugins/inlinepopups/skins/clearlooks2/img/vertical.gif +0 -0
  94. data/assets/{vendor → precompiled}/tinymce/plugins/inlinepopups/skins/clearlooks2/window.css +0 -0
  95. data/assets/{vendor → precompiled}/tinymce/plugins/inlinepopups/template.htm +0 -0
  96. data/assets/precompiled/tinymce/plugins/insertdatetime/editor_plugin.js +1 -0
  97. data/assets/{vendor/tinymce/plugins/insertdatetime/editor_plugin.js → precompiled/tinymce/plugins/insertdatetime/editor_plugin_src.js} +0 -0
  98. data/assets/precompiled/tinymce/plugins/layer/editor_plugin.js +1 -0
  99. data/assets/{vendor/tinymce/plugins/layer/editor_plugin.js → precompiled/tinymce/plugins/layer/editor_plugin_src.js} +0 -0
  100. data/assets/precompiled/tinymce/plugins/legacyoutput/editor_plugin.js +1 -0
  101. data/assets/{vendor/tinymce/plugins/legacyoutput/editor_plugin.js → precompiled/tinymce/plugins/legacyoutput/editor_plugin_src.js} +0 -0
  102. data/assets/precompiled/tinymce/plugins/lists/editor_plugin.js +1 -0
  103. data/assets/{vendor/tinymce/plugins/lists/editor_plugin.js → precompiled/tinymce/plugins/lists/editor_plugin_src.js} +0 -0
  104. data/assets/{vendor → precompiled}/tinymce/plugins/media/css/media.css +0 -0
  105. data/assets/precompiled/tinymce/plugins/media/editor_plugin.js +1 -0
  106. data/assets/{vendor/tinymce/plugins/media/editor_plugin.js → precompiled/tinymce/plugins/media/editor_plugin_src.js} +0 -0
  107. data/assets/{vendor → precompiled}/tinymce/plugins/media/js/embed.js +0 -0
  108. data/assets/{vendor → precompiled}/tinymce/plugins/media/js/media.js +0 -0
  109. data/assets/{vendor → precompiled}/tinymce/plugins/media/langs/en_dlg.js +0 -0
  110. data/assets/{vendor → precompiled}/tinymce/plugins/media/media.htm +0 -0
  111. data/assets/{vendor → precompiled}/tinymce/plugins/media/moxieplayer.swf +0 -0
  112. data/assets/precompiled/tinymce/plugins/nonbreaking/editor_plugin.js +1 -0
  113. data/assets/{vendor/tinymce/plugins/nonbreaking/editor_plugin.js → precompiled/tinymce/plugins/nonbreaking/editor_plugin_src.js} +0 -0
  114. data/assets/precompiled/tinymce/plugins/noneditable/editor_plugin.js +1 -0
  115. data/assets/{vendor/tinymce/plugins/noneditable/editor_plugin.js → precompiled/tinymce/plugins/noneditable/editor_plugin_src.js} +0 -0
  116. data/assets/precompiled/tinymce/plugins/pagebreak/editor_plugin.js +1 -0
  117. data/assets/{vendor/tinymce/plugins/pagebreak/editor_plugin.js → precompiled/tinymce/plugins/pagebreak/editor_plugin_src.js} +0 -0
  118. data/assets/precompiled/tinymce/plugins/paste/editor_plugin.js +1 -0
  119. data/assets/{vendor/tinymce/plugins/paste/editor_plugin.js → precompiled/tinymce/plugins/paste/editor_plugin_src.js} +0 -0
  120. data/assets/{vendor → precompiled}/tinymce/plugins/paste/js/pastetext.js +0 -0
  121. data/assets/{vendor → precompiled}/tinymce/plugins/paste/js/pasteword.js +0 -0
  122. data/assets/{vendor → precompiled}/tinymce/plugins/paste/langs/en_dlg.js +0 -0
  123. data/assets/{vendor → precompiled}/tinymce/plugins/paste/pastetext.htm +0 -0
  124. data/assets/{vendor → precompiled}/tinymce/plugins/paste/pasteword.htm +0 -0
  125. data/assets/precompiled/tinymce/plugins/preview/editor_plugin.js +1 -0
  126. data/assets/{vendor/tinymce/plugins/preview/editor_plugin.js → precompiled/tinymce/plugins/preview/editor_plugin_src.js} +0 -0
  127. data/assets/{vendor → precompiled}/tinymce/plugins/preview/example.html +0 -0
  128. data/assets/{vendor → precompiled}/tinymce/plugins/preview/jscripts/embed.js +0 -0
  129. data/assets/{vendor → precompiled}/tinymce/plugins/preview/preview.html +0 -0
  130. data/assets/precompiled/tinymce/plugins/print/editor_plugin.js +1 -0
  131. data/assets/{vendor/tinymce/plugins/print/editor_plugin.js → precompiled/tinymce/plugins/print/editor_plugin_src.js} +0 -0
  132. data/assets/precompiled/tinymce/plugins/save/editor_plugin.js +1 -0
  133. data/assets/{vendor/tinymce/plugins/save/editor_plugin.js → precompiled/tinymce/plugins/save/editor_plugin_src.js} +0 -0
  134. data/assets/{vendor → precompiled}/tinymce/plugins/searchreplace/css/searchreplace.css +0 -0
  135. data/assets/precompiled/tinymce/plugins/searchreplace/editor_plugin.js +1 -0
  136. data/assets/{vendor/tinymce/plugins/searchreplace/editor_plugin.js → precompiled/tinymce/plugins/searchreplace/editor_plugin_src.js} +0 -0
  137. data/assets/{vendor → precompiled}/tinymce/plugins/searchreplace/js/searchreplace.js +0 -0
  138. data/assets/{vendor → precompiled}/tinymce/plugins/searchreplace/langs/en_dlg.js +0 -0
  139. data/assets/{vendor → precompiled}/tinymce/plugins/searchreplace/searchreplace.htm +0 -0
  140. data/assets/{vendor → precompiled}/tinymce/plugins/spellchecker/css/content.css +0 -0
  141. data/assets/precompiled/tinymce/plugins/spellchecker/editor_plugin.js +1 -0
  142. data/assets/{vendor/tinymce/plugins/spellchecker/editor_plugin.js → precompiled/tinymce/plugins/spellchecker/editor_plugin_src.js} +1 -1
  143. data/assets/{vendor → precompiled}/tinymce/plugins/spellchecker/img/wline.gif +0 -0
  144. data/assets/{vendor → precompiled}/tinymce/plugins/style/css/props.css +0 -0
  145. data/assets/precompiled/tinymce/plugins/style/editor_plugin.js +1 -0
  146. data/assets/{vendor/tinymce/plugins/style/editor_plugin.js → precompiled/tinymce/plugins/style/editor_plugin_src.js} +0 -0
  147. data/assets/{vendor → precompiled}/tinymce/plugins/style/js/props.js +0 -0
  148. data/assets/{vendor → precompiled}/tinymce/plugins/style/langs/en_dlg.js +0 -0
  149. data/assets/{vendor → precompiled}/tinymce/plugins/style/props.htm +0 -0
  150. data/assets/precompiled/tinymce/plugins/tabfocus/editor_plugin.js +1 -0
  151. data/assets/{vendor/tinymce/plugins/tabfocus/editor_plugin.js → precompiled/tinymce/plugins/tabfocus/editor_plugin_src.js} +0 -0
  152. data/assets/{vendor → precompiled}/tinymce/plugins/table/cell.htm +0 -0
  153. data/assets/{vendor → precompiled}/tinymce/plugins/table/css/cell.css +0 -0
  154. data/assets/{vendor → precompiled}/tinymce/plugins/table/css/row.css +0 -0
  155. data/assets/{vendor → precompiled}/tinymce/plugins/table/css/table.css +0 -0
  156. data/assets/precompiled/tinymce/plugins/table/editor_plugin.js +1 -0
  157. data/assets/{vendor/tinymce/plugins/table/editor_plugin.js → precompiled/tinymce/plugins/table/editor_plugin_src.js} +0 -0
  158. data/assets/{vendor → precompiled}/tinymce/plugins/table/js/cell.js +0 -0
  159. data/assets/{vendor → precompiled}/tinymce/plugins/table/js/merge_cells.js +0 -0
  160. data/assets/{vendor → precompiled}/tinymce/plugins/table/js/row.js +0 -0
  161. data/assets/{vendor → precompiled}/tinymce/plugins/table/js/table.js +0 -0
  162. data/assets/{vendor → precompiled}/tinymce/plugins/table/langs/en_dlg.js +0 -0
  163. data/assets/{vendor → precompiled}/tinymce/plugins/table/merge_cells.htm +0 -0
  164. data/assets/{vendor → precompiled}/tinymce/plugins/table/row.htm +0 -0
  165. data/assets/{vendor → precompiled}/tinymce/plugins/table/table.htm +0 -0
  166. data/assets/{vendor → precompiled}/tinymce/plugins/template/blank.htm +0 -0
  167. data/assets/{vendor → precompiled}/tinymce/plugins/template/css/template.css +0 -0
  168. data/assets/precompiled/tinymce/plugins/template/editor_plugin.js +1 -0
  169. data/assets/{vendor/tinymce/plugins/template/editor_plugin.js → precompiled/tinymce/plugins/template/editor_plugin_src.js} +0 -0
  170. data/assets/{vendor → precompiled}/tinymce/plugins/template/js/template.js +0 -0
  171. data/assets/{vendor → precompiled}/tinymce/plugins/template/langs/en_dlg.js +0 -0
  172. data/assets/{vendor → precompiled}/tinymce/plugins/template/template.htm +0 -0
  173. data/assets/precompiled/tinymce/plugins/visualchars/editor_plugin.js +1 -0
  174. data/assets/{vendor/tinymce/plugins/visualchars/editor_plugin.js → precompiled/tinymce/plugins/visualchars/editor_plugin_src.js} +0 -0
  175. data/assets/precompiled/tinymce/plugins/wordcount/editor_plugin.js +1 -0
  176. data/assets/{vendor/tinymce/plugins/wordcount/editor_plugin.js → precompiled/tinymce/plugins/wordcount/editor_plugin_src.js} +0 -0
  177. data/assets/{vendor → precompiled}/tinymce/plugins/xhtmlxtras/abbr.htm +0 -0
  178. data/assets/{vendor → precompiled}/tinymce/plugins/xhtmlxtras/acronym.htm +0 -0
  179. data/assets/{vendor → precompiled}/tinymce/plugins/xhtmlxtras/attributes.htm +0 -0
  180. data/assets/{vendor → precompiled}/tinymce/plugins/xhtmlxtras/cite.htm +0 -0
  181. data/assets/{vendor → precompiled}/tinymce/plugins/xhtmlxtras/css/attributes.css +0 -0
  182. data/assets/{vendor → precompiled}/tinymce/plugins/xhtmlxtras/css/popup.css +0 -0
  183. data/assets/{vendor → precompiled}/tinymce/plugins/xhtmlxtras/del.htm +0 -0
  184. data/assets/precompiled/tinymce/plugins/xhtmlxtras/editor_plugin.js +1 -0
  185. data/assets/{vendor/tinymce/plugins/xhtmlxtras/editor_plugin.js → precompiled/tinymce/plugins/xhtmlxtras/editor_plugin_src.js} +0 -0
  186. data/assets/{vendor → precompiled}/tinymce/plugins/xhtmlxtras/ins.htm +0 -0
  187. data/assets/{vendor → precompiled}/tinymce/plugins/xhtmlxtras/js/abbr.js +0 -0
  188. data/assets/{vendor → precompiled}/tinymce/plugins/xhtmlxtras/js/acronym.js +0 -0
  189. data/assets/{vendor → precompiled}/tinymce/plugins/xhtmlxtras/js/attributes.js +0 -0
  190. data/assets/{vendor → precompiled}/tinymce/plugins/xhtmlxtras/js/cite.js +0 -0
  191. data/assets/{vendor → precompiled}/tinymce/plugins/xhtmlxtras/js/del.js +0 -0
  192. data/assets/{vendor → precompiled}/tinymce/plugins/xhtmlxtras/js/element_common.js +0 -0
  193. data/assets/{vendor → precompiled}/tinymce/plugins/xhtmlxtras/js/ins.js +0 -0
  194. data/assets/{vendor → precompiled}/tinymce/plugins/xhtmlxtras/langs/en_dlg.js +0 -0
  195. data/assets/{vendor → precompiled}/tinymce/themes/advanced/about.htm +0 -0
  196. data/assets/{vendor → precompiled}/tinymce/themes/advanced/anchor.htm +0 -0
  197. data/assets/{vendor → precompiled}/tinymce/themes/advanced/charmap.htm +0 -0
  198. data/assets/{vendor → precompiled}/tinymce/themes/advanced/color_picker.htm +0 -0
  199. data/assets/precompiled/tinymce/themes/advanced/editor_template.js +1 -0
  200. data/assets/{vendor/tinymce/themes/advanced/editor_template.js → precompiled/tinymce/themes/advanced/editor_template_src.js} +0 -0
  201. data/assets/{vendor → precompiled}/tinymce/themes/advanced/image.htm +0 -0
  202. data/assets/{vendor → precompiled}/tinymce/themes/advanced/img/colorpicker.jpg +0 -0
  203. data/assets/{vendor → precompiled}/tinymce/themes/advanced/img/flash.gif +0 -0
  204. data/assets/{vendor → precompiled}/tinymce/themes/advanced/img/icons.gif +0 -0
  205. data/assets/{vendor → precompiled}/tinymce/themes/advanced/img/iframe.gif +0 -0
  206. data/assets/{vendor → precompiled}/tinymce/themes/advanced/img/pagebreak.gif +0 -0
  207. data/assets/{vendor → precompiled}/tinymce/themes/advanced/img/quicktime.gif +0 -0
  208. data/assets/{vendor → precompiled}/tinymce/themes/advanced/img/realmedia.gif +0 -0
  209. data/assets/{vendor → precompiled}/tinymce/themes/advanced/img/shockwave.gif +0 -0
  210. data/assets/{vendor → precompiled}/tinymce/themes/advanced/img/trans.gif +0 -0
  211. data/assets/{vendor → precompiled}/tinymce/themes/advanced/img/video.gif +0 -0
  212. data/assets/{vendor → precompiled}/tinymce/themes/advanced/img/windowsmedia.gif +0 -0
  213. data/assets/{vendor → precompiled}/tinymce/themes/advanced/js/about.js +0 -0
  214. data/assets/{vendor → precompiled}/tinymce/themes/advanced/js/anchor.js +0 -0
  215. data/assets/{vendor → precompiled}/tinymce/themes/advanced/js/charmap.js +0 -0
  216. data/assets/{vendor → precompiled}/tinymce/themes/advanced/js/color_picker.js +0 -0
  217. data/assets/{vendor → precompiled}/tinymce/themes/advanced/js/image.js +0 -0
  218. data/assets/{vendor → precompiled}/tinymce/themes/advanced/js/link.js +0 -0
  219. data/assets/{vendor → precompiled}/tinymce/themes/advanced/js/source_editor.js +0 -0
  220. data/assets/{vendor → precompiled}/tinymce/themes/advanced/langs/en.js +0 -0
  221. data/assets/{vendor → precompiled}/tinymce/themes/advanced/langs/en_dlg.js +0 -0
  222. data/assets/{vendor → precompiled}/tinymce/themes/advanced/link.htm +0 -0
  223. data/assets/{vendor → precompiled}/tinymce/themes/advanced/shortcuts.htm +0 -0
  224. data/assets/{vendor → precompiled}/tinymce/themes/advanced/skins/default/content.css +0 -0
  225. data/assets/{vendor → precompiled}/tinymce/themes/advanced/skins/default/dialog.css +0 -0
  226. data/assets/{vendor → precompiled}/tinymce/themes/advanced/skins/default/img/buttons.png +0 -0
  227. data/assets/{vendor → precompiled}/tinymce/themes/advanced/skins/default/img/items.gif +0 -0
  228. data/assets/{vendor → precompiled}/tinymce/themes/advanced/skins/default/img/menu_arrow.gif +0 -0
  229. data/assets/{vendor → precompiled}/tinymce/themes/advanced/skins/default/img/menu_check.gif +0 -0
  230. data/assets/{vendor → precompiled}/tinymce/themes/advanced/skins/default/img/progress.gif +0 -0
  231. data/assets/{vendor → precompiled}/tinymce/themes/advanced/skins/default/img/tabs.gif +0 -0
  232. data/assets/{vendor → precompiled}/tinymce/themes/advanced/skins/default/ui.css +0 -0
  233. data/assets/{vendor → precompiled}/tinymce/themes/advanced/skins/highcontrast/content.css +0 -0
  234. data/assets/{vendor → precompiled}/tinymce/themes/advanced/skins/highcontrast/dialog.css +0 -0
  235. data/assets/{vendor → precompiled}/tinymce/themes/advanced/skins/highcontrast/ui.css +0 -0
  236. data/assets/{vendor → precompiled}/tinymce/themes/advanced/skins/o2k7/content.css +0 -0
  237. data/assets/{vendor → precompiled}/tinymce/themes/advanced/skins/o2k7/dialog.css +0 -0
  238. data/assets/{vendor → precompiled}/tinymce/themes/advanced/skins/o2k7/img/button_bg.png +0 -0
  239. data/assets/{vendor → precompiled}/tinymce/themes/advanced/skins/o2k7/img/button_bg_black.png +0 -0
  240. data/assets/{vendor → precompiled}/tinymce/themes/advanced/skins/o2k7/img/button_bg_silver.png +0 -0
  241. data/assets/{vendor → precompiled}/tinymce/themes/advanced/skins/o2k7/ui.css +0 -0
  242. data/assets/{vendor → precompiled}/tinymce/themes/advanced/skins/o2k7/ui_black.css +0 -0
  243. data/assets/{vendor → precompiled}/tinymce/themes/advanced/skins/o2k7/ui_silver.css +0 -0
  244. data/assets/{vendor → precompiled}/tinymce/themes/advanced/source_editor.htm +0 -0
  245. data/assets/precompiled/tinymce/themes/simple/editor_template.js +1 -0
  246. data/assets/{vendor/tinymce/themes/simple/editor_template.js → precompiled/tinymce/themes/simple/editor_template_src.js} +0 -0
  247. data/assets/{vendor → precompiled}/tinymce/themes/simple/img/icons.gif +0 -0
  248. data/assets/{vendor → precompiled}/tinymce/themes/simple/langs/en.js +0 -0
  249. data/assets/{vendor → precompiled}/tinymce/themes/simple/skins/default/content.css +0 -0
  250. data/assets/{vendor → precompiled}/tinymce/themes/simple/skins/default/ui.css +0 -0
  251. data/assets/{vendor → precompiled}/tinymce/themes/simple/skins/o2k7/content.css +0 -0
  252. data/assets/{vendor → precompiled}/tinymce/themes/simple/skins/o2k7/img/button_bg.png +0 -0
  253. data/assets/{vendor → precompiled}/tinymce/themes/simple/skins/o2k7/ui.css +0 -0
  254. data/assets/precompiled/tinymce/tiny_mce.js +1 -0
  255. data/assets/precompiled/tinymce/tiny_mce_jquery.js +1 -0
  256. data/assets/precompiled/tinymce/tiny_mce_jquery_src.js +15519 -0
  257. data/assets/{vendor → precompiled}/tinymce/tiny_mce_popup.js +0 -0
  258. data/assets/precompiled/tinymce/tiny_mce_src.js +16342 -0
  259. data/assets/{vendor → precompiled}/tinymce/utils/editable_selects.js +0 -0
  260. data/assets/{vendor → precompiled}/tinymce/utils/form_utils.js +0 -0
  261. data/assets/{vendor → precompiled}/tinymce/utils/mctabs.js +0 -0
  262. data/assets/{vendor → precompiled}/tinymce/utils/validate.js +0 -0
  263. data/assets/vendor/tinymce/jquery-tinymce.js +1 -0
  264. data/assets/vendor/tinymce/tiny_mce.js +1202 -379
  265. data/assets/vendor/tinymce/tiny_mce_jquery.js +15519 -0
  266. data/lib/tinymce/assets.rake +12 -0
  267. data/lib/tinymce/railtie.rb +13 -4
  268. data/lib/tinymce/version.rb +2 -1
  269. metadata +272 -237
  270. data/assets/integration/tinymce.jquery.js +0 -3
  271. data/assets/integration/tinymce.preinit.js.erb +0 -1
@@ -0,0 +1 @@
1
+ (function(b){var e,d,a=[],c=window;b.fn.tinymce=function(j){var p=this,g,k,h,m,i,l="",n="";if(!p.length){return p}if(!j){return tinyMCE.get(p[0].id)}p.css("visibility","hidden");function o(){var r=[],q=0;if(f){f();f=null}p.each(function(t,u){var s,w=u.id,v=j.oninit;if(!w){u.id=w=tinymce.DOM.uniqueId()}s=new tinymce.Editor(w,j);r.push(s);s.onInit.add(function(){var x,y=v;p.css("visibility","");if(v){if(++q==r.length){if(tinymce.is(y,"string")){x=(y.indexOf(".")===-1)?null:tinymce.resolve(y.replace(/\.\w+$/,""));y=tinymce.resolve(y)}y.apply(x||tinymce,r)}}})});b.each(r,function(t,s){s.render()})}if(!c.tinymce&&!d&&(g=j.script_url)){d=1;h=g.substring(0,g.lastIndexOf("/"));if(/_(src|dev)\.js/g.test(g)){n="_src"}m=g.lastIndexOf("?");if(m!=-1){l=g.substring(m+1)}c.tinyMCEPreInit=c.tinyMCEPreInit||{base:h,suffix:n,query:l};if(g.indexOf("gzip")!=-1){i=j.language||"en";g=g+(/\?/.test(g)?"&":"?")+"js=true&core=true&suffix="+escape(n)+"&themes="+escape(j.theme)+"&plugins="+escape(j.plugins)+"&languages="+i;if(!c.tinyMCE_GZ){tinyMCE_GZ={start:function(){tinymce.suffix=n;function q(r){tinymce.ScriptLoader.markDone(tinyMCE.baseURI.toAbsolute(r))}q("langs/"+i+".js");q("themes/"+j.theme+"/editor_template"+n+".js");q("themes/"+j.theme+"/langs/"+i+".js");b.each(j.plugins.split(","),function(s,r){if(r){q("plugins/"+r+"/editor_plugin"+n+".js");q("plugins/"+r+"/langs/"+i+".js")}})},end:function(){}}}}b.ajax({type:"GET",url:g,dataType:"script",cache:true,success:function(){tinymce.dom.Event.domLoaded=1;d=2;if(j.script_loaded){j.script_loaded()}o();b.each(a,function(q,r){r()})}})}else{if(d===1){a.push(o)}else{o()}}return p};b.extend(b.expr[":"],{tinymce:function(g){return g.id&&!!tinyMCE.get(g.id)}});function f(){function i(l){if(l==="remove"){this.each(function(n,o){var m=h(o);if(m){m.remove()}})}this.find("span.mceEditor,div.mceEditor").each(function(n,o){var m=tinyMCE.get(o.id.replace(/_parent$/,""));if(m){m.remove()}})}function k(n){var m=this,l;if(n!==e){i.call(m);m.each(function(p,q){var o;if(o=tinyMCE.get(q.id)){o.setContent(n)}})}else{if(m.length>0){if(l=tinyMCE.get(m[0].id)){return l.getContent()}}}}function h(m){var l=null;(m)&&(m.id)&&(c.tinymce)&&(l=tinyMCE.get(m.id));return l}function g(l){return !!((l)&&(l.length)&&(c.tinymce)&&(l.is(":tinymce")))}var j={};b.each(["text","html","val"],function(n,l){var o=j[l]=b.fn[l],m=(l==="text");b.fn[l]=function(s){var p=this;if(!g(p)){return o.apply(p,arguments)}if(s!==e){k.call(p.filter(":tinymce"),s);o.apply(p.not(":tinymce"),arguments);return p}else{var r="";var q=arguments;(m?p:p.eq(0)).each(function(u,v){var t=h(v);r+=t?(m?t.getContent().replace(/<(?:"[^"]*"|'[^']*'|[^'">])*>/g,""):t.getContent()):o.apply(b(v),q)});return r}}});b.each(["append","prepend"],function(n,m){var o=j[m]=b.fn[m],l=(m==="prepend");b.fn[m]=function(q){var p=this;if(!g(p)){return o.apply(p,arguments)}if(q!==e){p.filter(":tinymce").each(function(s,t){var r=h(t);r&&r.setContent(l?q+r.getContent():r.getContent()+q)});o.apply(p.not(":tinymce"),arguments);return p}}});b.each(["remove","replaceWith","replaceAll","empty"],function(m,l){var n=j[l]=b.fn[l];b.fn[l]=function(){i.call(this,l);return n.apply(this,arguments)}});j.attr=b.fn.attr;b.fn.attr=function(n,q,o){var m=this;if((!n)||(n!=="value")||(!g(m))){return j.attr.call(m,n,q,o)}if(q!==e){k.call(m.filter(":tinymce"),q);j.attr.call(m.not(":tinymce"),n,q,o);return m}else{var p=m[0],l=h(p);return l?l.getContent():j.attr.call(b(p),n,q,o)}}}})(jQuery);
@@ -157,6 +157,56 @@
157
157
  },
158
158
 
159
159
 
160
+ map : function(a, f) {
161
+ var o = [];
162
+
163
+ tinymce.each(a, function(v) {
164
+ o.push(f(v));
165
+ });
166
+
167
+ return o;
168
+ },
169
+
170
+ grep : function(a, f) {
171
+ var o = [];
172
+
173
+ tinymce.each(a, function(v) {
174
+ if (!f || f(v))
175
+ o.push(v);
176
+ });
177
+
178
+ return o;
179
+ },
180
+
181
+ inArray : function(a, v) {
182
+ var i, l;
183
+
184
+ if (a) {
185
+ for (i = 0, l = a.length; i < l; i++) {
186
+ if (a[i] === v)
187
+ return i;
188
+ }
189
+ }
190
+
191
+ return -1;
192
+ },
193
+
194
+ extend : function(o, e) {
195
+ var i, l, a = arguments;
196
+
197
+ for (i = 1, l = a.length; i < l; i++) {
198
+ e = a[i];
199
+
200
+ tinymce.each(e, function(v, n) {
201
+ if (v !== undefined)
202
+ o[n] = v;
203
+ });
204
+ }
205
+
206
+ return o;
207
+ },
208
+
209
+
160
210
  trim : function(s) {
161
211
  return (s ? '' + s : '').replace(whiteSpaceRe, '');
162
212
  },
@@ -442,331 +492,6 @@
442
492
  })(window);
443
493
 
444
494
 
445
- (function($, tinymce) {
446
- var is = tinymce.is, attrRegExp = /^(href|src|style)$/i, undefined;
447
-
448
- // jQuery is undefined
449
- if (!$ && window.console) {
450
- return console.log("Load jQuery first!");
451
- }
452
-
453
- // Stick jQuery into the tinymce namespace
454
- tinymce.$ = $;
455
-
456
- // Setup adapter
457
- tinymce.adapter = {
458
- patchEditor : function(editor) {
459
- var fn = $.fn;
460
-
461
- // Adapt the css function to make sure that the data-mce-style
462
- // attribute gets updated with the new style information
463
- function css(name, value) {
464
- var self = this;
465
-
466
- // Remove data-mce-style when set operation occurs
467
- if (value)
468
- self.removeAttr('data-mce-style');
469
-
470
- return fn.css.apply(self, arguments);
471
- };
472
-
473
- // Apapt the attr function to make sure that it uses the data-mce- prefixed variants
474
- function attr(name, value) {
475
- var self = this;
476
-
477
- // Update/retrive data-mce- attribute variants
478
- if (attrRegExp.test(name)) {
479
- if (value !== undefined) {
480
- // Use TinyMCE behavior when setting the specifc attributes
481
- self.each(function(i, node) {
482
- editor.dom.setAttrib(node, name, value);
483
- });
484
-
485
- return self;
486
- } else
487
- return self.attr('data-mce-' + name);
488
- }
489
-
490
- // Default behavior
491
- return fn.attr.apply(self, arguments);
492
- };
493
-
494
- function htmlPatchFunc(func) {
495
- // Returns a modified function that processes
496
- // the HTML before executing the action this makes sure
497
- // that href/src etc gets moved into the data-mce- variants
498
- return function(content) {
499
- if (content)
500
- content = editor.dom.processHTML(content);
501
-
502
- return func.call(this, content);
503
- };
504
- };
505
-
506
- // Patch various jQuery functions to handle tinymce specific attribute and content behavior
507
- // we don't patch the jQuery.fn directly since it will most likely break compatibility
508
- // with other jQuery logic on the page. Only instances created by TinyMCE should be patched.
509
- function patch(jq) {
510
- // Patch some functions, only patch the object once
511
- if (jq.css !== css) {
512
- // Patch css/attr to use the data-mce- prefixed attribute variants
513
- jq.css = css;
514
- jq.attr = attr;
515
-
516
- // Patch HTML functions to use the DOMUtils.processHTML filter logic
517
- jq.html = htmlPatchFunc(fn.html);
518
- jq.append = htmlPatchFunc(fn.append);
519
- jq.prepend = htmlPatchFunc(fn.prepend);
520
- jq.after = htmlPatchFunc(fn.after);
521
- jq.before = htmlPatchFunc(fn.before);
522
- jq.replaceWith = htmlPatchFunc(fn.replaceWith);
523
- jq.tinymce = editor;
524
-
525
- // Each pushed jQuery instance needs to be patched
526
- // as well for example when traversing the DOM
527
- jq.pushStack = function() {
528
- return patch(fn.pushStack.apply(this, arguments));
529
- };
530
- }
531
-
532
- return jq;
533
- };
534
-
535
- // Add a $ function on each editor instance this one is scoped for the editor document object
536
- // this way you can do chaining like this tinymce.get(0).$('p').append('text').css('color', 'red');
537
- editor.$ = function(selector, scope) {
538
- var doc = editor.getDoc();
539
-
540
- return patch($(selector || doc, doc || scope));
541
- };
542
- }
543
- };
544
-
545
- // Patch in core NS functions
546
- tinymce.extend = $.extend;
547
- tinymce.extend(tinymce, {
548
- map : $.map,
549
- grep : function(a, f) {return $.grep(a, f || function(){return 1;});},
550
- inArray : function(a, v) {return $.inArray(v, a || []);}
551
-
552
- /* Didn't iterate stylesheets
553
- each : function(o, cb, s) {
554
- if (!o)
555
- return 0;
556
-
557
- var r = 1;
558
-
559
- $.each(o, function(nr, el){
560
- if (cb.call(s, el, nr, o) === false) {
561
- r = 0;
562
- return false;
563
- }
564
- });
565
-
566
- return r;
567
- }*/
568
- });
569
-
570
- // Patch in functions in various clases
571
- // Add a "#ifndefjquery" statement around each core API function you add below
572
- var patches = {
573
- 'tinymce.dom.DOMUtils' : {
574
- /*
575
- addClass : function(e, c) {
576
- if (is(e, 'array') && is(e[0], 'string'))
577
- e = e.join(',#');
578
- return (e && $(is(e, 'string') ? '#' + e : e)
579
- .addClass(c)
580
- .attr('class')) || false;
581
- },
582
-
583
- hasClass : function(n, c) {
584
- return $(is(n, 'string') ? '#' + n : n).hasClass(c);
585
- },
586
-
587
- removeClass : function(e, c) {
588
- if (!e)
589
- return false;
590
-
591
- var r = [];
592
-
593
- $(is(e, 'string') ? '#' + e : e)
594
- .removeClass(c)
595
- .each(function(){
596
- r.push(this.className);
597
- });
598
-
599
- return r.length == 1 ? r[0] : r;
600
- },
601
- */
602
-
603
- select : function(pattern, scope) {
604
- var t = this;
605
-
606
- return $.find(pattern, t.get(scope) || t.get(t.settings.root_element) || t.doc, []);
607
- },
608
-
609
- is : function(n, patt) {
610
- return $(this.get(n)).is(patt);
611
- }
612
-
613
- /*
614
- show : function(e) {
615
- if (is(e, 'array') && is(e[0], 'string'))
616
- e = e.join(',#');
617
-
618
- $(is(e, 'string') ? '#' + e : e).css('display', 'block');
619
- },
620
-
621
- hide : function(e) {
622
- if (is(e, 'array') && is(e[0], 'string'))
623
- e = e.join(',#');
624
-
625
- $(is(e, 'string') ? '#' + e : e).css('display', 'none');
626
- },
627
-
628
- isHidden : function(e) {
629
- return $(is(e, 'string') ? '#' + e : e).is(':hidden');
630
- },
631
-
632
- insertAfter : function(n, e) {
633
- return $(is(e, 'string') ? '#' + e : e).after(n);
634
- },
635
-
636
- replace : function(o, n, k) {
637
- n = $(is(n, 'string') ? '#' + n : n);
638
-
639
- if (k)
640
- n.children().appendTo(o);
641
-
642
- n.replaceWith(o);
643
- },
644
-
645
- setStyle : function(n, na, v) {
646
- if (is(n, 'array') && is(n[0], 'string'))
647
- n = n.join(',#');
648
-
649
- $(is(n, 'string') ? '#' + n : n).css(na, v);
650
- },
651
-
652
- getStyle : function(n, na, c) {
653
- return $(is(n, 'string') ? '#' + n : n).css(na);
654
- },
655
-
656
- setStyles : function(e, o) {
657
- if (is(e, 'array') && is(e[0], 'string'))
658
- e = e.join(',#');
659
- $(is(e, 'string') ? '#' + e : e).css(o);
660
- },
661
-
662
- setAttrib : function(e, n, v) {
663
- var t = this, s = t.settings;
664
-
665
- if (is(e, 'array') && is(e[0], 'string'))
666
- e = e.join(',#');
667
-
668
- e = $(is(e, 'string') ? '#' + e : e);
669
-
670
- switch (n) {
671
- case "style":
672
- e.each(function(i, v){
673
- if (s.keep_values)
674
- $(v).attr('data-mce-style', v);
675
-
676
- v.style.cssText = v;
677
- });
678
- break;
679
-
680
- case "class":
681
- e.each(function(){
682
- this.className = v;
683
- });
684
- break;
685
-
686
- case "src":
687
- case "href":
688
- e.each(function(i, v){
689
- if (s.keep_values) {
690
- if (s.url_converter)
691
- v = s.url_converter.call(s.url_converter_scope || t, v, n, v);
692
-
693
- t.setAttrib(v, 'data-mce-' + n, v);
694
- }
695
- });
696
-
697
- break;
698
- }
699
-
700
- if (v !== null && v.length !== 0)
701
- e.attr(n, '' + v);
702
- else
703
- e.removeAttr(n);
704
- },
705
-
706
- setAttribs : function(e, o) {
707
- var t = this;
708
-
709
- $.each(o, function(n, v){
710
- t.setAttrib(e,n,v);
711
- });
712
- }
713
- */
714
- }
715
-
716
- /*
717
- 'tinymce.dom.Event' : {
718
- add : function (o, n, f, s) {
719
- var lo, cb;
720
-
721
- cb = function(e) {
722
- e.target = e.target || this;
723
- f.call(s || this, e);
724
- };
725
-
726
- if (is(o, 'array') && is(o[0], 'string'))
727
- o = o.join(',#');
728
- o = $(is(o, 'string') ? '#' + o : o);
729
- if (n == 'init') {
730
- o.ready(cb, s);
731
- } else {
732
- if (s) {
733
- o.bind(n, s, cb);
734
- } else {
735
- o.bind(n, cb);
736
- }
737
- }
738
-
739
- lo = this._jqLookup || (this._jqLookup = []);
740
- lo.push({func : f, cfunc : cb});
741
-
742
- return cb;
743
- },
744
-
745
- remove : function(o, n, f) {
746
- // Find cfunc
747
- $(this._jqLookup).each(function() {
748
- if (this.func === f)
749
- f = this.cfunc;
750
- });
751
-
752
- if (is(o, 'array') && is(o[0], 'string'))
753
- o = o.join(',#');
754
-
755
- $(is(o, 'string') ? '#' + o : o).unbind(n,f);
756
-
757
- return true;
758
- }
759
- }
760
- */
761
- };
762
-
763
- // Patch functions after a class is created
764
- tinymce.onCreate = function(ty, c, p) {
765
- tinymce.extend(p, patches[c]);
766
- };
767
- })(window.jQuery, tinymce);
768
-
769
-
770
495
 
771
496
  tinymce.create('tinymce.util.Dispatcher', {
772
497
  scope : null,
@@ -3808,6 +3533,39 @@ tinymce.html.Writer = function(settings) {
3808
3533
  },
3809
3534
 
3810
3535
 
3536
+ select : function(pa, s) {
3537
+ var t = this;
3538
+
3539
+ return tinymce.dom.Sizzle(pa, t.get(s) || t.get(t.settings.root_element) || t.doc, []);
3540
+ },
3541
+
3542
+ is : function(n, selector) {
3543
+ var i;
3544
+
3545
+ // If it isn't an array then try to do some simple selectors instead of Sizzle for to boost performance
3546
+ if (n.length === undefined) {
3547
+ // Simple all selector
3548
+ if (selector === '*')
3549
+ return n.nodeType == 1;
3550
+
3551
+ // Simple selector just elements
3552
+ if (simpleSelectorRe.test(selector)) {
3553
+ selector = selector.toLowerCase().split(/,/);
3554
+ n = n.nodeName.toLowerCase();
3555
+
3556
+ for (i = selector.length - 1; i >= 0; i--) {
3557
+ if (selector[i] == n)
3558
+ return true;
3559
+ }
3560
+
3561
+ return false;
3562
+ }
3563
+ }
3564
+
3565
+ return tinymce.dom.Sizzle.matches(selector, n.nodeType ? [n] : n).length > 0;
3566
+ },
3567
+
3568
+
3811
3569
  add : function(p, n, a, h, c) {
3812
3570
  var t = this;
3813
3571
 
@@ -5985,72 +5743,1142 @@ tinymce.html.Writer = function(settings) {
5985
5743
  })();
5986
5744
 
5987
5745
 
5988
- (function(tinymce) {
5989
- // Shorten names
5990
- var each = tinymce.each, DOM = tinymce.DOM, isIE = tinymce.isIE, isWebKit = tinymce.isWebKit, Event;
5746
+ /*
5747
+ * Sizzle CSS Selector Engine - v1.0
5748
+ * Copyright 2009, The Dojo Foundation
5749
+ * Released under the MIT, BSD, and GPL Licenses.
5750
+ * More information: http://sizzlejs.com/
5751
+ */
5752
+ (function(){
5753
+
5754
+ var chunker = /((?:\((?:\([^()]+\)|[^()]+)+\)|\[(?:\[[^\[\]]*\]|['"][^'"]*['"]|[^\[\]'"]+)+\]|\\.|[^ >+~,(\[\\]+)+|[>+~])(\s*,\s*)?((?:.|\r|\n)*)/g,
5755
+ done = 0,
5756
+ toString = Object.prototype.toString,
5757
+ hasDuplicate = false,
5758
+ baseHasDuplicate = true;
5759
+
5760
+ // Here we check if the JavaScript engine is using some sort of
5761
+ // optimization where it does not always call our comparision
5762
+ // function. If that is the case, discard the hasDuplicate value.
5763
+ // Thus far that includes Google Chrome.
5764
+ [0, 0].sort(function(){
5765
+ baseHasDuplicate = false;
5766
+ return 0;
5767
+ });
5991
5768
 
5992
- tinymce.create('tinymce.dom.EventUtils', {
5993
- EventUtils : function() {
5994
- this.inits = [];
5995
- this.events = [];
5996
- },
5769
+ var Sizzle = function(selector, context, results, seed) {
5770
+ results = results || [];
5771
+ context = context || document;
5997
5772
 
5998
- add : function(o, n, f, s) {
5999
- var cb, t = this, el = t.events, r;
5773
+ var origContext = context;
6000
5774
 
6001
- if (n instanceof Array) {
6002
- r = [];
5775
+ if ( context.nodeType !== 1 && context.nodeType !== 9 ) {
5776
+ return [];
5777
+ }
5778
+
5779
+ if ( !selector || typeof selector !== "string" ) {
5780
+ return results;
5781
+ }
6003
5782
 
6004
- each(n, function(n) {
6005
- r.push(t.add(o, n, f, s));
6006
- });
5783
+ var parts = [], m, set, checkSet, extra, prune = true, contextXML = Sizzle.isXML(context),
5784
+ soFar = selector, ret, cur, pop, i;
5785
+
5786
+ // Reset the position of the chunker regexp (start from head)
5787
+ do {
5788
+ chunker.exec("");
5789
+ m = chunker.exec(soFar);
6007
5790
 
6008
- return r;
5791
+ if ( m ) {
5792
+ soFar = m[3];
5793
+
5794
+ parts.push( m[1] );
5795
+
5796
+ if ( m[2] ) {
5797
+ extra = m[3];
5798
+ break;
6009
5799
  }
5800
+ }
5801
+ } while ( m );
6010
5802
 
6011
- // Handle array
6012
- if (o && o.hasOwnProperty && o instanceof Array) {
6013
- r = [];
5803
+ if ( parts.length > 1 && origPOS.exec( selector ) ) {
5804
+ if ( parts.length === 2 && Expr.relative[ parts[0] ] ) {
5805
+ set = posProcess( parts[0] + parts[1], context );
5806
+ } else {
5807
+ set = Expr.relative[ parts[0] ] ?
5808
+ [ context ] :
5809
+ Sizzle( parts.shift(), context );
6014
5810
 
6015
- each(o, function(o) {
6016
- o = DOM.get(o);
6017
- r.push(t.add(o, n, f, s));
6018
- });
5811
+ while ( parts.length ) {
5812
+ selector = parts.shift();
6019
5813
 
6020
- return r;
5814
+ if ( Expr.relative[ selector ] ) {
5815
+ selector += parts.shift();
5816
+ }
5817
+
5818
+ set = posProcess( selector, set );
6021
5819
  }
5820
+ }
5821
+ } else {
5822
+ // Take a shortcut and set the context if the root selector is an ID
5823
+ // (but not if it'll be faster if the inner selector is an ID)
5824
+ if ( !seed && parts.length > 1 && context.nodeType === 9 && !contextXML &&
5825
+ Expr.match.ID.test(parts[0]) && !Expr.match.ID.test(parts[parts.length - 1]) ) {
5826
+ ret = Sizzle.find( parts.shift(), context, contextXML );
5827
+ context = ret.expr ? Sizzle.filter( ret.expr, ret.set )[0] : ret.set[0];
5828
+ }
6022
5829
 
6023
- o = DOM.get(o);
6024
-
6025
- if (!o)
6026
- return;
6027
-
6028
- // Setup event callback
6029
- cb = function(e) {
6030
- // Is all events disabled
6031
- if (t.disabled)
6032
- return;
5830
+ if ( context ) {
5831
+ ret = seed ?
5832
+ { expr: parts.pop(), set: makeArray(seed) } :
5833
+ Sizzle.find( parts.pop(), parts.length === 1 && (parts[0] === "~" || parts[0] === "+") && context.parentNode ? context.parentNode : context, contextXML );
5834
+ set = ret.expr ? Sizzle.filter( ret.expr, ret.set ) : ret.set;
6033
5835
 
6034
- e = e || window.event;
5836
+ if ( parts.length > 0 ) {
5837
+ checkSet = makeArray(set);
5838
+ } else {
5839
+ prune = false;
5840
+ }
6035
5841
 
6036
- // Patch in target, preventDefault and stopPropagation in IE it's W3C valid
6037
- if (e && isIE) {
6038
- if (!e.target)
6039
- e.target = e.srcElement;
5842
+ while ( parts.length ) {
5843
+ cur = parts.pop();
5844
+ pop = cur;
6040
5845
 
6041
- // Patch in preventDefault, stopPropagation methods for W3C compatibility
6042
- tinymce.extend(e, t._stoppers);
5846
+ if ( !Expr.relative[ cur ] ) {
5847
+ cur = "";
5848
+ } else {
5849
+ pop = parts.pop();
6043
5850
  }
6044
5851
 
6045
- if (!s)
6046
- return f(e);
6047
-
6048
- return f.call(s, e);
6049
- };
5852
+ if ( pop == null ) {
5853
+ pop = context;
5854
+ }
6050
5855
 
6051
- if (n == 'unload') {
6052
- tinymce.unloads.unshift({func : cb});
6053
- return cb;
5856
+ Expr.relative[ cur ]( checkSet, pop, contextXML );
5857
+ }
5858
+ } else {
5859
+ checkSet = parts = [];
5860
+ }
5861
+ }
5862
+
5863
+ if ( !checkSet ) {
5864
+ checkSet = set;
5865
+ }
5866
+
5867
+ if ( !checkSet ) {
5868
+ Sizzle.error( cur || selector );
5869
+ }
5870
+
5871
+ if ( toString.call(checkSet) === "[object Array]" ) {
5872
+ if ( !prune ) {
5873
+ results.push.apply( results, checkSet );
5874
+ } else if ( context && context.nodeType === 1 ) {
5875
+ for ( i = 0; checkSet[i] != null; i++ ) {
5876
+ if ( checkSet[i] && (checkSet[i] === true || checkSet[i].nodeType === 1 && Sizzle.contains(context, checkSet[i])) ) {
5877
+ results.push( set[i] );
5878
+ }
5879
+ }
5880
+ } else {
5881
+ for ( i = 0; checkSet[i] != null; i++ ) {
5882
+ if ( checkSet[i] && checkSet[i].nodeType === 1 ) {
5883
+ results.push( set[i] );
5884
+ }
5885
+ }
5886
+ }
5887
+ } else {
5888
+ makeArray( checkSet, results );
5889
+ }
5890
+
5891
+ if ( extra ) {
5892
+ Sizzle( extra, origContext, results, seed );
5893
+ Sizzle.uniqueSort( results );
5894
+ }
5895
+
5896
+ return results;
5897
+ };
5898
+
5899
+ Sizzle.uniqueSort = function(results){
5900
+ if ( sortOrder ) {
5901
+ hasDuplicate = baseHasDuplicate;
5902
+ results.sort(sortOrder);
5903
+
5904
+ if ( hasDuplicate ) {
5905
+ for ( var i = 1; i < results.length; i++ ) {
5906
+ if ( results[i] === results[i-1] ) {
5907
+ results.splice(i--, 1);
5908
+ }
5909
+ }
5910
+ }
5911
+ }
5912
+
5913
+ return results;
5914
+ };
5915
+
5916
+ Sizzle.matches = function(expr, set){
5917
+ return Sizzle(expr, null, null, set);
5918
+ };
5919
+
5920
+ Sizzle.find = function(expr, context, isXML){
5921
+ var set;
5922
+
5923
+ if ( !expr ) {
5924
+ return [];
5925
+ }
5926
+
5927
+ for ( var i = 0, l = Expr.order.length; i < l; i++ ) {
5928
+ var type = Expr.order[i], match;
5929
+
5930
+ if ( (match = Expr.leftMatch[ type ].exec( expr )) ) {
5931
+ var left = match[1];
5932
+ match.splice(1,1);
5933
+
5934
+ if ( left.substr( left.length - 1 ) !== "\\" ) {
5935
+ match[1] = (match[1] || "").replace(/\\/g, "");
5936
+ set = Expr.find[ type ]( match, context, isXML );
5937
+ if ( set != null ) {
5938
+ expr = expr.replace( Expr.match[ type ], "" );
5939
+ break;
5940
+ }
5941
+ }
5942
+ }
5943
+ }
5944
+
5945
+ if ( !set ) {
5946
+ set = context.getElementsByTagName("*");
5947
+ }
5948
+
5949
+ return {set: set, expr: expr};
5950
+ };
5951
+
5952
+ Sizzle.filter = function(expr, set, inplace, not){
5953
+ var old = expr, result = [], curLoop = set, match, anyFound,
5954
+ isXMLFilter = set && set[0] && Sizzle.isXML(set[0]);
5955
+
5956
+ while ( expr && set.length ) {
5957
+ for ( var type in Expr.filter ) {
5958
+ if ( (match = Expr.leftMatch[ type ].exec( expr )) != null && match[2] ) {
5959
+ var filter = Expr.filter[ type ], found, item, left = match[1];
5960
+ anyFound = false;
5961
+
5962
+ match.splice(1,1);
5963
+
5964
+ if ( left.substr( left.length - 1 ) === "\\" ) {
5965
+ continue;
5966
+ }
5967
+
5968
+ if ( curLoop === result ) {
5969
+ result = [];
5970
+ }
5971
+
5972
+ if ( Expr.preFilter[ type ] ) {
5973
+ match = Expr.preFilter[ type ]( match, curLoop, inplace, result, not, isXMLFilter );
5974
+
5975
+ if ( !match ) {
5976
+ anyFound = found = true;
5977
+ } else if ( match === true ) {
5978
+ continue;
5979
+ }
5980
+ }
5981
+
5982
+ if ( match ) {
5983
+ for ( var i = 0; (item = curLoop[i]) != null; i++ ) {
5984
+ if ( item ) {
5985
+ found = filter( item, match, i, curLoop );
5986
+ var pass = not ^ !!found;
5987
+
5988
+ if ( inplace && found != null ) {
5989
+ if ( pass ) {
5990
+ anyFound = true;
5991
+ } else {
5992
+ curLoop[i] = false;
5993
+ }
5994
+ } else if ( pass ) {
5995
+ result.push( item );
5996
+ anyFound = true;
5997
+ }
5998
+ }
5999
+ }
6000
+ }
6001
+
6002
+ if ( found !== undefined ) {
6003
+ if ( !inplace ) {
6004
+ curLoop = result;
6005
+ }
6006
+
6007
+ expr = expr.replace( Expr.match[ type ], "" );
6008
+
6009
+ if ( !anyFound ) {
6010
+ return [];
6011
+ }
6012
+
6013
+ break;
6014
+ }
6015
+ }
6016
+ }
6017
+
6018
+ // Improper expression
6019
+ if ( expr === old ) {
6020
+ if ( anyFound == null ) {
6021
+ Sizzle.error( expr );
6022
+ } else {
6023
+ break;
6024
+ }
6025
+ }
6026
+
6027
+ old = expr;
6028
+ }
6029
+
6030
+ return curLoop;
6031
+ };
6032
+
6033
+ Sizzle.error = function( msg ) {
6034
+ throw "Syntax error, unrecognized expression: " + msg;
6035
+ };
6036
+
6037
+ var Expr = Sizzle.selectors = {
6038
+ order: [ "ID", "NAME", "TAG" ],
6039
+ match: {
6040
+ ID: /#((?:[\w\u00c0-\uFFFF\-]|\\.)+)/,
6041
+ CLASS: /\.((?:[\w\u00c0-\uFFFF\-]|\\.)+)/,
6042
+ NAME: /\[name=['"]*((?:[\w\u00c0-\uFFFF\-]|\\.)+)['"]*\]/,
6043
+ ATTR: /\[\s*((?:[\w\u00c0-\uFFFF\-]|\\.)+)\s*(?:(\S?=)\s*(['"]*)(.*?)\3|)\s*\]/,
6044
+ TAG: /^((?:[\w\u00c0-\uFFFF\*\-]|\\.)+)/,
6045
+ CHILD: /:(only|nth|last|first)-child(?:\((even|odd|[\dn+\-]*)\))?/,
6046
+ POS: /:(nth|eq|gt|lt|first|last|even|odd)(?:\((\d*)\))?(?=[^\-]|$)/,
6047
+ PSEUDO: /:((?:[\w\u00c0-\uFFFF\-]|\\.)+)(?:\((['"]?)((?:\([^\)]+\)|[^\(\)]*)+)\2\))?/
6048
+ },
6049
+ leftMatch: {},
6050
+ attrMap: {
6051
+ "class": "className",
6052
+ "for": "htmlFor"
6053
+ },
6054
+ attrHandle: {
6055
+ href: function(elem){
6056
+ return elem.getAttribute("href");
6057
+ }
6058
+ },
6059
+ relative: {
6060
+ "+": function(checkSet, part){
6061
+ var isPartStr = typeof part === "string",
6062
+ isTag = isPartStr && !/\W/.test(part),
6063
+ isPartStrNotTag = isPartStr && !isTag;
6064
+
6065
+ if ( isTag ) {
6066
+ part = part.toLowerCase();
6067
+ }
6068
+
6069
+ for ( var i = 0, l = checkSet.length, elem; i < l; i++ ) {
6070
+ if ( (elem = checkSet[i]) ) {
6071
+ while ( (elem = elem.previousSibling) && elem.nodeType !== 1 ) {}
6072
+
6073
+ checkSet[i] = isPartStrNotTag || elem && elem.nodeName.toLowerCase() === part ?
6074
+ elem || false :
6075
+ elem === part;
6076
+ }
6077
+ }
6078
+
6079
+ if ( isPartStrNotTag ) {
6080
+ Sizzle.filter( part, checkSet, true );
6081
+ }
6082
+ },
6083
+ ">": function(checkSet, part){
6084
+ var isPartStr = typeof part === "string",
6085
+ elem, i = 0, l = checkSet.length;
6086
+
6087
+ if ( isPartStr && !/\W/.test(part) ) {
6088
+ part = part.toLowerCase();
6089
+
6090
+ for ( ; i < l; i++ ) {
6091
+ elem = checkSet[i];
6092
+ if ( elem ) {
6093
+ var parent = elem.parentNode;
6094
+ checkSet[i] = parent.nodeName.toLowerCase() === part ? parent : false;
6095
+ }
6096
+ }
6097
+ } else {
6098
+ for ( ; i < l; i++ ) {
6099
+ elem = checkSet[i];
6100
+ if ( elem ) {
6101
+ checkSet[i] = isPartStr ?
6102
+ elem.parentNode :
6103
+ elem.parentNode === part;
6104
+ }
6105
+ }
6106
+
6107
+ if ( isPartStr ) {
6108
+ Sizzle.filter( part, checkSet, true );
6109
+ }
6110
+ }
6111
+ },
6112
+ "": function(checkSet, part, isXML){
6113
+ var doneName = done++, checkFn = dirCheck, nodeCheck;
6114
+
6115
+ if ( typeof part === "string" && !/\W/.test(part) ) {
6116
+ part = part.toLowerCase();
6117
+ nodeCheck = part;
6118
+ checkFn = dirNodeCheck;
6119
+ }
6120
+
6121
+ checkFn("parentNode", part, doneName, checkSet, nodeCheck, isXML);
6122
+ },
6123
+ "~": function(checkSet, part, isXML){
6124
+ var doneName = done++, checkFn = dirCheck, nodeCheck;
6125
+
6126
+ if ( typeof part === "string" && !/\W/.test(part) ) {
6127
+ part = part.toLowerCase();
6128
+ nodeCheck = part;
6129
+ checkFn = dirNodeCheck;
6130
+ }
6131
+
6132
+ checkFn("previousSibling", part, doneName, checkSet, nodeCheck, isXML);
6133
+ }
6134
+ },
6135
+ find: {
6136
+ ID: function(match, context, isXML){
6137
+ if ( typeof context.getElementById !== "undefined" && !isXML ) {
6138
+ var m = context.getElementById(match[1]);
6139
+ return m ? [m] : [];
6140
+ }
6141
+ },
6142
+ NAME: function(match, context){
6143
+ if ( typeof context.getElementsByName !== "undefined" ) {
6144
+ var ret = [], results = context.getElementsByName(match[1]);
6145
+
6146
+ for ( var i = 0, l = results.length; i < l; i++ ) {
6147
+ if ( results[i].getAttribute("name") === match[1] ) {
6148
+ ret.push( results[i] );
6149
+ }
6150
+ }
6151
+
6152
+ return ret.length === 0 ? null : ret;
6153
+ }
6154
+ },
6155
+ TAG: function(match, context){
6156
+ return context.getElementsByTagName(match[1]);
6157
+ }
6158
+ },
6159
+ preFilter: {
6160
+ CLASS: function(match, curLoop, inplace, result, not, isXML){
6161
+ match = " " + match[1].replace(/\\/g, "") + " ";
6162
+
6163
+ if ( isXML ) {
6164
+ return match;
6165
+ }
6166
+
6167
+ for ( var i = 0, elem; (elem = curLoop[i]) != null; i++ ) {
6168
+ if ( elem ) {
6169
+ if ( not ^ (elem.className && (" " + elem.className + " ").replace(/[\t\n]/g, " ").indexOf(match) >= 0) ) {
6170
+ if ( !inplace ) {
6171
+ result.push( elem );
6172
+ }
6173
+ } else if ( inplace ) {
6174
+ curLoop[i] = false;
6175
+ }
6176
+ }
6177
+ }
6178
+
6179
+ return false;
6180
+ },
6181
+ ID: function(match){
6182
+ return match[1].replace(/\\/g, "");
6183
+ },
6184
+ TAG: function(match, curLoop){
6185
+ return match[1].toLowerCase();
6186
+ },
6187
+ CHILD: function(match){
6188
+ if ( match[1] === "nth" ) {
6189
+ // parse equations like 'even', 'odd', '5', '2n', '3n+2', '4n-1', '-n+6'
6190
+ var test = /(-?)(\d*)n((?:\+|-)?\d*)/.exec(
6191
+ match[2] === "even" && "2n" || match[2] === "odd" && "2n+1" ||
6192
+ !/\D/.test( match[2] ) && "0n+" + match[2] || match[2]);
6193
+
6194
+ // calculate the numbers (first)n+(last) including if they are negative
6195
+ match[2] = (test[1] + (test[2] || 1)) - 0;
6196
+ match[3] = test[3] - 0;
6197
+ }
6198
+
6199
+ // TODO: Move to normal caching system
6200
+ match[0] = done++;
6201
+
6202
+ return match;
6203
+ },
6204
+ ATTR: function(match, curLoop, inplace, result, not, isXML){
6205
+ var name = match[1].replace(/\\/g, "");
6206
+
6207
+ if ( !isXML && Expr.attrMap[name] ) {
6208
+ match[1] = Expr.attrMap[name];
6209
+ }
6210
+
6211
+ if ( match[2] === "~=" ) {
6212
+ match[4] = " " + match[4] + " ";
6213
+ }
6214
+
6215
+ return match;
6216
+ },
6217
+ PSEUDO: function(match, curLoop, inplace, result, not){
6218
+ if ( match[1] === "not" ) {
6219
+ // If we're dealing with a complex expression, or a simple one
6220
+ if ( ( chunker.exec(match[3]) || "" ).length > 1 || /^\w/.test(match[3]) ) {
6221
+ match[3] = Sizzle(match[3], null, null, curLoop);
6222
+ } else {
6223
+ var ret = Sizzle.filter(match[3], curLoop, inplace, true ^ not);
6224
+ if ( !inplace ) {
6225
+ result.push.apply( result, ret );
6226
+ }
6227
+ return false;
6228
+ }
6229
+ } else if ( Expr.match.POS.test( match[0] ) || Expr.match.CHILD.test( match[0] ) ) {
6230
+ return true;
6231
+ }
6232
+
6233
+ return match;
6234
+ },
6235
+ POS: function(match){
6236
+ match.unshift( true );
6237
+ return match;
6238
+ }
6239
+ },
6240
+ filters: {
6241
+ enabled: function(elem){
6242
+ return elem.disabled === false && elem.type !== "hidden";
6243
+ },
6244
+ disabled: function(elem){
6245
+ return elem.disabled === true;
6246
+ },
6247
+ checked: function(elem){
6248
+ return elem.checked === true;
6249
+ },
6250
+ selected: function(elem){
6251
+ // Accessing this property makes selected-by-default
6252
+ // options in Safari work properly
6253
+ elem.parentNode.selectedIndex;
6254
+ return elem.selected === true;
6255
+ },
6256
+ parent: function(elem){
6257
+ return !!elem.firstChild;
6258
+ },
6259
+ empty: function(elem){
6260
+ return !elem.firstChild;
6261
+ },
6262
+ has: function(elem, i, match){
6263
+ return !!Sizzle( match[3], elem ).length;
6264
+ },
6265
+ header: function(elem){
6266
+ return (/h\d/i).test( elem.nodeName );
6267
+ },
6268
+ text: function(elem){
6269
+ return "text" === elem.type;
6270
+ },
6271
+ radio: function(elem){
6272
+ return "radio" === elem.type;
6273
+ },
6274
+ checkbox: function(elem){
6275
+ return "checkbox" === elem.type;
6276
+ },
6277
+ file: function(elem){
6278
+ return "file" === elem.type;
6279
+ },
6280
+ password: function(elem){
6281
+ return "password" === elem.type;
6282
+ },
6283
+ submit: function(elem){
6284
+ return "submit" === elem.type;
6285
+ },
6286
+ image: function(elem){
6287
+ return "image" === elem.type;
6288
+ },
6289
+ reset: function(elem){
6290
+ return "reset" === elem.type;
6291
+ },
6292
+ button: function(elem){
6293
+ return "button" === elem.type || elem.nodeName.toLowerCase() === "button";
6294
+ },
6295
+ input: function(elem){
6296
+ return (/input|select|textarea|button/i).test(elem.nodeName);
6297
+ }
6298
+ },
6299
+ setFilters: {
6300
+ first: function(elem, i){
6301
+ return i === 0;
6302
+ },
6303
+ last: function(elem, i, match, array){
6304
+ return i === array.length - 1;
6305
+ },
6306
+ even: function(elem, i){
6307
+ return i % 2 === 0;
6308
+ },
6309
+ odd: function(elem, i){
6310
+ return i % 2 === 1;
6311
+ },
6312
+ lt: function(elem, i, match){
6313
+ return i < match[3] - 0;
6314
+ },
6315
+ gt: function(elem, i, match){
6316
+ return i > match[3] - 0;
6317
+ },
6318
+ nth: function(elem, i, match){
6319
+ return match[3] - 0 === i;
6320
+ },
6321
+ eq: function(elem, i, match){
6322
+ return match[3] - 0 === i;
6323
+ }
6324
+ },
6325
+ filter: {
6326
+ PSEUDO: function(elem, match, i, array){
6327
+ var name = match[1], filter = Expr.filters[ name ];
6328
+
6329
+ if ( filter ) {
6330
+ return filter( elem, i, match, array );
6331
+ } else if ( name === "contains" ) {
6332
+ return (elem.textContent || elem.innerText || Sizzle.getText([ elem ]) || "").indexOf(match[3]) >= 0;
6333
+ } else if ( name === "not" ) {
6334
+ var not = match[3];
6335
+
6336
+ for ( var j = 0, l = not.length; j < l; j++ ) {
6337
+ if ( not[j] === elem ) {
6338
+ return false;
6339
+ }
6340
+ }
6341
+
6342
+ return true;
6343
+ } else {
6344
+ Sizzle.error( "Syntax error, unrecognized expression: " + name );
6345
+ }
6346
+ },
6347
+ CHILD: function(elem, match){
6348
+ var type = match[1], node = elem;
6349
+ switch (type) {
6350
+ case 'only':
6351
+ case 'first':
6352
+ while ( (node = node.previousSibling) ) {
6353
+ if ( node.nodeType === 1 ) {
6354
+ return false;
6355
+ }
6356
+ }
6357
+ if ( type === "first" ) {
6358
+ return true;
6359
+ }
6360
+ node = elem;
6361
+ case 'last':
6362
+ while ( (node = node.nextSibling) ) {
6363
+ if ( node.nodeType === 1 ) {
6364
+ return false;
6365
+ }
6366
+ }
6367
+ return true;
6368
+ case 'nth':
6369
+ var first = match[2], last = match[3];
6370
+
6371
+ if ( first === 1 && last === 0 ) {
6372
+ return true;
6373
+ }
6374
+
6375
+ var doneName = match[0],
6376
+ parent = elem.parentNode;
6377
+
6378
+ if ( parent && (parent.sizcache !== doneName || !elem.nodeIndex) ) {
6379
+ var count = 0;
6380
+ for ( node = parent.firstChild; node; node = node.nextSibling ) {
6381
+ if ( node.nodeType === 1 ) {
6382
+ node.nodeIndex = ++count;
6383
+ }
6384
+ }
6385
+ parent.sizcache = doneName;
6386
+ }
6387
+
6388
+ var diff = elem.nodeIndex - last;
6389
+ if ( first === 0 ) {
6390
+ return diff === 0;
6391
+ } else {
6392
+ return ( diff % first === 0 && diff / first >= 0 );
6393
+ }
6394
+ }
6395
+ },
6396
+ ID: function(elem, match){
6397
+ return elem.nodeType === 1 && elem.getAttribute("id") === match;
6398
+ },
6399
+ TAG: function(elem, match){
6400
+ return (match === "*" && elem.nodeType === 1) || elem.nodeName.toLowerCase() === match;
6401
+ },
6402
+ CLASS: function(elem, match){
6403
+ return (" " + (elem.className || elem.getAttribute("class")) + " ")
6404
+ .indexOf( match ) > -1;
6405
+ },
6406
+ ATTR: function(elem, match){
6407
+ var name = match[1],
6408
+ result = Expr.attrHandle[ name ] ?
6409
+ Expr.attrHandle[ name ]( elem ) :
6410
+ elem[ name ] != null ?
6411
+ elem[ name ] :
6412
+ elem.getAttribute( name ),
6413
+ value = result + "",
6414
+ type = match[2],
6415
+ check = match[4];
6416
+
6417
+ return result == null ?
6418
+ type === "!=" :
6419
+ type === "=" ?
6420
+ value === check :
6421
+ type === "*=" ?
6422
+ value.indexOf(check) >= 0 :
6423
+ type === "~=" ?
6424
+ (" " + value + " ").indexOf(check) >= 0 :
6425
+ !check ?
6426
+ value && result !== false :
6427
+ type === "!=" ?
6428
+ value !== check :
6429
+ type === "^=" ?
6430
+ value.indexOf(check) === 0 :
6431
+ type === "$=" ?
6432
+ value.substr(value.length - check.length) === check :
6433
+ type === "|=" ?
6434
+ value === check || value.substr(0, check.length + 1) === check + "-" :
6435
+ false;
6436
+ },
6437
+ POS: function(elem, match, i, array){
6438
+ var name = match[2], filter = Expr.setFilters[ name ];
6439
+
6440
+ if ( filter ) {
6441
+ return filter( elem, i, match, array );
6442
+ }
6443
+ }
6444
+ }
6445
+ };
6446
+
6447
+ var origPOS = Expr.match.POS,
6448
+ fescape = function(all, num){
6449
+ return "\\" + (num - 0 + 1);
6450
+ };
6451
+
6452
+ for ( var type in Expr.match ) {
6453
+ Expr.match[ type ] = new RegExp( Expr.match[ type ].source + (/(?![^\[]*\])(?![^\(]*\))/.source) );
6454
+ Expr.leftMatch[ type ] = new RegExp( /(^(?:.|\r|\n)*?)/.source + Expr.match[ type ].source.replace(/\\(\d+)/g, fescape) );
6455
+ }
6456
+
6457
+ var makeArray = function(array, results) {
6458
+ array = Array.prototype.slice.call( array, 0 );
6459
+
6460
+ if ( results ) {
6461
+ results.push.apply( results, array );
6462
+ return results;
6463
+ }
6464
+
6465
+ return array;
6466
+ };
6467
+
6468
+ // Perform a simple check to determine if the browser is capable of
6469
+ // converting a NodeList to an array using builtin methods.
6470
+ // Also verifies that the returned array holds DOM nodes
6471
+ // (which is not the case in the Blackberry browser)
6472
+ try {
6473
+ Array.prototype.slice.call( document.documentElement.childNodes, 0 )[0].nodeType;
6474
+
6475
+ // Provide a fallback method if it does not work
6476
+ } catch(e){
6477
+ makeArray = function(array, results) {
6478
+ var ret = results || [], i = 0;
6479
+
6480
+ if ( toString.call(array) === "[object Array]" ) {
6481
+ Array.prototype.push.apply( ret, array );
6482
+ } else {
6483
+ if ( typeof array.length === "number" ) {
6484
+ for ( var l = array.length; i < l; i++ ) {
6485
+ ret.push( array[i] );
6486
+ }
6487
+ } else {
6488
+ for ( ; array[i]; i++ ) {
6489
+ ret.push( array[i] );
6490
+ }
6491
+ }
6492
+ }
6493
+
6494
+ return ret;
6495
+ };
6496
+ }
6497
+
6498
+ var sortOrder;
6499
+
6500
+ if ( document.documentElement.compareDocumentPosition ) {
6501
+ sortOrder = function( a, b ) {
6502
+ if ( !a.compareDocumentPosition || !b.compareDocumentPosition ) {
6503
+ if ( a == b ) {
6504
+ hasDuplicate = true;
6505
+ }
6506
+ return a.compareDocumentPosition ? -1 : 1;
6507
+ }
6508
+
6509
+ var ret = a.compareDocumentPosition(b) & 4 ? -1 : a === b ? 0 : 1;
6510
+ if ( ret === 0 ) {
6511
+ hasDuplicate = true;
6512
+ }
6513
+ return ret;
6514
+ };
6515
+ } else if ( "sourceIndex" in document.documentElement ) {
6516
+ sortOrder = function( a, b ) {
6517
+ if ( !a.sourceIndex || !b.sourceIndex ) {
6518
+ if ( a == b ) {
6519
+ hasDuplicate = true;
6520
+ }
6521
+ return a.sourceIndex ? -1 : 1;
6522
+ }
6523
+
6524
+ var ret = a.sourceIndex - b.sourceIndex;
6525
+ if ( ret === 0 ) {
6526
+ hasDuplicate = true;
6527
+ }
6528
+ return ret;
6529
+ };
6530
+ } else if ( document.createRange ) {
6531
+ sortOrder = function( a, b ) {
6532
+ if ( !a.ownerDocument || !b.ownerDocument ) {
6533
+ if ( a == b ) {
6534
+ hasDuplicate = true;
6535
+ }
6536
+ return a.ownerDocument ? -1 : 1;
6537
+ }
6538
+
6539
+ var aRange = a.ownerDocument.createRange(), bRange = b.ownerDocument.createRange();
6540
+ aRange.setStart(a, 0);
6541
+ aRange.setEnd(a, 0);
6542
+ bRange.setStart(b, 0);
6543
+ bRange.setEnd(b, 0);
6544
+ var ret = aRange.compareBoundaryPoints(Range.START_TO_END, bRange);
6545
+ if ( ret === 0 ) {
6546
+ hasDuplicate = true;
6547
+ }
6548
+ return ret;
6549
+ };
6550
+ }
6551
+
6552
+ // Utility function for retreiving the text value of an array of DOM nodes
6553
+ Sizzle.getText = function( elems ) {
6554
+ var ret = "", elem;
6555
+
6556
+ for ( var i = 0; elems[i]; i++ ) {
6557
+ elem = elems[i];
6558
+
6559
+ // Get the text from text nodes and CDATA nodes
6560
+ if ( elem.nodeType === 3 || elem.nodeType === 4 ) {
6561
+ ret += elem.nodeValue;
6562
+
6563
+ // Traverse everything else, except comment nodes
6564
+ } else if ( elem.nodeType !== 8 ) {
6565
+ ret += Sizzle.getText( elem.childNodes );
6566
+ }
6567
+ }
6568
+
6569
+ return ret;
6570
+ };
6571
+
6572
+ // Check to see if the browser returns elements by name when
6573
+ // querying by getElementById (and provide a workaround)
6574
+ (function(){
6575
+ // We're going to inject a fake input element with a specified name
6576
+ var form = document.createElement("div"),
6577
+ id = "script" + (new Date()).getTime();
6578
+ form.innerHTML = "<a name='" + id + "'/>";
6579
+
6580
+ // Inject it into the root element, check its status, and remove it quickly
6581
+ var root = document.documentElement;
6582
+ root.insertBefore( form, root.firstChild );
6583
+
6584
+ // The workaround has to do additional checks after a getElementById
6585
+ // Which slows things down for other browsers (hence the branching)
6586
+ if ( document.getElementById( id ) ) {
6587
+ Expr.find.ID = function(match, context, isXML){
6588
+ if ( typeof context.getElementById !== "undefined" && !isXML ) {
6589
+ var m = context.getElementById(match[1]);
6590
+ return m ? m.id === match[1] || typeof m.getAttributeNode !== "undefined" && m.getAttributeNode("id").nodeValue === match[1] ? [m] : undefined : [];
6591
+ }
6592
+ };
6593
+
6594
+ Expr.filter.ID = function(elem, match){
6595
+ var node = typeof elem.getAttributeNode !== "undefined" && elem.getAttributeNode("id");
6596
+ return elem.nodeType === 1 && node && node.nodeValue === match;
6597
+ };
6598
+ }
6599
+
6600
+ root.removeChild( form );
6601
+ root = form = null; // release memory in IE
6602
+ })();
6603
+
6604
+ (function(){
6605
+ // Check to see if the browser returns only elements
6606
+ // when doing getElementsByTagName("*")
6607
+
6608
+ // Create a fake element
6609
+ var div = document.createElement("div");
6610
+ div.appendChild( document.createComment("") );
6611
+
6612
+ // Make sure no comments are found
6613
+ if ( div.getElementsByTagName("*").length > 0 ) {
6614
+ Expr.find.TAG = function(match, context){
6615
+ var results = context.getElementsByTagName(match[1]);
6616
+
6617
+ // Filter out possible comments
6618
+ if ( match[1] === "*" ) {
6619
+ var tmp = [];
6620
+
6621
+ for ( var i = 0; results[i]; i++ ) {
6622
+ if ( results[i].nodeType === 1 ) {
6623
+ tmp.push( results[i] );
6624
+ }
6625
+ }
6626
+
6627
+ results = tmp;
6628
+ }
6629
+
6630
+ return results;
6631
+ };
6632
+ }
6633
+
6634
+ // Check to see if an attribute returns normalized href attributes
6635
+ div.innerHTML = "<a href='#'></a>";
6636
+ if ( div.firstChild && typeof div.firstChild.getAttribute !== "undefined" &&
6637
+ div.firstChild.getAttribute("href") !== "#" ) {
6638
+ Expr.attrHandle.href = function(elem){
6639
+ return elem.getAttribute("href", 2);
6640
+ };
6641
+ }
6642
+
6643
+ div = null; // release memory in IE
6644
+ })();
6645
+
6646
+ if ( document.querySelectorAll ) {
6647
+ (function(){
6648
+ var oldSizzle = Sizzle, div = document.createElement("div");
6649
+ div.innerHTML = "<p class='TEST'></p>";
6650
+
6651
+ // Safari can't handle uppercase or unicode characters when
6652
+ // in quirks mode.
6653
+ if ( div.querySelectorAll && div.querySelectorAll(".TEST").length === 0 ) {
6654
+ return;
6655
+ }
6656
+
6657
+ Sizzle = function(query, context, extra, seed){
6658
+ context = context || document;
6659
+
6660
+ // Only use querySelectorAll on non-XML documents
6661
+ // (ID selectors don't work in non-HTML documents)
6662
+ if ( !seed && context.nodeType === 9 && !Sizzle.isXML(context) ) {
6663
+ try {
6664
+ return makeArray( context.querySelectorAll(query), extra );
6665
+ } catch(e){}
6666
+ }
6667
+
6668
+ return oldSizzle(query, context, extra, seed);
6669
+ };
6670
+
6671
+ for ( var prop in oldSizzle ) {
6672
+ Sizzle[ prop ] = oldSizzle[ prop ];
6673
+ }
6674
+
6675
+ div = null; // release memory in IE
6676
+ })();
6677
+ }
6678
+
6679
+ (function(){
6680
+ var div = document.createElement("div");
6681
+
6682
+ div.innerHTML = "<div class='test e'></div><div class='test'></div>";
6683
+
6684
+ // Opera can't find a second classname (in 9.6)
6685
+ // Also, make sure that getElementsByClassName actually exists
6686
+ if ( !div.getElementsByClassName || div.getElementsByClassName("e").length === 0 ) {
6687
+ return;
6688
+ }
6689
+
6690
+ // Safari caches class attributes, doesn't catch changes (in 3.2)
6691
+ div.lastChild.className = "e";
6692
+
6693
+ if ( div.getElementsByClassName("e").length === 1 ) {
6694
+ return;
6695
+ }
6696
+
6697
+ Expr.order.splice(1, 0, "CLASS");
6698
+ Expr.find.CLASS = function(match, context, isXML) {
6699
+ if ( typeof context.getElementsByClassName !== "undefined" && !isXML ) {
6700
+ return context.getElementsByClassName(match[1]);
6701
+ }
6702
+ };
6703
+
6704
+ div = null; // release memory in IE
6705
+ })();
6706
+
6707
+ function dirNodeCheck( dir, cur, doneName, checkSet, nodeCheck, isXML ) {
6708
+ for ( var i = 0, l = checkSet.length; i < l; i++ ) {
6709
+ var elem = checkSet[i];
6710
+ if ( elem ) {
6711
+ elem = elem[dir];
6712
+ var match = false;
6713
+
6714
+ while ( elem ) {
6715
+ if ( elem.sizcache === doneName ) {
6716
+ match = checkSet[elem.sizset];
6717
+ break;
6718
+ }
6719
+
6720
+ if ( elem.nodeType === 1 && !isXML ){
6721
+ elem.sizcache = doneName;
6722
+ elem.sizset = i;
6723
+ }
6724
+
6725
+ if ( elem.nodeName.toLowerCase() === cur ) {
6726
+ match = elem;
6727
+ break;
6728
+ }
6729
+
6730
+ elem = elem[dir];
6731
+ }
6732
+
6733
+ checkSet[i] = match;
6734
+ }
6735
+ }
6736
+ }
6737
+
6738
+ function dirCheck( dir, cur, doneName, checkSet, nodeCheck, isXML ) {
6739
+ for ( var i = 0, l = checkSet.length; i < l; i++ ) {
6740
+ var elem = checkSet[i];
6741
+ if ( elem ) {
6742
+ elem = elem[dir];
6743
+ var match = false;
6744
+
6745
+ while ( elem ) {
6746
+ if ( elem.sizcache === doneName ) {
6747
+ match = checkSet[elem.sizset];
6748
+ break;
6749
+ }
6750
+
6751
+ if ( elem.nodeType === 1 ) {
6752
+ if ( !isXML ) {
6753
+ elem.sizcache = doneName;
6754
+ elem.sizset = i;
6755
+ }
6756
+ if ( typeof cur !== "string" ) {
6757
+ if ( elem === cur ) {
6758
+ match = true;
6759
+ break;
6760
+ }
6761
+
6762
+ } else if ( Sizzle.filter( cur, [elem] ).length > 0 ) {
6763
+ match = elem;
6764
+ break;
6765
+ }
6766
+ }
6767
+
6768
+ elem = elem[dir];
6769
+ }
6770
+
6771
+ checkSet[i] = match;
6772
+ }
6773
+ }
6774
+ }
6775
+
6776
+ Sizzle.contains = document.compareDocumentPosition ? function(a, b){
6777
+ return !!(a.compareDocumentPosition(b) & 16);
6778
+ } : function(a, b){
6779
+ return a !== b && (a.contains ? a.contains(b) : true);
6780
+ };
6781
+
6782
+ Sizzle.isXML = function(elem){
6783
+ // documentElement is verified for cases where it doesn't yet exist
6784
+ // (such as loading iframes in IE - #4833)
6785
+ var documentElement = (elem ? elem.ownerDocument || elem : 0).documentElement;
6786
+ return documentElement ? documentElement.nodeName !== "HTML" : false;
6787
+ };
6788
+
6789
+ var posProcess = function(selector, context){
6790
+ var tmpSet = [], later = "", match,
6791
+ root = context.nodeType ? [context] : context;
6792
+
6793
+ // Position selectors must be done after the filter
6794
+ // And so must :not(positional) so we move all PSEUDOs to the end
6795
+ while ( (match = Expr.match.PSEUDO.exec( selector )) ) {
6796
+ later += match[0];
6797
+ selector = selector.replace( Expr.match.PSEUDO, "" );
6798
+ }
6799
+
6800
+ selector = Expr.relative[selector] ? selector + "*" : selector;
6801
+
6802
+ for ( var i = 0, l = root.length; i < l; i++ ) {
6803
+ Sizzle( selector, root[i], tmpSet );
6804
+ }
6805
+
6806
+ return Sizzle.filter( later, tmpSet );
6807
+ };
6808
+
6809
+ // EXPOSE
6810
+
6811
+ window.tinymce.dom.Sizzle = Sizzle;
6812
+
6813
+ })();
6814
+
6815
+
6816
+ (function(tinymce) {
6817
+ // Shorten names
6818
+ var each = tinymce.each, DOM = tinymce.DOM, isIE = tinymce.isIE, isWebKit = tinymce.isWebKit, Event;
6819
+
6820
+ tinymce.create('tinymce.dom.EventUtils', {
6821
+ EventUtils : function() {
6822
+ this.inits = [];
6823
+ this.events = [];
6824
+ },
6825
+
6826
+ add : function(o, n, f, s) {
6827
+ var cb, t = this, el = t.events, r;
6828
+
6829
+ if (n instanceof Array) {
6830
+ r = [];
6831
+
6832
+ each(n, function(n) {
6833
+ r.push(t.add(o, n, f, s));
6834
+ });
6835
+
6836
+ return r;
6837
+ }
6838
+
6839
+ // Handle array
6840
+ if (o && o.hasOwnProperty && o instanceof Array) {
6841
+ r = [];
6842
+
6843
+ each(o, function(o) {
6844
+ o = DOM.get(o);
6845
+ r.push(t.add(o, n, f, s));
6846
+ });
6847
+
6848
+ return r;
6849
+ }
6850
+
6851
+ o = DOM.get(o);
6852
+
6853
+ if (!o)
6854
+ return;
6855
+
6856
+ // Setup event callback
6857
+ cb = function(e) {
6858
+ // Is all events disabled
6859
+ if (t.disabled)
6860
+ return;
6861
+
6862
+ e = e || window.event;
6863
+
6864
+ // Patch in target, preventDefault and stopPropagation in IE it's W3C valid
6865
+ if (e && isIE) {
6866
+ if (!e.target)
6867
+ e.target = e.srcElement;
6868
+
6869
+ // Patch in preventDefault, stopPropagation methods for W3C compatibility
6870
+ tinymce.extend(e, t._stoppers);
6871
+ }
6872
+
6873
+ if (!s)
6874
+ return f(e);
6875
+
6876
+ return f.call(s, e);
6877
+ };
6878
+
6879
+ if (n == 'unload') {
6880
+ tinymce.unloads.unshift({func : cb});
6881
+ return cb;
6054
6882
  }
6055
6883
 
6056
6884
  if (n == 'init') {
@@ -9928,11 +10756,6 @@ tinymce.create('tinymce.ui.Toolbar:tinymce.ui.Container', {
9928
10756
  self.onAddEditor.dispatch(self, editor);
9929
10757
 
9930
10758
 
9931
- // Patch the tinymce.Editor instance with jQuery adapter logic
9932
- if (tinymce.adapter)
9933
- tinymce.adapter.patchEditor(editor);
9934
-
9935
-
9936
10759
  return editor;
9937
10760
  },
9938
10761