Skip to content
This repository

HTTPS clone URL

Subversion checkout URL

You can clone with HTTPS or Subversion.

Download ZIP
Browse code

Move to Rails 2.2

  • Loading branch information...
commit 4bd14529ff1aa3c16201f76d07b8663fff245b53 1 parent dcaae79
Clemens Kofler authored December 03, 2008

Showing 302 changed files with 7,509 additions and 12,665 deletions. Show diff stats Hide diff stats

  1. 10  app/controllers/application.rb
  2. 4  config/boot.rb
  3. 2  config/environment.rb
  4. 144  public/javascripts/controls.js
  5. 329  public/javascripts/dragdrop.js
  6. 338  public/javascripts/effects.js
  7. 337  public/javascripts/prototype.js
  8. 1  vendor/plugins/localized_dates
  9. 6  vendor/plugins/localized_dates/CHANGELOG
  10. 142  vendor/plugins/localized_dates/README
  11. 11  vendor/plugins/localized_dates/Rakefile
  12. 13  vendor/plugins/localized_dates/init.rb
  13. 11  vendor/plugins/localized_dates/install.rb
  14. 21  vendor/plugins/localized_dates/lib/core_ext/date.rb
  15. 17  vendor/plugins/localized_dates/lib/core_ext/datetime.rb
  16. 21  vendor/plugins/localized_dates/lib/core_ext/time.rb
  17. 17  vendor/plugins/localized_dates/lib/core_ext/time_with_zone.rb
  18. 6  vendor/plugins/localized_dates/lib/localized_dates.rb
  19. 22  vendor/plugins/localized_dates/lib/templates/locales/de-AT.yml
  20. 19  vendor/plugins/localized_dates/lib/templates/locales/en-US.rb
  21. 28  vendor/plugins/localized_dates/lib/templates/locales/en-US.yml
  22. 1  vendor/plugins/localized_dates/spec/debug.log
  23. 57  vendor/plugins/localized_dates/spec/localized_dates_spec.rb
  24. 10  vendor/plugins/localized_dates/spec/spec_helper.rb
  25. 7  vendor/plugins/localized_dates/tasks/localized_dates.rake
  26. 3  vendor/rails/.gitignore
  27. 0  ...REVISION_ebfa43c423ac16bb699424d8d3db11855dd79a91 → REVISION_1e1056f6435254c81f02fd0fba53d9356050cb00}
  28. 5  vendor/rails/actionmailer/CHANGELOG
  29. 6  vendor/rails/actionmailer/Rakefile
  30. 43  vendor/rails/actionmailer/lib/action_mailer/base.rb
  31. 4  vendor/rails/actionmailer/lib/action_mailer/version.rb
  32. 10  vendor/rails/actionmailer/test/abstract_unit.rb
  33. 1  vendor/rails/actionmailer/test/fixtures/auto_layout_mailer/multipart.text.html.erb
  34. 1  vendor/rails/actionmailer/test/fixtures/auto_layout_mailer/multipart.text.plain.erb
  35. 1  vendor/rails/actionmailer/test/fixtures/layouts/auto_layout_mailer.text.erb
  36. 2  vendor/rails/actionmailer/test/fixtures/test_mailer/body_ivar.erb
  37. 10  vendor/rails/actionmailer/test/fixtures/test_mailer/implicitly_multipart_example.text.html.erb~
  38. 17  vendor/rails/actionmailer/test/mail_layout_test.rb
  39. 38  vendor/rails/actionmailer/test/mail_service_test.rb
  40. 98  vendor/rails/actionpack/CHANGELOG
  41. 20  vendor/rails/actionpack/Rakefile
  42. 2  vendor/rails/actionpack/lib/action_controller.rb
  43. 28  vendor/rails/actionpack/lib/action_controller/assertions/routing_assertions.rb
  44. 174  vendor/rails/actionpack/lib/action_controller/base.rb
  45. 61  vendor/rails/actionpack/lib/action_controller/benchmarking.rb
  46. 4  vendor/rails/actionpack/lib/action_controller/caching/actions.rb
  47. 26  vendor/rails/actionpack/lib/action_controller/caching/fragments.rb
  48. 24  vendor/rails/actionpack/lib/action_controller/cgi_ext/session.rb
  49. 3  vendor/rails/actionpack/lib/action_controller/cgi_process.rb
  50. 38  vendor/rails/actionpack/lib/action_controller/dispatcher.rb
  51. 2  vendor/rails/actionpack/lib/action_controller/integration.rb
  52. 12  vendor/rails/actionpack/lib/action_controller/layout.rb
  53. 22  vendor/rails/actionpack/lib/action_controller/mime_type.rb
  54. 3  vendor/rails/actionpack/lib/action_controller/polymorphic_routes.rb
  55. 3  vendor/rails/actionpack/lib/action_controller/rack_process.rb
  56. 95  vendor/rails/actionpack/lib/action_controller/request.rb
  57. 2  vendor/rails/actionpack/lib/action_controller/request_forgery_protection.rb
  58. 132  vendor/rails/actionpack/lib/action_controller/rescue.rb
  59. 176  vendor/rails/actionpack/lib/action_controller/resources.rb
  60. 39  vendor/rails/actionpack/lib/action_controller/response.rb
  61. 57  vendor/rails/actionpack/lib/action_controller/routing/builder.rb
  62. 22  vendor/rails/actionpack/lib/action_controller/routing/optimisations.rb
  63. 18  vendor/rails/actionpack/lib/action_controller/routing/recognition_optimisation.rb
  64. 2  vendor/rails/actionpack/lib/action_controller/routing/route.rb
  65. 5  vendor/rails/actionpack/lib/action_controller/routing/route_set.rb
  66. 4  vendor/rails/actionpack/lib/action_controller/routing/routing_ext.rb
  67. 34  vendor/rails/actionpack/lib/action_controller/routing/segments.rb
  68. 3  vendor/rails/actionpack/lib/action_controller/session/cookie_store.rb
  69. 8  vendor/rails/actionpack/lib/action_controller/session_management.rb
  70. 5  vendor/rails/actionpack/lib/action_controller/test_case.rb
  71. 9  vendor/rails/actionpack/lib/action_controller/test_process.rb
  72. 13  vendor/rails/actionpack/lib/action_controller/translation.rb
  73. 11  vendor/rails/actionpack/lib/action_controller/vendor/html-scanner/html/node.rb
  74. 2  vendor/rails/actionpack/lib/action_controller/vendor/html-scanner/html/sanitizer.rb
  75. 4  vendor/rails/actionpack/lib/action_pack/version.rb
  76. 2  vendor/rails/actionpack/lib/action_view.rb
  77. 61  vendor/rails/actionpack/lib/action_view/base.rb
  78. 1  vendor/rails/actionpack/lib/action_view/helpers.rb
  79. 12  vendor/rails/actionpack/lib/action_view/helpers/active_record_helper.rb
  80. 468  vendor/rails/actionpack/lib/action_view/helpers/asset_tag_helper.rb
  81. 69  vendor/rails/actionpack/lib/action_view/helpers/atom_feed_helper.rb
  82. 6  vendor/rails/actionpack/lib/action_view/helpers/benchmark_helper.rb
  83. 18  vendor/rails/actionpack/lib/action_view/helpers/date_helper.rb
  84. 92  vendor/rails/actionpack/lib/action_view/helpers/form_country_helper.rb
  85. 8  vendor/rails/actionpack/lib/action_view/helpers/form_helper.rb
  86. 3  vendor/rails/actionpack/lib/action_view/helpers/form_options_helper.rb
  87. 60  vendor/rails/actionpack/lib/action_view/helpers/form_tag_helper.rb
  88. 3  vendor/rails/actionpack/lib/action_view/helpers/javascript_helper.rb
  89. 963  vendor/rails/actionpack/lib/action_view/helpers/javascripts/controls.js
  90. 972  vendor/rails/actionpack/lib/action_view/helpers/javascripts/dragdrop.js
  91. 1,120  vendor/rails/actionpack/lib/action_view/helpers/javascripts/effects.js
  92. 4,221  vendor/rails/actionpack/lib/action_view/helpers/javascripts/prototype.js
  93. 20  vendor/rails/actionpack/lib/action_view/helpers/prototype_helper.rb
  94. 2  vendor/rails/actionpack/lib/action_view/helpers/scriptaculous_helper.rb
  95. 12  vendor/rails/actionpack/lib/action_view/helpers/tag_helper.rb
  96. 224  vendor/rails/actionpack/lib/action_view/helpers/text_helper.rb
  97. 9  vendor/rails/actionpack/lib/action_view/helpers/translation_helper.rb
  98. 17  vendor/rails/actionpack/lib/action_view/helpers/url_helper.rb
  99. 2  vendor/rails/actionpack/lib/action_view/locale/{en-US.yml → en.yml}
  100. 2  vendor/rails/actionpack/lib/action_view/partials.rb
  101. 33  vendor/rails/actionpack/lib/action_view/renderable.rb
  102. 18  vendor/rails/actionpack/lib/action_view/renderable_partial.rb
  103. 13  vendor/rails/actionpack/lib/action_view/template.rb
  104. 30  vendor/rails/actionpack/lib/action_view/template_error.rb
  105. 2  vendor/rails/actionpack/test/abstract_unit.rb
  106. 12  vendor/rails/actionpack/test/controller/caching_test.rb
  107. 3  vendor/rails/actionpack/test/controller/cgi_test.rb
  108. 10  vendor/rails/actionpack/test/controller/dispatcher_test.rb
  109. 15  vendor/rails/actionpack/test/controller/html-scanner/cdata_node_test.rb
  110. 21  vendor/rails/actionpack/test/controller/html-scanner/node_test.rb
  111. 14  vendor/rails/actionpack/test/controller/html-scanner/sanitizer_test.rb
  112. 46  vendor/rails/actionpack/test/controller/logging_test.rb
  113. 12  vendor/rails/actionpack/test/controller/mime_type_test.rb
  114. 17  vendor/rails/actionpack/test/controller/polymorphic_routes_test.rb
  115. 10  vendor/rails/actionpack/test/controller/redirect_test.rb
  116. 150  vendor/rails/actionpack/test/controller/render_test.rb
  117. 118  vendor/rails/actionpack/test/controller/request_forgery_protection_test.rb
  118. 14  vendor/rails/actionpack/test/controller/request_test.rb
  119. 35  vendor/rails/actionpack/test/controller/rescue_test.rb
  120. 266  vendor/rails/actionpack/test/controller/resources_test.rb
  121. 63  vendor/rails/actionpack/test/controller/routing_test.rb
  122. 54  vendor/rails/actionpack/test/controller/session/cookie_store_test.rb
  123. 5  vendor/rails/actionpack/test/controller/test_test.rb
  124. 26  vendor/rails/actionpack/test/controller/translation_test.rb
  125. 2  vendor/rails/actionpack/test/fixtures/layouts/_column.html.erb
  126. 2  vendor/rails/actionpack/test/fixtures/test/_customer.erb
  127. 1  vendor/rails/actionpack/test/fixtures/test/_partial_with_only_html_version.html.erb
  128. 3  vendor/rails/actionpack/test/fixtures/test/nested_layout.erb
  129. 1  vendor/rails/actionpack/test/fixtures/test/sub_template_raise.html.erb
  130. 1  vendor/rails/actionpack/test/fixtures/test/template.erb
  131. 24  vendor/rails/actionpack/test/template/active_record_helper_i18n_test.rb
  132. 95  vendor/rails/actionpack/test/template/asset_tag_helper_test.rb
  133. 82  vendor/rails/actionpack/test/template/atom_feed_helper_test.rb
  134. 28  vendor/rails/actionpack/test/template/compiled_templates_test.rb
  135. 22  vendor/rails/actionpack/test/template/date_helper_i18n_test.rb
  136. 40  vendor/rails/actionpack/test/template/date_helper_test.rb
  137. 1,549  vendor/rails/actionpack/test/template/form_country_helper_test.rb
  138. 56  vendor/rails/actionpack/test/template/form_tag_helper_test.rb
  139. 30  vendor/rails/actionpack/test/template/number_helper_i18n_test.rb
  140. 6  vendor/rails/actionpack/test/template/prototype_helper_test.rb
  141. 62  vendor/rails/actionpack/test/template/render_test.rb
  142. 4  vendor/rails/actionpack/test/template/tag_helper_test.rb
  143. 1  vendor/rails/actionpack/test/template/text_helper_test.rb
  144. 6  vendor/rails/actionpack/test/template/translation_helper_test.rb
  145. 23  vendor/rails/actionpack/test/template/url_helper_test.rb
  146. 6  vendor/rails/activemodel/lib/active_model/state_machine/event.rb
  147. 2  vendor/rails/activemodel/lib/active_model/validations/exclusion.rb
  148. 2  vendor/rails/activemodel/lib/active_model/validations/inclusion.rb
  149. 8  vendor/rails/activemodel/lib/active_model/validations/uniqueness.rb
  150. 42  vendor/rails/activerecord/CHANGELOG
  151. 6  vendor/rails/activerecord/Rakefile
  152. 4  vendor/rails/activerecord/lib/active_record.rb
  153. 148  vendor/rails/activerecord/lib/active_record/aggregations.rb
  154. 138  vendor/rails/activerecord/lib/active_record/association_preload.rb
  155. 237  vendor/rails/activerecord/lib/active_record/associations.rb
  156. 92  vendor/rails/activerecord/lib/active_record/associations/association_collection.rb
  157. 70  vendor/rails/activerecord/lib/active_record/associations/association_proxy.rb
  158. 4  vendor/rails/activerecord/lib/active_record/associations/belongs_to_association.rb
  159. 18  vendor/rails/activerecord/lib/active_record/associations/has_many_association.rb
  160. 24  vendor/rails/activerecord/lib/active_record/associations/has_many_through_association.rb
  161. 18  vendor/rails/activerecord/lib/active_record/associations/has_one_association.rb
  162. 7  vendor/rails/activerecord/lib/active_record/associations/has_one_through_association.rb
  163. 18  vendor/rails/activerecord/lib/active_record/attribute_methods.rb
  164. 351  vendor/rails/activerecord/lib/active_record/base.rb
  165. 16  vendor/rails/activerecord/lib/active_record/calculations.rb
  166. 15  vendor/rails/activerecord/lib/active_record/callbacks.rb
  167. 355  vendor/rails/activerecord/lib/active_record/connection_adapters/abstract/connection_pool.rb
  168. 257  vendor/rails/activerecord/lib/active_record/connection_adapters/abstract/connection_specification.rb
  169. 31  vendor/rails/activerecord/lib/active_record/connection_adapters/abstract/database_statements.rb
  170. 42  vendor/rails/activerecord/lib/active_record/connection_adapters/abstract/query_cache.rb
  171. 42  vendor/rails/activerecord/lib/active_record/connection_adapters/abstract/schema_definitions.rb
  172. 10  vendor/rails/activerecord/lib/active_record/connection_adapters/abstract/schema_statements.rb
  173. 73  vendor/rails/activerecord/lib/active_record/connection_adapters/abstract_adapter.rb
  174. 29  vendor/rails/activerecord/lib/active_record/connection_adapters/mysql_adapter.rb
  175. 186  vendor/rails/activerecord/lib/active_record/connection_adapters/postgresql_adapter.rb
  176. 20  vendor/rails/activerecord/lib/active_record/dirty.rb
  177. 9  vendor/rails/activerecord/lib/active_record/dynamic_finder_match.rb
  178. 2  vendor/rails/activerecord/lib/active_record/fixtures.rb
  179. 26  vendor/rails/activerecord/lib/active_record/i18n_interpolation_deprecation.rb
  180. 31  vendor/rails/activerecord/lib/active_record/locale/{en-US.yml → en.yml}
  181. 26  vendor/rails/activerecord/lib/active_record/named_scope.rb
  182. 170  vendor/rails/activerecord/lib/active_record/reflection.rb
  183. 20  vendor/rails/activerecord/lib/active_record/schema_dumper.rb
  184. 21  vendor/rails/activerecord/lib/active_record/test_case.rb
  185. 87  vendor/rails/activerecord/lib/active_record/transactions.rb
  186. 177  vendor/rails/activerecord/lib/active_record/validations.rb
  187. 4  vendor/rails/activerecord/lib/active_record/version.rb
  188. 5  vendor/rails/activerecord/test/cases/active_schema_test_mysql.rb
  189. 95  vendor/rails/activerecord/test/cases/adapter_test_sqlserver.rb
  190. 39  vendor/rails/activerecord/test/cases/aggregations_test.rb
  191. 10  vendor/rails/activerecord/test/cases/associations/belongs_to_associations_test.rb
  192. 60  vendor/rails/activerecord/test/cases/associations/eager_test.rb
  193. 15  vendor/rails/activerecord/test/cases/associations/extension_test.rb
  194. 46  vendor/rails/activerecord/test/cases/associations/has_and_belongs_to_many_associations_test.rb
  195. 47  vendor/rails/activerecord/test/cases/associations/has_many_associations_test.rb
  196. 26  vendor/rails/activerecord/test/cases/associations/has_many_through_associations_test.rb
  197. 10  vendor/rails/activerecord/test/cases/associations/has_one_associations_test.rb
  198. 50  vendor/rails/activerecord/test/cases/associations/has_one_through_associations_test.rb
  199. 108  vendor/rails/activerecord/test/cases/associations_test.rb
  200. 63  vendor/rails/activerecord/test/cases/attribute_methods_test.rb
  201. 114  vendor/rails/activerecord/test/cases/base_test.rb
  202. 6  vendor/rails/activerecord/test/cases/binary_test.rb
  203. 11  vendor/rails/activerecord/test/cases/calculations_test.rb
  204. 2  vendor/rails/activerecord/test/cases/connection_test_mysql.rb
  205. 33  vendor/rails/activerecord/test/cases/defaults_test.rb
  206. 13  vendor/rails/activerecord/test/cases/dirty_test.rb
  207. 107  vendor/rails/activerecord/test/cases/finder_test.rb
  208. 14  vendor/rails/activerecord/test/cases/helper.rb
  209. 12  vendor/rails/activerecord/test/cases/i18n_test.rb
  210. 6  vendor/rails/activerecord/test/cases/inheritance_test.rb
  211. 13  vendor/rails/activerecord/test/cases/locking_test.rb
  212. 30  vendor/rails/activerecord/test/cases/method_scoping_test.rb
  213. 16  vendor/rails/activerecord/test/cases/migration_test.rb
  214. 6  vendor/rails/activerecord/test/cases/named_scope_test.rb
  215. 103  vendor/rails/activerecord/test/cases/pooled_connections_test.rb
  216. 8  vendor/rails/activerecord/test/cases/reflection_test.rb
  217. 20  vendor/rails/activerecord/test/cases/reload_models_test.rb
  218. 25  vendor/rails/activerecord/test/cases/sanitize_test.rb
  219. 4  vendor/rails/activerecord/test/cases/schema_authorization_test_postgresql.rb
  220. 23  vendor/rails/activerecord/test/cases/table_name_test_sqlserver.rb
  221. 48  vendor/rails/activerecord/test/cases/threaded_connections_test.rb
  222. 12  vendor/rails/activerecord/test/cases/transactions_test.rb
  223. 128  vendor/rails/activerecord/test/cases/validations_i18n_test.rb
  224. 65  vendor/rails/activerecord/test/cases/validations_test.rb
  225. 11  vendor/rails/activerecord/test/fixtures/customers.yml
  226. 5  vendor/rails/activerecord/test/fixtures/organizations.yml
  227. 5  vendor/rails/activerecord/test/models/author.rb
  228. 3  vendor/rails/activerecord/test/models/category.rb
  229. 6  vendor/rails/activerecord/test/models/club.rb
  230. 23  vendor/rails/activerecord/test/models/company.rb
  231. 20  vendor/rails/activerecord/test/models/customer.rb
  232. 2  vendor/rails/activerecord/test/models/member.rb
  233. 4  vendor/rails/activerecord/test/models/member_detail.rb
  234. 4  vendor/rails/activerecord/test/models/organization.rb
  235. 1  vendor/rails/activerecord/test/models/parrot.rb
  236. 9  vendor/rails/activerecord/test/models/post.rb
  237. 10  vendor/rails/activerecord/test/schema/schema.rb
  238. 5  vendor/rails/activerecord/test/schema/sqlserver_specific_schema.rb
  239. 6  vendor/rails/activeresource/CHANGELOG
  240. 6  vendor/rails/activeresource/Rakefile
  241. 127  vendor/rails/activeresource/lib/active_resource/base.rb
  242. 2  vendor/rails/activeresource/lib/active_resource/connection.rb
  243. 2  vendor/rails/activeresource/lib/active_resource/custom_methods.rb
  244. 2  vendor/rails/activeresource/lib/active_resource/formats/json_format.rb
  245. 44  vendor/rails/activeresource/lib/active_resource/validations.rb
  246. 4  vendor/rails/activeresource/lib/active_resource/version.rb
  247. 2  vendor/rails/activeresource/test/base/custom_methods_test.rb
  248. 24  vendor/rails/activeresource/test/base_test.rb
  249. 12  vendor/rails/activeresource/test/connection_test.rb
  250. 17  vendor/rails/activeresource/test/format_test.rb
  251. 36  vendor/rails/activesupport/CHANGELOG
  252. 7  vendor/rails/activesupport/Rakefile
  253. 147  vendor/rails/activesupport/bin/generate_tables
  254. 6  vendor/rails/activesupport/lib/active_support.rb
  255. 15  vendor/rails/activesupport/lib/active_support/base64.rb
  256. 2  vendor/rails/activesupport/lib/active_support/buffered_logger.rb
  257. 106  vendor/rails/activesupport/lib/active_support/cache.rb
  258. 9  vendor/rails/activesupport/lib/active_support/cache/compressed_mem_cache_store.rb
  259. 4  vendor/rails/activesupport/lib/active_support/cache/file_store.rb
  260. 45  vendor/rails/activesupport/lib/active_support/cache/mem_cache_store.rb
  261. 64  vendor/rails/activesupport/lib/active_support/cache/memory_store.rb
  262. 47  vendor/rails/activesupport/lib/active_support/cache/synchronized_memory_store.rb
  263. 2  vendor/rails/activesupport/lib/active_support/callbacks.rb
  264. 34  vendor/rails/activesupport/lib/active_support/core_ext/array/access.rb
  265. 5  vendor/rails/activesupport/lib/active_support/core_ext/array/conversions.rb
  266. 12  vendor/rails/activesupport/lib/active_support/core_ext/array/grouping.rb
  267. 3  vendor/rails/activesupport/lib/active_support/core_ext/base64/encoding.rb
  268. 40  vendor/rails/activesupport/lib/active_support/core_ext/bigdecimal/conversions.rb
  269. 10  vendor/rails/activesupport/lib/active_support/core_ext/class/inheritable_attributes.rb
  270. 33  vendor/rails/activesupport/lib/active_support/core_ext/date/calculations.rb
  271. 24  vendor/rails/activesupport/lib/active_support/core_ext/date_time/calculations.rb
  272. 22  vendor/rails/activesupport/lib/active_support/core_ext/enumerable.rb
  273. 2  vendor/rails/activesupport/lib/active_support/core_ext/file/atomic.rb
  274. 2  vendor/rails/activesupport/lib/active_support/core_ext/float.rb
  275. 27  vendor/rails/activesupport/lib/active_support/core_ext/float/time.rb
  276. 2  vendor/rails/activesupport/lib/active_support/core_ext/hash/conversions.rb
  277. 2  vendor/rails/activesupport/lib/active_support/core_ext/hash/except.rb
  278. 2  vendor/rails/activesupport/lib/active_support/core_ext/hash/slice.rb
  279. 2  vendor/rails/activesupport/lib/active_support/core_ext/integer.rb
  280. 45  vendor/rails/activesupport/lib/active_support/core_ext/integer/time.rb
  281. 1  vendor/rails/activesupport/lib/active_support/core_ext/module.rb
  282. 33  vendor/rails/activesupport/lib/active_support/core_ext/module/delegation.rb
  283. 39  vendor/rails/activesupport/lib/active_support/core_ext/module/synchronization.rb
  284. 10  vendor/rails/activesupport/lib/active_support/core_ext/numeric/time.rb
  285. 45  vendor/rails/activesupport/lib/active_support/core_ext/object/extending.rb
  286. 52  vendor/rails/activesupport/lib/active_support/core_ext/object/misc.rb
  287. 3  vendor/rails/activesupport/lib/active_support/core_ext/rexml.rb
  288. 8  vendor/rails/activesupport/lib/active_support/core_ext/string.rb
  289. 10  vendor/rails/activesupport/lib/active_support/core_ext/string/access.rb
  290. 13  vendor/rails/activesupport/lib/active_support/core_ext/string/behavior.rb
  291. 19  vendor/rails/activesupport/lib/active_support/core_ext/string/inflections.rb
  292. 81  vendor/rails/activesupport/lib/active_support/core_ext/string/multibyte.rb
  293. 66  vendor/rails/activesupport/lib/active_support/core_ext/string/unicode.rb
  294. 2  vendor/rails/activesupport/lib/active_support/core_ext/time.rb
  295. 49  vendor/rails/activesupport/lib/active_support/core_ext/time/calculations.rb
  296. 20  vendor/rails/activesupport/lib/active_support/dependencies.rb
  297. 4  vendor/rails/activesupport/lib/active_support/deprecation.rb
  298. 48  vendor/rails/activesupport/lib/active_support/inflector.rb
  299. 3  vendor/rails/activesupport/lib/active_support/locale/{en-US.yml → en.yml}
  300. 12  vendor/rails/activesupport/lib/active_support/memoizable.rb
  301. 38  vendor/rails/activesupport/lib/active_support/multibyte.rb
