yui-rails-asset 2.8.1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (398) hide show
  1. data/LICENSE +21 -0
  2. data/README +17 -0
  3. data/lib/yui/rails.rb +29 -0
  4. data/lib/yui/rails/engine.rb +10 -0
  5. data/lib/yui/rails/version.rb +6 -0
  6. data/vendor/assets/javascripts/yui-2.8.1/build/animation/animation-debug.js +1396 -0
  7. data/vendor/assets/javascripts/yui-2.8.1/build/animation/animation-min.js +23 -0
  8. data/vendor/assets/javascripts/yui-2.8.1/build/animation/animation.js +1392 -0
  9. data/vendor/assets/javascripts/yui-2.8.1/build/assets/skins/sam/ajax-loader.gif +0 -0
  10. data/vendor/assets/javascripts/yui-2.8.1/build/assets/skins/sam/asc.gif +0 -0
  11. data/vendor/assets/javascripts/yui-2.8.1/build/assets/skins/sam/autocomplete.css +7 -0
  12. data/vendor/assets/javascripts/yui-2.8.1/build/assets/skins/sam/back-h.png +0 -0
  13. data/vendor/assets/javascripts/yui-2.8.1/build/assets/skins/sam/back-v.png +0 -0
  14. data/vendor/assets/javascripts/yui-2.8.1/build/assets/skins/sam/bar-h.png +0 -0
  15. data/vendor/assets/javascripts/yui-2.8.1/build/assets/skins/sam/bar-v.png +0 -0
  16. data/vendor/assets/javascripts/yui-2.8.1/build/assets/skins/sam/bg-h.gif +0 -0
  17. data/vendor/assets/javascripts/yui-2.8.1/build/assets/skins/sam/bg-v.gif +0 -0
  18. data/vendor/assets/javascripts/yui-2.8.1/build/assets/skins/sam/blankimage.png +0 -0
  19. data/vendor/assets/javascripts/yui-2.8.1/build/assets/skins/sam/button.css +7 -0
  20. data/vendor/assets/javascripts/yui-2.8.1/build/assets/skins/sam/calendar.css +8 -0
  21. data/vendor/assets/javascripts/yui-2.8.1/build/assets/skins/sam/carousel.css +7 -0
  22. data/vendor/assets/javascripts/yui-2.8.1/build/assets/skins/sam/check0.gif +0 -0
  23. data/vendor/assets/javascripts/yui-2.8.1/build/assets/skins/sam/check1.gif +0 -0
  24. data/vendor/assets/javascripts/yui-2.8.1/build/assets/skins/sam/check2.gif +0 -0
  25. data/vendor/assets/javascripts/yui-2.8.1/build/assets/skins/sam/colorpicker.css +7 -0
  26. data/vendor/assets/javascripts/yui-2.8.1/build/assets/skins/sam/container.css +7 -0
  27. data/vendor/assets/javascripts/yui-2.8.1/build/assets/skins/sam/datatable.css +8 -0
  28. data/vendor/assets/javascripts/yui-2.8.1/build/assets/skins/sam/desc.gif +0 -0
  29. data/vendor/assets/javascripts/yui-2.8.1/build/assets/skins/sam/dt-arrow-dn.png +0 -0
  30. data/vendor/assets/javascripts/yui-2.8.1/build/assets/skins/sam/dt-arrow-up.png +0 -0
  31. data/vendor/assets/javascripts/yui-2.8.1/build/assets/skins/sam/editor-knob.gif +0 -0
  32. data/vendor/assets/javascripts/yui-2.8.1/build/assets/skins/sam/editor-sprite-active.gif +0 -0
  33. data/vendor/assets/javascripts/yui-2.8.1/build/assets/skins/sam/editor-sprite.gif +0 -0
  34. data/vendor/assets/javascripts/yui-2.8.1/build/assets/skins/sam/editor.css +10 -0
  35. data/vendor/assets/javascripts/yui-2.8.1/build/assets/skins/sam/header_background.png +0 -0
  36. data/vendor/assets/javascripts/yui-2.8.1/build/assets/skins/sam/hue_bg.png +0 -0
  37. data/vendor/assets/javascripts/yui-2.8.1/build/assets/skins/sam/imagecropper.css +7 -0
  38. data/vendor/assets/javascripts/yui-2.8.1/build/assets/skins/sam/layout.css +7 -0
  39. data/vendor/assets/javascripts/yui-2.8.1/build/assets/skins/sam/layout_sprite.png +0 -0
  40. data/vendor/assets/javascripts/yui-2.8.1/build/assets/skins/sam/loading.gif +0 -0
  41. data/vendor/assets/javascripts/yui-2.8.1/build/assets/skins/sam/logger.css +7 -0
  42. data/vendor/assets/javascripts/yui-2.8.1/build/assets/skins/sam/menu-button-arrow-disabled.png +0 -0
  43. data/vendor/assets/javascripts/yui-2.8.1/build/assets/skins/sam/menu-button-arrow.png +0 -0
  44. data/vendor/assets/javascripts/yui-2.8.1/build/assets/skins/sam/menu.css +7 -0
  45. data/vendor/assets/javascripts/yui-2.8.1/build/assets/skins/sam/menubaritem_submenuindicator.png +0 -0
  46. data/vendor/assets/javascripts/yui-2.8.1/build/assets/skins/sam/menubaritem_submenuindicator_disabled.png +0 -0
  47. data/vendor/assets/javascripts/yui-2.8.1/build/assets/skins/sam/menuitem_checkbox.png +0 -0
  48. data/vendor/assets/javascripts/yui-2.8.1/build/assets/skins/sam/menuitem_checkbox_disabled.png +0 -0
  49. data/vendor/assets/javascripts/yui-2.8.1/build/assets/skins/sam/menuitem_submenuindicator.png +0 -0
  50. data/vendor/assets/javascripts/yui-2.8.1/build/assets/skins/sam/menuitem_submenuindicator_disabled.png +0 -0
  51. data/vendor/assets/javascripts/yui-2.8.1/build/assets/skins/sam/paginator.css +7 -0
  52. data/vendor/assets/javascripts/yui-2.8.1/build/assets/skins/sam/picker_mask.png +0 -0
  53. data/vendor/assets/javascripts/yui-2.8.1/build/assets/skins/sam/profilerviewer.css +7 -0
  54. data/vendor/assets/javascripts/yui-2.8.1/build/assets/skins/sam/progressbar.css +7 -0
  55. data/vendor/assets/javascripts/yui-2.8.1/build/assets/skins/sam/resize.css +7 -0
  56. data/vendor/assets/javascripts/yui-2.8.1/build/assets/skins/sam/simpleeditor.css +10 -0
  57. data/vendor/assets/javascripts/yui-2.8.1/build/assets/skins/sam/skin.css +36 -0
  58. data/vendor/assets/javascripts/yui-2.8.1/build/assets/skins/sam/slider.css +7 -0
  59. data/vendor/assets/javascripts/yui-2.8.1/build/assets/skins/sam/split-button-arrow-active.png +0 -0
  60. data/vendor/assets/javascripts/yui-2.8.1/build/assets/skins/sam/split-button-arrow-disabled.png +0 -0
  61. data/vendor/assets/javascripts/yui-2.8.1/build/assets/skins/sam/split-button-arrow-focus.png +0 -0
  62. data/vendor/assets/javascripts/yui-2.8.1/build/assets/skins/sam/split-button-arrow-hover.png +0 -0
  63. data/vendor/assets/javascripts/yui-2.8.1/build/assets/skins/sam/split-button-arrow.png +0 -0
  64. data/vendor/assets/javascripts/yui-2.8.1/build/assets/skins/sam/sprite.png +0 -0
  65. data/vendor/assets/javascripts/yui-2.8.1/build/assets/skins/sam/sprite.psd +0 -0
  66. data/vendor/assets/javascripts/yui-2.8.1/build/assets/skins/sam/tabview.css +8 -0
  67. data/vendor/assets/javascripts/yui-2.8.1/build/assets/skins/sam/treeview-loading.gif +0 -0
  68. data/vendor/assets/javascripts/yui-2.8.1/build/assets/skins/sam/treeview-sprite.gif +0 -0
  69. data/vendor/assets/javascripts/yui-2.8.1/build/assets/skins/sam/treeview.css +7 -0
  70. data/vendor/assets/javascripts/yui-2.8.1/build/assets/skins/sam/wait.gif +0 -0
  71. data/vendor/assets/javascripts/yui-2.8.1/build/assets/skins/sam/yuitest.css +7 -0
  72. data/vendor/assets/javascripts/yui-2.8.1/build/autocomplete/assets/autocomplete-core.css +7 -0
  73. data/vendor/assets/javascripts/yui-2.8.1/build/autocomplete/assets/skins/sam/autocomplete-skin.css +57 -0
  74. data/vendor/assets/javascripts/yui-2.8.1/build/autocomplete/assets/skins/sam/autocomplete.css +7 -0
  75. data/vendor/assets/javascripts/yui-2.8.1/build/autocomplete/autocomplete-debug.js +3009 -0
  76. data/vendor/assets/javascripts/yui-2.8.1/build/autocomplete/autocomplete-min.js +12 -0
  77. data/vendor/assets/javascripts/yui-2.8.1/build/autocomplete/autocomplete.js +2966 -0
  78. data/vendor/assets/javascripts/yui-2.8.1/build/base/base-min.css +7 -0
  79. data/vendor/assets/javascripts/yui-2.8.1/build/base/base.css +131 -0
  80. data/vendor/assets/javascripts/yui-2.8.1/build/button/assets/button-core.css +44 -0
  81. data/vendor/assets/javascripts/yui-2.8.1/build/button/assets/skins/sam/button-skin.css +219 -0
  82. data/vendor/assets/javascripts/yui-2.8.1/build/button/assets/skins/sam/button.css +7 -0
  83. data/vendor/assets/javascripts/yui-2.8.1/build/button/assets/skins/sam/menu-button-arrow-disabled.png +0 -0
  84. data/vendor/assets/javascripts/yui-2.8.1/build/button/assets/skins/sam/menu-button-arrow.png +0 -0
  85. data/vendor/assets/javascripts/yui-2.8.1/build/button/assets/skins/sam/split-button-arrow-active.png +0 -0
  86. data/vendor/assets/javascripts/yui-2.8.1/build/button/assets/skins/sam/split-button-arrow-disabled.png +0 -0
  87. data/vendor/assets/javascripts/yui-2.8.1/build/button/assets/skins/sam/split-button-arrow-focus.png +0 -0
  88. data/vendor/assets/javascripts/yui-2.8.1/build/button/assets/skins/sam/split-button-arrow-hover.png +0 -0
  89. data/vendor/assets/javascripts/yui-2.8.1/build/button/assets/skins/sam/split-button-arrow.png +0 -0
  90. data/vendor/assets/javascripts/yui-2.8.1/build/button/button-debug.js +4694 -0
  91. data/vendor/assets/javascripts/yui-2.8.1/build/button/button-min.js +11 -0
  92. data/vendor/assets/javascripts/yui-2.8.1/build/button/button.js +4633 -0
  93. data/vendor/assets/javascripts/yui-2.8.1/build/calendar/assets/calendar-core.css +132 -0
  94. data/vendor/assets/javascripts/yui-2.8.1/build/calendar/assets/calendar.css +320 -0
  95. data/vendor/assets/javascripts/yui-2.8.1/build/calendar/assets/calgrad.png +0 -0
  96. data/vendor/assets/javascripts/yui-2.8.1/build/calendar/assets/callt.gif +0 -0
  97. data/vendor/assets/javascripts/yui-2.8.1/build/calendar/assets/calrt.gif +0 -0
  98. data/vendor/assets/javascripts/yui-2.8.1/build/calendar/assets/calx.gif +0 -0
  99. data/vendor/assets/javascripts/yui-2.8.1/build/calendar/assets/skins/sam/calendar-skin.css +361 -0
  100. data/vendor/assets/javascripts/yui-2.8.1/build/calendar/assets/skins/sam/calendar.css +8 -0
  101. data/vendor/assets/javascripts/yui-2.8.1/build/calendar/calendar-debug.js +7324 -0
  102. data/vendor/assets/javascripts/yui-2.8.1/build/calendar/calendar-min.js +18 -0
  103. data/vendor/assets/javascripts/yui-2.8.1/build/calendar/calendar.js +7294 -0
  104. data/vendor/assets/javascripts/yui-2.8.1/build/carousel/assets/ajax-loader.gif +0 -0
  105. data/vendor/assets/javascripts/yui-2.8.1/build/carousel/assets/carousel-core.css +88 -0
  106. data/vendor/assets/javascripts/yui-2.8.1/build/carousel/assets/skins/sam/ajax-loader.gif +0 -0
  107. data/vendor/assets/javascripts/yui-2.8.1/build/carousel/assets/skins/sam/carousel-skin.css +142 -0
  108. data/vendor/assets/javascripts/yui-2.8.1/build/carousel/assets/skins/sam/carousel.css +7 -0
  109. data/vendor/assets/javascripts/yui-2.8.1/build/carousel/carousel-debug.js +4390 -0
  110. data/vendor/assets/javascripts/yui-2.8.1/build/carousel/carousel-min.js +12 -0
  111. data/vendor/assets/javascripts/yui-2.8.1/build/carousel/carousel.js +4349 -0
  112. data/vendor/assets/javascripts/yui-2.8.1/build/charts/assets/charts.swf +0 -0
  113. data/vendor/assets/javascripts/yui-2.8.1/build/charts/charts-debug.js +2061 -0
  114. data/vendor/assets/javascripts/yui-2.8.1/build/charts/charts-min.js +9 -0
  115. data/vendor/assets/javascripts/yui-2.8.1/build/charts/charts.js +2060 -0
  116. data/vendor/assets/javascripts/yui-2.8.1/build/colorpicker/assets/colorpicker-core.css +6 -0
  117. data/vendor/assets/javascripts/yui-2.8.1/build/colorpicker/assets/hue_thumb.png +0 -0
  118. data/vendor/assets/javascripts/yui-2.8.1/build/colorpicker/assets/picker_mask.png +0 -0
  119. data/vendor/assets/javascripts/yui-2.8.1/build/colorpicker/assets/picker_thumb.png +0 -0
  120. data/vendor/assets/javascripts/yui-2.8.1/build/colorpicker/assets/skins/sam/colorpicker-skin.css +105 -0
  121. data/vendor/assets/javascripts/yui-2.8.1/build/colorpicker/assets/skins/sam/colorpicker.css +7 -0
  122. data/vendor/assets/javascripts/yui-2.8.1/build/colorpicker/assets/skins/sam/hue_bg.png +0 -0
  123. data/vendor/assets/javascripts/yui-2.8.1/build/colorpicker/assets/skins/sam/picker_mask.png +0 -0
  124. data/vendor/assets/javascripts/yui-2.8.1/build/colorpicker/colorpicker-debug.js +1783 -0
  125. data/vendor/assets/javascripts/yui-2.8.1/build/colorpicker/colorpicker-min.js +9 -0
  126. data/vendor/assets/javascripts/yui-2.8.1/build/colorpicker/colorpicker.js +1763 -0
  127. data/vendor/assets/javascripts/yui-2.8.1/build/connection/connection-debug.js +1576 -0
  128. data/vendor/assets/javascripts/yui-2.8.1/build/connection/connection-min.js +9 -0
  129. data/vendor/assets/javascripts/yui-2.8.1/build/connection/connection.js +1546 -0
  130. data/vendor/assets/javascripts/yui-2.8.1/build/connection/connection.swf +0 -0
  131. data/vendor/assets/javascripts/yui-2.8.1/build/connection/connection_core-debug.js +980 -0
  132. data/vendor/assets/javascripts/yui-2.8.1/build/connection/connection_core-min.js +8 -0
  133. data/vendor/assets/javascripts/yui-2.8.1/build/connection/connection_core.js +957 -0
  134. data/vendor/assets/javascripts/yui-2.8.1/build/container/assets/alrt16_1.gif +0 -0
  135. data/vendor/assets/javascripts/yui-2.8.1/build/container/assets/blck16_1.gif +0 -0
  136. data/vendor/assets/javascripts/yui-2.8.1/build/container/assets/close12_1.gif +0 -0
  137. data/vendor/assets/javascripts/yui-2.8.1/build/container/assets/container-core.css +176 -0
  138. data/vendor/assets/javascripts/yui-2.8.1/build/container/assets/container.css +324 -0
  139. data/vendor/assets/javascripts/yui-2.8.1/build/container/assets/hlp16_1.gif +0 -0
  140. data/vendor/assets/javascripts/yui-2.8.1/build/container/assets/info16_1.gif +0 -0
  141. data/vendor/assets/javascripts/yui-2.8.1/build/container/assets/skins/sam/container-skin.css +242 -0
  142. data/vendor/assets/javascripts/yui-2.8.1/build/container/assets/skins/sam/container.css +7 -0
  143. data/vendor/assets/javascripts/yui-2.8.1/build/container/assets/tip16_1.gif +0 -0
  144. data/vendor/assets/javascripts/yui-2.8.1/build/container/assets/warn16_1.gif +0 -0
  145. data/vendor/assets/javascripts/yui-2.8.1/build/container/container-debug.js +9076 -0
  146. data/vendor/assets/javascripts/yui-2.8.1/build/container/container-min.js +19 -0
  147. data/vendor/assets/javascripts/yui-2.8.1/build/container/container.js +9052 -0
  148. data/vendor/assets/javascripts/yui-2.8.1/build/container/container_core-debug.js +5136 -0
  149. data/vendor/assets/javascripts/yui-2.8.1/build/container/container_core-min.js +14 -0
  150. data/vendor/assets/javascripts/yui-2.8.1/build/container/container_core.js +5126 -0
  151. data/vendor/assets/javascripts/yui-2.8.1/build/cookie/cookie-debug.js +482 -0
  152. data/vendor/assets/javascripts/yui-2.8.1/build/cookie/cookie-min.js +7 -0
  153. data/vendor/assets/javascripts/yui-2.8.1/build/cookie/cookie.js +482 -0
  154. data/vendor/assets/javascripts/yui-2.8.1/build/datasource/datasource-debug.js +3067 -0
  155. data/vendor/assets/javascripts/yui-2.8.1/build/datasource/datasource-min.js +12 -0
  156. data/vendor/assets/javascripts/yui-2.8.1/build/datasource/datasource.js +2996 -0
  157. data/vendor/assets/javascripts/yui-2.8.1/build/datatable/assets/datatable-core.css +93 -0
  158. data/vendor/assets/javascripts/yui-2.8.1/build/datatable/assets/datatable.css +49 -0
  159. data/vendor/assets/javascripts/yui-2.8.1/build/datatable/assets/skins/sam/datatable-skin.css +240 -0
  160. data/vendor/assets/javascripts/yui-2.8.1/build/datatable/assets/skins/sam/datatable.css +8 -0
  161. data/vendor/assets/javascripts/yui-2.8.1/build/datatable/assets/skins/sam/dt-arrow-dn.png +0 -0
  162. data/vendor/assets/javascripts/yui-2.8.1/build/datatable/assets/skins/sam/dt-arrow-up.png +0 -0
  163. data/vendor/assets/javascripts/yui-2.8.1/build/datatable/datatable-debug.js +17360 -0
  164. data/vendor/assets/javascripts/yui-2.8.1/build/datatable/datatable-min.js +29 -0
  165. data/vendor/assets/javascripts/yui-2.8.1/build/datatable/datatable.js +17122 -0
  166. data/vendor/assets/javascripts/yui-2.8.1/build/datemath/datemath-debug.js +408 -0
  167. data/vendor/assets/javascripts/yui-2.8.1/build/datemath/datemath-min.js +7 -0
  168. data/vendor/assets/javascripts/yui-2.8.1/build/datemath/datemath.js +408 -0
  169. data/vendor/assets/javascripts/yui-2.8.1/build/dom/dom-debug.js +1872 -0
  170. data/vendor/assets/javascripts/yui-2.8.1/build/dom/dom-min.js +9 -0
  171. data/vendor/assets/javascripts/yui-2.8.1/build/dom/dom.js +1832 -0
  172. data/vendor/assets/javascripts/yui-2.8.1/build/dragdrop/dragdrop-debug.js +3710 -0
  173. data/vendor/assets/javascripts/yui-2.8.1/build/dragdrop/dragdrop-min.js +10 -0
  174. data/vendor/assets/javascripts/yui-2.8.1/build/dragdrop/dragdrop.js +3601 -0
  175. data/vendor/assets/javascripts/yui-2.8.1/build/editor/assets/editor-core.css +602 -0
  176. data/vendor/assets/javascripts/yui-2.8.1/build/editor/assets/simpleeditor-core.css +602 -0
  177. data/vendor/assets/javascripts/yui-2.8.1/build/editor/assets/skins/sam/blankimage.png +0 -0
  178. data/vendor/assets/javascripts/yui-2.8.1/build/editor/assets/skins/sam/editor-knob.gif +0 -0
  179. data/vendor/assets/javascripts/yui-2.8.1/build/editor/assets/skins/sam/editor-skin.css +711 -0
  180. data/vendor/assets/javascripts/yui-2.8.1/build/editor/assets/skins/sam/editor-sprite-active.gif +0 -0
  181. data/vendor/assets/javascripts/yui-2.8.1/build/editor/assets/skins/sam/editor-sprite.gif +0 -0
  182. data/vendor/assets/javascripts/yui-2.8.1/build/editor/assets/skins/sam/editor.css +10 -0
  183. data/vendor/assets/javascripts/yui-2.8.1/build/editor/assets/skins/sam/simpleeditor-skin.css +711 -0
  184. data/vendor/assets/javascripts/yui-2.8.1/build/editor/assets/skins/sam/simpleeditor.css +10 -0
  185. data/vendor/assets/javascripts/yui-2.8.1/build/editor/editor-debug.js +9557 -0
  186. data/vendor/assets/javascripts/yui-2.8.1/build/editor/editor-min.js +30 -0
  187. data/vendor/assets/javascripts/yui-2.8.1/build/editor/editor.js +9447 -0
  188. data/vendor/assets/javascripts/yui-2.8.1/build/editor/simpleeditor-debug.js +7493 -0
  189. data/vendor/assets/javascripts/yui-2.8.1/build/editor/simpleeditor-min.js +24 -0
  190. data/vendor/assets/javascripts/yui-2.8.1/build/editor/simpleeditor.js +7406 -0
  191. data/vendor/assets/javascripts/yui-2.8.1/build/element-delegate/element-delegate-debug.js +141 -0
  192. data/vendor/assets/javascripts/yui-2.8.1/build/element-delegate/element-delegate-min.js +7 -0
  193. data/vendor/assets/javascripts/yui-2.8.1/build/element-delegate/element-delegate.js +138 -0
  194. data/vendor/assets/javascripts/yui-2.8.1/build/element/element-debug.js +1106 -0
  195. data/vendor/assets/javascripts/yui-2.8.1/build/element/element-min.js +8 -0
  196. data/vendor/assets/javascripts/yui-2.8.1/build/element/element.js +1090 -0
  197. data/vendor/assets/javascripts/yui-2.8.1/build/event-delegate/event-delegate-debug.js +283 -0
  198. data/vendor/assets/javascripts/yui-2.8.1/build/event-delegate/event-delegate-min.js +7 -0
  199. data/vendor/assets/javascripts/yui-2.8.1/build/event-delegate/event-delegate.js +281 -0
  200. data/vendor/assets/javascripts/yui-2.8.1/build/event-mouseenter/event-mouseenter-debug.js +219 -0
  201. data/vendor/assets/javascripts/yui-2.8.1/build/event-mouseenter/event-mouseenter-min.js +7 -0
  202. data/vendor/assets/javascripts/yui-2.8.1/build/event-mouseenter/event-mouseenter.js +219 -0
  203. data/vendor/assets/javascripts/yui-2.8.1/build/event-simulate/event-simulate-debug.js +622 -0
  204. data/vendor/assets/javascripts/yui-2.8.1/build/event-simulate/event-simulate-min.js +7 -0
  205. data/vendor/assets/javascripts/yui-2.8.1/build/event-simulate/event-simulate.js +622 -0
  206. data/vendor/assets/javascripts/yui-2.8.1/build/event/event-debug.js +2524 -0
  207. data/vendor/assets/javascripts/yui-2.8.1/build/event/event-min.js +11 -0
  208. data/vendor/assets/javascripts/yui-2.8.1/build/event/event.js +2500 -0
  209. data/vendor/assets/javascripts/yui-2.8.1/build/fonts/fonts-min.css +7 -0
  210. data/vendor/assets/javascripts/yui-2.8.1/build/fonts/fonts.css +56 -0
  211. data/vendor/assets/javascripts/yui-2.8.1/build/get/get-debug.js +773 -0
  212. data/vendor/assets/javascripts/yui-2.8.1/build/get/get-min.js +7 -0
  213. data/vendor/assets/javascripts/yui-2.8.1/build/get/get.js +755 -0
  214. data/vendor/assets/javascripts/yui-2.8.1/build/grids/grids-min.css +7 -0
  215. data/vendor/assets/javascripts/yui-2.8.1/build/grids/grids.css +467 -0
  216. data/vendor/assets/javascripts/yui-2.8.1/build/history/assets/blank.html +1 -0
  217. data/vendor/assets/javascripts/yui-2.8.1/build/history/history-debug.js +808 -0
  218. data/vendor/assets/javascripts/yui-2.8.1/build/history/history-min.js +7 -0
  219. data/vendor/assets/javascripts/yui-2.8.1/build/history/history.js +808 -0
  220. data/vendor/assets/javascripts/yui-2.8.1/build/imagecropper/assets/imagecropper-core.css +33 -0
  221. data/vendor/assets/javascripts/yui-2.8.1/build/imagecropper/assets/skins/sam/imagecropper-skin.css +16 -0
  222. data/vendor/assets/javascripts/yui-2.8.1/build/imagecropper/assets/skins/sam/imagecropper.css +7 -0
  223. data/vendor/assets/javascripts/yui-2.8.1/build/imagecropper/imagecropper-debug.js +907 -0
  224. data/vendor/assets/javascripts/yui-2.8.1/build/imagecropper/imagecropper-min.js +8 -0
  225. data/vendor/assets/javascripts/yui-2.8.1/build/imagecropper/imagecropper.js +889 -0
  226. data/vendor/assets/javascripts/yui-2.8.1/build/imageloader/imageloader-debug.js +487 -0
  227. data/vendor/assets/javascripts/yui-2.8.1/build/imageloader/imageloader-min.js +7 -0
  228. data/vendor/assets/javascripts/yui-2.8.1/build/imageloader/imageloader.js +481 -0
  229. data/vendor/assets/javascripts/yui-2.8.1/build/json/json-debug.js +538 -0
  230. data/vendor/assets/javascripts/yui-2.8.1/build/json/json-min.js +7 -0
  231. data/vendor/assets/javascripts/yui-2.8.1/build/json/json.js +538 -0
  232. data/vendor/assets/javascripts/yui-2.8.1/build/layout/assets/layout-core.css +158 -0
  233. data/vendor/assets/javascripts/yui-2.8.1/build/layout/assets/skins/sam/layout-skin.css +207 -0
  234. data/vendor/assets/javascripts/yui-2.8.1/build/layout/assets/skins/sam/layout.css +7 -0
  235. data/vendor/assets/javascripts/yui-2.8.1/build/layout/assets/skins/sam/layout_sprite.png +0 -0
  236. data/vendor/assets/javascripts/yui-2.8.1/build/layout/layout-debug.js +2305 -0
  237. data/vendor/assets/javascripts/yui-2.8.1/build/layout/layout-min.js +11 -0
  238. data/vendor/assets/javascripts/yui-2.8.1/build/layout/layout.js +2290 -0
  239. data/vendor/assets/javascripts/yui-2.8.1/build/logger/assets/logger-core.css +7 -0
  240. data/vendor/assets/javascripts/yui-2.8.1/build/logger/assets/logger.css +57 -0
  241. data/vendor/assets/javascripts/yui-2.8.1/build/logger/assets/skins/sam/logger-skin.css +55 -0
  242. data/vendor/assets/javascripts/yui-2.8.1/build/logger/assets/skins/sam/logger.css +7 -0
  243. data/vendor/assets/javascripts/yui-2.8.1/build/logger/logger-debug.js +2104 -0
  244. data/vendor/assets/javascripts/yui-2.8.1/build/logger/logger-min.js +9 -0
  245. data/vendor/assets/javascripts/yui-2.8.1/build/logger/logger.js +2104 -0
  246. data/vendor/assets/javascripts/yui-2.8.1/build/menu/assets/menu-core.css +242 -0
  247. data/vendor/assets/javascripts/yui-2.8.1/build/menu/assets/menu.css +503 -0
  248. data/vendor/assets/javascripts/yui-2.8.1/build/menu/assets/menu_down_arrow.png +0 -0
  249. data/vendor/assets/javascripts/yui-2.8.1/build/menu/assets/menu_down_arrow_disabled.png +0 -0
  250. data/vendor/assets/javascripts/yui-2.8.1/build/menu/assets/menu_up_arrow.png +0 -0
  251. data/vendor/assets/javascripts/yui-2.8.1/build/menu/assets/menu_up_arrow_disabled.png +0 -0
  252. data/vendor/assets/javascripts/yui-2.8.1/build/menu/assets/menubaritem_submenuindicator.png +0 -0
  253. data/vendor/assets/javascripts/yui-2.8.1/build/menu/assets/menubaritem_submenuindicator_disabled.png +0 -0
  254. data/vendor/assets/javascripts/yui-2.8.1/build/menu/assets/menubaritem_submenuindicator_selected.png +0 -0
  255. data/vendor/assets/javascripts/yui-2.8.1/build/menu/assets/menuitem_checkbox.png +0 -0
  256. data/vendor/assets/javascripts/yui-2.8.1/build/menu/assets/menuitem_checkbox_disabled.png +0 -0
  257. data/vendor/assets/javascripts/yui-2.8.1/build/menu/assets/menuitem_checkbox_selected.png +0 -0
  258. data/vendor/assets/javascripts/yui-2.8.1/build/menu/assets/menuitem_submenuindicator.png +0 -0
  259. data/vendor/assets/javascripts/yui-2.8.1/build/menu/assets/menuitem_submenuindicator_disabled.png +0 -0
  260. data/vendor/assets/javascripts/yui-2.8.1/build/menu/assets/menuitem_submenuindicator_selected.png +0 -0
  261. data/vendor/assets/javascripts/yui-2.8.1/build/menu/assets/skins/sam/menu-skin.css +339 -0
  262. data/vendor/assets/javascripts/yui-2.8.1/build/menu/assets/skins/sam/menu.css +7 -0
  263. data/vendor/assets/javascripts/yui-2.8.1/build/menu/assets/skins/sam/menubaritem_submenuindicator.png +0 -0
  264. data/vendor/assets/javascripts/yui-2.8.1/build/menu/assets/skins/sam/menubaritem_submenuindicator_disabled.png +0 -0
  265. data/vendor/assets/javascripts/yui-2.8.1/build/menu/assets/skins/sam/menuitem_checkbox.png +0 -0
  266. data/vendor/assets/javascripts/yui-2.8.1/build/menu/assets/skins/sam/menuitem_checkbox_disabled.png +0 -0
  267. data/vendor/assets/javascripts/yui-2.8.1/build/menu/assets/skins/sam/menuitem_submenuindicator.png +0 -0
  268. data/vendor/assets/javascripts/yui-2.8.1/build/menu/assets/skins/sam/menuitem_submenuindicator_disabled.png +0 -0
  269. data/vendor/assets/javascripts/yui-2.8.1/build/menu/menu-debug.js +9870 -0
  270. data/vendor/assets/javascripts/yui-2.8.1/build/menu/menu-min.js +16 -0
  271. data/vendor/assets/javascripts/yui-2.8.1/build/menu/menu.js +9823 -0
  272. data/vendor/assets/javascripts/yui-2.8.1/build/paginator/assets/paginator-core.css +6 -0
  273. data/vendor/assets/javascripts/yui-2.8.1/build/paginator/assets/skins/sam/paginator-skin.css +78 -0
  274. data/vendor/assets/javascripts/yui-2.8.1/build/paginator/assets/skins/sam/paginator.css +7 -0
  275. data/vendor/assets/javascripts/yui-2.8.1/build/paginator/paginator-debug.js +2393 -0
  276. data/vendor/assets/javascripts/yui-2.8.1/build/paginator/paginator-min.js +10 -0
  277. data/vendor/assets/javascripts/yui-2.8.1/build/paginator/paginator.js +2393 -0
  278. data/vendor/assets/javascripts/yui-2.8.1/build/profiler/profiler-debug.js +557 -0
  279. data/vendor/assets/javascripts/yui-2.8.1/build/profiler/profiler-min.js +7 -0
  280. data/vendor/assets/javascripts/yui-2.8.1/build/profiler/profiler.js +557 -0
  281. data/vendor/assets/javascripts/yui-2.8.1/build/profilerviewer/assets/profilerviewer-core.css +6 -0
  282. data/vendor/assets/javascripts/yui-2.8.1/build/profilerviewer/assets/skins/sam/asc.gif +0 -0
  283. data/vendor/assets/javascripts/yui-2.8.1/build/profilerviewer/assets/skins/sam/desc.gif +0 -0
  284. data/vendor/assets/javascripts/yui-2.8.1/build/profilerviewer/assets/skins/sam/header_background.png +0 -0
  285. data/vendor/assets/javascripts/yui-2.8.1/build/profilerviewer/assets/skins/sam/profilerviewer-skin.css +167 -0
  286. data/vendor/assets/javascripts/yui-2.8.1/build/profilerviewer/assets/skins/sam/profilerviewer.css +7 -0
  287. data/vendor/assets/javascripts/yui-2.8.1/build/profilerviewer/assets/skins/sam/wait.gif +0 -0
  288. data/vendor/assets/javascripts/yui-2.8.1/build/profilerviewer/profilerviewer-debug.js +1229 -0
  289. data/vendor/assets/javascripts/yui-2.8.1/build/profilerviewer/profilerviewer-min.js +9 -0
  290. data/vendor/assets/javascripts/yui-2.8.1/build/profilerviewer/profilerviewer.js +1192 -0
  291. data/vendor/assets/javascripts/yui-2.8.1/build/progressbar/assets/progressbar-core.css +85 -0
  292. data/vendor/assets/javascripts/yui-2.8.1/build/progressbar/assets/skins/sam/back-h.png +0 -0
  293. data/vendor/assets/javascripts/yui-2.8.1/build/progressbar/assets/skins/sam/back-v.png +0 -0
  294. data/vendor/assets/javascripts/yui-2.8.1/build/progressbar/assets/skins/sam/bar-h.png +0 -0
  295. data/vendor/assets/javascripts/yui-2.8.1/build/progressbar/assets/skins/sam/bar-v.png +0 -0
  296. data/vendor/assets/javascripts/yui-2.8.1/build/progressbar/assets/skins/sam/progressbar-skin.css +56 -0
  297. data/vendor/assets/javascripts/yui-2.8.1/build/progressbar/assets/skins/sam/progressbar.css +7 -0
  298. data/vendor/assets/javascripts/yui-2.8.1/build/progressbar/progressbar-debug.js +691 -0
  299. data/vendor/assets/javascripts/yui-2.8.1/build/progressbar/progressbar-min.js +8 -0
  300. data/vendor/assets/javascripts/yui-2.8.1/build/progressbar/progressbar.js +677 -0
  301. data/vendor/assets/javascripts/yui-2.8.1/build/reset-fonts-grids/reset-fonts-grids.css +7 -0
  302. data/vendor/assets/javascripts/yui-2.8.1/build/reset-fonts/reset-fonts.css +7 -0
  303. data/vendor/assets/javascripts/yui-2.8.1/build/reset/reset-min.css +7 -0
  304. data/vendor/assets/javascripts/yui-2.8.1/build/reset/reset.css +142 -0
  305. data/vendor/assets/javascripts/yui-2.8.1/build/resize/assets/resize-core.css +173 -0
  306. data/vendor/assets/javascripts/yui-2.8.1/build/resize/assets/skins/sam/layout_sprite.png +0 -0
  307. data/vendor/assets/javascripts/yui-2.8.1/build/resize/assets/skins/sam/resize-skin.css +142 -0
  308. data/vendor/assets/javascripts/yui-2.8.1/build/resize/assets/skins/sam/resize.css +7 -0
  309. data/vendor/assets/javascripts/yui-2.8.1/build/resize/resize-debug.js +1749 -0
  310. data/vendor/assets/javascripts/yui-2.8.1/build/resize/resize-min.js +10 -0
  311. data/vendor/assets/javascripts/yui-2.8.1/build/resize/resize.js +1689 -0
  312. data/vendor/assets/javascripts/yui-2.8.1/build/selector/selector-debug.js +651 -0
  313. data/vendor/assets/javascripts/yui-2.8.1/build/selector/selector-min.js +8 -0
  314. data/vendor/assets/javascripts/yui-2.8.1/build/selector/selector.js +644 -0
  315. data/vendor/assets/javascripts/yui-2.8.1/build/slider/assets/bg-fader.gif +0 -0
  316. data/vendor/assets/javascripts/yui-2.8.1/build/slider/assets/bg-h.gif +0 -0
  317. data/vendor/assets/javascripts/yui-2.8.1/build/slider/assets/bg-v-e.gif +0 -0
  318. data/vendor/assets/javascripts/yui-2.8.1/build/slider/assets/bg-v.gif +0 -0
  319. data/vendor/assets/javascripts/yui-2.8.1/build/slider/assets/left-thumb.png +0 -0
  320. data/vendor/assets/javascripts/yui-2.8.1/build/slider/assets/right-thumb.png +0 -0
  321. data/vendor/assets/javascripts/yui-2.8.1/build/slider/assets/skins/sam/bg-h.gif +0 -0
  322. data/vendor/assets/javascripts/yui-2.8.1/build/slider/assets/skins/sam/bg-v.gif +0 -0
  323. data/vendor/assets/javascripts/yui-2.8.1/build/slider/assets/skins/sam/slider-skin.css +24 -0
  324. data/vendor/assets/javascripts/yui-2.8.1/build/slider/assets/skins/sam/slider.css +7 -0
  325. data/vendor/assets/javascripts/yui-2.8.1/build/slider/assets/slider-core.css +17 -0
  326. data/vendor/assets/javascripts/yui-2.8.1/build/slider/assets/slider-skin.css +20 -0
  327. data/vendor/assets/javascripts/yui-2.8.1/build/slider/assets/thumb-bar.gif +0 -0
  328. data/vendor/assets/javascripts/yui-2.8.1/build/slider/assets/thumb-e.gif +0 -0
  329. data/vendor/assets/javascripts/yui-2.8.1/build/slider/assets/thumb-fader.gif +0 -0
  330. data/vendor/assets/javascripts/yui-2.8.1/build/slider/assets/thumb-n.gif +0 -0
  331. data/vendor/assets/javascripts/yui-2.8.1/build/slider/assets/thumb-s.gif +0 -0
  332. data/vendor/assets/javascripts/yui-2.8.1/build/slider/assets/thumb-w.gif +0 -0
  333. data/vendor/assets/javascripts/yui-2.8.1/build/slider/slider-debug.js +2114 -0
  334. data/vendor/assets/javascripts/yui-2.8.1/build/slider/slider-min.js +9 -0
  335. data/vendor/assets/javascripts/yui-2.8.1/build/slider/slider.js +2068 -0
  336. data/vendor/assets/javascripts/yui-2.8.1/build/storage/storage-debug.js +1185 -0
  337. data/vendor/assets/javascripts/yui-2.8.1/build/storage/storage-min.js +8 -0
  338. data/vendor/assets/javascripts/yui-2.8.1/build/storage/storage.js +1183 -0
  339. data/vendor/assets/javascripts/yui-2.8.1/build/stylesheet/stylesheet-debug.js +648 -0
  340. data/vendor/assets/javascripts/yui-2.8.1/build/stylesheet/stylesheet-min.js +7 -0
  341. data/vendor/assets/javascripts/yui-2.8.1/build/stylesheet/stylesheet.js +645 -0
  342. data/vendor/assets/javascripts/yui-2.8.1/build/swf/swf-debug.js +269 -0
  343. data/vendor/assets/javascripts/yui-2.8.1/build/swf/swf-min.js +7 -0
  344. data/vendor/assets/javascripts/yui-2.8.1/build/swf/swf.js +268 -0
  345. data/vendor/assets/javascripts/yui-2.8.1/build/swfdetect/swfdetect-debug.js +93 -0
  346. data/vendor/assets/javascripts/yui-2.8.1/build/swfdetect/swfdetect-min.js +7 -0
  347. data/vendor/assets/javascripts/yui-2.8.1/build/swfdetect/swfdetect.js +93 -0
  348. data/vendor/assets/javascripts/yui-2.8.1/build/swfstore/swf.js +238 -0
  349. data/vendor/assets/javascripts/yui-2.8.1/build/swfstore/swfstore-debug.js +470 -0
  350. data/vendor/assets/javascripts/yui-2.8.1/build/swfstore/swfstore-min.js +7 -0
  351. data/vendor/assets/javascripts/yui-2.8.1/build/swfstore/swfstore.js +453 -0
  352. data/vendor/assets/javascripts/yui-2.8.1/build/swfstore/swfstore.swf +0 -0
  353. data/vendor/assets/javascripts/yui-2.8.1/build/tabview/assets/border_tabs.css +54 -0
  354. data/vendor/assets/javascripts/yui-2.8.1/build/tabview/assets/loading.gif +0 -0
  355. data/vendor/assets/javascripts/yui-2.8.1/build/tabview/assets/skin-sam.css +77 -0
  356. data/vendor/assets/javascripts/yui-2.8.1/build/tabview/assets/skins/sam/tabview-skin.css +186 -0
  357. data/vendor/assets/javascripts/yui-2.8.1/build/tabview/assets/skins/sam/tabview.css +8 -0
  358. data/vendor/assets/javascripts/yui-2.8.1/build/tabview/assets/tabview-core.css +133 -0
  359. data/vendor/assets/javascripts/yui-2.8.1/build/tabview/assets/tabview.css +77 -0
  360. data/vendor/assets/javascripts/yui-2.8.1/build/tabview/tabview-debug.js +995 -0
  361. data/vendor/assets/javascripts/yui-2.8.1/build/tabview/tabview-min.js +8 -0
  362. data/vendor/assets/javascripts/yui-2.8.1/build/tabview/tabview.js +987 -0
  363. data/vendor/assets/javascripts/yui-2.8.1/build/treeview/assets/skins/sam/check0.gif +0 -0
  364. data/vendor/assets/javascripts/yui-2.8.1/build/treeview/assets/skins/sam/check1.gif +0 -0
  365. data/vendor/assets/javascripts/yui-2.8.1/build/treeview/assets/skins/sam/check2.gif +0 -0
  366. data/vendor/assets/javascripts/yui-2.8.1/build/treeview/assets/skins/sam/loading.gif +0 -0
  367. data/vendor/assets/javascripts/yui-2.8.1/build/treeview/assets/skins/sam/treeview-loading.gif +0 -0
  368. data/vendor/assets/javascripts/yui-2.8.1/build/treeview/assets/skins/sam/treeview-skin.css +249 -0
  369. data/vendor/assets/javascripts/yui-2.8.1/build/treeview/assets/skins/sam/treeview-sprite.gif +0 -0
  370. data/vendor/assets/javascripts/yui-2.8.1/build/treeview/assets/skins/sam/treeview.css +7 -0
  371. data/vendor/assets/javascripts/yui-2.8.1/build/treeview/assets/treeview-core.css +6 -0
  372. data/vendor/assets/javascripts/yui-2.8.1/build/treeview/treeview-debug.js +4058 -0
  373. data/vendor/assets/javascripts/yui-2.8.1/build/treeview/treeview-min.js +12 -0
  374. data/vendor/assets/javascripts/yui-2.8.1/build/treeview/treeview.js +3989 -0
  375. data/vendor/assets/javascripts/yui-2.8.1/build/uploader/assets/uploader.swf +0 -0
  376. data/vendor/assets/javascripts/yui-2.8.1/build/uploader/uploader-debug.js +1072 -0
  377. data/vendor/assets/javascripts/yui-2.8.1/build/uploader/uploader-min.js +15 -0
  378. data/vendor/assets/javascripts/yui-2.8.1/build/uploader/uploader.js +1069 -0
  379. data/vendor/assets/javascripts/yui-2.8.1/build/utilities/utilities.js +39 -0
  380. data/vendor/assets/javascripts/yui-2.8.1/build/yahoo-dom-event/yahoo-dom-event.js +14 -0
  381. data/vendor/assets/javascripts/yui-2.8.1/build/yahoo/yahoo-debug.js +1075 -0
  382. data/vendor/assets/javascripts/yui-2.8.1/build/yahoo/yahoo-min.js +7 -0
  383. data/vendor/assets/javascripts/yui-2.8.1/build/yahoo/yahoo.js +1075 -0
  384. data/vendor/assets/javascripts/yui-2.8.1/build/yuiloader-dom-event/yuiloader-dom-event.js +17 -0
  385. data/vendor/assets/javascripts/yui-2.8.1/build/yuiloader/yuiloader-debug.js +3879 -0
  386. data/vendor/assets/javascripts/yui-2.8.1/build/yuiloader/yuiloader-min.js +10 -0
  387. data/vendor/assets/javascripts/yui-2.8.1/build/yuiloader/yuiloader.js +3879 -0
  388. data/vendor/assets/javascripts/yui-2.8.1/build/yuitest/assets/skins/sam/yuitest-skin.css +7 -0
  389. data/vendor/assets/javascripts/yui-2.8.1/build/yuitest/assets/skins/sam/yuitest.css +7 -0
  390. data/vendor/assets/javascripts/yui-2.8.1/build/yuitest/assets/testlogger.css +7 -0
  391. data/vendor/assets/javascripts/yui-2.8.1/build/yuitest/assets/yuitest-core.css +7 -0
  392. data/vendor/assets/javascripts/yui-2.8.1/build/yuitest/yuitest-debug.js +2741 -0
  393. data/vendor/assets/javascripts/yui-2.8.1/build/yuitest/yuitest-min.js +10 -0
  394. data/vendor/assets/javascripts/yui-2.8.1/build/yuitest/yuitest.js +2741 -0
  395. data/vendor/assets/javascripts/yui-2.8.1/build/yuitest/yuitest_core-debug.js +1976 -0
  396. data/vendor/assets/javascripts/yui-2.8.1/build/yuitest/yuitest_core-min.js +9 -0
  397. data/vendor/assets/javascripts/yui-2.8.1/build/yuitest/yuitest_core.js +1976 -0
  398. metadata +470 -0
