alchemy_cms 2.1.12 → 2.2.rc1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (405) hide show
  1. data/.travis.yml +1 -1
  2. data/Gemfile +20 -16
  3. data/README.md +11 -7
  4. data/alchemy_cms.gemspec +31 -29
  5. data/app/assets/javascripts/alchemy/alchemy.base.js +234 -233
  6. data/app/assets/javascripts/alchemy/alchemy.buttons.js +26 -26
  7. data/app/assets/javascripts/alchemy/alchemy.datepicker.js +32 -32
  8. data/app/assets/javascripts/alchemy/alchemy.dirty.js +78 -78
  9. data/app/assets/javascripts/alchemy/alchemy.dragndrop.js +103 -103
  10. data/app/assets/javascripts/alchemy/alchemy.element_editor_selector.js +84 -84
  11. data/app/assets/javascripts/alchemy/alchemy.elements_window.js +88 -88
  12. data/app/assets/javascripts/alchemy/alchemy.file_progress.js +92 -0
  13. data/app/assets/javascripts/alchemy/alchemy.growler.js +23 -23
  14. data/app/assets/javascripts/alchemy/alchemy.html5.js +23 -0
  15. data/app/assets/javascripts/alchemy/alchemy.image_cropper.js +53 -52
  16. data/app/assets/javascripts/alchemy/alchemy.jquery_loader.js +33 -30
  17. data/app/assets/javascripts/alchemy/alchemy.js +2 -0
  18. data/app/assets/javascripts/alchemy/alchemy.js_extensions.js +14 -14
  19. data/app/assets/javascripts/alchemy/alchemy.link_overlay.js.coffee +181 -0
  20. data/app/assets/javascripts/alchemy/alchemy.menubar.js +48 -48
  21. data/app/assets/javascripts/alchemy/alchemy.page_sorter.js +39 -39
  22. data/app/assets/javascripts/alchemy/alchemy.preview.js +81 -83
  23. data/app/assets/javascripts/alchemy/alchemy.preview_window.js +86 -86
  24. data/app/assets/javascripts/alchemy/alchemy.routes.js.erb +23 -23
  25. data/app/assets/javascripts/alchemy/alchemy.swf_upload.js +208 -353
  26. data/app/assets/javascripts/alchemy/alchemy.uploader.js +279 -0
  27. data/app/assets/javascripts/alchemy/alchemy.windows.js +268 -268
  28. data/app/assets/javascripts/tiny_mce/plugins/alchemy_link/editor_plugin.js +42 -42
  29. data/app/assets/stylesheets/alchemy/_defaults.scss +89 -89
  30. data/app/assets/stylesheets/alchemy/base.css.scss +790 -804
  31. data/app/assets/stylesheets/alchemy/buttons.css.scss +263 -264
  32. data/app/assets/stylesheets/alchemy/dashboard.css.scss +66 -66
  33. data/app/assets/stylesheets/alchemy/elements.css.scss +575 -564
  34. data/app/assets/stylesheets/alchemy/flash.css.scss +45 -45
  35. data/app/assets/stylesheets/alchemy/frame.css.scss +262 -262
  36. data/app/assets/stylesheets/alchemy/icons.css.scss +86 -86
  37. data/app/assets/stylesheets/alchemy/jquery-ui.alchemy.css.scss +706 -707
  38. data/app/assets/stylesheets/alchemy/jquery.Jcrop.css.scss +46 -27
  39. data/app/assets/stylesheets/alchemy/jquery.sb.css.scss +107 -107
  40. data/app/assets/stylesheets/alchemy/login.css.scss +40 -38
  41. data/app/assets/stylesheets/alchemy/menubar.css.scss +84 -82
  42. data/app/assets/stylesheets/alchemy/modules.css.scss +9 -9
  43. data/app/assets/stylesheets/alchemy/pagination.css.scss +49 -49
  44. data/app/assets/stylesheets/alchemy/print.css +7 -7
  45. data/app/assets/stylesheets/alchemy/sitemap.css.scss +185 -154
  46. data/app/assets/stylesheets/alchemy/standard_set.css +205 -206
  47. data/app/assets/stylesheets/alchemy/tables.css.scss +94 -60
  48. data/app/assets/stylesheets/alchemy/tinymce_content.css.scss +34 -34
  49. data/app/assets/stylesheets/alchemy/tinymce_dialog.css.scss +177 -177
  50. data/app/assets/stylesheets/alchemy/upload.css.scss +68 -45
  51. data/app/assets/stylesheets/tiny_mce/plugins/inlinepopups/skins/alchemy/window.css.scss +222 -221
  52. data/app/controllers/alchemy/admin/attachments_controller.rb +100 -100
  53. data/app/controllers/alchemy/admin/base_controller.rb +116 -116
  54. data/app/controllers/alchemy/admin/clipboard_controller.rb +44 -44
  55. data/app/controllers/alchemy/admin/contents_controller.rb +55 -55
  56. data/app/controllers/alchemy/admin/dashboard_controller.rb +12 -11
  57. data/app/controllers/alchemy/admin/elements_controller.rb +109 -109
  58. data/app/controllers/alchemy/admin/essence_audios_controller.rb +8 -8
  59. data/app/controllers/alchemy/admin/essence_files_controller.rb +20 -20
  60. data/app/controllers/alchemy/admin/essence_flashes_controller.rb +8 -8
  61. data/app/controllers/alchemy/admin/essence_pictures_controller.rb +81 -81
  62. data/app/controllers/alchemy/admin/essence_videos_controller.rb +8 -8
  63. data/app/controllers/alchemy/admin/languages_controller.rb +16 -4
  64. data/app/controllers/alchemy/admin/layoutpages_controller.rb +9 -9
  65. data/app/controllers/alchemy/admin/pages_controller.rb +249 -248
  66. data/app/controllers/alchemy/admin/pictures_controller.rb +105 -105
  67. data/app/controllers/alchemy/admin/resources_controller.rb +111 -166
  68. data/app/controllers/alchemy/admin/trash_controller.rb +18 -18
  69. data/app/controllers/alchemy/admin/users_controller.rb +69 -69
  70. data/app/controllers/alchemy/attachments_controller.rb +27 -27
  71. data/app/controllers/alchemy/base_controller.rb +159 -155
  72. data/app/controllers/alchemy/elements_controller.rb +16 -16
  73. data/app/controllers/alchemy/messages_controller.rb +59 -59
  74. data/app/controllers/alchemy/pages_controller.rb +194 -198
  75. data/app/controllers/alchemy/pictures_controller.rb +57 -57
  76. data/app/controllers/alchemy/user_sessions_controller.rb +70 -70
  77. data/app/helpers/alchemy/admin/attachments_helper.rb +7 -7
  78. data/app/helpers/alchemy/admin/base_helper.rb +425 -425
  79. data/app/helpers/alchemy/admin/contents_helper.rb +72 -72
  80. data/app/helpers/alchemy/admin/elements_helper.rb +108 -107
  81. data/app/helpers/alchemy/admin/essences_helper.rb +108 -108
  82. data/app/helpers/alchemy/admin/pages_helper.rb +42 -42
  83. data/app/helpers/alchemy/admin/pictures_helper.rb +26 -26
  84. data/app/helpers/alchemy/base_helper.rb +90 -90
  85. data/app/helpers/alchemy/elements_helper.rb +167 -168
  86. data/app/helpers/alchemy/essences_helper.rb +133 -133
  87. data/app/helpers/alchemy/pages_helper.rb +515 -526
  88. data/app/helpers/alchemy/pictures_helper.rb +19 -0
  89. data/app/mailers/alchemy/messages.rb +13 -13
  90. data/app/mailers/alchemy/notifications.rb +19 -19
  91. data/app/models/alchemy.rb +3 -3
  92. data/app/models/alchemy/attachment.rb +52 -78
  93. data/app/models/alchemy/cell.rb +48 -48
  94. data/app/models/alchemy/content.rb +196 -196
  95. data/app/models/alchemy/element.rb +500 -490
  96. data/app/models/alchemy/essence_audio.rb +7 -7
  97. data/app/models/alchemy/essence_date.rb +10 -10
  98. data/app/models/alchemy/essence_file.rb +7 -7
  99. data/app/models/alchemy/essence_flash.rb +6 -6
  100. data/app/models/alchemy/essence_html.rb +9 -9
  101. data/app/models/alchemy/essence_picture.rb +17 -17
  102. data/app/models/alchemy/essence_richtext.rb +53 -53
  103. data/app/models/alchemy/essence_text.rb +21 -21
  104. data/app/models/alchemy/essence_video.rb +7 -7
  105. data/app/models/alchemy/folded_page.rb +3 -3
  106. data/app/models/alchemy/language.rb +91 -91
  107. data/app/models/alchemy/language/code.rb +14 -14
  108. data/app/models/alchemy/message.rb +48 -45
  109. data/app/models/alchemy/page.rb +555 -558
  110. data/app/models/alchemy/picture.rb +100 -99
  111. data/app/models/alchemy/user.rb +76 -74
  112. data/app/models/alchemy/user_session.rb +8 -8
  113. data/app/sweepers/alchemy/content_sweeper.rb +15 -15
  114. data/app/sweepers/alchemy/pages_sweeper.rb +50 -50
  115. data/app/sweepers/alchemy/pictures_sweeper.rb +14 -14
  116. data/app/views/alchemy/admin/attachments/_archive_overlay.html.erb +23 -23
  117. data/app/views/alchemy/admin/attachments/_attachment.html.erb +56 -56
  118. data/app/views/alchemy/admin/attachments/_file_to_assign.html.erb +15 -15
  119. data/app/views/alchemy/admin/attachments/_files_list.html.erb +16 -16
  120. data/app/views/alchemy/admin/attachments/create.js.erb +2 -2
  121. data/app/views/alchemy/admin/attachments/destroy.js.erb +3 -3
  122. data/app/views/alchemy/admin/attachments/edit.html.erb +10 -10
  123. data/app/views/alchemy/admin/attachments/index.html.erb +14 -14
  124. data/app/views/alchemy/admin/attachments/new.html.erb +9 -9
  125. data/app/views/alchemy/admin/clipboard/index.html.erb +21 -21
  126. data/app/views/alchemy/admin/clipboard/insert.js.erb +5 -5
  127. data/app/views/alchemy/admin/contents/_missing.html.erb +1 -1
  128. data/app/views/alchemy/admin/contents/create.js.erb +33 -33
  129. data/app/views/alchemy/admin/contents/destroy.js.erb +5 -5
  130. data/app/views/alchemy/admin/contents/new.html.erb +13 -13
  131. data/app/views/alchemy/admin/contents/order.js.erb +2 -2
  132. data/app/views/alchemy/admin/dashboard/index.html.erb +96 -92
  133. data/app/views/alchemy/admin/elements/_add_content.html.erb +12 -12
  134. data/app/views/alchemy/admin/elements/_element.html.erb +3 -3
  135. data/app/views/alchemy/admin/elements/_new_element_form.html.erb +28 -28
  136. data/app/views/alchemy/admin/elements/_picture_editor.html.erb +21 -21
  137. data/app/views/alchemy/admin/elements/create.js.erb +32 -32
  138. data/app/views/alchemy/admin/elements/index.html.erb +2 -2
  139. data/app/views/alchemy/admin/elements/new.html.erb +31 -31
  140. data/app/views/alchemy/admin/elements/order.js.erb +3 -3
  141. data/app/views/alchemy/admin/elements/trash.js.erb +13 -13
  142. data/app/views/alchemy/admin/elements/update.js.erb +6 -6
  143. data/app/views/alchemy/admin/essence_files/assign.js.erb +6 -6
  144. data/app/views/alchemy/admin/essence_pictures/crop.html.erb +32 -32
  145. data/app/views/alchemy/admin/essence_pictures/destroy.js.erb +1 -1
  146. data/app/views/alchemy/admin/essence_pictures/edit.html.erb +1 -1
  147. data/app/views/alchemy/admin/essence_pictures/update.js.erb +11 -11
  148. data/app/views/alchemy/admin/languages/_form.html.erb +51 -45
  149. data/app/views/alchemy/admin/languages/_language.html.erb +45 -45
  150. data/app/views/alchemy/admin/languages/_table.html.erb +25 -25
  151. data/app/views/alchemy/admin/layoutpages/index.html.erb +35 -35
  152. data/app/views/alchemy/admin/pages/_create_language_form.html.erb +42 -42
  153. data/app/views/alchemy/admin/pages/_external_link.html.erb +1 -1
  154. data/app/views/alchemy/admin/pages/_new_page_form.html.erb +27 -27
  155. data/app/views/alchemy/admin/pages/_page.html.erb +112 -112
  156. data/app/views/alchemy/admin/pages/_sitemap.html.erb +1 -1
  157. data/app/views/alchemy/admin/pages/configure.html.erb +71 -69
  158. data/app/views/alchemy/admin/pages/configure_external.html.erb +38 -38
  159. data/app/views/alchemy/admin/pages/destroy.js.erb +10 -10
  160. data/app/views/alchemy/admin/pages/edit.html.erb +165 -165
  161. data/app/views/alchemy/admin/pages/fold.js.erb +2 -2
  162. data/app/views/alchemy/admin/pages/index.html.erb +66 -66
  163. data/app/views/alchemy/admin/pages/locked.html.erb +1 -1
  164. data/app/views/alchemy/admin/pages/new.html.erb +40 -40
  165. data/app/views/alchemy/admin/pages/sort.js.erb +4 -4
  166. data/app/views/alchemy/admin/pages/unlock.js.erb +6 -6
  167. data/app/views/alchemy/admin/pages/update.js.erb +19 -19
  168. data/app/views/alchemy/admin/partials/_flash.html.erb +2 -2
  169. data/app/views/alchemy/admin/partials/_flash_notices.html.erb +1 -1
  170. data/app/views/alchemy/admin/partials/_flash_upload.html.erb +38 -0
  171. data/app/views/alchemy/admin/partials/_language_tree_select.html.erb +15 -15
  172. data/app/views/alchemy/admin/partials/_main_navigation_entry.html.erb +8 -8
  173. data/app/views/alchemy/admin/partials/_remote_search_form.html.erb +35 -35
  174. data/app/views/alchemy/admin/partials/_search_form.html.erb +14 -14
  175. data/app/views/alchemy/admin/partials/_sub_navigation_tab.html.erb +6 -6
  176. data/app/views/alchemy/admin/partials/_upload_form.html.erb +56 -118
  177. data/app/views/alchemy/admin/pictures/_archive_overlay.html.erb +11 -11
  178. data/app/views/alchemy/admin/pictures/_filter_and_size_bar.html.erb +71 -71
  179. data/app/views/alchemy/admin/pictures/_picture.html.erb +32 -32
  180. data/app/views/alchemy/admin/pictures/_picture_to_assign.html.erb +26 -26
  181. data/app/views/alchemy/admin/pictures/_pictures_list.html.erb +6 -6
  182. data/app/views/alchemy/admin/pictures/create.js.erb +7 -7
  183. data/app/views/alchemy/admin/pictures/index.html.erb +67 -67
  184. data/app/views/alchemy/admin/pictures/show_in_window.html.erb +5 -4
  185. data/app/views/alchemy/admin/resources/_form.html.erb +25 -19
  186. data/app/views/alchemy/admin/resources/_resource.html.erb +37 -36
  187. data/app/views/alchemy/admin/resources/_table.html.erb +17 -17
  188. data/app/views/alchemy/admin/resources/destroy.js.erb +1 -1
  189. data/app/views/alchemy/admin/resources/index.html.erb +14 -14
  190. data/app/views/alchemy/admin/trash/index.html.erb +20 -20
  191. data/app/views/alchemy/admin/users/_table.html.erb +52 -52
  192. data/app/views/alchemy/admin/users/_user.html.erb +35 -36
  193. data/app/views/alchemy/admin/users/index.html.erb +26 -27
  194. data/app/views/alchemy/base/error_notice.html.erb +2 -2
  195. data/app/views/alchemy/base/update.js.erb +1 -1
  196. data/app/views/alchemy/elements/_contactform_view.html.erb +76 -76
  197. data/app/views/alchemy/elements/_download_view.html.erb +1 -1
  198. data/app/views/alchemy/elements/_editor_not_found.html.erb +3 -3
  199. data/app/views/alchemy/elements/_searchresult_view.html.erb +2 -2
  200. data/app/views/alchemy/elements/_sitemap_editor.html.erb +1 -1
  201. data/app/views/alchemy/essences/_essence_audio_view.html.erb +13 -13
  202. data/app/views/alchemy/essences/_essence_date_editor.html.erb +10 -10
  203. data/app/views/alchemy/essences/_essence_file_editor.html.erb +62 -62
  204. data/app/views/alchemy/essences/_essence_file_view.html.erb +8 -8
  205. data/app/views/alchemy/essences/_essence_flash_view.html.erb +19 -19
  206. data/app/views/alchemy/essences/_essence_html_editor.html.erb +6 -6
  207. data/app/views/alchemy/essences/_essence_picture_editor.html.erb +73 -73
  208. data/app/views/alchemy/essences/_essence_picture_view.html.erb +34 -34
  209. data/app/views/alchemy/essences/_essence_richtext_editor.html.erb +7 -7
  210. data/app/views/alchemy/essences/_essence_text_editor.html.erb +8 -8
  211. data/app/views/alchemy/navigation/_image_link.html.erb +12 -12
  212. data/app/views/alchemy/navigation/_link.html.erb +13 -13
  213. data/app/views/alchemy/navigation/_renderer.html.erb +17 -17
  214. data/app/views/alchemy/page_layouts/_layout_footer.html.erb +1 -1
  215. data/app/views/alchemy/page_layouts/_layout_header.html.erb +1 -1
  216. data/app/views/alchemy/pages/show.rss.builder +14 -14
  217. data/app/views/alchemy/search/_result.html.erb +7 -7
  218. data/app/views/alchemy/user_sessions/leave.html.erb +9 -9
  219. data/app/views/alchemy/user_sessions/login.html.erb +39 -39
  220. data/app/views/alchemy/user_sessions/logout.html.erb +1 -1
  221. data/app/views/layouts/alchemy/admin.html.erb +81 -81
  222. data/app/views/layouts/alchemy/login.html.erb +36 -36
  223. data/app/views/layouts/alchemy/pages.html.erb +48 -27
  224. data/bin/alchemy +136 -134
  225. data/config/alchemy/config.yml +13 -9
  226. data/config/locales/alchemy.de.yml +24 -30
  227. data/config/locales/alchemy.en.yml +11 -28
  228. data/config/routes.rb +146 -146
  229. data/db/migrate/20100607193638_create_essence_pictures.rb +3 -3
  230. data/db/migrate/20101109150312_alter_pages_visible_column_default.rb +1 -1
  231. data/db/migrate/20101109151812_create_languages.rb +3 -3
  232. data/db/migrate/20110115123343_remove_css_class_default_from_essence_pictures.rb +3 -3
  233. data/db/migrate/20110224105120_change_pages_visible_default.rb +3 -3
  234. data/db/migrate/20110228182659_remove_default_page_layout_from_pages.rb +2 -2
  235. data/db/migrate/20110414163140_remove_display_name_from_elements.rb +3 -3
  236. data/db/migrate/20110511100516_rename_essence_texts_title_to_link_title.rb +2 -2
  237. data/db/migrate/20110529130500_add_cell_id_to_elements.rb +3 -3
  238. data/db/migrate/20110530102804_change_pages_page_layout_column.rb +3 -3
  239. data/db/migrate/20110711142057_change_open_link_in_new_window_to_link_target.rb +1 -1
  240. data/db/migrate/20111116125112_namespace_alchemy_models.rb +21 -21
  241. data/lib/alchemy/auth_engine.rb +5 -5
  242. data/lib/alchemy/capistrano.rb +64 -64
  243. data/lib/alchemy/config.rb +47 -44
  244. data/lib/alchemy/engine.rb +41 -41
  245. data/lib/alchemy/essence.rb +50 -51
  246. data/lib/alchemy/i18n.rb +48 -48
  247. data/lib/alchemy/modules.rb +30 -30
  248. data/lib/alchemy/mount_point.rb +6 -6
  249. data/lib/alchemy/page_layout.rb +94 -93
  250. data/lib/alchemy/resource.rb +82 -0
  251. data/lib/alchemy/resources_helper.rb +56 -0
  252. data/lib/alchemy/scoped_pagination_url_helper.rb +8 -8
  253. data/lib/alchemy/seeder.rb +88 -88
  254. data/lib/alchemy/tinymce.rb +49 -49
  255. data/lib/alchemy/upgrader.rb +103 -103
  256. data/lib/alchemy/version.rb +1 -1
  257. data/lib/alchemy_cms.rb +26 -27
  258. data/lib/extensions/action_view.rb +1 -1
  259. data/lib/extensions/array.rb +3 -3
  260. data/lib/extensions/hash.rb +3 -3
  261. data/lib/middleware/flash_session_cookie.rb +1 -1
  262. data/lib/rails/generators/alchemy/deploy_script/deploy_script_generator.rb +24 -24
  263. data/lib/rails/generators/alchemy/elements/elements_generator.rb +7 -7
  264. data/lib/rails/generators/alchemy/elements/templates/view.html.erb +17 -17
  265. data/lib/rails/generators/alchemy/page_layouts/page_layouts_generator.rb +6 -6
  266. data/lib/rails/generators/alchemy/plugin/templates/authorization_rules.rb +8 -8
  267. data/lib/rails/generators/alchemy/scaffold/files/pages.html.erb +7 -7
  268. data/lib/rails/generators/alchemy/scaffold/scaffold_generator.rb +36 -36
  269. data/lib/rails/templates/alchemy.rb +1 -1
  270. data/lib/tasks/ferret.rake +2 -2
  271. data/lib/tasks/fleximage.rake +32 -32
  272. data/lib/tasks/install.rake +12 -12
  273. data/lib/tasks/upgrade.rake +4 -4
  274. data/spec/controllers/admin/clipboard_controller_spec.rb +43 -43
  275. data/spec/controllers/admin/contents_controller_spec.rb +22 -22
  276. data/spec/controllers/admin/elements_controller_spec.rb +13 -13
  277. data/spec/controllers/admin/languages_controller_spec.rb +31 -0
  278. data/spec/controllers/admin/pages_controller_spec.rb +10 -41
  279. data/spec/controllers/admin/resources_controller_spec.rb +19 -0
  280. data/spec/controllers/admin/trash_controller_spec.rb +11 -11
  281. data/spec/controllers/base_controller_spec.rb +46 -46
  282. data/spec/controllers/pages_controller_spec.rb +102 -92
  283. data/spec/dummy/app/controllers/admin/events_controller.rb +3 -0
  284. data/spec/dummy/app/controllers/errors_controller.rb +5 -0
  285. data/spec/dummy/app/models/event.rb +3 -0
  286. data/spec/dummy/config.ru +1 -1
  287. data/spec/dummy/config/application.rb +3 -0
  288. data/spec/dummy/config/authorization_rules.rb +7 -0
  289. data/spec/dummy/config/environments/development.rb +8 -1
  290. data/spec/dummy/config/environments/production.rb +1 -1
  291. data/spec/dummy/config/environments/test.rb +5 -2
  292. data/spec/dummy/config/routes.rb +9 -1
  293. data/spec/dummy/db/schema.rb +47 -35
  294. data/spec/dummy/public/404.html +19 -7
  295. data/spec/dummy/public/404.html.bak +26 -0
  296. data/spec/dummy/public/422.html +19 -7
  297. data/spec/dummy/public/500.html +19 -7
  298. data/spec/dummy/script/rails +2 -2
  299. data/spec/factories.rb +76 -76
  300. data/spec/helpers/admin/base_helper_spec.rb +21 -21
  301. data/spec/helpers/admin/contents_helper_spec.rb +14 -14
  302. data/spec/helpers/admin/elements_helper_spec.rb +40 -40
  303. data/spec/helpers/admin/essences_helper_spec.rb +7 -7
  304. data/spec/helpers/elements_helper_spec.rb +154 -154
  305. data/spec/helpers/essences_helper_spec.rb +10 -10
  306. data/spec/helpers/pages_helper_spec.rb +369 -372
  307. data/spec/helpers/pictures_helper_spec.rb +14 -0
  308. data/spec/helpers/url_helpers_spec.rb +29 -34
  309. data/spec/integration/admin/pages_controller_spec.rb +50 -50
  310. data/spec/integration/admin/resources_integration_spec.rb +100 -0
  311. data/spec/integration/navigation_spec.rb +1 -1
  312. data/spec/integration/pages_controller_spec.rb +205 -207
  313. data/spec/integration/security_spec.rb +47 -47
  314. data/spec/javascripts/alchemy/link_overlay_spec.js.coffee +42 -0
  315. data/spec/javascripts/alchemy_integration_spec.coffee +12 -0
  316. data/spec/javascripts/fixtures/select.html +3 -0
  317. data/spec/javascripts/helpers/.gitkeep +0 -0
  318. data/spec/javascripts/helpers/jasmine-jquery-1.3.1.js +289 -0
  319. data/spec/javascripts/helpers/mock-ajax.js +207 -0
  320. data/spec/javascripts/helpers/test_responses/test_responses.js +1 -0
  321. data/spec/javascripts/spec.css +3 -0
  322. data/spec/javascripts/spec.js +2 -0
  323. data/spec/libraries/resource_spec.rb +122 -0
  324. data/spec/libraries/resources_helper_spec.rb +105 -0
  325. data/spec/models/content_spec.rb +67 -67
  326. data/spec/models/element_spec.rb +133 -133
  327. data/spec/models/essence_picture_spec.rb +5 -5
  328. data/spec/models/essence_richtext_spec.rb +4 -4
  329. data/spec/models/language_spec.rb +89 -89
  330. data/spec/models/page_spec.rb +436 -506
  331. data/spec/models/picture_spec.rb +34 -34
  332. data/spec/models/user_spec.rb +2 -2
  333. data/spec/page_layout_spec.rb +24 -20
  334. data/spec/routing_spec.rb +253 -253
  335. data/spec/spec_helper.rb +51 -50
  336. data/spec/support/alchemy/controller_hacks.rb +25 -25
  337. data/spec/support/alchemy/specs_helpers.rb +25 -25
  338. data/spec/support/integration_spec_helper.rb +24 -0
  339. data/vendor/assets/javascripts/jquery_plugins/jquery.html5uploader.js +271 -0
  340. data/vendor/assets/javascripts/jquery_plugins/jquery.in-place-edit.js +86 -85
  341. data/vendor/assets/javascripts/jquery_plugins/jquery.ui.nestedSortable.js +380 -377
  342. data/vendor/assets/javascripts/jquery_plugins/jquery.ui.tabspaging.js +285 -279
  343. data/vendor/assets/javascripts/swfupload/SWFObject License.txt +3 -3
  344. data/vendor/assets/javascripts/swfupload/swfupload.cookies.js +47 -47
  345. data/vendor/assets/javascripts/swfupload/swfupload.js +612 -612
  346. data/vendor/assets/javascripts/swfupload/swfupload.queue.js +93 -93
  347. data/vendor/assets/javascripts/swfupload/swfupload.speed.js +337 -337
  348. data/vendor/assets/javascripts/swfupload/swfupload.swfobject.js +706 -102
  349. data/vendor/assets/javascripts/tiny_mce/license.txt +6 -6
  350. data/vendor/assets/javascripts/tiny_mce/plugins/fullscreen/fullscreen.htm +97 -97
  351. data/vendor/assets/javascripts/tiny_mce/plugins/inlinepopups/template.htm +386 -376
  352. data/vendor/assets/javascripts/tiny_mce/plugins/paste/js/pastetext.js +30 -30
  353. data/vendor/assets/javascripts/tiny_mce/plugins/paste/js/pasteword.js +45 -45
  354. data/vendor/assets/javascripts/tiny_mce/plugins/paste/pastetext.htm +20 -17
  355. data/vendor/assets/javascripts/tiny_mce/plugins/paste/pasteword.htm +12 -12
  356. data/vendor/assets/javascripts/tiny_mce/plugins/table/cell.htm +183 -173
  357. data/vendor/assets/javascripts/tiny_mce/plugins/table/css/cell.css +4 -4
  358. data/vendor/assets/javascripts/tiny_mce/plugins/table/css/row.css +7 -7
  359. data/vendor/assets/javascripts/tiny_mce/plugins/table/css/table.css +3 -3
  360. data/vendor/assets/javascripts/tiny_mce/plugins/table/js/cell.js +282 -280
  361. data/vendor/assets/javascripts/tiny_mce/plugins/table/js/merge_cells.js +15 -15
  362. data/vendor/assets/javascripts/tiny_mce/plugins/table/js/row.js +204 -204
  363. data/vendor/assets/javascripts/tiny_mce/plugins/table/js/table.js +435 -435
  364. data/vendor/assets/javascripts/tiny_mce/plugins/table/merge_cells.htm +24 -22
  365. data/vendor/assets/javascripts/tiny_mce/plugins/table/row.htm +144 -136
  366. data/vendor/assets/javascripts/tiny_mce/plugins/table/table.htm +184 -168
  367. data/vendor/assets/javascripts/tiny_mce/themes/advanced/about.htm +62 -46
  368. data/vendor/assets/javascripts/tiny_mce/themes/advanced/anchor.htm +17 -16
  369. data/vendor/assets/javascripts/tiny_mce/themes/advanced/charmap.htm +56 -47
  370. data/vendor/assets/javascripts/tiny_mce/themes/advanced/color_picker.htm +67 -54
  371. data/vendor/assets/javascripts/tiny_mce/themes/advanced/editor_template.js +852 -1
  372. data/vendor/assets/javascripts/tiny_mce/themes/advanced/image.htm +79 -69
  373. data/vendor/assets/javascripts/tiny_mce/themes/advanced/js/about.js +48 -48
  374. data/vendor/assets/javascripts/tiny_mce/themes/advanced/js/anchor.js +28 -28
  375. data/vendor/assets/javascripts/tiny_mce/themes/advanced/js/charmap.js +317 -317
  376. data/vendor/assets/javascripts/tiny_mce/themes/advanced/js/color_picker.js +248 -246
  377. data/vendor/assets/javascripts/tiny_mce/themes/advanced/js/image.js +246 -246
  378. data/vendor/assets/javascripts/tiny_mce/themes/advanced/js/link.js +146 -146
  379. data/vendor/assets/javascripts/tiny_mce/themes/advanced/js/source_editor.js +31 -31
  380. data/vendor/assets/javascripts/tiny_mce/themes/advanced/langs/de.js +1 -1
  381. data/vendor/assets/javascripts/tiny_mce/themes/advanced/langs/de_dlg.js +1 -1
  382. data/vendor/assets/javascripts/tiny_mce/themes/advanced/langs/en.js +1 -1
  383. data/vendor/assets/javascripts/tiny_mce/themes/advanced/langs/en_dlg.js +1 -1
  384. data/vendor/assets/javascripts/tiny_mce/themes/advanced/link.htm +53 -46
  385. data/vendor/assets/javascripts/tiny_mce/themes/advanced/shortcuts.htm +57 -45
  386. data/vendor/assets/javascripts/tiny_mce/themes/advanced/skins/default/content.css +182 -47
  387. data/vendor/assets/javascripts/tiny_mce/themes/advanced/skins/default/dialog.css +399 -92
  388. data/vendor/assets/javascripts/tiny_mce/themes/advanced/skins/default/ui.css +891 -187
  389. data/vendor/assets/javascripts/tiny_mce/themes/advanced/skins/highcontrast/content.css +102 -24
  390. data/vendor/assets/javascripts/tiny_mce/themes/advanced/skins/highcontrast/dialog.css +377 -78
  391. data/vendor/assets/javascripts/tiny_mce/themes/advanced/skins/highcontrast/ui.css +452 -77
  392. data/vendor/assets/javascripts/tiny_mce/themes/advanced/skins/o2k7/content.css +167 -45
  393. data/vendor/assets/javascripts/tiny_mce/themes/advanced/skins/o2k7/dialog.css +399 -92
  394. data/vendor/assets/javascripts/tiny_mce/themes/advanced/skins/o2k7/ui.css +890 -190
  395. data/vendor/assets/javascripts/tiny_mce/themes/advanced/skins/o2k7/ui_black.css +33 -7
  396. data/vendor/assets/javascripts/tiny_mce/themes/advanced/skins/o2k7/ui_silver.css +15 -4
  397. data/vendor/assets/javascripts/tiny_mce/themes/advanced/source_editor.htm +18 -15
  398. data/vendor/assets/javascripts/tiny_mce/utils/editable_selects.js +46 -46
  399. data/vendor/assets/javascripts/tiny_mce/utils/form_utils.js +124 -124
  400. data/vendor/assets/javascripts/tiny_mce/utils/mctabs.js +112 -112
  401. data/vendor/assets/javascripts/tiny_mce/utils/validate.js +213 -213
  402. metadata +102 -115
  403. data/app/assets/javascripts/alchemy/alchemy.link_overlay.js +0 -216
  404. data/lib/tasks/routes.rake +0 -29
  405. data/spec/integration/admin/resources_spec.rb +0 -19
