sproutcore 1.7.1.beta → 1.8.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (445) hide show
  1. data/CHANGELOG +44 -0
  2. data/README.rdoc +20 -20
  3. data/VERSION.yml +3 -3
  4. data/lib/Buildfile +1 -1
  5. data/lib/buildtasks/build.rake +5 -0
  6. data/lib/buildtasks/manifest.rake +19 -1
  7. data/lib/frameworks/sproutcore/Buildfile +19 -17
  8. data/lib/frameworks/sproutcore/CHANGELOG.md +163 -29
  9. data/lib/frameworks/sproutcore/README.md +29 -8
  10. data/lib/frameworks/sproutcore/apps/statechart_routing/Buildfile +12 -0
  11. data/lib/frameworks/sproutcore/apps/statechart_routing/controllers/login_controller.js +11 -0
  12. data/lib/frameworks/sproutcore/apps/statechart_routing/controllers/main_controller.js +7 -0
  13. data/lib/frameworks/sproutcore/apps/statechart_routing/controllers/statechart_controller.js +17 -0
  14. data/lib/frameworks/sproutcore/apps/statechart_routing/core.js +25 -0
  15. data/lib/frameworks/sproutcore/apps/statechart_routing/main.js +15 -0
  16. data/lib/frameworks/sproutcore/apps/statechart_routing/resources/_theme.css +18 -0
  17. data/lib/frameworks/sproutcore/apps/statechart_routing/resources/bar_page.js +14 -0
  18. data/lib/frameworks/sproutcore/apps/statechart_routing/resources/foo_page.js +14 -0
  19. data/lib/frameworks/sproutcore/apps/statechart_routing/resources/loading.rhtml +9 -0
  20. data/lib/frameworks/sproutcore/apps/statechart_routing/resources/login_page.js +61 -0
  21. data/lib/frameworks/sproutcore/apps/statechart_routing/resources/main_page.js +46 -0
  22. data/lib/frameworks/sproutcore/apps/statechart_routing/statechart.js +76 -0
  23. data/lib/frameworks/sproutcore/apps/statechart_routing/theme.js +27 -0
  24. data/lib/frameworks/sproutcore/apps/tests/controllers/targets.js +1 -1
  25. data/lib/frameworks/sproutcore/apps/tests/states/no_targets.js +1 -1
  26. data/lib/frameworks/sproutcore/apps/tests/states/ready_detail.js +1 -1
  27. data/lib/frameworks/sproutcore/apps/tests/states/ready_empty.js +1 -1
  28. data/lib/frameworks/sproutcore/apps/tests/states/ready_list.js +1 -1
  29. data/lib/frameworks/sproutcore/apps/tests/states/ready_no_tests.js +1 -1
  30. data/lib/frameworks/sproutcore/apps/welcome/controllers/targets.js +1 -1
  31. data/lib/frameworks/sproutcore/frameworks/ajax/system/request.js +14 -1
  32. data/lib/frameworks/sproutcore/frameworks/ajax/system/response.js +15 -15
  33. data/lib/frameworks/sproutcore/frameworks/ajax/tests/system/request.js +1 -1
  34. data/lib/frameworks/sproutcore/frameworks/animation/core.js +8 -5
  35. data/lib/frameworks/sproutcore/frameworks/bootstrap/system/browser.js +302 -70
  36. data/lib/frameworks/sproutcore/frameworks/bootstrap/system/loader.js +19 -14
  37. data/lib/frameworks/sproutcore/frameworks/bootstrap/tests/system/browser.js +471 -149
  38. data/lib/frameworks/sproutcore/frameworks/core_foundation/controllers/array.js +3 -3
  39. data/lib/frameworks/sproutcore/frameworks/core_foundation/ext/object.js +42 -0
  40. data/lib/frameworks/sproutcore/frameworks/core_foundation/ext/run_loop.js +3 -2
  41. data/lib/frameworks/sproutcore/frameworks/core_foundation/ext/string.js +7 -0
  42. data/lib/frameworks/sproutcore/frameworks/core_foundation/mixins/action_support.js +1 -1
  43. data/lib/frameworks/sproutcore/frameworks/core_foundation/mixins/delegate_support.js +2 -2
  44. data/lib/frameworks/sproutcore/frameworks/core_foundation/mixins/responder_context.js +3 -3
  45. data/lib/frameworks/sproutcore/frameworks/core_foundation/mixins/selection_support.js +1 -1
  46. data/lib/frameworks/sproutcore/frameworks/core_foundation/panes/body_overflow.js +63 -0
  47. data/lib/frameworks/sproutcore/frameworks/core_foundation/panes/keyboard.js +1 -1
  48. data/lib/frameworks/sproutcore/frameworks/core_foundation/panes/layout.js +37 -2
  49. data/lib/frameworks/sproutcore/frameworks/core_foundation/panes/main.js +28 -6
  50. data/lib/frameworks/sproutcore/frameworks/core_foundation/panes/pane.js +10 -3
  51. data/lib/frameworks/sproutcore/frameworks/core_foundation/protocols/sparse_array_delegate.js +2 -2
  52. data/lib/frameworks/sproutcore/frameworks/core_foundation/system/browser.js +66 -2
  53. data/lib/frameworks/sproutcore/frameworks/core_foundation/system/builder.js +1 -1
  54. data/lib/frameworks/sproutcore/frameworks/core_foundation/system/cursor.js +1 -1
  55. data/lib/frameworks/sproutcore/frameworks/core_foundation/system/event.js +58 -57
  56. data/lib/frameworks/sproutcore/frameworks/core_foundation/system/locale.js +1 -1
  57. data/lib/frameworks/sproutcore/frameworks/core_foundation/system/locale.js.orig +445 -0
  58. data/lib/frameworks/sproutcore/frameworks/core_foundation/system/platform.js +51 -31
  59. data/lib/frameworks/sproutcore/frameworks/core_foundation/system/ready.js +5 -1
  60. data/lib/frameworks/sproutcore/frameworks/core_foundation/system/render_context.js +53 -69
  61. data/lib/frameworks/sproutcore/frameworks/core_foundation/system/responder.js +1 -1
  62. data/lib/frameworks/sproutcore/frameworks/core_foundation/system/root_responder.js +98 -72
  63. data/lib/frameworks/sproutcore/frameworks/core_foundation/system/string.js +37 -3
  64. data/lib/frameworks/sproutcore/frameworks/core_foundation/system/timer.js +7 -4
  65. data/lib/frameworks/sproutcore/frameworks/core_foundation/tests/controllers/array/array_case.js +21 -0
  66. data/lib/frameworks/sproutcore/frameworks/core_foundation/tests/controllers/object/content_destroyed.js +7 -7
  67. data/lib/frameworks/sproutcore/frameworks/core_foundation/tests/mixins/string.js +23 -1
  68. data/lib/frameworks/sproutcore/frameworks/core_foundation/tests/system/browser.js +66 -0
  69. data/lib/frameworks/sproutcore/frameworks/core_foundation/tests/system/event.js +22 -0
  70. data/lib/frameworks/sproutcore/frameworks/core_foundation/tests/system/locale.js +11 -11
  71. data/lib/frameworks/sproutcore/frameworks/core_foundation/tests/system/render_context/end.js +4 -4
  72. data/lib/frameworks/sproutcore/frameworks/core_foundation/tests/system/render_context/escape_html.js +41 -0
  73. data/lib/frameworks/sproutcore/frameworks/core_foundation/tests/system/render_context/helpers_className.js +1 -1
  74. data/lib/frameworks/sproutcore/frameworks/core_foundation/tests/system/render_context/helpers_style.js +8 -8
  75. data/lib/frameworks/sproutcore/frameworks/core_foundation/tests/system/render_context/update.js +17 -16
  76. data/lib/frameworks/sproutcore/frameworks/core_foundation/tests/system/selection_set/remove.js +1 -1
  77. data/lib/frameworks/sproutcore/frameworks/core_foundation/tests/views/view/build_children.js +1 -1
  78. data/lib/frameworks/sproutcore/frameworks/core_foundation/tests/views/view/class_name_bindings_test.js +15 -0
  79. data/lib/frameworks/sproutcore/frameworks/core_foundation/tests/views/view/createChildViews.js +5 -5
  80. data/lib/frameworks/sproutcore/frameworks/core_foundation/views/view.js +50 -30
  81. data/lib/frameworks/sproutcore/frameworks/core_foundation/views/view/acceleration.js +46 -0
  82. data/lib/frameworks/sproutcore/frameworks/core_foundation/views/view/animation.js +1 -43
  83. data/lib/frameworks/sproutcore/frameworks/core_foundation/views/view/keyboard.js +8 -34
  84. data/lib/frameworks/sproutcore/frameworks/core_foundation/views/view/layout.js +3 -2
  85. data/lib/frameworks/sproutcore/frameworks/core_foundation/views/view/layout_style.js +10 -1
  86. data/lib/frameworks/sproutcore/frameworks/core_foundation/views/view/manipulation.js +6 -5
  87. data/lib/frameworks/sproutcore/frameworks/core_foundation/views/view/theming.js +22 -2
  88. data/lib/frameworks/sproutcore/frameworks/datastore/data_sources/data_source.js +2 -2
  89. data/lib/frameworks/sproutcore/frameworks/datastore/mixins/relationship_support.js +1 -1
  90. data/lib/frameworks/sproutcore/frameworks/datastore/models/child_attribute.js +0 -2
  91. data/lib/frameworks/sproutcore/frameworks/datastore/models/children_attribute.js +35 -0
  92. data/lib/frameworks/sproutcore/frameworks/datastore/models/record.js +46 -19
  93. data/lib/frameworks/sproutcore/frameworks/datastore/models/record_attribute.js +23 -9
  94. data/lib/frameworks/sproutcore/frameworks/datastore/models/single_attribute.js +2 -3
  95. data/lib/frameworks/sproutcore/frameworks/datastore/system/many_array.js +1 -1
  96. data/lib/frameworks/sproutcore/frameworks/datastore/system/nested_store.js +2 -2
  97. data/lib/frameworks/sproutcore/frameworks/datastore/system/query.js +294 -302
  98. data/lib/frameworks/sproutcore/frameworks/datastore/system/query.js.orig +1531 -0
  99. data/lib/frameworks/sproutcore/frameworks/datastore/system/record_array.js +4 -2
  100. data/lib/frameworks/sproutcore/frameworks/datastore/system/store.js +14 -11
  101. data/lib/frameworks/sproutcore/frameworks/datastore/tests/integration/many_array.js +63 -0
  102. data/lib/frameworks/sproutcore/frameworks/datastore/tests/models/many_attribute.js +1 -1
  103. data/lib/frameworks/sproutcore/frameworks/datastore/tests/models/nested_records/nested_record.js +4 -4
  104. data/lib/frameworks/sproutcore/frameworks/datastore/tests/models/nested_records/nested_record_array.js +50 -10
  105. data/lib/frameworks/sproutcore/frameworks/datastore/tests/models/nested_records/nested_record_array_complex.js +4 -4
  106. data/lib/frameworks/sproutcore/frameworks/datastore/tests/models/nested_records/nested_record_complex.js +3 -3
  107. data/lib/frameworks/sproutcore/frameworks/datastore/tests/models/record/destroy.js +1 -1
  108. data/lib/frameworks/sproutcore/frameworks/datastore/tests/models/record/refresh.js +1 -1
  109. data/lib/frameworks/sproutcore/frameworks/datastore/tests/models/record_attribute.js +1 -1
  110. data/lib/frameworks/sproutcore/frameworks/datastore/tests/models/single_attribute.js +114 -67
  111. data/lib/frameworks/sproutcore/frameworks/datastore/tests/system/nested_store/commitChangesFromNestedStore.js +1 -1
  112. data/lib/frameworks/sproutcore/frameworks/datastore/tests/system/nested_store/readDataHash.js +1 -1
  113. data/lib/frameworks/sproutcore/frameworks/datastore/tests/system/query/compare.js +54 -1
  114. data/lib/frameworks/sproutcore/frameworks/datastore/tests/system/query/evaluation.js +29 -9
  115. data/lib/frameworks/sproutcore/frameworks/datastore/tests/system/query/parse.js +1 -1
  116. data/lib/frameworks/sproutcore/frameworks/datastore/tests/system/record_array/core_methods.js +1 -1
  117. data/lib/frameworks/sproutcore/frameworks/datastore/tests/system/record_array/flush.js +1 -1
  118. data/lib/frameworks/sproutcore/frameworks/datastore/tests/system/store/cancelRecord.js +1 -1
  119. data/lib/frameworks/sproutcore/frameworks/datastore/tests/system/store/commitChangesFromNestedStore.js +1 -1
  120. data/lib/frameworks/sproutcore/frameworks/datastore/tests/system/store/commitRecord.js +37 -45
  121. data/lib/frameworks/sproutcore/frameworks/datastore/tests/system/store/find.js +127 -127
  122. data/lib/frameworks/sproutcore/frameworks/datastore/tests/system/store/pushChanges.js +16 -0
  123. data/lib/frameworks/sproutcore/frameworks/datastore/tests/system/store/pushRelationships.js +42 -4
  124. data/lib/frameworks/sproutcore/frameworks/datastore/tests/system/store/readDataHash.js +1 -1
  125. data/lib/frameworks/sproutcore/frameworks/datetime/frameworks/core/system/datetime.js +13 -7
  126. data/lib/frameworks/sproutcore/frameworks/datetime/frameworks/core/tests/system/datetime.js +8 -0
  127. data/lib/frameworks/sproutcore/frameworks/datetime/frameworks/localized/resources/strings.js +2 -1
  128. data/lib/frameworks/sproutcore/frameworks/datetime/frameworks/localized/system/datetime.js +1 -0
  129. data/lib/frameworks/sproutcore/frameworks/debug/core.js +3 -3
  130. data/lib/frameworks/sproutcore/frameworks/desktop/core.js +1 -1
  131. data/lib/frameworks/sproutcore/frameworks/desktop/mixins/collection_row_delegate.js +1 -1
  132. data/lib/frameworks/sproutcore/frameworks/desktop/mixins/collection_view_delegate.js +1 -1
  133. data/lib/frameworks/sproutcore/frameworks/desktop/panes/alert.js +1 -4
  134. data/lib/frameworks/sproutcore/frameworks/desktop/panes/menu.js +19 -6
  135. data/lib/frameworks/sproutcore/frameworks/desktop/panes/modal.js +30 -1
  136. data/lib/frameworks/sproutcore/frameworks/desktop/panes/palette.js +1 -1
  137. data/lib/frameworks/sproutcore/frameworks/desktop/panes/panel.js +24 -1
  138. data/lib/frameworks/sproutcore/frameworks/desktop/panes/picker.js +121 -28
  139. data/lib/frameworks/sproutcore/frameworks/desktop/panes/sheet.js +15 -15
  140. data/lib/frameworks/sproutcore/frameworks/desktop/protocols/drag_data_source.js +1 -1
  141. data/lib/frameworks/sproutcore/frameworks/desktop/protocols/drop_target.js +2 -2
  142. data/lib/frameworks/sproutcore/frameworks/desktop/protocols/responder.js +2 -2
  143. data/lib/frameworks/sproutcore/frameworks/desktop/render_delegates/button.js +39 -15
  144. data/lib/frameworks/sproutcore/frameworks/desktop/render_delegates/collection.js +3 -3
  145. data/lib/frameworks/sproutcore/frameworks/desktop/render_delegates/disclosure.js +2 -2
  146. data/lib/frameworks/sproutcore/frameworks/desktop/render_delegates/image_button.js +2 -2
  147. data/lib/frameworks/sproutcore/frameworks/desktop/render_delegates/panel.js +14 -6
  148. data/lib/frameworks/sproutcore/frameworks/desktop/render_delegates/popup_button.js +3 -3
  149. data/lib/frameworks/sproutcore/frameworks/desktop/render_delegates/progress.js +11 -11
  150. data/lib/frameworks/sproutcore/frameworks/desktop/render_delegates/segment.js +4 -3
  151. data/lib/frameworks/sproutcore/frameworks/desktop/render_delegates/segmented.js +1 -51
  152. data/lib/frameworks/sproutcore/frameworks/desktop/render_delegates/slider.js +11 -16
  153. data/lib/frameworks/sproutcore/frameworks/desktop/resources/images/icons/sc-icon-error-48.png +0 -0
  154. data/lib/frameworks/sproutcore/frameworks/desktop/resources/slider.css +0 -2
  155. data/lib/frameworks/sproutcore/frameworks/desktop/system/drag.js +3 -3
  156. data/lib/frameworks/sproutcore/frameworks/desktop/system/undo_manager.js +3 -3
  157. data/lib/frameworks/sproutcore/frameworks/desktop/tests/panes/alert/ui.js +9 -9
  158. data/lib/frameworks/sproutcore/frameworks/desktop/tests/views/button/content.js +11 -11
  159. data/lib/frameworks/sproutcore/frameworks/desktop/tests/views/button/ui.js +2 -1
  160. data/lib/frameworks/sproutcore/frameworks/desktop/tests/views/collection/reload.js +1 -1
  161. data/lib/frameworks/sproutcore/frameworks/desktop/tests/views/date_field/ui.js +107 -81
  162. data/lib/frameworks/sproutcore/frameworks/desktop/tests/views/list/rowDelegate.js +3 -3
  163. data/lib/frameworks/sproutcore/frameworks/desktop/tests/views/progress/ui.js +68 -60
  164. data/lib/frameworks/sproutcore/frameworks/desktop/tests/views/radio/methods.js +57 -12
  165. data/lib/frameworks/sproutcore/frameworks/desktop/tests/views/scroll/integration.js +21 -19
  166. data/lib/frameworks/sproutcore/frameworks/desktop/tests/views/scroller.js +5 -0
  167. data/lib/frameworks/sproutcore/frameworks/desktop/tests/views/segmented/ui.js +2 -2
  168. data/lib/frameworks/sproutcore/frameworks/desktop/tests/views/select/ui.js +32 -3
  169. data/lib/frameworks/sproutcore/frameworks/desktop/tests/views/split/methods.js +12 -0
  170. data/lib/frameworks/sproutcore/frameworks/desktop/tests/views/stacked/ui_comments.js +12 -0
  171. data/lib/frameworks/sproutcore/frameworks/desktop/tests/views/tab/methods.js +0 -8
  172. data/lib/frameworks/sproutcore/frameworks/desktop/views/button.js +77 -132
  173. data/lib/frameworks/sproutcore/frameworks/desktop/views/checkbox.js +5 -6
  174. data/lib/frameworks/sproutcore/frameworks/desktop/views/collection.js +16 -15
  175. data/lib/frameworks/sproutcore/frameworks/desktop/views/date_field.js +52 -52
  176. data/lib/frameworks/sproutcore/frameworks/desktop/views/disclosure.js +1 -1
  177. data/lib/frameworks/sproutcore/frameworks/desktop/views/grid.js +1 -1
  178. data/lib/frameworks/sproutcore/frameworks/desktop/views/list.js +147 -147
  179. data/lib/frameworks/sproutcore/frameworks/desktop/views/list_item.js +11 -2
  180. data/lib/frameworks/sproutcore/frameworks/desktop/views/menu_item.js +2 -2
  181. data/lib/frameworks/sproutcore/frameworks/desktop/views/menu_scroll.js +5 -5
  182. data/lib/frameworks/sproutcore/frameworks/desktop/views/popup_button.js +22 -12
  183. data/lib/frameworks/sproutcore/frameworks/desktop/views/radio.js +13 -7
  184. data/lib/frameworks/sproutcore/frameworks/desktop/views/scene.js +2 -2
  185. data/lib/frameworks/sproutcore/frameworks/desktop/views/scroll.js +462 -441
  186. data/lib/frameworks/sproutcore/frameworks/desktop/views/scroller.js +48 -62
  187. data/lib/frameworks/sproutcore/frameworks/desktop/views/segment.js +22 -2
  188. data/lib/frameworks/sproutcore/frameworks/desktop/views/segmented.js +150 -32
  189. data/lib/frameworks/sproutcore/frameworks/desktop/views/select.js +104 -45
  190. data/lib/frameworks/sproutcore/frameworks/desktop/views/select_button.js +42 -20
  191. data/lib/frameworks/sproutcore/frameworks/desktop/views/slider.js +24 -24
  192. data/lib/frameworks/sproutcore/frameworks/desktop/views/split.js +148 -154
  193. data/lib/frameworks/sproutcore/frameworks/desktop/views/stacked.js +2 -2
  194. data/lib/frameworks/sproutcore/frameworks/desktop/views/static_content.js +2 -2
  195. data/lib/frameworks/sproutcore/frameworks/desktop/views/tab.js +8 -7
  196. data/lib/frameworks/sproutcore/frameworks/desktop/views/web.js +2 -2
  197. data/lib/frameworks/sproutcore/frameworks/experimental/Buildfile +2 -0
  198. data/lib/frameworks/sproutcore/frameworks/experimental/apps/greenhouse/controllers/files.js +1 -1
  199. data/lib/frameworks/sproutcore/frameworks/experimental/apps/greenhouse/controllers/library.js +1 -1
  200. data/lib/frameworks/sproutcore/frameworks/experimental/apps/greenhouse/controllers/targets.js +1 -1
  201. data/lib/frameworks/sproutcore/frameworks/experimental/apps/greenhouse/controllers/view_configs.js +1 -1
  202. data/lib/frameworks/sproutcore/frameworks/experimental/apps/greenhouse/mixins/drop_down.js +1 -1
  203. data/lib/frameworks/sproutcore/frameworks/experimental/apps/greenhouse/states/ready.js +1 -1
  204. data/lib/frameworks/sproutcore/frameworks/experimental/apps/greenhouse/views/plist_item.js +1 -1
  205. data/lib/frameworks/sproutcore/frameworks/experimental/apps/greenhouse/views/web.js +1 -1
  206. data/lib/frameworks/sproutcore/frameworks/experimental/frameworks/designer/controllers/page_design.js +2 -2
  207. data/lib/frameworks/sproutcore/frameworks/experimental/frameworks/designer/css/css_style_sheet.js +2 -2
  208. data/lib/frameworks/sproutcore/frameworks/experimental/frameworks/designer/designers/object_designer.js +1 -1
  209. data/lib/frameworks/sproutcore/frameworks/experimental/frameworks/designer/designers/view_designer.js +2 -2
  210. data/lib/frameworks/sproutcore/frameworks/experimental/frameworks/designer/mixins/snap_lines.js +3 -3
  211. data/lib/frameworks/sproutcore/frameworks/experimental/frameworks/designer/views/designer_drop_target.js +1 -1
  212. data/lib/frameworks/sproutcore/frameworks/experimental/frameworks/designer/views/drawing.js +21 -21
  213. data/lib/frameworks/sproutcore/frameworks/experimental/frameworks/designer/views/page_item_view.js +1 -1
  214. data/lib/frameworks/sproutcore/frameworks/experimental/frameworks/forms/views/form.js +59 -53
  215. data/lib/frameworks/sproutcore/frameworks/experimental/frameworks/menu/views/menu/scroll.js +2 -2
  216. data/lib/frameworks/sproutcore/frameworks/experimental/frameworks/polymorphism/tests/models/polymorphism/simple.js +1 -1
  217. data/lib/frameworks/sproutcore/frameworks/experimental/frameworks/scroll_view/views/core_scroll.js +6 -6
  218. data/lib/frameworks/sproutcore/frameworks/experimental/frameworks/scroll_view/views/desktop/scroll.js +2 -2
  219. data/lib/frameworks/sproutcore/frameworks/experimental/frameworks/scroll_view/views/touch/scroll.js +2 -2
  220. data/lib/frameworks/sproutcore/frameworks/experimental/frameworks/select_view/ext/menu.js +14 -10
  221. data/lib/frameworks/sproutcore/frameworks/experimental/frameworks/select_view/ext/menu_item.js +17 -6
  222. data/lib/frameworks/sproutcore/frameworks/experimental/frameworks/select_view/views/popup_button.js +38 -14
  223. data/lib/frameworks/sproutcore/frameworks/experimental/frameworks/select_view/views/select.js +5 -13
  224. data/lib/frameworks/sproutcore/frameworks/experimental/frameworks/split_view/mixins/split_child.js +1 -1
  225. data/lib/frameworks/sproutcore/frameworks/experimental/frameworks/split_view/mixins/split_thumb.js +5 -3
  226. data/lib/frameworks/sproutcore/frameworks/experimental/frameworks/split_view/tests/children.js +19 -0
  227. data/lib/frameworks/sproutcore/frameworks/experimental/frameworks/split_view/tests/methods.js +20 -2
  228. data/lib/frameworks/sproutcore/frameworks/experimental/frameworks/split_view/tests/split_thumb.js +1 -1
  229. data/lib/frameworks/sproutcore/frameworks/experimental/frameworks/split_view/views/split.js +35 -12
  230. data/lib/frameworks/sproutcore/frameworks/formatters/README +6 -0
  231. data/lib/frameworks/sproutcore/frameworks/formatters/english.lproj/strings.js +174 -0
  232. data/lib/frameworks/sproutcore/frameworks/formatters/formatters/date_formatter.js +351 -0
  233. data/lib/frameworks/sproutcore/frameworks/formatters/tests/date_formatter.js +517 -0
  234. data/lib/frameworks/sproutcore/frameworks/foundation/core.js +1 -1
  235. data/lib/frameworks/sproutcore/frameworks/foundation/mixins/auto_resize.js +345 -138
  236. data/lib/frameworks/sproutcore/frameworks/foundation/mixins/button.js +5 -3
  237. data/lib/frameworks/sproutcore/frameworks/foundation/mixins/content_value_support.js +176 -42
  238. data/lib/frameworks/sproutcore/frameworks/foundation/mixins/editable.js +1 -1
  239. data/lib/frameworks/sproutcore/frameworks/foundation/mixins/flowed_layout.js +137 -105
  240. data/lib/frameworks/sproutcore/frameworks/foundation/mixins/gestureable.js +2 -2
  241. data/lib/frameworks/sproutcore/frameworks/foundation/mixins/inline_editable.js +2 -2
  242. data/lib/frameworks/sproutcore/frameworks/foundation/mixins/inline_editor.js +16 -1
  243. data/lib/frameworks/sproutcore/frameworks/foundation/mixins/static_layout.js +1 -1
  244. data/lib/frameworks/sproutcore/frameworks/foundation/mixins/validatable.js +47 -47
  245. data/lib/frameworks/sproutcore/frameworks/foundation/private/tree_item_observer.js +3 -3
  246. data/lib/frameworks/sproutcore/frameworks/foundation/render_delegates/helpers/sizing.js +1 -1
  247. data/lib/frameworks/sproutcore/frameworks/foundation/render_delegates/label.js +28 -6
  248. data/lib/frameworks/sproutcore/frameworks/foundation/render_delegates/render_delegate.js +1 -1
  249. data/lib/frameworks/sproutcore/frameworks/foundation/resources/benchmark.css +0 -5
  250. data/lib/frameworks/sproutcore/frameworks/foundation/resources/bootstrap.rhtml +34 -19
  251. data/lib/frameworks/sproutcore/frameworks/foundation/resources/button_view.css +0 -2
  252. data/lib/frameworks/sproutcore/frameworks/foundation/resources/label.css +1 -5
  253. data/lib/frameworks/sproutcore/frameworks/foundation/resources/text_field.css +8 -9
  254. data/lib/frameworks/sproutcore/frameworks/foundation/system/benchmark.js +2 -2
  255. data/lib/frameworks/sproutcore/frameworks/foundation/system/module.js +179 -47
  256. data/lib/frameworks/sproutcore/frameworks/foundation/system/task_queue.js +34 -1
  257. data/lib/frameworks/sproutcore/frameworks/foundation/system/text_selection.js +1 -1
  258. data/lib/frameworks/sproutcore/frameworks/foundation/system/user_defaults.js +26 -12
  259. data/lib/frameworks/sproutcore/frameworks/foundation/system/utils/misc.js +7 -7
  260. data/lib/frameworks/sproutcore/frameworks/foundation/system/utils/string_measurement.js +12 -4
  261. data/lib/frameworks/sproutcore/frameworks/foundation/system/utils/string_metric_optimization.js +202 -0
  262. data/lib/frameworks/sproutcore/frameworks/foundation/tests/mixins/content_value_support/content.js +77 -8
  263. data/lib/frameworks/sproutcore/frameworks/foundation/tests/mixins/flowed_layout/tests.js +1 -0
  264. data/lib/frameworks/sproutcore/frameworks/foundation/tests/mixins/inline_editable/beginEditing.js +2 -2
  265. data/lib/frameworks/sproutcore/frameworks/foundation/tests/mixins/inline_editable/commitEditing.js +4 -3
  266. data/lib/frameworks/sproutcore/frameworks/foundation/tests/mixins/inline_editable/discardEditing.js +4 -2
  267. data/lib/frameworks/sproutcore/frameworks/foundation/tests/mixins/inline_editor/beginEditing.js +2 -2
  268. data/lib/frameworks/sproutcore/frameworks/foundation/tests/mixins/inline_editor/commitEditing.js +4 -2
  269. data/lib/frameworks/sproutcore/frameworks/foundation/tests/mixins/inline_editor/discardEditing.js +4 -2
  270. data/lib/frameworks/sproutcore/frameworks/foundation/tests/system/utils/pointInElement.js +2 -2
  271. data/lib/frameworks/sproutcore/frameworks/foundation/tests/views/label/ui.js +0 -8
  272. data/lib/frameworks/sproutcore/frameworks/foundation/tests/views/text_field/ui.js +163 -149
  273. data/lib/frameworks/sproutcore/frameworks/foundation/validators/credit_card.js +1 -1
  274. data/lib/frameworks/sproutcore/frameworks/foundation/validators/date.js +1 -1
  275. data/lib/frameworks/sproutcore/frameworks/foundation/validators/date_time.js +1 -1
  276. data/lib/frameworks/sproutcore/frameworks/foundation/validators/password.js +1 -1
  277. data/lib/frameworks/sproutcore/frameworks/foundation/validators/validator.js +3 -3
  278. data/lib/frameworks/sproutcore/frameworks/foundation/views/field.js +16 -43
  279. data/lib/frameworks/sproutcore/frameworks/foundation/views/image.js +4 -3
  280. data/lib/frameworks/sproutcore/frameworks/foundation/views/inline_text_field.js +67 -54
  281. data/lib/frameworks/sproutcore/frameworks/foundation/views/label.js +49 -38
  282. data/lib/frameworks/sproutcore/frameworks/foundation/views/text_field.js +285 -242
  283. data/lib/frameworks/sproutcore/frameworks/jquery/jquery-buffer.js +13 -13
  284. data/lib/frameworks/sproutcore/frameworks/jquery/jquery-buffered.js +19 -22
  285. data/lib/frameworks/sproutcore/frameworks/jquery/jquery-sc.js +9 -3
  286. data/lib/frameworks/sproutcore/frameworks/jquery/jquery.js +231 -186
  287. data/lib/frameworks/sproutcore/frameworks/media/views/audio.js +145 -143
  288. data/lib/frameworks/sproutcore/frameworks/media/views/video.js +156 -154
  289. data/lib/frameworks/sproutcore/frameworks/qunit/qunit/qunit.js +5 -5
  290. data/lib/frameworks/sproutcore/frameworks/routing/system/routes.js +3 -3
  291. data/lib/frameworks/sproutcore/frameworks/routing/system/routes.js.orig +540 -0
  292. data/lib/frameworks/sproutcore/frameworks/routing/tests/system/routes.js +2 -2
  293. data/lib/frameworks/sproutcore/frameworks/runtime/core.js +15 -8
  294. data/lib/frameworks/sproutcore/frameworks/runtime/debug/test_suites/array/base.js +5 -5
  295. data/lib/frameworks/sproutcore/frameworks/runtime/debug/test_suites/array/replace.js +12 -0
  296. data/lib/frameworks/sproutcore/frameworks/runtime/ext/function.js +2 -2
  297. data/lib/frameworks/sproutcore/frameworks/runtime/mixins/array.js +1 -1
  298. data/lib/frameworks/sproutcore/frameworks/runtime/mixins/copyable.js +1 -1
  299. data/lib/frameworks/sproutcore/frameworks/runtime/mixins/enumerable.js +7 -7
  300. data/lib/frameworks/sproutcore/frameworks/runtime/mixins/observable.js +98 -32
  301. data/lib/frameworks/sproutcore/frameworks/runtime/private/chain_observer.js +7 -2
  302. data/lib/frameworks/sproutcore/frameworks/runtime/private/observer_queue.js +14 -3
  303. data/lib/frameworks/sproutcore/frameworks/runtime/private/observer_set.js +98 -13
  304. data/lib/frameworks/sproutcore/frameworks/runtime/system/binding.js +8 -14
  305. data/lib/frameworks/sproutcore/frameworks/runtime/system/enumerator.js +1 -1
  306. data/lib/frameworks/sproutcore/frameworks/runtime/system/error.js +2 -2
  307. data/lib/frameworks/sproutcore/frameworks/runtime/system/index_set.js +23 -6
  308. data/lib/frameworks/sproutcore/frameworks/runtime/system/logger.js +69 -18
  309. data/lib/frameworks/sproutcore/frameworks/runtime/system/object.js +57 -31
  310. data/lib/frameworks/sproutcore/frameworks/runtime/system/run_loop.js +189 -14
  311. data/lib/frameworks/sproutcore/frameworks/runtime/system/string.js +82 -22
  312. data/lib/frameworks/sproutcore/frameworks/runtime/tests/mixins/observable/chained.js +20 -0
  313. data/lib/frameworks/sproutcore/frameworks/runtime/tests/mixins/observable/observable.js +125 -4
  314. data/lib/frameworks/sproutcore/frameworks/runtime/tests/private/observer_queue.js +1 -1
  315. data/lib/frameworks/sproutcore/frameworks/runtime/tests/system/binding.js +2 -2
  316. data/lib/frameworks/sproutcore/frameworks/runtime/tests/system/index_set/rangeStartForIndex.js +37 -0
  317. data/lib/frameworks/sproutcore/frameworks/runtime/tests/system/index_set/remove.js +2 -2
  318. data/lib/frameworks/sproutcore/frameworks/runtime/tests/system/logger.js +16 -0
  319. data/lib/frameworks/sproutcore/frameworks/runtime/tests/system/run_loop.js +75 -4
  320. data/lib/frameworks/sproutcore/frameworks/runtime/tests/system/string.js +41 -0
  321. data/lib/frameworks/sproutcore/frameworks/statechart/mixins/statechart_delegate.js +113 -0
  322. data/lib/frameworks/sproutcore/frameworks/statechart/private/state_path_matcher.js +312 -0
  323. data/lib/frameworks/sproutcore/frameworks/statechart/system/async.js +18 -22
  324. data/lib/frameworks/sproutcore/frameworks/statechart/system/state.js +508 -131
  325. data/lib/frameworks/sproutcore/frameworks/statechart/system/state_route_handler_context.js +78 -0
  326. data/lib/frameworks/sproutcore/frameworks/statechart/system/statechart.js +265 -44
  327. data/lib/frameworks/sproutcore/frameworks/statechart/tests/event_handling/basic/with_concurrent_states.js +16 -0
  328. data/lib/frameworks/sproutcore/frameworks/statechart/tests/event_handling/responder/responder_chain.js +11 -3
  329. data/lib/frameworks/sproutcore/frameworks/statechart/tests/private/state_path_matcher.js +116 -0
  330. data/lib/frameworks/sproutcore/frameworks/statechart/tests/state/methods/add_substate.js +108 -0
  331. data/lib/frameworks/sproutcore/frameworks/statechart/tests/state/methods/find_first_relative_current_state/with_concurrent.js +179 -0
  332. data/lib/frameworks/sproutcore/frameworks/statechart/tests/state/methods/find_first_relative_current_state/without_concurrent.js +74 -0
  333. data/lib/frameworks/sproutcore/frameworks/statechart/tests/state/methods/get_state.js +141 -0
  334. data/lib/frameworks/sproutcore/frameworks/statechart/tests/state/methods/get_substate.js +340 -0
  335. data/lib/frameworks/sproutcore/frameworks/statechart/tests/state/methods/route_triggered.js +161 -0
  336. data/lib/frameworks/sproutcore/frameworks/statechart/tests/state/methods/try_to_handle_event.js +288 -0
  337. data/lib/frameworks/sproutcore/frameworks/statechart/tests/state_transitioning/history_state/standard/without_concurrent_states/context.js +5 -33
  338. data/lib/frameworks/sproutcore/frameworks/statechart/tests/state_transitioning/routing/with_concurrent_states/basic.js +213 -0
  339. data/lib/frameworks/sproutcore/frameworks/statechart/tests/state_transitioning/routing/without_concurrent_states/basic.js +212 -0
  340. data/lib/frameworks/sproutcore/frameworks/statechart/tests/state_transitioning/standard/without_concurrent_states/core.js +8 -0
  341. data/lib/frameworks/sproutcore/frameworks/statechart/tests/{state/namespacing.js → statechart/methods/get_state.js} +3 -41
  342. data/lib/frameworks/sproutcore/frameworks/statechart/tests/statechart/{invoke_state_method.js → methods/invoke_state_method.js} +1 -1
  343. data/lib/frameworks/sproutcore/frameworks/statechart/tests/{event_handling/advanced → statechart}/respond_to_event.js +1 -1
  344. data/lib/frameworks/sproutcore/frameworks/statechart/tests/system/state_route_handler_context/methods/retry.js +64 -0
  345. data/lib/frameworks/sproutcore/frameworks/table/core.js +2 -0
  346. data/lib/frameworks/sproutcore/frameworks/{core_foundation → template_view}/controls/button.js +0 -1
  347. data/lib/frameworks/sproutcore/frameworks/{core_foundation → template_view}/ext/handlebars.js +29 -5
  348. data/lib/frameworks/sproutcore/frameworks/{core_foundation → template_view}/ext/handlebars/bind.js +4 -3
  349. data/lib/frameworks/sproutcore/frameworks/{core_foundation → template_view}/ext/handlebars/collection.js +0 -0
  350. data/lib/frameworks/sproutcore/frameworks/{core_foundation → template_view}/ext/handlebars/localization.js +0 -0
  351. data/lib/frameworks/sproutcore/frameworks/{core_foundation → template_view}/ext/handlebars/view.js +0 -0
  352. data/lib/frameworks/sproutcore/frameworks/{handlebars → template_view}/handlebars.js +493 -357
  353. data/lib/frameworks/sproutcore/frameworks/{core_foundation → template_view}/mixins/template_helpers/checkbox_support.js +0 -0
  354. data/lib/frameworks/sproutcore/frameworks/{core_foundation → template_view}/mixins/template_helpers/text_field_support.js +13 -2
  355. data/lib/frameworks/sproutcore/frameworks/{core_foundation → template_view}/panes/template.js +0 -0
  356. data/lib/frameworks/sproutcore/frameworks/{core_foundation → template_view}/tests/controls/button.js +0 -0
  357. data/lib/frameworks/sproutcore/frameworks/{core_foundation → template_view}/tests/mixins/template_helpers/checkbox_support.js +0 -0
  358. data/lib/frameworks/sproutcore/frameworks/{core_foundation → template_view}/tests/mixins/template_helpers/text_field_support.js +0 -0
  359. data/lib/frameworks/sproutcore/frameworks/{core_foundation → template_view}/tests/panes/template.js +0 -0
  360. data/lib/frameworks/sproutcore/frameworks/{core_foundation → template_view}/tests/views/template/collection.js +39 -14
  361. data/lib/frameworks/sproutcore/frameworks/{core_foundation → template_view}/tests/views/template/core.js +0 -0
  362. data/lib/frameworks/sproutcore/frameworks/{core_foundation → template_view}/tests/views/template/handlebars.js +57 -6
  363. data/lib/frameworks/sproutcore/frameworks/{core_foundation → template_view}/views/bindable_span.js +21 -6
  364. data/lib/frameworks/sproutcore/frameworks/{core_foundation → template_view}/views/template.js +9 -3
  365. data/lib/frameworks/sproutcore/frameworks/{core_foundation → template_view}/views/template_collection.js +55 -26
  366. data/lib/frameworks/sproutcore/frameworks/testing/system/equiv.js +1 -1
  367. data/lib/frameworks/sproutcore/frameworks/testing/system/plan.js +122 -122
  368. data/lib/frameworks/sproutcore/frameworks/testing/system/runner.js +2 -2
  369. data/lib/frameworks/sproutcore/frameworks/testing/system/suite.js +4 -4
  370. data/lib/frameworks/sproutcore/frameworks/yuireset/resources/base.css +1 -1
  371. data/lib/frameworks/sproutcore/frameworks/yuireset/resources/reset.css +0 -1
  372. data/lib/frameworks/sproutcore/frameworks/yuireset/resources/view.css +4 -4
  373. data/lib/frameworks/sproutcore/lib/index.rhtml +55 -32
  374. data/lib/frameworks/sproutcore/license.js +2 -4
  375. data/lib/frameworks/sproutcore/themes/ace/resources/body.css +5 -1
  376. data/lib/frameworks/sproutcore/themes/ace/resources/button/ace/18px/button.css +2 -2
  377. data/lib/frameworks/sproutcore/themes/ace/resources/button/ace/24px/button.css +21 -13
  378. data/lib/frameworks/sproutcore/themes/ace/resources/button/ace/30px/button.css +17 -10
  379. data/lib/frameworks/sproutcore/themes/ace/resources/button/ace/44px/button.css +4 -3
  380. data/lib/frameworks/sproutcore/themes/ace/resources/button/dark/24px/button.css +20 -12
  381. data/lib/frameworks/sproutcore/themes/ace/resources/button/dark/30px/button.css +16 -8
  382. data/lib/frameworks/sproutcore/themes/ace/resources/button/dark/jumbo/button.css +17 -0
  383. data/lib/frameworks/sproutcore/themes/ace/resources/button/dark/small/button.css +17 -0
  384. data/lib/frameworks/sproutcore/themes/ace/resources/disclosure/ace/disclosure.css +2 -2
  385. data/lib/frameworks/sproutcore/themes/ace/resources/master-detail/master-detail.css +2 -2
  386. data/lib/frameworks/sproutcore/themes/ace/resources/picker/popover/popover.css +5 -3
  387. data/lib/frameworks/sproutcore/themes/iphone_theme/english.lproj/core.css +1 -1
  388. data/lib/frameworks/sproutcore/themes/legacy_theme/english.lproj/toolbar.css +1 -1
  389. data/lib/gen/app/USAGE +17 -4
  390. data/lib/gen/language/Buildfile +4 -4
  391. data/lib/gen/language/USAGE +4 -4
  392. data/lib/gen/page/templates/pages/@target_name@/Buildfile +7 -7
  393. data/lib/gen/{html_app → statechart_app}/Buildfile +0 -0
  394. data/lib/gen/{html_app → statechart_app}/README +0 -0
  395. data/lib/gen/statechart_app/USAGE +21 -0
  396. data/lib/gen/statechart_app/templates/apps/@target_name@/Buildfile +9 -0
  397. data/lib/gen/statechart_app/templates/apps/@target_name@/core.js +24 -0
  398. data/lib/gen/statechart_app/templates/apps/@target_name@/main.js +26 -0
  399. data/lib/gen/statechart_app/templates/apps/@target_name@/resources/_theme.css +18 -0
  400. data/lib/gen/statechart_app/templates/apps/@target_name@/resources/loading.rhtml +9 -0
  401. data/lib/gen/statechart_app/templates/apps/@target_name@/resources/main_page.js +21 -0
  402. data/lib/gen/statechart_app/templates/apps/@target_name@/statechart.js +8 -0
  403. data/lib/gen/statechart_app/templates/apps/@target_name@/states/ready_state.js +12 -0
  404. data/lib/gen/statechart_app/templates/apps/@target_name@/theme.js +24 -0
  405. data/lib/sproutcore/builders.rb +1 -0
  406. data/lib/sproutcore/builders/base.rb +19 -1
  407. data/lib/sproutcore/builders/chance_file.rb +6 -1
  408. data/lib/sproutcore/builders/handlebars.rb +1 -9
  409. data/lib/sproutcore/builders/javascript.rb +1 -10
  410. data/lib/sproutcore/builders/json.rb +25 -0
  411. data/lib/sproutcore/builders/less.rb +1 -1
  412. data/lib/sproutcore/builders/sass.rb +1 -1
  413. data/lib/sproutcore/builders/stylesheet.rb +1 -9
  414. data/lib/sproutcore/helpers/html5_manifest.rb +1 -1
  415. data/lib/sproutcore/helpers/static_helper.rb +42 -0
  416. data/lib/sproutcore/rack/proxy.rb +21 -3
  417. data/lib/sproutcore/rack/service.rb +3 -2
  418. data/lib/sproutcore/tools.rb +18 -25
  419. data/lib/sproutcore/tools/gen.rb +10 -3
  420. data/lib/sproutcore/tools/init.rb +11 -10
  421. data/spec/buildtasks/manifest/prepare_build_tasks/json_spec.rb +62 -0
  422. data/spec/fixtures/builder_tests/apps/handlebars_test/Buildfile +1 -1
  423. data/spec/fixtures/builder_tests/apps/json_test/sc_static.json +2 -0
  424. data/spec/lib/builders/json_spec.rb +53 -0
  425. data/sproutcore.gemspec +2 -2
  426. data/vendor/chance/lib/chance/parser.rb +1 -1
  427. metadata +222 -177
  428. data/lib/frameworks/sproutcore/frameworks/core_foundation/system/datetime.js +0 -0
  429. data/lib/frameworks/sproutcore/frameworks/debug/invoke_once_last_debugging.js +0 -259
  430. data/lib/frameworks/sproutcore/frameworks/documentation/core.js +0 -0
  431. data/lib/frameworks/sproutcore/frameworks/foundation/system/chance.js +0 -69
  432. data/lib/frameworks/sproutcore/frameworks/foundation/tests/mixins/editable/ui.js +0 -44
  433. data/lib/frameworks/sproutcore/frameworks/foundation/tests/mixins/inline_text_field/ui.js +0 -64
  434. data/lib/frameworks/sproutcore/frameworks/mini/license.js +0 -30
  435. data/lib/gen/html_app/USAGE +0 -15
  436. data/lib/gen/html_app/templates/apps/@target_name@/@target_name@.js +0 -11
  437. data/lib/gen/html_app/templates/apps/@target_name@/resources/images/.gitkeep +0 -0
  438. data/lib/gen/html_app/templates/apps/@target_name@/resources/stylesheets/@target_name@.css +0 -6
  439. data/lib/gen/html_app/templates/apps/@target_name@/resources/templates/@target_name@.handlebars +0 -1
  440. data/lib/gen/html_project/Buildfile +0 -45
  441. data/lib/gen/html_project/INIT +0 -3
  442. data/lib/gen/html_project/README +0 -1
  443. data/lib/gen/html_project/USAGE +0 -2
  444. data/lib/gen/html_project/templates/@filename@/Buildfile +0 -5
  445. data/lib/gen/html_project/templates/@filename@/README +0 -4