@@ -0,0 +1,9 @@
1
+ /*
2
+ Copyright (c) 2010, Yahoo! Inc. All rights reserved.
3
+ Code licensed under the BSD License:
4
+ http://developer.yahoo.com/yui/license.html
5
+ version: 2.8.1
6
+ */
7
+ (function(){var B=YAHOO.util.Dom.getXY,A=YAHOO.util.Event,D=Array.prototype.slice;function C(G,E,F,H){C.ANIM_AVAIL=(!YAHOO.lang.isUndefined(YAHOO.util.Anim));if(G){this.init(G,E,true);this.initSlider(H);this.initThumb(F);}}YAHOO.lang.augmentObject(C,{getHorizSlider:function(F,G,I,H,E){return new C(F,F,new YAHOO.widget.SliderThumb(G,F,I,H,0,0,E),"horiz");},getVertSlider:function(G,H,E,I,F){return new C(G,G,new YAHOO.widget.SliderThumb(H,G,0,0,E,I,F),"vert");},getSliderRegion:function(G,H,J,I,E,K,F){return new C(G,G,new YAHOO.widget.SliderThumb(H,G,J,I,E,K,F),"region");},SOURCE_UI_EVENT:1,SOURCE_SET_VALUE:2,SOURCE_KEY_EVENT:3,ANIM_AVAIL:false},true);YAHOO.extend(C,YAHOO.util.DragDrop,{_mouseDown:false,dragOnly:true,initSlider:function(E){this.type=E;this.createEvent("change",this);this.createEvent("slideStart",this);this.createEvent("slideEnd",this);this.isTarget=false;this.animate=C.ANIM_AVAIL;this.backgroundEnabled=true;this.tickPause=40;this.enableKeys=true;this.keyIncrement=20;this.moveComplete=true;this.animationDuration=0.2;this.SOURCE_UI_EVENT=1;this.SOURCE_SET_VALUE=2;this.valueChangeSource=0;this._silent=false;this.lastOffset=[0,0];},initThumb:function(F){var E=this;this.thumb=F;F.cacheBetweenDrags=true;if(F._isHoriz&&F.xTicks&&F.xTicks.length){this.tickPause=Math.round(360/F.xTicks.length);}else{if(F.yTicks&&F.yTicks.length){this.tickPause=Math.round(360/F.yTicks.length);}}F.onAvailable=function(){return E.setStartSliderState();};F.onMouseDown=function(){E._mouseDown=true;return E.focus();};F.startDrag=function(){E._slideStart();};F.onDrag=function(){E.fireEvents(true);};F.onMouseUp=function(){E.thumbMouseUp();};},onAvailable:function(){this._bindKeyEvents();},_bindKeyEvents:function(){A.on(this.id,"keydown",this.handleKeyDown,this,true);A.on(this.id,"keypress",this.handleKeyPress,this,true);},handleKeyPress:function(F){if(this.enableKeys){var E=A.getCharCode(F);switch(E){case 37:case 38:case 39:case 40:case 36:case 35:A.preventDefault(F);break;default:}}},handleKeyDown:function(J){if(this.enableKeys){var G=A.getCharCode(J),F=this.thumb,H=this.getXValue(),E=this.getYValue(),I=true;switch(G){case 37:H-=this.keyIncrement;break;case 38:E-=this.keyIncrement;break;case 39:H+=this.keyIncrement;break;case 40:E+=this.keyIncrement;break;case 36:H=F.leftConstraint;E=F.topConstraint;break;case 35:H=F.rightConstraint;E=F.bottomConstraint;break;default:I=false;}if(I){if(F._isRegion){this._setRegionValue(C.SOURCE_KEY_EVENT,H,E,true);}else{this._setValue(C.SOURCE_KEY_EVENT,(F._isHoriz?H:E),true);}A.stopEvent(J);}}},setStartSliderState:function(){this.setThumbCenterPoint();this.baselinePos=B(this.getEl());this.thumb.startOffset=this.thumb.getOffsetFromParent(this.baselinePos);if(this.thumb._isRegion){if(this.deferredSetRegionValue){this._setRegionValue.apply(this,this.deferredSetRegionValue);this.deferredSetRegionValue=null;}else{this.setRegionValue(0,0,true,true,true);}}else{if(this.deferredSetValue){this._setValue.apply(this,this.deferredSetValue);this.deferredSetValue=null;}else{this.setValue(0,true,true,true);}}},setThumbCenterPoint:function(){var E=this.thumb.getEl();if(E){this.thumbCenterPoint={x:parseInt(E.offsetWidth/2,10),y:parseInt(E.offsetHeight/2,10)};}},lock:function(){this.thumb.lock();this.locked=true;},unlock:function(){this.thumb.unlock();this.locked=false;},thumbMouseUp:function(){this._mouseDown=false;if(!this.isLocked()){this.endMove();}},onMouseUp:function(){this._mouseDown=false;if(this.backgroundEnabled&&!this.isLocked()){this.endMove();}},getThumb:function(){return this.thumb;},focus:function(){this.valueChangeSource=C.SOURCE_UI_EVENT;var E=this.getEl();if(E.focus){try{E.focus();}catch(F){}}this.verifyOffset();return !this.isLocked();},onChange:function(E,F){},onSlideStart:function(){},onSlideEnd:function(){},getValue:function(){return this.thumb.getValue();},getXValue:function(){return this.thumb.getXValue();},getYValue:function(){return this.thumb.getYValue();},setValue:function(){var E=D.call(arguments);E.unshift(C.SOURCE_SET_VALUE);return this._setValue.apply(this,E);},_setValue:function(I,L,G,H,E){var F=this.thumb,K,J;if(!F.available){this.deferredSetValue=arguments;return false;}if(this.isLocked()&&!H){return false;}if(isNaN(L)){return false;}if(F._isRegion){return false;}this._silent=E;this.valueChangeSource=I||C.SOURCE_SET_VALUE;F.lastOffset=[L,L];this.verifyOffset();this._slideStart();if(F._isHoriz){K=F.initPageX+L+this.thumbCenterPoint.x;this.moveThumb(K,F.initPageY,G);}else{J=F.initPageY+L+this.thumbCenterPoint.y;this.moveThumb(F.initPageX,J,G);}return true;},setRegionValue:function(){var E=D.call(arguments);E.unshift(C.SOURCE_SET_VALUE);return this._setRegionValue.apply(this,E);},_setRegionValue:function(F,J,H,I,G,K){var L=this.thumb,E,M;if(!L.available){this.deferredSetRegionValue=arguments;return false;}if(this.isLocked()&&!G){return false;}if(isNaN(J)){return false;}if(!L._isRegion){return false;}this._silent=K;this.valueChangeSource=F||C.SOURCE_SET_VALUE;L.lastOffset=[J,H];this.verifyOffset();this._slideStart();E=L.initPageX+J+this.thumbCenterPoint.x;M=L.initPageY+H+this.thumbCenterPoint.y;this.moveThumb(E,M,I);return true;},verifyOffset:function(){var F=B(this.getEl()),E=this.thumb;if(!this.thumbCenterPoint||!this.thumbCenterPoint.x){this.setThumbCenterPoint();}if(F){if(F[0]!=this.baselinePos[0]||F[1]!=this.baselinePos[1]){this.setInitPosition();this.baselinePos=F;E.initPageX=this.initPageX+E.startOffset[0];E.initPageY=this.initPageY+E.startOffset[1];E.deltaSetXY=null;this.resetThumbConstraints();return false;}}return true;},moveThumb:function(K,J,I,G){var L=this.thumb,M=this,F,E,H;if(!L.available){return;}L.setDelta(this.thumbCenterPoint.x,this.thumbCenterPoint.y);E=L.getTargetCoord(K,J);F=[Math.round(E.x),Math.round(E.y)];if(this.animate&&L._graduated&&!I){this.lock();this.curCoord=B(this.thumb.getEl());this.curCoord=[Math.round(this.curCoord[0]),Math.round(this.curCoord[1])];setTimeout(function(){M.moveOneTick(F);},this.tickPause);}else{if(this.animate&&C.ANIM_AVAIL&&!I){this.lock();
8
+ H=new YAHOO.util.Motion(L.id,{points:{to:F}},this.animationDuration,YAHOO.util.Easing.easeOut);H.onComplete.subscribe(function(){M.unlock();if(!M._mouseDown){M.endMove();}});H.animate();}else{L.setDragElPos(K,J);if(!G&&!this._mouseDown){this.endMove();}}}},_slideStart:function(){if(!this._sliding){if(!this._silent){this.onSlideStart();this.fireEvent("slideStart");}this._sliding=true;this.moveComplete=false;}},_slideEnd:function(){if(this._sliding){var E=this._silent;this._sliding=false;this.moveComplete=true;this._silent=false;if(!E){this.onSlideEnd();this.fireEvent("slideEnd");}}},moveOneTick:function(F){var H=this.thumb,G=this,I=null,E,J;if(H._isRegion){I=this._getNextX(this.curCoord,F);E=(I!==null)?I[0]:this.curCoord[0];I=this._getNextY(this.curCoord,F);J=(I!==null)?I[1]:this.curCoord[1];I=E!==this.curCoord[0]||J!==this.curCoord[1]?[E,J]:null;}else{if(H._isHoriz){I=this._getNextX(this.curCoord,F);}else{I=this._getNextY(this.curCoord,F);}}if(I){this.curCoord=I;this.thumb.alignElWithMouse(H.getEl(),I[0]+this.thumbCenterPoint.x,I[1]+this.thumbCenterPoint.y);if(!(I[0]==F[0]&&I[1]==F[1])){setTimeout(function(){G.moveOneTick(F);},this.tickPause);}else{this.unlock();if(!this._mouseDown){this.endMove();}}}else{this.unlock();if(!this._mouseDown){this.endMove();}}},_getNextX:function(E,F){var H=this.thumb,J,G=[],I=null;if(E[0]>F[0]){J=H.tickSize-this.thumbCenterPoint.x;G=H.getTargetCoord(E[0]-J,E[1]);I=[G.x,G.y];}else{if(E[0]<F[0]){J=H.tickSize+this.thumbCenterPoint.x;G=H.getTargetCoord(E[0]+J,E[1]);I=[G.x,G.y];}else{}}return I;},_getNextY:function(E,F){var H=this.thumb,J,G=[],I=null;if(E[1]>F[1]){J=H.tickSize-this.thumbCenterPoint.y;G=H.getTargetCoord(E[0],E[1]-J);I=[G.x,G.y];}else{if(E[1]<F[1]){J=H.tickSize+this.thumbCenterPoint.y;G=H.getTargetCoord(E[0],E[1]+J);I=[G.x,G.y];}else{}}return I;},b4MouseDown:function(E){if(!this.backgroundEnabled){return false;}this.thumb.autoOffset();this.baselinePos=[];},onMouseDown:function(F){if(!this.backgroundEnabled||this.isLocked()){return false;}this._mouseDown=true;var E=A.getPageX(F),G=A.getPageY(F);this.focus();this._slideStart();this.moveThumb(E,G);},onDrag:function(F){if(this.backgroundEnabled&&!this.isLocked()){var E=A.getPageX(F),G=A.getPageY(F);this.moveThumb(E,G,true,true);this.fireEvents();}},endMove:function(){this.unlock();this.fireEvents();this._slideEnd();},resetThumbConstraints:function(){var E=this.thumb;E.setXConstraint(E.leftConstraint,E.rightConstraint,E.xTickSize);E.setYConstraint(E.topConstraint,E.bottomConstraint,E.xTickSize);},fireEvents:function(G){var F=this.thumb,I,H,E;if(!G){F.cachePosition();}if(!this.isLocked()){if(F._isRegion){I=F.getXValue();H=F.getYValue();if(I!=this.previousX||H!=this.previousY){if(!this._silent){this.onChange(I,H);this.fireEvent("change",{x:I,y:H});}}this.previousX=I;this.previousY=H;}else{E=F.getValue();if(E!=this.previousVal){if(!this._silent){this.onChange(E);this.fireEvent("change",E);}}this.previousVal=E;}}},toString:function(){return("Slider ("+this.type+") "+this.id);}});YAHOO.lang.augmentProto(C,YAHOO.util.EventProvider);YAHOO.widget.Slider=C;})();YAHOO.widget.SliderThumb=function(G,B,E,D,A,F,C){if(G){YAHOO.widget.SliderThumb.superclass.constructor.call(this,G,B);this.parentElId=B;}this.isTarget=false;this.tickSize=C;this.maintainOffset=true;this.initSlider(E,D,A,F,C);this.scroll=false;};YAHOO.extend(YAHOO.widget.SliderThumb,YAHOO.util.DD,{startOffset:null,dragOnly:true,_isHoriz:false,_prevVal:0,_graduated:false,getOffsetFromParent0:function(C){var A=YAHOO.util.Dom.getXY(this.getEl()),B=C||YAHOO.util.Dom.getXY(this.parentElId);return[(A[0]-B[0]),(A[1]-B[1])];},getOffsetFromParent:function(H){var A=this.getEl(),E,I,F,B,K,D,C,J,G;if(!this.deltaOffset){I=YAHOO.util.Dom.getXY(A);F=H||YAHOO.util.Dom.getXY(this.parentElId);E=[(I[0]-F[0]),(I[1]-F[1])];B=parseInt(YAHOO.util.Dom.getStyle(A,"left"),10);K=parseInt(YAHOO.util.Dom.getStyle(A,"top"),10);D=B-E[0];C=K-E[1];if(isNaN(D)||isNaN(C)){}else{this.deltaOffset=[D,C];}}else{J=parseInt(YAHOO.util.Dom.getStyle(A,"left"),10);G=parseInt(YAHOO.util.Dom.getStyle(A,"top"),10);E=[J+this.deltaOffset[0],G+this.deltaOffset[1]];}return E;},initSlider:function(D,C,A,E,B){this.initLeft=D;this.initRight=C;this.initUp=A;this.initDown=E;this.setXConstraint(D,C,B);this.setYConstraint(A,E,B);if(B&&B>1){this._graduated=true;}this._isHoriz=(D||C);this._isVert=(A||E);this._isRegion=(this._isHoriz&&this._isVert);},clearTicks:function(){YAHOO.widget.SliderThumb.superclass.clearTicks.call(this);this.tickSize=0;this._graduated=false;},getValue:function(){return(this._isHoriz)?this.getXValue():this.getYValue();},getXValue:function(){if(!this.available){return 0;}var A=this.getOffsetFromParent();if(YAHOO.lang.isNumber(A[0])){this.lastOffset=A;return(A[0]-this.startOffset[0]);}else{return(this.lastOffset[0]-this.startOffset[0]);}},getYValue:function(){if(!this.available){return 0;}var A=this.getOffsetFromParent();if(YAHOO.lang.isNumber(A[1])){this.lastOffset=A;return(A[1]-this.startOffset[1]);}else{return(this.lastOffset[1]-this.startOffset[1]);}},toString:function(){return"SliderThumb "+this.id;},onChange:function(A,B){}});(function(){var A=YAHOO.util.Event,B=YAHOO.widget;function C(I,F,H,D){var G=this,J={min:false,max:false},E,K;this.minSlider=I;this.maxSlider=F;this.activeSlider=I;this.isHoriz=I.thumb._isHoriz;E=this.minSlider.thumb.onMouseDown;K=this.maxSlider.thumb.onMouseDown;this.minSlider.thumb.onMouseDown=function(){G.activeSlider=G.minSlider;E.apply(this,arguments);};this.maxSlider.thumb.onMouseDown=function(){G.activeSlider=G.maxSlider;K.apply(this,arguments);};this.minSlider.thumb.onAvailable=function(){I.setStartSliderState();J.min=true;if(J.max){G.fireEvent("ready",G);}};this.maxSlider.thumb.onAvailable=function(){F.setStartSliderState();J.max=true;if(J.min){G.fireEvent("ready",G);}};I.onMouseDown=F.onMouseDown=function(L){return this.backgroundEnabled&&G._handleMouseDown(L);};I.onDrag=F.onDrag=function(L){G._handleDrag(L);};I.onMouseUp=F.onMouseUp=function(L){G._handleMouseUp(L);
9
+ };I._bindKeyEvents=function(){G._bindKeyEvents(this);};F._bindKeyEvents=function(){};I.subscribe("change",this._handleMinChange,I,this);I.subscribe("slideStart",this._handleSlideStart,I,this);I.subscribe("slideEnd",this._handleSlideEnd,I,this);F.subscribe("change",this._handleMaxChange,F,this);F.subscribe("slideStart",this._handleSlideStart,F,this);F.subscribe("slideEnd",this._handleSlideEnd,F,this);this.createEvent("ready",this);this.createEvent("change",this);this.createEvent("slideStart",this);this.createEvent("slideEnd",this);D=YAHOO.lang.isArray(D)?D:[0,H];D[0]=Math.min(Math.max(parseInt(D[0],10)|0,0),H);D[1]=Math.max(Math.min(parseInt(D[1],10)|0,H),0);if(D[0]>D[1]){D.splice(0,2,D[1],D[0]);}this.minVal=D[0];this.maxVal=D[1];this.minSlider.setValue(this.minVal,true,true,true);this.maxSlider.setValue(this.maxVal,true,true,true);}C.prototype={minVal:-1,maxVal:-1,minRange:0,_handleSlideStart:function(E,D){this.fireEvent("slideStart",D);},_handleSlideEnd:function(E,D){this.fireEvent("slideEnd",D);},_handleDrag:function(D){B.Slider.prototype.onDrag.call(this.activeSlider,D);},_handleMinChange:function(){this.activeSlider=this.minSlider;this.updateValue();},_handleMaxChange:function(){this.activeSlider=this.maxSlider;this.updateValue();},_bindKeyEvents:function(D){A.on(D.id,"keydown",this._handleKeyDown,this,true);A.on(D.id,"keypress",this._handleKeyPress,this,true);},_handleKeyDown:function(D){this.activeSlider.handleKeyDown.apply(this.activeSlider,arguments);},_handleKeyPress:function(D){this.activeSlider.handleKeyPress.apply(this.activeSlider,arguments);},setValues:function(H,K,I,E,J){var F=this.minSlider,M=this.maxSlider,D=F.thumb,L=M.thumb,N=this,G={min:false,max:false};if(D._isHoriz){D.setXConstraint(D.leftConstraint,L.rightConstraint,D.tickSize);L.setXConstraint(D.leftConstraint,L.rightConstraint,L.tickSize);}else{D.setYConstraint(D.topConstraint,L.bottomConstraint,D.tickSize);L.setYConstraint(D.topConstraint,L.bottomConstraint,L.tickSize);}this._oneTimeCallback(F,"slideEnd",function(){G.min=true;if(G.max){N.updateValue(J);setTimeout(function(){N._cleanEvent(F,"slideEnd");N._cleanEvent(M,"slideEnd");},0);}});this._oneTimeCallback(M,"slideEnd",function(){G.max=true;if(G.min){N.updateValue(J);setTimeout(function(){N._cleanEvent(F,"slideEnd");N._cleanEvent(M,"slideEnd");},0);}});F.setValue(H,I,E,false);M.setValue(K,I,E,false);},setMinValue:function(F,H,I,E){var G=this.minSlider,D=this;this.activeSlider=G;D=this;this._oneTimeCallback(G,"slideEnd",function(){D.updateValue(E);setTimeout(function(){D._cleanEvent(G,"slideEnd");},0);});G.setValue(F,H,I);},setMaxValue:function(D,H,I,F){var G=this.maxSlider,E=this;this.activeSlider=G;this._oneTimeCallback(G,"slideEnd",function(){E.updateValue(F);setTimeout(function(){E._cleanEvent(G,"slideEnd");},0);});G.setValue(D,H,I);},updateValue:function(J){var E=this.minSlider.getValue(),K=this.maxSlider.getValue(),F=false,D,M,H,I,L,G;if(E!=this.minVal||K!=this.maxVal){F=true;D=this.minSlider.thumb;M=this.maxSlider.thumb;H=this.isHoriz?"x":"y";G=this.minSlider.thumbCenterPoint[H]+this.maxSlider.thumbCenterPoint[H];I=Math.max(K-G-this.minRange,0);L=Math.min(-E-G-this.minRange,0);if(this.isHoriz){I=Math.min(I,M.rightConstraint);D.setXConstraint(D.leftConstraint,I,D.tickSize);M.setXConstraint(L,M.rightConstraint,M.tickSize);}else{I=Math.min(I,M.bottomConstraint);D.setYConstraint(D.leftConstraint,I,D.tickSize);M.setYConstraint(L,M.bottomConstraint,M.tickSize);}}this.minVal=E;this.maxVal=K;if(F&&!J){this.fireEvent("change",this);}},selectActiveSlider:function(H){var E=this.minSlider,D=this.maxSlider,J=E.isLocked()||!E.backgroundEnabled,G=D.isLocked()||!E.backgroundEnabled,F=YAHOO.util.Event,I;if(J||G){this.activeSlider=J?D:E;}else{if(this.isHoriz){I=F.getPageX(H)-E.thumb.initPageX-E.thumbCenterPoint.x;}else{I=F.getPageY(H)-E.thumb.initPageY-E.thumbCenterPoint.y;}this.activeSlider=I*2>D.getValue()+E.getValue()?D:E;}},_handleMouseDown:function(D){if(!D._handled&&!this.minSlider._sliding&&!this.maxSlider._sliding){D._handled=true;this.selectActiveSlider(D);return B.Slider.prototype.onMouseDown.call(this.activeSlider,D);}else{return false;}},_handleMouseUp:function(D){B.Slider.prototype.onMouseUp.apply(this.activeSlider,arguments);},_oneTimeCallback:function(G,D,F){var E=function(){G.unsubscribe(D,E);F.apply({},arguments);};G.subscribe(D,E);},_cleanEvent:function(K,E){var J,I,D,G,H,F;if(K.__yui_events&&K.events[E]){for(I=K.__yui_events.length;I>=0;--I){if(K.__yui_events[I].type===E){J=K.__yui_events[I];break;}}if(J){H=J.subscribers;F=[];G=0;for(I=0,D=H.length;I<D;++I){if(H[I]){F[G++]=H[I];}}J.subscribers=F;}}}};YAHOO.lang.augmentProto(C,YAHOO.util.EventProvider);B.Slider.getHorizDualSlider=function(H,J,K,G,F,D){var I=new B.SliderThumb(J,H,0,G,0,0,F),E=new B.SliderThumb(K,H,0,G,0,0,F);return new C(new B.Slider(H,H,I,"horiz"),new B.Slider(H,H,E,"horiz"),G,D);};B.Slider.getVertDualSlider=function(H,J,K,G,F,D){var I=new B.SliderThumb(J,H,0,0,0,G,F),E=new B.SliderThumb(K,H,0,0,0,G,F);return new B.DualSlider(new B.Slider(H,H,I,"vert"),new B.Slider(H,H,E,"vert"),G,D);};YAHOO.widget.DualSlider=C;})();YAHOO.register("slider",YAHOO.widget.Slider,{version:"2.8.1",build:"19"});
@@ -0,0 +1,2068 @@
1
+ /*
2
+ Copyright (c) 2010, Yahoo! Inc. All rights reserved.
3
+ Code licensed under the BSD License:
4
+ http://developer.yahoo.com/yui/license.html
5
+ version: 2.8.1
6
+ */
7
+ /**
8
+ * The Slider component is a UI control that enables the user to adjust
9
+ * values in a finite range along one or two axes. Typically, the Slider
10
+ * control is used in a web application as a rich, visual replacement
11
+ * for an input box that takes a number as input. The Slider control can
12
+ * also easily accommodate a second dimension, providing x,y output for
13
+ * a selection point chosen from a rectangular region.
14
+ *
15
+ * @module slider
16
+ * @title Slider Widget
17
+ * @namespace YAHOO.widget
18
+ * @requires yahoo,dom,dragdrop,event
19
+ * @optional animation
20
+ */
21
+ (function () {
22
+
23
+ var getXY = YAHOO.util.Dom.getXY,
24
+ Event = YAHOO.util.Event,
25
+ _AS = Array.prototype.slice;
26
+
27
+ /**
28
+ * A DragDrop implementation that can be used as a background for a
29
+ * slider. It takes a reference to the thumb instance
30
+ * so it can delegate some of the events to it. The goal is to make the
31
+ * thumb jump to the location on the background when the background is
32
+ * clicked.
33
+ *
34
+ * @class Slider
35
+ * @extends YAHOO.util.DragDrop
36
+ * @uses YAHOO.util.EventProvider
37
+ * @constructor
38
+ * @param {String} id The id of the element linked to this instance
39
+ * @param {String} sGroup The group of related DragDrop items
40
+ * @param {SliderThumb} oThumb The thumb for this slider
41
+ * @param {String} sType The type of slider (horiz, vert, region)
42
+ */
43
+ function Slider(sElementId, sGroup, oThumb, sType) {
44
+
45
+ Slider.ANIM_AVAIL = (!YAHOO.lang.isUndefined(YAHOO.util.Anim));
46
+
47
+ if (sElementId) {
48
+ this.init(sElementId, sGroup, true);
49
+ this.initSlider(sType);
50
+ this.initThumb(oThumb);
51
+ }
52
+ }
53
+
54
+ YAHOO.lang.augmentObject(Slider,{
55
+ /**
56
+ * Factory method for creating a horizontal slider
57
+ * @method YAHOO.widget.Slider.getHorizSlider
58
+ * @static
59
+ * @param {String} sBGElId the id of the slider's background element
60
+ * @param {String} sHandleElId the id of the thumb element
61
+ * @param {int} iLeft the number of pixels the element can move left
62
+ * @param {int} iRight the number of pixels the element can move right
63
+ * @param {int} iTickSize optional parameter for specifying that the element
64
+ * should move a certain number pixels at a time.
65
+ * @return {Slider} a horizontal slider control
66
+ */
67
+ getHorizSlider :
68
+ function (sBGElId, sHandleElId, iLeft, iRight, iTickSize) {
69
+ return new Slider(sBGElId, sBGElId,
70
+ new YAHOO.widget.SliderThumb(sHandleElId, sBGElId,
71
+ iLeft, iRight, 0, 0, iTickSize), "horiz");
72
+ },
73
+
74
+ /**
75
+ * Factory method for creating a vertical slider
76
+ * @method YAHOO.widget.Slider.getVertSlider
77
+ * @static
78
+ * @param {String} sBGElId the id of the slider's background element
79
+ * @param {String} sHandleElId the id of the thumb element
80
+ * @param {int} iUp the number of pixels the element can move up
81
+ * @param {int} iDown the number of pixels the element can move down
82
+ * @param {int} iTickSize optional parameter for specifying that the element
83
+ * should move a certain number pixels at a time.
84
+ * @return {Slider} a vertical slider control
85
+ */
86
+ getVertSlider :
87
+ function (sBGElId, sHandleElId, iUp, iDown, iTickSize) {
88
+ return new Slider(sBGElId, sBGElId,
89
+ new YAHOO.widget.SliderThumb(sHandleElId, sBGElId, 0, 0,
90
+ iUp, iDown, iTickSize), "vert");
91
+ },
92
+
93
+ /**
94
+ * Factory method for creating a slider region like the one in the color
95
+ * picker example
96
+ * @method YAHOO.widget.Slider.getSliderRegion
97
+ * @static
98
+ * @param {String} sBGElId the id of the slider's background element
99
+ * @param {String} sHandleElId the id of the thumb element
100
+ * @param {int} iLeft the number of pixels the element can move left
101
+ * @param {int} iRight the number of pixels the element can move right
102
+ * @param {int} iUp the number of pixels the element can move up
103
+ * @param {int} iDown the number of pixels the element can move down
104
+ * @param {int} iTickSize optional parameter for specifying that the element
105
+ * should move a certain number pixels at a time.
106
+ * @return {Slider} a slider region control
107
+ */
108
+ getSliderRegion :
109
+ function (sBGElId, sHandleElId, iLeft, iRight, iUp, iDown, iTickSize) {
110
+ return new Slider(sBGElId, sBGElId,
111
+ new YAHOO.widget.SliderThumb(sHandleElId, sBGElId, iLeft, iRight,
112
+ iUp, iDown, iTickSize), "region");
113
+ },
114
+
115
+ /**
116
+ * Constant for valueChangeSource, indicating that the user clicked or
117
+ * dragged the slider to change the value.
118
+ * @property Slider.SOURCE_UI_EVENT
119
+ * @final
120
+ * @static
121
+ * @default 1
122
+ */
123
+ SOURCE_UI_EVENT : 1,
124
+
125
+ /**
126
+ * Constant for valueChangeSource, indicating that the value was altered
127
+ * by a programmatic call to setValue/setRegionValue.
128
+ * @property Slider.SOURCE_SET_VALUE
129
+ * @final
130
+ * @static
131
+ * @default 2
132
+ */
133
+ SOURCE_SET_VALUE : 2,
134
+
135
+ /**
136
+ * Constant for valueChangeSource, indicating that the value was altered
137
+ * by hitting any of the supported keyboard characters.
138
+ * @property Slider.SOURCE_KEY_EVENT
139
+ * @final
140
+ * @static
141
+ * @default 2
142
+ */
143
+ SOURCE_KEY_EVENT : 3,
144
+
145
+ /**
146
+ * By default, animation is available if the animation utility is detected.
147
+ * @property Slider.ANIM_AVAIL
148
+ * @static
149
+ * @type boolean
150
+ */
151
+ ANIM_AVAIL : false
152
+ },true);
153
+
154
+ YAHOO.extend(Slider, YAHOO.util.DragDrop, {
155
+
156
+ /**
157
+ * Tracks the state of the mouse button to aid in when events are fired.
158
+ *
159
+ * @property _mouseDown
160
+ * @type boolean
161
+ * @default false
162
+ * @private
163
+ */
164
+ _mouseDown : false,
165
+
166
+ /**
167
+ * Override the default setting of dragOnly to true.
168
+ * @property dragOnly
169
+ * @type boolean
170
+ * @default true
171
+ */
172
+ dragOnly : true,
173
+
174
+ /**
175
+ * Initializes the slider. Executed in the constructor
176
+ * @method initSlider
177
+ * @param {string} sType the type of slider (horiz, vert, region)
178
+ */
179
+ initSlider: function(sType) {
180
+
181
+ /**
182
+ * The type of the slider (horiz, vert, region)
183
+ * @property type
184
+ * @type string
185
+ */
186
+ this.type = sType;
187
+
188
+ //this.removeInvalidHandleType("A");
189
+
190
+
191
+ /**
192
+ * Event the fires when the value of the control changes. If
193
+ * the control is animated the event will fire every point
194
+ * along the way.
195
+ * @event change
196
+ * @param {int} newOffset|x the new offset for normal sliders, or the new
197
+ * x offset for region sliders
198
+ * @param {int} y the number of pixels the thumb has moved on the y axis
199
+ * (region sliders only)
200
+ */
201
+ this.createEvent("change", this);
202
+
203
+ /**
204
+ * Event that fires at the beginning of a slider thumb move.
205
+ * @event slideStart
206
+ */
207
+ this.createEvent("slideStart", this);
208
+
209
+ /**
210
+ * Event that fires at the end of a slider thumb move
211
+ * @event slideEnd
212
+ */
213
+ this.createEvent("slideEnd", this);
214
+
215
+ /**
216
+ * Overrides the isTarget property in YAHOO.util.DragDrop
217
+ * @property isTarget
218
+ * @private
219
+ */
220
+ this.isTarget = false;
221
+
222
+ /**
223
+ * Flag that determines if the thumb will animate when moved
224
+ * @property animate
225
+ * @type boolean
226
+ */
227
+ this.animate = Slider.ANIM_AVAIL;
228
+
229
+ /**
230
+ * Set to false to disable a background click thumb move
231
+ * @property backgroundEnabled
232
+ * @type boolean
233
+ */
234
+ this.backgroundEnabled = true;
235
+
236
+ /**
237
+ * Adjustment factor for tick animation, the more ticks, the
238
+ * faster the animation (by default)
239
+ * @property tickPause
240
+ * @type int
241
+ */
242
+ this.tickPause = 40;
243
+
244
+ /**
245
+ * Enables the arrow, home and end keys, defaults to true.
246
+ * @property enableKeys
247
+ * @type boolean
248
+ */
249
+ this.enableKeys = true;
250
+
251
+ /**
252
+ * Specifies the number of pixels the arrow keys will move the slider.
253
+ * Default is 20.
254
+ * @property keyIncrement
255
+ * @type int
256
+ */
257
+ this.keyIncrement = 20;
258
+
259
+ /**
260
+ * moveComplete is set to true when the slider has moved to its final
261
+ * destination. For animated slider, this value can be checked in
262
+ * the onChange handler to make it possible to execute logic only
263
+ * when the move is complete rather than at all points along the way.
264
+ * Deprecated because this flag is only useful when the background is
265
+ * clicked and the slider is animated. If the user drags the thumb,
266
+ * the flag is updated when the drag is over ... the final onDrag event
267
+ * fires before the mouseup the ends the drag, so the implementer will
268
+ * never see it.
269
+ *
270
+ * @property moveComplete
271
+ * @type Boolean
272
+ * @deprecated use the slideEnd event instead
273
+ */
274
+ this.moveComplete = true;
275
+
276
+ /**
277
+ * If animation is configured, specifies the length of the animation
278
+ * in seconds.
279
+ * @property animationDuration
280
+ * @type int
281
+ * @default 0.2
282
+ */
283
+ this.animationDuration = 0.2;
284
+
285
+ /**
286
+ * Constant for valueChangeSource, indicating that the user clicked or
287
+ * dragged the slider to change the value.
288
+ * @property SOURCE_UI_EVENT
289
+ * @final
290
+ * @default 1
291
+ * @deprecated use static Slider.SOURCE_UI_EVENT
292
+ */
293
+ this.SOURCE_UI_EVENT = 1;
294
+
295
+ /**
296
+ * Constant for valueChangeSource, indicating that the value was altered
297
+ * by a programmatic call to setValue/setRegionValue.
298
+ * @property SOURCE_SET_VALUE
299
+ * @final
300
+ * @default 2
301
+ * @deprecated use static Slider.SOURCE_SET_VALUE
302
+ */
303
+ this.SOURCE_SET_VALUE = 2;
304
+
305
+ /**
306
+ * When the slider value changes, this property is set to identify where
307
+ * the update came from. This will be either 1, meaning the slider was
308
+ * clicked or dragged, or 2, meaning that it was set via a setValue() call.
309
+ * This can be used within event handlers to apply some of the logic only
310
+ * when dealing with one source or another.
311
+ * @property valueChangeSource
312
+ * @type int
313
+ * @since 2.3.0
314
+ */
315
+ this.valueChangeSource = 0;
316
+
317
+ /**
318
+ * Indicates whether or not events will be supressed for the current
319
+ * slide operation
320
+ * @property _silent
321
+ * @type boolean
322
+ * @private
323
+ */
324
+ this._silent = false;
325
+
326
+ /**
327
+ * Saved offset used to protect against NaN problems when slider is
328
+ * set to display:none
329
+ * @property lastOffset
330
+ * @type [int, int]
331
+ */
332
+ this.lastOffset = [0,0];
333
+ },
334
+
335
+ /**
336
+ * Initializes the slider's thumb. Executed in the constructor.
337
+ * @method initThumb
338
+ * @param {YAHOO.widget.SliderThumb} t the slider thumb
339
+ */
340
+ initThumb: function(t) {
341
+
342
+ var self = this;
343
+
344
+ /**
345
+ * A YAHOO.widget.SliderThumb instance that we will use to
346
+ * reposition the thumb when the background is clicked
347
+ * @property thumb
348
+ * @type YAHOO.widget.SliderThumb
349
+ */
350
+ this.thumb = t;
351
+
352
+ t.cacheBetweenDrags = true;
353
+
354
+ if (t._isHoriz && t.xTicks && t.xTicks.length) {
355
+ this.tickPause = Math.round(360 / t.xTicks.length);
356
+ } else if (t.yTicks && t.yTicks.length) {
357
+ this.tickPause = Math.round(360 / t.yTicks.length);
358
+ }
359
+
360
+
361
+ // delegate thumb methods
362
+ t.onAvailable = function() {
363
+ return self.setStartSliderState();
364
+ };
365
+ t.onMouseDown = function () {
366
+ self._mouseDown = true;
367
+ return self.focus();
368
+ };
369
+ t.startDrag = function() {
370
+ self._slideStart();
371
+ };
372
+ t.onDrag = function() {
373
+ self.fireEvents(true);
374
+ };
375
+ t.onMouseUp = function() {
376
+ self.thumbMouseUp();
377
+ };
378
+
379
+ },
380
+
381
+ /**
382
+ * Executed when the slider element is available
383
+ * @method onAvailable
384
+ */
385
+ onAvailable: function() {
386
+ this._bindKeyEvents();
387
+ },
388
+
389
+ /**
390
+ * Sets up the listeners for keydown and key press events.
391
+ *
392
+ * @method _bindKeyEvents
393
+ * @protected
394
+ */
395
+ _bindKeyEvents : function () {
396
+ Event.on(this.id, "keydown", this.handleKeyDown, this, true);
397
+ Event.on(this.id, "keypress", this.handleKeyPress, this, true);
398
+ },
399
+
400
+ /**
401
+ * Executed when a keypress event happens with the control focused.
402
+ * Prevents the default behavior for navigation keys. The actual
403
+ * logic for moving the slider thumb in response to a key event
404
+ * happens in handleKeyDown.
405
+ * @param {Event} e the keypress event
406
+ */
407
+ handleKeyPress: function(e) {
408
+ if (this.enableKeys) {
409
+ var kc = Event.getCharCode(e);
410
+
411
+ switch (kc) {
412
+ case 0x25: // left
413
+ case 0x26: // up
414
+ case 0x27: // right
415
+ case 0x28: // down
416
+ case 0x24: // home
417
+ case 0x23: // end
418
+ Event.preventDefault(e);
419
+ break;
420
+ default:
421
+ }
422
+ }
423
+ },
424
+
425
+ /**
426
+ * Executed when a keydown event happens with the control focused.
427
+ * Updates the slider value and display when the keypress is an
428
+ * arrow key, home, or end as long as enableKeys is set to true.
429
+ * @param {Event} e the keydown event
430
+ */
431
+ handleKeyDown: function(e) {
432
+ if (this.enableKeys) {
433
+ var kc = Event.getCharCode(e),
434
+ t = this.thumb,
435
+ h = this.getXValue(),
436
+ v = this.getYValue(),
437
+ changeValue = true;
438
+
439
+ switch (kc) {
440
+
441
+ // left
442
+ case 0x25: h -= this.keyIncrement; break;
443
+
444
+ // up
445
+ case 0x26: v -= this.keyIncrement; break;
446
+
447
+ // right
448
+ case 0x27: h += this.keyIncrement; break;
449
+
450
+ // down
451
+ case 0x28: v += this.keyIncrement; break;
452
+
453
+ // home
454
+ case 0x24: h = t.leftConstraint;
455
+ v = t.topConstraint;
456
+ break;
457
+
458
+ // end
459
+ case 0x23: h = t.rightConstraint;
460
+ v = t.bottomConstraint;
461
+ break;
462
+
463
+ default: changeValue = false;
464
+ }
465
+
466
+ if (changeValue) {
467
+ if (t._isRegion) {
468
+ this._setRegionValue(Slider.SOURCE_KEY_EVENT, h, v, true);
469
+ } else {
470
+ this._setValue(Slider.SOURCE_KEY_EVENT,
471
+ (t._isHoriz ? h : v), true);
472
+ }
473
+ Event.stopEvent(e);
474
+ }
475
+
476
+ }
477
+ },
478
+
479
+ /**
480
+ * Initialization that sets up the value offsets once the elements are ready
481
+ * @method setStartSliderState
482
+ */
483
+ setStartSliderState: function() {
484
+
485
+
486
+ this.setThumbCenterPoint();
487
+
488
+ /**
489
+ * The basline position of the background element, used
490
+ * to determine if the background has moved since the last
491
+ * operation.
492
+ * @property baselinePos
493
+ * @type [int, int]
494
+ */
495
+ this.baselinePos = getXY(this.getEl());
496
+
497
+ this.thumb.startOffset = this.thumb.getOffsetFromParent(this.baselinePos);
498
+
499
+ if (this.thumb._isRegion) {
500
+ if (this.deferredSetRegionValue) {
501
+ this._setRegionValue.apply(this, this.deferredSetRegionValue);
502
+ this.deferredSetRegionValue = null;
503
+ } else {
504
+ this.setRegionValue(0, 0, true, true, true);
505
+ }
506
+ } else {
507
+ if (this.deferredSetValue) {
508
+ this._setValue.apply(this, this.deferredSetValue);
509
+ this.deferredSetValue = null;
510
+ } else {
511
+ this.setValue(0, true, true, true);
512
+ }
513
+ }
514
+ },
515
+
516
+ /**
517
+ * When the thumb is available, we cache the centerpoint of the element so
518
+ * we can position the element correctly when the background is clicked
519
+ * @method setThumbCenterPoint
520
+ */
521
+ setThumbCenterPoint: function() {
522
+
523
+ var el = this.thumb.getEl();
524
+
525
+ if (el) {
526
+ /**
527
+ * The center of the slider element is stored so we can
528
+ * place it in the correct position when the background is clicked.
529
+ * @property thumbCenterPoint
530
+ * @type {"x": int, "y": int}
531
+ */
532
+ this.thumbCenterPoint = {
533
+ x: parseInt(el.offsetWidth/2, 10),
534
+ y: parseInt(el.offsetHeight/2, 10)
535
+ };
536
+ }
537
+
538
+ },
539
+
540
+ /**
541
+ * Locks the slider, overrides YAHOO.util.DragDrop
542
+ * @method lock
543
+ */
544
+ lock: function() {
545
+ this.thumb.lock();
546
+ this.locked = true;
547
+ },
548
+
549
+ /**
550
+ * Unlocks the slider, overrides YAHOO.util.DragDrop
551
+ * @method unlock
552
+ */
553
+ unlock: function() {
554
+ this.thumb.unlock();
555
+ this.locked = false;
556
+ },
557
+
558
+ /**
559
+ * Handles mouseup event on the thumb
560
+ * @method thumbMouseUp
561
+ * @private
562
+ */
563
+ thumbMouseUp: function() {
564
+ this._mouseDown = false;
565
+ if (!this.isLocked()) {
566
+ this.endMove();
567
+ }
568
+
569
+ },
570
+
571
+ onMouseUp: function() {
572
+ this._mouseDown = false;
573
+ if (this.backgroundEnabled && !this.isLocked()) {
574
+ this.endMove();
575
+ }
576
+ },
577
+
578
+ /**
579
+ * Returns a reference to this slider's thumb
580
+ * @method getThumb
581
+ * @return {SliderThumb} this slider's thumb
582
+ */
583
+ getThumb: function() {
584
+ return this.thumb;
585
+ },
586
+
587
+ /**
588
+ * Try to focus the element when clicked so we can add
589
+ * accessibility features
590
+ * @method focus
591
+ * @private
592
+ */
593
+ focus: function() {
594
+ this.valueChangeSource = Slider.SOURCE_UI_EVENT;
595
+
596
+ // Focus the background element if possible
597
+ var el = this.getEl();
598
+
599
+ if (el.focus) {
600
+ try {
601
+ el.focus();
602
+ } catch(e) {
603
+ // Prevent permission denied unhandled exception in FF that can
604
+ // happen when setting focus while another element is handling
605
+ // the blur. @TODO this is still writing to the error log
606
+ // (unhandled error) in FF1.5 with strict error checking on.
607
+ }
608
+ }
609
+
610
+ this.verifyOffset();
611
+
612
+ return !this.isLocked();
613
+ },
614
+
615
+ /**
616
+ * Event that fires when the value of the slider has changed
617
+ * @method onChange
618
+ * @param {int} firstOffset the number of pixels the thumb has moved
619
+ * from its start position. Normal horizontal and vertical sliders will only
620
+ * have the firstOffset. Regions will have both, the first is the horizontal
621
+ * offset, the second the vertical.
622
+ * @param {int} secondOffset the y offset for region sliders
623
+ * @deprecated use instance.subscribe("change") instead
624
+ */
625
+ onChange: function (firstOffset, secondOffset) {
626
+ /* override me */
627
+ },
628
+
629
+ /**
630
+ * Event that fires when the at the beginning of the slider thumb move
631
+ * @method onSlideStart
632
+ * @deprecated use instance.subscribe("slideStart") instead
633
+ */
634
+ onSlideStart: function () {
635
+ /* override me */
636
+ },
637
+
638
+ /**
639
+ * Event that fires at the end of a slider thumb move
640
+ * @method onSliderEnd
641
+ * @deprecated use instance.subscribe("slideEnd") instead
642
+ */
643
+ onSlideEnd: function () {
644
+ /* override me */
645
+ },
646
+
647
+ /**
648
+ * Returns the slider's thumb offset from the start position
649
+ * @method getValue
650
+ * @return {int} the current value
651
+ */
652
+ getValue: function () {
653
+ return this.thumb.getValue();
654
+ },
655
+
656
+ /**
657
+ * Returns the slider's thumb X offset from the start position
658
+ * @method getXValue
659
+ * @return {int} the current horizontal offset
660
+ */
661
+ getXValue: function () {
662
+ return this.thumb.getXValue();
663
+ },
664
+
665
+ /**
666
+ * Returns the slider's thumb Y offset from the start position
667
+ * @method getYValue
668
+ * @return {int} the current vertical offset
669
+ */
670
+ getYValue: function () {
671
+ return this.thumb.getYValue();
672
+ },
673
+
674
+ /**
675
+ * Provides a way to set the value of the slider in code.
676
+ *
677
+ * @method setValue
678
+ * @param {int} newOffset the number of pixels the thumb should be
679
+ * positioned away from the initial start point
680
+ * @param {boolean} skipAnim set to true to disable the animation
681
+ * for this move action (but not others).
682
+ * @param {boolean} force ignore the locked setting and set value anyway
683
+ * @param {boolean} silent when true, do not fire events
684
+ * @return {boolean} true if the move was performed, false if it failed
685
+ */
686
+ setValue: function() {
687
+ var args = _AS.call(arguments);
688
+ args.unshift(Slider.SOURCE_SET_VALUE);
689
+ return this._setValue.apply(this,args);
690
+ },
691
+
692
+ /**
693
+ * Worker function to execute the value set operation. Accepts type of
694
+ * set operation in addition to the usual setValue params.
695
+ *
696
+ * @method _setValue
697
+ * @param source {int} what triggered the set (e.g. Slider.SOURCE_SET_VALUE)
698
+ * @param {int} newOffset the number of pixels the thumb should be
699
+ * positioned away from the initial start point
700
+ * @param {boolean} skipAnim set to true to disable the animation
701
+ * for this move action (but not others).
702
+ * @param {boolean} force ignore the locked setting and set value anyway
703
+ * @param {boolean} silent when true, do not fire events
704
+ * @return {boolean} true if the move was performed, false if it failed
705
+ * @protected
706
+ */
707
+ _setValue: function(source, newOffset, skipAnim, force, silent) {
708
+ var t = this.thumb, newX, newY;
709
+
710
+ if (!t.available) {
711
+ this.deferredSetValue = arguments;
712
+ return false;
713
+ }
714
+
715
+ if (this.isLocked() && !force) {
716
+ return false;
717
+ }
718
+
719
+ if ( isNaN(newOffset) ) {
720
+ return false;
721
+ }
722
+
723
+ if (t._isRegion) {
724
+ return false;
725
+ }
726
+
727
+
728
+ this._silent = silent;
729
+ this.valueChangeSource = source || Slider.SOURCE_SET_VALUE;
730
+
731
+ t.lastOffset = [newOffset, newOffset];
732
+ this.verifyOffset();
733
+
734
+ this._slideStart();
735
+
736
+ if (t._isHoriz) {
737
+ newX = t.initPageX + newOffset + this.thumbCenterPoint.x;
738
+ this.moveThumb(newX, t.initPageY, skipAnim);
739
+ } else {
740
+ newY = t.initPageY + newOffset + this.thumbCenterPoint.y;
741
+ this.moveThumb(t.initPageX, newY, skipAnim);
742
+ }
743
+
744
+ return true;
745
+ },
746
+
747
+ /**
748
+ * Provides a way to set the value of the region slider in code.
749
+ * @method setRegionValue
750
+ * @param {int} newOffset the number of pixels the thumb should be
751
+ * positioned away from the initial start point (x axis for region)
752
+ * @param {int} newOffset2 the number of pixels the thumb should be
753
+ * positioned away from the initial start point (y axis for region)
754
+ * @param {boolean} skipAnim set to true to disable the animation
755
+ * for this move action (but not others).
756
+ * @param {boolean} force ignore the locked setting and set value anyway
757
+ * @param {boolean} silent when true, do not fire events
758
+ * @return {boolean} true if the move was performed, false if it failed
759
+ */
760
+ setRegionValue : function () {
761
+ var args = _AS.call(arguments);
762
+ args.unshift(Slider.SOURCE_SET_VALUE);
763
+ return this._setRegionValue.apply(this,args);
764
+ },
765
+
766
+ /**
767
+ * Worker function to execute the value set operation. Accepts type of
768
+ * set operation in addition to the usual setValue params.
769
+ *
770
+ * @method _setRegionValue
771
+ * @param source {int} what triggered the set (e.g. Slider.SOURCE_SET_VALUE)
772
+ * @param {int} newOffset the number of pixels the thumb should be
773
+ * positioned away from the initial start point (x axis for region)
774
+ * @param {int} newOffset2 the number of pixels the thumb should be
775
+ * positioned away from the initial start point (y axis for region)
776
+ * @param {boolean} skipAnim set to true to disable the animation
777
+ * for this move action (but not others).
778
+ * @param {boolean} force ignore the locked setting and set value anyway
779
+ * @param {boolean} silent when true, do not fire events
780
+ * @return {boolean} true if the move was performed, false if it failed
781
+ * @protected
782
+ */
783
+ _setRegionValue: function(source, newOffset, newOffset2, skipAnim, force, silent) {
784
+ var t = this.thumb, newX, newY;
785
+
786
+ if (!t.available) {
787
+ this.deferredSetRegionValue = arguments;
788
+ return false;
789
+ }
790
+
791
+ if (this.isLocked() && !force) {
792
+ return false;
793
+ }
794
+
795
+ if ( isNaN(newOffset) ) {
796
+ return false;
797
+ }
798
+
799
+ if (!t._isRegion) {
800
+ return false;
801
+ }
802
+
803
+ this._silent = silent;
804
+
805
+ this.valueChangeSource = source || Slider.SOURCE_SET_VALUE;
806
+
807
+ t.lastOffset = [newOffset, newOffset2];
808
+ this.verifyOffset();
809
+
810
+ this._slideStart();
811
+
812
+ newX = t.initPageX + newOffset + this.thumbCenterPoint.x;
813
+ newY = t.initPageY + newOffset2 + this.thumbCenterPoint.y;
814
+ this.moveThumb(newX, newY, skipAnim);
815
+
816
+ return true;
817
+ },
818
+
819
+ /**
820
+ * Checks the background position element position. If it has moved from the
821
+ * baseline position, the constraints for the thumb are reset
822
+ * @method verifyOffset
823
+ * @return {boolean} True if the offset is the same as the baseline.
824
+ */
825
+ verifyOffset: function() {
826
+
827
+ var xy = getXY(this.getEl()),
828
+ t = this.thumb;
829
+
830
+ if (!this.thumbCenterPoint || !this.thumbCenterPoint.x) {
831
+ this.setThumbCenterPoint();
832
+ }
833
+
834
+ if (xy) {
835
+
836
+
837
+ if (xy[0] != this.baselinePos[0] || xy[1] != this.baselinePos[1]) {
838
+
839
+ // Reset background
840
+ this.setInitPosition();
841
+ this.baselinePos = xy;
842
+
843
+ // Reset thumb
844
+ t.initPageX = this.initPageX + t.startOffset[0];
845
+ t.initPageY = this.initPageY + t.startOffset[1];
846
+ t.deltaSetXY = null;
847
+ this.resetThumbConstraints();
848
+
849
+ return false;
850
+ }
851
+ }
852
+
853
+ return true;
854
+ },
855
+
856
+ /**
857
+ * Move the associated slider moved to a timeout to try to get around the
858
+ * mousedown stealing moz does when I move the slider element between the
859
+ * cursor and the background during the mouseup event
860
+ * @method moveThumb
861
+ * @param {int} x the X coordinate of the click
862
+ * @param {int} y the Y coordinate of the click
863
+ * @param {boolean} skipAnim don't animate if the move happend onDrag
864
+ * @param {boolean} midMove set to true if this is not terminating
865
+ * the slider movement
866
+ * @private
867
+ */
868
+ moveThumb: function(x, y, skipAnim, midMove) {
869
+
870
+ var t = this.thumb,
871
+ self = this,
872
+ p,_p,anim;
873
+
874
+ if (!t.available) {
875
+ return;
876
+ }
877
+
878
+
879
+ t.setDelta(this.thumbCenterPoint.x, this.thumbCenterPoint.y);
880
+
881
+ _p = t.getTargetCoord(x, y);
882
+ p = [Math.round(_p.x), Math.round(_p.y)];
883
+
884
+ if (this.animate && t._graduated && !skipAnim) {
885
+ this.lock();
886
+
887
+ // cache the current thumb pos
888
+ this.curCoord = getXY(this.thumb.getEl());
889
+ this.curCoord = [Math.round(this.curCoord[0]), Math.round(this.curCoord[1])];
890
+
891
+ setTimeout( function() { self.moveOneTick(p); }, this.tickPause );
892
+
893
+ } else if (this.animate && Slider.ANIM_AVAIL && !skipAnim) {
894
+
895
+ this.lock();
896
+
897
+ anim = new YAHOO.util.Motion(
898
+ t.id, { points: { to: p } },
899
+ this.animationDuration,
900
+ YAHOO.util.Easing.easeOut );
901
+
902
+ anim.onComplete.subscribe( function() {
903
+ self.unlock();
904
+ if (!self._mouseDown) {
905
+ self.endMove();
906
+ }
907
+ });
908
+ anim.animate();
909
+
910
+ } else {
911
+ t.setDragElPos(x, y);
912
+ if (!midMove && !this._mouseDown) {
913
+ this.endMove();
914
+ }
915
+ }
916
+ },
917
+
918
+ _slideStart: function() {
919
+ if (!this._sliding) {
920
+ if (!this._silent) {
921
+ this.onSlideStart();
922
+ this.fireEvent("slideStart");
923
+ }
924
+ this._sliding = true;
925
+ this.moveComplete = false; // for backward compatibility. Deprecated
926
+ }
927
+ },
928
+
929
+ _slideEnd: function() {
930
+ if (this._sliding) {
931
+ // Reset state before firing slideEnd
932
+ var silent = this._silent;
933
+ this._sliding = false;
934
+ this.moveComplete = true; // for backward compatibility. Deprecated
935
+ this._silent = false;
936
+ if (!silent) {
937
+ this.onSlideEnd();
938
+ this.fireEvent("slideEnd");
939
+ }
940
+ }
941
+ },
942
+
943
+ /**
944
+ * Move the slider one tick mark towards its final coordinate. Used
945
+ * for the animation when tick marks are defined
946
+ * @method moveOneTick
947
+ * @param {int[]} the destination coordinate
948
+ * @private
949
+ */
950
+ moveOneTick: function(finalCoord) {
951
+
952
+ var t = this.thumb,
953
+ self = this,
954
+ nextCoord = null,
955
+ tmpX, tmpY;
956
+
957
+ if (t._isRegion) {
958
+ nextCoord = this._getNextX(this.curCoord, finalCoord);
959
+ tmpX = (nextCoord !== null) ? nextCoord[0] : this.curCoord[0];
960
+ nextCoord = this._getNextY(this.curCoord, finalCoord);
961
+ tmpY = (nextCoord !== null) ? nextCoord[1] : this.curCoord[1];
962
+
963
+ nextCoord = tmpX !== this.curCoord[0] || tmpY !== this.curCoord[1] ?
964
+ [ tmpX, tmpY ] : null;
965
+ } else if (t._isHoriz) {
966
+ nextCoord = this._getNextX(this.curCoord, finalCoord);
967
+ } else {
968
+ nextCoord = this._getNextY(this.curCoord, finalCoord);
969
+ }
970
+
971
+
972
+ if (nextCoord) {
973
+
974
+ // cache the position
975
+ this.curCoord = nextCoord;
976
+
977
+ // move to the next coord
978
+ this.thumb.alignElWithMouse(t.getEl(), nextCoord[0] + this.thumbCenterPoint.x, nextCoord[1] + this.thumbCenterPoint.y);
979
+
980
+ // check if we are in the final position, if not make a recursive call
981
+ if (!(nextCoord[0] == finalCoord[0] && nextCoord[1] == finalCoord[1])) {
982
+ setTimeout(function() { self.moveOneTick(finalCoord); },
983
+ this.tickPause);
984
+ } else {
985
+ this.unlock();
986
+ if (!this._mouseDown) {
987
+ this.endMove();
988
+ }
989
+ }
990
+ } else {
991
+ this.unlock();
992
+ if (!this._mouseDown) {
993
+ this.endMove();
994
+ }
995
+ }
996
+ },
997
+
998
+ /**
999
+ * Returns the next X tick value based on the current coord and the target coord.
1000
+ * @method _getNextX
1001
+ * @private
1002
+ */
1003
+ _getNextX: function(curCoord, finalCoord) {
1004
+ var t = this.thumb,
1005
+ thresh,
1006
+ tmp = [],
1007
+ nextCoord = null;
1008
+
1009
+ if (curCoord[0] > finalCoord[0]) {
1010
+ thresh = t.tickSize - this.thumbCenterPoint.x;
1011
+ tmp = t.getTargetCoord( curCoord[0] - thresh, curCoord[1] );
1012
+ nextCoord = [tmp.x, tmp.y];
1013
+ } else if (curCoord[0] < finalCoord[0]) {
1014
+ thresh = t.tickSize + this.thumbCenterPoint.x;
1015
+ tmp = t.getTargetCoord( curCoord[0] + thresh, curCoord[1] );
1016
+ nextCoord = [tmp.x, tmp.y];
1017
+ } else {
1018
+ // equal, do nothing
1019
+ }
1020
+
1021
+ return nextCoord;
1022
+ },
1023
+
1024
+ /**
1025
+ * Returns the next Y tick value based on the current coord and the target coord.
1026
+ * @method _getNextY
1027
+ * @private
1028
+ */
1029
+ _getNextY: function(curCoord, finalCoord) {
1030
+ var t = this.thumb,
1031
+ thresh,
1032
+ tmp = [],
1033
+ nextCoord = null;
1034
+
1035
+ if (curCoord[1] > finalCoord[1]) {
1036
+ thresh = t.tickSize - this.thumbCenterPoint.y;
1037
+ tmp = t.getTargetCoord( curCoord[0], curCoord[1] - thresh );
1038
+ nextCoord = [tmp.x, tmp.y];
1039
+ } else if (curCoord[1] < finalCoord[1]) {
1040
+ thresh = t.tickSize + this.thumbCenterPoint.y;
1041
+ tmp = t.getTargetCoord( curCoord[0], curCoord[1] + thresh );
1042
+ nextCoord = [tmp.x, tmp.y];
1043
+ } else {
1044
+ // equal, do nothing
1045
+ }
1046
+
1047
+ return nextCoord;
1048
+ },
1049
+
1050
+ /**
1051
+ * Resets the constraints before moving the thumb.
1052
+ * @method b4MouseDown
1053
+ * @private
1054
+ */
1055
+ b4MouseDown: function(e) {
1056
+ if (!this.backgroundEnabled) {
1057
+ return false;
1058
+ }
1059
+
1060
+ this.thumb.autoOffset();
1061
+ this.baselinePos = [];
1062
+ },
1063
+
1064
+ /**
1065
+ * Handles the mousedown event for the slider background
1066
+ * @method onMouseDown
1067
+ * @private
1068
+ */
1069
+ onMouseDown: function(e) {
1070
+ if (!this.backgroundEnabled || this.isLocked()) {
1071
+ return false;
1072
+ }
1073
+
1074
+ this._mouseDown = true;
1075
+
1076
+ var x = Event.getPageX(e),
1077
+ y = Event.getPageY(e);
1078
+
1079
+
1080
+ this.focus();
1081
+ this._slideStart();
1082
+ this.moveThumb(x, y);
1083
+ },
1084
+
1085
+ /**
1086
+ * Handles the onDrag event for the slider background
1087
+ * @method onDrag
1088
+ * @private
1089
+ */
1090
+ onDrag: function(e) {
1091
+ if (this.backgroundEnabled && !this.isLocked()) {
1092
+ var x = Event.getPageX(e),
1093
+ y = Event.getPageY(e);
1094
+ this.moveThumb(x, y, true, true);
1095
+ this.fireEvents();
1096
+ }
1097
+ },
1098
+
1099
+ /**
1100
+ * Fired when the slider movement ends
1101
+ * @method endMove
1102
+ * @private
1103
+ */
1104
+ endMove: function () {
1105
+ this.unlock();
1106
+ this.fireEvents();
1107
+ this._slideEnd();
1108
+ },
1109
+
1110
+ /**
1111
+ * Resets the X and Y contraints for the thumb. Used in lieu of the thumb
1112
+ * instance's inherited resetConstraints because some logic was not
1113
+ * applicable.
1114
+ * @method resetThumbConstraints
1115
+ * @protected
1116
+ */
1117
+ resetThumbConstraints: function () {
1118
+ var t = this.thumb;
1119
+
1120
+ t.setXConstraint(t.leftConstraint, t.rightConstraint, t.xTickSize);
1121
+ t.setYConstraint(t.topConstraint, t.bottomConstraint, t.xTickSize);
1122
+ },
1123
+
1124
+ /**
1125
+ * Fires the change event if the value has been changed. Ignored if we are in
1126
+ * the middle of an animation as the event will fire when the animation is
1127
+ * complete
1128
+ * @method fireEvents
1129
+ * @param {boolean} thumbEvent set to true if this event is fired from an event
1130
+ * that occurred on the thumb. If it is, the state of the
1131
+ * thumb dd object should be correct. Otherwise, the event
1132
+ * originated on the background, so the thumb state needs to
1133
+ * be refreshed before proceeding.
1134
+ * @private
1135
+ */
1136
+ fireEvents: function (thumbEvent) {
1137
+
1138
+ var t = this.thumb, newX, newY, newVal;
1139
+
1140
+ if (!thumbEvent) {
1141
+ t.cachePosition();
1142
+ }
1143
+
1144
+ if (! this.isLocked()) {
1145
+ if (t._isRegion) {
1146
+ newX = t.getXValue();
1147
+ newY = t.getYValue();
1148
+
1149
+ if (newX != this.previousX || newY != this.previousY) {
1150
+ if (!this._silent) {
1151
+ this.onChange(newX, newY);
1152
+ this.fireEvent("change", { x: newX, y: newY });
1153
+ }
1154
+ }
1155
+
1156
+ this.previousX = newX;
1157
+ this.previousY = newY;
1158
+
1159
+ } else {
1160
+ newVal = t.getValue();
1161
+ if (newVal != this.previousVal) {
1162
+ if (!this._silent) {
1163
+ this.onChange( newVal );
1164
+ this.fireEvent("change", newVal);
1165
+ }
1166
+ }
1167
+ this.previousVal = newVal;
1168
+ }
1169
+
1170
+ }
1171
+ },
1172
+
1173
+ /**
1174
+ * Slider toString
1175
+ * @method toString
1176
+ * @return {string} string representation of the instance
1177
+ */
1178
+ toString: function () {
1179
+ return ("Slider (" + this.type +") " + this.id);
1180
+ }
1181
+
1182
+ });
1183
+
1184
+ YAHOO.lang.augmentProto(Slider, YAHOO.util.EventProvider);
1185
+
1186
+ YAHOO.widget.Slider = Slider;
1187
+ })();
1188
+ /**
1189
+ * A drag and drop implementation to be used as the thumb of a slider.
1190
+ * @class SliderThumb
1191
+ * @extends YAHOO.util.DD
1192
+ * @constructor
1193
+ * @param {String} id the id of the slider html element
1194
+ * @param {String} sGroup the group of related DragDrop items
1195
+ * @param {int} iLeft the number of pixels the element can move left
1196
+ * @param {int} iRight the number of pixels the element can move right
1197
+ * @param {int} iUp the number of pixels the element can move up
1198
+ * @param {int} iDown the number of pixels the element can move down
1199
+ * @param {int} iTickSize optional parameter for specifying that the element
1200
+ * should move a certain number pixels at a time.
1201
+ */
1202
+ YAHOO.widget.SliderThumb = function(id, sGroup, iLeft, iRight, iUp, iDown, iTickSize) {
1203
+
1204
+ if (id) {
1205
+ YAHOO.widget.SliderThumb.superclass.constructor.call(this, id, sGroup);
1206
+
1207
+ /**
1208
+ * The id of the thumbs parent HTML element (the slider background
1209
+ * element).
1210
+ * @property parentElId
1211
+ * @type string
1212
+ */
1213
+ this.parentElId = sGroup;
1214
+ }
1215
+
1216
+
1217
+
1218
+ /**
1219
+ * Overrides the isTarget property in YAHOO.util.DragDrop
1220
+ * @property isTarget
1221
+ * @private
1222
+ */
1223
+ this.isTarget = false;
1224
+
1225
+ /**
1226
+ * The tick size for this slider
1227
+ * @property tickSize
1228
+ * @type int
1229
+ * @private
1230
+ */
1231
+ this.tickSize = iTickSize;
1232
+
1233
+ /**
1234
+ * Informs the drag and drop util that the offsets should remain when
1235
+ * resetting the constraints. This preserves the slider value when
1236
+ * the constraints are reset
1237
+ * @property maintainOffset
1238
+ * @type boolean
1239
+ * @private
1240
+ */
1241
+ this.maintainOffset = true;
1242
+
1243
+ this.initSlider(iLeft, iRight, iUp, iDown, iTickSize);
1244
+
1245
+ /**
1246
+ * Turns off the autoscroll feature in drag and drop
1247
+ * @property scroll
1248
+ * @private
1249
+ */
1250
+ this.scroll = false;
1251
+
1252
+ };
1253
+
1254
+ YAHOO.extend(YAHOO.widget.SliderThumb, YAHOO.util.DD, {
1255
+
1256
+ /**
1257
+ * The (X and Y) difference between the thumb location and its parent
1258
+ * (the slider background) when the control is instantiated.
1259
+ * @property startOffset
1260
+ * @type [int, int]
1261
+ */
1262
+ startOffset: null,
1263
+
1264
+ /**
1265
+ * Override the default setting of dragOnly to true.
1266
+ * @property dragOnly
1267
+ * @type boolean
1268
+ * @default true
1269
+ */
1270
+ dragOnly : true,
1271
+
1272
+ /**
1273
+ * Flag used to figure out if this is a horizontal or vertical slider
1274
+ * @property _isHoriz
1275
+ * @type boolean
1276
+ * @private
1277
+ */
1278
+ _isHoriz: false,
1279
+
1280
+ /**
1281
+ * Cache the last value so we can check for change
1282
+ * @property _prevVal
1283
+ * @type int
1284
+ * @private
1285
+ */
1286
+ _prevVal: 0,
1287
+
1288
+ /**
1289
+ * The slider is _graduated if there is a tick interval defined
1290
+ * @property _graduated
1291
+ * @type boolean
1292
+ * @private
1293
+ */
1294
+ _graduated: false,
1295
+
1296
+
1297
+ /**
1298
+ * Returns the difference between the location of the thumb and its parent.
1299
+ * @method getOffsetFromParent
1300
+ * @param {[int, int]} parentPos Optionally accepts the position of the parent
1301
+ * @type [int, int]
1302
+ */
1303
+ getOffsetFromParent0: function(parentPos) {
1304
+ var myPos = YAHOO.util.Dom.getXY(this.getEl()),
1305
+ ppos = parentPos || YAHOO.util.Dom.getXY(this.parentElId);
1306
+
1307
+ return [ (myPos[0] - ppos[0]), (myPos[1] - ppos[1]) ];
1308
+ },
1309
+
1310
+ getOffsetFromParent: function(parentPos) {
1311
+
1312
+ var el = this.getEl(), newOffset,
1313
+ myPos,ppos,l,t,deltaX,deltaY,newLeft,newTop;
1314
+
1315
+ if (!this.deltaOffset) {
1316
+
1317
+ myPos = YAHOO.util.Dom.getXY(el);
1318
+ ppos = parentPos || YAHOO.util.Dom.getXY(this.parentElId);
1319
+
1320
+ newOffset = [ (myPos[0] - ppos[0]), (myPos[1] - ppos[1]) ];
1321
+
1322
+ l = parseInt( YAHOO.util.Dom.getStyle(el, "left"), 10 );
1323
+ t = parseInt( YAHOO.util.Dom.getStyle(el, "top" ), 10 );
1324
+
1325
+ deltaX = l - newOffset[0];
1326
+ deltaY = t - newOffset[1];
1327
+
1328
+ if (isNaN(deltaX) || isNaN(deltaY)) {
1329
+ } else {
1330
+ this.deltaOffset = [deltaX, deltaY];
1331
+ }
1332
+
1333
+ } else {
1334
+ newLeft = parseInt( YAHOO.util.Dom.getStyle(el, "left"), 10 );
1335
+ newTop = parseInt( YAHOO.util.Dom.getStyle(el, "top" ), 10 );
1336
+
1337
+ newOffset = [newLeft + this.deltaOffset[0], newTop + this.deltaOffset[1]];
1338
+ }
1339
+
1340
+ return newOffset;
1341
+ },
1342
+
1343
+ /**
1344
+ * Set up the slider, must be called in the constructor of all subclasses
1345
+ * @method initSlider
1346
+ * @param {int} iLeft the number of pixels the element can move left
1347
+ * @param {int} iRight the number of pixels the element can move right
1348
+ * @param {int} iUp the number of pixels the element can move up
1349
+ * @param {int} iDown the number of pixels the element can move down
1350
+ * @param {int} iTickSize the width of the tick interval.
1351
+ */
1352
+ initSlider: function (iLeft, iRight, iUp, iDown, iTickSize) {
1353
+ this.initLeft = iLeft;
1354
+ this.initRight = iRight;
1355
+ this.initUp = iUp;
1356
+ this.initDown = iDown;
1357
+
1358
+ this.setXConstraint(iLeft, iRight, iTickSize);
1359
+ this.setYConstraint(iUp, iDown, iTickSize);
1360
+
1361
+ if (iTickSize && iTickSize > 1) {
1362
+ this._graduated = true;
1363
+ }
1364
+
1365
+ this._isHoriz = (iLeft || iRight);
1366
+ this._isVert = (iUp || iDown);
1367
+ this._isRegion = (this._isHoriz && this._isVert);
1368
+
1369
+ },
1370
+
1371
+ /**
1372
+ * Clear's the slider's ticks
1373
+ * @method clearTicks
1374
+ */
1375
+ clearTicks: function () {
1376
+ YAHOO.widget.SliderThumb.superclass.clearTicks.call(this);
1377
+ this.tickSize = 0;
1378
+ this._graduated = false;
1379
+ },
1380
+
1381
+
1382
+ /**
1383
+ * Gets the current offset from the element's start position in
1384
+ * pixels.
1385
+ * @method getValue
1386
+ * @return {int} the number of pixels (positive or negative) the
1387
+ * slider has moved from the start position.
1388
+ */
1389
+ getValue: function () {
1390
+ return (this._isHoriz) ? this.getXValue() : this.getYValue();
1391
+ },
1392
+
1393
+ /**
1394
+ * Gets the current X offset from the element's start position in
1395
+ * pixels.
1396
+ * @method getXValue
1397
+ * @return {int} the number of pixels (positive or negative) the
1398
+ * slider has moved horizontally from the start position.
1399
+ */
1400
+ getXValue: function () {
1401
+ if (!this.available) {
1402
+ return 0;
1403
+ }
1404
+ var newOffset = this.getOffsetFromParent();
1405
+ if (YAHOO.lang.isNumber(newOffset[0])) {
1406
+ this.lastOffset = newOffset;
1407
+ return (newOffset[0] - this.startOffset[0]);
1408
+ } else {
1409
+ return (this.lastOffset[0] - this.startOffset[0]);
1410
+ }
1411
+ },
1412
+
1413
+ /**
1414
+ * Gets the current Y offset from the element's start position in
1415
+ * pixels.
1416
+ * @method getYValue
1417
+ * @return {int} the number of pixels (positive or negative) the
1418
+ * slider has moved vertically from the start position.
1419
+ */
1420
+ getYValue: function () {
1421
+ if (!this.available) {
1422
+ return 0;
1423
+ }
1424
+ var newOffset = this.getOffsetFromParent();
1425
+ if (YAHOO.lang.isNumber(newOffset[1])) {
1426
+ this.lastOffset = newOffset;
1427
+ return (newOffset[1] - this.startOffset[1]);
1428
+ } else {
1429
+ return (this.lastOffset[1] - this.startOffset[1]);
1430
+ }
1431
+ },
1432
+
1433
+ /**
1434
+ * Thumb toString
1435
+ * @method toString
1436
+ * @return {string} string representation of the instance
1437
+ */
1438
+ toString: function () {
1439
+ return "SliderThumb " + this.id;
1440
+ },
1441
+
1442
+ /**
1443
+ * The onchange event for the handle/thumb is delegated to the YAHOO.widget.Slider
1444
+ * instance it belongs to.
1445
+ * @method onChange
1446
+ * @private
1447
+ */
1448
+ onChange: function (x, y) {
1449
+ }
1450
+
1451
+ });
1452
+ /**
1453
+ * A slider with two thumbs, one that represents the min value and
1454
+ * the other the max. Actually a composition of two sliders, both with
1455
+ * the same background. The constraints for each slider are adjusted
1456
+ * dynamically so that the min value of the max slider is equal or greater
1457
+ * to the current value of the min slider, and the max value of the min
1458
+ * slider is the current value of the max slider.
1459
+ * Constructor assumes both thumbs are positioned absolutely at the 0 mark on
1460
+ * the background.
1461
+ *
1462
+ * @namespace YAHOO.widget
1463
+ * @class DualSlider
1464
+ * @uses YAHOO.util.EventProvider
1465
+ * @constructor
1466
+ * @param {Slider} minSlider The Slider instance used for the min value thumb
1467
+ * @param {Slider} maxSlider The Slider instance used for the max value thumb
1468
+ * @param {int} range The number of pixels the thumbs may move within
1469
+ * @param {Array} initVals (optional) [min,max] Initial thumb placement
1470
+ */
1471
+ (function () {
1472
+
1473
+ var Event = YAHOO.util.Event,
1474
+ YW = YAHOO.widget;
1475
+
1476
+ function DualSlider(minSlider, maxSlider, range, initVals) {
1477
+
1478
+ var self = this,
1479
+ ready = { min : false, max : false },
1480
+ minThumbOnMouseDown, maxThumbOnMouseDown;
1481
+
1482
+ /**
1483
+ * A slider instance that keeps track of the lower value of the range.
1484
+ * <strong>read only</strong>
1485
+ * @property minSlider
1486
+ * @type Slider
1487
+ */
1488
+ this.minSlider = minSlider;
1489
+
1490
+ /**
1491
+ * A slider instance that keeps track of the upper value of the range.
1492
+ * <strong>read only</strong>
1493
+ * @property maxSlider
1494
+ * @type Slider
1495
+ */
1496
+ this.maxSlider = maxSlider;
1497
+
1498
+ /**
1499
+ * The currently active slider (min or max). <strong>read only</strong>
1500
+ * @property activeSlider
1501
+ * @type Slider
1502
+ */
1503
+ this.activeSlider = minSlider;
1504
+
1505
+ /**
1506
+ * Is the DualSlider oriented horizontally or vertically?
1507
+ * <strong>read only</strong>
1508
+ * @property isHoriz
1509
+ * @type boolean
1510
+ */
1511
+ this.isHoriz = minSlider.thumb._isHoriz;
1512
+
1513
+ //FIXME: this is horrible
1514
+ minThumbOnMouseDown = this.minSlider.thumb.onMouseDown;
1515
+ maxThumbOnMouseDown = this.maxSlider.thumb.onMouseDown;
1516
+ this.minSlider.thumb.onMouseDown = function() {
1517
+ self.activeSlider = self.minSlider;
1518
+ minThumbOnMouseDown.apply(this,arguments);
1519
+ };
1520
+ this.maxSlider.thumb.onMouseDown = function () {
1521
+ self.activeSlider = self.maxSlider;
1522
+ maxThumbOnMouseDown.apply(this,arguments);
1523
+ };
1524
+
1525
+ this.minSlider.thumb.onAvailable = function () {
1526
+ minSlider.setStartSliderState();
1527
+ ready.min = true;
1528
+ if (ready.max) {
1529
+ self.fireEvent('ready',self);
1530
+ }
1531
+ };
1532
+ this.maxSlider.thumb.onAvailable = function () {
1533
+ maxSlider.setStartSliderState();
1534
+ ready.max = true;
1535
+ if (ready.min) {
1536
+ self.fireEvent('ready',self);
1537
+ }
1538
+ };
1539
+
1540
+ // dispatch mousedowns to the active slider
1541
+ minSlider.onMouseDown =
1542
+ maxSlider.onMouseDown = function(e) {
1543
+ return this.backgroundEnabled && self._handleMouseDown(e);
1544
+ };
1545
+
1546
+ // Fix the drag behavior so that only the active slider
1547
+ // follows the drag
1548
+ minSlider.onDrag =
1549
+ maxSlider.onDrag = function(e) {
1550
+ self._handleDrag(e);
1551
+ };
1552
+
1553
+ // Likely only the minSlider's onMouseUp will be executed, but both are
1554
+ // overridden just to be safe
1555
+ minSlider.onMouseUp =
1556
+ maxSlider.onMouseUp = function (e) {
1557
+ self._handleMouseUp(e);
1558
+ };
1559
+
1560
+ // Replace the _bindKeyEvents for the minSlider and remove that for the
1561
+ // maxSlider since they share the same bg element.
1562
+ minSlider._bindKeyEvents = function () {
1563
+ self._bindKeyEvents(this);
1564
+ };
1565
+ maxSlider._bindKeyEvents = function () {};
1566
+
1567
+ // The core events for each slider are handled so we can expose a single
1568
+ // event for when the event happens on either slider
1569
+ minSlider.subscribe("change", this._handleMinChange, minSlider, this);
1570
+ minSlider.subscribe("slideStart", this._handleSlideStart, minSlider, this);
1571
+ minSlider.subscribe("slideEnd", this._handleSlideEnd, minSlider, this);
1572
+
1573
+ maxSlider.subscribe("change", this._handleMaxChange, maxSlider, this);
1574
+ maxSlider.subscribe("slideStart", this._handleSlideStart, maxSlider, this);
1575
+ maxSlider.subscribe("slideEnd", this._handleSlideEnd, maxSlider, this);
1576
+
1577
+ /**
1578
+ * Event that fires when the slider is finished setting up
1579
+ * @event ready
1580
+ * @param {DualSlider} dualslider the DualSlider instance
1581
+ */
1582
+ this.createEvent("ready", this);
1583
+
1584
+ /**
1585
+ * Event that fires when either the min or max value changes
1586
+ * @event change
1587
+ * @param {DualSlider} dualslider the DualSlider instance
1588
+ */
1589
+ this.createEvent("change", this);
1590
+
1591
+ /**
1592
+ * Event that fires when one of the thumbs begins to move
1593
+ * @event slideStart
1594
+ * @param {Slider} activeSlider the moving slider
1595
+ */
1596
+ this.createEvent("slideStart", this);
1597
+
1598
+ /**
1599
+ * Event that fires when one of the thumbs finishes moving
1600
+ * @event slideEnd
1601
+ * @param {Slider} activeSlider the moving slider
1602
+ */
1603
+ this.createEvent("slideEnd", this);
1604
+
1605
+ // Validate initial values
1606
+ initVals = YAHOO.lang.isArray(initVals) ? initVals : [0,range];
1607
+ initVals[0] = Math.min(Math.max(parseInt(initVals[0],10)|0,0),range);
1608
+ initVals[1] = Math.max(Math.min(parseInt(initVals[1],10)|0,range),0);
1609
+ // Swap initVals if min > max
1610
+ if (initVals[0] > initVals[1]) {
1611
+ initVals.splice(0,2,initVals[1],initVals[0]);
1612
+ }
1613
+ this.minVal = initVals[0];
1614
+ this.maxVal = initVals[1];
1615
+
1616
+ // Set values so initial assignment when the slider thumbs are ready will
1617
+ // use these values
1618
+ this.minSlider.setValue(this.minVal,true,true,true);
1619
+ this.maxSlider.setValue(this.maxVal,true,true,true);
1620
+
1621
+ }
1622
+
1623
+ DualSlider.prototype = {
1624
+
1625
+ /**
1626
+ * The current value of the min thumb. <strong>read only</strong>.
1627
+ * @property minVal
1628
+ * @type int
1629
+ */
1630
+ minVal : -1,
1631
+
1632
+ /**
1633
+ * The current value of the max thumb. <strong>read only</strong>.
1634
+ * @property maxVal
1635
+ * @type int
1636
+ */
1637
+ maxVal : -1,
1638
+
1639
+ /**
1640
+ * Pixel distance to maintain between thumbs.
1641
+ * @property minRange
1642
+ * @type int
1643
+ * @default 0
1644
+ */
1645
+ minRange : 0,
1646
+
1647
+ /**
1648
+ * Executed when one of the sliders fires the slideStart event
1649
+ * @method _handleSlideStart
1650
+ * @private
1651
+ */
1652
+ _handleSlideStart: function(data, slider) {
1653
+ this.fireEvent("slideStart", slider);
1654
+ },
1655
+
1656
+ /**
1657
+ * Executed when one of the sliders fires the slideEnd event
1658
+ * @method _handleSlideEnd
1659
+ * @private
1660
+ */
1661
+ _handleSlideEnd: function(data, slider) {
1662
+ this.fireEvent("slideEnd", slider);
1663
+ },
1664
+
1665
+ /**
1666
+ * Overrides the onDrag method for both sliders
1667
+ * @method _handleDrag
1668
+ * @private
1669
+ */
1670
+ _handleDrag: function(e) {
1671
+ YW.Slider.prototype.onDrag.call(this.activeSlider, e);
1672
+ },
1673
+
1674
+ /**
1675
+ * Executed when the min slider fires the change event
1676
+ * @method _handleMinChange
1677
+ * @private
1678
+ */
1679
+ _handleMinChange: function() {
1680
+ this.activeSlider = this.minSlider;
1681
+ this.updateValue();
1682
+ },
1683
+
1684
+ /**
1685
+ * Executed when the max slider fires the change event
1686
+ * @method _handleMaxChange
1687
+ * @private
1688
+ */
1689
+ _handleMaxChange: function() {
1690
+ this.activeSlider = this.maxSlider;
1691
+ this.updateValue();
1692
+ },
1693
+
1694
+ /**
1695
+ * Set up the listeners for the keydown and keypress events.
1696
+ *
1697
+ * @method _bindKeyEvents
1698
+ * @protected
1699
+ */
1700
+ _bindKeyEvents : function (slider) {
1701
+ Event.on(slider.id,'keydown', this._handleKeyDown, this,true);
1702
+ Event.on(slider.id,'keypress',this._handleKeyPress,this,true);
1703
+ },
1704
+
1705
+ /**
1706
+ * Delegate event handling to the active Slider. See Slider.handleKeyDown.
1707
+ *
1708
+ * @method _handleKeyDown
1709
+ * @param e {Event} the mousedown DOM event
1710
+ * @protected
1711
+ */
1712
+ _handleKeyDown : function (e) {
1713
+ this.activeSlider.handleKeyDown.apply(this.activeSlider,arguments);
1714
+ },
1715
+
1716
+ /**
1717
+ * Delegate event handling to the active Slider. See Slider.handleKeyPress.
1718
+ *
1719
+ * @method _handleKeyPress
1720
+ * @param e {Event} the mousedown DOM event
1721
+ * @protected
1722
+ */
1723
+ _handleKeyPress : function (e) {
1724
+ this.activeSlider.handleKeyPress.apply(this.activeSlider,arguments);
1725
+ },
1726
+
1727
+ /**
1728
+ * Sets the min and max thumbs to new values.
1729
+ * @method setValues
1730
+ * @param min {int} Pixel offset to assign to the min thumb
1731
+ * @param max {int} Pixel offset to assign to the max thumb
1732
+ * @param skipAnim {boolean} (optional) Set to true to skip thumb animation.
1733
+ * Default false
1734
+ * @param force {boolean} (optional) ignore the locked setting and set
1735
+ * value anyway. Default false
1736
+ * @param silent {boolean} (optional) Set to true to skip firing change
1737
+ * events. Default false
1738
+ */
1739
+ setValues : function (min, max, skipAnim, force, silent) {
1740
+ var mins = this.minSlider,
1741
+ maxs = this.maxSlider,
1742
+ mint = mins.thumb,
1743
+ maxt = maxs.thumb,
1744
+ self = this,
1745
+ done = { min : false, max : false };
1746
+
1747
+ // Clear constraints to prevent animated thumbs from prematurely
1748
+ // stopping when hitting a constraint that's moving with the other
1749
+ // thumb.
1750
+ if (mint._isHoriz) {
1751
+ mint.setXConstraint(mint.leftConstraint,maxt.rightConstraint,mint.tickSize);
1752
+ maxt.setXConstraint(mint.leftConstraint,maxt.rightConstraint,maxt.tickSize);
1753
+ } else {
1754
+ mint.setYConstraint(mint.topConstraint,maxt.bottomConstraint,mint.tickSize);
1755
+ maxt.setYConstraint(mint.topConstraint,maxt.bottomConstraint,maxt.tickSize);
1756
+ }
1757
+
1758
+ // Set up one-time slideEnd callbacks to call updateValue when both
1759
+ // thumbs have been set
1760
+ this._oneTimeCallback(mins,'slideEnd',function () {
1761
+ done.min = true;
1762
+ if (done.max) {
1763
+ self.updateValue(silent);
1764
+ // Clean the slider's slideEnd events on a timeout since this
1765
+ // will be executed from inside the event's fire
1766
+ setTimeout(function () {
1767
+ self._cleanEvent(mins,'slideEnd');
1768
+ self._cleanEvent(maxs,'slideEnd');
1769
+ },0);
1770
+ }
1771
+ });
1772
+
1773
+ this._oneTimeCallback(maxs,'slideEnd',function () {
1774
+ done.max = true;
1775
+ if (done.min) {
1776
+ self.updateValue(silent);
1777
+ // Clean both sliders' slideEnd events on a timeout since this
1778
+ // will be executed from inside one of the event's fire
1779
+ setTimeout(function () {
1780
+ self._cleanEvent(mins,'slideEnd');
1781
+ self._cleanEvent(maxs,'slideEnd');
1782
+ },0);
1783
+ }
1784
+ });
1785
+
1786
+ // Must emit Slider slideEnd event to propagate to updateValue
1787
+ mins.setValue(min,skipAnim,force,false);
1788
+ maxs.setValue(max,skipAnim,force,false);
1789
+ },
1790
+
1791
+ /**
1792
+ * Set the min thumb position to a new value.
1793
+ * @method setMinValue
1794
+ * @param min {int} Pixel offset for min thumb
1795
+ * @param skipAnim {boolean} (optional) Set to true to skip thumb animation.
1796
+ * Default false
1797
+ * @param force {boolean} (optional) ignore the locked setting and set
1798
+ * value anyway. Default false
1799
+ * @param silent {boolean} (optional) Set to true to skip firing change
1800
+ * events. Default false
1801
+ */
1802
+ setMinValue : function (min, skipAnim, force, silent) {
1803
+ var mins = this.minSlider,
1804
+ self = this;
1805
+
1806
+ this.activeSlider = mins;
1807
+
1808
+ // Use a one-time event callback to delay the updateValue call
1809
+ // until after the slide operation is done
1810
+ self = this;
1811
+ this._oneTimeCallback(mins,'slideEnd',function () {
1812
+ self.updateValue(silent);
1813
+ // Clean the slideEnd event on a timeout since this
1814
+ // will be executed from inside the event's fire
1815
+ setTimeout(function () { self._cleanEvent(mins,'slideEnd'); }, 0);
1816
+ });
1817
+
1818
+ mins.setValue(min, skipAnim, force);
1819
+ },
1820
+
1821
+ /**
1822
+ * Set the max thumb position to a new value.
1823
+ * @method setMaxValue
1824
+ * @param max {int} Pixel offset for max thumb
1825
+ * @param skipAnim {boolean} (optional) Set to true to skip thumb animation.
1826
+ * Default false
1827
+ * @param force {boolean} (optional) ignore the locked setting and set
1828
+ * value anyway. Default false
1829
+ * @param silent {boolean} (optional) Set to true to skip firing change
1830
+ * events. Default false
1831
+ */
1832
+ setMaxValue : function (max, skipAnim, force, silent) {
1833
+ var maxs = this.maxSlider,
1834
+ self = this;
1835
+
1836
+ this.activeSlider = maxs;
1837
+
1838
+ // Use a one-time event callback to delay the updateValue call
1839
+ // until after the slide operation is done
1840
+ this._oneTimeCallback(maxs,'slideEnd',function () {
1841
+ self.updateValue(silent);
1842
+ // Clean the slideEnd event on a timeout since this
1843
+ // will be executed from inside the event's fire
1844
+ setTimeout(function () { self._cleanEvent(maxs,'slideEnd'); }, 0);
1845
+ });
1846
+
1847
+ maxs.setValue(max, skipAnim, force);
1848
+ },
1849
+
1850
+ /**
1851
+ * Executed when one of the sliders is moved
1852
+ * @method updateValue
1853
+ * @param silent {boolean} (optional) Set to true to skip firing change
1854
+ * events. Default false
1855
+ * @private
1856
+ */
1857
+ updateValue: function(silent) {
1858
+ var min = this.minSlider.getValue(),
1859
+ max = this.maxSlider.getValue(),
1860
+ changed = false,
1861
+ mint,maxt,dim,minConstraint,maxConstraint,thumbInnerWidth;
1862
+
1863
+ if (min != this.minVal || max != this.maxVal) {
1864
+ changed = true;
1865
+
1866
+ mint = this.minSlider.thumb;
1867
+ maxt = this.maxSlider.thumb;
1868
+ dim = this.isHoriz ? 'x' : 'y';
1869
+
1870
+ thumbInnerWidth = this.minSlider.thumbCenterPoint[dim] +
1871
+ this.maxSlider.thumbCenterPoint[dim];
1872
+
1873
+ // Establish barriers within the respective other thumb's edge, less
1874
+ // the minRange. Limit to the Slider's range in the case of
1875
+ // negative minRanges.
1876
+ minConstraint = Math.max(max-thumbInnerWidth-this.minRange,0);
1877
+ maxConstraint = Math.min(-min-thumbInnerWidth-this.minRange,0);
1878
+
1879
+ if (this.isHoriz) {
1880
+ minConstraint = Math.min(minConstraint,maxt.rightConstraint);
1881
+
1882
+ mint.setXConstraint(mint.leftConstraint,minConstraint, mint.tickSize);
1883
+
1884
+ maxt.setXConstraint(maxConstraint,maxt.rightConstraint, maxt.tickSize);
1885
+ } else {
1886
+ minConstraint = Math.min(minConstraint,maxt.bottomConstraint);
1887
+ mint.setYConstraint(mint.leftConstraint,minConstraint, mint.tickSize);
1888
+
1889
+ maxt.setYConstraint(maxConstraint,maxt.bottomConstraint, maxt.tickSize);
1890
+ }
1891
+ }
1892
+
1893
+ this.minVal = min;
1894
+ this.maxVal = max;
1895
+
1896
+ if (changed && !silent) {
1897
+ this.fireEvent("change", this);
1898
+ }
1899
+ },
1900
+
1901
+ /**
1902
+ * A background click will move the slider thumb nearest to the click.
1903
+ * Override if you need different behavior.
1904
+ * @method selectActiveSlider
1905
+ * @param e {Event} the mousedown event
1906
+ * @private
1907
+ */
1908
+ selectActiveSlider: function(e) {
1909
+ var min = this.minSlider,
1910
+ max = this.maxSlider,
1911
+ minLocked = min.isLocked() || !min.backgroundEnabled,
1912
+ maxLocked = max.isLocked() || !min.backgroundEnabled,
1913
+ Ev = YAHOO.util.Event,
1914
+ d;
1915
+
1916
+ if (minLocked || maxLocked) {
1917
+ this.activeSlider = minLocked ? max : min;
1918
+ } else {
1919
+ if (this.isHoriz) {
1920
+ d = Ev.getPageX(e)-min.thumb.initPageX-min.thumbCenterPoint.x;
1921
+ } else {
1922
+ d = Ev.getPageY(e)-min.thumb.initPageY-min.thumbCenterPoint.y;
1923
+ }
1924
+
1925
+ this.activeSlider = d*2 > max.getValue()+min.getValue() ? max : min;
1926
+ }
1927
+ },
1928
+
1929
+ /**
1930
+ * Delegates the onMouseDown to the appropriate Slider
1931
+ *
1932
+ * @method _handleMouseDown
1933
+ * @param e {Event} mouseup event
1934
+ * @protected
1935
+ */
1936
+ _handleMouseDown: function(e) {
1937
+ if (!e._handled && !this.minSlider._sliding && !this.maxSlider._sliding) {
1938
+ e._handled = true;
1939
+ this.selectActiveSlider(e);
1940
+ return YW.Slider.prototype.onMouseDown.call(this.activeSlider, e);
1941
+ } else {
1942
+ return false;
1943
+ }
1944
+ },
1945
+
1946
+ /**
1947
+ * Delegates the onMouseUp to the active Slider
1948
+ *
1949
+ * @method _handleMouseUp
1950
+ * @param e {Event} mouseup event
1951
+ * @protected
1952
+ */
1953
+ _handleMouseUp : function (e) {
1954
+ YW.Slider.prototype.onMouseUp.apply(
1955
+ this.activeSlider, arguments);
1956
+ },
1957
+
1958
+ /**
1959
+ * Schedule an event callback that will execute once, then unsubscribe
1960
+ * itself.
1961
+ * @method _oneTimeCallback
1962
+ * @param o {EventProvider} Object to attach the event to
1963
+ * @param evt {string} Name of the event
1964
+ * @param fn {Function} function to execute once
1965
+ * @private
1966
+ */
1967
+ _oneTimeCallback : function (o,evt,fn) {
1968
+ var sub = function () {
1969
+ // Unsubscribe myself
1970
+ o.unsubscribe(evt, sub);
1971
+ // Pass the event handler arguments to the one time callback
1972
+ fn.apply({},arguments);
1973
+ };
1974
+ o.subscribe(evt,sub);
1975
+ },
1976
+
1977
+ /**
1978
+ * Clean up the slideEnd event subscribers array, since each one-time
1979
+ * callback will be replaced in the event's subscribers property with
1980
+ * null. This will cause memory bloat and loss of performance.
1981
+ * @method _cleanEvent
1982
+ * @param o {EventProvider} object housing the CustomEvent
1983
+ * @param evt {string} name of the CustomEvent
1984
+ * @private
1985
+ */
1986
+ _cleanEvent : function (o,evt) {
1987
+ var ce,i,len,j,subs,newSubs;
1988
+
1989
+ if (o.__yui_events && o.events[evt]) {
1990
+ for (i = o.__yui_events.length; i >= 0; --i) {
1991
+ if (o.__yui_events[i].type === evt) {
1992
+ ce = o.__yui_events[i];
1993
+ break;
1994
+ }
1995
+ }
1996
+ if (ce) {
1997
+ subs = ce.subscribers;
1998
+ newSubs = [];
1999
+ j = 0;
2000
+ for (i = 0, len = subs.length; i < len; ++i) {
2001
+ if (subs[i]) {
2002
+ newSubs[j++] = subs[i];
2003
+ }
2004
+ }
2005
+ ce.subscribers = newSubs;
2006
+ }
2007
+ }
2008
+ }
2009
+
2010
+ };
2011
+
2012
+ YAHOO.lang.augmentProto(DualSlider, YAHOO.util.EventProvider);
2013
+
2014
+
2015
+ /**
2016
+ * Factory method for creating a horizontal dual-thumb slider
2017
+ * @for YAHOO.widget.Slider
2018
+ * @method YAHOO.widget.Slider.getHorizDualSlider
2019
+ * @static
2020
+ * @param {String} bg the id of the slider's background element
2021
+ * @param {String} minthumb the id of the min thumb
2022
+ * @param {String} maxthumb the id of the thumb thumb
2023
+ * @param {int} range the number of pixels the thumbs can move within
2024
+ * @param {int} iTickSize (optional) the element should move this many pixels
2025
+ * at a time
2026
+ * @param {Array} initVals (optional) [min,max] Initial thumb placement
2027
+ * @return {DualSlider} a horizontal dual-thumb slider control
2028
+ */
2029
+ YW.Slider.getHorizDualSlider =
2030
+ function (bg, minthumb, maxthumb, range, iTickSize, initVals) {
2031
+ var mint = new YW.SliderThumb(minthumb, bg, 0, range, 0, 0, iTickSize),
2032
+ maxt = new YW.SliderThumb(maxthumb, bg, 0, range, 0, 0, iTickSize);
2033
+
2034
+ return new DualSlider(
2035
+ new YW.Slider(bg, bg, mint, "horiz"),
2036
+ new YW.Slider(bg, bg, maxt, "horiz"),
2037
+ range, initVals);
2038
+ };
2039
+
2040
+ /**
2041
+ * Factory method for creating a vertical dual-thumb slider.
2042
+ * @for YAHOO.widget.Slider
2043
+ * @method YAHOO.widget.Slider.getVertDualSlider
2044
+ * @static
2045
+ * @param {String} bg the id of the slider's background element
2046
+ * @param {String} minthumb the id of the min thumb
2047
+ * @param {String} maxthumb the id of the thumb thumb
2048
+ * @param {int} range the number of pixels the thumbs can move within
2049
+ * @param {int} iTickSize (optional) the element should move this many pixels
2050
+ * at a time
2051
+ * @param {Array} initVals (optional) [min,max] Initial thumb placement
2052
+ * @return {DualSlider} a vertical dual-thumb slider control
2053
+ */
2054
+ YW.Slider.getVertDualSlider =
2055
+ function (bg, minthumb, maxthumb, range, iTickSize, initVals) {
2056
+ var mint = new YW.SliderThumb(minthumb, bg, 0, 0, 0, range, iTickSize),
2057
+ maxt = new YW.SliderThumb(maxthumb, bg, 0, 0, 0, range, iTickSize);
2058
+
2059
+ return new YW.DualSlider(
2060
+ new YW.Slider(bg, bg, mint, "vert"),
2061
+ new YW.Slider(bg, bg, maxt, "vert"),
2062
+ range, initVals);
2063
+ };
2064
+
2065
+ YAHOO.widget.DualSlider = DualSlider;
2066
+
2067
+ })();
2068
+ YAHOO.register("slider", YAHOO.widget.Slider, {version: "2.8.1", build: "19"});