@@ -1,111 +1,715 @@
1
1
  /*
2
- SWFUpload.SWFObject Plugin
3
-
4
- Summary:
5
- This plugin uses SWFObject to embed SWFUpload dynamically in the page. SWFObject provides accurate Flash Player detection and DOM Ready loading.
6
- This plugin replaces the Graceful Degradation plugin.
7
-
8
- Features:
9
- * swfupload_load_failed_hander event
10
- * swfupload_pre_load_handler event
11
- * minimum_flash_version setting (default: "9.0.28")
12
- * SWFUpload.onload event for early loading
13
-
14
- Usage:
15
- Provide handlers and settings as needed. When using the SWFUpload.SWFObject plugin you should initialize SWFUploading
16
- in SWFUpload.onload rather than in window.onload. When initialized this way SWFUpload can load earlier preventing the UI flicker
17
- that was seen using the Graceful Degradation plugin.
18
-
19
- <script type="text/javascript">
20
- var swfu;
21
- SWFUpload.onload = function () {
22
- swfu = new SWFUpload({
23
- minimum_flash_version: "9.0.28",
24
- swfupload_pre_load_handler: swfuploadPreLoad,
25
- swfupload_load_failed_handler: swfuploadLoadFailed
26
- });
27
- };
28
- </script>
29
-
30
- Notes:
31
- You must provide set minimum_flash_version setting to "8" if you are using SWFUpload for Flash Player 8.
32
- The swfuploadLoadFailed event is only fired if the minimum version of Flash Player is not met. Other issues such as missing SWF files, browser bugs
33
- or corrupt Flash Player installations will not trigger this event.
34
- The swfuploadPreLoad event is fired as soon as the minimum version of Flash Player is found. It does not wait for SWFUpload to load and can
35
- be used to prepare the SWFUploadUI and hide alternate content.
36
- swfobject's onDomReady event is cross-browser safe but will default to the window.onload event when DOMReady is not supported by the browser.
37
- Early DOM Loading is supported in major modern browsers but cannot be guaranteed for every browser ever made.
38
- */
2
+ SWFUpload.SWFObject Plugin
3
+
4
+ Summary:
5
+ This plugin uses SWFObject to embed SWFUpload dynamically in the page. SWFObject provides accurate Flash Player detection and DOM Ready loading.
6
+ This plugin replaces the Graceful Degradation plugin.
7
+
8
+ Features:
9
+ * swfupload_load_failed_hander event
10
+ * swfupload_pre_load_handler event
11
+ * minimum_flash_version setting (default: "9.0.28")
12
+ * SWFUpload.onload event for early loading
13
+
14
+ Usage:
15
+ Provide handlers and settings as needed. When using the SWFUpload.SWFObject plugin you should initialize SWFUploading
16
+ in SWFUpload.onload rather than in window.onload. When initialized this way SWFUpload can load earlier preventing the UI flicker
17
+ that was seen using the Graceful Degradation plugin.
18
+
19
+ <script type="text/javascript">
20
+ var swfu;
21
+ SWFUpload.onload = function () {
22
+ swfu = new SWFUpload({
23
+ minimum_flash_version: "9.0.28",
24
+ swfupload_pre_load_handler: swfuploadPreLoad,
25
+ swfupload_load_failed_handler: swfuploadLoadFailed
26
+ });
27
+ };
28
+ </script>
29
+
30
+ Notes:
31
+ You must provide set minimum_flash_version setting to "8" if you are using SWFUpload for Flash Player 8.
32
+ The swfuploadLoadFailed event is only fired if the minimum version of Flash Player is not met. Other issues such as missing SWF files, browser bugs
33
+ or corrupt Flash Player installations will not trigger this event.
34
+ The swfuploadPreLoad event is fired as soon as the minimum version of Flash Player is found. It does not wait for SWFUpload to load and can
35
+ be used to prepare the SWFUploadUI and hide alternate content.
36
+ swfobject's onDomReady event is cross-browser safe but will default to the window.onload event when DOMReady is not supported by the browser.
37
+ Early DOM Loading is supported in major modern browsers but cannot be guaranteed for every browser ever made.
38
+ */
39
39
 