@@ -4,7 +4,7 @@
4
4
  // License: Licensed under MIT license (see license.js)
5
5
  // ==========================================================================
6
6
  // sc_require("jquery");
7
- jQuery.Buffer = (function() {
7
+ jQuery.Buffer = function() {
8
8
 
9
9
  var Buffer = function(elem) {
10
10
  if (elem) this.assign(elem);
@@ -205,7 +205,7 @@ jQuery.Buffer = (function() {
205
205
  };
206
206
 
207
207
 
208
- //
208
+ //
209
209
  // SUPPORT FOR CSS STYLES
210
210
  //
211
211
  Buffer.prototype._STYLE_REGEX = /-?\s*([^:\s]+)\s*:\s*([^;]+)\s*;?/g;
@@ -235,18 +235,18 @@ jQuery.Buffer = (function() {
235
235
  Buffer.prototype._loadStyles = function(attr) {
236
236
  // parse style...
237
237
  if (!attr) attr = this.$().attr('style');
238
-
238
+
239
239
  if (attr && (attr = attr.toString()).length>0) {
240
- if(SC.browser.msie){
240
+ if(SC.browser.isIE){
241
241
  attr = attr.toLowerCase();
242
242
  }
243
243
  var styles = {};
244
-
244
+
245
245
  var regex = this._STYLE_REGEX, match;
246
246
  regex.lastIndex = 0;
247
-
247
+
248
248
  while(match = regex.exec(attr)) styles[this._camelizeStyleName(match[1])] = match[2];
249
-
249
+
250
250
  return styles;
251
251
  } else {
252
252
  return { };
@@ -293,7 +293,7 @@ jQuery.Buffer = (function() {
293
293
  this.$().attr("style", props.join("; "));
294
294
  };
295
295
 
296
- //
296
+ //
297
297
  // SUPPORT FOR CLASS NAMES
298
298
  //
299
299
  Buffer.prototype._hashFromClassNames = function(classNames) {
@@ -346,15 +346,15 @@ jQuery.Buffer = (function() {
346
346
  if (!context.classNames) context.classNames = this._hashFromClassNames(this._el.className);
347
347
  return !!context.classNames[className];
348
348
  };
349
-
349
+
350
350
  Buffer.prototype.addClass = function(value) {
351
351
  if (!value) return;
352
-
352
+
353
353
  var context = this.bufferedCommand("flushClassNames");
354
354
  if (!context.classNames) context.classNames = this._hashFromClassNames(this._el.className);
355
-
355
+
356
356
  if (typeof value === "string") value = value.split(' ');
357
-
357
+
358
358
  var idx, len = value.length;
359
359
  for (idx = 0; idx < len; idx++) context.classNames[jQuery.trim(value[idx])] = true;
360
360
  };
@@ -387,4 +387,4 @@ jQuery.Buffer = (function() {
387
387
  dn(Buffer.prototype);
388
388
 
389
389
  return Buffer;
390
- })();
390
+ }();
@@ -17,14 +17,14 @@ jQuery.bufferedJQuery.fn.extend({
17
17
  // if there is no value, we don't handle it.
18
18
  if (value === undefined) {
19
19
  if (this.length < 1) return undefined;
20
- return jQuery.Buffer.bufferForElement(this[i]).html();
20
+ return jQuery.Buffer.bufferForElement(this[0]).html();
21
21
  }
22
22
 
23
23
  // there is a vlaue. We are going to do it like jquery, but different.
24
24
  // in this, we inline "buffers" above
25
- var len = this.length, i;
25
+ var len = this.length, i, buffer;
26
26
  for (i = 0; i < len; i++) {
27
- var buffer = jQuery.Buffer.bufferForElement(this[i]);
27
+ buffer = jQuery.Buffer.bufferForElement(this[i]);
28
28
  buffer.html(value);
29
29
  }
30
30
  return this;
@@ -33,14 +33,14 @@ jQuery.bufferedJQuery.fn.extend({
33
33
  text: function(value) {
34
34
  if (value === undefined) {
35
35
  if (this.length < 1) return undefined;
36
- return jQuery.Buffer.bufferForElement(this[i]).text();
36
+ return jQuery.Buffer.bufferForElement(this[0]).text();
37
37
  }
38
38
 
39
39
  // there is a vlaue. We are going to do it like jquery, but different.
40
40
  // in this, we inline "buffers" above
41
- var len = this.length, i;
41
+ var len = this.length, i, buffer;
42
42
  for (i = 0; i < len; i++) {
43
- var buffer = jQuery.Buffer.bufferForElement(this[i]);
43
+ buffer = jQuery.Buffer.bufferForElement(this[i]);
44
44
  buffer.text(value);
45
45
  }
46
46
  return this;
@@ -48,16 +48,17 @@ jQuery.bufferedJQuery.fn.extend({
48
48
 
49
49
  attr: function(key, value) {
50
50
  // first, handle the get-case
51
+ var buffer;
51
52
  if (typeof value === "undefined" && typeof key === "string") {
52
53
  if (this.length < 1) return false;
53
- var buffer = jQuery.Buffer.bufferForElement(this[0]);
54
+ buffer = jQuery.Buffer.bufferForElement(this[0]);
54
55
  return buffer.attr(key);
55
56
  }
56
57
 
57
58
  // now, buffer the command.
58
59
  var len = this.length, i;
59
60
  for (i = 0; i < len; i++) {
60
- var buffer = jQuery.Buffer.bufferForElement(this[i]);
61
+ buffer = jQuery.Buffer.bufferForElement(this[i]);
61
62
  buffer.attr(key, value);
62
63
  }
63
64
  return this;
@@ -70,9 +71,9 @@ jQuery.bufferedJQuery.fn.extend({
70
71
 
71
72
  setClass: function(value, on) {
72
73
  // now, buffer the command.
73
- var len = this.length, i;
74
+ var len = this.length, i, buffer;
74
75
  for (i = 0; i < len; i++) {
75
- var buffer = jQuery.Buffer.bufferForElement(this[i]);
76
+ buffer = jQuery.Buffer.bufferForElement(this[i]);
76
77
  buffer.setClass(value, on);
77
78
  }
78
79
  return this;
@@ -80,9 +81,9 @@ jQuery.bufferedJQuery.fn.extend({
80
81
 
81
82
  addClass: function(value) {
82
83
  // now, buffer the command.
83
- var len = this.length, i;
84
+ var len = this.length, i, buffer;
84
85
  for (i = 0; i < len; i++) {
85
- var buffer = jQuery.Buffer.bufferForElement(this[i]);
86
+ buffer = jQuery.Buffer.bufferForElement(this[i]);
86
87
  buffer.addClass(value);
87
88
  }
88
89
  return this;
@@ -90,9 +91,9 @@ jQuery.bufferedJQuery.fn.extend({
90
91
 
91
92
  removeClass: function(value) {
92
93
  // now, buffer the command.
93
- var len = this.length, i;
94
+ var len = this.length, i, buffer;
94
95
  for (i = 0; i < len; i++) {
95
- var buffer = jQuery.Buffer.bufferForElement(this[i]);
96
+ buffer = jQuery.Buffer.bufferForElement(this[i]);
96
97
  buffer.removeClass(value);
97
98
  }
98
99
  return this;
@@ -100,9 +101,9 @@ jQuery.bufferedJQuery.fn.extend({
100
101
 
101
102
  resetClassNames: function() {
102
103
  // now, buffer the command.
103
- var len = this.length, i;
104
+ var len = this.length, i, buffer;
104
105
  for (i = 0; i < len; i++) {
105
- var buffer = jQuery.Buffer.bufferForElement(this[i]);
106
+ buffer = jQuery.Buffer.bufferForElement(this[i]);
106
107
  buffer.resetClassNames();
107
108
  }
108
109
  return this;
@@ -110,9 +111,9 @@ jQuery.bufferedJQuery.fn.extend({
110
111
 
111
112
  css: function(key, value) {
112
113
  // now, buffer the command.
113
- var len = this.length, i;
114
+ var len = this.length, i, buffer;
114
115
  for (i = 0; i < len; i++) {
115
- var buffer = jQuery.Buffer.bufferForElement(this[i]);
116
+ buffer = jQuery.Buffer.bufferForElement(this[i]);
116
117
  buffer.css(key, value);
117
118
  }
118
119
  return this;
@@ -128,9 +129,5 @@ jQuery.bufferedJQuery.fn.extend({
128
129
  jQuery.Buffer.bufferForElement(this[0]).resetStyles();
129
130
  return this;
130
131
  }
131
-
132
132
  });
133
-
134
-
135
-
136
133
  })();
@@ -4,9 +4,15 @@
4
4
  // License: Licensed under MIT license (see license.js)
5
5
  // ==========================================================================
6
6
  // sc_require("jquery-buffer");
7
+ jQuery.Buffer._flush = function() {
8
+ jQuery.Buffer.flush();
9
+ };
7
10
  jQuery.Buffer.scheduleFlushing = function() {
8
- SC.RunLoop.currentRunLoop.invokeOnce(function() {
9
- jQuery.Buffer.flush()
10
- });
11
+ SC.RunLoop.currentRunLoop.invokeOnce(jQuery.Buffer._flush);
11
12
  this.flushingScheduled = true;
12
13
  };
14
+
15
+ //@if(debug)
16
+ jQuery.Buffer._flush.displayName = "jQuery.Buffer._flush";
17
+ jQuery.Buffer.scheduleFlushing.displayName = "jQuery.Buffer.scheduleFlushing";
18
+ //@endif
@@ -1,5 +1,5 @@
1
1
  /*!
2
- * jQuery JavaScript Library v1.6.1
2
+ * jQuery JavaScript Library v1.6.2
3
3
  * http://jquery.com/
4
4
  *
5
5
  * Copyright 2011, John Resig
@@ -11,7 +11,7 @@
11
11
  * Copyright 2011, The Dojo Foundation
12
12
  * Released under the MIT, BSD, and GPL Licenses.
13
13
  *
14
- * Date: Thu May 12 15:04:36 2011 -0400
14
+ * Date: Thu Jun 30 14:16:56 2011 -0400
15
15
  */
16
16
  (function( window, undefined ) {
17
17
 
@@ -65,6 +65,14 @@ var jQuery = function( selector, context ) {
65
65
  rmsie = /(msie) ([\w.]+)/,
66
66
  rmozilla = /(mozilla)(?:.*? rv:([\w.]+))?/,
67
67
 
68
+ // Matches dashed string for camelizing
69
+ rdashAlpha = /-([a-z])/ig,
70
+
71
+ // Used by jQuery.camelCase as callback to replace()
72
+ fcamelCase = function( all, letter ) {
73
+ return letter.toUpperCase();
74
+ },
75
+
68
76
  // Keep a UserAgent string for use with jQuery.browser
69
77
  userAgent = navigator.userAgent,
70
78
 
@@ -204,7 +212,7 @@ jQuery.fn = jQuery.prototype = {
204
212
  selector: "",
205
213
 
206
214
  // The current version of jQuery being used
207
- jquery: "1.6.1",
215
+ jquery: "1.6.2",
208
216
 
209
217
  // The default length of a jQuery object is 0
210
218
  length: 0,
@@ -603,6 +611,12 @@ jQuery.extend({
603
611
  }
604
612
  },
605
613
 
614
+ // Converts a dashed string to camelCased string;
615
+ // Used by both the css and data modules
616
+ camelCase: function( string ) {
617
+ return string.replace( rdashAlpha, fcamelCase );
618
+ },
619
+
606
620
  nodeName: function( elem, name ) {
607
621
  return elem.nodeName && elem.nodeName.toUpperCase() === name.toUpperCase();
608
622
  },
@@ -799,7 +813,7 @@ jQuery.extend({
799
813
  },
800
814
 
801
815
  // Mutifunctional method to get and set values to a collection
802
- // The value/s can be optionally by executed if its a function
816
+ // The value/s can optionally be executed if it's a function
803
817
  access: function( elems, key, value, exec, fn, pass ) {
804
818
  var length = elems.length;
805
819
 
@@ -930,7 +944,6 @@ function doScrollCheck() {
930
944
  jQuery.ready();
931
945
  }
932
946
 
933
- // Expose jQuery to the global object
934
947
  return jQuery;
935
948
 
936
949
  })();
@@ -1147,7 +1160,9 @@ jQuery.support = (function() {
1147
1160
  support,
1148
1161
  fragment,
1149
1162
  body,
1150
- bodyStyle,
1163
+ testElementParent,
1164
+ testElement,
1165
+ testElementStyle,
1151
1166
  tds,
1152
1167
  events,
1153
1168
  eventName,
@@ -1241,11 +1256,10 @@ jQuery.support = (function() {
1241
1256
  }
1242
1257
 
1243
1258
  if ( !div.addEventListener && div.attachEvent && div.fireEvent ) {
1244
- div.attachEvent( "onclick", function click() {
1259
+ div.attachEvent( "onclick", function() {
1245
1260
  // Cloning a node shouldn't copy over any
1246
1261
  // bound event handlers (IE does this)
1247
1262
  support.noCloneEvent = false;
1248
- div.detachEvent( "onclick", click );
1249
1263
  });
1250
1264
  div.cloneNode( true ).fireEvent( "onclick" );
1251
1265
  }
@@ -1270,22 +1284,30 @@ jQuery.support = (function() {
1270
1284
  // Figure out if the W3C box model works as expected
1271
1285
  div.style.width = div.style.paddingLeft = "1px";
1272
1286
 
1273
- // We use our own, invisible, body
1274
- body = document.createElement( "body" );
1275
- bodyStyle = {
1287
+ body = document.getElementsByTagName( "body" )[ 0 ];
1288
+ // We use our own, invisible, body unless the body is already present
1289
+ // in which case we use a div (#9239)
1290
+ testElement = document.createElement( body ? "div" : "body" );
1291
+ testElementStyle = {
1276
1292
  visibility: "hidden",
1277
1293
  width: 0,
1278
1294
  height: 0,
1279
1295
  border: 0,
1280
- margin: 0,
1281
- // Set background to avoid IE crashes when removing (#9028)
1282
- background: "none"
1296
+ margin: 0
1283
1297
  };
1284
- for ( i in bodyStyle ) {
1285
- body.style[ i ] = bodyStyle[ i ];
1298
+ if ( body ) {
1299
+ jQuery.extend( testElementStyle, {
1300
+ position: "absolute",
1301
+ left: -1000,
1302
+ top: -1000
1303
+ });
1304
+ }
1305
+ for ( i in testElementStyle ) {
1306
+ testElement.style[ i ] = testElementStyle[ i ];
1286
1307
  }
1287
- body.appendChild( div );
1288
- documentElement.insertBefore( body, documentElement.firstChild );
1308
+ testElement.appendChild( div );
1309
+ testElementParent = body || documentElement;
1310
+ testElementParent.insertBefore( testElement, testElementParent.firstChild );
1289
1311
 
1290
1312
  // Check if a disconnected checkbox will retain its checked
1291
1313
  // value of true after appended to the DOM (IE6/7)
@@ -1344,8 +1366,8 @@ jQuery.support = (function() {
1344
1366
  }
1345
1367
 
1346
1368
  // Remove the body element we added
1347
- body.innerHTML = "";
1348
- documentElement.removeChild( body );
1369
+ testElement.innerHTML = "";
1370
+ testElementParent.removeChild( testElement );
1349
1371
 
1350
1372
  // Technique from Juriy Zaytsev
1351
1373
  // http://thinkweb2.com/projects/prototype/detecting-event-support-without-browser-sniffing/
@@ -1369,6 +1391,9 @@ jQuery.support = (function() {
1369
1391
  }
1370
1392
  }
1371
1393
 
1394
+ // Null connected elements to avoid leaks in IE
1395
+ testElement = fragment = select = opt = body = marginDiv = div = input = null;
1396
+
1372
1397
  return support;
1373
1398
  })();
1374
1399
 
@@ -1486,7 +1511,10 @@ jQuery.extend({
1486
1511
  return thisCache[ internalKey ] && thisCache[ internalKey ].events;
1487
1512
  }
1488
1513
 
1489
- return getByName ? thisCache[ jQuery.camelCase( name ) ] : thisCache;
1514
+ return getByName ?
1515
+ // Check for both converted-to-camel and non-converted data property names
1516
+ thisCache[ jQuery.camelCase( name ) ] || thisCache[ name ] :
1517
+ thisCache;
1490
1518
  },
1491
1519
 
1492
1520
  removeData: function( elem, name, pvt /* Internal Use Only */ ) {
@@ -1882,7 +1910,7 @@ var rclass = /[\n\t\r]/g,
1882
1910
  rfocusable = /^(?:button|input|object|select|textarea)$/i,
1883
1911
  rclickable = /^a(?:rea)?$/i,
1884
1912
  rboolean = /^(?:autofocus|autoplay|async|checked|controls|defer|disabled|hidden|loop|multiple|open|readonly|required|scoped|selected)$/i,
1885
- rinvalidChar = /\:/,
1913
+ rinvalidChar = /\:|^on/,
1886
1914
  formHook, boolHook;
1887
1915
 
1888
1916
  jQuery.fn.extend({
@@ -1912,30 +1940,31 @@ jQuery.fn.extend({
1912
1940
  },
1913
1941
 
1914
1942
  addClass: function( value ) {
1943
+ var classNames, i, l, elem,
1944
+ setClass, c, cl;
1945
+
1915
1946
  if ( jQuery.isFunction( value ) ) {
1916
- return this.each(function(i) {
1917
- var self = jQuery(this);
1918
- self.addClass( value.call(this, i, self.attr("class") || "") );
1947
+ return this.each(function( j ) {
1948
+ jQuery( this ).addClass( value.call(this, j, this.className) );
1919
1949
  });
1920
1950
  }
1921
1951
 
1922
1952
  if ( value && typeof value === "string" ) {
1923
- var classNames = (value || "").split( rspace );
1953
+ classNames = value.split( rspace );
1924
1954
 
1925
- for ( var i = 0, l = this.length; i < l; i++ ) {
1926
- var elem = this[i];
1955
+ for ( i = 0, l = this.length; i < l; i++ ) {
1956
+ elem = this[ i ];
1927
1957
 
1928
1958
  if ( elem.nodeType === 1 ) {
1929
- if ( !elem.className ) {
1959
+ if ( !elem.className && classNames.length === 1 ) {
1930
1960
  elem.className = value;
1931
1961
 
1932
1962
  } else {
1933
- var className = " " + elem.className + " ",
1934
- setClass = elem.className;
1963
+ setClass = " " + elem.className + " ";
1935
1964
 
1936
- for ( var c = 0, cl = classNames.length; c < cl; c++ ) {
1937
- if ( className.indexOf( " " + classNames[c] + " " ) < 0 ) {
1938
- setClass += " " + classNames[c];
1965
+ for ( c = 0, cl = classNames.length; c < cl; c++ ) {
1966
+ if ( !~setClass.indexOf( " " + classNames[ c ] + " " ) ) {
1967
+ setClass += classNames[ c ] + " ";
1939
1968
  }
1940
1969
  }
1941
1970
  elem.className = jQuery.trim( setClass );
@@ -1948,24 +1977,25 @@ jQuery.fn.extend({
1948
1977
  },
1949
1978
 
1950
1979
  removeClass: function( value ) {
1951
- if ( jQuery.isFunction(value) ) {
1952
- return this.each(function(i) {
1953
- var self = jQuery(this);
1954
- self.removeClass( value.call(this, i, self.attr("class")) );
1980
+ var classNames, i, l, elem, className, c, cl;
1981
+
1982
+ if ( jQuery.isFunction( value ) ) {
1983
+ return this.each(function( j ) {
1984
+ jQuery( this ).removeClass( value.call(this, j, this.className) );
1955
1985
  });
1956
1986
  }
1957
1987
 
1958
1988
  if ( (value && typeof value === "string") || value === undefined ) {
1959
- var classNames = (value || "").split( rspace );
1989
+ classNames = (value || "").split( rspace );
1960
1990
 
1961
- for ( var i = 0, l = this.length; i < l; i++ ) {
1962
- var elem = this[i];
1991
+ for ( i = 0, l = this.length; i < l; i++ ) {
1992
+ elem = this[ i ];
1963
1993
 
1964
1994
  if ( elem.nodeType === 1 && elem.className ) {
1965
1995
  if ( value ) {
1966
- var className = (" " + elem.className + " ").replace(rclass, " ");
1967
- for ( var c = 0, cl = classNames.length; c < cl; c++ ) {
1968
- className = className.replace(" " + classNames[c] + " ", " ");
1996
+ className = (" " + elem.className + " ").replace( rclass, " " );
1997
+ for ( c = 0, cl = classNames.length; c < cl; c++ ) {
1998
+ className = className.replace(" " + classNames[ c ] + " ", " ");
1969
1999
  }
1970
2000
  elem.className = jQuery.trim( className );
1971
2001
 
@@ -1984,9 +2014,8 @@ jQuery.fn.extend({
1984
2014
  isBool = typeof stateVal === "boolean";
1985
2015
 
1986
2016
  if ( jQuery.isFunction( value ) ) {
1987
- return this.each(function(i) {
1988
- var self = jQuery(this);
1989
- self.toggleClass( value.call(this, i, self.attr("class"), stateVal), stateVal );
2017
+ return this.each(function( i ) {
2018
+ jQuery( this ).toggleClass( value.call(this, i, this.className, stateVal), stateVal );
1990
2019
  });
1991
2020
  }
1992
2021
 
@@ -2040,7 +2069,13 @@ jQuery.fn.extend({
2040
2069
  return ret;
2041
2070
  }
2042
2071
 
2043
- return (elem.value || "").replace(rreturn, "");
2072
+ ret = elem.value;
2073
+
2074
+ return typeof ret === "string" ?
2075
+ // handle most common string cases
2076
+ ret.replace(rreturn, "") :
2077
+ // handle cases where value is null/undef or number
2078
+ ret == null ? "" : ret;
2044
2079
  }
2045
2080
 
2046
2081
  return undefined;
@@ -2186,20 +2221,23 @@ jQuery.extend({
2186
2221
  notxml = nType !== 1 || !jQuery.isXMLDoc( elem );
2187
2222
 
2188
2223
  // Normalize the name if needed
2189
- name = notxml && jQuery.attrFix[ name ] || name;
2224
+ if ( notxml ) {
2225
+ name = jQuery.attrFix[ name ] || name;
2190
2226
 
2191
- hooks = jQuery.attrHooks[ name ];
2227
+ hooks = jQuery.attrHooks[ name ];
2192
2228
 
2193
- if ( !hooks ) {
2194
- // Use boolHook for boolean attributes
2195
- if ( rboolean.test( name ) &&
2196
- (typeof value === "boolean" || value === undefined || value.toLowerCase() === name.toLowerCase()) ) {
2229
+ if ( !hooks ) {
2230
+ // Use boolHook for boolean attributes
2231
+ if ( rboolean.test( name ) ) {
2197
2232
 
2198
- hooks = boolHook;
2233
+ hooks = boolHook;
2199
2234
 
2200
- // Use formHook for forms and if the name contains certain characters
2201
- } else if ( formHook && (jQuery.nodeName( elem, "form" ) || rinvalidChar.test( name )) ) {
2202
- hooks = formHook;
2235
+ // Use formHook for forms and if the name contains certain characters
2236
+ } else if ( formHook && name !== "className" &&
2237
+ (jQuery.nodeName( elem, "form" ) || rinvalidChar.test( name )) ) {
2238
+
2239
+ hooks = formHook;
2240
+ }
2203
2241
  }
2204
2242
  }
2205
2243
 
@@ -2217,8 +2255,8 @@ jQuery.extend({
2217
2255
  return value;
2218
2256
  }
2219
2257
 
2220
- } else if ( hooks && "get" in hooks && notxml ) {
2221
- return hooks.get( elem, name );
2258
+ } else if ( hooks && "get" in hooks && notxml && (ret = hooks.get( elem, name )) !== null ) {
2259
+ return ret;
2222
2260
 
2223
2261
  } else {
2224
2262
 
@@ -2282,6 +2320,25 @@ jQuery.extend({
2282
2320
  0 :
2283
2321
  undefined;
2284
2322
  }
2323
+ },
2324
+ // Use the value property for back compat
2325
+ // Use the formHook for button elements in IE6/7 (#1954)
2326
+ value: {
2327
+ get: function( elem, name ) {
2328
+ if ( formHook && jQuery.nodeName( elem, "button" ) ) {
2329
+ return formHook.get( elem, name );
2330
+ }
2331
+ return name in elem ?
2332
+ elem.value :
2333
+ null;
2334
+ },
2335
+ set: function( elem, value, name ) {
2336
+ if ( formHook && jQuery.nodeName( elem, "button" ) ) {
2337
+ return formHook.set( elem, value, name );
2338
+ }
2339
+ // Does not return so that setAttribute is also used
2340
+ elem.value = value;
2341
+ }
2285
2342
  }
2286
2343
  },
2287
2344
 
@@ -2311,10 +2368,11 @@ jQuery.extend({
2311
2368
  var ret, hooks,
2312
2369
  notxml = nType !== 1 || !jQuery.isXMLDoc( elem );
2313
2370
 
2314
- // Try to normalize/fix the name
2315
- name = notxml && jQuery.propFix[ name ] || name;
2316
-
2317
- hooks = jQuery.propHooks[ name ];
2371
+ if ( notxml ) {
2372
+ // Fix name and attach hooks
2373
+ name = jQuery.propFix[ name ] || name;
2374
+ hooks = jQuery.propHooks[ name ];
2375
+ }
2318
2376
 
2319
2377
  if ( value !== undefined ) {
2320
2378
  if ( hooks && "set" in hooks && (ret = hooks.set( elem, value, name )) !== undefined ) {
@@ -2341,7 +2399,7 @@ jQuery.extend({
2341
2399
  boolHook = {
2342
2400
  get: function( elem, name ) {
2343
2401
  // Align boolean attributes with corresponding properties
2344
- return elem[ jQuery.propFix[ name ] || name ] ?
2402
+ return jQuery.prop( elem, name ) ?
2345
2403
  name.toLowerCase() :
2346
2404
  undefined;
2347
2405
  },
@@ -2356,7 +2414,7 @@ boolHook = {
2356
2414
  propName = jQuery.propFix[ name ] || name;
2357
2415
  if ( propName in elem ) {
2358
2416
  // Only set the IDL specifically if it already exists on the element
2359
- elem[ propName ] = value;
2417
+ elem[ propName ] = true;
2360
2418
  }
2361
2419
 
2362
2420
  elem.setAttribute( name, name.toLowerCase() );
@@ -2365,24 +2423,6 @@ boolHook = {
2365
2423
  }
2366
2424
  };
2367
2425
 
2368
- // Use the value property for back compat
2369
- // Use the formHook for button elements in IE6/7 (#1954)
2370
- jQuery.attrHooks.value = {
2371
- get: function( elem, name ) {
2372
- if ( formHook && jQuery.nodeName( elem, "button" ) ) {
2373
- return formHook.get( elem, name );
2374
- }
2375
- return elem.value;
2376
- },
2377
- set: function( elem, value, name ) {
2378
- if ( formHook && jQuery.nodeName( elem, "button" ) ) {
2379
- return formHook.set( elem, value, name );
2380
- }
2381
- // Does not return so that setAttribute is also used
2382
- elem.value = value;
2383
- }
2384
- };
2385
-
2386
2426
  // IE6/7 do not support getting/setting some attributes with get/setAttribute
2387
2427
  if ( !jQuery.support.getSetAttribute ) {
2388
2428
 
@@ -2390,7 +2430,7 @@ if ( !jQuery.support.getSetAttribute ) {
2390
2430
  jQuery.attrFix = jQuery.propFix;
2391
2431
 
2392
2432
  // Use this for any attribute on a form in IE6/7
2393
- formHook = jQuery.attrHooks.name = jQuery.valHooks.button = {
2433
+ formHook = jQuery.attrHooks.name = jQuery.attrHooks.title = jQuery.valHooks.button = {
2394
2434
  get: function( elem, name ) {
2395
2435
  var ret;
2396
2436
  ret = elem.getAttributeNode( name );
@@ -2493,8 +2533,7 @@ jQuery.each([ "radio", "checkbox" ], function() {
2493
2533
 
2494
2534
 
2495
2535
 
2496
- var hasOwn = Object.prototype.hasOwnProperty,
2497
- rnamespaces = /\.(.*)$/,
2536
+ var rnamespaces = /\.(.*)$/,
2498
2537
  rformElems = /^(?:textarea|input|select)$/i,
2499
2538
  rperiod = /\./g,
2500
2539
  rspaces = / /g,
@@ -2838,7 +2877,7 @@ jQuery.event = {
2838
2877
  event.target = elem;
2839
2878
 
2840
2879
  // Clone any incoming data and prepend the event, creating the handler arg list
2841
- data = data ? jQuery.makeArray( data ) : [];
2880
+ data = data != null ? jQuery.makeArray( data ) : [];
2842
2881
  data.unshift( event );
2843
2882
 
2844
2883
  var cur = elem,
@@ -3144,34 +3183,27 @@ jQuery.Event.prototype = {
3144
3183
  // Checks if an event happened on an element within another element
3145
3184
  // Used in jQuery.event.special.mouseenter and mouseleave handlers
3146
3185
  var withinElement = function( event ) {
3186
+
3147
3187
  // Check if mouse(over|out) are still within the same parent element
3148
- var parent = event.relatedTarget;
3188
+ var related = event.relatedTarget,
3189
+ inside = false,
3190
+ eventType = event.type;
3149
3191
 
3150
- // set the correct event type
3151
3192
  event.type = event.data;
3152
3193
 
3153
- // Firefox sometimes assigns relatedTarget a XUL element
3154
- // which we cannot access the parentNode property of
3155
- try {
3194
+ if ( related !== this ) {
3156
3195
 
3157
- // Chrome does something similar, the parentNode property
3158
- // can be accessed but is null.
3159
- if ( parent && parent !== document && !parent.parentNode ) {
3160
- return;
3196
+ if ( related ) {
3197
+ inside = jQuery.contains( this, related );
3161
3198
  }
3162
3199
 
3163
- // Traverse up the tree
3164
- while ( parent && parent !== this ) {
3165
- parent = parent.parentNode;
3166
- }
3200
+ if ( !inside ) {
3167
3201
 
3168
- if ( parent !== this ) {
3169
- // handle event if we actually just moused on to a non sub-element
3170
3202
  jQuery.event.handle.apply( this, arguments );
3171
- }
3172
3203
 
3173
- // assuming we've left the element since we most likely mousedover a xul element
3174
- } catch(e) { }
3204
+ event.type = eventType;
3205
+ }
3206
+ }
3175
3207
  },
3176
3208
 
3177
3209
  // In case of event delegation, we only need to rename the event.type,
@@ -5890,8 +5922,21 @@ function cloneFixAttributes( src, dest ) {
5890
5922
  }
5891
5923
 
5892
5924
  jQuery.buildFragment = function( args, nodes, scripts ) {
5893
- var fragment, cacheable, cacheresults,
5894
- doc = (nodes && nodes[0] ? nodes[0].ownerDocument || nodes[0] : document);
5925
+ var fragment, cacheable, cacheresults, doc;
5926
+
5927
+ // nodes may contain either an explicit document object,
5928
+ // a jQuery collection or context object.
5929
+ // If nodes[0] contains a valid object to assign to doc
5930
+ if ( nodes && nodes[0] ) {
5931
+ doc = nodes[0].ownerDocument || nodes[0];
5932
+ }
5933
+
5934
+ // Ensure that an attr object doesn't incorrectly stand in as a document object
5935
+ // Chrome and Firefox seem to allow this to occur and will throw exception
5936
+ // Fixes #8950
5937
+ if ( !doc.createDocumentFragment ) {
5938
+ doc = document;
5939
+ }
5895
5940
 
5896
5941
  // Only cache "small" (1/2 KB) HTML strings that are associated with the main document
5897
5942
  // Cloning options loses the selected state, so don't cache them
@@ -5972,7 +6017,7 @@ function fixDefaultChecked( elem ) {
5972
6017
  function findInputs( elem ) {
5973
6018
  if ( jQuery.nodeName( elem, "input" ) ) {
5974
6019
  fixDefaultChecked( elem );
5975
- } else if ( elem.getElementsByTagName ) {
6020
+ } else if ( "getElementsByTagName" in elem ) {
5976
6021
  jQuery.grep( elem.getElementsByTagName("input"), fixDefaultChecked );
5977
6022
  }
5978
6023
  }
@@ -6021,6 +6066,8 @@ jQuery.extend({
6021
6066
  }
6022
6067
  }
6023
6068
 
6069
+ srcElements = destElements = null;
6070
+
6024
6071
  // Return the cloned set
6025
6072
  return clone;
6026
6073
  },
@@ -6201,10 +6248,8 @@ function evalScript( i, elem ) {
6201
6248
 
6202
6249
 
6203
6250
 
6204
-
6205
6251
  var ralpha = /alpha\([^)]*\)/i,
6206
6252
  ropacity = /opacity=([^)]*)/,
6207
- rdashAlpha = /-([a-z])/ig,
6208
6253
  // fixed for IE9, see #8346
6209
6254
  rupper = /([A-Z]|^ms)/g,
6210
6255
  rnumpx = /^-?\d+(?:px)?$/i,
@@ -6218,11 +6263,7 @@ var ralpha = /alpha\([^)]*\)/i,
6218
6263
  curCSS,
6219
6264
 
6220
6265
  getComputedStyle,
6221
- currentStyle,
6222
-
6223
- fcamelCase = function( all, letter ) {
6224
- return letter.toUpperCase();
6225
- };
6266
+ currentStyle;
6226
6267
 
6227
6268
  jQuery.fn.css = function( name, value ) {
6228
6269
  // Setting 'undefined' is a no-op
@@ -6257,13 +6298,14 @@ jQuery.extend({
6257
6298
 
6258
6299
  // Exclude the following css properties to add px
6259
6300
  cssNumber: {
6260
- "zIndex": true,
6301
+ "fillOpacity": true,
6261
6302
  "fontWeight": true,
6262
- "opacity": true,
6263
- "zoom": true,
6264
6303
  "lineHeight": true,
6304
+ "opacity": true,
6305
+ "orphans": true,
6265
6306
  "widows": true,
6266
- "orphans": true
6307
+ "zIndex": true,
6308
+ "zoom": true
6267
6309
  },
6268
6310
 
6269
6311
  // Add in properties whose names you wish to fix before
@@ -6298,6 +6340,8 @@ jQuery.extend({
6298
6340
  // convert relative number strings (+= or -=) to relative numbers. #7345
6299
6341
  if ( type === "string" && rrelNum.test( value ) ) {
6300
6342
  value = +value.replace( rrelNumFilter, "" ) + parseFloat( jQuery.css( elem, name ) );
6343
+ // Fixes bug #9237
6344
+ type = "number";
6301
6345
  }
6302
6346
 
6303
6347
  // If a number was passed in, add 'px' to the (except for certain CSS properties)
@@ -6364,10 +6408,6 @@ jQuery.extend({
6364
6408
  for ( name in options ) {
6365
6409
  elem.style[ name ] = old[ name ];
6366
6410
  }
6367
- },
6368
-
6369
- camelCase: function( string ) {
6370
- return string.replace( rdashAlpha, fcamelCase );
6371
6411
  }
6372
6412
  });
6373
6413
 
@@ -6381,44 +6421,21 @@ jQuery.each(["height", "width"], function( i, name ) {
6381
6421
 
6382
6422
  if ( computed ) {
6383
6423
  if ( elem.offsetWidth !== 0 ) {
6384
- val = getWH( elem, name, extra );
6385
-
6424
+ return getWH( elem, name, extra );
6386
6425
  } else {
6387
6426
  jQuery.swap( elem, cssShow, function() {
6388
6427
  val = getWH( elem, name, extra );
6389
6428
  });
6390
6429
  }
6391
6430
 
6392
- if ( val <= 0 ) {
6393
- val = curCSS( elem, name, name );
6394
-
6395
- if ( val === "0px" && currentStyle ) {
6396
- val = currentStyle( elem, name, name );
6397
- }
6398
-
6399
- if ( val != null ) {
6400
- // Should return "auto" instead of 0, use 0 for
6401
- // temporary backwards-compat
6402
- return val === "" || val === "auto" ? "0px" : val;
6403
- }
6404
- }
6405
-
6406
- if ( val < 0 || val == null ) {
6407
- val = elem.style[ name ];
6408
-
6409
- // Should return "auto" instead of 0, use 0 for
6410
- // temporary backwards-compat
6411
- return val === "" || val === "auto" ? "0px" : val;
6412
- }
6413
-
6414
- return typeof val === "string" ? val : val + "px";
6431
+ return val;
6415
6432
  }
6416
6433
  },
6417
6434
 
6418
6435
  set: function( elem, value ) {
6419
6436
  if ( rnumpx.test( value ) ) {
6420
6437
  // ignore negative width and height values #1599
6421
- value = parseFloat(value);
6438
+ value = parseFloat( value );
6422
6439
 
6423
6440
  if ( value >= 0 ) {
6424
6441
  return value + "px";
@@ -6541,27 +6558,50 @@ if ( document.documentElement.currentStyle ) {
6541
6558
  curCSS = getComputedStyle || currentStyle;
6542
6559
 
6543
6560
  function getWH( elem, name, extra ) {
6544
- var which = name === "width" ? cssWidth : cssHeight,
6545
- val = name === "width" ? elem.offsetWidth : elem.offsetHeight;
6546
6561
 
6547
- if ( extra === "border" ) {
6548
- return val;
6549
- }
6562
+ // Start with offset property
6563
+ var val = name === "width" ? elem.offsetWidth : elem.offsetHeight,
6564
+ which = name === "width" ? cssWidth : cssHeight;
6550
6565
 
6551
- jQuery.each( which, function() {
6552
- if ( !extra ) {
6553
- val -= parseFloat(jQuery.css( elem, "padding" + this )) || 0;
6566
+ if ( val > 0 ) {
6567
+ if ( extra !== "border" ) {
6568
+ jQuery.each( which, function() {
6569
+ if ( !extra ) {
6570
+ val -= parseFloat( jQuery.css( elem, "padding" + this ) ) || 0;
6571
+ }
6572
+ if ( extra === "margin" ) {
6573
+ val += parseFloat( jQuery.css( elem, extra + this ) ) || 0;
6574
+ } else {
6575
+ val -= parseFloat( jQuery.css( elem, "border" + this + "Width" ) ) || 0;
6576
+ }
6577
+ });
6554
6578
  }
6555
6579
 
6556
- if ( extra === "margin" ) {
6557
- val += parseFloat(jQuery.css( elem, "margin" + this )) || 0;
6580
+ return val + "px";
6581
+ }
6558
6582
 
6559
- } else {
6560
- val -= parseFloat(jQuery.css( elem, "border" + this + "Width" )) || 0;
6561
- }
6562
- });
6583
+ // Fall back to computed then uncomputed css if necessary
6584
+ val = curCSS( elem, name, name );
6585
+ if ( val < 0 || val == null ) {
6586
+ val = elem.style[ name ] || 0;
6587
+ }
6588
+ // Normalize "", auto, and prepare for extra
6589
+ val = parseFloat( val ) || 0;
6590
+
6591
+ // Add padding, border, margin
6592
+ if ( extra ) {
6593
+ jQuery.each( which, function() {
6594
+ val += parseFloat( jQuery.css( elem, "padding" + this ) ) || 0;
6595
+ if ( extra !== "padding" ) {
6596
+ val += parseFloat( jQuery.css( elem, "border" + this + "Width" ) ) || 0;
6597
+ }
6598
+ if ( extra === "margin" ) {
6599
+ val += parseFloat( jQuery.css( elem, extra + this ) ) || 0;
6600
+ }
6601
+ });
6602
+ }
6563
6603
 
6564
- return val;
6604
+ return val + "px";
6565
6605
  }
6566
6606
 
6567
6607
  if ( jQuery.expr && jQuery.expr.filters ) {
@@ -7838,7 +7878,7 @@ if ( jQuery.support.ajax ) {
7838
7878
  xml;
7839
7879
 
7840
7880
  // Firefox throws exceptions when accessing properties
7841
- // of an xhr when a network error occured
7881
+ // of an xhr when a network error occurred
7842
7882
  // http://helpful.knobs-dials.com/index.php/Component_returned_failure_code:_0x80040111_(NS_ERROR_NOT_AVAILABLE)
7843
7883
  try {
7844
7884
 
@@ -7957,8 +7997,8 @@ var elemdisplay = {},
7957
7997
  ],
7958
7998
  fxNow,
7959
7999
  requestAnimationFrame = window.webkitRequestAnimationFrame ||
7960
- window.mozRequestAnimationFrame ||
7961
- window.oRequestAnimationFrame;
8000
+ window.mozRequestAnimationFrame ||
8001
+ window.oRequestAnimationFrame;
7962
8002
 
7963
8003
  jQuery.fn.extend({
7964
8004
  show: function( speed, easing, callback ) {
@@ -8272,15 +8312,15 @@ jQuery.extend({
8272
8312
  // Queueing
8273
8313
  opt.old = opt.complete;
8274
8314
  opt.complete = function( noUnmark ) {
8315
+ if ( jQuery.isFunction( opt.old ) ) {
8316
+ opt.old.call( this );
8317
+ }
8318
+
8275
8319
  if ( opt.queue !== false ) {
8276
8320
  jQuery.dequeue( this );
8277
8321
  } else if ( noUnmark !== false ) {
8278
8322
  jQuery._unmark( this );
8279
8323
  }
8280
-
8281
- if ( jQuery.isFunction( opt.old ) ) {
8282
- opt.old.call( this );
8283
- }
8284
8324
  };
8285
8325
 
8286
8326
  return opt;
@@ -8353,7 +8393,7 @@ jQuery.fx.prototype = {
8353
8393
  if ( t() && jQuery.timers.push(t) && !timerId ) {
8354
8394
  // Use requestAnimationFrame instead of setInterval if available
8355
8395
  if ( requestAnimationFrame ) {
8356
- timerId = 1;
8396
+ timerId = true;
8357
8397
  raf = function() {
8358
8398
  // When timerId gets set to null at any point, this stops
8359
8399
  if ( timerId ) {
@@ -8516,7 +8556,8 @@ function defaultDisplay( nodeName ) {
8516
8556
 
8517
8557
  if ( !elemdisplay[ nodeName ] ) {
8518
8558
 
8519
- var elem = jQuery( "<" + nodeName + ">" ).appendTo( "body" ),
8559
+ var body = document.body,
8560
+ elem = jQuery( "<" + nodeName + ">" ).appendTo( body ),
8520
8561
  display = elem.css( "display" );
8521
8562
 
8522
8563
  elem.remove();
@@ -8530,14 +8571,15 @@ function defaultDisplay( nodeName ) {
8530
8571
  iframe.frameBorder = iframe.width = iframe.height = 0;
8531
8572
  }
8532
8573
 
8533
- document.body.appendChild( iframe );
8574
+ body.appendChild( iframe );
8534
8575
 
8535
8576
  // Create a cacheable copy of the iframe document on first call.
8536
- // IE and Opera will allow us to reuse the iframeDoc without re-writing the fake html
8537
- // document to it, Webkit & Firefox won't allow reusing the iframe document
8577
+ // IE and Opera will allow us to reuse the iframeDoc without re-writing the fake HTML
8578
+ // document to it; WebKit & Firefox won't allow reusing the iframe document.
8538
8579
  if ( !iframeDoc || !iframe.createElement ) {
8539
8580
  iframeDoc = ( iframe.contentWindow || iframe.contentDocument ).document;
8540
- iframeDoc.write( "<!doctype><html><body></body></html>" );
8581
+ iframeDoc.write( ( document.compatMode === "CSS1Compat" ? "<!doctype html>" : "" ) + "<html><body>" );
8582
+ iframeDoc.close();
8541
8583
  }
8542
8584
 
8543
8585
  elem = iframeDoc.createElement( nodeName );
@@ -8546,7 +8588,7 @@ function defaultDisplay( nodeName ) {
8546
8588
 
8547
8589
  display = jQuery.css( elem, "display" );
8548
8590
 
8549
- document.body.removeChild( iframe );
8591
+ body.removeChild( iframe );
8550
8592
  }
8551
8593
 
8552
8594
  // Store the correct default display
@@ -8867,22 +8909,24 @@ function getWindow( elem ) {
8867
8909
 
8868
8910
 
8869
8911
 
8870
- // Create innerHeight, innerWidth, outerHeight and outerWidth methods
8912
+ // Create width, height, innerHeight, innerWidth, outerHeight and outerWidth methods
8871
8913
  jQuery.each([ "Height", "Width" ], function( i, name ) {
8872
8914
 
8873
8915
  var type = name.toLowerCase();
8874
8916
 
8875
8917
  // innerHeight and innerWidth
8876
- jQuery.fn["inner" + name] = function() {
8877
- return this[0] ?
8878
- parseFloat( jQuery.css( this[0], type, "padding" ) ) :
8918
+ jQuery.fn[ "inner" + name ] = function() {
8919
+ var elem = this[0];
8920
+ return elem && elem.style ?
8921
+ parseFloat( jQuery.css( elem, type, "padding" ) ) :
8879
8922
  null;
8880
8923
  };
8881
8924
 
8882
8925
  // outerHeight and outerWidth
8883
- jQuery.fn["outer" + name] = function( margin ) {
8884
- return this[0] ?
8885
- parseFloat( jQuery.css( this[0], type, margin ? "margin" : "border" ) ) :
8926
+ jQuery.fn[ "outer" + name ] = function( margin ) {
8927
+ var elem = this[0];
8928
+ return elem && elem.style ?
8929
+ parseFloat( jQuery.css( elem, type, margin ? "margin" : "border" ) ) :
8886
8930
  null;
8887
8931
  };
8888
8932
 
@@ -8932,5 +8976,6 @@ jQuery.each([ "Height", "Width" ], function( i, name ) {
8932
8976
  });
8933
8977
 
8934
8978
 
8979
+ // Expose jQuery to the global object
8935
8980
  window.jQuery = window.$ = jQuery;
8936
8981
  })(window);