10  app/controllers/application.rb
@@ -21,15 +21,5 @@ def set_locale
21 21
 
22 22
     # set locale based on session or default 
23 23
     I18n.locale = session[:locale] || I18n.default_locale
24  
-
25  
-    # load locale from settings
26  
-    @locale_files = []
27  
-    ['yml', 'rb'].each do |type|
28  
-      locale_file = "#{LOCALES_DIRECTORY}#{I18n.locale}.#{type}"
29  
-      if File.exists?(locale_file)
30  
-        @locale_files << locale_file
31  
-        I18n.load_translations locale_file
32  
-      end
33  
-    end
34 24
   end
35 25
 end
4  config/boot.rb
@@ -67,7 +67,7 @@ def load_rails_gem
67 67
 
68 68
     class << self
69 69
       def rubygems_version
70  
-        Gem::RubyGemsVersion if defined? Gem::RubyGemsVersion
  70
+        Gem::RubyGemsVersion rescue nil
71 71
       end
72 72
 
73 73
       def gem_version
@@ -82,7 +82,7 @@ def gem_version
82 82
 
83 83
       def load_rubygems
84 84
         require 'rubygems'
85  
-        min_version = '1.1.1'
  85
+        min_version = '1.3.1'
86 86
         unless rubygems_version >= min_version
