compass-jquery-plugin 0.3.3.0 → 0.3.3.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (220) hide show
  1. data/README.md +4 -4
  2. data/VERSION.yml +1 -1
  3. data/lib/handle_js_files.rb +1 -1
  4. data/lib/jquery/gridify/grid_column.rb +4 -0
  5. data/lib/jquery/gridify/grid_options.rb +5 -1
  6. data/lib/jquery/gridify/grid_view.rb +8 -3
  7. data/templates/dynatree/jquery.dynatree.js +184 -73
  8. data/templates/dynatree/jquery.dynatree.min.js +78 -76
  9. data/templates/emulators/emulators/galaxy.tab.7.7.landscape.png +0 -0
  10. data/templates/emulators/emulators/{palm.pre.2.landscape.scss → galaxy.tab.7.7.landscape.scss} +7 -7
  11. data/templates/emulators/emulators/galaxy.tab.7.7.portrait.png +0 -0
  12. data/templates/emulators/emulators/{palm.pre.2.portrait.scss → galaxy.tab.7.7.portrait.scss} +7 -7
  13. data/templates/emulators/manifest.rb +4 -4
  14. data/templates/graphics/config/initializers/graphics.rb +1 -1
  15. data/templates/graphics/highcharts/dark-blue.js +257 -159
  16. data/templates/graphics/highcharts/dark-blue.min.js +4 -2
  17. data/templates/graphics/highcharts/dark-green.js +257 -159
  18. data/templates/graphics/highcharts/dark-green.min.js +4 -2
  19. data/templates/graphics/highcharts/gray.js +252 -154
  20. data/templates/graphics/highcharts/gray.min.js +4 -2
  21. data/templates/graphics/highcharts/grid.js +84 -84
  22. data/templates/graphics/highcharts/highslide-full.min.js +3 -3
  23. data/templates/graphics/highcharts/highslide.js +3391 -0
  24. data/templates/graphics/highcharts/highslide.min.js +132 -0
  25. data/templates/graphics/jquery.ganttView.min.js +4 -4
  26. data/templates/graphics/jquery.highcharts.js +15379 -1071
  27. data/templates/graphics/jquery.highcharts.min.js +384 -167
  28. data/templates/graphics/jquery.sparkline.min.js +2 -2
  29. data/templates/graphics/manifest.rb +2 -0
  30. data/templates/ical/jquery.ical.min.js +46 -47
  31. data/templates/jqgrid/i18n/jqgrid/locale-bg.min.js +2 -2
  32. data/templates/jqgrid/i18n/jqgrid/locale-bg1251.min.js +2 -2
  33. data/templates/jqgrid/i18n/jqgrid/locale-fi.js +20 -19
  34. data/templates/jqgrid/i18n/jqgrid/locale-fi.min.js +7 -6
  35. data/templates/jqgrid/i18n/jqgrid/locale-is.js +28 -28
  36. data/templates/jqgrid/i18n/jqgrid/locale-is.min.js +6 -6
  37. data/templates/jqgrid/i18n/jqgrid/locale-th.js +134 -0
  38. data/templates/jqgrid/i18n/jqgrid/locale-th.min.js +6 -0
  39. data/templates/jqgrid/jquery.jqGrid.js +674 -598
  40. data/templates/jqgrid/jquery.jqGrid.min.js +444 -441
  41. data/templates/jqgrid/jquery/jqGrid.scss +0 -3
  42. data/templates/jqgrid/manifest.rb +2 -0
  43. data/templates/jqtouch/jquery.jqtouch.js +201 -156
  44. data/templates/jqtouch/jquery.jqtouch.min.js +1 -1
  45. data/templates/jqtouch/jquery/touch/apple.scss +2 -2
  46. data/templates/jqtouch/jquery/touch/default.scss +2 -2
  47. data/templates/jquery/amplify.store.js +111 -78
  48. data/templates/jquery/amplify.store.min.js +6 -6
  49. data/templates/jquery/history.js +3 -3
  50. data/templates/jquery/i18n/jquery.ui/datepicker-nl.js +1 -1
  51. data/templates/jquery/i18n/jquery.ui/datepicker-nl.min.js +1 -1
  52. data/templates/jquery/jquery-ui.js +1286 -1042
  53. data/templates/jquery/jquery-ui.min.js +320 -316
  54. data/templates/jquery/jquery.contextMenu.js +2 -2
  55. data/templates/jquery/jquery.easing.js +152 -152
  56. data/templates/jquery/jquery.easing.min.js +7 -7
  57. data/templates/jquery/jquery.farbtastic.min.js +2 -2
  58. data/templates/jquery/jquery.form.js +30 -30
  59. data/templates/jquery/jquery.haml.min.js +5 -5
  60. data/templates/jquery/jquery.hotkeys.min.js +1 -1
  61. data/templates/jquery/jquery.js +419 -311
  62. data/templates/jquery/jquery.layout.js +59 -40
  63. data/templates/jquery/jquery.min.js +176 -176
  64. data/templates/jquery/jquery.themeswitchertool.js +37 -37
  65. data/templates/jquery/jquery.tmpl.js +4 -4
  66. data/templates/jquery/jquery.tmpl.min.js +9 -9
  67. data/templates/jquery/jquery.tmplPlus.min.js +3 -3
  68. data/templates/jquery/jquery.tokeninput.js +613 -490
  69. data/templates/jquery/jquery.tokeninput.min.js +17 -14
  70. data/templates/jquery/jquery/ui/_theme.scss +39 -63
  71. data/templates/jquery/json.js +31 -15
  72. data/templates/jstree/jquery.jstree.js +415 -410
  73. data/templates/jstree/jquery.jstree.min.js +134 -133
  74. data/templates/markitup/jquery.markitup.js +567 -560
  75. data/templates/markitup/jquery.markitup.min.js +1 -1
  76. data/templates/markitup/jquery/markitup/sets/default.scss +7 -3
  77. data/templates/markitup/jquery/markitup/sets/default/list-bullet.png +0 -0
  78. data/templates/markitup/jquery/markitup/sets/default/list-numeric.png +0 -0
  79. data/templates/markitup/jquery/markitup/skins/markitup.scss +3 -10
  80. data/templates/markitup/jquery/markitup/skins/markitup/bg-container.png +0 -0
  81. data/templates/markitup/jquery/markitup/skins/markitup/menu.png +0 -0
  82. data/templates/markitup/jquery/markitup/skins/simple.scss +2 -3
  83. data/templates/markitup/jquery/markitup/skins/simple/menu.png +0 -0
  84. data/templates/markitup/manifest.rb +2 -0
  85. data/templates/markitup/markitup/jquery.markitup.set.default.js +21 -21
  86. data/templates/markitup/markitup/jquery.markitup.set.default.min.js +3 -2
  87. data/templates/mobile/jquery.mobile.js +5230 -2846
  88. data/templates/mobile/jquery.mobile.min.js +192 -46
  89. data/templates/mobile/jquery/mobile/_base.scss +141 -18
  90. data/templates/mobile/jquery/mobile/default.scss +263 -66
  91. data/templates/mobile/jquery/mobile/default/icons-18-black.png +0 -0
  92. data/templates/mobile/jquery/mobile/default/icons-18-white.png +0 -0
  93. data/templates/mobile/jquery/mobile/default/icons-36-black.png +0 -0
  94. data/templates/mobile/jquery/mobile/default/icons-36-white.png +0 -0
  95. data/templates/mobile/jquery/mobile/valencia.scss +242 -53
  96. data/templates/mobile/jquery/mobile/valencia/icons-18-black.png +0 -0
  97. data/templates/mobile/jquery/mobile/valencia/icons-18-white.png +0 -0
  98. data/templates/mobile/jquery/mobile/valencia/icons-36-black.png +0 -0
  99. data/templates/mobile/jquery/mobile/valencia/icons-36-white.png +0 -0
  100. data/templates/tiny_mce/manifest.rb +2 -0
  101. data/templates/tiny_mce/tiny_mce/langs/de.js +1 -1
  102. data/templates/tiny_mce/tiny_mce/plugins/advhr/rule.htm +1 -1
  103. data/templates/tiny_mce/tiny_mce/plugins/advimage/editor_plugin.js +1 -1
  104. data/templates/tiny_mce/tiny_mce/plugins/advimage/editor_plugin_src.js +1 -1
  105. data/templates/tiny_mce/tiny_mce/plugins/advimage/image.htm +1 -1
  106. data/templates/tiny_mce/tiny_mce/plugins/advimage/js/image.js +1 -1
  107. data/templates/tiny_mce/tiny_mce/plugins/advlink/link.htm +1 -1
  108. data/templates/tiny_mce/tiny_mce/plugins/advlist/editor_plugin.js +1 -1
  109. data/templates/tiny_mce/tiny_mce/plugins/advlist/editor_plugin_src.js +1 -1
  110. data/templates/tiny_mce/tiny_mce/plugins/autolink/editor_plugin.js +1 -1
  111. data/templates/tiny_mce/tiny_mce/plugins/autolink/editor_plugin_src.js +1 -1
  112. data/templates/tiny_mce/tiny_mce/plugins/autoresize/editor_plugin.js +1 -1
  113. data/templates/tiny_mce/tiny_mce/plugins/autoresize/editor_plugin_src.js +1 -1
  114. data/templates/tiny_mce/tiny_mce/plugins/autosave/editor_plugin.js +1 -1
  115. data/templates/tiny_mce/tiny_mce/plugins/autosave/editor_plugin_src.js +1 -1
  116. data/templates/tiny_mce/tiny_mce/plugins/contextmenu/editor_plugin.js +1 -1
  117. data/templates/tiny_mce/tiny_mce/plugins/contextmenu/editor_plugin_src.js +1 -1
  118. data/templates/tiny_mce/tiny_mce/plugins/emotions/emotions.htm +1 -1
  119. data/templates/tiny_mce/tiny_mce/plugins/emotions/img/smiley-foot-in-mouth.gif +0 -0
  120. data/templates/tiny_mce/tiny_mce/plugins/emotions/img/smiley-laughing.gif +0 -0
  121. data/templates/tiny_mce/tiny_mce/plugins/emotions/img/smiley-sealed.gif +0 -0
  122. data/templates/tiny_mce/tiny_mce/plugins/emotions/img/smiley-smile.gif +0 -0
  123. data/templates/tiny_mce/tiny_mce/plugins/emotions/img/smiley-surprised.gif +0 -0
  124. data/templates/tiny_mce/tiny_mce/plugins/emotions/img/smiley-wink.gif +0 -0
  125. data/templates/tiny_mce/tiny_mce/plugins/example/dialog.htm +1 -1
  126. data/templates/tiny_mce/tiny_mce/plugins/example_dependency/editor_plugin.js +1 -0
  127. data/templates/tiny_mce/tiny_mce/plugins/example_dependency/editor_plugin_src.js +1 -0
  128. data/templates/tiny_mce/tiny_mce/plugins/fullpage/editor_plugin.js +1 -1
  129. data/templates/tiny_mce/tiny_mce/plugins/fullpage/editor_plugin_src.js +1 -1
  130. data/templates/tiny_mce/tiny_mce/plugins/fullpage/fullpage.htm +1 -1
  131. data/templates/tiny_mce/tiny_mce/plugins/inlinepopups/editor_plugin.js +1 -1
  132. data/templates/tiny_mce/tiny_mce/plugins/inlinepopups/editor_plugin_src.js +1 -1
  133. data/templates/tiny_mce/tiny_mce/plugins/inlinepopups/skins/clearlooks2/img/alert.gif +0 -0
  134. data/templates/tiny_mce/tiny_mce/plugins/inlinepopups/skins/clearlooks2/img/button.gif +0 -0
  135. data/templates/tiny_mce/tiny_mce/plugins/inlinepopups/skins/clearlooks2/img/confirm.gif +0 -0
  136. data/templates/tiny_mce/tiny_mce/plugins/inlinepopups/skins/clearlooks2/img/corners.gif +0 -0
  137. data/templates/tiny_mce/tiny_mce/plugins/inlinepopups/skins/clearlooks2/img/vertical.gif +0 -0
  138. data/templates/tiny_mce/tiny_mce/plugins/inlinepopups/skins/clearlooks2/window.css +1 -1
  139. data/templates/tiny_mce/tiny_mce/plugins/inlinepopups/template.htm +1 -1
  140. data/templates/tiny_mce/tiny_mce/plugins/lists/editor_plugin.js +1 -1
  141. data/templates/tiny_mce/tiny_mce/plugins/lists/editor_plugin_src.js +1 -1
  142. data/templates/tiny_mce/tiny_mce/plugins/media/editor_plugin.js +1 -1
  143. data/templates/tiny_mce/tiny_mce/plugins/media/editor_plugin_src.js +1 -1
  144. data/templates/tiny_mce/tiny_mce/plugins/media/js/media.js +1 -1
  145. data/templates/tiny_mce/tiny_mce/plugins/media/langs/en_dlg.js +1 -1
  146. data/templates/tiny_mce/tiny_mce/plugins/media/media.htm +1 -1
  147. data/templates/tiny_mce/tiny_mce/plugins/noneditable/editor_plugin.js +1 -1
  148. data/templates/tiny_mce/tiny_mce/plugins/noneditable/editor_plugin_src.js +1 -1
  149. data/templates/tiny_mce/tiny_mce/plugins/paste/editor_plugin.js +1 -1
  150. data/templates/tiny_mce/tiny_mce/plugins/paste/editor_plugin_src.js +1 -1
  151. data/templates/tiny_mce/tiny_mce/plugins/paste/pastetext.htm +1 -1
  152. data/templates/tiny_mce/tiny_mce/plugins/paste/pasteword.htm +1 -1
  153. data/templates/tiny_mce/tiny_mce/plugins/preview/example.html +16 -17
  154. data/templates/tiny_mce/tiny_mce/plugins/preview/preview.html +9 -10
  155. data/templates/tiny_mce/tiny_mce/plugins/searchreplace/searchreplace.htm +1 -1
  156. data/templates/tiny_mce/tiny_mce/plugins/spellchecker/editor_plugin.js +1 -1
  157. data/templates/tiny_mce/tiny_mce/plugins/spellchecker/editor_plugin_src.js +1 -1
  158. data/templates/tiny_mce/tiny_mce/plugins/style/js/props.js +1 -1
  159. data/templates/tiny_mce/tiny_mce/plugins/style/props.htm +1 -1
  160. data/templates/tiny_mce/tiny_mce/plugins/tabfocus/editor_plugin.js +1 -1
  161. data/templates/tiny_mce/tiny_mce/plugins/tabfocus/editor_plugin_src.js +1 -1
  162. data/templates/tiny_mce/tiny_mce/plugins/table/cell.htm +1 -1
  163. data/templates/tiny_mce/tiny_mce/plugins/table/editor_plugin.js +1 -1
  164. data/templates/tiny_mce/tiny_mce/plugins/table/editor_plugin_src.js +1 -1
  165. data/templates/tiny_mce/tiny_mce/plugins/table/js/cell.js +1 -1
  166. data/templates/tiny_mce/tiny_mce/plugins/table/js/row.js +1 -1
  167. data/templates/tiny_mce/tiny_mce/plugins/table/langs/de_dlg.js +1 -1
  168. data/templates/tiny_mce/tiny_mce/plugins/table/langs/en_dlg.js +1 -1
  169. data/templates/tiny_mce/tiny_mce/plugins/table/merge_cells.htm +1 -1
  170. data/templates/tiny_mce/tiny_mce/plugins/table/row.htm +1 -1
  171. data/templates/tiny_mce/tiny_mce/plugins/table/table.htm +1 -1
  172. data/templates/tiny_mce/tiny_mce/plugins/template/blank.htm +1 -1
  173. data/templates/tiny_mce/tiny_mce/plugins/template/template.htm +1 -1
  174. data/templates/tiny_mce/tiny_mce/plugins/wordcount/editor_plugin.js +1 -1
  175. data/templates/tiny_mce/tiny_mce/plugins/wordcount/editor_plugin_src.js +1 -1
  176. data/templates/tiny_mce/tiny_mce/plugins/xhtmlxtras/abbr.htm +1 -1
  177. data/templates/tiny_mce/tiny_mce/plugins/xhtmlxtras/acronym.htm +1 -1
  178. data/templates/tiny_mce/tiny_mce/plugins/xhtmlxtras/attributes.htm +1 -1
  179. data/templates/tiny_mce/tiny_mce/plugins/xhtmlxtras/cite.htm +1 -1
  180. data/templates/tiny_mce/tiny_mce/plugins/xhtmlxtras/del.htm +1 -1
  181. data/templates/tiny_mce/tiny_mce/plugins/xhtmlxtras/ins.htm +1 -1
  182. data/templates/tiny_mce/tiny_mce/themes/advanced/about.htm +1 -1
  183. data/templates/tiny_mce/tiny_mce/themes/advanced/anchor.htm +1 -1
  184. data/templates/tiny_mce/tiny_mce/themes/advanced/color_picker.htm +1 -1
  185. data/templates/tiny_mce/tiny_mce/themes/advanced/editor_template.js +1 -1
  186. data/templates/tiny_mce/tiny_mce/themes/advanced/editor_template_src.js +1 -1
  187. data/templates/tiny_mce/tiny_mce/themes/advanced/image.htm +1 -1
  188. data/templates/tiny_mce/tiny_mce/themes/advanced/img/colorpicker.jpg +0 -0
  189. data/templates/tiny_mce/tiny_mce/themes/advanced/img/flash.gif +0 -0
  190. data/templates/tiny_mce/tiny_mce/themes/advanced/img/icons.gif +0 -0
  191. data/templates/tiny_mce/tiny_mce/themes/advanced/img/quicktime.gif +0 -0
  192. data/templates/tiny_mce/tiny_mce/themes/advanced/img/shockwave.gif +0 -0
  193. data/templates/tiny_mce/tiny_mce/themes/advanced/js/image.js +1 -1
  194. data/templates/tiny_mce/tiny_mce/themes/advanced/langs/de.js +1 -1
  195. data/templates/tiny_mce/tiny_mce/themes/advanced/link.htm +1 -1
  196. data/templates/tiny_mce/tiny_mce/themes/advanced/skins/default/content.css +1 -1
  197. data/templates/tiny_mce/tiny_mce/themes/advanced/skins/default/dialog.css +1 -1
  198. data/templates/tiny_mce/tiny_mce/themes/advanced/skins/default/img/buttons.png +0 -0
  199. data/templates/tiny_mce/tiny_mce/themes/advanced/skins/default/img/items.gif +0 -0
  200. data/templates/tiny_mce/tiny_mce/themes/advanced/skins/default/img/tabs.gif +0 -0
  201. data/templates/tiny_mce/tiny_mce/themes/advanced/skins/default/ui.css +1 -1
  202. data/templates/tiny_mce/tiny_mce/themes/advanced/skins/highcontrast/dialog.css +1 -1
  203. data/templates/tiny_mce/tiny_mce/themes/advanced/skins/highcontrast/ui.css +1 -1
  204. data/templates/tiny_mce/tiny_mce/themes/advanced/skins/o2k7/content.css +1 -1
  205. data/templates/tiny_mce/tiny_mce/themes/advanced/skins/o2k7/dialog.css +1 -1
  206. data/templates/tiny_mce/tiny_mce/themes/advanced/skins/o2k7/img/button_bg.png +0 -0
  207. data/templates/tiny_mce/tiny_mce/themes/advanced/skins/o2k7/img/button_bg_black.png +0 -0
  208. data/templates/tiny_mce/tiny_mce/themes/advanced/skins/o2k7/img/button_bg_silver.png +0 -0
  209. data/templates/tiny_mce/tiny_mce/themes/advanced/skins/o2k7/ui.css +1 -1
  210. data/templates/tiny_mce/tiny_mce/themes/advanced/source_editor.htm +1 -1
  211. data/templates/tiny_mce/tiny_mce/themes/simple/img/icons.gif +0 -0
  212. data/templates/tiny_mce/tiny_mce/themes/simple/skins/default/ui.css +1 -1
  213. data/templates/tiny_mce/tiny_mce/themes/simple/skins/o2k7/ui.css +1 -1
  214. data/templates/tiny_mce/tiny_mce/tiny_mce.js +1 -1
  215. data/templates/tools/flowplayer.min.js +1 -1
  216. data/templates/tools/jquery.tools.js +17 -17
  217. data/templates/tools/jquery.tools.min.js +22 -22
  218. metadata +17 -9
  219. data/templates/emulators/emulators/palm.pre.2.landscape.png +0 -0
  220. data/templates/emulators/emulators/palm.pre.2.portrait.png +0 -0