40
40
 
41
41
  /* SWFObject v2.1 <http://code.google.com/p/swfobject/>
42
- Copyright (c) 2007-2008 Geoff Stearns, Michael Williams, and Bobby van der Sluis
43
- This software is released under the MIT License <http://www.opensource.org/licenses/mit-license.php>
44
- */
45
- var swfobject=function(){var b="undefined",Q="object",n="Shockwave Flash",p="ShockwaveFlash.ShockwaveFlash",P="application/x-shockwave-flash",m="SWFObjectExprInst",j=window,K=document,T=navigator,o=[],N=[],i=[],d=[],J,Z=null,M=null,l=null,e=false,A=false;var h=function(){var v=typeof K.getElementById!=b&&typeof K.getElementsByTagName!=b&&typeof K.createElement!=b,AC=[0,0,0],x=null;if(typeof T.plugins!=b&&typeof T.plugins[n]==Q){x=T.plugins[n].description;if(x&&!(typeof T.mimeTypes!=b&&T.mimeTypes[P]&&!T.mimeTypes[P].enabledPlugin)){x=x.replace(/^.*\s+(\S+\s+\S+$)/,"$1");AC[0]=parseInt(x.replace(/^(.*)\..*$/,"$1"),10);AC[1]=parseInt(x.replace(/^.*\.(.*)\s.*$/,"$1"),10);AC[2]=/r/.test(x)?parseInt(x.replace(/^.*r(.*)$/,"$1"),10):0}}else{if(typeof j.ActiveXObject!=b){var y=null,AB=false;try{y=new ActiveXObject(p+".7")}catch(t){try{y=new ActiveXObject(p+".6");AC=[6,0,21];y.AllowScriptAccess="always"}catch(t){if(AC[0]==6){AB=true}}if(!AB){try{y=new ActiveXObject(p)}catch(t){}}}if(!AB&&y){try{x=y.GetVariable("$version");if(x){x=x.split(" ")[1].split(",");AC=[parseInt(x[0],10),parseInt(x[1],10),parseInt(x[2],10)]}}catch(t){}}}}var AD=T.userAgent.toLowerCase(),r=T.platform.toLowerCase(),AA=/webkit/.test(AD)?parseFloat(AD.replace(/^.*webkit\/(\d+(\.\d+)?).*$/,"$1")):false,q=false,z=r?/win/.test(r):/win/.test(AD),w=r?/mac/.test(r):/mac/.test(AD);/*@cc_on q=true;@if(@_win32)z=true;@elif(@_mac)w=true;@end@*/return{w3cdom:v,pv:AC,webkit:AA,ie:q,win:z,mac:w}}();var L=function(){if(!h.w3cdom){return }f(H);if(h.ie&&h.win){try{K.write("<script id=__ie_ondomload defer=true src=//:><\/script>");J=C("__ie_ondomload");if(J){I(J,"onreadystatechange",S)}}catch(q){}}if(h.webkit&&typeof K.readyState!=b){Z=setInterval(function(){if(/loaded|complete/.test(K.readyState)){E()}},10)}if(typeof K.addEventListener!=b){K.addEventListener("DOMContentLoaded",E,null)}R(E)}();function S(){if(J.readyState=="complete"){J.parentNode.removeChild(J);E()}}function E(){if(e){return }if(h.ie&&h.win){var v=a("span");try{var u=K.getElementsByTagName("body")[0].appendChild(v);u.parentNode.removeChild(u)}catch(w){return }}e=true;if(Z){clearInterval(Z);Z=null}var q=o.length;for(var r=0;r<q;r++){o[r]()}}function f(q){if(e){q()}else{o[o.length]=q}}function R(r){if(typeof j.addEventListener!=b){j.addEventListener("load",r,false)}else{if(typeof K.addEventListener!=b){K.addEventListener("load",r,false)}else{if(typeof j.attachEvent!=b){I(j,"onload",r)}else{if(typeof j.onload=="function"){var q=j.onload;j.onload=function(){q();r()}}else{j.onload=r}}}}}function H(){var t=N.length;for(var q=0;q<t;q++){var u=N[q].id;if(h.pv[0]>0){var r=C(u);if(r){N[q].width=r.getAttribute("width")?r.getAttribute("width"):"0";N[q].height=r.getAttribute("height")?r.getAttribute("height"):"0";if(c(N[q].swfVersion)){if(h.webkit&&h.webkit<312){Y(r)}W(u,true)}else{if(N[q].expressInstall&&!A&&c("6.0.65")&&(h.win||h.mac)){k(N[q])}else{O(r)}}}}else{W(u,true)}}}function Y(t){var q=t.getElementsByTagName(Q)[0];if(q){var w=a("embed"),y=q.attributes;if(y){var v=y.length;for(var u=0;u<v;u++){if(y[u].nodeName=="DATA"){w.setAttribute("src",y[u].nodeValue)}else{w.setAttribute(y[u].nodeName,y[u].nodeValue)}}}var x=q.childNodes;if(x){var z=x.length;for(var r=0;r<z;r++){if(x[r].nodeType==1&&x[r].nodeName=="PARAM"){w.setAttribute(x[r].getAttribute("name"),x[r].getAttribute("value"))}}}t.parentNode.replaceChild(w,t)}}function k(w){A=true;var u=C(w.id);if(u){if(w.altContentId){var y=C(w.altContentId);if(y){M=y;l=w.altContentId}}else{M=G(u)}if(!(/%$/.test(w.width))&&parseInt(w.width,10)<310){w.width="310"}if(!(/%$/.test(w.height))&&parseInt(w.height,10)<137){w.height="137"}K.title=K.title.slice(0,47)+" - Flash Player Installation";var z=h.ie&&h.win?"ActiveX":"PlugIn",q=K.title,r="MMredirectURL="+j.location+"&MMplayerType="+z+"&MMdoctitle="+q,x=w.id;if(h.ie&&h.win&&u.readyState!=4){var t=a("div");x+="SWFObjectNew";t.setAttribute("id",x);u.parentNode.insertBefore(t,u);u.style.display="none";var v=function(){u.parentNode.removeChild(u)};I(j,"onload",v)}U({data:w.expressInstall,id:m,width:w.width,height:w.height},{flashvars:r},x)}}function O(t){if(h.ie&&h.win&&t.readyState!=4){var r=a("div");t.parentNode.insertBefore(r,t);r.parentNode.replaceChild(G(t),r);t.style.display="none";var q=function(){t.parentNode.removeChild(t)};I(j,"onload",q)}else{t.parentNode.replaceChild(G(t),t)}}function G(v){var u=a("div");if(h.win&&h.ie){u.innerHTML=v.innerHTML}else{var r=v.getElementsByTagName(Q)[0];if(r){var w=r.childNodes;if(w){var q=w.length;for(var t=0;t<q;t++){if(!(w[t].nodeType==1&&w[t].nodeName=="PARAM")&&!(w[t].nodeType==8)){u.appendChild(w[t].cloneNode(true))}}}}}return u}function U(AG,AE,t){var q,v=C(t);if(v){if(typeof AG.id==b){AG.id=t}if(h.ie&&h.win){var AF="";for(var AB in AG){if(AG[AB]!=Object.prototype[AB]){if(AB.toLowerCase()=="data"){AE.movie=AG[AB]}else{if(AB.toLowerCase()=="styleclass"){AF+=' class="'+AG[AB]+'"'}else{if(AB.toLowerCase()!="classid"){AF+=" "+AB+'="'+AG[AB]+'"'}}}}}var AD="";for(var AA in AE){if(AE[AA]!=Object.prototype[AA]){AD+='<param name="'+AA+'" value="'+AE[AA]+'" />'}}v.outerHTML='<object classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000"'+AF+">"+AD+"</object>";i[i.length]=AG.id;q=C(AG.id)}else{if(h.webkit&&h.webkit<312){var AC=a("embed");AC.setAttribute("type",P);for(var z in AG){if(AG[z]!=Object.prototype[z]){if(z.toLowerCase()=="data"){AC.setAttribute("src",AG[z])}else{if(z.toLowerCase()=="styleclass"){AC.setAttribute("class",AG[z])}else{if(z.toLowerCase()!="classid"){AC.setAttribute(z,AG[z])}}}}}for(var y in AE){if(AE[y]!=Object.prototype[y]){if(y.toLowerCase()!="movie"){AC.setAttribute(y,AE[y])}}}v.parentNode.replaceChild(AC,v);q=AC}else{var u=a(Q);u.setAttribute("type",P);for(var x in AG){if(AG[x]!=Object.prototype[x]){if(x.toLowerCase()=="styleclass"){u.setAttribute("class",AG[x])}else{if(x.toLowerCase()!="classid"){u.setAttribute(x,AG[x])}}}}for(var w in AE){if(AE[w]!=Object.prototype[w]&&w.toLowerCase()!="movie"){F(u,w,AE[w])}}v.parentNode.replaceChild(u,v);q=u}}}return q}function F(t,q,r){var u=a("param");u.setAttribute("name",q);u.setAttribute("value",r);t.appendChild(u)}function X(r){var q=C(r);if(q&&(q.nodeName=="OBJECT"||q.nodeName=="EMBED")){if(h.ie&&h.win){if(q.readyState==4){B(r)}else{j.attachEvent("onload",function(){B(r)})}}else{q.parentNode.removeChild(q)}}}function B(t){var r=C(t);if(r){for(var q in r){if(typeof r[q]=="function"){r[q]=null}}r.parentNode.removeChild(r)}}function C(t){var q=null;try{q=K.getElementById(t)}catch(r){}return q}function a(q){return K.createElement(q)}function I(t,q,r){t.attachEvent(q,r);d[d.length]=[t,q,r]}function c(t){var r=h.pv,q=t.split(".");q[0]=parseInt(q[0],10);q[1]=parseInt(q[1],10)||0;q[2]=parseInt(q[2],10)||0;return(r[0]>q[0]||(r[0]==q[0]&&r[1]>q[1])||(r[0]==q[0]&&r[1]==q[1]&&r[2]>=q[2]))?true:false}function V(v,r){if(h.ie&&h.mac){return }var u=K.getElementsByTagName("head")[0],t=a("style");t.setAttribute("type","text/css");t.setAttribute("media","screen");if(!(h.ie&&h.win)&&typeof K.createTextNode!=b){t.appendChild(K.createTextNode(v+" {"+r+"}"))}u.appendChild(t);if(h.ie&&h.win&&typeof K.styleSheets!=b&&K.styleSheets.length>0){var q=K.styleSheets[K.styleSheets.length-1];if(typeof q.addRule==Q){q.addRule(v,r)}}}function W(t,q){var r=q?"visible":"hidden";if(e&&C(t)){C(t).style.visibility=r}else{V("#"+t,"visibility:"+r)}}function g(s){var r=/[\\\"<>\.;]/;var q=r.exec(s)!=null;return q?encodeURIComponent(s):s}var D=function(){if(h.ie&&h.win){window.attachEvent("onunload",function(){var w=d.length;for(var v=0;v<w;v++){d[v][0].detachEvent(d[v][1],d[v][2])}var t=i.length;for(var u=0;u<t;u++){X(i[u])}for(var r in h){h[r]=null}h=null;for(var q in swfobject){swfobject[q]=null}swfobject=null})}}();return{registerObject:function(u,q,t){if(!h.w3cdom||!u||!q){return }var r={};r.id=u;r.swfVersion=q;r.expressInstall=t?t:false;N[N.length]=r;W(u,false)},getObjectById:function(v){var q=null;if(h.w3cdom){var t=C(v);if(t){var u=t.getElementsByTagName(Q)[0];if(!u||(u&&typeof t.SetVariable!=b)){q=t}else{if(typeof u.SetVariable!=b){q=u}}}}return q},embedSWF:function(x,AE,AB,AD,q,w,r,z,AC){if(!h.w3cdom||!x||!AE||!AB||!AD||!q){return }AB+="";AD+="";if(c(q)){W(AE,false);var AA={};if(AC&&typeof AC===Q){for(var v in AC){if(AC[v]!=Object.prototype[v]){AA[v]=AC[v]}}}AA.data=x;AA.width=AB;AA.height=AD;var y={};if(z&&typeof z===Q){for(var u in z){if(z[u]!=Object.prototype[u]){y[u]=z[u]}}}if(r&&typeof r===Q){for(var t in r){if(r[t]!=Object.prototype[t]){if(typeof y.flashvars!=b){y.flashvars+="&"+t+"="+r[t]}else{y.flashvars=t+"="+r[t]}}}}f(function(){U(AA,y,AE);if(AA.id==AE){W(AE,true)}})}else{if(w&&!A&&c("6.0.65")&&(h.win||h.mac)){A=true;W(AE,false);f(function(){var AF={};AF.id=AF.altContentId=AE;AF.width=AB;AF.height=AD;AF.expressInstall=w;k(AF)})}}},getFlashPlayerVersion:function(){return{major:h.pv[0],minor:h.pv[1],release:h.pv[2]}},hasFlashPlayerVersion:c,createSWF:function(t,r,q){if(h.w3cdom){return U(t,r,q)}else{return undefined}},removeSWF:function(q){if(h.w3cdom){X(q)}},createCSS:function(r,q){if(h.w3cdom){V(r,q)}},addDomLoadEvent:f,addLoadEvent:R,getQueryParamValue:function(v){var u=K.location.search||K.location.hash;if(v==null){return g(u)}if(u){var t=u.substring(1).split("&");for(var r=0;r<t.length;r++){if(t[r].substring(0,t[r].indexOf("="))==v){return g(t[r].substring((t[r].indexOf("=")+1)))}}}return""},expressInstallCallback:function(){if(A&&M){var q=C(m);if(q){q.parentNode.replaceChild(M,q);if(l){W(l,true);if(h.ie&&h.win){M.style.display="block"}}M=null;l=null;A=false}}}}}();
42
+ Copyright (c) 2007-2008 Geoff Stearns, Michael Williams, and Bobby van der Sluis
43
+ This software is released under the MIT License <http://www.opensource.org/licenses/mit-license.php>
44
+ */
45
+ var swfobject = function () {
46
+ var b = "undefined", Q = "object", n = "Shockwave Flash", p = "ShockwaveFlash.ShockwaveFlash", P = "application/x-shockwave-flash", m = "SWFObjectExprInst", j = window, K = document, T = navigator, o = [], N = [], i = [], d = [], J, Z = null, M = null, l = null, e = false, A = false;
47
+ var h = function () {
48
+ var v = typeof K.getElementById != b && typeof K.getElementsByTagName != b && typeof K.createElement != b, AC = [0, 0, 0], x = null;
49
+ if (typeof T.plugins != b && typeof T.plugins[n] == Q) {
50
+ x = T.plugins[n].description;
51
+ if (x && !(typeof T.mimeTypes != b && T.mimeTypes[P] && !T.mimeTypes[P].enabledPlugin)) {
52
+ x = x.replace(/^.*\s+(\S+\s+\S+$)/, "$1");
53
+ AC[0] = parseInt(x.replace(/^(.*)\..*$/, "$1"), 10);
54
+ AC[1] = parseInt(x.replace(/^.*\.(.*)\s.*$/, "$1"), 10);
55
+ AC[2] = /r/.test(x) ? parseInt(x.replace(/^.*r(.*)$/, "$1"), 10) : 0
56
+ }
57
+ } else {
58
+ if (typeof j.ActiveXObject != b) {
59
+ var y = null, AB = false;
60
+ try {
61
+ y = new ActiveXObject(p + ".7")
62
+ } catch (t) {
63
+ try {
64
+ y = new ActiveXObject(p + ".6");
65
+ AC = [6, 0, 21];
66
+ y.AllowScriptAccess = "always"
67
+ } catch (t) {
68
+ if (AC[0] == 6) {
69
+ AB = true
70
+ }
71
+ }
72
+ if (!AB) {
73
+ try {
74
+ y = new ActiveXObject(p)
75
+ } catch (t) {
76
+ }
77
+ }
78
+ }
79
+ if (!AB && y) {
80
+ try {
81
+ x = y.GetVariable("$version");
82
+ if (x) {
83
+ x = x.split(" ")[1].split(",");
84
+ AC = [parseInt(x[0], 10), parseInt(x[1], 10), parseInt(x[2], 10)]
85
+ }
86
+ } catch (t) {
87
+ }
88
+ }
89
+ }
90
+ }
91
+ var AD = T.userAgent.toLowerCase(), r = T.platform.toLowerCase(), AA = /webkit/.test(AD) ? parseFloat(AD.replace(/^.*webkit\/(\d+(\.\d+)?).*$/, "$1")) : false, q = false, z = r ? /win/.test(r) : /win/.test(AD), w = r ? /mac/.test(r) : /mac/.test(AD);
92
+ /*@cc_on q=true;@if(@_win32)z=true;@elif(@_mac)w=true;@end@*/
93
+ return{w3cdom:v, pv:AC, webkit:AA, ie:q, win:z, mac:w}
94
+ }();
95
+ var L = function () {
96
+ if (!h.w3cdom) {
97
+ return
98
+ }
99
+ f(H);
100
+ if (h.ie && h.win) {
101
+ try {
102
+ K.write("<script id=__ie_ondomload defer=true src=//:><\/script>");
103
+ J = C("__ie_ondomload");
104
+ if (J) {
105
+ I(J, "onreadystatechange", S)
106
+ }
107
+ } catch (q) {
108
+ }
109
+ }
110
+ if (h.webkit && typeof K.readyState != b) {
111
+ Z = setInterval(function () {
112
+ if (/loaded|complete/.test(K.readyState)) {
113
+ E()
114
+ }
115
+ }, 10)
116
+ }
117
+ if (typeof K.addEventListener != b) {
118
+ K.addEventListener("DOMContentLoaded", E, null)
119
+ }
120
+ R(E)
121
+ }();
122
+
123
+ function S() {
124
+ if (J.readyState == "complete") {
125
+ J.parentNode.removeChild(J);
126
+ E()
127
+ }
128
+ }
129
+
130
+ function E() {
131
+ if (e) {
132
+ return
133
+ }
134
+ if (h.ie && h.win) {
135
+ var v = a("span");
136
+ try {
137
+ var u = K.getElementsByTagName("body")[0].appendChild(v);
138
+ u.parentNode.removeChild(u)
139
+ } catch (w) {
140
+ return
141
+ }
142
+ }
143
+ e = true;
144
+ if (Z) {
145
+ clearInterval(Z);
146
+ Z = null
147
+ }
148
+ var q = o.length;
149
+ for (var r = 0; r < q; r++) {
150
+ o[r]()
151
+ }
152
+ }
153
+
154
+ function f(q) {
155
+ if (e) {
156
+ q()
157
+ } else {
158
+ o[o.length] = q
159
+ }
160
+ }
161
+
162
+ function R(r) {
163
+ if (typeof j.addEventListener != b) {
164
+ j.addEventListener("load", r, false)
165
+ } else {
166
+ if (typeof K.addEventListener != b) {
167
+ K.addEventListener("load", r, false)
168
+ } else {
169
+ if (typeof j.attachEvent != b) {
170
+ I(j, "onload", r)
171
+ } else {
172
+ if (typeof j.onload == "function") {
173
+ var q = j.onload;
174
+ j.onload = function () {
175
+ q();
176
+ r()
177
+ }
178
+ } else {
179
+ j.onload = r
180
+ }
181
+ }
182
+ }
183
+ }
184
+ }
185
+
186
+ function H() {
187
+ var t = N.length;
188
+ for (var q = 0; q < t; q++) {
189
+ var u = N[q].id;
190
+ if (h.pv[0] > 0) {
191
+ var r = C(u);
192
+ if (r) {
193
+ N[q].width = r.getAttribute("width") ? r.getAttribute("width") : "0";
194
+ N[q].height = r.getAttribute("height") ? r.getAttribute("height") : "0";
195
+ if (c(N[q].swfVersion)) {
196
+ if (h.webkit && h.webkit < 312) {
197
+ Y(r)
198
+ }
199
+ W(u, true)
200
+ } else {
201
+ if (N[q].expressInstall && !A && c("6.0.65") && (h.win || h.mac)) {
202
+ k(N[q])
203
+ } else {
204
+ O(r)
205
+ }
206
+ }
207
+ }
208
+ } else {
209
+ W(u, true)
210
+ }
211
+ }
212
+ }
213
+
214
+ function Y(t) {
215
+ var q = t.getElementsByTagName(Q)[0];
216
+ if (q) {
217
+ var w = a("embed"), y = q.attributes;
218
+ if (y) {
219
+ var v = y.length;
220
+ for (var u = 0; u < v; u++) {
221
+ if (y[u].nodeName == "DATA") {
222
+ w.setAttribute("src", y[u].nodeValue)
223
+ } else {
224
+ w.setAttribute(y[u].nodeName, y[u].nodeValue)
225
+ }
226
+ }
227
+ }
228
+ var x = q.childNodes;
229
+ if (x) {
230
+ var z = x.length;
231
+ for (var r = 0; r < z; r++) {
232
+ if (x[r].nodeType == 1 && x[r].nodeName == "PARAM") {
233
+ w.setAttribute(x[r].getAttribute("name"), x[r].getAttribute("value"))
234
+ }
235
+ }
236
+ }
237
+ t.parentNode.replaceChild(w, t)
238
+ }
239
+ }
240
+
241
+ function k(w) {
242
+ A = true;
243
+ var u = C(w.id);
244
+ if (u) {
245
+ if (w.altContentId) {
246
+ var y = C(w.altContentId);
247
+ if (y) {
248
+ M = y;
249
+ l = w.altContentId
250
+ }
251
+ } else {
252
+ M = G(u)
253
+ }
254
+ if (!(/%$/.test(w.width)) && parseInt(w.width, 10) < 310) {
255
+ w.width = "310"
256
+ }
257
+ if (!(/%$/.test(w.height)) && parseInt(w.height, 10) < 137) {
258
+ w.height = "137"
259
+ }
260
+ K.title = K.title.slice(0, 47) + " - Flash Player Installation";
261
+ var z = h.ie && h.win ? "ActiveX" : "PlugIn", q = K.title, r = "MMredirectURL=" + j.location + "&MMplayerType=" + z + "&MMdoctitle=" + q, x = w.id;
262
+ if (h.ie && h.win && u.readyState != 4) {
263
+ var t = a("div");
264
+ x += "SWFObjectNew";
265
+ t.setAttribute("id", x);
266
+ u.parentNode.insertBefore(t, u);
267
+ u.style.display = "none";
268
+ var v = function () {
269
+ u.parentNode.removeChild(u)
270
+ };
271
+ I(j, "onload", v)
272
+ }
273
+ U({data:w.expressInstall, id:m, width:w.width, height:w.height}, {flashvars:r}, x)
274
+ }
275
+ }
276
+
277
+ function O(t) {
278
+ if (h.ie && h.win && t.readyState != 4) {
279
+ var r = a("div");
280
+ t.parentNode.insertBefore(r, t);
281
+ r.parentNode.replaceChild(G(t), r);
282
+ t.style.display = "none";
283
+ var q = function () {
284
+ t.parentNode.removeChild(t)
285
+ };
286
+ I(j, "onload", q)
287
+ } else {
288
+ t.parentNode.replaceChild(G(t), t)
289
+ }
290
+ }
291
+
292
+ function G(v) {
293
+ var u = a("div");
294
+ if (h.win && h.ie) {
295
+ u.innerHTML = v.innerHTML
296
+ } else {
297
+ var r = v.getElementsByTagName(Q)[0];
298
+ if (r) {
299
+ var w = r.childNodes;
300
+ if (w) {
301
+ var q = w.length;
302
+ for (var t = 0; t < q; t++) {
303
+ if (!(w[t].nodeType == 1 && w[t].nodeName == "PARAM") && !(w[t].nodeType == 8)) {
304
+ u.appendChild(w[t].cloneNode(true))
305
+ }
306
+ }
307
+ }
308
+ }
309
+ }
310
+ return u
311
+ }
312
+
313
+ function U(AG, AE, t) {
314
+ var q, v = C(t);
315
+ if (v) {
316
+ if (typeof AG.id == b) {
317
+ AG.id = t
318
+ }
319
+ if (h.ie && h.win) {
320
+ var AF = "";
321
+ for (var AB in AG) {
322
+ if (AG[AB] != Object.prototype[AB]) {
323
+ if (AB.toLowerCase() == "data") {
324
+ AE.movie = AG[AB]
325
+ } else {
326
+ if (AB.toLowerCase() == "styleclass") {
327
+ AF += ' class="' + AG[AB] + '"'
328
+ } else {
329
+ if (AB.toLowerCase() != "classid") {
330
+ AF += " " + AB + '="' + AG[AB] + '"'
331
+ }
332
+ }
333
+ }
334
+ }
335
+ }
336
+ var AD = "";
337
+ for (var AA in AE) {
338
+ if (AE[AA] != Object.prototype[AA]) {
339
+ AD += '<param name="' + AA + '" value="' + AE[AA] + '" />'
340
+ }
341
+ }
342
+ v.outerHTML = '<object classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000"' + AF + ">" + AD + "</object>";
343
+ i[i.length] = AG.id;
344
+ q = C(AG.id)
345
+ } else {
346
+ if (h.webkit && h.webkit < 312) {
347
+ var AC = a("embed");
348
+ AC.setAttribute("type", P);
349
+ for (var z in AG) {
350
+ if (AG[z] != Object.prototype[z]) {
351
+ if (z.toLowerCase() == "data") {
352
+ AC.setAttribute("src", AG[z])
353
+ } else {
354
+ if (z.toLowerCase() == "styleclass") {
355
+ AC.setAttribute("class", AG[z])
356
+ } else {
357
+ if (z.toLowerCase() != "classid") {
358
+ AC.setAttribute(z, AG[z])
359
+ }
360
+ }
361
+ }
362
+ }
363
+ }
364
+ for (var y in AE) {
365
+ if (AE[y] != Object.prototype[y]) {
366
+ if (y.toLowerCase() != "movie") {
367
+ AC.setAttribute(y, AE[y])
368
+ }
369
+ }
370
+ }
371
+ v.parentNode.replaceChild(AC, v);
372
+ q = AC
373
+ } else {
374
+ var u = a(Q);
375
+ u.setAttribute("type", P);
376
+ for (var x in AG) {
377
+ if (AG[x] != Object.prototype[x]) {
378
+ if (x.toLowerCase() == "styleclass") {
379
+ u.setAttribute("class", AG[x])
380
+ } else {
381
+ if (x.toLowerCase() != "classid") {
382
+ u.setAttribute(x, AG[x])
383
+ }
384
+ }
385
+ }
386
+ }
387
+ for (var w in AE) {
388
+ if (AE[w] != Object.prototype[w] && w.toLowerCase() != "movie") {
389
+ F(u, w, AE[w])
390
+ }
391
+ }
392
+ v.parentNode.replaceChild(u, v);
393
+ q = u
394
+ }
395
+ }
396
+ }
397
+ return q
398
+ }
399
+
400
+ function F(t, q, r) {
401
+ var u = a("param");
402
+ u.setAttribute("name", q);
403
+ u.setAttribute("value", r);
404
+ t.appendChild(u)
405
+ }
406
+
407
+ function X(r) {
408
+ var q = C(r);
409
+ if (q && (q.nodeName == "OBJECT" || q.nodeName == "EMBED")) {
410
+ if (h.ie && h.win) {
411
+ if (q.readyState == 4) {
412
+ B(r)
413
+ } else {
414
+ j.attachEvent("onload", function () {
415
+ B(r)
416
+ })
417
+ }
418
+ } else {
419
+ q.parentNode.removeChild(q)
420
+ }
421
+ }
422
+ }
423
+
424
+ function B(t) {
425
+ var r = C(t);
426
+ if (r) {
427
+ for (var q in r) {
428
+ if (typeof r[q] == "function") {
429
+ r[q] = null
430
+ }
431
+ }
432
+ r.parentNode.removeChild(r)
433
+ }
434
+ }
435
+
436
+ function C(t) {
437
+ var q = null;
438
+ try {
439
+ q = K.getElementById(t)
440
+ } catch (r) {
441
+ }
442
+ return q
443
+ }
444
+
445
+ function a(q) {
446
+ return K.createElement(q)
447
+ }
448
+
449
+ function I(t, q, r) {
450
+ t.attachEvent(q, r);
451
+ d[d.length] = [t, q, r]
452
+ }
453
+
454
+ function c(t) {
455
+ var r = h.pv, q = t.split(".");
456
+ q[0] = parseInt(q[0], 10);
457
+ q[1] = parseInt(q[1], 10) || 0;
458
+ q[2] = parseInt(q[2], 10) || 0;
459
+ return(r[0] > q[0] || (r[0] == q[0] && r[1] > q[1]) || (r[0] == q[0] && r[1] == q[1] && r[2] >= q[2])) ? true : false
460
+ }
461
+
462
+ function V(v, r) {
463
+ if (h.ie && h.mac) {
464
+ return
465
+ }
466
+ var u = K.getElementsByTagName("head")[0], t = a("style");
467
+ t.setAttribute("type", "text/css");
468
+ t.setAttribute("media", "screen");
469
+ if (!(h.ie && h.win) && typeof K.createTextNode != b) {
470
+ t.appendChild(K.createTextNode(v + " {" + r + "}"))
471
+ }
472
+ u.appendChild(t);
473
+ if (h.ie && h.win && typeof K.styleSheets != b && K.styleSheets.length > 0) {
474
+ var q = K.styleSheets[K.styleSheets.length - 1];
475
+ if (typeof q.addRule == Q) {
476
+ q.addRule(v, r)
477
+ }
478
+ }
479
+ }
480
+
481
+ function W(t, q) {
482
+ var r = q ? "visible" : "hidden";
483
+ if (e && C(t)) {
484
+ C(t).style.visibility = r
485
+ } else {
486
+ V("#" + t, "visibility:" + r)
487
+ }
488
+ }
489
+
490
+ function g(s) {
491
+ var r = /[\\\"<>\.;]/;
492
+ var q = r.exec(s) != null;
493
+ return q ? encodeURIComponent(s) : s
494
+ }
495
+
496
+ var D = function () {
497
+ if (h.ie && h.win) {
498
+ window.attachEvent("onunload", function () {
499
+ var w = d.length;
500
+ for (var v = 0; v < w; v++) {
501
+ d[v][0].detachEvent(d[v][1], d[v][2])
502
+ }
503
+ var t = i.length;
504
+ for (var u = 0; u < t; u++) {
505
+ X(i[u])
506
+ }
507
+ for (var r in h) {
508
+ h[r] = null
509
+ }
510
+ h = null;
511
+ for (var q in swfobject) {
512
+ swfobject[q] = null
513
+ }
514
+ swfobject = null
515
+ })
516
+ }
517
+ }();
518
+ return{registerObject:function (u, q, t) {
519
+ if (!h.w3cdom || !u || !q) {
520
+ return
521
+ }
522
+ var r = {};
523
+ r.id = u;
524
+ r.swfVersion = q;
525
+ r.expressInstall = t ? t : false;
526
+ N[N.length] = r;
527
+ W(u, false)
528
+ }, getObjectById:function (v) {
529
+ var q = null;
530
+ if (h.w3cdom) {
531
+ var t = C(v);
532
+ if (t) {
533
+ var u = t.getElementsByTagName(Q)[0];
534
+ if (!u || (u && typeof t.SetVariable != b)) {
535
+ q = t
536
+ } else {
537
+ if (typeof u.SetVariable != b) {
538
+ q = u
539
+ }
540
+ }
541
+ }
542
+ }
543
+ return q
544
+ }, embedSWF:function (x, AE, AB, AD, q, w, r, z, AC) {
545
+ if (!h.w3cdom || !x || !AE || !AB || !AD || !q) {
546
+ return
547
+ }
548
+ AB += "";
549
+ AD += "";
550
+ if (c(q)) {
551
+ W(AE, false);
552
+ var AA = {};
553
+ if (AC && typeof AC === Q) {
554
+ for (var v in AC) {
555
+ if (AC[v] != Object.prototype[v]) {
556
+ AA[v] = AC[v]
557
+ }
558
+ }
559
+ }
560
+ AA.data = x;
561
+ AA.width = AB;
562
+ AA.height = AD;
563
+ var y = {};
564
+ if (z && typeof z === Q) {
565
+ for (var u in z) {
566
+ if (z[u] != Object.prototype[u]) {
567
+ y[u] = z[u]
568
+ }
569
+ }
570
+ }
571
+ if (r && typeof r === Q) {
572
+ for (var t in r) {
573
+ if (r[t] != Object.prototype[t]) {
574
+ if (typeof y.flashvars != b) {
575
+ y.flashvars += "&" + t + "=" + r[t]
576
+ } else {
577
+ y.flashvars = t + "=" + r[t]
578
+ }
579
+ }
580
+ }
581
+ }
582
+ f(function () {
583
+ U(AA, y, AE);
584
+ if (AA.id == AE) {
585
+ W(AE, true)
586
+ }
587
+ })
588
+ } else {
589
+ if (w && !A && c("6.0.65") && (h.win || h.mac)) {
590
+ A = true;
591
+ W(AE, false);
592
+ f(function () {
593
+ var AF = {};
594
+ AF.id = AF.altContentId = AE;
595
+ AF.width = AB;
596
+ AF.height = AD;
597
+ AF.expressInstall = w;
598
+ k(AF)
599
+ })
600
+ }
601
+ }
602
+ }, getFlashPlayerVersion:function () {
603
+ return{major:h.pv[0], minor:h.pv[1], release:h.pv[2]}
604
+ }, hasFlashPlayerVersion:c, createSWF:function (t, r, q) {
605
+ if (h.w3cdom) {
606
+ return U(t, r, q)
607
+ } else {
608
+ return undefined
609
+ }
610
+ }, removeSWF:function (q) {
611
+ if (h.w3cdom) {
612
+ X(q)
613
+ }
614
+ }, createCSS:function (r, q) {
615
+ if (h.w3cdom) {
616
+ V(r, q)
617
+ }
618
+ }, addDomLoadEvent:f, addLoadEvent:R, getQueryParamValue:function (v) {
619
+ var u = K.location.search || K.location.hash;
620
+ if (v == null) {
621
+ return g(u)
622
+ }
623
+ if (u) {
624
+ var t = u.substring(1).split("&");
625
+ for (var r = 0; r < t.length; r++) {
626
+ if (t[r].substring(0, t[r].indexOf("=")) == v) {
627
+ return g(t[r].substring((t[r].indexOf("=") + 1)))
628
+ }
629
+ }
630
+ }
631
+ return""
632
+ }, expressInstallCallback:function () {
633
+ if (A && M) {
634
+ var q = C(m);
635
+ if (q) {
636
+ q.parentNode.replaceChild(M, q);
637
+ if (l) {
638
+ W(l, true);
639
+ if (h.ie && h.win) {
640
+ M.style.display = "block"
641
+ }
642
+ }
643
+ M = null;
644
+ l = null;
645
+ A = false
646
+ }
647
+ }
648
+ }}
649
+ }();
46
650
 
47
651
 
48
-
49
652
  var SWFUpload;
50
653
  if (typeof(SWFUpload) === "function") {
51
- SWFUpload.onload = function () {};
52
-
53
- swfobject.addDomLoadEvent(function () {
54
- if (typeof(SWFUpload.onload) === "function") {
55
- SWFUpload.onload.call(window);
56
- }
57
- });
58
-
59
- SWFUpload.prototype.initSettings = (function (oldInitSettings) {
60
- return function () {
61
- if (typeof(oldInitSettings) === "function") {
62
- oldInitSettings.call(this);
63
- }
64
-
65
- this.ensureDefault = function (settingName, defaultValue) {
66
- this.settings[settingName] = (this.settings[settingName] == undefined) ? defaultValue : this.settings[settingName];
67
- };
68
-
69
- this.ensureDefault("minimum_flash_version", "9.0.28");
70
- this.ensureDefault("swfupload_pre_load_handler", null);
71
- this.ensureDefault("swfupload_load_failed_handler", null);
72
-
73
- delete this.ensureDefault;
74
-
75
- };
76
- })(SWFUpload.prototype.initSettings);
77
-
78
-
79
- SWFUpload.prototype.loadFlash = function (oldLoadFlash) {
80
- return function () {
81
- var hasFlash = swfobject.hasFlashPlayerVersion(this.settings.minimum_flash_version);
82
-
83
- if (hasFlash) {
84
- this.queueEvent("swfupload_pre_load_handler");
85
- if (typeof(oldLoadFlash) === "function") {
86
- oldLoadFlash.call(this);
87
- }
88
- } else {
89
- this.queueEvent("swfupload_load_failed_handler");
90
- }
91
- };
92
-
93
- }(SWFUpload.prototype.loadFlash);
94
-
95
- SWFUpload.prototype.displayDebugInfo = function (oldDisplayDebugInfo) {
96
- return function () {
97
- if (typeof(oldDisplayDebugInfo) === "function") {
98
- oldDisplayDebugInfo.call(this);
99
- }
100
-
101
- this.debug(
102
- [
103
- "SWFUpload.SWFObject Plugin settings:", "\n",
104
- "\t", "minimum_flash_version: ", this.settings.minimum_flash_version, "\n",
105
- "\t", "swfupload_pre_load_handler assigned: ", (typeof(this.settings.swfupload_pre_load_handler) === "function").toString(), "\n",
106
- "\t", "swfupload_load_failed_handler assigned: ", (typeof(this.settings.swfupload_load_failed_handler) === "function").toString(), "\n",
107
- ].join("")
108
- );
109
- };
110
- }(SWFUpload.prototype.displayDebugInfo);
654
+ SWFUpload.onload = function () {
655
+ };
656
+
657
+ swfobject.addDomLoadEvent(function () {
658
+ if (typeof(SWFUpload.onload) === "function") {
659
+ SWFUpload.onload.call(window);
660
+ }
661
+ });
662
+
663
+ SWFUpload.prototype.initSettings = (function (oldInitSettings) {
664
+ return function () {
665
+ if (typeof(oldInitSettings) === "function") {
666
+ oldInitSettings.call(this);
667
+ }
668
+
669
+ this.ensureDefault = function (settingName, defaultValue) {
670
+ this.settings[settingName] = (this.settings[settingName] == undefined) ? defaultValue : this.settings[settingName];
671
+ };
672
+
673
+ this.ensureDefault("minimum_flash_version", "9.0.28");
674
+ this.ensureDefault("swfupload_pre_load_handler", null);
675
+ this.ensureDefault("swfupload_load_failed_handler", null);
676
+
677
+ delete this.ensureDefault;
678
+
679
+ };
680
+ })(SWFUpload.prototype.initSettings);
681
+
682
+
683
+ SWFUpload.prototype.loadFlash = function (oldLoadFlash) {
684
+ return function () {
685
+ var hasFlash = swfobject.hasFlashPlayerVersion(this.settings.minimum_flash_version);
686
+
687
+ if (hasFlash) {
688
+ this.queueEvent("swfupload_pre_load_handler");
689
+ if (typeof(oldLoadFlash) === "function") {
690
+ oldLoadFlash.call(this);
691
+ }
692
+ } else {
693
+ this.queueEvent("swfupload_load_failed_handler");
694
+ }
695
+ };
696
+
697
+ }(SWFUpload.prototype.loadFlash);
698
+
699
+ SWFUpload.prototype.displayDebugInfo = function (oldDisplayDebugInfo) {
700
+ return function () {
701
+ if (typeof(oldDisplayDebugInfo) === "function") {
702
+ oldDisplayDebugInfo.call(this);
703
+ }
704
+
705
+ this.debug(
706
+ [
707
+ "SWFUpload.SWFObject Plugin settings:", "\n",
708
+ "\t", "minimum_flash_version: ", this.settings.minimum_flash_version, "\n",
709
+ "\t", "swfupload_pre_load_handler assigned: ", (typeof(this.settings.swfupload_pre_load_handler) === "function").toString(), "\n",
710
+ "\t", "swfupload_load_failed_handler assigned: ", (typeof(this.settings.swfupload_load_failed_handler) === "function").toString(), "\n",
711
+ ].join("")
712
+ );
713
+ };
714
+ }(SWFUpload.prototype.displayDebugInfo);
111
715
  }