87 87
           $stderr.puts %Q(Rails requires RubyGems >= #{min_version} (you have #{rubygems_version}). Please `gem update --system` and try again.)
88 88
           exit 1
2  config/environment.rb
@@ -66,7 +66,7 @@
66 66
   # config.active_record.observers = :cacher, :garbage_collector
67 67
 end
68 68
 
69  
-I18n.default_locale = 'en-US'
  69
+I18n.default_locale = 'en'
70 70
 
71 71
 LOCALES_DIRECTORY = "#{RAILS_ROOT}/config/locales/"
72 72
 LOCALES_AVAILABLE = Dir["#{LOCALES_DIRECTORY}/*.{rb,yml}"].collect do |locale_file|
144  public/javascripts/controls.js
... ...
@@ -1,22 +1,22 @@
1 1
 // Copyright (c) 2005-2008 Thomas Fuchs (http://script.aculo.us, http://mir.aculo.us)
2  
-//           (c) 2005-2007 Ivan Krstic (http://blogs.law.harvard.edu/ivan)
3  
-//           (c) 2005-2007 Jon Tirsen (http://www.tirsen.com)
  2
+//           (c) 2005-2008 Ivan Krstic (http://blogs.law.harvard.edu/ivan)
  3
+//           (c) 2005-2008 Jon Tirsen (http://www.tirsen.com)
4 4
 // Contributors:
5 5
 //  Richard Livsey
6 6
 //  Rahul Bhargava
7 7
 //  Rob Wills
8  
-// 
  8
+//
9 9
 // script.aculo.us is freely distributable under the terms of an MIT-style license.
10 10
 // For details, see the script.aculo.us web site: http://script.aculo.us/
11 11
 
12  
-// Autocompleter.Base handles all the autocompletion functionality 
  12
+// Autocompleter.Base handles all the autocompletion functionality
13 13
 // that's independent of the data source for autocompletion. This
14 14
 // includes drawing the autocompletion menu, observing keyboard
15 15
 // and mouse events, and similar.
16 16
 //
17  
-// Specific autocompleters need to provide, at the very least, 
  17
+// Specific autocompleters need to provide, at the very least,
18 18
 // a getUpdatedChoices function that will be invoked every time
19  
-// the text inside the monitored textbox changes. This method 
  19
+// the text inside the monitored textbox changes. This method
20 20
 // should get the text for which to provide autocompletion by
21 21
 // invoking this.getToken(), NOT by directly accessing
22 22
 // this.element.value. This is to allow incremental tokenized
@@ -30,23 +30,23 @@
30 30
 // will incrementally autocomplete with a comma as the token.
31 31
 // Additionally, ',' in the above example can be replaced with
32 32
 // a token array, e.g. { tokens: [',', '\n'] } which
33  
-// enables autocompletion on multiple tokens. This is most 
34  
-// useful when one of the tokens is \n (a newline), as it 
  33
+// enables autocompletion on multiple tokens. This is most
  34
+// useful when one of the tokens is \n (a newline), as it
35 35
 // allows smart autocompletion after linebreaks.
36 36
 
37 37
 if(typeof Effect == 'undefined')
38 38
   throw("controls.js requires including script.aculo.us' effects.js library");
39 39
 
40  
-var Autocompleter = { }
  40
+var Autocompleter = { };
41 41
 Autocompleter.Base = Class.create({
42 42
   baseInitialize: function(element, update, options) {
43  
-    element          = $(element)
44  
-    this.element     = element; 
45  
-    this.update      = $(update);  
46  
-    this.hasFocus    = false; 
47  
-    this.changed     = false; 
48  
-    this.active      = false; 
49  
-    this.index       = 0;     
  43
+    element          = $(element);
  44
+    this.element     = element;
  45
+    this.update      = $(update);
  46
+    this.hasFocus    = false;
  47
+    this.changed     = false;
  48
+    this.active      = false;
  49
+    this.index       = 0;
50 50
     this.entryCount  = 0;
51 51
     this.oldElementValue = this.element.value;
52 52
 
@@ -59,28 +59,28 @@ Autocompleter.Base = Class.create({
59 59
     this.options.tokens       = this.options.tokens || [];
60 60
     this.options.frequency    = this.options.frequency || 0.4;
61 61
     this.options.minChars     = this.options.minChars || 1;
62  
-    this.options.onShow       = this.options.onShow || 
63  
-      function(element, update){ 
  62
+    this.options.onShow       = this.options.onShow ||
  63
+      function(element, update){
64 64
         if(!update.style.position || update.style.position=='absolute') {
65 65
           update.style.position = 'absolute';
66 66
           Position.clone(element, update, {
67  
-            setHeight: false, 
  67
+            setHeight: false,
68 68
             offsetTop: element.offsetHeight
69 69
           });
70 70
         }
71 71
         Effect.Appear(update,{duration:0.15});
72 72
       };
73  
-    this.options.onHide = this.options.onHide || 
  73
+    this.options.onHide = this.options.onHide ||
74 74
       function(element, update){ new Effect.Fade(update,{duration:0.15}) };
75 75
 
76  
-    if(typeof(this.options.tokens) == 'string') 
  76
+    if(typeof(this.options.tokens) == 'string')
77 77
       this.options.tokens = new Array(this.options.tokens);
78 78
     // Force carriage returns as token delimiters anyway
79 79
     if (!this.options.tokens.include('\n'))
80 80
       this.options.tokens.push('\n');
81 81
 
82 82
     this.observer = null;
83  
-    
  83
+
84 84
     this.element.setAttribute('autocomplete','off');
85 85
 
86 86
     Element.hide(this.update);
@@ -91,10 +91,10 @@ Autocompleter.Base = Class.create({
91 91
 
92 92
   show: function() {
93 93
     if(Element.getStyle(this.update, 'display')=='none') this.options.onShow(this.element, this.update);
94  
-    if(!this.iefix && 
  94
+    if(!this.iefix &&
95 95
       (Prototype.Browser.IE) &&
96 96
       (Element.getStyle(this.update, 'position')=='absolute')) {
97  
-      new Insertion.After(this.update, 
  97
+      new Insertion.After(this.update,
98 98
        '<iframe id="' + this.update.id + '_iefix" '+
99 99
        'style="display:none;position:absolute;filter:progid:DXImageTransform.Microsoft.Alpha(opacity=0);" ' +
100 100
        'src="javascript:false;" frameborder="0" scrolling="no"></iframe>');
@@ -102,7 +102,7 @@ Autocompleter.Base = Class.create({
102 102
     }
103 103
     if(this.iefix) setTimeout(this.fixIEOverlapping.bind(this), 50);
104 104
   },
105  
-  
  105
+
106 106
   fixIEOverlapping: function() {
107 107
     Position.clone(this.update, this.iefix, {setTop:(!this.update.style.height)});
108 108
     this.iefix.style.zIndex = 1;
@@ -150,15 +150,15 @@ Autocompleter.Base = Class.create({
150 150
          Event.stop(event);
151 151
          return;
152 152
       }
153  
-     else 
154  
-       if(event.keyCode==Event.KEY_TAB || event.keyCode==Event.KEY_RETURN || 
  153
+     else
  154
+       if(event.keyCode==Event.KEY_TAB || event.keyCode==Event.KEY_RETURN ||
155 155
          (Prototype.Browser.WebKit > 0 && event.keyCode == 0)) return;
156 156
 
157 157
     this.changed = true;
158 158
     this.hasFocus = true;
159 159
 
160 160
     if(this.observer) clearTimeout(this.observer);
161  
-      this.observer = 
  161
+      this.observer =
162 162
         setTimeout(this.onObserverEvent.bind(this), this.options.frequency*1000);
163 163
   },
164 164
 
@@ -170,35 +170,35 @@ Autocompleter.Base = Class.create({
170 170
 
171 171
   onHover: function(event) {
172 172
     var element = Event.findElement(event, 'LI');
173  
-    if(this.index != element.autocompleteIndex) 
  173
+    if(this.index != element.autocompleteIndex)
174 174
     {
175 175
         this.index = element.autocompleteIndex;
176 176
         this.render();
177 177
     }
178 178
     Event.stop(event);
179 179
   },
180  
-  
  180
+
181 181
   onClick: function(event) {
182 182
     var element = Event.findElement(event, 'LI');
183 183
     this.index = element.autocompleteIndex;
184 184
     this.selectEntry();
185 185
     this.hide();
186 186
   },
187  
-  
  187
+
188 188
   onBlur: function(event) {
189 189
     // needed to make click events working
190 190
     setTimeout(this.hide.bind(this), 250);
191 191
     this.hasFocus = false;
192  
-    this.active = false;     
193  
-  }, 
194  
-  
  192
+    this.active = false;
  193
+  },
  194
+
195 195
   render: function() {
196 196
     if(this.entryCount > 0) {
197 197
       for (var i = 0; i < this.entryCount; i++)
198  
-        this.index==i ? 
199  
-          Element.addClassName(this.getEntry(i),"selected") : 
  198
+        this.index==i ?
  199
+          Element.addClassName(this.getEntry(i),"selected") :
200 200
           Element.removeClassName(this.getEntry(i),"selected");
201  
-      if(this.hasFocus) { 
  201
+      if(this.hasFocus) {
202 202
         this.show();
203 203
         this.active = true;
204 204
       }
@@ -207,27 +207,27 @@ Autocompleter.Base = Class.create({
207 207
       this.hide();
208 208
     }
209 209
   },
210  
-  
  210
+
211 211
   markPrevious: function() {
212  
-    if(this.index > 0) this.index--
  212
+    if(this.index > 0) this.index--;
213 213
       else this.index = this.entryCount-1;
214 214
     this.getEntry(this.index).scrollIntoView(true);
215 215
   },
216  
-  
  216
+
217 217
   markNext: function() {
218  
-    if(this.index < this.entryCount-1) this.index++
  218
+    if(this.index < this.entryCount-1) this.index++;
219 219
       else this.index = 0;
220 220
     this.getEntry(this.index).scrollIntoView(false);
221 221
   },
222  
-  
  222
+
223 223
   getEntry: function(index) {
224 224
     return this.update.firstChild.childNodes[index];
225 225
   },
226  
-  
  226
+
227 227
   getCurrentEntry: function() {
228 228
     return this.getEntry(this.index);
229 229
   },
230  
-  
  230
+
231 231
   selectEntry: function() {
232 232
     this.active = false;
233 233
     this.updateElement(this.getCurrentEntry());
@@ -244,7 +244,7 @@ Autocompleter.Base = Class.create({
244 244
       if(nodes.length>0) value = Element.collectTextNodes(nodes[0], this.options.select);
245 245
     } else
246 246
       value = Element.collectTextNodesIgnoreClass(selectedElement, 'informal');
247  
-    
  247
+
248 248
     var bounds = this.getTokenBounds();
249 249
     if (bounds[0] != -1) {
250 250
       var newValue = this.element.value.substr(0, bounds[0]);
@@ -257,7 +257,7 @@ Autocompleter.Base = Class.create({
257 257
     }
258 258
     this.oldElementValue = this.element.value;
259 259
     this.element.focus();
260  
-    
  260
+
261 261
     if (this.options.afterUpdateElement)
262 262
       this.options.afterUpdateElement(this.element, selectedElement);
263 263
   },
@@ -269,20 +269,20 @@ Autocompleter.Base = Class.create({
269 269
       Element.cleanWhitespace(this.update.down());
270 270
 
271 271
       if(this.update.firstChild && this.update.down().childNodes) {
272  
-        this.entryCount = 
  272
+        this.entryCount =
273 273
           this.update.down().childNodes.length;
274 274
         for (var i = 0; i < this.entryCount; i++) {
275 275
           var entry = this.getEntry(i);
276 276
           entry.autocompleteIndex = i;
277 277
           this.addObservers(entry);
278 278
         }
279  
-      } else { 
  279
+      } else {
280 280
         this.entryCount = 0;
281 281
       }
282 282
 
283 283
       this.stopIndicator();
284 284
       this.index = 0;
285  
-      
  285
+
286 286
       if(this.entryCount==1 && this.options.autoSelect) {
287 287
         this.selectEntry();
288 288
         this.hide();
@@ -298,7 +298,7 @@ Autocompleter.Base = Class.create({
298 298
   },
299 299
 
300 300
   onObserverEvent: function() {
301  
-    this.changed = false;   
  301
+    this.changed = false;
302 302
     this.tokenBounds = null;
303 303
     if(this.getToken().length>=this.options.minChars) {
304 304
       this.getUpdatedChoices();
@@ -351,16 +351,16 @@ Ajax.Autocompleter = Class.create(Autocompleter.Base, {
351 351
 
352 352
   getUpdatedChoices: function() {
353 353
     this.startIndicator();
354  
-    
355  
-    var entry = encodeURIComponent(this.options.paramName) + '=' + 
  354
+
  355
+    var entry = encodeURIComponent(this.options.paramName) + '=' +
356 356
       encodeURIComponent(this.getToken());
357 357
 
358 358
     this.options.parameters = this.options.callback ?
359 359
       this.options.callback(this.element, entry) : entry;
360 360
 
361  
-    if(this.options.defaultParams) 
  361
+    if(this.options.defaultParams)
362 362
       this.options.parameters += '&' + this.options.defaultParams;
363  
-    
  363
+
364 364
     new Ajax.Request(this.url, this.options);
365 365
   },
366 366
 
@@ -382,7 +382,7 @@ Ajax.Autocompleter = Class.create(Autocompleter.Base, {
382 382
 // - choices - How many autocompletion choices to offer
383 383
 //
384 384
 // - partialSearch - If false, the autocompleter will match entered
385  
-//                    text only at the beginning of strings in the 
  385
+//                    text only at the beginning of strings in the
386 386
 //                    autocomplete array. Defaults to true, which will
387 387
 //                    match text at the beginning of any *word* in the
388 388
 //                    strings in the autocomplete array. If you want to
@@ -399,7 +399,7 @@ Ajax.Autocompleter = Class.create(Autocompleter.Base, {
399 399
 // - ignoreCase - Whether to ignore case when autocompleting.
400 400
 //                 Defaults to true.
401 401
 //
402  
-// It's possible to pass in a custom function as the 'selector' 
  402
+// It's possible to pass in a custom function as the 'selector'
403 403
 // option, if you prefer to write your own autocompletion logic.
404 404
 // In that case, the other options above will not apply unless
405 405
 // you support them.
@@ -427,20 +427,20 @@ Autocompleter.Local = Class.create(Autocompleter.Base, {
427 427
         var entry     = instance.getToken();
428 428
         var count     = 0;
429 429
 
430  
-        for (var i = 0; i < instance.options.array.length &&  
431  
-          ret.length < instance.options.choices ; i++) { 
  430
+        for (var i = 0; i < instance.options.array.length &&
  431
+          ret.length < instance.options.choices ; i++) {
432 432
 
433 433
           var elem = instance.options.array[i];
434  
-          var foundPos = instance.options.ignoreCase ? 
435  
-            elem.toLowerCase().indexOf(entry.toLowerCase()) : 
  434
+          var foundPos = instance.options.ignoreCase ?
  435
+            elem.toLowerCase().indexOf(entry.toLowerCase()) :
436 436
             elem.indexOf(entry);
437 437
 
438 438
           while (foundPos != -1) {
439  
-            if (foundPos == 0 && elem.length != entry.length) { 
440  
-              ret.push("<li><strong>" + elem.substr(0, entry.length) + "</strong>" + 
  439
+            if (foundPos == 0 && elem.length != entry.length) {
  440
+              ret.push("<li><strong>" + elem.substr(0, entry.length) + "</strong>" +
441 441
                 elem.substr(entry.length) + "</li>");
442 442
               break;
443  
-            } else if (entry.length >= instance.options.partialChars && 
  443
+            } else if (entry.length >= instance.options.partialChars &&
444 444
               instance.options.partialSearch && foundPos != -1) {
445 445
               if (instance.options.fullSearch || /\s/.test(elem.substr(foundPos-1,1))) {
446 446
                 partial.push("<li>" + elem.substr(0, foundPos) + "<strong>" +
@@ -450,14 +450,14 @@ Autocompleter.Local = Class.create(Autocompleter.Base, {
450 450
               }
451 451
             }
452 452
 
453  
-            foundPos = instance.options.ignoreCase ? 
454  
-              elem.toLowerCase().indexOf(entry.toLowerCase(), foundPos + 1) : 
  453
+            foundPos = instance.options.ignoreCase ?
  454
+              elem.toLowerCase().indexOf(entry.toLowerCase(), foundPos + 1) :
455 455
               elem.indexOf(entry, foundPos + 1);
456 456
 
457 457
           }
458 458
         }
459 459
         if (partial.length)
460  
-          ret = ret.concat(partial.slice(0, instance.options.choices - ret.length))
  460
+          ret = ret.concat(partial.slice(0, instance.options.choices - ret.length));
461 461
         return "<ul>" + ret.join('') + "</ul>";
462 462
       }
463 463
     }, options || { });
@@ -474,7 +474,7 @@ Field.scrollFreeActivate = function(field) {
474 474
   setTimeout(function() {
475 475
     Field.activate(field);
476 476
   }, 1);
477  
-}
  477
+};
478 478
 
479 479
 Ajax.InPlaceEditor = Class.create({
480 480
   initialize: function(element, url, options) {
@@ -604,7 +604,7 @@ Ajax.InPlaceEditor = Class.create({
604 604
     this.triggerCallback('onEnterHover');
605 605
   },
606 606
   getText: function() {
607  
-    return this.element.innerHTML;
  607
+    return this.element.innerHTML.unescapeHTML();
608 608
   },
609 609
   handleAJAXFailure: function(transport) {
610 610
     this.triggerCallback('onFailure', transport);
@@ -780,7 +780,7 @@ Ajax.InPlaceCollectionEditor = Class.create(Ajax.InPlaceEditor, {
780 780
       onSuccess: function(transport) {
781 781
         var js = transport.responseText.strip();
782 782
         if (!/^\[.*\]$/.test(js)) // TODO: improve sanity check
783  
-          throw 'Server returned an invalid collection representation.';
  783
+          throw('Server returned an invalid collection representation.');
784 784
         this._collection = eval(js);
785 785
         this.checkForExternalText();
786 786
       }.bind(this),
@@ -937,7 +937,7 @@ Ajax.InPlaceCollectionEditor.DefaultOptions = {
937 937
   loadingCollectionText: 'Loading options...'
938 938
 };
939 939
 
940  
-// Delayed observer, like Form.Element.Observer, 
  940
+// Delayed observer, like Form.Element.Observer,
941 941
 // but waits for delay after last key input
942 942
 // Ideal for live-search fields
943 943
 
@@ -947,7 +947,7 @@ Form.Element.DelayedObserver = Class.create({
947 947
     this.element   = $(element);
948 948
     this.callback  = callback;
949 949
     this.timer     = null;
950  
-    this.lastValue = $F(this.element); 
  950
+    this.lastValue = $F(this.element);
951 951
     Event.observe(this.element,'keyup',this.delayedListener.bindAsEventListener(this));
952 952
   },
953 953
   delayedListener: function(event) {
@@ -960,4 +960,4 @@ Form.Element.DelayedObserver = Class.create({
960 960
     this.timer = null;
961 961
     this.callback(this.element, $F(this.element));
962 962
   }
963  
-});
  963
+});
329  public/javascripts/dragdrop.js
... ...
@@ -1,6 +1,6 @@
1 1
 // Copyright (c) 2005-2008 Thomas Fuchs (http://script.aculo.us, http://mir.aculo.us)
2  
-//           (c) 2005-2007 Sammi Williams (http://www.oriontransfer.co.nz, sammi@oriontransfer.co.nz)
3  
-// 
  2
+//           (c) 2005-2008 Sammi Williams (http://www.oriontransfer.co.nz, sammi@oriontransfer.co.nz)
  3
+//
4 4
 // script.aculo.us is freely distributable under the terms of an MIT-style license.
5 5
 // For details, see the script.aculo.us web site: http://script.aculo.us/
6 6
 
@@ -32,7 +32,7 @@ var Droppables = {
32 32
         options._containers.push($(containment));
33 33
       }
34 34
     }
35  
-    
  35
+
36 36
     if(options.accept) options.accept = [options.accept].flatten();
37 37
 
38 38
     Element.makePositioned(element); // fix IE
@@ -40,34 +40,34 @@ var Droppables = {
40 40
 
41 41
     this.drops.push(options);
42 42
   },
43  
-  
  43
+
44 44
   findDeepestChild: function(drops) {
45 45
     deepest = drops[0];
46  
-      
  46
+
47 47
     for (i = 1; i < drops.length; ++i)
48 48
       if (Element.isParent(drops[i].element, deepest.element))
49 49
         deepest = drops[i];
50  
-    
  50
+
51 51
     return deepest;
52 52
   },
53 53
 
54 54
   isContained: function(element, drop) {
55 55
     var containmentNode;
56 56
     if(drop.tree) {
57  
-      containmentNode = element.treeNode; 
  57
+      containmentNode = element.treeNode;
58 58
     } else {
59 59
       containmentNode = element.parentNode;
60 60
     }
61 61
     return drop._containers.detect(function(c) { return containmentNode == c });
62 62
   },
63  
-  
  63
+
64 64
   isAffected: function(point, element, drop) {
65 65
     return (
66 66
       (drop.element!=element) &&
67 67
       ((!drop._containers) ||
68 68
         this.isContained(element, drop)) &&
69 69
       ((!drop.accept) ||
70  
-        (Element.classNames(element).detect( 
  70
+        (Element.classNames(element).detect(
71 71
           function(v) { return drop.accept.include(v) } ) )) &&
72 72
       Position.within(drop.element, point[0], point[1]) );
73 73
   },
@@ -87,12 +87,12 @@ var Droppables = {
87 87
   show: function(point, element) {
88 88
     if(!this.drops.length) return;
89 89
     var drop, affected = [];
90  
-    
  90
+
91 91
     this.drops.each( function(drop) {
92 92
       if(Droppables.isAffected(point, element, drop))
93 93
         affected.push(drop);
94 94
     });
95  
-        
  95
+
96 96
     if(affected.length>0)
97 97
       drop = Droppables.findDeepestChild(affected);
98 98
 
@@ -101,7 +101,7 @@ var Droppables = {
101 101
       Position.within(drop.element, point[0], point[1]);
102 102
       if(drop.onHover)
103 103
         drop.onHover(element, drop.element, Position.overlap(drop.overlap, drop.element));
104  
-      
  104
+
105 105
       if (drop != this.last_active) Droppables.activate(drop);
106 106
     }
107 107
   },
@@ -112,8 +112,8 @@ var Droppables = {
112 112
 
113 113
     if (this.isAffected([Event.pointerX(event), Event.pointerY(event)], element, this.last_active))
114 114
       if (this.last_active.onDrop) {
115  
-        this.last_active.onDrop(element, this.last_active.element, event); 
116  
-        return true; 
  115
+        this.last_active.onDrop(element, this.last_active.element, event);
  116
+        return true;
117 117
       }
118 118
   },
119 119
 
@@ -121,25 +121,25 @@ var Droppables = {
121 121
     if(this.last_active)
122 122
       this.deactivate(this.last_active);
123 123
   }
124  
-}
  124
+};
125 125
 
126 126
 var Draggables = {
127 127
   drags: [],
128 128
   observers: [],
129  
-  
  129
+
130 130
   register: function(draggable) {
131 131
     if(this.drags.length == 0) {
132 132
       this.eventMouseUp   = this.endDrag.bindAsEventListener(this);
133 133
       this.eventMouseMove = this.updateDrag.bindAsEventListener(this);
134 134
       this.eventKeypress  = this.keyPress.bindAsEventListener(this);
135  
-      
  135
+
136 136
       Event.observe(document, "mouseup", this.eventMouseUp);
137 137
       Event.observe(document, "mousemove", this.eventMouseMove);
138 138
       Event.observe(document, "keypress", this.eventKeypress);
139 139
     }
140 140
     this.drags.push(draggable);
141 141
   },
142  
-  
  142
+
143 143
   unregister: function(draggable) {
144 144
     this.drags = this.drags.reject(function(d) { return d==draggable });
145 145
     if(this.drags.length == 0) {
@@ -148,24 +148,24 @@ var Draggables = {
148 148
       Event.stopObserving(document, "keypress", this.eventKeypress);
149 149
     }
150 150
   },
151  
-  
  151
+
152 152
   activate: function(draggable) {
153  
-    if(draggable.options.delay) { 
154  
-      this._timeout = setTimeout(function() { 
155  
-        Draggables._timeout = null; 
156  
-        window.focus(); 
157  
-        Draggables.activeDraggable = draggable; 
158  
-      }.bind(this), draggable.options.delay); 
  153
+    if(draggable.options.delay) {
  154
+      this._timeout = setTimeout(function() {
  155
+        Draggables._timeout = null;
  156
+        window.focus();
  157
+        Draggables.activeDraggable = draggable;
  158
+      }.bind(this), draggable.options.delay);
159 159
     } else {
160 160
       window.focus(); // allows keypress events if window isn't currently focused, fails for Safari
161 161
       this.activeDraggable = draggable;
162 162
     }
163 163
   },
164  
-  
  164
+
165 165
   deactivate: function() {
166 166
     this.activeDraggable = null;
167 167
   },
168  
-  
  168
+
169 169
   updateDrag: function(event) {
170 170
     if(!this.activeDraggable) return;
171 171
     var pointer = [Event.pointerX(event), Event.pointerY(event)];
@@ -173,36 +173,36 @@ var Draggables = {
173 173
     // the same coordinates, prevent needless redrawing (moz bug?)
174 174
     if(this._lastPointer && (this._lastPointer.inspect() == pointer.inspect())) return;
175 175
     this._lastPointer = pointer;
176  
-    
  176
+
177 177
     this.activeDraggable.updateDrag(event, pointer);
178 178
   },
179  
-  
  179
+
180 180
   endDrag: function(event) {
181  
-    if(this._timeout) { 
182  
-      clearTimeout(this._timeout); 
183  
-      this._timeout = null; 
  181
+    if(this._timeout) {
  182
+      clearTimeout(this._timeout);
  183
+      this._timeout = null;
184 184
     }
185 185
     if(!this.activeDraggable) return;
186 186
     this._lastPointer = null;
187 187
     this.activeDraggable.endDrag(event);
188 188
     this.activeDraggable = null;
189 189
   },
190  
-  
  190
+
191 191
   keyPress: function(event) {
192 192
     if(this.activeDraggable)
193 193
       this.activeDraggable.keyPress(event);
194 194
   },
195  
-  
  195
+
196 196
   addObserver: function(observer) {
197 197
     this.observers.push(observer);
198 198
     this._cacheObserverCallbacks();
199 199
   },
200  
-  
  200
+
201 201
   removeObserver: function(element) {  // element instead of observer fixes mem leaks
202 202
     this.observers = this.observers.reject( function(o) { return o.element==element });
203 203
     this._cacheObserverCallbacks();
204 204
   },
205  
-  
  205
+
206 206
   notify: function(eventName, draggable, event) {  // 'onStart', 'onEnd', 'onDrag'
207 207
     if(this[eventName+'Count'] > 0)
208 208
       this.observers.each( function(o) {
@@ -210,7 +210,7 @@ var Draggables = {
210 210
       });
211 211
     if(draggable.options[eventName]) draggable.options[eventName](draggable, event);
212 212
   },
213  
-  
  213
+
214 214
   _cacheObserverCallbacks: function() {
215 215
     ['onStart','onEnd','onDrag'].each( function(eventName) {
216 216
       Draggables[eventName+'Count'] = Draggables.observers.select(
@@ -218,7 +218,7 @@ var Draggables = {
218 218
       ).length;
219 219
     });
220 220
   }
221  
-}
  221
+};
222 222
 
223 223
 /*--------------------------------------------------------------------------*/
224 224
 
@@ -234,12 +234,12 @@ var Draggable = Class.create({
234 234
       },
235 235
       endeffect: function(element) {
236 236
         var toOpacity = Object.isNumber(element._opacity) ? element._opacity : 1.0;
237  
-        new Effect.Opacity(element, {duration:0.2, from:0.7, to:toOpacity, 
  237
+        new Effect.Opacity(element, {duration:0.2, from:0.7, to:toOpacity,
238 238
           queue: {scope:'_draggable', position:'end'},
239  
-          afterFinish: function(){ 
240  
-            Draggable._dragging[element] = false 
  239
+          afterFinish: function(){
  240
+            Draggable._dragging[element] = false
241 241
           }
242  
-        }); 
  242
+        });
243 243
       },
244 244
       zindex: 1000,
245 245
       revert: false,
@@ -250,57 +250,57 @@ var Draggable = Class.create({
250 250
       snap: false,  // false, or xy or [x,y] or function(x,y){ return [x,y] }
251 251
       delay: 0
252 252
     };
253  
-    
  253
+
254 254
     if(!arguments[1] || Object.isUndefined(arguments[1].endeffect))
255 255
       Object.extend(defaults, {
256 256
         starteffect: function(element) {
257 257
           element._opacity = Element.getOpacity(element);
258 258
           Draggable._dragging[element] = true;
259  
-          new Effect.Opacity(element, {duration:0.2, from:element._opacity, to:0.7}); 
  259
+          new Effect.Opacity(element, {duration:0.2, from:element._opacity, to:0.7});
260 260
         }
261 261
       });
262  
-    
  262
+
263 263
     var options = Object.extend(defaults, arguments[1] || { });
264 264
 
265 265
     this.element = $(element);
266  
-    
  266
+
267 267
     if(options.handle && Object.isString(options.handle))
268 268
       this.handle = this.element.down('.'+options.handle, 0);
269  
-    
  269
+
270 270
     if(!this.handle) this.handle = $(options.handle);
271 271
     if(!this.handle) this.handle = this.element;
272  
-    
  272
+
273 273
     if(options.scroll && !options.scroll.scrollTo && !options.scroll.outerHTML) {
274 274
       options.scroll = $(options.scroll);
275 275
       this._isScrollChild = Element.childOf(this.element, options.scroll);
276 276
     }
277 277
 
278  
-    Element.makePositioned(this.element); // fix IE    
  278
+    Element.makePositioned(this.element); // fix IE
279 279
 
280 280
     this.options  = options;
281  
-    this.dragging = false;   
  281
+    this.dragging = false;
282 282
 
283 283
     this.eventMouseDown = this.initDrag.bindAsEventListener(this);
284 284
     Event.observe(this.handle, "mousedown", this.eventMouseDown);
285  
-    
  285
+
286 286
     Draggables.register(this);
287 287
   },
288  
-  
  288
+
289 289
   destroy: function() {
290 290
     Event.stopObserving(this.handle, "mousedown", this.eventMouseDown);
291 291
     Draggables.unregister(this);
292 292
   },
293  
-  
  293
+
294 294
   currentDelta: function() {
295 295
     return([
296 296
       parseInt(Element.getStyle(this.element,'left') || '0'),
297 297
       parseInt(Element.getStyle(this.element,'top') || '0')]);
298 298
   },
299  
-  
  299
+
300 300
   initDrag: function(event) {
301 301
     if(!Object.isUndefined(Draggable._dragging[this.element]) &&
302 302
       Draggable._dragging[this.element]) return;
303  
-    if(Event.isLeftClick(event)) {    
  303
+    if(Event.isLeftClick(event)) {
304 304
       // abort on form elements, fixes a Firefox issue
305 305
       var src = Event.element(event);
306 306
       if((tag_name = src.tagName.toUpperCase()) && (
@@ -309,34 +309,34 @@ var Draggable = Class.create({
309 309
         tag_name=='OPTION' ||
310 310
         tag_name=='BUTTON' ||
311 311
         tag_name=='TEXTAREA')) return;
312  
-        
  312
+
313 313
       var pointer = [Event.pointerX(event), Event.pointerY(event)];
314 314
       var pos     = Position.cumulativeOffset(this.element);
315 315
       this.offset = [0,1].map( function(i) { return (pointer[i] - pos[i]) });
316  
-      
  316
+
317 317
       Draggables.activate(this);
318 318
       Event.stop(event);
319 319
     }
320 320
   },
321  
-  
  321
+
322 322
   startDrag: function(event) {
323 323
     this.dragging = true;
324 324
     if(!this.delta)
325 325
       this.delta = this.currentDelta();
326  
-    
  326
+
327 327
     if(this.options.zindex) {
328 328
       this.originalZ = parseInt(Element.getStyle(this.element,'z-index') || 0);
329 329
       this.element.style.zIndex = this.options.zindex;
330 330
     }
331  
-    
  331
+
332 332
     if(this.options.ghosting) {
333 333
       this._clone = this.element.cloneNode(true);
334  
-      this.element._originallyAbsolute = (this.element.getStyle('position') == 'absolute');
335  
-      if (!this.element._originallyAbsolute)
  334
+      this._originallyAbsolute = (this.element.getStyle('position') == 'absolute');
  335
+      if (!this._originallyAbsolute)
336 336
         Position.absolutize(this.element);
337 337
       this.element.parentNode.insertBefore(this._clone, this.element);
338 338
     }
339  
-    
  339
+
340 340
     if(this.options.scroll) {
341 341
       if (this.options.scroll == window) {
342 342
         var where = this._getWindowScroll(this.options.scroll);
@@ -347,28 +347,28 @@ var Draggable = Class.create({
347 347
         this.originalScrollTop = this.options.scroll.scrollTop;
348 348
       }
349 349
     }
350  
-    
  350
+
351 351
     Draggables.notify('onStart', this, event);
352  
-        
  352
+
353 353
     if(this.options.starteffect) this.options.starteffect(this.element);
354 354
   },
355  
-  
  355
+
356 356
   updateDrag: function(event, pointer) {
357 357
     if(!this.dragging) this.startDrag(event);
358  
-    
  358
+
359 359
     if(!this.options.quiet){
360 360
       Position.prepare();
361 361
       Droppables.show(pointer, this.element);
362 362
     }
363  
-    
  363
+
364 364
     Draggables.notify('onDrag', this, event);
365  
-    
  365
+
366 366
     this.draw(pointer);
367 367
     if(this.options.change) this.options.change(this);
368  
-    
  368
+
369 369
     if(this.options.scroll) {
370 370
       this.stopScrolling();
371  
-      
  371
+
372 372
       var p;
373 373
       if (this.options.scroll == window) {
374 374
         with(this._getWindowScroll(this.options.scroll)) { p = [ left, top, left+width, top+height ]; }
@@ -386,16 +386,16 @@ var Draggable = Class.create({
386 386
       if(pointer[1] > (p[3]-this.options.scrollSensitivity)) speed[1] = pointer[1]-(p[3]-this.options.scrollSensitivity);
387 387
       this.startScrolling(speed);
388 388
     }
389  
-    
  389
+
390 390
     // fix AppleWebKit rendering
391 391
     if(Prototype.Browser.WebKit) window.scrollBy(0,0);
392  
-    
  392
+
393 393
     Event.stop(event);
394 394
   },
395  
-  
  395
+
396 396
   finishDrag: function(event, success) {
397 397
     this.dragging = false;
398  
-    
  398
+
399 399
     if(this.options.quiet){
400 400
       Position.prepare();
401 401
       var pointer = [Event.pointerX(event), Event.pointerY(event)];
@@ -403,24 +403,24 @@ var Draggable = Class.create({
403 403
     }
404 404
 
405 405
     if(this.options.ghosting) {
406  
-      if (!this.element._originallyAbsolute)
  406
+      if (!this._originallyAbsolute)
407 407
         Position.relativize(this.element);
408  
-      delete this.element._originallyAbsolute;
  408
+      delete this._originallyAbsolute;
409 409
       Element.remove(this._clone);
410 410
       this._clone = null;
411 411
     }
412 412
 
413  
-    var dropped = false; 
414  
-    if(success) { 
415  
-      dropped = Droppables.fire(event, this.element); 
416  
-      if (!dropped) dropped = false; 
  413
+    var dropped = false;
  414
+    if(success) {
  415
+      dropped = Droppables.fire(event, this.element);
  416
+      if (!dropped) dropped = false;
417 417
     }
418 418
     if(dropped && this.options.onDropped) this.options.onDropped(this.element);
419 419
     Draggables.notify('onEnd', this, event);
420 420
 
421 421
     var revert = this.options.revert;
422 422
     if(revert && Object.isFunction(revert)) revert = revert(this.element);
423  
-    
  423
+
424 424
     var d = this.currentDelta();
425 425
     if(revert && this.options.reverteffect) {
426 426
       if (dropped == 0 || revert != 'failure')
@@ -433,67 +433,67 @@ var Draggable = Class.create({
433 433
     if(this.options.zindex)
434 434
       this.element.style.zIndex = this.originalZ;
435 435
 
436  
-    if(this.options.endeffect) 
  436
+    if(this.options.endeffect)
437 437
       this.options.endeffect(this.element);
438  
-      
  438
+
439 439
     Draggables.deactivate(this);
440 440
     Droppables.reset();
441 441
   },
442  
-  
  442
+
443 443
   keyPress: function(event) {
444 444
     if(event.keyCode!=Event.KEY_ESC) return;
445 445
     this.finishDrag(event, false);
446 446
     Event.stop(event);