@@ -76,8 +76,8 @@ if (jQuery)( function() {
76
76
  $(menu).find('LI.hover').removeClass('hover');
77
77
  $(this).parent().addClass('hover');
78
78
  }).mouseout(function() {
79
- $(menu).find('LI.hover').removeClass('hover');
80
- });
79
+ $(menu).find('LI.hover').removeClass('hover');
80
+ });
81
81
 
82
82
  // Keyboard
83
83
  $(document).keypress(function(e) {
@@ -39,158 +39,158 @@
39
39
  jQuery.easing['jswing'] = jQuery.easing['swing'];
40
40
 
41
41
  jQuery.extend(jQuery.easing,
42
- {
43
- def: 'easeOutQuad',
44
- swing: function (x, t, b, c, d) {
45
- //alert(jQuery.easing.default);
46
- return jQuery.easing[jQuery.easing.def](x, t, b, c, d);
47
- },
48
- easeInQuad: function (x, t, b, c, d) {
49
- return c * (t /= d) * t + b;
50
- },
51
- easeOutQuad: function (x, t, b, c, d) {
52
- return -c * (t /= d) * (t - 2) + b;
53
- },
54
- easeInOutQuad: function (x, t, b, c, d) {
55
- if ((t /= d / 2) < 1) return c / 2 * t * t + b;
56
- return -c / 2 * ((--t) * (t - 2) - 1) + b;
57
- },
58
- easeInCubic: function (x, t, b, c, d) {
59
- return c * (t /= d) * t * t + b;
60
- },
61
- easeOutCubic: function (x, t, b, c, d) {
62
- return c * ((t = t / d - 1) * t * t + 1) + b;
63
- },
64
- easeInOutCubic: function (x, t, b, c, d) {
65
- if ((t /= d / 2) < 1) return c / 2 * t * t * t + b;
66
- return c / 2 * ((t -= 2) * t * t + 2) + b;
67
- },
68
- easeInQuart: function (x, t, b, c, d) {
69
- return c * (t /= d) * t * t * t + b;
70
- },
71
- easeOutQuart: function (x, t, b, c, d) {
72
- return -c * ((t = t / d - 1) * t * t * t - 1) + b;
73
- },
74
- easeInOutQuart: function (x, t, b, c, d) {
75
- if ((t /= d / 2) < 1) return c / 2 * t * t * t * t + b;
76
- return -c / 2 * ((t -= 2) * t * t * t - 2) + b;
77
- },
78
- easeInQuint: function (x, t, b, c, d) {
79
- return c * (t /= d) * t * t * t * t + b;
80
- },
81
- easeOutQuint: function (x, t, b, c, d) {
82
- return c * ((t = t / d - 1) * t * t * t * t + 1) + b;
83
- },
84
- easeInOutQuint: function (x, t, b, c, d) {
85
- if ((t /= d / 2) < 1) return c / 2 * t * t * t * t * t + b;
86
- return c / 2 * ((t -= 2) * t * t * t * t + 2) + b;
87
- },
88
- easeInSine: function (x, t, b, c, d) {
89
- return -c * Math.cos(t / d * (Math.PI / 2)) + c + b;
90
- },
91
- easeOutSine: function (x, t, b, c, d) {
92
- return c * Math.sin(t / d * (Math.PI / 2)) + b;
93
- },
94
- easeInOutSine: function (x, t, b, c, d) {
95
- return -c / 2 * (Math.cos(Math.PI * t / d) - 1) + b;
96
- },
97
- easeInExpo: function (x, t, b, c, d) {
98
- return (t == 0) ? b : c * Math.pow(2, 10 * (t / d - 1)) + b;
99
- },
100
- easeOutExpo: function (x, t, b, c, d) {
101
- return (t == d) ? b + c : c * (-Math.pow(2, -10 * t / d) + 1) + b;
102
- },
103
- easeInOutExpo: function (x, t, b, c, d) {
104
- if (t == 0) return b;
105
- if (t == d) return b + c;
106
- if ((t /= d / 2) < 1) return c / 2 * Math.pow(2, 10 * (t - 1)) + b;
107
- return c / 2 * (-Math.pow(2, -10 * --t) + 2) + b;
108
- },
109
- easeInCirc: function (x, t, b, c, d) {
110
- return -c * (Math.sqrt(1 - (t /= d) * t) - 1) + b;
111
- },
112
- easeOutCirc: function (x, t, b, c, d) {
113
- return c * Math.sqrt(1 - (t = t / d - 1) * t) + b;
114
- },
115
- easeInOutCirc: function (x, t, b, c, d) {
116
- if ((t /= d / 2) < 1) return -c / 2 * (Math.sqrt(1 - t * t) - 1) + b;
117
- return c / 2 * (Math.sqrt(1 - (t -= 2) * t) + 1) + b;
118
- },
119
- easeInElastic: function (x, t, b, c, d) {
120
- var s = 1.70158;
121
- var p = 0;
122
- var a = c;
123
- if (t == 0) return b;
124
- if ((t /= d) == 1) return b + c;
125
- if (!p) p = d * .3;
126
- if (a < Math.abs(c)) {
127
- a = c;
128
- var s = p / 4;
129
- }
130
- else var s = p / (2 * Math.PI) * Math.asin(c / a);
131
- return -(a * Math.pow(2, 10 * (t -= 1)) * Math.sin((t * d - s) * (2 * Math.PI) / p)) + b;
132
- },
133
- easeOutElastic: function (x, t, b, c, d) {
134
- var s = 1.70158;
135
- var p = 0;
136
- var a = c;
137
- if (t == 0) return b;
138
- if ((t /= d) == 1) return b + c;
139
- if (!p) p = d * .3;
140
- if (a < Math.abs(c)) {
141
- a = c;
142
- var s = p / 4;
143
- }
144
- else var s = p / (2 * Math.PI) * Math.asin(c / a);
145
- return a * Math.pow(2, -10 * t) * Math.sin((t * d - s) * (2 * Math.PI) / p) + c + b;
146
- },
147
- easeInOutElastic: function (x, t, b, c, d) {
148
- var s = 1.70158;
149
- var p = 0;
150
- var a = c;
151
- if (t == 0) return b;
152
- if ((t /= d / 2) == 2) return b + c;
153
- if (!p) p = d * (.3 * 1.5);
154
- if (a < Math.abs(c)) {
155
- a = c;
156
- var s = p / 4;
157
- }
158
- else var s = p / (2 * Math.PI) * Math.asin(c / a);
159
- if (t < 1) return -.5 * (a * Math.pow(2, 10 * (t -= 1)) * Math.sin((t * d - s) * (2 * Math.PI) / p)) + b;
160
- return a * Math.pow(2, -10 * (t -= 1)) * Math.sin((t * d - s) * (2 * Math.PI) / p) * .5 + c + b;
161
- },
162
- easeInBack: function (x, t, b, c, d, s) {
163
- if (s == undefined) s = 1.70158;
164
- return c * (t /= d) * t * ((s + 1) * t - s) + b;
165
- },
166
- easeOutBack: function (x, t, b, c, d, s) {
167
- if (s == undefined) s = 1.70158;
168
- return c * ((t = t / d - 1) * t * ((s + 1) * t + s) + 1) + b;
169
- },
170
- easeInOutBack: function (x, t, b, c, d, s) {
171
- if (s == undefined) s = 1.70158;
172
- if ((t /= d / 2) < 1) return c / 2 * (t * t * (((s *= (1.525)) + 1) * t - s)) + b;
173
- return c / 2 * ((t -= 2) * t * (((s *= (1.525)) + 1) * t + s) + 2) + b;
174
- },
175
- easeInBounce: function (x, t, b, c, d) {
176
- return c - jQuery.easing.easeOutBounce(x, d - t, 0, c, d) + b;
177
- },
178
- easeOutBounce: function (x, t, b, c, d) {
179
- if ((t /= d) < (1 / 2.75)) {
180
- return c * (7.5625 * t * t) + b;
181
- } else if (t < (2 / 2.75)) {
182
- return c * (7.5625 * (t -= (1.5 / 2.75)) * t + .75) + b;
183
- } else if (t < (2.5 / 2.75)) {
184
- return c * (7.5625 * (t -= (2.25 / 2.75)) * t + .9375) + b;
185
- } else {
186
- return c * (7.5625 * (t -= (2.625 / 2.75)) * t + .984375) + b;
187
- }
188
- },
189
- easeInOutBounce: function (x, t, b, c, d) {
190
- if (t < d / 2) return jQuery.easing.easeInBounce(x, t * 2, 0, c, d) * .5 + b;
191
- return jQuery.easing.easeOutBounce(x, t * 2 - d, 0, c, d) * .5 + c * .5 + b;
192
- }
193
- });
42
+ {
43
+ def: 'easeOutQuad',
44
+ swing: function (x, t, b, c, d) {
45
+ //alert(jQuery.easing.default);
46
+ return jQuery.easing[jQuery.easing.def](x, t, b, c, d);
47
+ },
48
+ easeInQuad: function (x, t, b, c, d) {
49
+ return c * (t /= d) * t + b;
50
+ },
51
+ easeOutQuad: function (x, t, b, c, d) {
52
+ return -c * (t /= d) * (t - 2) + b;
53
+ },
54
+ easeInOutQuad: function (x, t, b, c, d) {
55
+ if ((t /= d / 2) < 1) return c / 2 * t * t + b;
56
+ return -c / 2 * ((--t) * (t - 2) - 1) + b;
57
+ },
58
+ easeInCubic: function (x, t, b, c, d) {
59
+ return c * (t /= d) * t * t + b;
60
+ },
61
+ easeOutCubic: function (x, t, b, c, d) {
62
+ return c * ((t = t / d - 1) * t * t + 1) + b;
63
+ },
64
+ easeInOutCubic: function (x, t, b, c, d) {
65
+ if ((t /= d / 2) < 1) return c / 2 * t * t * t + b;
66
+ return c / 2 * ((t -= 2) * t * t + 2) + b;
67
+ },
68
+ easeInQuart: function (x, t, b, c, d) {
69
+ return c * (t /= d) * t * t * t + b;
70
+ },
71
+ easeOutQuart: function (x, t, b, c, d) {
72
+ return -c * ((t = t / d - 1) * t * t * t - 1) + b;
73
+ },
74
+ easeInOutQuart: function (x, t, b, c, d) {
75
+ if ((t /= d / 2) < 1) return c / 2 * t * t * t * t + b;
76
+ return -c / 2 * ((t -= 2) * t * t * t - 2) + b;
77
+ },
78
+ easeInQuint: function (x, t, b, c, d) {
79
+ return c * (t /= d) * t * t * t * t + b;
80
+ },
81
+ easeOutQuint: function (x, t, b, c, d) {
82
+ return c * ((t = t / d - 1) * t * t * t * t + 1) + b;
83
+ },
84
+ easeInOutQuint: function (x, t, b, c, d) {
85
+ if ((t /= d / 2) < 1) return c / 2 * t * t * t * t * t + b;
86
+ return c / 2 * ((t -= 2) * t * t * t * t + 2) + b;
87
+ },
88
+ easeInSine: function (x, t, b, c, d) {
89
+ return -c * Math.cos(t / d * (Math.PI / 2)) + c + b;
90
+ },
91
+ easeOutSine: function (x, t, b, c, d) {
92
+ return c * Math.sin(t / d * (Math.PI / 2)) + b;
93
+ },
94
+ easeInOutSine: function (x, t, b, c, d) {
95
+ return -c / 2 * (Math.cos(Math.PI * t / d) - 1) + b;
96
+ },
97
+ easeInExpo: function (x, t, b, c, d) {
98
+ return (t == 0) ? b : c * Math.pow(2, 10 * (t / d - 1)) + b;
99
+ },
100
+ easeOutExpo: function (x, t, b, c, d) {
101
+ return (t == d) ? b + c : c * (-Math.pow(2, -10 * t / d) + 1) + b;
102
+ },
103
+ easeInOutExpo: function (x, t, b, c, d) {
104
+ if (t == 0) return b;
105
+ if (t == d) return b + c;
106
+ if ((t /= d / 2) < 1) return c / 2 * Math.pow(2, 10 * (t - 1)) + b;
107
+ return c / 2 * (-Math.pow(2, -10 * --t) + 2) + b;
108
+ },
109
+ easeInCirc: function (x, t, b, c, d) {
110
+ return -c * (Math.sqrt(1 - (t /= d) * t) - 1) + b;
111
+ },
112
+ easeOutCirc: function (x, t, b, c, d) {
113
+ return c * Math.sqrt(1 - (t = t / d - 1) * t) + b;
114
+ },
115
+ easeInOutCirc: function (x, t, b, c, d) {
116
+ if ((t /= d / 2) < 1) return -c / 2 * (Math.sqrt(1 - t * t) - 1) + b;
117
+ return c / 2 * (Math.sqrt(1 - (t -= 2) * t) + 1) + b;
118
+ },
119
+ easeInElastic: function (x, t, b, c, d) {
120
+ var s = 1.70158;
121
+ var p = 0;
122
+ var a = c;
123
+ if (t == 0) return b;
124
+ if ((t /= d) == 1) return b + c;
125
+ if (!p) p = d * .3;
126
+ if (a < Math.abs(c)) {
127
+ a = c;
128
+ var s = p / 4;
129
+ }
130
+ else var s = p / (2 * Math.PI) * Math.asin(c / a);
131
+ return -(a * Math.pow(2, 10 * (t -= 1)) * Math.sin((t * d - s) * (2 * Math.PI) / p)) + b;
132
+ },
133
+ easeOutElastic: function (x, t, b, c, d) {
134
+ var s = 1.70158;
135
+ var p = 0;
136
+ var a = c;
137
+ if (t == 0) return b;
138
+ if ((t /= d) == 1) return b + c;
139
+ if (!p) p = d * .3;
140
+ if (a < Math.abs(c)) {
141
+ a = c;
142
+ var s = p / 4;
143
+ }
144
+ else var s = p / (2 * Math.PI) * Math.asin(c / a);
145
+ return a * Math.pow(2, -10 * t) * Math.sin((t * d - s) * (2 * Math.PI) / p) + c + b;
146
+ },
147
+ easeInOutElastic: function (x, t, b, c, d) {
148
+ var s = 1.70158;
149
+ var p = 0;
150
+ var a = c;
151
+ if (t == 0) return b;
152
+ if ((t /= d / 2) == 2) return b + c;
153
+ if (!p) p = d * (.3 * 1.5);
154
+ if (a < Math.abs(c)) {
155
+ a = c;
156
+ var s = p / 4;
157
+ }
158
+ else var s = p / (2 * Math.PI) * Math.asin(c / a);
159
+ if (t < 1) return -.5 * (a * Math.pow(2, 10 * (t -= 1)) * Math.sin((t * d - s) * (2 * Math.PI) / p)) + b;
160
+ return a * Math.pow(2, -10 * (t -= 1)) * Math.sin((t * d - s) * (2 * Math.PI) / p) * .5 + c + b;
161
+ },
162
+ easeInBack: function (x, t, b, c, d, s) {
163
+ if (s == undefined) s = 1.70158;
164
+ return c * (t /= d) * t * ((s + 1) * t - s) + b;
165
+ },
166
+ easeOutBack: function (x, t, b, c, d, s) {
167
+ if (s == undefined) s = 1.70158;
168
+ return c * ((t = t / d - 1) * t * ((s + 1) * t + s) + 1) + b;
169
+ },
170
+ easeInOutBack: function (x, t, b, c, d, s) {
171
+ if (s == undefined) s = 1.70158;
172
+ if ((t /= d / 2) < 1) return c / 2 * (t * t * (((s *= (1.525)) + 1) * t - s)) + b;
173
+ return c / 2 * ((t -= 2) * t * (((s *= (1.525)) + 1) * t + s) + 2) + b;
174
+ },
175
+ easeInBounce: function (x, t, b, c, d) {
176
+ return c - jQuery.easing.easeOutBounce(x, d - t, 0, c, d) + b;
177
+ },
178
+ easeOutBounce: function (x, t, b, c, d) {
179
+ if ((t /= d) < (1 / 2.75)) {
180
+ return c * (7.5625 * t * t) + b;
181
+ } else if (t < (2 / 2.75)) {
182
+ return c * (7.5625 * (t -= (1.5 / 2.75)) * t + .75) + b;
183
+ } else if (t < (2.5 / 2.75)) {
184
+ return c * (7.5625 * (t -= (2.25 / 2.75)) * t + .9375) + b;
185
+ } else {
186
+ return c * (7.5625 * (t -= (2.625 / 2.75)) * t + .984375) + b;
187
+ }
188
+ },
189
+ easeInOutBounce: function (x, t, b, c, d) {
190
+ if (t < d / 2) return jQuery.easing.easeInBounce(x, t * 2, 0, c, d) * .5 + b;
191
+ return jQuery.easing.easeOutBounce(x, t * 2 - d, 0, c, d) * .5 + c * .5 + b;
192
+ }
193
+ });
194
194
 
195
195
  /*
196
196
  *
@@ -1,8 +1,8 @@
1
1
  jQuery.easing.jswing=jQuery.easing.swing;
2
- jQuery.extend(jQuery.easing,{def:"easeOutQuad",swing:function(e,a,c,b,d){return jQuery.easing[jQuery.easing.def](e,a,c,b,d)},easeInQuad:function(e,a,c,b,d){return b*(a/=d)*a+c},easeOutQuad:function(e,a,c,b,d){return-b*(a/=d)*(a-2)+c},easeInOutQuad:function(e,a,c,b,d){if((a/=d/2)<1)return b/2*a*a+c;return-b/2*(--a*(a-2)-1)+c},easeInCubic:function(e,a,c,b,d){return b*(a/=d)*a*a+c},easeOutCubic:function(e,a,c,b,d){return b*((a=a/d-1)*a*a+1)+c},easeInOutCubic:function(e,a,c,b,d){if((a/=d/2)<1)return b/
3
- 2*a*a*a+c;return b/2*((a-=2)*a*a+2)+c},easeInQuart:function(e,a,c,b,d){return b*(a/=d)*a*a*a+c},easeOutQuart:function(e,a,c,b,d){return-b*((a=a/d-1)*a*a*a-1)+c},easeInOutQuart:function(e,a,c,b,d){if((a/=d/2)<1)return b/2*a*a*a*a+c;return-b/2*((a-=2)*a*a*a-2)+c},easeInQuint:function(e,a,c,b,d){return b*(a/=d)*a*a*a*a+c},easeOutQuint:function(e,a,c,b,d){return b*((a=a/d-1)*a*a*a*a+1)+c},easeInOutQuint:function(e,a,c,b,d){if((a/=d/2)<1)return b/2*a*a*a*a*a+c;return b/2*((a-=2)*a*a*a*a+2)+c},easeInSine:function(e,
4
- a,c,b,d){return-b*Math.cos(a/d*(Math.PI/2))+b+c},easeOutSine:function(e,a,c,b,d){return b*Math.sin(a/d*(Math.PI/2))+c},easeInOutSine:function(e,a,c,b,d){return-b/2*(Math.cos(Math.PI*a/d)-1)+c},easeInExpo:function(e,a,c,b,d){return a==0?c:b*Math.pow(2,10*(a/d-1))+c},easeOutExpo:function(e,a,c,b,d){return a==d?c+b:b*(-Math.pow(2,-10*a/d)+1)+c},easeInOutExpo:function(e,a,c,b,d){if(a==0)return c;if(a==d)return c+b;if((a/=d/2)<1)return b/2*Math.pow(2,10*(a-1))+c;return b/2*(-Math.pow(2,-10*--a)+2)+c},
5
- easeInCirc:function(e,a,c,b,d){return-b*(Math.sqrt(1-(a/=d)*a)-1)+c},easeOutCirc:function(e,a,c,b,d){return b*Math.sqrt(1-(a=a/d-1)*a)+c},easeInOutCirc:function(e,a,c,b,d){if((a/=d/2)<1)return-b/2*(Math.sqrt(1-a*a)-1)+c;return b/2*(Math.sqrt(1-(a-=2)*a)+1)+c},easeInElastic:function(e,a,c,b,d){var e=1.70158,f=0,g=b;if(a==0)return c;if((a/=d)==1)return c+b;f||(f=d*0.3);g<Math.abs(b)?(g=b,e=f/4):e=f/(2*Math.PI)*Math.asin(b/g);return-(g*Math.pow(2,10*(a-=1))*Math.sin((a*d-e)*2*Math.PI/f))+c},easeOutElastic:function(e,
6
- a,c,b,d){var e=1.70158,f=0,g=b;if(a==0)return c;if((a/=d)==1)return c+b;f||(f=d*0.3);g<Math.abs(b)?(g=b,e=f/4):e=f/(2*Math.PI)*Math.asin(b/g);return g*Math.pow(2,-10*a)*Math.sin((a*d-e)*2*Math.PI/f)+b+c},easeInOutElastic:function(e,a,c,b,d){var e=1.70158,f=0,g=b;if(a==0)return c;if((a/=d/2)==2)return c+b;f||(f=d*0.3*1.5);g<Math.abs(b)?(g=b,e=f/4):e=f/(2*Math.PI)*Math.asin(b/g);if(a<1)return-0.5*g*Math.pow(2,10*(a-=1))*Math.sin((a*d-e)*2*Math.PI/f)+c;return g*Math.pow(2,-10*(a-=1))*Math.sin((a*d-e)*
7
- 2*Math.PI/f)*0.5+b+c},easeInBack:function(e,a,c,b,d,f){f==void 0&&(f=1.70158);return b*(a/=d)*a*((f+1)*a-f)+c},easeOutBack:function(e,a,c,b,d,f){f==void 0&&(f=1.70158);return b*((a=a/d-1)*a*((f+1)*a+f)+1)+c},easeInOutBack:function(e,a,c,b,d,f){f==void 0&&(f=1.70158);if((a/=d/2)<1)return b/2*a*a*(((f*=1.525)+1)*a-f)+c;return b/2*((a-=2)*a*(((f*=1.525)+1)*a+f)+2)+c},easeInBounce:function(e,a,c,b,d){return b-jQuery.easing.easeOutBounce(e,d-a,0,b,d)+c},easeOutBounce:function(e,a,c,b,d){return(a/=d)<1/
8
- 2.75?b*7.5625*a*a+c:a<2/2.75?b*(7.5625*(a-=1.5/2.75)*a+0.75)+c:a<2.5/2.75?b*(7.5625*(a-=2.25/2.75)*a+0.9375)+c:b*(7.5625*(a-=2.625/2.75)*a+0.984375)+c},easeInOutBounce:function(e,a,c,b,d){if(a<d/2)return jQuery.easing.easeInBounce(e,a*2,0,b,d)*0.5+c;return jQuery.easing.easeOutBounce(e,a*2-d,0,b,d)*0.5+b*0.5+c}});
2
+ jQuery.extend(jQuery.easing,{def:"easeOutQuad",swing:function(e,a,c,b,d){return jQuery.easing[jQuery.easing.def](e,a,c,b,d)},easeInQuad:function(e,a,c,b,d){return b*(a/=d)*a+c},easeOutQuad:function(e,a,c,b,d){return-b*(a/=d)*(a-2)+c},easeInOutQuad:function(e,a,c,b,d){return(a/=d/2)<1?b/2*a*a+c:-b/2*(--a*(a-2)-1)+c},easeInCubic:function(e,a,c,b,d){return b*(a/=d)*a*a+c},easeOutCubic:function(e,a,c,b,d){return b*((a=a/d-1)*a*a+1)+c},easeInOutCubic:function(e,a,c,b,d){return(a/=d/2)<1?b/2*a*a*a+c:b/
3
+ 2*((a-=2)*a*a+2)+c},easeInQuart:function(e,a,c,b,d){return b*(a/=d)*a*a*a+c},easeOutQuart:function(e,a,c,b,d){return-b*((a=a/d-1)*a*a*a-1)+c},easeInOutQuart:function(e,a,c,b,d){return(a/=d/2)<1?b/2*a*a*a*a+c:-b/2*((a-=2)*a*a*a-2)+c},easeInQuint:function(e,a,c,b,d){return b*(a/=d)*a*a*a*a+c},easeOutQuint:function(e,a,c,b,d){return b*((a=a/d-1)*a*a*a*a+1)+c},easeInOutQuint:function(e,a,c,b,d){return(a/=d/2)<1?b/2*a*a*a*a*a+c:b/2*((a-=2)*a*a*a*a+2)+c},easeInSine:function(e,a,c,b,d){return-b*Math.cos(a/
4
+ d*(Math.PI/2))+b+c},easeOutSine:function(e,a,c,b,d){return b*Math.sin(a/d*(Math.PI/2))+c},easeInOutSine:function(e,a,c,b,d){return-b/2*(Math.cos(Math.PI*a/d)-1)+c},easeInExpo:function(e,a,c,b,d){return a==0?c:b*Math.pow(2,10*(a/d-1))+c},easeOutExpo:function(e,a,c,b,d){return a==d?c+b:b*(-Math.pow(2,-10*a/d)+1)+c},easeInOutExpo:function(e,a,c,b,d){return a==0?c:a==d?c+b:(a/=d/2)<1?b/2*Math.pow(2,10*(a-1))+c:b/2*(-Math.pow(2,-10*--a)+2)+c},easeInCirc:function(e,a,c,b,d){return-b*(Math.sqrt(1-(a/=d)*
5
+ a)-1)+c},easeOutCirc:function(e,a,c,b,d){return b*Math.sqrt(1-(a=a/d-1)*a)+c},easeInOutCirc:function(e,a,c,b,d){return(a/=d/2)<1?-b/2*(Math.sqrt(1-a*a)-1)+c:b/2*(Math.sqrt(1-(a-=2)*a)+1)+c},easeInElastic:function(e,a,c,b,d){var e=1.70158,f=0,g=b;if(a==0)return c;if((a/=d)==1)return c+b;f||(f=d*0.3);g<Math.abs(b)?(g=b,e=f/4):e=f/(2*Math.PI)*Math.asin(b/g);return-(g*Math.pow(2,10*(a-=1))*Math.sin((a*d-e)*2*Math.PI/f))+c},easeOutElastic:function(e,a,c,b,d){var e=1.70158,f=0,g=b;if(a==0)return c;if((a/=
6
+ d)==1)return c+b;f||(f=d*0.3);g<Math.abs(b)?(g=b,e=f/4):e=f/(2*Math.PI)*Math.asin(b/g);return g*Math.pow(2,-10*a)*Math.sin((a*d-e)*2*Math.PI/f)+b+c},easeInOutElastic:function(e,a,c,b,d){var e=1.70158,f=0,g=b;if(a==0)return c;if((a/=d/2)==2)return c+b;f||(f=d*0.3*1.5);g<Math.abs(b)?(g=b,e=f/4):e=f/(2*Math.PI)*Math.asin(b/g);return a<1?-0.5*g*Math.pow(2,10*(a-=1))*Math.sin((a*d-e)*2*Math.PI/f)+c:g*Math.pow(2,-10*(a-=1))*Math.sin((a*d-e)*2*Math.PI/f)*0.5+b+c},easeInBack:function(e,a,c,b,d,f){f==void 0&&
7
+ (f=1.70158);return b*(a/=d)*a*((f+1)*a-f)+c},easeOutBack:function(e,a,c,b,d,f){f==void 0&&(f=1.70158);return b*((a=a/d-1)*a*((f+1)*a+f)+1)+c},easeInOutBack:function(e,a,c,b,d,f){f==void 0&&(f=1.70158);return(a/=d/2)<1?b/2*a*a*(((f*=1.525)+1)*a-f)+c:b/2*((a-=2)*a*(((f*=1.525)+1)*a+f)+2)+c},easeInBounce:function(e,a,c,b,d){return b-jQuery.easing.easeOutBounce(e,d-a,0,b,d)+c},easeOutBounce:function(e,a,c,b,d){return(a/=d)<1/2.75?b*7.5625*a*a+c:a<2/2.75?b*(7.5625*(a-=1.5/2.75)*a+0.75)+c:a<2.5/2.75?b*
8
+ (7.5625*(a-=2.25/2.75)*a+0.9375)+c:b*(7.5625*(a-=2.625/2.75)*a+0.984375)+c},easeInOutBounce:function(e,a,c,b,d){return a<d/2?jQuery.easing.easeInBounce(e,a*2,0,b,d)*0.5+c:jQuery.easing.easeOutBounce(e,a*2-d,0,b,d)*0.5+b*0.5+c}});
@@ -6,5 +6,5 @@ b=e;for(e={x:0,y:0};b;){if(typeof b.mouseX!="undefined"){g=b.mouseX-e.x;c=b.mous
6
6
  document.dragging=!0;var g=a.widgetCoords(b);a.circleDrag=Math.max(Math.abs(g.x),Math.abs(g.y))*2>a.square;a.mousemove(b);return!1};a.mousemove=function(b){b=a.widgetCoords(b);a.circleDrag?(b=Math.atan2(b.x,-b.y)/6.28,b<0&&(b+=1),a.setHSL([b,a.hsl[1],a.hsl[2]])):a.setHSL([a.hsl[0],Math.max(0,Math.min(1,-(b.x/a.square)+0.5)),Math.max(0,Math.min(1,-(b.y/a.square)+0.5))]);return!1};a.mouseup=function(){$(document).unbind("mousemove",a.mousemove);$(document).unbind("mouseup",a.mouseup);document.dragging=
7
7
  !1};a.updateDisplay=function(){var b=a.hsl[0]*6.28;$(".h-marker",j).css({left:Math.round(Math.sin(b)*a.radius+a.width/2)+"px",top:Math.round(-Math.cos(b)*a.radius+a.width/2)+"px"});$(".sl-marker",j).css({left:Math.round(a.square*(0.5-a.hsl[1])+a.width/2)+"px",top:Math.round(a.square*(0.5-a.hsl[2])+a.width/2)+"px"});$(".color",j).css("backgroundColor",a.pack(a.HSLToRGB([a.hsl[0],1,0.5])));typeof a.callback=="object"?($(a.callback).css({backgroundColor:a.color,color:a.hsl[2]>0.5?"#000":"#fff"}),$(a.callback).each(function(){if(this.value&&
8
8
  this.value!=a.color)this.value=a.color})):typeof a.callback=="function"&&a.callback.call(a,a.color)};a.absolutePosition=function(b){var g={x:b.offsetLeft,y:b.offsetTop};b.offsetParent&&(b=a.absolutePosition(b.offsetParent),g.x+=b.x,g.y+=b.y);return g};a.pack=function(b){var a=Math.round(b[0]*255),c=Math.round(b[1]*255),b=Math.round(b[2]*255);return"#"+(a<16?"0":"")+a.toString(16)+(c<16?"0":"")+c.toString(16)+(b<16?"0":"")+b.toString(16)};a.unpack=function(b){if(b.length==7)return[parseInt("0x"+b.substring(1,
9
- 3))/255,parseInt("0x"+b.substring(3,5))/255,parseInt("0x"+b.substring(5,7))/255];else if(b.length==4)return[parseInt("0x"+b.substring(1,2))/15,parseInt("0x"+b.substring(2,3))/15,parseInt("0x"+b.substring(3,4))/15]};a.HSLToRGB=function(b){var a,c=b[0];a=b[1];b=b[2];a=b<=0.5?b*(a+1):b+a-b*a;b=b*2-a;return[this.hueToRGB(b,a,c+0.33333),this.hueToRGB(b,a,c),this.hueToRGB(b,a,c-0.33333)]};a.hueToRGB=function(b,a,c){c=c<0?c+1:c>1?c-1:c;if(c*6<1)return b+(a-b)*c*6;if(c*2<1)return a;if(c*3<2)return b+(a-b)*
10
- (0.66666-c)*6;return b};a.RGBToHSL=function(b){var a,c,d,e,f=b[0],h=b[1],i=b[2];a=Math.min(f,Math.min(h,i));b=Math.max(f,Math.max(h,i));c=b-a;e=(a+b)/2;d=0;e>0&&e<1&&(d=c/(e<0.5?2*e:2-2*e));a=0;c>0&&(b==f&&b!=h&&(a+=(h-i)/c),b==h&&b!=i&&(a+=2+(i-f)/c),b==i&&b!=f&&(a+=4+(f-h)/c),a/=6);return[a,d,e]};$("*",j).mousedown(a.mousedown);a.setColor("#000000");k&&a.linkTo(k)};
9
+ 3))/255,parseInt("0x"+b.substring(3,5))/255,parseInt("0x"+b.substring(5,7))/255];else if(b.length==4)return[parseInt("0x"+b.substring(1,2))/15,parseInt("0x"+b.substring(2,3))/15,parseInt("0x"+b.substring(3,4))/15]};a.HSLToRGB=function(b){var a,c=b[0];a=b[1];b=b[2];a=b<=0.5?b*(a+1):b+a-b*a;b=b*2-a;return[this.hueToRGB(b,a,c+0.33333),this.hueToRGB(b,a,c),this.hueToRGB(b,a,c-0.33333)]};a.hueToRGB=function(b,a,c){c=c<0?c+1:c>1?c-1:c;return c*6<1?b+(a-b)*c*6:c*2<1?a:c*3<2?b+(a-b)*(0.66666-c)*6:b};a.RGBToHSL=
10
+ function(b){var a,c,d,e,f=b[0],h=b[1],i=b[2];a=Math.min(f,Math.min(h,i));b=Math.max(f,Math.max(h,i));c=b-a;e=(a+b)/2;d=0;e>0&&e<1&&(d=c/(e<0.5?2*e:2-2*e));a=0;c>0&&(b==f&&b!=h&&(a+=(h-i)/c),b==h&&b!=i&&(a+=2+(i-f)/c),b==i&&b!=f&&(a+=4+(f-h)/c),a/=6);return[a,d,e]};$("*",j).mousedown(a.mousedown);a.setColor("#000000");k&&a.linkTo(k)};
@@ -504,36 +504,36 @@
504
504
  $(this).ajaxSubmit(options);
505
505
  }
506
506
  }).bind('click.form-plugin', function(e) {
507
- var target = e.target;
508
- var $el = $(target);
509
- if (!($el.is(":submit,input:image"))) {
510
- // is this a child element of the submit el? (ex: a span within a button)
511
- var t = $el.closest(':submit');
512
- if (t.length == 0) {
513
- return;
514
- }
515
- target = t[0];
516
- }
517
- var form = this;
518
- form.clk = target;
519
- if (target.type == 'image') {
520
- if (e.offsetX != undefined) {
521
- form.clk_x = e.offsetX;
522
- form.clk_y = e.offsetY;
523
- } else if (typeof $.fn.offset == 'function') { // try to use dimensions plugin
524
- var offset = $el.offset();
525
- form.clk_x = e.pageX - offset.left;
526
- form.clk_y = e.pageY - offset.top;
527
- } else {
528
- form.clk_x = e.pageX - target.offsetLeft;
529
- form.clk_y = e.pageY - target.offsetTop;
530
- }
531
- }
532
- // clear form vars
533
- setTimeout(function() {
534
- form.clk = form.clk_x = form.clk_y = null;
535
- }, 100);
536
- });
507
+ var target = e.target;
508
+ var $el = $(target);
509
+ if (!($el.is(":submit,input:image"))) {
510
+ // is this a child element of the submit el? (ex: a span within a button)
511
+ var t = $el.closest(':submit');
512
+ if (t.length == 0) {
513
+ return;
514
+ }
515
+ target = t[0];
516
+ }
517
+ var form = this;
518
+ form.clk = target;
519
+ if (target.type == 'image') {
520
+ if (e.offsetX != undefined) {
521
+ form.clk_x = e.offsetX;
522
+ form.clk_y = e.offsetY;
523
+ } else if (typeof $.fn.offset == 'function') { // try to use dimensions plugin
524
+ var offset = $el.offset();
525
+ form.clk_x = e.pageX - offset.left;
526
+ form.clk_y = e.pageY - offset.top;
527
+ } else {
528
+ form.clk_x = e.pageX - target.offsetLeft;
529
+ form.clk_y = e.pageY - target.offsetTop;
530
+ }
531
+ }
532
+ // clear form vars
533
+ setTimeout(function() {
534
+ form.clk = form.clk_x = form.clk_y = null;
535
+ }, 100);
536
+ });
537
537
  };
538
538
 
539
539
  // ajaxFormUnbind unbinds the event handlers that were bound by ajaxForm
@@ -1,5 +1,5 @@
1
- (function(d){function h(b,a){if(b===void 0)return a==="undefined";if(b===null)return a==="null";return b.constructor.toString().match(RegExp(a,"i"))!==null}function n(b,a){if(b&&b[a]){var d=b[a];delete b[a];return d}}function r(b){if(typeof b!=="string"||b.length<2)return!1;b=b.charAt(0);if(!(b==="."||b==="#"||b==="%"))return!1;return!0}function o(b,a){var s;function f(b,a){a===void 0||a===null||(a.nodeType||a.jquery?b.append(a):h(a,"String")&&a.length>0?(a[0]==="\\"&&(a=a.substr(1)),b.append(document.createTextNode(a))):
2
- h(a,"Number")?b.append(document.createTextNode(a)):h(a,"Array")&&a.length>0&&o(b,a))}var k,j,c,e,i,l,g;c=Array.prototype.slice.call(a,0);c.length&&c.length>0?(r(c[0])&&(e=c.shift(),i=e.match(/\.[^\.#]+/g),l=e.match(/#[^\.#]+/g),s=(e=e.match(/^%([^\.#]+)/g))?e[0].substr(1):"div",e=s,g=d(document.createElement(e)),c.length>0&&h(c[0],"Object")&&!c[0].nodeType&&!c[0].jquery&&(e=c.shift(),k=n(e,"css"),j=n(e,"$"),g.attr(e)),l&&d.each(l,function(){var a,b;a=this.substr(1);(b=g.attr("id"))?g.attr("id",b+
3
- " "+a):g.attr("id",a)}),i&&d.each(i,function(){g.addClass(this.substr(1))}),k&&g.css(k),b.append(g),b=g,j&&d.each(j,function(a){m.push({node:b,method:a,params:this})})),d.each(c,function(){f(b,this)})):f(b,c)}function p(){d.each(m,function(){if(this.method==="$")this.params.apply(this.node,[]);else{if(!h(this.params,"Array"))this.params=[this.params];this.node[this.method].apply(this.node,this.params)}});m=[]}function q(b){var a;a=d(document.createElement("div"));o(a,b);this.append(a.contents());
4
- this.closest("body").length>0&&p();return a.contents()}var m=[],i={};d.fn.insertHaml=function(){return q.call(this,Array.prototype.slice.call(arguments,0))};d.fn.haml=function(){q.call(this,Array.prototype.slice.call(arguments,0));return this};d.haml={placeholder:function(b){function a(){var a=d(document.createElement("div"));a.haml(b.apply(this,arguments));return f=a.contents()}var f;return{inject:a,update:function(){var b=arguments;d.each(f,function(f,c){f===0?d(c).replaceWith(a.apply(this,b)):
5
- d(c).remove()});p()}}},onDemand:function(b,a){var f,a=["%div",{style:"text-align: center; cursor: wait"},a||"Loading..."];return function(h){var j=Array.prototype.slice.call(arguments,1);return f=d.haml.placeholder(function(){var c=Util.stringify(j);return i[c]!==void 0?h(i[c]):(b.apply(this,[function(a){i[c]=a;f.update()}].concat(j)),a)})}}}})(jQuery);
1
+ (function(d){function h(b,a){return b===void 0?a==="undefined":b===null?a==="null":b.constructor.toString().match(RegExp(a,"i"))!==null}function n(b,a){if(b&&b[a]){var d=b[a];delete b[a];return d}}function r(b){if(typeof b!=="string"||b.length<2)return!1;b=b.charAt(0);return!(b==="."||b==="#"||b==="%")?!1:!0}function o(b,a){var s;function f(b,a){a===void 0||a===null||(a.nodeType||a.jquery?b.append(a):h(a,"String")&&a.length>0?(a[0]==="\\"&&(a=a.substr(1)),b.append(document.createTextNode(a))):h(a,
2
+ "Number")?b.append(document.createTextNode(a)):h(a,"Array")&&a.length>0&&o(b,a))}var k,j,c,e,i,l,g;c=Array.prototype.slice.call(a,0);c.length&&c.length>0?(r(c[0])&&(e=c.shift(),i=e.match(/\.[^\.#]+/g),l=e.match(/#[^\.#]+/g),s=(e=e.match(/^%([^\.#]+)/g))?e[0].substr(1):"div",e=s,g=d(document.createElement(e)),c.length>0&&h(c[0],"Object")&&!c[0].nodeType&&!c[0].jquery&&(e=c.shift(),k=n(e,"css"),j=n(e,"$"),g.attr(e)),l&&d.each(l,function(){var a,b;a=this.substr(1);(b=g.attr("id"))?g.attr("id",b+" "+
3
+ a):g.attr("id",a)}),i&&d.each(i,function(){g.addClass(this.substr(1))}),k&&g.css(k),b.append(g),b=g,j&&d.each(j,function(a){m.push({node:b,method:a,params:this})})),d.each(c,function(){f(b,this)})):f(b,c)}function p(){d.each(m,function(){if(this.method==="$")this.params.apply(this.node,[]);else{if(!h(this.params,"Array"))this.params=[this.params];this.node[this.method].apply(this.node,this.params)}});m=[]}function q(b){var a;a=d(document.createElement("div"));o(a,b);this.append(a.contents());this.closest("body").length>
4
+ 0&&p();return a.contents()}var m=[],i={};d.fn.insertHaml=function(){return q.call(this,Array.prototype.slice.call(arguments,0))};d.fn.haml=function(){q.call(this,Array.prototype.slice.call(arguments,0));return this};d.haml={placeholder:function(b){function a(){var a=d(document.createElement("div"));a.haml(b.apply(this,arguments));return f=a.contents()}var f;return{inject:a,update:function(){var b=arguments;d.each(f,function(f,c){f===0?d(c).replaceWith(a.apply(this,b)):d(c).remove()});p()}}},onDemand:function(b,
5
+ a){var f,a=["%div",{style:"text-align: center; cursor: wait"},a||"Loading..."];return function(h){var j=Array.prototype.slice.call(arguments,1);return f=d.haml.placeholder(function(){var c=Util.stringify(j);return i[c]!==void 0?h(i[c]):(b.apply(this,[function(a){i[c]=a;f.update()}].concat(j)),a)})}}}})(jQuery);
@@ -1,3 +1,3 @@
1
1
  (function(d){function h(g){if(typeof g.data==="string"){var h=g.handler,i=g.data.toLowerCase().split(" ");g.handler=function(a){if(!(this!==a.target&&(/textarea|select/i.test(a.target.nodeName)||a.target.type==="text"))){var b=a.type!=="keypress"&&d.hotkeys.specialKeys[a.which],e=String.fromCharCode(a.which).toLowerCase(),c="",f={};a.altKey&&b!=="alt"&&(c+="alt+");a.ctrlKey&&b!=="ctrl"&&(c+="ctrl+");a.metaKey&&!a.ctrlKey&&b!=="meta"&&(c+="meta+");a.shiftKey&&b!=="shift"&&(c+="shift+");b?f[c+b]=!0:
2
2
  (f[c+e]=!0,f[c+d.hotkeys.shiftNums[e]]=!0,c==="shift+"&&(f[d.hotkeys.shiftNums[e]]=!0));b=0;for(e=i.length;b<e;b++)if(f[i[b]])return h.apply(this,arguments)}}}}d.hotkeys={version:"0.8",specialKeys:{8:"backspace",9:"tab",13:"return",16:"shift",17:"ctrl",18:"alt",19:"pause",20:"capslock",27:"esc",32:"space",33:"pageup",34:"pagedown",35:"end",36:"home",37:"left",38:"up",39:"right",40:"down",45:"insert",46:"del",96:"0",97:"1",98:"2",99:"3",100:"4",101:"5",102:"6",103:"7",104:"8",105:"9",106:"*",107:"+",
3
- 109:"-",110:".",111:"/",112:"f1",113:"f2",114:"f3",115:"f4",116:"f5",117:"f6",118:"f7",119:"f8",120:"f9",121:"f10",122:"f11",123:"f12",144:"numlock",145:"scroll",191:"/",224:"meta"},shiftNums:{"`":"~","1":"!","2":"@","3":"#","4":"$","5":"%","6":"^","7":"&","8":"*","9":"(","0":")","-":"_","=":"+",";":": ","'":'"',",":"<",".":">","/":"?","\\":"|"}};d.each(["keydown","keyup","keypress"],function(){d.event.special[this]={add:h}})})(jQuery);
3
+ 109:"-",110:".",111:"/",112:"f1",113:"f2",114:"f3",115:"f4",116:"f5",117:"f6",118:"f7",119:"f8",120:"f9",121:"f10",122:"f11",123:"f12",144:"numlock",145:"scroll",191:"/",224:"meta"},shiftNums:{"`":"~",1:"!",2:"@",3:"#",4:"$",5:"%",6:"^",7:"&",8:"*",9:"(",0:")","-":"_","=":"+",";":": ","'":'"',",":"<",".":">","/":"?","\\":"|"}};d.each(["keydown","keyup","keypress"],function(){d.event.special[this]={add:h}})})(jQuery);
@@ -1,5 +1,5 @@
1
1
  /*!
2
- * jQuery JavaScript Library v1.6.1
2
+ * jQuery JavaScript Library v1.6.3
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: Mon May 23 18:30:18 +0200 2011
14
+ * Date: Sun Sep 11 12:07:24 +0200 2011
15
15
  */
16
16
  (function( window, undefined ) {
17
17
 
@@ -39,8 +39,8 @@ var jQuery = function( selector, context ) {
39
39
  rootjQuery,
40
40
 
41
41
  // A simple way to check for HTML strings or ID strings
42
- // (both of which we optimize for)
43
- quickExpr = /^(?:[^<]*(<[\w\W]+>)[^>]*$|#([\w\-]*)$)/,
42
+ // Prioritize #id over <tag> to avoid XSS via location.hash (#9521)
43
+ quickExpr = /^(?:[^#<]*(<[\w\W]+>)[^>]*$|#([\w\-]*)$)/,
44
44
 
45
45
  // Check if a string has a non-whitespace character in it
46
46
  rnotwhite = /\S/,
@@ -67,6 +67,15 @@ var jQuery = function( selector, context ) {
67
67
  rmsie = /(msie) ([\w.]+)/,
68
68
  rmozilla = /(mozilla)(?:.*? rv:([\w.]+))?/,
69
69
 
70
+ // Matches dashed string for camelizing
71
+ rdashAlpha = /-([a-z]|[0-9])/ig,
72
+ rmsPrefix = /^-ms-/,
73
+
74
+ // Used by jQuery.camelCase as callback to replace()
75
+ fcamelCase = function( all, letter ) {
76
+ return ( letter + "" ).toUpperCase();
77
+ },
78
+
70
79
  // Keep a UserAgent string for use with jQuery.browser
71
80
  userAgent = navigator.userAgent,
72
81
 
@@ -206,7 +215,7 @@ jQuery.fn = jQuery.prototype = {
206
215
  selector: "",
207
216
 
208
217
  // The current version of jQuery being used
209
- jquery: "1.6.1",
218
+ jquery: "1.6.3",
210
219
 
211
220
  // The default length of a jQuery object is 0
212
221
  length: 0,
@@ -515,10 +524,15 @@ jQuery.extend({
515
524
  return false;
516
525
  }
517
526
 
518
- // Not own constructor property must be Object
519
- if ( obj.constructor &&
520
- !hasOwn.call(obj, "constructor") &&
521
- !hasOwn.call(obj.constructor.prototype, "isPrototypeOf") ) {
527
+ try {
528
+ // Not own constructor property must be Object
529
+ if ( obj.constructor &&
530
+ !hasOwn.call(obj, "constructor") &&
531
+ !hasOwn.call(obj.constructor.prototype, "isPrototypeOf") ) {
532
+ return false;
533
+ }
534
+ } catch ( e ) {
535
+ // IE8,9 Will throw exceptions on certain host objects #9897
522
536
  return false;
523
537
  }
524
538
 
@@ -568,24 +582,23 @@ jQuery.extend({
568
582
  },
569
583
 
570
584
  // Cross-browser xml parsing
571
- // (xml & tmp used internally)
572
- parseXML: function( data , xml , tmp ) {
573
-
574
- if ( window.DOMParser ) { // Standard
575
- tmp = new DOMParser();
576
- xml = tmp.parseFromString( data , "text/xml" );
577
- } else { // IE
578
- xml = new ActiveXObject( "Microsoft.XMLDOM" );
579
- xml.async = "false";
580
- xml.loadXML( data );
581
- }
582
-
583
- tmp = xml.documentElement;
584
-
585
- if ( ! tmp || ! tmp.nodeName || tmp.nodeName === "parsererror" ) {
585
+ parseXML: function( data ) {
586
+ var xml, tmp;
587
+ try {
588
+ if ( window.DOMParser ) { // Standard
589
+ tmp = new DOMParser();
590
+ xml = tmp.parseFromString( data , "text/xml" );
591
+ } else { // IE
592
+ xml = new ActiveXObject( "Microsoft.XMLDOM" );
593
+ xml.async = "false";
594
+ xml.loadXML( data );
595
+ }
596
+ } catch( e ) {
597
+ xml = undefined;
598
+ }
599
+ if ( !xml || !xml.documentElement || xml.getElementsByTagName( "parsererror" ).length ) {
586
600
  jQuery.error( "Invalid XML: " + data );
587
601
  }
588
-
589
602
  return xml;
590
603
  },
591
604
 
@@ -605,6 +618,12 @@ jQuery.extend({
605
618
  }
606
619
  },
607
620
 
621
+ // Convert dashed to camelCase; used by the css and data modules
622
+ // Microsoft forgot to hump their vendor prefix (#9572)
623
+ camelCase: function( string ) {
624
+ return string.replace( rmsPrefix, "ms-" ).replace( rdashAlpha, fcamelCase );
625
+ },
626
+
608
627
  nodeName: function( elem, name ) {
609
628
  return elem.nodeName && elem.nodeName.toUpperCase() === name.toUpperCase();
610
629
  },
@@ -687,6 +706,9 @@ jQuery.extend({
687
706
  },
688
707
 
689
708
  inArray: function( elem, array ) {
709
+ if ( !array ) {
710
+ return -1;
711
+ }
690
712
 
691
713
  if ( indexOf ) {
692
714
  return indexOf.call( array, elem );
@@ -801,7 +823,7 @@ jQuery.extend({
801
823
  },
802
824
 
803
825
  // Mutifunctional method to get and set values to a collection
804
- // The value/s can be optionally by executed if its a function
826
+ // The value/s can optionally be executed if it's a function
805
827
  access: function( elems, key, value, exec, fn, pass ) {
806
828
  var length = elems.length;
807
829
 
@@ -932,7 +954,6 @@ function doScrollCheck() {
932
954
  jQuery.ready();
933
955
  }
934
956
 
935
- // Expose jQuery to the global object
936
957
  return jQuery;
937
958
 
938
959
  })();
@@ -1062,7 +1083,7 @@ jQuery.extend({
1062
1083
  if ( returned && jQuery.isFunction( returned.promise ) ) {
1063
1084
  returned.promise().then( newDefer.resolve, newDefer.reject );
1064
1085
  } else {
1065
- newDefer[ action ]( returned );
1086
+ newDefer[ action + "With" ]( this === deferred ? newDefer : this, [ returned ] );
1066
1087
  }
1067
1088
  });
1068
1089
  } else {
@@ -1153,7 +1174,9 @@ jQuery.support = (function() {
1153
1174
  support,
1154
1175
  fragment,
1155
1176
  body,
1156
- bodyStyle,
1177
+ testElementParent,
1178
+ testElement,
1179
+ testElementStyle,
1157
1180
  tds,
1158
1181
  events,
1159
1182
  eventName,
@@ -1162,7 +1185,8 @@ jQuery.support = (function() {
1162
1185
 
1163
1186
  // Preliminary tests
1164
1187
  div.setAttribute("className", "t");
1165
- div.innerHTML = " <link/><table></table><a href='/a' style='top:1px;float:left;opacity:.55;'>a</a><input type='checkbox'/>";
1188
+ div.innerHTML = " <link><table></table><a href='/a' style='top:1px;float:left;opacity:.55;'>a</a><input type=checkbox>";
1189
+
1166
1190
 
1167
1191
  all = div.getElementsByTagName( "*" );
1168
1192
  a = div.getElementsByTagName( "a" )[ 0 ];
@@ -1247,11 +1271,10 @@ jQuery.support = (function() {
1247
1271
  }
1248
1272
 
1249
1273
  if ( !div.addEventListener && div.attachEvent && div.fireEvent ) {
1250
- div.attachEvent( "onclick", function click() {
1274
+ div.attachEvent( "onclick", function() {
1251
1275
  // Cloning a node shouldn't copy over any
1252
1276
  // bound event handlers (IE does this)
1253
1277
  support.noCloneEvent = false;
1254
- div.detachEvent( "onclick", click );
1255
1278
  });
1256
1279
  div.cloneNode( true ).fireEvent( "onclick" );
1257
1280
  }
@@ -1276,22 +1299,31 @@ jQuery.support = (function() {
1276
1299
  // Figure out if the W3C box model works as expected
1277
1300
  div.style.width = div.style.paddingLeft = "1px";
1278
1301
 
1279
- // We use our own, invisible, body
1280
- body = document.createElement( "body" );
1281
- bodyStyle = {
1302
+ body = document.getElementsByTagName( "body" )[ 0 ];
1303
+ // We use our own, invisible, body unless the body is already present
1304
+ // in which case we use a div (#9239)
1305
+ testElement = document.createElement( body ? "div" : "body" );
1306
+ testElementStyle = {
1282
1307
  visibility: "hidden",
1283
1308
  width: 0,
1284
1309
  height: 0,
1285
1310
  border: 0,
1286
1311
  margin: 0,
1287
- // Set background to avoid IE crashes when removing (#9028)
1288
1312
  background: "none"
1289
1313
  };
1290
- for ( i in bodyStyle ) {
1291
- body.style[ i ] = bodyStyle[ i ];
1314
+ if ( body ) {
1315
+ jQuery.extend( testElementStyle, {
1316
+ position: "absolute",
1317
+ left: "-1000px",
1318
+ top: "-1000px"
1319
+ });
1320
+ }
1321
+ for ( i in testElementStyle ) {
1322
+ testElement.style[ i ] = testElementStyle[ i ];
1292
1323
  }
1293
- body.appendChild( div );
1294
- documentElement.insertBefore( body, documentElement.firstChild );
1324
+ testElement.appendChild( div );
1325
+ testElementParent = body || documentElement;
1326
+ testElementParent.insertBefore( testElement, testElementParent.firstChild );
1295
1327
 
1296
1328
  // Check if a disconnected checkbox will retain its checked
1297
1329
  // value of true after appended to the DOM (IE6/7)
@@ -1350,8 +1382,8 @@ jQuery.support = (function() {
1350
1382
  }
1351
1383
 
1352
1384
  // Remove the body element we added
1353
- body.innerHTML = "";
1354
- documentElement.removeChild( body );
1385
+ testElement.innerHTML = "";
1386
+ testElementParent.removeChild( testElement );
1355
1387
 
1356
1388
  // Technique from Juriy Zaytsev
1357
1389
  // http://thinkweb2.com/projects/prototype/detecting-event-support-without-browser-sniffing/
@@ -1375,6 +1407,9 @@ jQuery.support = (function() {
1375
1407
  }
1376
1408
  }
1377
1409
 
1410
+ // Null connected elements to avoid leaks in IE
1411
+ testElement = fragment = select = opt = body = marginDiv = div = input = null;
1412
+
1378
1413
  return support;
1379
1414
  })();
1380
1415
 
@@ -1419,7 +1454,9 @@ jQuery.extend({
1419
1454
  return;
1420
1455
  }
1421
1456
 
1422
- var internalKey = jQuery.expando, getByName = typeof name === "string", thisCache,
1457
+ var thisCache, ret,
1458
+ internalKey = jQuery.expando,
1459
+ getByName = typeof name === "string",
1423
1460
 
1424
1461
  // We have to handle DOM nodes and JS objects differently because IE6-7
1425
1462
  // can't GC object references properly across the DOM-JS boundary
@@ -1435,7 +1472,7 @@ jQuery.extend({
1435
1472
 
1436
1473
  // Avoid doing any more work than we need to when trying to get data on an
1437
1474
  // object that has no data at all
1438
- if ( (!id || (pvt && id && !cache[ id ][ internalKey ])) && getByName && data === undefined ) {
1475
+ if ( (!id || (pvt && id && (cache[ id ] && !cache[ id ][ internalKey ]))) && getByName && data === undefined ) {
1439
1476
  return;
1440
1477
  }
1441
1478
 
@@ -1494,7 +1531,24 @@ jQuery.extend({
1494
1531
  return thisCache[ internalKey ] && thisCache[ internalKey ].events;
1495
1532
  }
1496
1533
 
1497
- return getByName ? thisCache[ jQuery.camelCase( name ) ] : thisCache;
1534
+ // Check for both converted-to-camel and non-converted data property names
1535
+ // If a data property was specified
1536
+ if ( getByName ) {
1537
+
1538
+ // First Try to find as-is property data
1539
+ ret = thisCache[ name ];
1540
+
1541
+ // Test for null|undefined property data
1542
+ if ( ret == null ) {
1543
+
1544
+ // Try to find the camelCased property
1545
+ ret = thisCache[ jQuery.camelCase( name ) ];
1546
+ }
1547
+ } else {
1548
+ ret = thisCache;
1549
+ }
1550
+
1551
+ return ret;
1498
1552
  },
1499
1553
 
1500
1554
  removeData: function( elem, name, pvt /* Internal Use Only */ ) {
@@ -1502,7 +1556,12 @@ jQuery.extend({
1502
1556
  return;
1503
1557
  }
1504
1558
 
1505
- var internalKey = jQuery.expando, isNode = elem.nodeType,
1559
+ var thisCache,
1560
+
1561
+ // Reference to internal data cache key
1562
+ internalKey = jQuery.expando,
1563
+
1564
+ isNode = elem.nodeType,
1506
1565
 
1507
1566
  // See jQuery.data for more information
1508
1567
  cache = isNode ? jQuery.cache : elem,
@@ -1517,9 +1576,16 @@ jQuery.extend({
1517
1576
  }
1518
1577
 
1519
1578
  if ( name ) {
1520
- var thisCache = pvt ? cache[ id ][ internalKey ] : cache[ id ];
1579
+
1580
+ thisCache = pvt ? cache[ id ][ internalKey ] : cache[ id ];
1521
1581
 
1522
1582
  if ( thisCache ) {
1583
+
1584
+ // Support interoperable removal of hyphenated or camelcased keys
1585
+ if ( !thisCache[ name ] ) {
1586
+ name = jQuery.camelCase( name );
1587
+ }
1588
+
1523
1589
  delete thisCache[ name ];
1524
1590
 
1525
1591
  // If there is no data left in the cache, we want to continue
@@ -1546,7 +1612,8 @@ jQuery.extend({
1546
1612
  // Browsers that fail expando deletion also refuse to delete expandos on
1547
1613
  // the window, but it will allow it on all other JS objects; other browsers
1548
1614
  // don't care
1549
- if ( jQuery.support.deleteExpando || cache != window ) {
1615
+ // Ensure that `cache` is not a window object #10080
1616
+ if ( jQuery.support.deleteExpando || !cache.setInterval ) {
1550
1617
  delete cache[ id ];
1551
1618
  } else {
1552
1619
  cache[ id ] = null;
@@ -1894,8 +1961,7 @@ var rclass = /[\n\t\r]/g,
1894
1961
  rfocusable = /^(?:button|input|object|select|textarea)$/i,
1895
1962
  rclickable = /^a(?:rea)?$/i,
1896
1963
  rboolean = /^(?:autofocus|autoplay|async|checked|controls|defer|disabled|hidden|loop|multiple|open|readonly|required|scoped|selected)$/i,
1897
- rinvalidChar = /\:/,
1898
- formHook, boolHook;
1964
+ nodeHook, boolHook;
1899
1965
 
1900
1966
  jQuery.fn.extend({
1901
1967
  attr: function( name, value ) {
@@ -1924,30 +1990,31 @@ jQuery.fn.extend({
1924
1990
  },
1925
1991
 
1926
1992
  addClass: function( value ) {
1993
+ var classNames, i, l, elem,
1994
+ setClass, c, cl;
1995
+
1927
1996
  if ( jQuery.isFunction( value ) ) {
1928
- return this.each(function(i) {
1929
- var self = jQuery(this);
1930
- self.addClass( value.call(this, i, self.attr("class") || "") );
1997
+ return this.each(function( j ) {
1998
+ jQuery( this ).addClass( value.call(this, j, this.className) );
1931
1999
  });
1932
2000
  }
1933
2001
 
1934
2002
  if ( value && typeof value === "string" ) {
1935
- var classNames = (value || "").split( rspace );
2003
+ classNames = value.split( rspace );
1936
2004
 
1937
- for ( var i = 0, l = this.length; i < l; i++ ) {
1938
- var elem = this[i];
2005
+ for ( i = 0, l = this.length; i < l; i++ ) {
2006
+ elem = this[ i ];
1939
2007
 
1940
2008
  if ( elem.nodeType === 1 ) {
1941
- if ( !elem.className ) {
2009
+ if ( !elem.className && classNames.length === 1 ) {
1942
2010
  elem.className = value;
1943
2011
 
1944
2012
  } else {
1945
- var className = " " + elem.className + " ",
1946
- setClass = elem.className;
2013
+ setClass = " " + elem.className + " ";
1947
2014
 
1948
- for ( var c = 0, cl = classNames.length; c < cl; c++ ) {
1949
- if ( className.indexOf( " " + classNames[c] + " " ) < 0 ) {
1950
- setClass += " " + classNames[c];
2015
+ for ( c = 0, cl = classNames.length; c < cl; c++ ) {
2016
+ if ( !~setClass.indexOf( " " + classNames[ c ] + " " ) ) {
2017
+ setClass += classNames[ c ] + " ";
1951
2018
  }
1952
2019
  }
1953
2020
  elem.className = jQuery.trim( setClass );
@@ -1960,24 +2027,25 @@ jQuery.fn.extend({
1960
2027
  },
1961
2028
 
1962
2029
  removeClass: function( value ) {
1963
- if ( jQuery.isFunction(value) ) {
1964
- return this.each(function(i) {
1965
- var self = jQuery(this);
1966
- self.removeClass( value.call(this, i, self.attr("class")) );
2030
+ var classNames, i, l, elem, className, c, cl;
2031
+
2032
+ if ( jQuery.isFunction( value ) ) {
2033
+ return this.each(function( j ) {
2034
+ jQuery( this ).removeClass( value.call(this, j, this.className) );
1967
2035
  });
1968
2036
  }
1969
2037
 
1970
2038
  if ( (value && typeof value === "string") || value === undefined ) {
1971
- var classNames = (value || "").split( rspace );
2039
+ classNames = (value || "").split( rspace );
1972
2040
 
1973
- for ( var i = 0, l = this.length; i < l; i++ ) {
1974
- var elem = this[i];
2041
+ for ( i = 0, l = this.length; i < l; i++ ) {
2042
+ elem = this[ i ];
1975
2043
 
1976
2044
  if ( elem.nodeType === 1 && elem.className ) {
1977
2045
  if ( value ) {
1978
- var className = (" " + elem.className + " ").replace(rclass, " ");
1979
- for ( var c = 0, cl = classNames.length; c < cl; c++ ) {
1980
- className = className.replace(" " + classNames[c] + " ", " ");
2046
+ className = (" " + elem.className + " ").replace( rclass, " " );
2047
+ for ( c = 0, cl = classNames.length; c < cl; c++ ) {
2048
+ className = className.replace(" " + classNames[ c ] + " ", " ");
1981
2049
  }
1982
2050
  elem.className = jQuery.trim( className );
1983
2051
 
@@ -1996,9 +2064,8 @@ jQuery.fn.extend({
1996
2064
  isBool = typeof stateVal === "boolean";
1997
2065
 
1998
2066
  if ( jQuery.isFunction( value ) ) {
1999
- return this.each(function(i) {
2000
- var self = jQuery(this);
2001
- self.toggleClass( value.call(this, i, self.attr("class"), stateVal), stateVal );
2067
+ return this.each(function( i ) {
2068
+ jQuery( this ).toggleClass( value.call(this, i, this.className, stateVal), stateVal );
2002
2069
  });
2003
2070
  }
2004
2071
 
@@ -2032,7 +2099,7 @@ jQuery.fn.extend({
2032
2099
  hasClass: function( selector ) {
2033
2100
  var className = " " + selector + " ";
2034
2101
  for ( var i = 0, l = this.length; i < l; i++ ) {
2035
- if ( (" " + this[i].className + " ").replace(rclass, " ").indexOf( className ) > -1 ) {
2102
+ if ( this[i].nodeType === 1 && (" " + this[i].className + " ").replace(rclass, " ").indexOf( className ) > -1 ) {
2036
2103
  return true;
2037
2104
  }
2038
2105
  }
@@ -2052,7 +2119,13 @@ jQuery.fn.extend({
2052
2119
  return ret;
2053
2120
  }
2054
2121
 
2055
- return (elem.value || "").replace(rreturn, "");
2122
+ ret = elem.value;
2123
+
2124
+ return typeof ret === "string" ?
2125
+ // handle most common string cases
2126
+ ret.replace(rreturn, "") :
2127
+ // handle cases where value is null/undef or number
2128
+ ret == null ? "" : ret;
2056
2129
  }
2057
2130
 
2058
2131
  return undefined;
@@ -2198,20 +2271,20 @@ jQuery.extend({
2198
2271
  notxml = nType !== 1 || !jQuery.isXMLDoc( elem );
2199
2272
 
2200
2273
  // Normalize the name if needed
2201
- name = notxml && jQuery.attrFix[ name ] || name;
2202
-
2203
- hooks = jQuery.attrHooks[ name ];
2274
+ if ( notxml ) {
2275
+ name = jQuery.attrFix[ name ] || name;
2204
2276
 
2205
- if ( !hooks ) {
2206
- // Use boolHook for boolean attributes
2207
- if ( rboolean.test( name ) &&
2208
- (typeof value === "boolean" || value === undefined || value.toLowerCase() === name.toLowerCase()) ) {
2277
+ hooks = jQuery.attrHooks[ name ];
2209
2278
 
2210
- hooks = boolHook;
2279
+ if ( !hooks ) {
2280
+ // Use boolHook for boolean attributes
2281
+ if ( rboolean.test( name ) ) {
2282
+ hooks = boolHook;
2211
2283
 
2212
- // Use formHook for forms and if the name contains certain characters
2213
- } else if ( formHook && (jQuery.nodeName( elem, "form" ) || rinvalidChar.test( name )) ) {
2214
- hooks = formHook;
2284
+ // Use nodeHook if available( IE6/7 )
2285
+ } else if ( nodeHook ) {
2286
+ hooks = nodeHook;
2287
+ }
2215
2288
  }
2216
2289
  }
2217
2290
 
@@ -2229,8 +2302,8 @@ jQuery.extend({
2229
2302
  return value;
2230
2303
  }
2231
2304
 
2232
- } else if ( hooks && "get" in hooks && notxml ) {
2233
- return hooks.get( elem, name );
2305
+ } else if ( hooks && "get" in hooks && notxml && (ret = hooks.get( elem, name )) !== null ) {
2306
+ return ret;
2234
2307
 
2235
2308
  } else {
2236
2309
 
@@ -2247,14 +2320,9 @@ jQuery.extend({
2247
2320
  var propName;
2248
2321
  if ( elem.nodeType === 1 ) {
2249
2322
  name = jQuery.attrFix[ name ] || name;
2250
-
2251
- if ( jQuery.support.getSetAttribute ) {
2252
- // Use removeAttribute in browsers that support it
2253
- elem.removeAttribute( name );
2254
- } else {
2255
- jQuery.attr( elem, name, "" );
2256
- elem.removeAttributeNode( elem.getAttributeNode( name ) );
2257
- }
2323
+
2324
+ jQuery.attr( elem, name, "" );
2325
+ elem.removeAttribute( name );
2258
2326
 
2259
2327
  // Set corresponding property to false for boolean attributes
2260
2328
  if ( rboolean.test( name ) && (propName = jQuery.propFix[ name ] || name) in elem ) {
@@ -2282,17 +2350,23 @@ jQuery.extend({
2282
2350
  }
2283
2351
  }
2284
2352
  },
2285
- tabIndex: {
2286
- get: function( elem ) {
2287
- // elem.tabIndex doesn't always return the correct value when it hasn't been explicitly set
2288
- // http://fluidproject.org/blog/2008/01/09/getting-setting-and-removing-tabindex-values-with-javascript/
2289
- var attributeNode = elem.getAttributeNode("tabIndex");
2290
-
2291
- return attributeNode && attributeNode.specified ?
2292
- parseInt( attributeNode.value, 10 ) :
2293
- rfocusable.test( elem.nodeName ) || rclickable.test( elem.nodeName ) && elem.href ?
2294
- 0 :
2295
- undefined;
2353
+ // Use the value property for back compat
2354
+ // Use the nodeHook for button elements in IE6/7 (#1954)
2355
+ value: {
2356
+ get: function( elem, name ) {
2357
+ if ( nodeHook && jQuery.nodeName( elem, "button" ) ) {
2358
+ return nodeHook.get( elem, name );
2359
+ }
2360
+ return name in elem ?
2361
+ elem.value :
2362
+ null;
2363
+ },
2364
+ set: function( elem, value, name ) {
2365
+ if ( nodeHook && jQuery.nodeName( elem, "button" ) ) {
2366
+ return nodeHook.set( elem, value, name );
2367
+ }
2368
+ // Does not return so that setAttribute is also used
2369
+ elem.value = value;
2296
2370
  }
2297
2371
  }
2298
2372
  },
@@ -2323,10 +2397,11 @@ jQuery.extend({
2323
2397
  var ret, hooks,
2324
2398
  notxml = nType !== 1 || !jQuery.isXMLDoc( elem );
2325
2399
 
2326
- // Try to normalize/fix the name
2327
- name = notxml && jQuery.propFix[ name ] || name;
2328
-
2329
- hooks = jQuery.propHooks[ name ];
2400
+ if ( notxml ) {
2401
+ // Fix name and attach hooks
2402
+ name = jQuery.propFix[ name ] || name;
2403
+ hooks = jQuery.propHooks[ name ];
2404
+ }
2330
2405
 
2331
2406
  if ( value !== undefined ) {
2332
2407
  if ( hooks && "set" in hooks && (ret = hooks.set( elem, value, name )) !== undefined ) {
@@ -2337,7 +2412,7 @@ jQuery.extend({
2337
2412
  }
2338
2413
 
2339
2414
  } else {
2340
- if ( hooks && "get" in hooks && (ret = hooks.get( elem, name )) !== undefined ) {
2415
+ if ( hooks && "get" in hooks && (ret = hooks.get( elem, name )) !== null ) {
2341
2416
  return ret;
2342
2417
 
2343
2418
  } else {
@@ -2346,14 +2421,33 @@ jQuery.extend({
2346
2421
  }
2347
2422
  },
2348
2423
 
2349
- propHooks: {}
2424
+ propHooks: {
2425
+ tabIndex: {
2426
+ get: function( elem ) {
2427
+ // elem.tabIndex doesn't always return the correct value when it hasn't been explicitly set
2428
+ // http://fluidproject.org/blog/2008/01/09/getting-setting-and-removing-tabindex-values-with-javascript/
2429
+ var attributeNode = elem.getAttributeNode("tabindex");
2430
+
2431
+ return attributeNode && attributeNode.specified ?
2432
+ parseInt( attributeNode.value, 10 ) :
2433
+ rfocusable.test( elem.nodeName ) || rclickable.test( elem.nodeName ) && elem.href ?
2434
+ 0 :
2435
+ undefined;
2436
+ }
2437
+ }
2438
+ }
2350
2439
  });
2351
2440
 
2441
+ // Add the tabindex propHook to attrHooks for back-compat
2442
+ jQuery.attrHooks.tabIndex = jQuery.propHooks.tabIndex;
2443
+
2352
2444
  // Hook for boolean attributes
2353
2445
  boolHook = {
2354
2446
  get: function( elem, name ) {
2355
2447
  // Align boolean attributes with corresponding properties
2356
- return elem[ jQuery.propFix[ name ] || name ] ?
2448
+ // Fall back to attribute presence where some booleans are not supported
2449
+ var attrNode;
2450
+ return jQuery.prop( elem, name ) === true || ( attrNode = elem.getAttributeNode( name ) ) && attrNode.nodeValue !== false ?
2357
2451
  name.toLowerCase() :
2358
2452
  undefined;
2359
2453
  },
@@ -2368,7 +2462,7 @@ boolHook = {
2368
2462
  propName = jQuery.propFix[ name ] || name;
2369
2463
  if ( propName in elem ) {
2370
2464
  // Only set the IDL specifically if it already exists on the element
2371
- elem[ propName ] = value;
2465
+ elem[ propName ] = true;
2372
2466
  }
2373
2467
 
2374
2468
  elem.setAttribute( name, name.toLowerCase() );
@@ -2377,32 +2471,12 @@ boolHook = {
2377
2471
  }
2378
2472
  };
2379
2473
 
2380
- // Use the value property for back compat
2381
- // Use the formHook for button elements in IE6/7 (#1954)
2382
- jQuery.attrHooks.value = {
2383
- get: function( elem, name ) {
2384
- if ( formHook && jQuery.nodeName( elem, "button" ) ) {
2385
- return formHook.get( elem, name );
2386
- }
2387
- return elem.value;
2388
- },
2389
- set: function( elem, value, name ) {
2390
- if ( formHook && jQuery.nodeName( elem, "button" ) ) {
2391
- return formHook.set( elem, value, name );
2392
- }
2393
- // Does not return so that setAttribute is also used
2394
- elem.value = value;
2395
- }
2396
- };
2397
-
2398
2474
  // IE6/7 do not support getting/setting some attributes with get/setAttribute
2399
2475
  if ( !jQuery.support.getSetAttribute ) {
2400
-
2401
- // propFix is more comprehensive and contains all fixes
2402
- jQuery.attrFix = jQuery.propFix;
2403
2476
 
2404
- // Use this for any attribute on a form in IE6/7
2405
- formHook = jQuery.attrHooks.name = jQuery.valHooks.button = {
2477
+ // Use this for any attribute in IE6/7
2478
+ // This fixes almost every IE6/7 issue
2479
+ nodeHook = jQuery.valHooks.button = {
2406
2480
  get: function( elem, name ) {
2407
2481
  var ret;
2408
2482
  ret = elem.getAttributeNode( name );
@@ -2412,13 +2486,13 @@ if ( !jQuery.support.getSetAttribute ) {
2412
2486
  undefined;
2413
2487
  },
2414
2488
  set: function( elem, value, name ) {
2415
- // Check form objects in IE (multiple bugs related)
2416
- // Only use nodeValue if the attribute node exists on the form
2489
+ // Set the existing or create a new attribute node
2417
2490
  var ret = elem.getAttributeNode( name );
2418
- if ( ret ) {
2419
- ret.nodeValue = value;
2420
- return value;
2491
+ if ( !ret ) {
2492
+ ret = document.createAttribute( name );
2493
+ elem.setAttributeNode( ret );
2421
2494
  }
2495
+ return (ret.nodeValue = value + "");
2422
2496
  }
2423
2497
  };
2424
2498
 
@@ -2477,6 +2551,7 @@ if ( !jQuery.support.optSelected ) {
2477
2551
  parent.parentNode.selectedIndex;
2478
2552
  }
2479
2553
  }
2554
+ return null;
2480
2555
  }
2481
2556
  });
2482
2557
  }
@@ -2507,8 +2582,7 @@ jQuery.each([ "radio", "checkbox" ], function() {
2507
2582
 
2508
2583
  (function( jQuery ) {
2509
2584
 
2510
- var hasOwn = Object.prototype.hasOwnProperty,
2511
- rnamespaces = /\.(.*)$/,
2585
+ var rnamespaces = /\.(.*)$/,
2512
2586
  rformElems = /^(?:textarea|input|select)$/i,
2513
2587
  rperiod = /\./g,
2514
2588
  rspaces = / /g,
@@ -2852,7 +2926,7 @@ jQuery.event = {
2852
2926
  event.target = elem;
2853
2927
 
2854
2928
  // Clone any incoming data and prepend the event, creating the handler arg list
2855
- data = data ? jQuery.makeArray( data ) : [];
2929
+ data = data != null ? jQuery.makeArray( data ) : [];
2856
2930
  data.unshift( event );
2857
2931
 
2858
2932
  var cur = elem,
@@ -3158,34 +3232,27 @@ jQuery.Event.prototype = {
3158
3232
  // Checks if an event happened on an element within another element
3159
3233
  // Used in jQuery.event.special.mouseenter and mouseleave handlers
3160
3234
  var withinElement = function( event ) {
3235
+
3161
3236
  // Check if mouse(over|out) are still within the same parent element
3162
- var parent = event.relatedTarget;
3237
+ var related = event.relatedTarget,
3238
+ inside = false,
3239
+ eventType = event.type;
3163
3240
 
3164
- // set the correct event type
3165
3241
  event.type = event.data;
3166
3242
 
3167
- // Firefox sometimes assigns relatedTarget a XUL element
3168
- // which we cannot access the parentNode property of
3169
- try {
3243
+ if ( related !== this ) {
3170
3244
 
3171
- // Chrome does something similar, the parentNode property
3172
- // can be accessed but is null.
3173
- if ( parent && parent !== document && !parent.parentNode ) {
3174
- return;
3245
+ if ( related ) {
3246
+ inside = jQuery.contains( this, related );
3175
3247
  }
3176
3248
 
3177
- // Traverse up the tree
3178
- while ( parent && parent !== this ) {
3179
- parent = parent.parentNode;
3180
- }
3249
+ if ( !inside ) {
3181
3250
 
3182
- if ( parent !== this ) {
3183
- // handle event if we actually just moused on to a non sub-element
3184
3251
  jQuery.event.handle.apply( this, arguments );
3185
- }
3186
3252
 
3187
- // assuming we've left the element since we most likely mousedover a xul element
3188
- } catch(e) { }
3253
+ event.type = eventType;
3254
+ }
3255
+ }
3189
3256
  },
3190
3257
 
3191
3258
  // In case of event delegation, we only need to rename the event.type,
@@ -3218,7 +3285,7 @@ if ( !jQuery.support.submitBubbles ) {
3218
3285
  if ( !jQuery.nodeName( this, "form" ) ) {
3219
3286
  jQuery.event.add(this, "click.specialSubmit", function( e ) {
3220
3287
  var elem = e.target,
3221
- type = elem.type;
3288
+ type = jQuery.nodeName( elem, "input" ) ? elem.type : "";
3222
3289
 
3223
3290
  if ( (type === "submit" || type === "image") && jQuery( elem ).closest("form").length ) {
3224
3291
  trigger( "submit", this, arguments );
@@ -3227,7 +3294,7 @@ if ( !jQuery.support.submitBubbles ) {
3227
3294
 
3228
3295
  jQuery.event.add(this, "keypress.specialSubmit", function( e ) {
3229
3296
  var elem = e.target,
3230
- type = elem.type;
3297
+ type = jQuery.nodeName( elem, "input" ) ? elem.type : "";
3231
3298
 
3232
3299
  if ( (type === "text" || type === "password") && jQuery( elem ).closest("form").length && e.keyCode === 13 ) {
3233
3300
  trigger( "submit", this, arguments );
@@ -3252,7 +3319,8 @@ if ( !jQuery.support.changeBubbles ) {
3252
3319
  var changeFilters,
3253
3320
 
3254
3321
  getVal = function( elem ) {
3255
- var type = elem.type, val = elem.value;
3322
+ var type = jQuery.nodeName( elem, "input" ) ? elem.type : "",
3323
+ val = elem.value;
3256
3324
 
3257
3325
  if ( type === "radio" || type === "checkbox" ) {
3258
3326
  val = elem.checked;
@@ -5281,12 +5349,17 @@ jQuery.fn.extend({
5281
5349
  // Determine the position of an element within
5282
5350
  // the matched set of elements
5283
5351
  index: function( elem ) {
5284
- if ( !elem || typeof elem === "string" ) {
5285
- return jQuery.inArray( this[0],
5286
- // If it receives a string, the selector is used
5287
- // If it receives nothing, the siblings are used
5288
- elem ? jQuery( elem ) : this.parent().children() );
5352
+
5353
+ // No argument, return index in parent
5354
+ if ( !elem ) {
5355
+ return ( this[0] && this[0].parentNode ) ? this.prevAll().length : -1;
5356
+ }
5357
+
5358
+ // index in selector
5359
+ if ( typeof elem === "string" ) {
5360
+ return jQuery.inArray( this[0], jQuery( elem ) );
5289
5361
  }
5362
+
5290
5363
  // Locate the position of the desired element
5291
5364
  return jQuery.inArray(
5292
5365
  // If it receives a jQuery object, the first element is used
@@ -5910,8 +5983,21 @@ function cloneFixAttributes( src, dest ) {
5910
5983
  }
5911
5984
 
5912
5985
  jQuery.buildFragment = function( args, nodes, scripts ) {
5913
- var fragment, cacheable, cacheresults,
5914
- doc = (nodes && nodes[0] ? nodes[0].ownerDocument || nodes[0] : document);
5986
+ var fragment, cacheable, cacheresults, doc;
5987
+
5988
+ // nodes may contain either an explicit document object,
5989
+ // a jQuery collection or context object.
5990
+ // If nodes[0] contains a valid object to assign to doc
5991
+ if ( nodes && nodes[0] ) {
5992
+ doc = nodes[0].ownerDocument || nodes[0];
5993
+ }
5994
+
5995
+ // Ensure that an attr object doesn't incorrectly stand in as a document object
5996
+ // Chrome and Firefox seem to allow this to occur and will throw exception
5997
+ // Fixes #8950
5998
+ if ( !doc.createDocumentFragment ) {
5999
+ doc = document;
6000
+ }
5915
6001
 
5916
6002
  // Only cache "small" (1/2 KB) HTML strings that are associated with the main document
5917
6003
  // Cloning options loses the selected state, so don't cache them
@@ -5992,7 +6078,7 @@ function fixDefaultChecked( elem ) {
5992
6078
  function findInputs( elem ) {
5993
6079
  if ( jQuery.nodeName( elem, "input" ) ) {
5994
6080
  fixDefaultChecked( elem );
5995
- } else if ( elem.getElementsByTagName ) {
6081
+ } else if ( "getElementsByTagName" in elem ) {
5996
6082
  jQuery.grep( elem.getElementsByTagName("input"), fixDefaultChecked );
5997
6083
  }
5998
6084
  }
@@ -6023,7 +6109,10 @@ jQuery.extend({
6023
6109
  // with an element if you are cloning the body and one of the
6024
6110
  // elements on the page has a name or id of "length"
6025
6111
  for ( i = 0; srcElements[i]; ++i ) {
6026
- cloneFixAttributes( srcElements[i], destElements[i] );
6112
+ // Ensure that the destination node is not null; Fixes #9587
6113
+ if ( destElements[i] ) {
6114
+ cloneFixAttributes( srcElements[i], destElements[i] );
6115
+ }
6027
6116
  }
6028
6117
  }
6029
6118
 
@@ -6041,6 +6130,8 @@ jQuery.extend({
6041
6130
  }
6042
6131
  }
6043
6132
 
6133
+ srcElements = destElements = null;
6134
+
6044
6135
  // Return the cloned set
6045
6136
  return clone;
6046
6137
  },
@@ -6226,13 +6317,11 @@ function evalScript( i, elem ) {
6226
6317
 
6227
6318
  var ralpha = /alpha\([^)]*\)/i,
6228
6319
  ropacity = /opacity=([^)]*)/,
6229
- rdashAlpha = /-([a-z])/ig,
6230
6320
  // fixed for IE9, see #8346
6231
6321
  rupper = /([A-Z]|^ms)/g,
6232
6322
  rnumpx = /^-?\d+(?:px)?$/i,
6233
6323
  rnum = /^-?\d/,
6234
- rrelNum = /^[+\-]=/,
6235
- rrelNumFilter = /[^+\-\.\de]+/g,
6324
+ rrelNum = /^([\-+])=([\-+.\de]+)/,
6236
6325
 
6237
6326
  cssShow = { position: "absolute", visibility: "hidden", display: "block" },
6238
6327
  cssWidth = [ "Left", "Right" ],
@@ -6240,11 +6329,7 @@ var ralpha = /alpha\([^)]*\)/i,
6240
6329
  curCSS,
6241
6330
 
6242
6331
  getComputedStyle,
6243
- currentStyle,
6244
-
6245
- fcamelCase = function( all, letter ) {
6246
- return letter.toUpperCase();
6247
- };
6332
+ currentStyle;
6248
6333
 
6249
6334
  jQuery.fn.css = function( name, value ) {
6250
6335
  // Setting 'undefined' is a no-op
@@ -6279,13 +6364,14 @@ jQuery.extend({
6279
6364
 
6280
6365
  // Exclude the following css properties to add px
6281
6366
  cssNumber: {
6282
- "zIndex": true,
6367
+ "fillOpacity": true,
6283
6368
  "fontWeight": true,
6284
- "opacity": true,
6285
- "zoom": true,
6286
6369
  "lineHeight": true,
6370
+ "opacity": true,
6371
+ "orphans": true,
6287
6372
  "widows": true,
6288
- "orphans": true
6373
+ "zIndex": true,
6374
+ "zoom": true
6289
6375
  },
6290
6376
 
6291
6377
  // Add in properties whose names you wish to fix before
@@ -6312,14 +6398,16 @@ jQuery.extend({
6312
6398
  if ( value !== undefined ) {
6313
6399
  type = typeof value;
6314
6400
 
6315
- // Make sure that NaN and null values aren't set. See: #7116
6316
- if ( type === "number" && isNaN( value ) || value == null ) {
6317
- return;
6401
+ // convert relative number strings (+= or -=) to relative numbers. #7345
6402
+ if ( type === "string" && (ret = rrelNum.exec( value )) ) {
6403
+ value = ( +( ret[1] + 1) * +ret[2] ) + parseFloat( jQuery.css( elem, name ) );
6404
+ // Fixes bug #9237
6405
+ type = "number";
6318
6406
  }
6319
6407
 
6320
- // convert relative number strings (+= or -=) to relative numbers. #7345
6321
- if ( type === "string" && rrelNum.test( value ) ) {
6322
- value = +value.replace( rrelNumFilter, "" ) + parseFloat( jQuery.css( elem, name ) );
6408
+ // Make sure that NaN and null values aren't set. See: #7116
6409
+ if ( value == null || type === "number" && isNaN( value ) ) {
6410
+ return;
6323
6411
  }
6324
6412
 
6325
6413
  // If a number was passed in, add 'px' to the (except for certain CSS properties)
@@ -6386,10 +6474,6 @@ jQuery.extend({
6386
6474
  for ( name in options ) {
6387
6475
  elem.style[ name ] = old[ name ];
6388
6476
  }
6389
- },
6390
-
6391
- camelCase: function( string ) {
6392
- return string.replace( rdashAlpha, fcamelCase );
6393
6477
  }
6394
6478
  });
6395
6479
 
@@ -6403,44 +6487,21 @@ jQuery.each(["height", "width"], function( i, name ) {
6403
6487
 
6404
6488
  if ( computed ) {
6405
6489
  if ( elem.offsetWidth !== 0 ) {
6406
- val = getWH( elem, name, extra );
6407
-
6490
+ return getWH( elem, name, extra );
6408
6491
  } else {
6409
6492
  jQuery.swap( elem, cssShow, function() {
6410
6493
  val = getWH( elem, name, extra );
6411
6494
  });
6412
6495
  }
6413
6496
 
6414
- if ( val <= 0 ) {
6415
- val = curCSS( elem, name, name );
6416
-
6417
- if ( val === "0px" && currentStyle ) {
6418
- val = currentStyle( elem, name, name );
6419
- }
6420
-
6421
- if ( val != null ) {
6422
- // Should return "auto" instead of 0, use 0 for
6423
- // temporary backwards-compat
6424
- return val === "" || val === "auto" ? "0px" : val;
6425
- }
6426
- }
6427
-
6428
- if ( val < 0 || val == null ) {
6429
- val = elem.style[ name ];
6430
-
6431
- // Should return "auto" instead of 0, use 0 for
6432
- // temporary backwards-compat
6433
- return val === "" || val === "auto" ? "0px" : val;
6434
- }
6435
-
6436
- return typeof val === "string" ? val : val + "px";
6497
+ return val;
6437
6498
  }
6438
6499
  },
6439
6500
 
6440
6501
  set: function( elem, value ) {
6441
6502
  if ( rnumpx.test( value ) ) {
6442
6503
  // ignore negative width and height values #1599
6443
- value = parseFloat(value);
6504
+ value = parseFloat( value );
6444
6505
 
6445
6506
  if ( value >= 0 ) {
6446
6507
  return value + "px";
@@ -6464,18 +6525,29 @@ if ( !jQuery.support.opacity ) {
6464
6525
 
6465
6526
  set: function( elem, value ) {
6466
6527
  var style = elem.style,
6467
- currentStyle = elem.currentStyle;
6528
+ currentStyle = elem.currentStyle,
6529
+ opacity = jQuery.isNaN( value ) ? "" : "alpha(opacity=" + value * 100 + ")",
6530
+ filter = currentStyle && currentStyle.filter || style.filter || "";
6468
6531
 
6469
6532
  // IE has trouble with opacity if it does not have layout
6470
6533
  // Force it by setting the zoom level
6471
6534
  style.zoom = 1;
6472
6535
 
6473
- // Set the alpha filter to set the opacity
6474
- var opacity = jQuery.isNaN( value ) ?
6475
- "" :
6476
- "alpha(opacity=" + value * 100 + ")",
6477
- filter = currentStyle && currentStyle.filter || style.filter || "";
6536
+ // if setting opacity to 1, and no other filters exist - attempt to remove filter attribute #6652
6537
+ if ( value >= 1 && jQuery.trim( filter.replace( ralpha, "" ) ) === "" ) {
6538
+
6539
+ // Setting style.filter to null, "" & " " still leave "filter:" in the cssText
6540
+ // if "filter:" is present at all, clearType is disabled, we want to avoid this
6541
+ // style.removeAttribute is IE Only, but so apparently is this code path...
6542
+ style.removeAttribute( "filter" );
6543
+
6544
+ // if there there is no filter style applied in a css rule, we are done
6545
+ if ( currentStyle && !currentStyle.filter ) {
6546
+ return;
6547
+ }
6548
+ }
6478
6549
 
6550
+ // otherwise, set new filter values
6479
6551
  style.filter = ralpha.test( filter ) ?
6480
6552
  filter.replace( ralpha, opacity ) :
6481
6553
  filter + " " + opacity;
@@ -6563,27 +6635,50 @@ if ( document.documentElement.currentStyle ) {
6563
6635
  curCSS = getComputedStyle || currentStyle;
6564
6636
 
6565
6637
  function getWH( elem, name, extra ) {
6566
- var which = name === "width" ? cssWidth : cssHeight,
6567
- val = name === "width" ? elem.offsetWidth : elem.offsetHeight;
6568
6638
 
6569
- if ( extra === "border" ) {
6570
- return val;
6571
- }
6639
+ // Start with offset property
6640
+ var val = name === "width" ? elem.offsetWidth : elem.offsetHeight,
6641
+ which = name === "width" ? cssWidth : cssHeight;
6572
6642
 
6573
- jQuery.each( which, function() {
6574
- if ( !extra ) {
6575
- val -= parseFloat(jQuery.css( elem, "padding" + this )) || 0;
6643
+ if ( val > 0 ) {
6644
+ if ( extra !== "border" ) {
6645
+ jQuery.each( which, function() {
6646
+ if ( !extra ) {
6647
+ val -= parseFloat( jQuery.css( elem, "padding" + this ) ) || 0;
6648
+ }
6649
+ if ( extra === "margin" ) {
6650
+ val += parseFloat( jQuery.css( elem, extra + this ) ) || 0;
6651
+ } else {
6652
+ val -= parseFloat( jQuery.css( elem, "border" + this + "Width" ) ) || 0;
6653
+ }
6654
+ });
6576
6655
  }
6577
6656
 
6578
- if ( extra === "margin" ) {
6579
- val += parseFloat(jQuery.css( elem, "margin" + this )) || 0;
6657
+ return val + "px";
6658
+ }
6580
6659
 
6581
- } else {
6582
- val -= parseFloat(jQuery.css( elem, "border" + this + "Width" )) || 0;
6583
- }
6584
- });
6660
+ // Fall back to computed then uncomputed css if necessary
6661
+ val = curCSS( elem, name, name );
6662
+ if ( val < 0 || val == null ) {
6663
+ val = elem.style[ name ] || 0;
6664
+ }
6665
+ // Normalize "", auto, and prepare for extra
6666
+ val = parseFloat( val ) || 0;
6667
+
6668
+ // Add padding, border, margin
6669
+ if ( extra ) {
6670
+ jQuery.each( which, function() {
6671
+ val += parseFloat( jQuery.css( elem, "padding" + this ) ) || 0;
6672
+ if ( extra !== "padding" ) {
6673
+ val += parseFloat( jQuery.css( elem, "border" + this + "Width" ) ) || 0;
6674
+ }
6675
+ if ( extra === "margin" ) {
6676
+ val += parseFloat( jQuery.css( elem, extra + this ) ) || 0;
6677
+ }
6678
+ });
6679
+ }
6585
6680
 
6586
- return val;
6681
+ return val + "px";
6587
6682
  }
6588
6683
 
6589
6684
  if ( jQuery.expr && jQuery.expr.filters ) {
@@ -6609,9 +6704,9 @@ var r20 = /%20/g,
6609
6704
  rCRLF = /\r?\n/g,
6610
6705
  rhash = /#.*$/,
6611
6706
  rheaders = /^(.*?):[ \t]*([^\r\n]*)\r?$/mg, // IE leaves an \r character at EOL
6612
- rinput = /^(?:color|date|datetime|email|hidden|month|number|password|range|search|tel|text|time|url|week)$/i,
6707
+ rinput = /^(?:color|date|datetime|datetime-local|email|hidden|month|number|password|range|search|tel|text|time|url|week)$/i,
6613
6708
  // #7653, #8125, #8152: local protocol detection
6614
- rlocalProtocol = /^(?:about|app|app\-storage|.+\-extension|file|widget):$/,
6709
+ rlocalProtocol = /^(?:about|app|app\-storage|.+\-extension|file|res|widget):$/,
6615
6710
  rnoContent = /^(?:GET|HEAD)$/,
6616
6711
  rprotocol = /^\/\//,
6617
6712
  rquery = /\?/,
@@ -6646,7 +6741,10 @@ var r20 = /%20/g,
6646
6741
  ajaxLocation,
6647
6742
 
6648
6743
  // Document location segments
6649
- ajaxLocParts;
6744
+ ajaxLocParts,
6745
+
6746
+ // Avoid comment-prolog char sequence (#10098); must appease lint and evade compression
6747
+ allTypes = ["*/"] + ["*"];
6650
6748
 
6651
6749
  // #8138, IE may throw an exception when accessing
6652
6750
  // a field from window.location if document.domain has been set
@@ -6739,6 +6837,22 @@ function inspectPrefiltersOrTransports( structure, options, originalOptions, jqX
6739
6837
  return selection;
6740
6838
  }
6741
6839
 
6840
+ // A special extend for ajax options
6841
+ // that takes "flat" options (not to be deep extended)
6842
+ // Fixes #9887
6843
+ function ajaxExtend( target, src ) {
6844
+ var key, deep,
6845
+ flatOptions = jQuery.ajaxSettings.flatOptions || {};
6846
+ for( key in src ) {
6847
+ if ( src[ key ] !== undefined ) {
6848
+ ( flatOptions[ key ] ? target : ( deep || ( deep = {} ) ) )[ key ] = src[ key ];
6849
+ }
6850
+ }
6851
+ if ( deep ) {
6852
+ jQuery.extend( true, target, deep );
6853
+ }
6854
+ }
6855
+
6742
6856
  jQuery.fn.extend({
6743
6857
  load: function( url, params, callback ) {
6744
6858
  if ( typeof url !== "string" && _load ) {
@@ -6882,23 +6996,16 @@ jQuery.extend({
6882
6996
  // Creates a full fledged settings object into target
6883
6997
  // with both ajaxSettings and settings fields.
6884
6998
  // If target is omitted, writes into ajaxSettings.
6885
- ajaxSetup: function ( target, settings ) {
6886
- if ( !settings ) {
6887
- // Only one parameter, we extend ajaxSettings
6888
- settings = target;
6889
- target = jQuery.extend( true, jQuery.ajaxSettings, settings );
6999
+ ajaxSetup: function( target, settings ) {
7000
+ if ( settings ) {
7001
+ // Building a settings object
7002
+ ajaxExtend( target, jQuery.ajaxSettings );
6890
7003
  } else {
6891
- // target was provided, we extend into it
6892
- jQuery.extend( true, target, jQuery.ajaxSettings, settings );
6893
- }
6894
- // Flatten fields we don't want deep extended
6895
- for( var field in { context: 1, url: 1 } ) {
6896
- if ( field in settings ) {
6897
- target[ field ] = settings[ field ];
6898
- } else if( field in jQuery.ajaxSettings ) {
6899
- target[ field ] = jQuery.ajaxSettings[ field ];
6900
- }
7004
+ // Extending ajaxSettings
7005
+ settings = target;
7006
+ target = jQuery.ajaxSettings;
6901
7007
  }
7008
+ ajaxExtend( target, settings );
6902
7009
  return target;
6903
7010
  },
6904
7011
 
@@ -6926,7 +7033,7 @@ jQuery.extend({
6926
7033
  html: "text/html",
6927
7034
  text: "text/plain",
6928
7035
  json: "application/json, text/javascript",
6929
- "*": "*/*"
7036
+ "*": allTypes
6930
7037
  },
6931
7038
 
6932
7039
  contents: {
@@ -6956,6 +7063,15 @@ jQuery.extend({
6956
7063
 
6957
7064
  // Parse text as xml
6958
7065
  "text xml": jQuery.parseXML
7066
+ },
7067
+
7068
+ // For options that shouldn't be deep extended:
7069
+ // you can add your own custom options here if
7070
+ // and when you create one that shouldn't be
7071
+ // deep extended (see ajaxExtend)
7072
+ flatOptions: {
7073
+ context: true,
7074
+ url: true
6959
7075
  }
6960
7076
  },
6961
7077
 
@@ -7066,7 +7182,7 @@ jQuery.extend({
7066
7182
  // Callback for when everything is done
7067
7183
  // It is defined here because jslint complains if it is declared
7068
7184
  // at the end of the function (which would be more logical and readable)
7069
- function done( status, statusText, responses, headers ) {
7185
+ function done( status, nativeStatusText, responses, headers ) {
7070
7186
 
7071
7187
  // Called once
7072
7188
  if ( state === 2 ) {
@@ -7089,11 +7205,12 @@ jQuery.extend({
7089
7205
  responseHeadersString = headers || "";
7090
7206
 
7091
7207
  // Set readyState
7092
- jqXHR.readyState = status ? 4 : 0;
7208
+ jqXHR.readyState = status > 0 ? 4 : 0;
7093
7209
 
7094
7210
  var isSuccess,
7095
7211
  success,
7096
7212
  error,
7213
+ statusText = nativeStatusText,
7097
7214
  response = responses ? ajaxHandleResponses( s, jqXHR, responses ) : undefined,
7098
7215
  lastModified,
7099
7216
  etag;
@@ -7145,7 +7262,7 @@ jQuery.extend({
7145
7262
 
7146
7263
  // Set data for the fake xhr object
7147
7264
  jqXHR.status = status;
7148
- jqXHR.statusText = statusText;
7265
+ jqXHR.statusText = "" + ( nativeStatusText || statusText );
7149
7266
 
7150
7267
  // Success/Error
7151
7268
  if ( isSuccess ) {
@@ -7167,7 +7284,7 @@ jQuery.extend({
7167
7284
  completeDeferred.resolveWith( callbackContext, [ jqXHR, statusText ] );
7168
7285
 
7169
7286
  if ( fireGlobals ) {
7170
- globalEventContext.trigger( "ajaxComplete", [ jqXHR, s] );
7287
+ globalEventContext.trigger( "ajaxComplete", [ jqXHR, s ] );
7171
7288
  // Handle the global AJAX counter
7172
7289
  if ( !( --jQuery.active ) ) {
7173
7290
  jQuery.event.trigger( "ajaxStop" );
@@ -7248,6 +7365,8 @@ jQuery.extend({
7248
7365
  // If data is available, append data to url
7249
7366
  if ( s.data ) {
7250
7367
  s.url += ( rquery.test( s.url ) ? "&" : "?" ) + s.data;
7368
+ // #9682: remove data so that it's not used in an eventual retry
7369
+ delete s.data;
7251
7370
  }
7252
7371
 
7253
7372
  // Get ifModifiedKey before adding the anti-cache parameter
@@ -7285,7 +7404,7 @@ jQuery.extend({
7285
7404
  jqXHR.setRequestHeader(
7286
7405
  "Accept",
7287
7406
  s.dataTypes[ 0 ] && s.accepts[ s.dataTypes[0] ] ?
7288
- s.accepts[ s.dataTypes[0] ] + ( s.dataTypes[ 0 ] !== "*" ? ", */*; q=0.01" : "" ) :
7407
+ s.accepts[ s.dataTypes[0] ] + ( s.dataTypes[ 0 ] !== "*" ? ", " + allTypes + "; q=0.01" : "" ) :
7289
7408
  s.accepts[ "*" ]
7290
7409
  );
7291
7410
 
@@ -7331,7 +7450,7 @@ jQuery.extend({
7331
7450
  transport.send( requestHeaders, done );
7332
7451
  } catch (e) {
7333
7452
  // Propagate exception as error if not done
7334
- if ( status < 2 ) {
7453
+ if ( state < 2 ) {
7335
7454
  done( -1, e );
7336
7455
  // Simply rethrow otherwise
7337
7456
  } else {
@@ -7987,10 +8106,7 @@ var elemdisplay = {},
7987
8106
  // opacity animations
7988
8107
  [ "opacity" ]
7989
8108
  ],
7990
- fxNow,
7991
- requestAnimationFrame = window.webkitRequestAnimationFrame ||
7992
- window.mozRequestAnimationFrame ||
7993
- window.oRequestAnimationFrame;
8109
+ fxNow;
7994
8110
 
7995
8111
  jQuery.fn.extend({
7996
8112
  show: function( speed, easing, callback ) {
@@ -8304,15 +8420,15 @@ jQuery.extend({
8304
8420
  // Queueing
8305
8421
  opt.old = opt.complete;
8306
8422
  opt.complete = function( noUnmark ) {
8423
+ if ( jQuery.isFunction( opt.old ) ) {
8424
+ opt.old.call( this );
8425
+ }
8426
+
8307
8427
  if ( opt.queue !== false ) {
8308
8428
  jQuery.dequeue( this );
8309
8429
  } else if ( noUnmark !== false ) {
8310
8430
  jQuery._unmark( this );
8311
8431
  }
8312
-
8313
- if ( jQuery.isFunction( opt.old ) ) {
8314
- opt.old.call( this );
8315
- }
8316
8432
  };
8317
8433
 
8318
8434
  return opt;
@@ -8366,8 +8482,7 @@ jQuery.fx.prototype = {
8366
8482
  // Start an animation from one number to another
8367
8483
  custom: function( from, to, unit ) {
8368
8484
  var self = this,
8369
- fx = jQuery.fx,
8370
- raf;
8485
+ fx = jQuery.fx;
8371
8486
 
8372
8487
  this.startTime = fxNow || createFxNow();
8373
8488
  this.start = from;
@@ -8383,20 +8498,7 @@ jQuery.fx.prototype = {
8383
8498
  t.elem = this.elem;
8384
8499
 
8385
8500
  if ( t() && jQuery.timers.push(t) && !timerId ) {
8386
- // Use requestAnimationFrame instead of setInterval if available
8387
- if ( requestAnimationFrame ) {
8388
- timerId = 1;
8389
- raf = function() {
8390
- // When timerId gets set to null at any point, this stops
8391
- if ( timerId ) {
8392
- requestAnimationFrame( raf );
8393
- fx.tick();
8394
- }
8395
- };
8396
- requestAnimationFrame( raf );
8397
- } else {
8398
- timerId = setInterval( fx.tick, fx.interval );
8399
- }
8501
+ timerId = setInterval( fx.tick, fx.interval );
8400
8502
  }
8401
8503
  },
8402
8504
 
@@ -8548,7 +8650,8 @@ function defaultDisplay( nodeName ) {
8548
8650
 
8549
8651
  if ( !elemdisplay[ nodeName ] ) {
8550
8652
 
8551
- var elem = jQuery( "<" + nodeName + ">" ).appendTo( "body" ),
8653
+ var body = document.body,
8654
+ elem = jQuery( "<" + nodeName + ">" ).appendTo( body ),
8552
8655
  display = elem.css( "display" );
8553
8656
 
8554
8657
  elem.remove();
@@ -8562,14 +8665,15 @@ function defaultDisplay( nodeName ) {
8562
8665
  iframe.frameBorder = iframe.width = iframe.height = 0;
8563
8666
  }
8564
8667
 
8565
- document.body.appendChild( iframe );
8668
+ body.appendChild( iframe );
8566
8669
 
8567
8670
  // Create a cacheable copy of the iframe document on first call.
8568
- // IE and Opera will allow us to reuse the iframeDoc without re-writing the fake html
8569
- // document to it, Webkit & Firefox won't allow reusing the iframe document
8671
+ // IE and Opera will allow us to reuse the iframeDoc without re-writing the fake HTML
8672
+ // document to it; WebKit & Firefox won't allow reusing the iframe document.
8570
8673
  if ( !iframeDoc || !iframe.createElement ) {
8571
8674
  iframeDoc = ( iframe.contentWindow || iframe.contentDocument ).document;
8572
- iframeDoc.write( "<!doctype><html><body></body></html>" );
8675
+ iframeDoc.write( ( document.compatMode === "CSS1Compat" ? "<!doctype html>" : "" ) + "<html><body>" );
8676
+ iframeDoc.close();
8573
8677
  }
8574
8678
 
8575
8679
  elem = iframeDoc.createElement( nodeName );
@@ -8578,7 +8682,7 @@ function defaultDisplay( nodeName ) {
8578
8682
 
8579
8683
  display = jQuery.css( elem, "display" );
8580
8684
 
8581
- document.body.removeChild( iframe );
8685
+ body.removeChild( iframe );
8582
8686
  }
8583
8687
 
8584
8688
  // Store the correct default display
@@ -8903,22 +9007,24 @@ function getWindow( elem ) {
8903
9007
 
8904
9008
  (function( jQuery ) {
8905
9009
 
8906
- // Create innerHeight, innerWidth, outerHeight and outerWidth methods
9010
+ // Create width, height, innerHeight, innerWidth, outerHeight and outerWidth methods
8907
9011
  jQuery.each([ "Height", "Width" ], function( i, name ) {
8908
9012
 
8909
9013
  var type = name.toLowerCase();
8910
9014
 
8911
9015
  // innerHeight and innerWidth
8912
- jQuery.fn["inner" + name] = function() {
8913
- return this[0] ?
8914
- parseFloat( jQuery.css( this[0], type, "padding" ) ) :
9016
+ jQuery.fn[ "inner" + name ] = function() {
9017
+ var elem = this[0];
9018
+ return elem && elem.style ?
9019
+ parseFloat( jQuery.css( elem, type, "padding" ) ) :
8915
9020
  null;
8916
9021
  };
8917
9022
 
8918
9023
  // outerHeight and outerWidth
8919
- jQuery.fn["outer" + name] = function( margin ) {
8920
- return this[0] ?
8921
- parseFloat( jQuery.css( this[0], type, margin ? "margin" : "border" ) ) :
9024
+ jQuery.fn[ "outer" + name ] = function( margin ) {
9025
+ var elem = this[0];
9026
+ return elem && elem.style ?
9027
+ parseFloat( jQuery.css( elem, type, margin ? "margin" : "border" ) ) :
8922
9028
  null;
8923
9029
  };
8924
9030
 
@@ -8939,9 +9045,10 @@ jQuery.each([ "Height", "Width" ], function( i, name ) {
8939
9045
  if ( jQuery.isWindow( elem ) ) {
8940
9046
  // Everyone else use document.documentElement or document.body depending on Quirks vs Standards mode
8941
9047
  // 3rd condition allows Nokia support, as it supports the docElem prop but not CSS1Compat
8942
- var docElemProp = elem.document.documentElement[ "client" + name ];
9048
+ var docElemProp = elem.document.documentElement[ "client" + name ],
9049
+ body = elem.document.body;
8943
9050
  return elem.document.compatMode === "CSS1Compat" && docElemProp ||
8944
- elem.document.body[ "client" + name ] || docElemProp;
9051
+ body && body[ "client" + name ] || docElemProp;
8945
9052
 
8946
9053
  // Get document width or height
8947
9054
  } else if ( elem.nodeType === 9 ) {
@@ -8970,5 +9077,6 @@ jQuery.each([ "Height", "Width" ], function( i, name ) {
8970
9077
  })( jQuery );
8971
9078
 
8972
9079
 
9080
+ // Expose jQuery to the global object
8973
9081
  window.jQuery = window.$ = jQuery;
8974
9082
  })(window);