yui-rails-asset 2.8.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (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,17 @@
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
+ if(typeof YAHOO=="undefined"||!YAHOO){var YAHOO={};}YAHOO.namespace=function(){var A=arguments,E=null,C,B,D;for(C=0;C<A.length;C=C+1){D=(""+A[C]).split(".");E=YAHOO;for(B=(D[0]=="YAHOO")?1:0;B<D.length;B=B+1){E[D[B]]=E[D[B]]||{};E=E[D[B]];}}return E;};YAHOO.log=function(D,A,C){var B=YAHOO.widget.Logger;if(B&&B.log){return B.log(D,A,C);}else{return false;}};YAHOO.register=function(A,E,D){var I=YAHOO.env.modules,B,H,G,F,C;if(!I[A]){I[A]={versions:[],builds:[]};}B=I[A];H=D.version;G=D.build;F=YAHOO.env.listeners;B.name=A;B.version=H;B.build=G;B.versions.push(H);B.builds.push(G);B.mainClass=E;for(C=0;C<F.length;C=C+1){F[C](B);}if(E){E.VERSION=H;E.BUILD=G;}else{YAHOO.log("mainClass is undefined for module "+A,"warn");}};YAHOO.env=YAHOO.env||{modules:[],listeners:[]};YAHOO.env.getVersion=function(A){return YAHOO.env.modules[A]||null;};YAHOO.env.ua=function(){var D=function(H){var I=0;return parseFloat(H.replace(/\./g,function(){return(I++==1)?"":".";}));},G=navigator,F={ie:0,opera:0,gecko:0,webkit:0,mobile:null,air:0,caja:G.cajaVersion,secure:false,os:null},C=navigator&&navigator.userAgent,E=window&&window.location,B=E&&E.href,A;F.secure=B&&(B.toLowerCase().indexOf("https")===0);if(C){if((/windows|win32/i).test(C)){F.os="windows";}else{if((/macintosh/i).test(C)){F.os="macintosh";}}if((/KHTML/).test(C)){F.webkit=1;}A=C.match(/AppleWebKit\/([^\s]*)/);if(A&&A[1]){F.webkit=D(A[1]);if(/ Mobile\//.test(C)){F.mobile="Apple";}else{A=C.match(/NokiaN[^\/]*/);if(A){F.mobile=A[0];}}A=C.match(/AdobeAIR\/([^\s]*)/);if(A){F.air=A[0];}}if(!F.webkit){A=C.match(/Opera[\s\/]([^\s]*)/);if(A&&A[1]){F.opera=D(A[1]);A=C.match(/Opera Mini[^;]*/);if(A){F.mobile=A[0];}}else{A=C.match(/MSIE\s([^;]*)/);if(A&&A[1]){F.ie=D(A[1]);}else{A=C.match(/Gecko\/([^\s]*)/);if(A){F.gecko=1;A=C.match(/rv:([^\s\)]*)/);if(A&&A[1]){F.gecko=D(A[1]);}}}}}}return F;}();(function(){YAHOO.namespace("util","widget","example");if("undefined"!==typeof YAHOO_config){var B=YAHOO_config.listener,A=YAHOO.env.listeners,D=true,C;if(B){for(C=0;C<A.length;C++){if(A[C]==B){D=false;break;}}if(D){A.push(B);}}}})();YAHOO.lang=YAHOO.lang||{};(function(){var B=YAHOO.lang,A=Object.prototype,H="[object Array]",C="[object Function]",G="[object Object]",E=[],F=["toString","valueOf"],D={isArray:function(I){return A.toString.apply(I)===H;},isBoolean:function(I){return typeof I==="boolean";},isFunction:function(I){return(typeof I==="function")||A.toString.apply(I)===C;},isNull:function(I){return I===null;},isNumber:function(I){return typeof I==="number"&&isFinite(I);},isObject:function(I){return(I&&(typeof I==="object"||B.isFunction(I)))||false;},isString:function(I){return typeof I==="string";},isUndefined:function(I){return typeof I==="undefined";},_IEEnumFix:(YAHOO.env.ua.ie)?function(K,J){var I,M,L;for(I=0;I<F.length;I=I+1){M=F[I];L=J[M];if(B.isFunction(L)&&L!=A[M]){K[M]=L;}}}:function(){},extend:function(L,M,K){if(!M||!L){throw new Error("extend failed, please check that "+"all dependencies are included.");}var J=function(){},I;J.prototype=M.prototype;L.prototype=new J();L.prototype.constructor=L;L.superclass=M.prototype;if(M.prototype.constructor==A.constructor){M.prototype.constructor=M;}if(K){for(I in K){if(B.hasOwnProperty(K,I)){L.prototype[I]=K[I];}}B._IEEnumFix(L.prototype,K);}},augmentObject:function(M,L){if(!L||!M){throw new Error("Absorb failed, verify dependencies.");}var I=arguments,K,N,J=I[2];if(J&&J!==true){for(K=2;K<I.length;K=K+1){M[I[K]]=L[I[K]];}}else{for(N in L){if(J||!(N in M)){M[N]=L[N];}}B._IEEnumFix(M,L);}},augmentProto:function(L,K){if(!K||!L){throw new Error("Augment failed, verify dependencies.");}var I=[L.prototype,K.prototype],J;for(J=2;J<arguments.length;J=J+1){I.push(arguments[J]);}B.augmentObject.apply(this,I);},dump:function(I,N){var K,M,P=[],Q="{...}",J="f(){...}",O=", ",L=" => ";if(!B.isObject(I)){return I+"";}else{if(I instanceof Date||("nodeType" in I&&"tagName" in I)){return I;}else{if(B.isFunction(I)){return J;}}}N=(B.isNumber(N))?N:3;if(B.isArray(I)){P.push("[");for(K=0,M=I.length;K<M;K=K+1){if(B.isObject(I[K])){P.push((N>0)?B.dump(I[K],N-1):Q);}else{P.push(I[K]);}P.push(O);}if(P.length>1){P.pop();}P.push("]");}else{P.push("{");for(K in I){if(B.hasOwnProperty(I,K)){P.push(K+L);if(B.isObject(I[K])){P.push((N>0)?B.dump(I[K],N-1):Q);}else{P.push(I[K]);}P.push(O);}}if(P.length>1){P.pop();}P.push("}");}return P.join("");},substitute:function(Y,J,R){var N,M,L,U,V,X,T=[],K,O="dump",S=" ",I="{",W="}",Q,P;for(;;){N=Y.lastIndexOf(I);if(N<0){break;}M=Y.indexOf(W,N);if(N+1>=M){break;}K=Y.substring(N+1,M);U=K;X=null;L=U.indexOf(S);if(L>-1){X=U.substring(L+1);U=U.substring(0,L);}V=J[U];if(R){V=R(U,V,X);}if(B.isObject(V)){if(B.isArray(V)){V=B.dump(V,parseInt(X,10));}else{X=X||"";Q=X.indexOf(O);if(Q>-1){X=X.substring(4);}P=V.toString();if(P===G||Q>-1){V=B.dump(V,parseInt(X,10));}else{V=P;}}}else{if(!B.isString(V)&&!B.isNumber(V)){V="~-"+T.length+"-~";T[T.length]=K;}}Y=Y.substring(0,N)+V+Y.substring(M+1);}for(N=T.length-1;N>=0;N=N-1){Y=Y.replace(new RegExp("~-"+N+"-~"),"{"+T[N]+"}","g");}return Y;},trim:function(I){try{return I.replace(/^\s+|\s+$/g,"");}catch(J){return I;}},merge:function(){var L={},J=arguments,I=J.length,K;for(K=0;K<I;K=K+1){B.augmentObject(L,J[K],true);}return L;},later:function(P,J,Q,L,M){P=P||0;J=J||{};var K=Q,O=L,N,I;if(B.isString(Q)){K=J[Q];}if(!K){throw new TypeError("method undefined");}if(O&&!B.isArray(O)){O=[L];}N=function(){K.apply(J,O||E);};I=(M)?setInterval(N,P):setTimeout(N,P);return{interval:M,cancel:function(){if(this.interval){clearInterval(I);}else{clearTimeout(I);}}};},isValue:function(I){return(B.isObject(I)||B.isString(I)||B.isNumber(I)||B.isBoolean(I));}};B.hasOwnProperty=(A.hasOwnProperty)?function(I,J){return I&&I.hasOwnProperty(J);}:function(I,J){return !B.isUndefined(I[J])&&I.constructor.prototype[J]!==I[J];};D.augmentObject(B,D,true);YAHOO.util.Lang=B;B.augment=B.augmentProto;YAHOO.augment=B.augmentProto;YAHOO.extend=B.extend;})();YAHOO.register("yahoo",YAHOO,{version:"2.8.1",build:"19"});
8
+ YAHOO.util.Get=function(){var M={},L=0,R=0,E=false,N=YAHOO.env.ua,S=YAHOO.lang;var J=function(W,T,X){var U=X||window,Y=U.document,Z=Y.createElement(W);for(var V in T){if(T[V]&&YAHOO.lang.hasOwnProperty(T,V)){Z.setAttribute(V,T[V]);}}return Z;};var I=function(U,V,T){var W={id:"yui__dyn_"+(R++),type:"text/css",rel:"stylesheet",href:U};if(T){S.augmentObject(W,T);}return J("link",W,V);};var P=function(U,V,T){var W={id:"yui__dyn_"+(R++),type:"text/javascript",src:U};if(T){S.augmentObject(W,T);}return J("script",W,V);};var A=function(T,U){return{tId:T.tId,win:T.win,data:T.data,nodes:T.nodes,msg:U,purge:function(){D(this.tId);}};};var B=function(T,W){var U=M[W],V=(S.isString(T))?U.win.document.getElementById(T):T;if(!V){Q(W,"target node not found: "+T);}return V;};var Q=function(W,V){var T=M[W];if(T.onFailure){var U=T.scope||T.win;T.onFailure.call(U,A(T,V));}};var C=function(W){var T=M[W];T.finished=true;if(T.aborted){var V="transaction "+W+" was aborted";Q(W,V);return;}if(T.onSuccess){var U=T.scope||T.win;T.onSuccess.call(U,A(T));}};var O=function(V){var T=M[V];if(T.onTimeout){var U=T.scope||T;T.onTimeout.call(U,A(T));}};var G=function(V,Z){var U=M[V];if(U.timer){U.timer.cancel();}if(U.aborted){var X="transaction "+V+" was aborted";Q(V,X);return;}if(Z){U.url.shift();if(U.varName){U.varName.shift();}}else{U.url=(S.isString(U.url))?[U.url]:U.url;if(U.varName){U.varName=(S.isString(U.varName))?[U.varName]:U.varName;}}var c=U.win,b=c.document,a=b.getElementsByTagName("head")[0],W;if(U.url.length===0){if(U.type==="script"&&N.webkit&&N.webkit<420&&!U.finalpass&&!U.varName){var Y=P(null,U.win,U.attributes);Y.innerHTML='YAHOO.util.Get._finalize("'+V+'");';U.nodes.push(Y);a.appendChild(Y);}else{C(V);}return;}var T=U.url[0];if(!T){U.url.shift();return G(V);}if(U.timeout){U.timer=S.later(U.timeout,U,O,V);}if(U.type==="script"){W=P(T,c,U.attributes);}else{W=I(T,c,U.attributes);}F(U.type,W,V,T,c,U.url.length);U.nodes.push(W);if(U.insertBefore){var e=B(U.insertBefore,V);if(e){e.parentNode.insertBefore(W,e);}}else{a.appendChild(W);}if((N.webkit||N.gecko)&&U.type==="css"){G(V,T);}};var K=function(){if(E){return;}E=true;for(var T in M){var U=M[T];if(U.autopurge&&U.finished){D(U.tId);delete M[T];}}E=false;};var D=function(Z){if(M[Z]){var T=M[Z],U=T.nodes,X=U.length,c=T.win.document,a=c.getElementsByTagName("head")[0],V,Y,W,b;if(T.insertBefore){V=B(T.insertBefore,Z);if(V){a=V.parentNode;}}for(Y=0;Y<X;Y=Y+1){W=U[Y];if(W.clearAttributes){W.clearAttributes();}else{for(b in W){delete W[b];}}a.removeChild(W);}T.nodes=[];}};var H=function(U,T,V){var X="q"+(L++);V=V||{};if(L%YAHOO.util.Get.PURGE_THRESH===0){K();}M[X]=S.merge(V,{tId:X,type:U,url:T,finished:false,aborted:false,nodes:[]});var W=M[X];W.win=W.win||window;W.scope=W.scope||W.win;W.autopurge=("autopurge" in W)?W.autopurge:(U==="script")?true:false;if(V.charset){W.attributes=W.attributes||{};W.attributes.charset=V.charset;}S.later(0,W,G,X);return{tId:X};};var F=function(c,X,W,U,Y,Z,b){var a=b||G;if(N.ie){X.onreadystatechange=function(){var d=this.readyState;if("loaded"===d||"complete"===d){X.onreadystatechange=null;a(W,U);}};}else{if(N.webkit){if(c==="script"){if(N.webkit>=420){X.addEventListener("load",function(){a(W,U);});}else{var T=M[W];if(T.varName){var V=YAHOO.util.Get.POLL_FREQ;T.maxattempts=YAHOO.util.Get.TIMEOUT/V;T.attempts=0;T._cache=T.varName[0].split(".");T.timer=S.later(V,T,function(j){var f=this._cache,e=f.length,d=this.win,g;for(g=0;g<e;g=g+1){d=d[f[g]];if(!d){this.attempts++;if(this.attempts++>this.maxattempts){var h="Over retry limit, giving up";T.timer.cancel();Q(W,h);}else{}return;}}T.timer.cancel();a(W,U);},null,true);}else{S.later(YAHOO.util.Get.POLL_FREQ,null,a,[W,U]);}}}}else{X.onload=function(){a(W,U);};}}};return{POLL_FREQ:10,PURGE_THRESH:20,TIMEOUT:2000,_finalize:function(T){S.later(0,null,C,T);},abort:function(U){var V=(S.isString(U))?U:U.tId;var T=M[V];if(T){T.aborted=true;}},script:function(T,U){return H("script",T,U);},css:function(T,U){return H("css",T,U);}};}();YAHOO.register("get",YAHOO.util.Get,{version:"2.8.1",build:"19"});(function(){var Y=YAHOO,util=Y.util,lang=Y.lang,env=Y.env,PROV="_provides",SUPER="_supersedes",REQ="expanded",AFTER="_after";var YUI={dupsAllowed:{"yahoo":true,"get":true},info:{"root":"2.8.1/build/","base":"http://yui.yahooapis.com/2.8.1/build/","comboBase":"http://yui.yahooapis.com/combo?","skin":{"defaultSkin":"sam","base":"assets/skins/","path":"skin.css","after":["reset","fonts","grids","base"],"rollup":3},dupsAllowed:["yahoo","get"],"moduleInfo":{"animation":{"type":"js","path":"animation/animation-min.js","requires":["dom","event"]},"autocomplete":{"type":"js","path":"autocomplete/autocomplete-min.js","requires":["dom","event","datasource"],"optional":["connection","animation"],"skinnable":true},"base":{"type":"css","path":"base/base-min.css","after":["reset","fonts","grids"]},"button":{"type":"js","path":"button/button-min.js","requires":["element"],"optional":["menu"],"skinnable":true},"calendar":{"type":"js","path":"calendar/calendar-min.js","requires":["event","dom"],supersedes:["datemeth"],"skinnable":true},"carousel":{"type":"js","path":"carousel/carousel-min.js","requires":["element"],"optional":["animation"],"skinnable":true},"charts":{"type":"js","path":"charts/charts-min.js","requires":["element","json","datasource","swf"]},"colorpicker":{"type":"js","path":"colorpicker/colorpicker-min.js","requires":["slider","element"],"optional":["animation"],"skinnable":true},"connection":{"type":"js","path":"connection/connection-min.js","requires":["event"],"supersedes":["connectioncore"]},"connectioncore":{"type":"js","path":"connection/connection_core-min.js","requires":["event"],"pkg":"connection"},"container":{"type":"js","path":"container/container-min.js","requires":["dom","event"],"optional":["dragdrop","animation","connection"],"supersedes":["containercore"],"skinnable":true},"containercore":{"type":"js","path":"container/container_core-min.js","requires":["dom","event"],"pkg":"container"},"cookie":{"type":"js","path":"cookie/cookie-min.js","requires":["yahoo"]},"datasource":{"type":"js","path":"datasource/datasource-min.js","requires":["event"],"optional":["connection"]},"datatable":{"type":"js","path":"datatable/datatable-min.js","requires":["element","datasource"],"optional":["calendar","dragdrop","paginator"],"skinnable":true},datemath:{"type":"js","path":"datemath/datemath-min.js","requires":["yahoo"]},"dom":{"type":"js","path":"dom/dom-min.js","requires":["yahoo"]},"dragdrop":{"type":"js","path":"dragdrop/dragdrop-min.js","requires":["dom","event"]},"editor":{"type":"js","path":"editor/editor-min.js","requires":["menu","element","button"],"optional":["animation","dragdrop"],"supersedes":["simpleeditor"],"skinnable":true},"element":{"type":"js","path":"element/element-min.js","requires":["dom","event"],"optional":["event-mouseenter","event-delegate"]},"element-delegate":{"type":"js","path":"element-delegate/element-delegate-min.js","requires":["element"]},"event":{"type":"js","path":"event/event-min.js","requires":["yahoo"]},"event-simulate":{"type":"js","path":"event-simulate/event-simulate-min.js","requires":["event"]},"event-delegate":{"type":"js","path":"event-delegate/event-delegate-min.js","requires":["event"],"optional":["selector"]},"event-mouseenter":{"type":"js","path":"event-mouseenter/event-mouseenter-min.js","requires":["dom","event"]},"fonts":{"type":"css","path":"fonts/fonts-min.css"},"get":{"type":"js","path":"get/get-min.js","requires":["yahoo"]},"grids":{"type":"css","path":"grids/grids-min.css","requires":["fonts"],"optional":["reset"]},"history":{"type":"js","path":"history/history-min.js","requires":["event"]},"imagecropper":{"type":"js","path":"imagecropper/imagecropper-min.js","requires":["dragdrop","element","resize"],"skinnable":true},"imageloader":{"type":"js","path":"imageloader/imageloader-min.js","requires":["event","dom"]},"json":{"type":"js","path":"json/json-min.js","requires":["yahoo"]},"layout":{"type":"js","path":"layout/layout-min.js","requires":["element"],"optional":["animation","dragdrop","resize","selector"],"skinnable":true},"logger":{"type":"js","path":"logger/logger-min.js","requires":["event","dom"],"optional":["dragdrop"],"skinnable":true},"menu":{"type":"js","path":"menu/menu-min.js","requires":["containercore"],"skinnable":true},"paginator":{"type":"js","path":"paginator/paginator-min.js","requires":["element"],"skinnable":true},"profiler":{"type":"js","path":"profiler/profiler-min.js","requires":["yahoo"]},"profilerviewer":{"type":"js","path":"profilerviewer/profilerviewer-min.js","requires":["profiler","yuiloader","element"],"skinnable":true},"progressbar":{"type":"js","path":"progressbar/progressbar-min.js","requires":["element"],"optional":["animation"],"skinnable":true},"reset":{"type":"css","path":"reset/reset-min.css"},"reset-fonts-grids":{"type":"css","path":"reset-fonts-grids/reset-fonts-grids.css","supersedes":["reset","fonts","grids","reset-fonts"],"rollup":4},"reset-fonts":{"type":"css","path":"reset-fonts/reset-fonts.css","supersedes":["reset","fonts"],"rollup":2},"resize":{"type":"js","path":"resize/resize-min.js","requires":["dragdrop","element"],"optional":["animation"],"skinnable":true},"selector":{"type":"js","path":"selector/selector-min.js","requires":["yahoo","dom"]},"simpleeditor":{"type":"js","path":"editor/simpleeditor-min.js","requires":["element"],"optional":["containercore","menu","button","animation","dragdrop"],"skinnable":true,"pkg":"editor"},"slider":{"type":"js","path":"slider/slider-min.js","requires":["dragdrop"],"optional":["animation"],"skinnable":true},"storage":{"type":"js","path":"storage/storage-min.js","requires":["yahoo","event","cookie"],"optional":["swfstore"]},"stylesheet":{"type":"js","path":"stylesheet/stylesheet-min.js","requires":["yahoo"]},"swf":{"type":"js","path":"swf/swf-min.js","requires":["element"],"supersedes":["swfdetect"]},"swfdetect":{"type":"js","path":"swfdetect/swfdetect-min.js","requires":["yahoo"]},"swfstore":{"type":"js","path":"swfstore/swfstore-min.js","requires":["element","cookie","swf"]},"tabview":{"type":"js","path":"tabview/tabview-min.js","requires":["element"],"optional":["connection"],"skinnable":true},"treeview":{"type":"js","path":"treeview/treeview-min.js","requires":["event","dom"],"optional":["json","animation","calendar"],"skinnable":true},"uploader":{"type":"js","path":"uploader/uploader-min.js","requires":["element"]},"utilities":{"type":"js","path":"utilities/utilities.js","supersedes":["yahoo","event","dragdrop","animation","dom","connection","element","yahoo-dom-event","get","yuiloader","yuiloader-dom-event"],"rollup":8},"yahoo":{"type":"js","path":"yahoo/yahoo-min.js"},"yahoo-dom-event":{"type":"js","path":"yahoo-dom-event/yahoo-dom-event.js","supersedes":["yahoo","event","dom"],"rollup":3},"yuiloader":{"type":"js","path":"yuiloader/yuiloader-min.js","supersedes":["yahoo","get"]},"yuiloader-dom-event":{"type":"js","path":"yuiloader-dom-event/yuiloader-dom-event.js","supersedes":["yahoo","dom","event","get","yuiloader","yahoo-dom-event"],"rollup":5},"yuitest":{"type":"js","path":"yuitest/yuitest-min.js","requires":["logger"],"optional":["event-simulate"],"skinnable":true}}},ObjectUtil:{appendArray:function(o,a){if(a){for(var i=0;
9
+ i<a.length;i=i+1){o[a[i]]=true;}}},keys:function(o,ordered){var a=[],i;for(i in o){if(lang.hasOwnProperty(o,i)){a.push(i);}}return a;}},ArrayUtil:{appendArray:function(a1,a2){Array.prototype.push.apply(a1,a2);},indexOf:function(a,val){for(var i=0;i<a.length;i=i+1){if(a[i]===val){return i;}}return -1;},toObject:function(a){var o={};for(var i=0;i<a.length;i=i+1){o[a[i]]=true;}return o;},uniq:function(a){return YUI.ObjectUtil.keys(YUI.ArrayUtil.toObject(a));}}};YAHOO.util.YUILoader=function(o){this._internalCallback=null;this._useYahooListener=false;this.onSuccess=null;this.onFailure=Y.log;this.onProgress=null;this.onTimeout=null;this.scope=this;this.data=null;this.insertBefore=null;this.charset=null;this.varName=null;this.base=YUI.info.base;this.comboBase=YUI.info.comboBase;this.combine=false;this.root=YUI.info.root;this.timeout=0;this.ignore=null;this.force=null;this.allowRollup=true;this.filter=null;this.required={};this.moduleInfo=lang.merge(YUI.info.moduleInfo);this.rollups=null;this.loadOptional=false;this.sorted=[];this.loaded={};this.dirty=true;this.inserted={};var self=this;env.listeners.push(function(m){if(self._useYahooListener){self.loadNext(m.name);}});this.skin=lang.merge(YUI.info.skin);this._config(o);};Y.util.YUILoader.prototype={FILTERS:{RAW:{"searchExp":"-min\\.js","replaceStr":".js"},DEBUG:{"searchExp":"-min\\.js","replaceStr":"-debug.js"}},SKIN_PREFIX:"skin-",_config:function(o){if(o){for(var i in o){if(lang.hasOwnProperty(o,i)){if(i=="require"){this.require(o[i]);}else{this[i]=o[i];}}}}var f=this.filter;if(lang.isString(f)){f=f.toUpperCase();if(f==="DEBUG"){this.require("logger");}if(!Y.widget.LogWriter){Y.widget.LogWriter=function(){return Y;};}this.filter=this.FILTERS[f];}},addModule:function(o){if(!o||!o.name||!o.type||(!o.path&&!o.fullpath)){return false;}o.ext=("ext" in o)?o.ext:true;o.requires=o.requires||[];this.moduleInfo[o.name]=o;this.dirty=true;return true;},require:function(what){var a=(typeof what==="string")?arguments:what;this.dirty=true;YUI.ObjectUtil.appendArray(this.required,a);},_addSkin:function(skin,mod){var name=this.formatSkin(skin),info=this.moduleInfo,sinf=this.skin,ext=info[mod]&&info[mod].ext;if(!info[name]){this.addModule({"name":name,"type":"css","path":sinf.base+skin+"/"+sinf.path,"after":sinf.after,"rollup":sinf.rollup,"ext":ext});}if(mod){name=this.formatSkin(skin,mod);if(!info[name]){var mdef=info[mod],pkg=mdef.pkg||mod;this.addModule({"name":name,"type":"css","after":sinf.after,"path":pkg+"/"+sinf.base+skin+"/"+mod+".css","ext":ext});}}return name;},getRequires:function(mod){if(!mod){return[];}if(!this.dirty&&mod.expanded){return mod.expanded;}mod.requires=mod.requires||[];var i,d=[],r=mod.requires,o=mod.optional,info=this.moduleInfo,m;for(i=0;i<r.length;i=i+1){d.push(r[i]);m=info[r[i]];YUI.ArrayUtil.appendArray(d,this.getRequires(m));}if(o&&this.loadOptional){for(i=0;i<o.length;i=i+1){d.push(o[i]);YUI.ArrayUtil.appendArray(d,this.getRequires(info[o[i]]));}}mod.expanded=YUI.ArrayUtil.uniq(d);return mod.expanded;},getProvides:function(name,notMe){var addMe=!(notMe),ckey=(addMe)?PROV:SUPER,m=this.moduleInfo[name],o={};if(!m){return o;}if(m[ckey]){return m[ckey];}var s=m.supersedes,done={},me=this;var add=function(mm){if(!done[mm]){done[mm]=true;lang.augmentObject(o,me.getProvides(mm));}};if(s){for(var i=0;i<s.length;i=i+1){add(s[i]);}}m[SUPER]=o;m[PROV]=lang.merge(o);m[PROV][name]=true;return m[ckey];},calculate:function(o){if(o||this.dirty){this._config(o);this._setup();this._explode();if(this.allowRollup){this._rollup();}this._reduce();this._sort();this.dirty=false;}},_setup:function(){var info=this.moduleInfo,name,i,j;for(name in info){if(lang.hasOwnProperty(info,name)){var m=info[name];if(m&&m.skinnable){var o=this.skin.overrides,smod;if(o&&o[name]){for(i=0;i<o[name].length;i=i+1){smod=this._addSkin(o[name][i],name);}}else{smod=this._addSkin(this.skin.defaultSkin,name);}m.requires.push(smod);}}}var l=lang.merge(this.inserted);if(!this._sandbox){l=lang.merge(l,env.modules);}if(this.ignore){YUI.ObjectUtil.appendArray(l,this.ignore);}if(this.force){for(i=0;i<this.force.length;i=i+1){if(this.force[i] in l){delete l[this.force[i]];}}}for(j in l){if(lang.hasOwnProperty(l,j)){lang.augmentObject(l,this.getProvides(j));}}this.loaded=l;},_explode:function(){var r=this.required,i,mod;for(i in r){if(lang.hasOwnProperty(r,i)){mod=this.moduleInfo[i];if(mod){var req=this.getRequires(mod);if(req){YUI.ObjectUtil.appendArray(r,req);}}}}},_skin:function(){},formatSkin:function(skin,mod){var s=this.SKIN_PREFIX+skin;if(mod){s=s+"-"+mod;}return s;},parseSkin:function(mod){if(mod.indexOf(this.SKIN_PREFIX)===0){var a=mod.split("-");return{skin:a[1],module:a[2]};}return null;},_rollup:function(){var i,j,m,s,rollups={},r=this.required,roll,info=this.moduleInfo;if(this.dirty||!this.rollups){for(i in info){if(lang.hasOwnProperty(info,i)){m=info[i];if(m&&m.rollup){rollups[i]=m;}}}this.rollups=rollups;}for(;;){var rolled=false;for(i in rollups){if(!r[i]&&!this.loaded[i]){m=info[i];s=m.supersedes;roll=false;if(!m.rollup){continue;}var skin=(m.ext)?false:this.parseSkin(i),c=0;if(skin){for(j in r){if(lang.hasOwnProperty(r,j)){if(i!==j&&this.parseSkin(j)){c++;roll=(c>=m.rollup);if(roll){break;}}}}}else{for(j=0;j<s.length;j=j+1){if(this.loaded[s[j]]&&(!YUI.dupsAllowed[s[j]])){roll=false;break;}else{if(r[s[j]]){c++;roll=(c>=m.rollup);if(roll){break;}}}}}if(roll){r[i]=true;rolled=true;this.getRequires(m);}}}if(!rolled){break;}}},_reduce:function(){var i,j,s,m,r=this.required;for(i in r){if(i in this.loaded){delete r[i];}else{var skinDef=this.parseSkin(i);if(skinDef){if(!skinDef.module){var skin_pre=this.SKIN_PREFIX+skinDef.skin;for(j in r){if(lang.hasOwnProperty(r,j)){m=this.moduleInfo[j];var ext=m&&m.ext;if(!ext&&j!==i&&j.indexOf(skin_pre)>-1){delete r[j];}}}}}else{m=this.moduleInfo[i];s=m&&m.supersedes;if(s){for(j=0;j<s.length;j=j+1){if(s[j] in r){delete r[s[j]];}}}}}}},_onFailure:function(msg){YAHOO.log("Failure","info","loader");var f=this.onFailure;if(f){f.call(this.scope,{msg:"failure: "+msg,data:this.data,success:false});
10
+ }},_onTimeout:function(){YAHOO.log("Timeout","info","loader");var f=this.onTimeout;if(f){f.call(this.scope,{msg:"timeout",data:this.data,success:false});}},_sort:function(){var s=[],info=this.moduleInfo,loaded=this.loaded,checkOptional=!this.loadOptional,me=this;var requires=function(aa,bb){var mm=info[aa];if(loaded[bb]||!mm){return false;}var ii,rr=mm.expanded,after=mm.after,other=info[bb],optional=mm.optional;if(rr&&YUI.ArrayUtil.indexOf(rr,bb)>-1){return true;}if(after&&YUI.ArrayUtil.indexOf(after,bb)>-1){return true;}if(checkOptional&&optional&&YUI.ArrayUtil.indexOf(optional,bb)>-1){return true;}var ss=info[bb]&&info[bb].supersedes;if(ss){for(ii=0;ii<ss.length;ii=ii+1){if(requires(aa,ss[ii])){return true;}}}if(mm.ext&&mm.type=="css"&&!other.ext&&other.type=="css"){return true;}return false;};for(var i in this.required){if(lang.hasOwnProperty(this.required,i)){s.push(i);}}var p=0;for(;;){var l=s.length,a,b,j,k,moved=false;for(j=p;j<l;j=j+1){a=s[j];for(k=j+1;k<l;k=k+1){if(requires(a,s[k])){b=s.splice(k,1);s.splice(j,0,b[0]);moved=true;break;}}if(moved){break;}else{p=p+1;}}if(!moved){break;}}this.sorted=s;},toString:function(){var o={type:"YUILoader",base:this.base,filter:this.filter,required:this.required,loaded:this.loaded,inserted:this.inserted};lang.dump(o,1);},_combine:function(){this._combining=[];var self=this,s=this.sorted,len=s.length,js=this.comboBase,css=this.comboBase,target,startLen=js.length,i,m,type=this.loadType;YAHOO.log("type "+type);for(i=0;i<len;i=i+1){m=this.moduleInfo[s[i]];if(m&&!m.ext&&(!type||type===m.type)){target=this.root+m.path;target+="&";if(m.type=="js"){js+=target;}else{css+=target;}this._combining.push(s[i]);}}if(this._combining.length){YAHOO.log("Attempting to combine: "+this._combining,"info","loader");var callback=function(o){var c=this._combining,len=c.length,i,m;for(i=0;i<len;i=i+1){this.inserted[c[i]]=true;}this.loadNext(o.data);},loadScript=function(){if(js.length>startLen){YAHOO.util.Get.script(self._filter(js),{data:self._loading,onSuccess:callback,onFailure:self._onFailure,onTimeout:self._onTimeout,insertBefore:self.insertBefore,charset:self.charset,timeout:self.timeout,scope:self});}};if(css.length>startLen){YAHOO.util.Get.css(this._filter(css),{data:this._loading,onSuccess:loadScript,onFailure:this._onFailure,onTimeout:this._onTimeout,insertBefore:this.insertBefore,charset:this.charset,timeout:this.timeout,scope:self});}else{loadScript();}return;}else{this.loadNext(this._loading);}},insert:function(o,type){this.calculate(o);this._loading=true;this.loadType=type;if(this.combine){return this._combine();}if(!type){var self=this;this._internalCallback=function(){self._internalCallback=null;self.insert(null,"js");};this.insert(null,"css");return;}this.loadNext();},sandbox:function(o,type){this._config(o);if(!this.onSuccess){throw new Error("You must supply an onSuccess handler for your sandbox");}this._sandbox=true;var self=this;if(!type||type!=="js"){this._internalCallback=function(){self._internalCallback=null;self.sandbox(null,"js");};this.insert(null,"css");return;}if(!util.Connect){var ld=new YAHOO.util.YUILoader();ld.insert({base:this.base,filter:this.filter,require:"connection",insertBefore:this.insertBefore,charset:this.charset,onSuccess:function(){this.sandbox(null,"js");},scope:this},"js");return;}this._scriptText=[];this._loadCount=0;this._stopCount=this.sorted.length;this._xhr=[];this.calculate();var s=this.sorted,l=s.length,i,m,url;for(i=0;i<l;i=i+1){m=this.moduleInfo[s[i]];if(!m){this._onFailure("undefined module "+m);for(var j=0;j<this._xhr.length;j=j+1){this._xhr[j].abort();}return;}if(m.type!=="js"){this._loadCount++;continue;}url=m.fullpath;url=(url)?this._filter(url):this._url(m.path);var xhrData={success:function(o){var idx=o.argument[0],name=o.argument[2];this._scriptText[idx]=o.responseText;if(this.onProgress){this.onProgress.call(this.scope,{name:name,scriptText:o.responseText,xhrResponse:o,data:this.data});}this._loadCount++;if(this._loadCount>=this._stopCount){var v=this.varName||"YAHOO";var t="(function() {\n";var b="\nreturn "+v+";\n})();";var ref=eval(t+this._scriptText.join("\n")+b);this._pushEvents(ref);if(ref){this.onSuccess.call(this.scope,{reference:ref,data:this.data});}else{this._onFailure.call(this.varName+" reference failure");}}},failure:function(o){this.onFailure.call(this.scope,{msg:"XHR failure",xhrResponse:o,data:this.data});},scope:this,argument:[i,url,s[i]]};this._xhr.push(util.Connect.asyncRequest("GET",url,xhrData));}},loadNext:function(mname){if(!this._loading){return;}if(mname){if(mname!==this._loading){return;}this.inserted[mname]=true;if(this.onProgress){this.onProgress.call(this.scope,{name:mname,data:this.data});}}var s=this.sorted,len=s.length,i,m;for(i=0;i<len;i=i+1){if(s[i] in this.inserted){continue;}if(s[i]===this._loading){return;}m=this.moduleInfo[s[i]];if(!m){this.onFailure.call(this.scope,{msg:"undefined module "+m,data:this.data});return;}if(!this.loadType||this.loadType===m.type){this._loading=s[i];var fn=(m.type==="css")?util.Get.css:util.Get.script,url=m.fullpath,self=this,c=function(o){self.loadNext(o.data);};url=(url)?this._filter(url):this._url(m.path);if(env.ua.webkit&&env.ua.webkit<420&&m.type==="js"&&!m.varName){c=null;this._useYahooListener=true;}fn(url,{data:s[i],onSuccess:c,onFailure:this._onFailure,onTimeout:this._onTimeout,insertBefore:this.insertBefore,charset:this.charset,timeout:this.timeout,varName:m.varName,scope:self});return;}}this._loading=null;if(this._internalCallback){var f=this._internalCallback;this._internalCallback=null;f.call(this);}else{if(this.onSuccess){this._pushEvents();this.onSuccess.call(this.scope,{data:this.data});}}},_pushEvents:function(ref){var r=ref||YAHOO;if(r.util&&r.util.Event){r.util.Event._load();}},_filter:function(str){var f=this.filter;return(f)?str.replace(new RegExp(f.searchExp,"g"),f.replaceStr):str;},_url:function(path){return this._filter((this.base||"")+path);}};})();YAHOO.register("yuiloader",YAHOO.util.YUILoader,{version:"2.8.1",build:"19"});
11
+ (function(){YAHOO.env._id_counter=YAHOO.env._id_counter||0;var E=YAHOO.util,L=YAHOO.lang,m=YAHOO.env.ua,A=YAHOO.lang.trim,d={},h={},N=/^t(?:able|d|h)$/i,X=/color$/i,K=window.document,W=K.documentElement,e="ownerDocument",n="defaultView",v="documentElement",t="compatMode",b="offsetLeft",P="offsetTop",u="offsetParent",Z="parentNode",l="nodeType",C="tagName",O="scrollLeft",i="scrollTop",Q="getBoundingClientRect",w="getComputedStyle",a="currentStyle",M="CSS1Compat",c="BackCompat",g="class",F="className",J="",B=" ",s="(?:^|\\s)",k="(?= |$)",U="g",p="position",f="fixed",V="relative",j="left",o="top",r="medium",q="borderLeftWidth",R="borderTopWidth",D=m.opera,I=m.webkit,H=m.gecko,T=m.ie;E.Dom={CUSTOM_ATTRIBUTES:(!W.hasAttribute)?{"for":"htmlFor","class":F}:{"htmlFor":"for","className":g},DOT_ATTRIBUTES:{},get:function(z){var AB,x,AA,y,Y,G;if(z){if(z[l]||z.item){return z;}if(typeof z==="string"){AB=z;z=K.getElementById(z);G=(z)?z.attributes:null;if(z&&G&&G.id&&G.id.value===AB){return z;}else{if(z&&K.all){z=null;x=K.all[AB];for(y=0,Y=x.length;y<Y;++y){if(x[y].id===AB){return x[y];}}}}return z;}if(YAHOO.util.Element&&z instanceof YAHOO.util.Element){z=z.get("element");}if("length" in z){AA=[];for(y=0,Y=z.length;y<Y;++y){AA[AA.length]=E.Dom.get(z[y]);}return AA;}return z;}return null;},getComputedStyle:function(G,Y){if(window[w]){return G[e][n][w](G,null)[Y];}else{if(G[a]){return E.Dom.IE_ComputedStyle.get(G,Y);}}},getStyle:function(G,Y){return E.Dom.batch(G,E.Dom._getStyle,Y);},_getStyle:function(){if(window[w]){return function(G,y){y=(y==="float")?y="cssFloat":E.Dom._toCamel(y);var x=G.style[y],Y;if(!x){Y=G[e][n][w](G,null);if(Y){x=Y[y];}}return x;};}else{if(W[a]){return function(G,y){var x;switch(y){case"opacity":x=100;try{x=G.filters["DXImageTransform.Microsoft.Alpha"].opacity;}catch(z){try{x=G.filters("alpha").opacity;}catch(Y){}}return x/100;case"float":y="styleFloat";default:y=E.Dom._toCamel(y);x=G[a]?G[a][y]:null;return(G.style[y]||x);}};}}}(),setStyle:function(G,Y,x){E.Dom.batch(G,E.Dom._setStyle,{prop:Y,val:x});},_setStyle:function(){if(T){return function(Y,G){var x=E.Dom._toCamel(G.prop),y=G.val;if(Y){switch(x){case"opacity":if(L.isString(Y.style.filter)){Y.style.filter="alpha(opacity="+y*100+")";if(!Y[a]||!Y[a].hasLayout){Y.style.zoom=1;}}break;case"float":x="styleFloat";default:Y.style[x]=y;}}else{}};}else{return function(Y,G){var x=E.Dom._toCamel(G.prop),y=G.val;if(Y){if(x=="float"){x="cssFloat";}Y.style[x]=y;}else{}};}}(),getXY:function(G){return E.Dom.batch(G,E.Dom._getXY);},_canPosition:function(G){return(E.Dom._getStyle(G,"display")!=="none"&&E.Dom._inDoc(G));},_getXY:function(){if(K[v][Q]){return function(y){var z,Y,AA,AF,AE,AD,AC,G,x,AB=Math.floor,AG=false;if(E.Dom._canPosition(y)){AA=y[Q]();AF=y[e];z=E.Dom.getDocumentScrollLeft(AF);Y=E.Dom.getDocumentScrollTop(AF);AG=[AB(AA[j]),AB(AA[o])];if(T&&m.ie<8){AE=2;AD=2;AC=AF[t];if(m.ie===6){if(AC!==c){AE=0;AD=0;}}if((AC===c)){G=S(AF[v],q);x=S(AF[v],R);if(G!==r){AE=parseInt(G,10);}if(x!==r){AD=parseInt(x,10);}}AG[0]-=AE;AG[1]-=AD;}if((Y||z)){AG[0]+=z;AG[1]+=Y;}AG[0]=AB(AG[0]);AG[1]=AB(AG[1]);}else{}return AG;};}else{return function(y){var x,Y,AA,AB,AC,z=false,G=y;if(E.Dom._canPosition(y)){z=[y[b],y[P]];x=E.Dom.getDocumentScrollLeft(y[e]);Y=E.Dom.getDocumentScrollTop(y[e]);AC=((H||m.webkit>519)?true:false);while((G=G[u])){z[0]+=G[b];z[1]+=G[P];if(AC){z=E.Dom._calcBorders(G,z);}}if(E.Dom._getStyle(y,p)!==f){G=y;while((G=G[Z])&&G[C]){AA=G[i];AB=G[O];if(H&&(E.Dom._getStyle(G,"overflow")!=="visible")){z=E.Dom._calcBorders(G,z);}if(AA||AB){z[0]-=AB;z[1]-=AA;}}z[0]+=x;z[1]+=Y;}else{if(D){z[0]-=x;z[1]-=Y;}else{if(I||H){z[0]+=x;z[1]+=Y;}}}z[0]=Math.floor(z[0]);z[1]=Math.floor(z[1]);}else{}return z;};}}(),getX:function(G){var Y=function(x){return E.Dom.getXY(x)[0];};return E.Dom.batch(G,Y,E.Dom,true);},getY:function(G){var Y=function(x){return E.Dom.getXY(x)[1];};return E.Dom.batch(G,Y,E.Dom,true);},setXY:function(G,x,Y){E.Dom.batch(G,E.Dom._setXY,{pos:x,noRetry:Y});},_setXY:function(G,z){var AA=E.Dom._getStyle(G,p),y=E.Dom.setStyle,AD=z.pos,Y=z.noRetry,AB=[parseInt(E.Dom.getComputedStyle(G,j),10),parseInt(E.Dom.getComputedStyle(G,o),10)],AC,x;if(AA=="static"){AA=V;y(G,p,AA);}AC=E.Dom._getXY(G);if(!AD||AC===false){return false;}if(isNaN(AB[0])){AB[0]=(AA==V)?0:G[b];}if(isNaN(AB[1])){AB[1]=(AA==V)?0:G[P];}if(AD[0]!==null){y(G,j,AD[0]-AC[0]+AB[0]+"px");}if(AD[1]!==null){y(G,o,AD[1]-AC[1]+AB[1]+"px");}if(!Y){x=E.Dom._getXY(G);if((AD[0]!==null&&x[0]!=AD[0])||(AD[1]!==null&&x[1]!=AD[1])){E.Dom._setXY(G,{pos:AD,noRetry:true});}}},setX:function(Y,G){E.Dom.setXY(Y,[G,null]);},setY:function(G,Y){E.Dom.setXY(G,[null,Y]);},getRegion:function(G){var Y=function(x){var y=false;if(E.Dom._canPosition(x)){y=E.Region.getRegion(x);}else{}return y;};return E.Dom.batch(G,Y,E.Dom,true);},getClientWidth:function(){return E.Dom.getViewportWidth();},getClientHeight:function(){return E.Dom.getViewportHeight();},getElementsByClassName:function(AB,AF,AC,AE,x,AD){AF=AF||"*";AC=(AC)?E.Dom.get(AC):null||K;if(!AC){return[];}var Y=[],G=AC.getElementsByTagName(AF),z=E.Dom.hasClass;for(var y=0,AA=G.length;y<AA;++y){if(z(G[y],AB)){Y[Y.length]=G[y];}}if(AE){E.Dom.batch(Y,AE,x,AD);}return Y;},hasClass:function(Y,G){return E.Dom.batch(Y,E.Dom._hasClass,G);},_hasClass:function(x,Y){var G=false,y;if(x&&Y){y=E.Dom._getAttribute(x,F)||J;if(Y.exec){G=Y.test(y);}else{G=Y&&(B+y+B).indexOf(B+Y+B)>-1;}}else{}return G;},addClass:function(Y,G){return E.Dom.batch(Y,E.Dom._addClass,G);},_addClass:function(x,Y){var G=false,y;if(x&&Y){y=E.Dom._getAttribute(x,F)||J;if(!E.Dom._hasClass(x,Y)){E.Dom.setAttribute(x,F,A(y+B+Y));G=true;}}else{}return G;},removeClass:function(Y,G){return E.Dom.batch(Y,E.Dom._removeClass,G);},_removeClass:function(y,x){var Y=false,AA,z,G;if(y&&x){AA=E.Dom._getAttribute(y,F)||J;E.Dom.setAttribute(y,F,AA.replace(E.Dom._getClassRegex(x),J));z=E.Dom._getAttribute(y,F);if(AA!==z){E.Dom.setAttribute(y,F,A(z));Y=true;if(E.Dom._getAttribute(y,F)===""){G=(y.hasAttribute&&y.hasAttribute(g))?g:F;
12
+ y.removeAttribute(G);}}}else{}return Y;},replaceClass:function(x,Y,G){return E.Dom.batch(x,E.Dom._replaceClass,{from:Y,to:G});},_replaceClass:function(y,x){var Y,AB,AA,G=false,z;if(y&&x){AB=x.from;AA=x.to;if(!AA){G=false;}else{if(!AB){G=E.Dom._addClass(y,x.to);}else{if(AB!==AA){z=E.Dom._getAttribute(y,F)||J;Y=(B+z.replace(E.Dom._getClassRegex(AB),B+AA)).split(E.Dom._getClassRegex(AA));Y.splice(1,0,B+AA);E.Dom.setAttribute(y,F,A(Y.join(J)));G=true;}}}}else{}return G;},generateId:function(G,x){x=x||"yui-gen";var Y=function(y){if(y&&y.id){return y.id;}var z=x+YAHOO.env._id_counter++;if(y){if(y[e]&&y[e].getElementById(z)){return E.Dom.generateId(y,z+x);}y.id=z;}return z;};return E.Dom.batch(G,Y,E.Dom,true)||Y.apply(E.Dom,arguments);},isAncestor:function(Y,x){Y=E.Dom.get(Y);x=E.Dom.get(x);var G=false;if((Y&&x)&&(Y[l]&&x[l])){if(Y.contains&&Y!==x){G=Y.contains(x);}else{if(Y.compareDocumentPosition){G=!!(Y.compareDocumentPosition(x)&16);}}}else{}return G;},inDocument:function(G,Y){return E.Dom._inDoc(E.Dom.get(G),Y);},_inDoc:function(Y,x){var G=false;if(Y&&Y[C]){x=x||Y[e];G=E.Dom.isAncestor(x[v],Y);}else{}return G;},getElementsBy:function(Y,AF,AB,AD,y,AC,AE){AF=AF||"*";AB=(AB)?E.Dom.get(AB):null||K;if(!AB){return[];}var x=[],G=AB.getElementsByTagName(AF);for(var z=0,AA=G.length;z<AA;++z){if(Y(G[z])){if(AE){x=G[z];break;}else{x[x.length]=G[z];}}}if(AD){E.Dom.batch(x,AD,y,AC);}return x;},getElementBy:function(x,G,Y){return E.Dom.getElementsBy(x,G,Y,null,null,null,true);},batch:function(x,AB,AA,z){var y=[],Y=(z)?AA:window;x=(x&&(x[C]||x.item))?x:E.Dom.get(x);if(x&&AB){if(x[C]||x.length===undefined){return AB.call(Y,x,AA);}for(var G=0;G<x.length;++G){y[y.length]=AB.call(Y,x[G],AA);}}else{return false;}return y;},getDocumentHeight:function(){var Y=(K[t]!=M||I)?K.body.scrollHeight:W.scrollHeight,G=Math.max(Y,E.Dom.getViewportHeight());return G;},getDocumentWidth:function(){var Y=(K[t]!=M||I)?K.body.scrollWidth:W.scrollWidth,G=Math.max(Y,E.Dom.getViewportWidth());return G;},getViewportHeight:function(){var G=self.innerHeight,Y=K[t];if((Y||T)&&!D){G=(Y==M)?W.clientHeight:K.body.clientHeight;}return G;},getViewportWidth:function(){var G=self.innerWidth,Y=K[t];if(Y||T){G=(Y==M)?W.clientWidth:K.body.clientWidth;}return G;},getAncestorBy:function(G,Y){while((G=G[Z])){if(E.Dom._testElement(G,Y)){return G;}}return null;},getAncestorByClassName:function(Y,G){Y=E.Dom.get(Y);if(!Y){return null;}var x=function(y){return E.Dom.hasClass(y,G);};return E.Dom.getAncestorBy(Y,x);},getAncestorByTagName:function(Y,G){Y=E.Dom.get(Y);if(!Y){return null;}var x=function(y){return y[C]&&y[C].toUpperCase()==G.toUpperCase();};return E.Dom.getAncestorBy(Y,x);},getPreviousSiblingBy:function(G,Y){while(G){G=G.previousSibling;if(E.Dom._testElement(G,Y)){return G;}}return null;},getPreviousSibling:function(G){G=E.Dom.get(G);if(!G){return null;}return E.Dom.getPreviousSiblingBy(G);},getNextSiblingBy:function(G,Y){while(G){G=G.nextSibling;if(E.Dom._testElement(G,Y)){return G;}}return null;},getNextSibling:function(G){G=E.Dom.get(G);if(!G){return null;}return E.Dom.getNextSiblingBy(G);},getFirstChildBy:function(G,x){var Y=(E.Dom._testElement(G.firstChild,x))?G.firstChild:null;return Y||E.Dom.getNextSiblingBy(G.firstChild,x);},getFirstChild:function(G,Y){G=E.Dom.get(G);if(!G){return null;}return E.Dom.getFirstChildBy(G);},getLastChildBy:function(G,x){if(!G){return null;}var Y=(E.Dom._testElement(G.lastChild,x))?G.lastChild:null;return Y||E.Dom.getPreviousSiblingBy(G.lastChild,x);},getLastChild:function(G){G=E.Dom.get(G);return E.Dom.getLastChildBy(G);},getChildrenBy:function(Y,y){var x=E.Dom.getFirstChildBy(Y,y),G=x?[x]:[];E.Dom.getNextSiblingBy(x,function(z){if(!y||y(z)){G[G.length]=z;}return false;});return G;},getChildren:function(G){G=E.Dom.get(G);if(!G){}return E.Dom.getChildrenBy(G);},getDocumentScrollLeft:function(G){G=G||K;return Math.max(G[v].scrollLeft,G.body.scrollLeft);},getDocumentScrollTop:function(G){G=G||K;return Math.max(G[v].scrollTop,G.body.scrollTop);},insertBefore:function(Y,G){Y=E.Dom.get(Y);G=E.Dom.get(G);if(!Y||!G||!G[Z]){return null;}return G[Z].insertBefore(Y,G);},insertAfter:function(Y,G){Y=E.Dom.get(Y);G=E.Dom.get(G);if(!Y||!G||!G[Z]){return null;}if(G.nextSibling){return G[Z].insertBefore(Y,G.nextSibling);}else{return G[Z].appendChild(Y);}},getClientRegion:function(){var x=E.Dom.getDocumentScrollTop(),Y=E.Dom.getDocumentScrollLeft(),y=E.Dom.getViewportWidth()+Y,G=E.Dom.getViewportHeight()+x;return new E.Region(x,y,G,Y);},setAttribute:function(Y,G,x){E.Dom.batch(Y,E.Dom._setAttribute,{attr:G,val:x});},_setAttribute:function(x,Y){var G=E.Dom._toCamel(Y.attr),y=Y.val;if(x&&x.setAttribute){if(E.Dom.DOT_ATTRIBUTES[G]){x[G]=y;}else{G=E.Dom.CUSTOM_ATTRIBUTES[G]||G;x.setAttribute(G,y);}}else{}},getAttribute:function(Y,G){return E.Dom.batch(Y,E.Dom._getAttribute,G);},_getAttribute:function(Y,G){var x;G=E.Dom.CUSTOM_ATTRIBUTES[G]||G;if(Y&&Y.getAttribute){x=Y.getAttribute(G,2);}else{}return x;},_toCamel:function(Y){var x=d;function G(y,z){return z.toUpperCase();}return x[Y]||(x[Y]=Y.indexOf("-")===-1?Y:Y.replace(/-([a-z])/gi,G));},_getClassRegex:function(Y){var G;if(Y!==undefined){if(Y.exec){G=Y;}else{G=h[Y];if(!G){Y=Y.replace(E.Dom._patterns.CLASS_RE_TOKENS,"\\$1");G=h[Y]=new RegExp(s+Y+k,U);}}}return G;},_patterns:{ROOT_TAG:/^body|html$/i,CLASS_RE_TOKENS:/([\.\(\)\^\$\*\+\?\|\[\]\{\}\\])/g},_testElement:function(G,Y){return G&&G[l]==1&&(!Y||Y(G));},_calcBorders:function(x,y){var Y=parseInt(E.Dom[w](x,R),10)||0,G=parseInt(E.Dom[w](x,q),10)||0;if(H){if(N.test(x[C])){Y=0;G=0;}}y[0]+=G;y[1]+=Y;return y;}};var S=E.Dom[w];if(m.opera){E.Dom[w]=function(Y,G){var x=S(Y,G);if(X.test(G)){x=E.Dom.Color.toRGB(x);}return x;};}if(m.webkit){E.Dom[w]=function(Y,G){var x=S(Y,G);if(x==="rgba(0, 0, 0, 0)"){x="transparent";}return x;};}if(m.ie&&m.ie>=8&&K.documentElement.hasAttribute){E.Dom.DOT_ATTRIBUTES.type=true;}})();YAHOO.util.Region=function(C,D,A,B){this.top=C;this.y=C;this[1]=C;this.right=D;this.bottom=A;this.left=B;this.x=B;this[0]=B;
13
+ this.width=this.right-this.left;this.height=this.bottom-this.top;};YAHOO.util.Region.prototype.contains=function(A){return(A.left>=this.left&&A.right<=this.right&&A.top>=this.top&&A.bottom<=this.bottom);};YAHOO.util.Region.prototype.getArea=function(){return((this.bottom-this.top)*(this.right-this.left));};YAHOO.util.Region.prototype.intersect=function(E){var C=Math.max(this.top,E.top),D=Math.min(this.right,E.right),A=Math.min(this.bottom,E.bottom),B=Math.max(this.left,E.left);if(A>=C&&D>=B){return new YAHOO.util.Region(C,D,A,B);}else{return null;}};YAHOO.util.Region.prototype.union=function(E){var C=Math.min(this.top,E.top),D=Math.max(this.right,E.right),A=Math.max(this.bottom,E.bottom),B=Math.min(this.left,E.left);return new YAHOO.util.Region(C,D,A,B);};YAHOO.util.Region.prototype.toString=function(){return("Region {"+"top: "+this.top+", right: "+this.right+", bottom: "+this.bottom+", left: "+this.left+", height: "+this.height+", width: "+this.width+"}");};YAHOO.util.Region.getRegion=function(D){var F=YAHOO.util.Dom.getXY(D),C=F[1],E=F[0]+D.offsetWidth,A=F[1]+D.offsetHeight,B=F[0];return new YAHOO.util.Region(C,E,A,B);};YAHOO.util.Point=function(A,B){if(YAHOO.lang.isArray(A)){B=A[1];A=A[0];}YAHOO.util.Point.superclass.constructor.call(this,B,A,B,A);};YAHOO.extend(YAHOO.util.Point,YAHOO.util.Region);(function(){var B=YAHOO.util,A="clientTop",F="clientLeft",J="parentNode",K="right",W="hasLayout",I="px",U="opacity",L="auto",D="borderLeftWidth",G="borderTopWidth",P="borderRightWidth",V="borderBottomWidth",S="visible",Q="transparent",N="height",E="width",H="style",T="currentStyle",R=/^width|height$/,O=/^(\d[.\d]*)+(em|ex|px|gd|rem|vw|vh|vm|ch|mm|cm|in|pt|pc|deg|rad|ms|s|hz|khz|%){1}?/i,M={get:function(X,Z){var Y="",a=X[T][Z];if(Z===U){Y=B.Dom.getStyle(X,U);}else{if(!a||(a.indexOf&&a.indexOf(I)>-1)){Y=a;}else{if(B.Dom.IE_COMPUTED[Z]){Y=B.Dom.IE_COMPUTED[Z](X,Z);}else{if(O.test(a)){Y=B.Dom.IE.ComputedStyle.getPixel(X,Z);}else{Y=a;}}}}return Y;},getOffset:function(Z,e){var b=Z[T][e],X=e.charAt(0).toUpperCase()+e.substr(1),c="offset"+X,Y="pixel"+X,a="",d;if(b==L){d=Z[c];if(d===undefined){a=0;}a=d;if(R.test(e)){Z[H][e]=d;if(Z[c]>d){a=d-(Z[c]-d);}Z[H][e]=L;}}else{if(!Z[H][Y]&&!Z[H][e]){Z[H][e]=b;}a=Z[H][Y];}return a+I;},getBorderWidth:function(X,Z){var Y=null;if(!X[T][W]){X[H].zoom=1;}switch(Z){case G:Y=X[A];break;case V:Y=X.offsetHeight-X.clientHeight-X[A];break;case D:Y=X[F];break;case P:Y=X.offsetWidth-X.clientWidth-X[F];break;}return Y+I;},getPixel:function(Y,X){var a=null,b=Y[T][K],Z=Y[T][X];Y[H][K]=Z;a=Y[H].pixelRight;Y[H][K]=b;return a+I;},getMargin:function(Y,X){var Z;if(Y[T][X]==L){Z=0+I;}else{Z=B.Dom.IE.ComputedStyle.getPixel(Y,X);}return Z;},getVisibility:function(Y,X){var Z;while((Z=Y[T])&&Z[X]=="inherit"){Y=Y[J];}return(Z)?Z[X]:S;},getColor:function(Y,X){return B.Dom.Color.toRGB(Y[T][X])||Q;},getBorderColor:function(Y,X){var Z=Y[T],a=Z[X]||Z.color;return B.Dom.Color.toRGB(B.Dom.Color.toHex(a));}},C={};C.top=C.right=C.bottom=C.left=C[E]=C[N]=M.getOffset;C.color=M.getColor;C[G]=C[P]=C[V]=C[D]=M.getBorderWidth;C.marginTop=C.marginRight=C.marginBottom=C.marginLeft=M.getMargin;C.visibility=M.getVisibility;C.borderColor=C.borderTopColor=C.borderRightColor=C.borderBottomColor=C.borderLeftColor=M.getBorderColor;B.Dom.IE_COMPUTED=C;B.Dom.IE_ComputedStyle=M;})();(function(){var C="toString",A=parseInt,B=RegExp,D=YAHOO.util;D.Dom.Color={KEYWORDS:{black:"000",silver:"c0c0c0",gray:"808080",white:"fff",maroon:"800000",red:"f00",purple:"800080",fuchsia:"f0f",green:"008000",lime:"0f0",olive:"808000",yellow:"ff0",navy:"000080",blue:"00f",teal:"008080",aqua:"0ff"},re_RGB:/^rgb\(([0-9]+)\s*,\s*([0-9]+)\s*,\s*([0-9]+)\)$/i,re_hex:/^#?([0-9A-F]{2})([0-9A-F]{2})([0-9A-F]{2})$/i,re_hex3:/([0-9A-F])/gi,toRGB:function(E){if(!D.Dom.Color.re_RGB.test(E)){E=D.Dom.Color.toHex(E);}if(D.Dom.Color.re_hex.exec(E)){E="rgb("+[A(B.$1,16),A(B.$2,16),A(B.$3,16)].join(", ")+")";}return E;},toHex:function(H){H=D.Dom.Color.KEYWORDS[H]||H;if(D.Dom.Color.re_RGB.exec(H)){var G=(B.$1.length===1)?"0"+B.$1:Number(B.$1),F=(B.$2.length===1)?"0"+B.$2:Number(B.$2),E=(B.$3.length===1)?"0"+B.$3:Number(B.$3);H=[G[C](16),F[C](16),E[C](16)].join("");}if(H.length<6){H=H.replace(D.Dom.Color.re_hex3,"$1$1");}if(H!=="transparent"&&H.indexOf("#")<0){H="#"+H;}return H.toLowerCase();}};}());YAHOO.register("dom",YAHOO.util.Dom,{version:"2.8.1",build:"19"});YAHOO.util.CustomEvent=function(D,C,B,A,E){this.type=D;this.scope=C||window;this.silent=B;this.fireOnce=E;this.fired=false;this.firedWith=null;this.signature=A||YAHOO.util.CustomEvent.LIST;this.subscribers=[];if(!this.silent){}var F="_YUICEOnSubscribe";if(D!==F){this.subscribeEvent=new YAHOO.util.CustomEvent(F,this,true);}this.lastError=null;};YAHOO.util.CustomEvent.LIST=0;YAHOO.util.CustomEvent.FLAT=1;YAHOO.util.CustomEvent.prototype={subscribe:function(B,C,D){if(!B){throw new Error("Invalid callback for subscriber to '"+this.type+"'");}if(this.subscribeEvent){this.subscribeEvent.fire(B,C,D);}var A=new YAHOO.util.Subscriber(B,C,D);if(this.fireOnce&&this.fired){this.notify(A,this.firedWith);}else{this.subscribers.push(A);}},unsubscribe:function(D,F){if(!D){return this.unsubscribeAll();}var E=false;for(var B=0,A=this.subscribers.length;B<A;++B){var C=this.subscribers[B];if(C&&C.contains(D,F)){this._delete(B);E=true;}}return E;},fire:function(){this.lastError=null;var H=[],A=this.subscribers.length;var D=[].slice.call(arguments,0),C=true,F,B=false;if(this.fireOnce){if(this.fired){return true;}else{this.firedWith=D;}}this.fired=true;if(!A&&this.silent){return true;}if(!this.silent){}var E=this.subscribers.slice();for(F=0;F<A;++F){var G=E[F];if(!G){B=true;}else{C=this.notify(G,D);if(false===C){if(!this.silent){}break;}}}return(C!==false);},notify:function(F,C){var B,H=null,E=F.getScope(this.scope),A=YAHOO.util.Event.throwErrors;if(!this.silent){}if(this.signature==YAHOO.util.CustomEvent.FLAT){if(C.length>0){H=C[0];}try{B=F.fn.call(E,H,F.obj);}catch(G){this.lastError=G;if(A){throw G;}}}else{try{B=F.fn.call(E,this.type,C,F.obj);}catch(D){this.lastError=D;if(A){throw D;}}}return B;},unsubscribeAll:function(){var A=this.subscribers.length,B;for(B=A-1;B>-1;B--){this._delete(B);}this.subscribers=[];return A;},_delete:function(A){var B=this.subscribers[A];if(B){delete B.fn;delete B.obj;}this.subscribers.splice(A,1);},toString:function(){return"CustomEvent: "+"'"+this.type+"', "+"context: "+this.scope;}};YAHOO.util.Subscriber=function(A,B,C){this.fn=A;this.obj=YAHOO.lang.isUndefined(B)?null:B;this.overrideContext=C;};YAHOO.util.Subscriber.prototype.getScope=function(A){if(this.overrideContext){if(this.overrideContext===true){return this.obj;}else{return this.overrideContext;}}return A;};YAHOO.util.Subscriber.prototype.contains=function(A,B){if(B){return(this.fn==A&&this.obj==B);}else{return(this.fn==A);}};YAHOO.util.Subscriber.prototype.toString=function(){return"Subscriber { obj: "+this.obj+", overrideContext: "+(this.overrideContext||"no")+" }";};if(!YAHOO.util.Event){YAHOO.util.Event=function(){var G=false,H=[],J=[],A=0,E=[],B=0,C={63232:38,63233:40,63234:37,63235:39,63276:33,63277:34,25:9},D=YAHOO.env.ua.ie,F="focusin",I="focusout";return{POLL_RETRYS:500,POLL_INTERVAL:40,EL:0,TYPE:1,FN:2,WFN:3,UNLOAD_OBJ:3,ADJ_SCOPE:4,OBJ:5,OVERRIDE:6,CAPTURE:7,lastError:null,isSafari:YAHOO.env.ua.webkit,webkit:YAHOO.env.ua.webkit,isIE:D,_interval:null,_dri:null,_specialTypes:{focusin:(D?"focusin":"focus"),focusout:(D?"focusout":"blur")},DOMReady:false,throwErrors:false,startInterval:function(){if(!this._interval){this._interval=YAHOO.lang.later(this.POLL_INTERVAL,this,this._tryPreloadAttach,null,true);}},onAvailable:function(Q,M,O,P,N){var K=(YAHOO.lang.isString(Q))?[Q]:Q;for(var L=0;L<K.length;L=L+1){E.push({id:K[L],fn:M,obj:O,overrideContext:P,checkReady:N});}A=this.POLL_RETRYS;this.startInterval();},onContentReady:function(N,K,L,M){this.onAvailable(N,K,L,M,true);},onDOMReady:function(){this.DOMReadyEvent.subscribe.apply(this.DOMReadyEvent,arguments);},_addListener:function(M,K,V,P,T,Y){if(!V||!V.call){return false;}if(this._isValidCollection(M)){var W=true;for(var Q=0,S=M.length;Q<S;++Q){W=this.on(M[Q],K,V,P,T)&&W;}return W;}else{if(YAHOO.lang.isString(M)){var O=this.getEl(M);if(O){M=O;}else{this.onAvailable(M,function(){YAHOO.util.Event._addListener(M,K,V,P,T,Y);});return true;}}}if(!M){return false;}if("unload"==K&&P!==this){J[J.length]=[M,K,V,P,T];return true;}var L=M;if(T){if(T===true){L=P;}else{L=T;}}var N=function(Z){return V.call(L,YAHOO.util.Event.getEvent(Z,M),P);};var X=[M,K,V,N,L,P,T,Y];var R=H.length;H[R]=X;try{this._simpleAdd(M,K,N,Y);}catch(U){this.lastError=U;this.removeListener(M,K,V);return false;}return true;},_getType:function(K){return this._specialTypes[K]||K;},addListener:function(M,P,L,N,O){var K=((P==F||P==I)&&!YAHOO.env.ua.ie)?true:false;return this._addListener(M,this._getType(P),L,N,O,K);},addFocusListener:function(L,K,M,N){return this.on(L,F,K,M,N);},removeFocusListener:function(L,K){return this.removeListener(L,F,K);},addBlurListener:function(L,K,M,N){return this.on(L,I,K,M,N);},removeBlurListener:function(L,K){return this.removeListener(L,I,K);},removeListener:function(L,K,R){var M,P,U;K=this._getType(K);if(typeof L=="string"){L=this.getEl(L);}else{if(this._isValidCollection(L)){var S=true;for(M=L.length-1;M>-1;M--){S=(this.removeListener(L[M],K,R)&&S);}return S;}}if(!R||!R.call){return this.purgeElement(L,false,K);}if("unload"==K){for(M=J.length-1;M>-1;M--){U=J[M];if(U&&U[0]==L&&U[1]==K&&U[2]==R){J.splice(M,1);return true;}}return false;}var N=null;var O=arguments[3];if("undefined"===typeof O){O=this._getCacheIndex(H,L,K,R);}if(O>=0){N=H[O];}if(!L||!N){return false;}var T=N[this.CAPTURE]===true?true:false;try{this._simpleRemove(L,K,N[this.WFN],T);}catch(Q){this.lastError=Q;return false;}delete H[O][this.WFN];delete H[O][this.FN];H.splice(O,1);return true;},getTarget:function(M,L){var K=M.target||M.srcElement;return this.resolveTextNode(K);},resolveTextNode:function(L){try{if(L&&3==L.nodeType){return L.parentNode;}}catch(K){}return L;},getPageX:function(L){var K=L.pageX;if(!K&&0!==K){K=L.clientX||0;if(this.isIE){K+=this._getScrollLeft();}}return K;},getPageY:function(K){var L=K.pageY;if(!L&&0!==L){L=K.clientY||0;if(this.isIE){L+=this._getScrollTop();}}return L;},getXY:function(K){return[this.getPageX(K),this.getPageY(K)];},getRelatedTarget:function(L){var K=L.relatedTarget;if(!K){if(L.type=="mouseout"){K=L.toElement;
14
+ }else{if(L.type=="mouseover"){K=L.fromElement;}}}return this.resolveTextNode(K);},getTime:function(M){if(!M.time){var L=new Date().getTime();try{M.time=L;}catch(K){this.lastError=K;return L;}}return M.time;},stopEvent:function(K){this.stopPropagation(K);this.preventDefault(K);},stopPropagation:function(K){if(K.stopPropagation){K.stopPropagation();}else{K.cancelBubble=true;}},preventDefault:function(K){if(K.preventDefault){K.preventDefault();}else{K.returnValue=false;}},getEvent:function(M,K){var L=M||window.event;if(!L){var N=this.getEvent.caller;while(N){L=N.arguments[0];if(L&&Event==L.constructor){break;}N=N.caller;}}return L;},getCharCode:function(L){var K=L.keyCode||L.charCode||0;if(YAHOO.env.ua.webkit&&(K in C)){K=C[K];}return K;},_getCacheIndex:function(M,P,Q,O){for(var N=0,L=M.length;N<L;N=N+1){var K=M[N];if(K&&K[this.FN]==O&&K[this.EL]==P&&K[this.TYPE]==Q){return N;}}return -1;},generateId:function(K){var L=K.id;if(!L){L="yuievtautoid-"+B;++B;K.id=L;}return L;},_isValidCollection:function(L){try{return(L&&typeof L!=="string"&&L.length&&!L.tagName&&!L.alert&&typeof L[0]!=="undefined");}catch(K){return false;}},elCache:{},getEl:function(K){return(typeof K==="string")?document.getElementById(K):K;},clearCache:function(){},DOMReadyEvent:new YAHOO.util.CustomEvent("DOMReady",YAHOO,0,0,1),_load:function(L){if(!G){G=true;var K=YAHOO.util.Event;K._ready();K._tryPreloadAttach();}},_ready:function(L){var K=YAHOO.util.Event;if(!K.DOMReady){K.DOMReady=true;K.DOMReadyEvent.fire();K._simpleRemove(document,"DOMContentLoaded",K._ready);}},_tryPreloadAttach:function(){if(E.length===0){A=0;if(this._interval){this._interval.cancel();this._interval=null;}return;}if(this.locked){return;}if(this.isIE){if(!this.DOMReady){this.startInterval();return;}}this.locked=true;var Q=!G;if(!Q){Q=(A>0&&E.length>0);}var P=[];var R=function(T,U){var S=T;if(U.overrideContext){if(U.overrideContext===true){S=U.obj;}else{S=U.overrideContext;}}U.fn.call(S,U.obj);};var L,K,O,N,M=[];for(L=0,K=E.length;L<K;L=L+1){O=E[L];if(O){N=this.getEl(O.id);if(N){if(O.checkReady){if(G||N.nextSibling||!Q){M.push(O);E[L]=null;}}else{R(N,O);E[L]=null;}}else{P.push(O);}}}for(L=0,K=M.length;L<K;L=L+1){O=M[L];R(this.getEl(O.id),O);}A--;if(Q){for(L=E.length-1;L>-1;L--){O=E[L];if(!O||!O.id){E.splice(L,1);}}this.startInterval();}else{if(this._interval){this._interval.cancel();this._interval=null;}}this.locked=false;},purgeElement:function(O,P,R){var M=(YAHOO.lang.isString(O))?this.getEl(O):O;var Q=this.getListeners(M,R),N,K;if(Q){for(N=Q.length-1;N>-1;N--){var L=Q[N];this.removeListener(M,L.type,L.fn);}}if(P&&M&&M.childNodes){for(N=0,K=M.childNodes.length;N<K;++N){this.purgeElement(M.childNodes[N],P,R);}}},getListeners:function(M,K){var P=[],L;if(!K){L=[H,J];}else{if(K==="unload"){L=[J];}else{K=this._getType(K);L=[H];}}var R=(YAHOO.lang.isString(M))?this.getEl(M):M;for(var O=0;O<L.length;O=O+1){var T=L[O];if(T){for(var Q=0,S=T.length;Q<S;++Q){var N=T[Q];if(N&&N[this.EL]===R&&(!K||K===N[this.TYPE])){P.push({type:N[this.TYPE],fn:N[this.FN],obj:N[this.OBJ],adjust:N[this.OVERRIDE],scope:N[this.ADJ_SCOPE],index:Q});}}}}return(P.length)?P:null;},_unload:function(R){var L=YAHOO.util.Event,O,N,M,Q,P,S=J.slice(),K;for(O=0,Q=J.length;O<Q;++O){M=S[O];if(M){K=window;if(M[L.ADJ_SCOPE]){if(M[L.ADJ_SCOPE]===true){K=M[L.UNLOAD_OBJ];}else{K=M[L.ADJ_SCOPE];}}M[L.FN].call(K,L.getEvent(R,M[L.EL]),M[L.UNLOAD_OBJ]);S[O]=null;}}M=null;K=null;J=null;if(H){for(N=H.length-1;N>-1;N--){M=H[N];if(M){L.removeListener(M[L.EL],M[L.TYPE],M[L.FN],N);}}M=null;}L._simpleRemove(window,"unload",L._unload);},_getScrollLeft:function(){return this._getScroll()[1];},_getScrollTop:function(){return this._getScroll()[0];},_getScroll:function(){var K=document.documentElement,L=document.body;if(K&&(K.scrollTop||K.scrollLeft)){return[K.scrollTop,K.scrollLeft];}else{if(L){return[L.scrollTop,L.scrollLeft];}else{return[0,0];}}},regCE:function(){},_simpleAdd:function(){if(window.addEventListener){return function(M,N,L,K){M.addEventListener(N,L,(K));};}else{if(window.attachEvent){return function(M,N,L,K){M.attachEvent("on"+N,L);};}else{return function(){};}}}(),_simpleRemove:function(){if(window.removeEventListener){return function(M,N,L,K){M.removeEventListener(N,L,(K));};}else{if(window.detachEvent){return function(L,M,K){L.detachEvent("on"+M,K);};}else{return function(){};}}}()};}();(function(){var EU=YAHOO.util.Event;EU.on=EU.addListener;EU.onFocus=EU.addFocusListener;EU.onBlur=EU.addBlurListener;
15
+ /* DOMReady: based on work by: Dean Edwards/John Resig/Matthias Miller/Diego Perini */
16
+ if(EU.isIE){if(self!==self.top){document.onreadystatechange=function(){if(document.readyState=="complete"){document.onreadystatechange=null;EU._ready();}};}else{YAHOO.util.Event.onDOMReady(YAHOO.util.Event._tryPreloadAttach,YAHOO.util.Event,true);var n=document.createElement("p");EU._dri=setInterval(function(){try{n.doScroll("left");clearInterval(EU._dri);EU._dri=null;EU._ready();n=null;}catch(ex){}},EU.POLL_INTERVAL);}}else{if(EU.webkit&&EU.webkit<525){EU._dri=setInterval(function(){var rs=document.readyState;if("loaded"==rs||"complete"==rs){clearInterval(EU._dri);EU._dri=null;EU._ready();}},EU.POLL_INTERVAL);}else{EU._simpleAdd(document,"DOMContentLoaded",EU._ready);}}EU._simpleAdd(window,"load",EU._load);EU._simpleAdd(window,"unload",EU._unload);EU._tryPreloadAttach();})();}YAHOO.util.EventProvider=function(){};YAHOO.util.EventProvider.prototype={__yui_events:null,__yui_subscribers:null,subscribe:function(A,C,F,E){this.__yui_events=this.__yui_events||{};var D=this.__yui_events[A];if(D){D.subscribe(C,F,E);}else{this.__yui_subscribers=this.__yui_subscribers||{};var B=this.__yui_subscribers;if(!B[A]){B[A]=[];}B[A].push({fn:C,obj:F,overrideContext:E});}},unsubscribe:function(C,E,G){this.__yui_events=this.__yui_events||{};var A=this.__yui_events;if(C){var F=A[C];if(F){return F.unsubscribe(E,G);}}else{var B=true;for(var D in A){if(YAHOO.lang.hasOwnProperty(A,D)){B=B&&A[D].unsubscribe(E,G);}}return B;}return false;},unsubscribeAll:function(A){return this.unsubscribe(A);
17
+ },createEvent:function(B,G){this.__yui_events=this.__yui_events||{};var E=G||{},D=this.__yui_events,F;if(D[B]){}else{F=new YAHOO.util.CustomEvent(B,E.scope||this,E.silent,YAHOO.util.CustomEvent.FLAT,E.fireOnce);D[B]=F;if(E.onSubscribeCallback){F.subscribeEvent.subscribe(E.onSubscribeCallback);}this.__yui_subscribers=this.__yui_subscribers||{};var A=this.__yui_subscribers[B];if(A){for(var C=0;C<A.length;++C){F.subscribe(A[C].fn,A[C].obj,A[C].overrideContext);}}}return D[B];},fireEvent:function(B){this.__yui_events=this.__yui_events||{};var D=this.__yui_events[B];if(!D){return null;}var A=[];for(var C=1;C<arguments.length;++C){A.push(arguments[C]);}return D.fire.apply(D,A);},hasEvent:function(A){if(this.__yui_events){if(this.__yui_events[A]){return true;}}return false;}};(function(){var A=YAHOO.util.Event,C=YAHOO.lang;YAHOO.util.KeyListener=function(D,I,E,F){if(!D){}else{if(!I){}else{if(!E){}}}if(!F){F=YAHOO.util.KeyListener.KEYDOWN;}var G=new YAHOO.util.CustomEvent("keyPressed");this.enabledEvent=new YAHOO.util.CustomEvent("enabled");this.disabledEvent=new YAHOO.util.CustomEvent("disabled");if(C.isString(D)){D=document.getElementById(D);}if(C.isFunction(E)){G.subscribe(E);}else{G.subscribe(E.fn,E.scope,E.correctScope);}function H(O,N){if(!I.shift){I.shift=false;}if(!I.alt){I.alt=false;}if(!I.ctrl){I.ctrl=false;}if(O.shiftKey==I.shift&&O.altKey==I.alt&&O.ctrlKey==I.ctrl){var J,M=I.keys,L;if(YAHOO.lang.isArray(M)){for(var K=0;K<M.length;K++){J=M[K];L=A.getCharCode(O);if(J==L){G.fire(L,O);break;}}}else{L=A.getCharCode(O);if(M==L){G.fire(L,O);}}}}this.enable=function(){if(!this.enabled){A.on(D,F,H);this.enabledEvent.fire(I);}this.enabled=true;};this.disable=function(){if(this.enabled){A.removeListener(D,F,H);this.disabledEvent.fire(I);}this.enabled=false;};this.toString=function(){return"KeyListener ["+I.keys+"] "+D.tagName+(D.id?"["+D.id+"]":"");};};var B=YAHOO.util.KeyListener;B.KEYDOWN="keydown";B.KEYUP="keyup";B.KEY={ALT:18,BACK_SPACE:8,CAPS_LOCK:20,CONTROL:17,DELETE:46,DOWN:40,END:35,ENTER:13,ESCAPE:27,HOME:36,LEFT:37,META:224,NUM_LOCK:144,PAGE_DOWN:34,PAGE_UP:33,PAUSE:19,PRINTSCREEN:44,RIGHT:39,SCROLL_LOCK:145,SHIFT:16,SPACE:32,TAB:9,UP:38};})();YAHOO.register("event",YAHOO.util.Event,{version:"2.8.1",build:"19"});YAHOO.register("yuiloader-dom-event", YAHOO, {version: "2.8.1", build: "19"});
@@ -0,0 +1,3879 @@
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 YAHOO object is the single global object used by YUI Library. It
9
+ * contains utility function for setting up namespaces, inheritance, and
10
+ * logging. YAHOO.util, YAHOO.widget, and YAHOO.example are namespaces
11
+ * created automatically for and used by the library.
12
+ * @module yahoo
13
+ * @title YAHOO Global
14
+ */
15
+
16
+ /**
17
+ * YAHOO_config is not included as part of the library. Instead it is an
18
+ * object that can be defined by the implementer immediately before
19
+ * including the YUI library. The properties included in this object
20
+ * will be used to configure global properties needed as soon as the
21
+ * library begins to load.
22
+ * @class YAHOO_config
23
+ * @static
24
+ */
25
+
26
+ /**
27
+ * A reference to a function that will be executed every time a YAHOO module
28
+ * is loaded. As parameter, this function will receive the version
29
+ * information for the module. See <a href="YAHOO.env.html#getVersion">
30
+ * YAHOO.env.getVersion</a> for the description of the version data structure.
31
+ * @property listener
32
+ * @type Function
33
+ * @static
34
+ * @default undefined
35
+ */
36
+
37
+ /**
38
+ * Set to true if the library will be dynamically loaded after window.onload.
39
+ * Defaults to false
40
+ * @property injecting
41
+ * @type boolean
42
+ * @static
43
+ * @default undefined
44
+ */
45
+
46
+ /**
47
+ * Instructs the yuiloader component to dynamically load yui components and
48
+ * their dependencies. See the yuiloader documentation for more information
49
+ * about dynamic loading
50
+ * @property load
51
+ * @static
52
+ * @default undefined
53
+ * @see yuiloader
54
+ */
55
+
56
+ /**
57
+ * Forces the use of the supplied locale where applicable in the library
58
+ * @property locale
59
+ * @type string
60
+ * @static
61
+ * @default undefined
62
+ */
63
+
64
+ if (typeof YAHOO == "undefined" || !YAHOO) {
65
+ /**
66
+ * The YAHOO global namespace object. If YAHOO is already defined, the
67
+ * existing YAHOO object will not be overwritten so that defined
68
+ * namespaces are preserved.
69
+ * @class YAHOO
70
+ * @static
71
+ */
72
+ var YAHOO = {};
73
+ }
74
+
75
+ /**
76
+ * Returns the namespace specified and creates it if it doesn't exist
77
+ * <pre>
78
+ * YAHOO.namespace("property.package");
79
+ * YAHOO.namespace("YAHOO.property.package");
80
+ * </pre>
81
+ * Either of the above would create YAHOO.property, then
82
+ * YAHOO.property.package
83
+ *
84
+ * Be careful when naming packages. Reserved words may work in some browsers
85
+ * and not others. For instance, the following will fail in Safari:
86
+ * <pre>
87
+ * YAHOO.namespace("really.long.nested.namespace");
88
+ * </pre>
89
+ * This fails because "long" is a future reserved word in ECMAScript
90
+ *
91
+ * For implementation code that uses YUI, do not create your components
92
+ * in the namespaces defined by YUI (
93
+ * <code>YAHOO.util</code>,
94
+ * <code>YAHOO.widget</code>,
95
+ * <code>YAHOO.lang</code>,
96
+ * <code>YAHOO.tool</code>,
97
+ * <code>YAHOO.example</code>,
98
+ * <code>YAHOO.env</code>) -- create your own namespace (e.g., 'companyname').
99
+ *
100
+ * @method namespace
101
+ * @static
102
+ * @param {String*} arguments 1-n namespaces to create
103
+ * @return {Object} A reference to the last namespace object created
104
+ */
105
+ YAHOO.namespace = function() {
106
+ var a=arguments, o=null, i, j, d;
107
+ for (i=0; i<a.length; i=i+1) {
108
+ d=(""+a[i]).split(".");
109
+ o=YAHOO;
110
+
111
+ // YAHOO is implied, so it is ignored if it is included
112
+ for (j=(d[0] == "YAHOO") ? 1 : 0; j<d.length; j=j+1) {
113
+ o[d[j]]=o[d[j]] || {};
114
+ o=o[d[j]];
115
+ }
116
+ }
117
+
118
+ return o;
119
+ };
120
+
121
+ /**
122
+ * Uses YAHOO.widget.Logger to output a log message, if the widget is
123
+ * available.
124
+ *
125
+ * @method log
126
+ * @static
127
+ * @param {String} msg The message to log.
128
+ * @param {String} cat The log category for the message. Default
129
+ * categories are "info", "warn", "error", time".
130
+ * Custom categories can be used as well. (opt)
131
+ * @param {String} src The source of the the message (opt)
132
+ * @return {Boolean} True if the log operation was successful.
133
+ */
134
+ YAHOO.log = function(msg, cat, src) {
135
+ var l=YAHOO.widget.Logger;
136
+ if(l && l.log) {
137
+ return l.log(msg, cat, src);
138
+ } else {
139
+ return false;
140
+ }
141
+ };
142
+
143
+ /**
144
+ * Registers a module with the YAHOO object
145
+ * @method register
146
+ * @static
147
+ * @param {String} name the name of the module (event, slider, etc)
148
+ * @param {Function} mainClass a reference to class in the module. This
149
+ * class will be tagged with the version info
150
+ * so that it will be possible to identify the
151
+ * version that is in use when multiple versions
152
+ * have loaded
153
+ * @param {Object} data metadata object for the module. Currently it
154
+ * is expected to contain a "version" property
155
+ * and a "build" property at minimum.
156
+ */
157
+ YAHOO.register = function(name, mainClass, data) {
158
+ var mods = YAHOO.env.modules, m, v, b, ls, i;
159
+
160
+ if (!mods[name]) {
161
+ mods[name] = {
162
+ versions:[],
163
+ builds:[]
164
+ };
165
+ }
166
+
167
+ m = mods[name];
168
+ v = data.version;
169
+ b = data.build;
170
+ ls = YAHOO.env.listeners;
171
+
172
+ m.name = name;
173
+ m.version = v;
174
+ m.build = b;
175
+ m.versions.push(v);
176
+ m.builds.push(b);
177
+ m.mainClass = mainClass;
178
+
179
+ // fire the module load listeners
180
+ for (i=0;i<ls.length;i=i+1) {
181
+ ls[i](m);
182
+ }
183
+ // label the main class
184
+ if (mainClass) {
185
+ mainClass.VERSION = v;
186
+ mainClass.BUILD = b;
187
+ } else {
188
+ YAHOO.log("mainClass is undefined for module " + name, "warn");
189
+ }
190
+ };
191
+
192
+ /**
193
+ * YAHOO.env is used to keep track of what is known about the YUI library and
194
+ * the browsing environment
195
+ * @class YAHOO.env
196
+ * @static
197
+ */
198
+ YAHOO.env = YAHOO.env || {
199
+
200
+ /**
201
+ * Keeps the version info for all YUI modules that have reported themselves
202
+ * @property modules
203
+ * @type Object[]
204
+ */
205
+ modules: [],
206
+
207
+ /**
208
+ * List of functions that should be executed every time a YUI module
209
+ * reports itself.
210
+ * @property listeners
211
+ * @type Function[]
212
+ */
213
+ listeners: []
214
+ };
215
+
216
+ /**
217
+ * Returns the version data for the specified module:
218
+ * <dl>
219
+ * <dt>name:</dt> <dd>The name of the module</dd>
220
+ * <dt>version:</dt> <dd>The version in use</dd>
221
+ * <dt>build:</dt> <dd>The build number in use</dd>
222
+ * <dt>versions:</dt> <dd>All versions that were registered</dd>
223
+ * <dt>builds:</dt> <dd>All builds that were registered.</dd>
224
+ * <dt>mainClass:</dt> <dd>An object that was was stamped with the
225
+ * current version and build. If
226
+ * mainClass.VERSION != version or mainClass.BUILD != build,
227
+ * multiple versions of pieces of the library have been
228
+ * loaded, potentially causing issues.</dd>
229
+ * </dl>
230
+ *
231
+ * @method getVersion
232
+ * @static
233
+ * @param {String} name the name of the module (event, slider, etc)
234
+ * @return {Object} The version info
235
+ */
236
+ YAHOO.env.getVersion = function(name) {
237
+ return YAHOO.env.modules[name] || null;
238
+ };
239
+
240
+ /**
241
+ * Do not fork for a browser if it can be avoided. Use feature detection when
242
+ * you can. Use the user agent as a last resort. YAHOO.env.ua stores a version
243
+ * number for the browser engine, 0 otherwise. This value may or may not map
244
+ * to the version number of the browser using the engine. The value is
245
+ * presented as a float so that it can easily be used for boolean evaluation
246
+ * as well as for looking for a particular range of versions. Because of this,
247
+ * some of the granularity of the version info may be lost (e.g., Gecko 1.8.0.9
248
+ * reports 1.8).
249
+ * @class YAHOO.env.ua
250
+ * @static
251
+ */
252
+ YAHOO.env.ua = function() {
253
+
254
+ var numberfy = function(s) {
255
+ var c = 0;
256
+ return parseFloat(s.replace(/\./g, function() {
257
+ return (c++ == 1) ? '' : '.';
258
+ }));
259
+ },
260
+
261
+ nav = navigator,
262
+
263
+ o = {
264
+
265
+ /**
266
+ * Internet Explorer version number or 0. Example: 6
267
+ * @property ie
268
+ * @type float
269
+ */
270
+ ie: 0,
271
+
272
+ /**
273
+ * Opera version number or 0. Example: 9.2
274
+ * @property opera
275
+ * @type float
276
+ */
277
+ opera: 0,
278
+
279
+ /**
280
+ * Gecko engine revision number. Will evaluate to 1 if Gecko
281
+ * is detected but the revision could not be found. Other browsers
282
+ * will be 0. Example: 1.8
283
+ * <pre>
284
+ * Firefox 1.0.0.4: 1.7.8 <-- Reports 1.7
285
+ * Firefox 1.5.0.9: 1.8.0.9 <-- Reports 1.8
286
+ * Firefox 2.0.0.3: 1.8.1.3 <-- Reports 1.8
287
+ * Firefox 3 alpha: 1.9a4 <-- Reports 1.9
288
+ * </pre>
289
+ * @property gecko
290
+ * @type float
291
+ */
292
+ gecko: 0,
293
+
294
+ /**
295
+ * AppleWebKit version. KHTML browsers that are not WebKit browsers
296
+ * will evaluate to 1, other browsers 0. Example: 418.9.1
297
+ * <pre>
298
+ * Safari 1.3.2 (312.6): 312.8.1 <-- Reports 312.8 -- currently the
299
+ * latest available for Mac OSX 10.3.
300
+ * Safari 2.0.2: 416 <-- hasOwnProperty introduced
301
+ * Safari 2.0.4: 418 <-- preventDefault fixed
302
+ * Safari 2.0.4 (419.3): 418.9.1 <-- One version of Safari may run
303
+ * different versions of webkit
304
+ * Safari 2.0.4 (419.3): 419 <-- Tiger installations that have been
305
+ * updated, but not updated
306
+ * to the latest patch.
307
+ * Webkit 212 nightly: 522+ <-- Safari 3.0 precursor (with native SVG
308
+ * and many major issues fixed).
309
+ * 3.x yahoo.com, flickr:422 <-- Safari 3.x hacks the user agent
310
+ * string when hitting yahoo.com and
311
+ * flickr.com.
312
+ * Safari 3.0.4 (523.12):523.12 <-- First Tiger release - automatic update
313
+ * from 2.x via the 10.4.11 OS patch
314
+ * Webkit nightly 1/2008:525+ <-- Supports DOMContentLoaded event.
315
+ * yahoo.com user agent hack removed.
316
+ *
317
+ * </pre>
318
+ * http://developer.apple.com/internet/safari/uamatrix.html
319
+ * @property webkit
320
+ * @type float
321
+ */
322
+ webkit: 0,
323
+
324
+ /**
325
+ * The mobile property will be set to a string containing any relevant
326
+ * user agent information when a modern mobile browser is detected.
327
+ * Currently limited to Safari on the iPhone/iPod Touch, Nokia N-series
328
+ * devices with the WebKit-based browser, and Opera Mini.
329
+ * @property mobile
330
+ * @type string
331
+ */
332
+ mobile: null,
333
+
334
+ /**
335
+ * Adobe AIR version number or 0. Only populated if webkit is detected.
336
+ * Example: 1.0
337
+ * @property air
338
+ * @type float
339
+ */
340
+ air: 0,
341
+
342
+ /**
343
+ * Google Caja version number or 0.
344
+ * @property caja
345
+ * @type float
346
+ */
347
+ caja: nav.cajaVersion,
348
+
349
+ /**
350
+ * Set to true if the page appears to be in SSL
351
+ * @property secure
352
+ * @type boolean
353
+ * @static
354
+ */
355
+ secure: false,
356
+
357
+ /**
358
+ * The operating system. Currently only detecting windows or macintosh
359
+ * @property os
360
+ * @type string
361
+ * @static
362
+ */
363
+ os: null
364
+
365
+ },
366
+
367
+ ua = navigator && navigator.userAgent,
368
+
369
+ loc = window && window.location,
370
+
371
+ href = loc && loc.href,
372
+
373
+ m;
374
+
375
+ o.secure = href && (href.toLowerCase().indexOf("https") === 0);
376
+
377
+ if (ua) {
378
+
379
+ if ((/windows|win32/i).test(ua)) {
380
+ o.os = 'windows';
381
+ } else if ((/macintosh/i).test(ua)) {
382
+ o.os = 'macintosh';
383
+ }
384
+
385
+ // Modern KHTML browsers should qualify as Safari X-Grade
386
+ if ((/KHTML/).test(ua)) {
387
+ o.webkit=1;
388
+ }
389
+
390
+ // Modern WebKit browsers are at least X-Grade
391
+ m=ua.match(/AppleWebKit\/([^\s]*)/);
392
+ if (m&&m[1]) {
393
+ o.webkit=numberfy(m[1]);
394
+
395
+ // Mobile browser check
396
+ if (/ Mobile\//.test(ua)) {
397
+ o.mobile = "Apple"; // iPhone or iPod Touch
398
+ } else {
399
+ m=ua.match(/NokiaN[^\/]*/);
400
+ if (m) {
401
+ o.mobile = m[0]; // Nokia N-series, ex: NokiaN95
402
+ }
403
+ }
404
+
405
+ m=ua.match(/AdobeAIR\/([^\s]*)/);
406
+ if (m) {
407
+ o.air = m[0]; // Adobe AIR 1.0 or better
408
+ }
409
+
410
+ }
411
+
412
+ if (!o.webkit) { // not webkit
413
+ // @todo check Opera/8.01 (J2ME/MIDP; Opera Mini/2.0.4509/1316; fi; U; ssr)
414
+ m=ua.match(/Opera[\s\/]([^\s]*)/);
415
+ if (m&&m[1]) {
416
+ o.opera=numberfy(m[1]);
417
+ m=ua.match(/Opera Mini[^;]*/);
418
+ if (m) {
419
+ o.mobile = m[0]; // ex: Opera Mini/2.0.4509/1316
420
+ }
421
+ } else { // not opera or webkit
422
+ m=ua.match(/MSIE\s([^;]*)/);
423
+ if (m&&m[1]) {
424
+ o.ie=numberfy(m[1]);
425
+ } else { // not opera, webkit, or ie
426
+ m=ua.match(/Gecko\/([^\s]*)/);
427
+ if (m) {
428
+ o.gecko=1; // Gecko detected, look for revision
429
+ m=ua.match(/rv:([^\s\)]*)/);
430
+ if (m&&m[1]) {
431
+ o.gecko=numberfy(m[1]);
432
+ }
433
+ }
434
+ }
435
+ }
436
+ }
437
+ }
438
+
439
+ return o;
440
+ }();
441
+
442
+ /*
443
+ * Initializes the global by creating the default namespaces and applying
444
+ * any new configuration information that is detected. This is the setup
445
+ * for env.
446
+ * @method init
447
+ * @static
448
+ * @private
449
+ */
450
+ (function() {
451
+ YAHOO.namespace("util", "widget", "example");
452
+ /*global YAHOO_config*/
453
+ if ("undefined" !== typeof YAHOO_config) {
454
+ var l=YAHOO_config.listener, ls=YAHOO.env.listeners,unique=true, i;
455
+ if (l) {
456
+ // if YAHOO is loaded multiple times we need to check to see if
457
+ // this is a new config object. If it is, add the new component
458
+ // load listener to the stack
459
+ for (i=0; i<ls.length; i++) {
460
+ if (ls[i] == l) {
461
+ unique = false;
462
+ break;
463
+ }
464
+ }
465
+
466
+ if (unique) {
467
+ ls.push(l);
468
+ }
469
+ }
470
+ }
471
+ })();
472
+ /**
473
+ * Provides the language utilites and extensions used by the library
474
+ * @class YAHOO.lang
475
+ */
476
+ YAHOO.lang = YAHOO.lang || {};
477
+
478
+ (function() {
479
+
480
+
481
+ var L = YAHOO.lang,
482
+
483
+ OP = Object.prototype,
484
+ ARRAY_TOSTRING = '[object Array]',
485
+ FUNCTION_TOSTRING = '[object Function]',
486
+ OBJECT_TOSTRING = '[object Object]',
487
+ NOTHING = [],
488
+
489
+ // ADD = ["toString", "valueOf", "hasOwnProperty"],
490
+ ADD = ["toString", "valueOf"],
491
+
492
+ OB = {
493
+
494
+ /**
495
+ * Determines wheather or not the provided object is an array.
496
+ * @method isArray
497
+ * @param {any} o The object being testing
498
+ * @return {boolean} the result
499
+ */
500
+ isArray: function(o) {
501
+ return OP.toString.apply(o) === ARRAY_TOSTRING;
502
+ },
503
+
504
+ /**
505
+ * Determines whether or not the provided object is a boolean
506
+ * @method isBoolean
507
+ * @param {any} o The object being testing
508
+ * @return {boolean} the result
509
+ */
510
+ isBoolean: function(o) {
511
+ return typeof o === 'boolean';
512
+ },
513
+
514
+ /**
515
+ * Determines whether or not the provided object is a function.
516
+ * Note: Internet Explorer thinks certain functions are objects:
517
+ *
518
+ * var obj = document.createElement("object");
519
+ * YAHOO.lang.isFunction(obj.getAttribute) // reports false in IE
520
+ *
521
+ * var input = document.createElement("input"); // append to body
522
+ * YAHOO.lang.isFunction(input.focus) // reports false in IE
523
+ *
524
+ * You will have to implement additional tests if these functions
525
+ * matter to you.
526
+ *
527
+ * @method isFunction
528
+ * @param {any} o The object being testing
529
+ * @return {boolean} the result
530
+ */
531
+ isFunction: function(o) {
532
+ return (typeof o === 'function') || OP.toString.apply(o) === FUNCTION_TOSTRING;
533
+ },
534
+
535
+ /**
536
+ * Determines whether or not the provided object is null
537
+ * @method isNull
538
+ * @param {any} o The object being testing
539
+ * @return {boolean} the result
540
+ */
541
+ isNull: function(o) {
542
+ return o === null;
543
+ },
544
+
545
+ /**
546
+ * Determines whether or not the provided object is a legal number
547
+ * @method isNumber
548
+ * @param {any} o The object being testing
549
+ * @return {boolean} the result
550
+ */
551
+ isNumber: function(o) {
552
+ return typeof o === 'number' && isFinite(o);
553
+ },
554
+
555
+ /**
556
+ * Determines whether or not the provided object is of type object
557
+ * or function
558
+ * @method isObject
559
+ * @param {any} o The object being testing
560
+ * @return {boolean} the result
561
+ */
562
+ isObject: function(o) {
563
+ return (o && (typeof o === 'object' || L.isFunction(o))) || false;
564
+ },
565
+
566
+ /**
567
+ * Determines whether or not the provided object is a string
568
+ * @method isString
569
+ * @param {any} o The object being testing
570
+ * @return {boolean} the result
571
+ */
572
+ isString: function(o) {
573
+ return typeof o === 'string';
574
+ },
575
+
576
+ /**
577
+ * Determines whether or not the provided object is undefined
578
+ * @method isUndefined
579
+ * @param {any} o The object being testing
580
+ * @return {boolean} the result
581
+ */
582
+ isUndefined: function(o) {
583
+ return typeof o === 'undefined';
584
+ },
585
+
586
+
587
+ /**
588
+ * IE will not enumerate native functions in a derived object even if the
589
+ * function was overridden. This is a workaround for specific functions
590
+ * we care about on the Object prototype.
591
+ * @property _IEEnumFix
592
+ * @param {Function} r the object to receive the augmentation
593
+ * @param {Function} s the object that supplies the properties to augment
594
+ * @static
595
+ * @private
596
+ */
597
+ _IEEnumFix: (YAHOO.env.ua.ie) ? function(r, s) {
598
+ var i, fname, f;
599
+ for (i=0;i<ADD.length;i=i+1) {
600
+
601
+ fname = ADD[i];
602
+ f = s[fname];
603
+
604
+ if (L.isFunction(f) && f!=OP[fname]) {
605
+ r[fname]=f;
606
+ }
607
+ }
608
+ } : function(){},
609
+
610
+ /**
611
+ * Utility to set up the prototype, constructor and superclass properties to
612
+ * support an inheritance strategy that can chain constructors and methods.
613
+ * Static members will not be inherited.
614
+ *
615
+ * @method extend
616
+ * @static
617
+ * @param {Function} subc the object to modify
618
+ * @param {Function} superc the object to inherit
619
+ * @param {Object} overrides additional properties/methods to add to the
620
+ * subclass prototype. These will override the
621
+ * matching items obtained from the superclass
622
+ * if present.
623
+ */
624
+ extend: function(subc, superc, overrides) {
625
+ if (!superc||!subc) {
626
+ throw new Error("extend failed, please check that " +
627
+ "all dependencies are included.");
628
+ }
629
+ var F = function() {}, i;
630
+ F.prototype=superc.prototype;
631
+ subc.prototype=new F();
632
+ subc.prototype.constructor=subc;
633
+ subc.superclass=superc.prototype;
634
+ if (superc.prototype.constructor == OP.constructor) {
635
+ superc.prototype.constructor=superc;
636
+ }
637
+
638
+ if (overrides) {
639
+ for (i in overrides) {
640
+ if (L.hasOwnProperty(overrides, i)) {
641
+ subc.prototype[i]=overrides[i];
642
+ }
643
+ }
644
+
645
+ L._IEEnumFix(subc.prototype, overrides);
646
+ }
647
+ },
648
+
649
+ /**
650
+ * Applies all properties in the supplier to the receiver if the
651
+ * receiver does not have these properties yet. Optionally, one or
652
+ * more methods/properties can be specified (as additional
653
+ * parameters). This option will overwrite the property if receiver
654
+ * has it already. If true is passed as the third parameter, all
655
+ * properties will be applied and _will_ overwrite properties in
656
+ * the receiver.
657
+ *
658
+ * @method augmentObject
659
+ * @static
660
+ * @since 2.3.0
661
+ * @param {Function} r the object to receive the augmentation
662
+ * @param {Function} s the object that supplies the properties to augment
663
+ * @param {String*|boolean} arguments zero or more properties methods
664
+ * to augment the receiver with. If none specified, everything
665
+ * in the supplier will be used unless it would
666
+ * overwrite an existing property in the receiver. If true
667
+ * is specified as the third parameter, all properties will
668
+ * be applied and will overwrite an existing property in
669
+ * the receiver
670
+ */
671
+ augmentObject: function(r, s) {
672
+ if (!s||!r) {
673
+ throw new Error("Absorb failed, verify dependencies.");
674
+ }
675
+ var a=arguments, i, p, overrideList=a[2];
676
+ if (overrideList && overrideList!==true) { // only absorb the specified properties
677
+ for (i=2; i<a.length; i=i+1) {
678
+ r[a[i]] = s[a[i]];
679
+ }
680
+ } else { // take everything, overwriting only if the third parameter is true
681
+ for (p in s) {
682
+ if (overrideList || !(p in r)) {
683
+ r[p] = s[p];
684
+ }
685
+ }
686
+
687
+ L._IEEnumFix(r, s);
688
+ }
689
+ },
690
+
691
+ /**
692
+ * Same as YAHOO.lang.augmentObject, except it only applies prototype properties
693
+ * @see YAHOO.lang.augmentObject
694
+ * @method augmentProto
695
+ * @static
696
+ * @param {Function} r the object to receive the augmentation
697
+ * @param {Function} s the object that supplies the properties to augment
698
+ * @param {String*|boolean} arguments zero or more properties methods
699
+ * to augment the receiver with. If none specified, everything
700
+ * in the supplier will be used unless it would overwrite an existing
701
+ * property in the receiver. if true is specified as the third
702
+ * parameter, all properties will be applied and will overwrite an
703
+ * existing property in the receiver
704
+ */
705
+ augmentProto: function(r, s) {
706
+ if (!s||!r) {
707
+ throw new Error("Augment failed, verify dependencies.");
708
+ }
709
+ //var a=[].concat(arguments);
710
+ var a=[r.prototype,s.prototype], i;
711
+ for (i=2;i<arguments.length;i=i+1) {
712
+ a.push(arguments[i]);
713
+ }
714
+ L.augmentObject.apply(this, a);
715
+ },
716
+
717
+
718
+ /**
719
+ * Returns a simple string representation of the object or array.
720
+ * Other types of objects will be returned unprocessed. Arrays
721
+ * are expected to be indexed. Use object notation for
722
+ * associative arrays.
723
+ * @method dump
724
+ * @since 2.3.0
725
+ * @param o {Object} The object to dump
726
+ * @param d {int} How deep to recurse child objects, default 3
727
+ * @return {String} the dump result
728
+ */
729
+ dump: function(o, d) {
730
+ var i,len,s=[],OBJ="{...}",FUN="f(){...}",
731
+ COMMA=', ', ARROW=' => ';
732
+
733
+ // Cast non-objects to string
734
+ // Skip dates because the std toString is what we want
735
+ // Skip HTMLElement-like objects because trying to dump
736
+ // an element will cause an unhandled exception in FF 2.x
737
+ if (!L.isObject(o)) {
738
+ return o + "";
739
+ } else if (o instanceof Date || ("nodeType" in o && "tagName" in o)) {
740
+ return o;
741
+ } else if (L.isFunction(o)) {
742
+ return FUN;
743
+ }
744
+
745
+ // dig into child objects the depth specifed. Default 3
746
+ d = (L.isNumber(d)) ? d : 3;
747
+
748
+ // arrays [1, 2, 3]
749
+ if (L.isArray(o)) {
750
+ s.push("[");
751
+ for (i=0,len=o.length;i<len;i=i+1) {
752
+ if (L.isObject(o[i])) {
753
+ s.push((d > 0) ? L.dump(o[i], d-1) : OBJ);
754
+ } else {
755
+ s.push(o[i]);
756
+ }
757
+ s.push(COMMA);
758
+ }
759
+ if (s.length > 1) {
760
+ s.pop();
761
+ }
762
+ s.push("]");
763
+ // objects {k1 => v1, k2 => v2}
764
+ } else {
765
+ s.push("{");
766
+ for (i in o) {
767
+ if (L.hasOwnProperty(o, i)) {
768
+ s.push(i + ARROW);
769
+ if (L.isObject(o[i])) {
770
+ s.push((d > 0) ? L.dump(o[i], d-1) : OBJ);
771
+ } else {
772
+ s.push(o[i]);
773
+ }
774
+ s.push(COMMA);
775
+ }
776
+ }
777
+ if (s.length > 1) {
778
+ s.pop();
779
+ }
780
+ s.push("}");
781
+ }
782
+
783
+ return s.join("");
784
+ },
785
+
786
+ /**
787
+ * Does variable substitution on a string. It scans through the string
788
+ * looking for expressions enclosed in { } braces. If an expression
789
+ * is found, it is used a key on the object. If there is a space in
790
+ * the key, the first word is used for the key and the rest is provided
791
+ * to an optional function to be used to programatically determine the
792
+ * value (the extra information might be used for this decision). If
793
+ * the value for the key in the object, or what is returned from the
794
+ * function has a string value, number value, or object value, it is
795
+ * substituted for the bracket expression and it repeats. If this
796
+ * value is an object, it uses the Object's toString() if this has
797
+ * been overridden, otherwise it does a shallow dump of the key/value
798
+ * pairs.
799
+ * @method substitute
800
+ * @since 2.3.0
801
+ * @param s {String} The string that will be modified.
802
+ * @param o {Object} An object containing the replacement values
803
+ * @param f {Function} An optional function that can be used to
804
+ * process each match. It receives the key,
805
+ * value, and any extra metadata included with
806
+ * the key inside of the braces.
807
+ * @return {String} the substituted string
808
+ */
809
+ substitute: function (s, o, f) {
810
+ var i, j, k, key, v, meta, saved=[], token,
811
+ DUMP='dump', SPACE=' ', LBRACE='{', RBRACE='}',
812
+ dump, objstr;
813
+
814
+
815
+ for (;;) {
816
+ i = s.lastIndexOf(LBRACE);
817
+ if (i < 0) {
818
+ break;
819
+ }
820
+ j = s.indexOf(RBRACE, i);
821
+ if (i + 1 >= j) {
822
+ break;
823
+ }
824
+
825
+ //Extract key and meta info
826
+ token = s.substring(i + 1, j);
827
+ key = token;
828
+ meta = null;
829
+ k = key.indexOf(SPACE);
830
+ if (k > -1) {
831
+ meta = key.substring(k + 1);
832
+ key = key.substring(0, k);
833
+ }
834
+
835
+ // lookup the value
836
+ v = o[key];
837
+
838
+ // if a substitution function was provided, execute it
839
+ if (f) {
840
+ v = f(key, v, meta);
841
+ }
842
+
843
+ if (L.isObject(v)) {
844
+ if (L.isArray(v)) {
845
+ v = L.dump(v, parseInt(meta, 10));
846
+ } else {
847
+ meta = meta || "";
848
+
849
+ // look for the keyword 'dump', if found force obj dump
850
+ dump = meta.indexOf(DUMP);
851
+ if (dump > -1) {
852
+ meta = meta.substring(4);
853
+ }
854
+
855
+ objstr = v.toString();
856
+
857
+ // use the toString if it is not the Object toString
858
+ // and the 'dump' meta info was not found
859
+ if (objstr === OBJECT_TOSTRING || dump > -1) {
860
+ v = L.dump(v, parseInt(meta, 10));
861
+ } else {
862
+ v = objstr;
863
+ }
864
+ }
865
+ } else if (!L.isString(v) && !L.isNumber(v)) {
866
+ // This {block} has no replace string. Save it for later.
867
+ v = "~-" + saved.length + "-~";
868
+ saved[saved.length] = token;
869
+
870
+ // break;
871
+ }
872
+
873
+ s = s.substring(0, i) + v + s.substring(j + 1);
874
+
875
+
876
+ }
877
+
878
+ // restore saved {block}s
879
+ for (i=saved.length-1; i>=0; i=i-1) {
880
+ s = s.replace(new RegExp("~-" + i + "-~"), "{" + saved[i] + "}", "g");
881
+ }
882
+
883
+ return s;
884
+ },
885
+
886
+
887
+ /**
888
+ * Returns a string without any leading or trailing whitespace. If
889
+ * the input is not a string, the input will be returned untouched.
890
+ * @method trim
891
+ * @since 2.3.0
892
+ * @param s {string} the string to trim
893
+ * @return {string} the trimmed string
894
+ */
895
+ trim: function(s){
896
+ try {
897
+ return s.replace(/^\s+|\s+$/g, "");
898
+ } catch(e) {
899
+ return s;
900
+ }
901
+ },
902
+
903
+ /**
904
+ * Returns a new object containing all of the properties of
905
+ * all the supplied objects. The properties from later objects
906
+ * will overwrite those in earlier objects.
907
+ * @method merge
908
+ * @since 2.3.0
909
+ * @param arguments {Object*} the objects to merge
910
+ * @return the new merged object
911
+ */
912
+ merge: function() {
913
+ var o={}, a=arguments, l=a.length, i;
914
+ for (i=0; i<l; i=i+1) {
915
+ L.augmentObject(o, a[i], true);
916
+ }
917
+ return o;
918
+ },
919
+
920
+ /**
921
+ * Executes the supplied function in the context of the supplied
922
+ * object 'when' milliseconds later. Executes the function a
923
+ * single time unless periodic is set to true.
924
+ * @method later
925
+ * @since 2.4.0
926
+ * @param when {int} the number of milliseconds to wait until the fn
927
+ * is executed
928
+ * @param o the context object
929
+ * @param fn {Function|String} the function to execute or the name of
930
+ * the method in the 'o' object to execute
931
+ * @param data [Array] data that is provided to the function. This accepts
932
+ * either a single item or an array. If an array is provided, the
933
+ * function is executed with one parameter for each array item. If
934
+ * you need to pass a single array parameter, it needs to be wrapped in
935
+ * an array [myarray]
936
+ * @param periodic {boolean} if true, executes continuously at supplied
937
+ * interval until canceled
938
+ * @return a timer object. Call the cancel() method on this object to
939
+ * stop the timer.
940
+ */
941
+ later: function(when, o, fn, data, periodic) {
942
+ when = when || 0;
943
+ o = o || {};
944
+ var m=fn, d=data, f, r;
945
+
946
+ if (L.isString(fn)) {
947
+ m = o[fn];
948
+ }
949
+
950
+ if (!m) {
951
+ throw new TypeError("method undefined");
952
+ }
953
+
954
+ if (d && !L.isArray(d)) {
955
+ d = [data];
956
+ }
957
+
958
+ f = function() {
959
+ m.apply(o, d || NOTHING);
960
+ };
961
+
962
+ r = (periodic) ? setInterval(f, when) : setTimeout(f, when);
963
+
964
+ return {
965
+ interval: periodic,
966
+ cancel: function() {
967
+ if (this.interval) {
968
+ clearInterval(r);
969
+ } else {
970
+ clearTimeout(r);
971
+ }
972
+ }
973
+ };
974
+ },
975
+
976
+ /**
977
+ * A convenience method for detecting a legitimate non-null value.
978
+ * Returns false for null/undefined/NaN, true for other values,
979
+ * including 0/false/''
980
+ * @method isValue
981
+ * @since 2.3.0
982
+ * @param o {any} the item to test
983
+ * @return {boolean} true if it is not null/undefined/NaN || false
984
+ */
985
+ isValue: function(o) {
986
+ // return (o || o === false || o === 0 || o === ''); // Infinity fails
987
+ return (L.isObject(o) || L.isString(o) || L.isNumber(o) || L.isBoolean(o));
988
+ }
989
+
990
+ };
991
+
992
+ /**
993
+ * Determines whether or not the property was added
994
+ * to the object instance. Returns false if the property is not present
995
+ * in the object, or was inherited from the prototype.
996
+ * This abstraction is provided to enable hasOwnProperty for Safari 1.3.x.
997
+ * There is a discrepancy between YAHOO.lang.hasOwnProperty and
998
+ * Object.prototype.hasOwnProperty when the property is a primitive added to
999
+ * both the instance AND prototype with the same value:
1000
+ * <pre>
1001
+ * var A = function() {};
1002
+ * A.prototype.foo = 'foo';
1003
+ * var a = new A();
1004
+ * a.foo = 'foo';
1005
+ * alert(a.hasOwnProperty('foo')); // true
1006
+ * alert(YAHOO.lang.hasOwnProperty(a, 'foo')); // false when using fallback
1007
+ * </pre>
1008
+ * @method hasOwnProperty
1009
+ * @param {any} o The object being testing
1010
+ * @param prop {string} the name of the property to test
1011
+ * @return {boolean} the result
1012
+ */
1013
+ L.hasOwnProperty = (OP.hasOwnProperty) ?
1014
+ function(o, prop) {
1015
+ return o && o.hasOwnProperty(prop);
1016
+ } : function(o, prop) {
1017
+ return !L.isUndefined(o[prop]) &&
1018
+ o.constructor.prototype[prop] !== o[prop];
1019
+ };
1020
+
1021
+ // new lang wins
1022
+ OB.augmentObject(L, OB, true);
1023
+
1024
+ /*
1025
+ * An alias for <a href="YAHOO.lang.html">YAHOO.lang</a>
1026
+ * @class YAHOO.util.Lang
1027
+ */
1028
+ YAHOO.util.Lang = L;
1029
+
1030
+ /**
1031
+ * Same as YAHOO.lang.augmentObject, except it only applies prototype
1032
+ * properties. This is an alias for augmentProto.
1033
+ * @see YAHOO.lang.augmentObject
1034
+ * @method augment
1035
+ * @static
1036
+ * @param {Function} r the object to receive the augmentation
1037
+ * @param {Function} s the object that supplies the properties to augment
1038
+ * @param {String*|boolean} arguments zero or more properties methods to
1039
+ * augment the receiver with. If none specified, everything
1040
+ * in the supplier will be used unless it would
1041
+ * overwrite an existing property in the receiver. if true
1042
+ * is specified as the third parameter, all properties will
1043
+ * be applied and will overwrite an existing property in
1044
+ * the receiver
1045
+ */
1046
+ L.augment = L.augmentProto;
1047
+
1048
+ /**
1049
+ * An alias for <a href="YAHOO.lang.html#augment">YAHOO.lang.augment</a>
1050
+ * @for YAHOO
1051
+ * @method augment
1052
+ * @static
1053
+ * @param {Function} r the object to receive the augmentation
1054
+ * @param {Function} s the object that supplies the properties to augment
1055
+ * @param {String*} arguments zero or more properties methods to
1056
+ * augment the receiver with. If none specified, everything
1057
+ * in the supplier will be used unless it would
1058
+ * overwrite an existing property in the receiver
1059
+ */
1060
+ YAHOO.augment = L.augmentProto;
1061
+
1062
+ /**
1063
+ * An alias for <a href="YAHOO.lang.html#extend">YAHOO.lang.extend</a>
1064
+ * @method extend
1065
+ * @static
1066
+ * @param {Function} subc the object to modify
1067
+ * @param {Function} superc the object to inherit
1068
+ * @param {Object} overrides additional properties/methods to add to the
1069
+ * subclass prototype. These will override the
1070
+ * matching items obtained from the superclass if present.
1071
+ */
1072
+ YAHOO.extend = L.extend;
1073
+
1074
+ })();
1075
+ YAHOO.register("yahoo", YAHOO, {version: "2.8.1", build: "19"});
1076
+ /**
1077
+ * Provides a mechanism to fetch remote resources and
1078
+ * insert them into a document
1079
+ * @module get
1080
+ * @requires yahoo
1081
+ */
1082
+
1083
+ /**
1084
+ * Fetches and inserts one or more script or link nodes into the document
1085
+ * @namespace YAHOO.util
1086
+ * @class YAHOO.util.Get
1087
+ */
1088
+ YAHOO.util.Get = function() {
1089
+
1090
+ /**
1091
+ * hash of queues to manage multiple requests
1092
+ * @property queues
1093
+ * @private
1094
+ */
1095
+ var queues={},
1096
+
1097
+ /**
1098
+ * queue index used to generate transaction ids
1099
+ * @property qidx
1100
+ * @type int
1101
+ * @private
1102
+ */
1103
+ qidx=0,
1104
+
1105
+ /**
1106
+ * node index used to generate unique node ids
1107
+ * @property nidx
1108
+ * @type int
1109
+ * @private
1110
+ */
1111
+ nidx=0,
1112
+
1113
+ // ridx=0,
1114
+
1115
+ // sandboxFrame=null,
1116
+
1117
+ /**
1118
+ * interal property used to prevent multiple simultaneous purge
1119
+ * processes
1120
+ * @property purging
1121
+ * @type boolean
1122
+ * @private
1123
+ */
1124
+ purging=false,
1125
+
1126
+ ua=YAHOO.env.ua,
1127
+
1128
+ lang=YAHOO.lang;
1129
+
1130
+ /**
1131
+ * Generates an HTML element, this is not appended to a document
1132
+ * @method _node
1133
+ * @param type {string} the type of element
1134
+ * @param attr {string} the attributes
1135
+ * @param win {Window} optional window to create the element in
1136
+ * @return {HTMLElement} the generated node
1137
+ * @private
1138
+ */
1139
+ var _node = function(type, attr, win) {
1140
+ var w = win || window, d=w.document, n=d.createElement(type);
1141
+
1142
+ for (var i in attr) {
1143
+ if (attr[i] && YAHOO.lang.hasOwnProperty(attr, i)) {
1144
+ n.setAttribute(i, attr[i]);
1145
+ }
1146
+ }
1147
+
1148
+ return n;
1149
+ };
1150
+
1151
+ /**
1152
+ * Generates a link node
1153
+ * @method _linkNode
1154
+ * @param url {string} the url for the css file
1155
+ * @param win {Window} optional window to create the node in
1156
+ * @return {HTMLElement} the generated node
1157
+ * @private
1158
+ */
1159
+ var _linkNode = function(url, win, attributes) {
1160
+
1161
+ var o = {
1162
+ id: "yui__dyn_" + (nidx++),
1163
+ type: "text/css",
1164
+ rel: "stylesheet",
1165
+ href: url
1166
+ };
1167
+
1168
+ if (attributes) {
1169
+ lang.augmentObject(o, attributes);
1170
+ }
1171
+
1172
+ return _node("link", o, win);
1173
+ };
1174
+
1175
+ /**
1176
+ * Generates a script node
1177
+ * @method _scriptNode
1178
+ * @param url {string} the url for the script file
1179
+ * @param win {Window} optional window to create the node in
1180
+ * @return {HTMLElement} the generated node
1181
+ * @private
1182
+ */
1183
+ var _scriptNode = function(url, win, attributes) {
1184
+ var o = {
1185
+ id: "yui__dyn_" + (nidx++),
1186
+ type: "text/javascript",
1187
+ src: url
1188
+ };
1189
+
1190
+ if (attributes) {
1191
+ lang.augmentObject(o, attributes);
1192
+ }
1193
+
1194
+ return _node("script", o, win);
1195
+ };
1196
+
1197
+ /**
1198
+ * Returns the data payload for callback functions
1199
+ * @method _returnData
1200
+ * @private
1201
+ */
1202
+ var _returnData = function(q, msg) {
1203
+ return {
1204
+ tId: q.tId,
1205
+ win: q.win,
1206
+ data: q.data,
1207
+ nodes: q.nodes,
1208
+ msg: msg,
1209
+ purge: function() {
1210
+ _purge(this.tId);
1211
+ }
1212
+ };
1213
+ };
1214
+
1215
+ var _get = function(nId, tId) {
1216
+ var q = queues[tId],
1217
+ n = (lang.isString(nId)) ? q.win.document.getElementById(nId) : nId;
1218
+ if (!n) {
1219
+ _fail(tId, "target node not found: " + nId);
1220
+ }
1221
+
1222
+ return n;
1223
+ };
1224
+
1225
+ /*
1226
+ * The request failed, execute fail handler with whatever
1227
+ * was accomplished. There isn't a failure case at the
1228
+ * moment unless you count aborted transactions
1229
+ * @method _fail
1230
+ * @param id {string} the id of the request
1231
+ * @private
1232
+ */
1233
+ var _fail = function(id, msg) {
1234
+ var q = queues[id];
1235
+ // execute failure callback
1236
+ if (q.onFailure) {
1237
+ var sc=q.scope || q.win;
1238
+ q.onFailure.call(sc, _returnData(q, msg));
1239
+ }
1240
+ };
1241
+
1242
+ /**
1243
+ * The request is complete, so executing the requester's callback
1244
+ * @method _finish
1245
+ * @param id {string} the id of the request
1246
+ * @private
1247
+ */
1248
+ var _finish = function(id) {
1249
+ var q = queues[id];
1250
+ q.finished = true;
1251
+
1252
+ if (q.aborted) {
1253
+ var msg = "transaction " + id + " was aborted";
1254
+ _fail(id, msg);
1255
+ return;
1256
+ }
1257
+
1258
+ // execute success callback
1259
+ if (q.onSuccess) {
1260
+ var sc=q.scope || q.win;
1261
+ q.onSuccess.call(sc, _returnData(q));
1262
+ }
1263
+ };
1264
+
1265
+ /**
1266
+ * Timeout detected
1267
+ * @method _timeout
1268
+ * @param id {string} the id of the request
1269
+ * @private
1270
+ */
1271
+ var _timeout = function(id) {
1272
+ var q = queues[id];
1273
+ if (q.onTimeout) {
1274
+ var sc=q.scope || q;
1275
+ q.onTimeout.call(sc, _returnData(q));
1276
+ }
1277
+ };
1278
+
1279
+ /**
1280
+ * Loads the next item for a given request
1281
+ * @method _next
1282
+ * @param id {string} the id of the request
1283
+ * @param loaded {string} the url that was just loaded, if any
1284
+ * @private
1285
+ */
1286
+ var _next = function(id, loaded) {
1287
+ var q = queues[id];
1288
+
1289
+ if (q.timer) {
1290
+ // Y.log('cancel timer');
1291
+ q.timer.cancel();
1292
+ }
1293
+
1294
+ if (q.aborted) {
1295
+ var msg = "transaction " + id + " was aborted";
1296
+ _fail(id, msg);
1297
+ return;
1298
+ }
1299
+
1300
+ if (loaded) {
1301
+ q.url.shift();
1302
+ if (q.varName) {
1303
+ q.varName.shift();
1304
+ }
1305
+ } else {
1306
+ // This is the first pass: make sure the url is an array
1307
+ q.url = (lang.isString(q.url)) ? [q.url] : q.url;
1308
+ if (q.varName) {
1309
+ q.varName = (lang.isString(q.varName)) ? [q.varName] : q.varName;
1310
+ }
1311
+ }
1312
+
1313
+ var w=q.win, d=w.document, h=d.getElementsByTagName("head")[0], n;
1314
+
1315
+ if (q.url.length === 0) {
1316
+ // Safari 2.x workaround - There is no way to know when
1317
+ // a script is ready in versions of Safari prior to 3.x.
1318
+ // Adding an extra node reduces the problem, but doesn't
1319
+ // eliminate it completely because the browser executes
1320
+ // them asynchronously.
1321
+ if (q.type === "script" && ua.webkit && ua.webkit < 420 &&
1322
+ !q.finalpass && !q.varName) {
1323
+ // Add another script node. This does not guarantee that the
1324
+ // scripts will execute in order, but it does appear to fix the
1325
+ // problem on fast connections more effectively than using an
1326
+ // arbitrary timeout. It is possible that the browser does
1327
+ // block subsequent script execution in this case for a limited
1328
+ // time.
1329
+ var extra = _scriptNode(null, q.win, q.attributes);
1330
+ extra.innerHTML='YAHOO.util.Get._finalize("' + id + '");';
1331
+ q.nodes.push(extra); h.appendChild(extra);
1332
+
1333
+ } else {
1334
+ _finish(id);
1335
+ }
1336
+
1337
+ return;
1338
+ }
1339
+
1340
+
1341
+ var url = q.url[0];
1342
+
1343
+ // if the url is undefined, this is probably a trailing comma problem in IE
1344
+ if (!url) {
1345
+ q.url.shift();
1346
+ return _next(id);
1347
+ }
1348
+
1349
+
1350
+ if (q.timeout) {
1351
+ // Y.log('create timer');
1352
+ q.timer = lang.later(q.timeout, q, _timeout, id);
1353
+ }
1354
+
1355
+ if (q.type === "script") {
1356
+ n = _scriptNode(url, w, q.attributes);
1357
+ } else {
1358
+ n = _linkNode(url, w, q.attributes);
1359
+ }
1360
+
1361
+ // track this node's load progress
1362
+ _track(q.type, n, id, url, w, q.url.length);
1363
+
1364
+ // add the node to the queue so we can return it to the user supplied callback
1365
+ q.nodes.push(n);
1366
+
1367
+ // add it to the head or insert it before 'insertBefore'
1368
+ if (q.insertBefore) {
1369
+ var s = _get(q.insertBefore, id);
1370
+ if (s) {
1371
+ s.parentNode.insertBefore(n, s);
1372
+ }
1373
+ } else {
1374
+ h.appendChild(n);
1375
+ }
1376
+
1377
+
1378
+ // FireFox does not support the onload event for link nodes, so there is
1379
+ // no way to make the css requests synchronous. This means that the css
1380
+ // rules in multiple files could be applied out of order in this browser
1381
+ // if a later request returns before an earlier one. Safari too.
1382
+ if ((ua.webkit || ua.gecko) && q.type === "css") {
1383
+ _next(id, url);
1384
+ }
1385
+ };
1386
+
1387
+ /**
1388
+ * Removes processed queues and corresponding nodes
1389
+ * @method _autoPurge
1390
+ * @private
1391
+ */
1392
+ var _autoPurge = function() {
1393
+
1394
+ if (purging) {
1395
+ return;
1396
+ }
1397
+
1398
+ purging = true;
1399
+ for (var i in queues) {
1400
+ var q = queues[i];
1401
+ if (q.autopurge && q.finished) {
1402
+ _purge(q.tId);
1403
+ delete queues[i];
1404
+ }
1405
+ }
1406
+
1407
+ purging = false;
1408
+ };
1409
+
1410
+ /**
1411
+ * Removes the nodes for the specified queue
1412
+ * @method _purge
1413
+ * @private
1414
+ */
1415
+ var _purge = function(tId) {
1416
+ if (queues[tId]) {
1417
+
1418
+ var q = queues[tId],
1419
+ nodes = q.nodes,
1420
+ l = nodes.length,
1421
+ d = q.win.document,
1422
+ h = d.getElementsByTagName("head")[0],
1423
+ sib, i, node, attr;
1424
+
1425
+ if (q.insertBefore) {
1426
+ sib = _get(q.insertBefore, tId);
1427
+ if (sib) {
1428
+ h = sib.parentNode;
1429
+ }
1430
+ }
1431
+
1432
+ for (i=0; i<l; i=i+1) {
1433
+ node = nodes[i];
1434
+ if (node.clearAttributes) {
1435
+ node.clearAttributes();
1436
+ } else {
1437
+ for (attr in node) {
1438
+ delete node[attr];
1439
+ }
1440
+ }
1441
+
1442
+ h.removeChild(node);
1443
+ }
1444
+
1445
+ q.nodes = [];
1446
+ }
1447
+ };
1448
+
1449
+ /**
1450
+ * Saves the state for the request and begins loading
1451
+ * the requested urls
1452
+ * @method queue
1453
+ * @param type {string} the type of node to insert
1454
+ * @param url {string} the url to load
1455
+ * @param opts the hash of options for this request
1456
+ * @private
1457
+ */
1458
+ var _queue = function(type, url, opts) {
1459
+
1460
+ var id = "q" + (qidx++);
1461
+ opts = opts || {};
1462
+
1463
+ if (qidx % YAHOO.util.Get.PURGE_THRESH === 0) {
1464
+ _autoPurge();
1465
+ }
1466
+
1467
+ queues[id] = lang.merge(opts, {
1468
+ tId: id,
1469
+ type: type,
1470
+ url: url,
1471
+ finished: false,
1472
+ aborted: false,
1473
+ nodes: []
1474
+ });
1475
+
1476
+ var q = queues[id];
1477
+ q.win = q.win || window;
1478
+ q.scope = q.scope || q.win;
1479
+ q.autopurge = ("autopurge" in q) ? q.autopurge :
1480
+ (type === "script") ? true : false;
1481
+
1482
+ if (opts.charset) {
1483
+ q.attributes = q.attributes || {};
1484
+ q.attributes.charset = opts.charset;
1485
+ }
1486
+
1487
+ lang.later(0, q, _next, id);
1488
+
1489
+ return {
1490
+ tId: id
1491
+ };
1492
+ };
1493
+
1494
+ /**
1495
+ * Detects when a node has been loaded. In the case of
1496
+ * script nodes, this does not guarantee that contained
1497
+ * script is ready to use.
1498
+ * @method _track
1499
+ * @param type {string} the type of node to track
1500
+ * @param n {HTMLElement} the node to track
1501
+ * @param id {string} the id of the request
1502
+ * @param url {string} the url that is being loaded
1503
+ * @param win {Window} the targeted window
1504
+ * @param qlength the number of remaining items in the queue,
1505
+ * including this one
1506
+ * @param trackfn {Function} function to execute when finished
1507
+ * the default is _next
1508
+ * @private
1509
+ */
1510
+ var _track = function(type, n, id, url, win, qlength, trackfn) {
1511
+ var f = trackfn || _next;
1512
+
1513
+ // IE supports the readystatechange event for script and css nodes
1514
+ if (ua.ie) {
1515
+ n.onreadystatechange = function() {
1516
+ var rs = this.readyState;
1517
+ if ("loaded" === rs || "complete" === rs) {
1518
+ n.onreadystatechange = null;
1519
+ f(id, url);
1520
+ }
1521
+ };
1522
+
1523
+ // webkit prior to 3.x is problemmatic
1524
+ } else if (ua.webkit) {
1525
+
1526
+ if (type === "script") {
1527
+
1528
+ // Safari 3.x supports the load event for script nodes (DOM2)
1529
+ if (ua.webkit >= 420) {
1530
+
1531
+ n.addEventListener("load", function() {
1532
+ f(id, url);
1533
+ });
1534
+
1535
+ // Nothing can be done with Safari < 3.x except to pause and hope
1536
+ // for the best, particularly after last script is inserted. The
1537
+ // scripts will always execute in the order they arrive, not
1538
+ // necessarily the order in which they were inserted. To support
1539
+ // script nodes with complete reliability in these browsers, script
1540
+ // nodes either need to invoke a function in the window once they
1541
+ // are loaded or the implementer needs to provide a well-known
1542
+ // property that the utility can poll for.
1543
+ } else {
1544
+ // Poll for the existence of the named variable, if it
1545
+ // was supplied.
1546
+ var q = queues[id];
1547
+ if (q.varName) {
1548
+ var freq=YAHOO.util.Get.POLL_FREQ;
1549
+ q.maxattempts = YAHOO.util.Get.TIMEOUT/freq;
1550
+ q.attempts = 0;
1551
+ q._cache = q.varName[0].split(".");
1552
+ q.timer = lang.later(freq, q, function(o) {
1553
+ var a=this._cache, l=a.length, w=this.win, i;
1554
+ for (i=0; i<l; i=i+1) {
1555
+ w = w[a[i]];
1556
+ if (!w) {
1557
+ // if we have exausted our attempts, give up
1558
+ this.attempts++;
1559
+ if (this.attempts++ > this.maxattempts) {
1560
+ var msg = "Over retry limit, giving up";
1561
+ q.timer.cancel();
1562
+ _fail(id, msg);
1563
+ } else {
1564
+ }
1565
+ return;
1566
+ }
1567
+ }
1568
+
1569
+
1570
+ q.timer.cancel();
1571
+ f(id, url);
1572
+
1573
+ }, null, true);
1574
+ } else {
1575
+ lang.later(YAHOO.util.Get.POLL_FREQ, null, f, [id, url]);
1576
+ }
1577
+ }
1578
+ }
1579
+
1580
+ // FireFox and Opera support onload (but not DOM2 in FF) handlers for
1581
+ // script nodes. Opera, but not FF, supports the onload event for link
1582
+ // nodes.
1583
+ } else {
1584
+ n.onload = function() {
1585
+ f(id, url);
1586
+ };
1587
+ }
1588
+ };
1589
+
1590
+ return {
1591
+
1592
+ /**
1593
+ * The default poll freqency in ms, when needed
1594
+ * @property POLL_FREQ
1595
+ * @static
1596
+ * @type int
1597
+ * @default 10
1598
+ */
1599
+ POLL_FREQ: 10,
1600
+
1601
+ /**
1602
+ * The number of request required before an automatic purge.
1603
+ * property PURGE_THRESH
1604
+ * @static
1605
+ * @type int
1606
+ * @default 20
1607
+ */
1608
+ PURGE_THRESH: 20,
1609
+
1610
+ /**
1611
+ * The length time to poll for varName when loading a script in
1612
+ * Safari 2.x before the transaction fails.
1613
+ * property TIMEOUT
1614
+ * @static
1615
+ * @type int
1616
+ * @default 2000
1617
+ */
1618
+ TIMEOUT: 2000,
1619
+
1620
+ /**
1621
+ * Called by the the helper for detecting script load in Safari
1622
+ * @method _finalize
1623
+ * @param id {string} the transaction id
1624
+ * @private
1625
+ */
1626
+ _finalize: function(id) {
1627
+ lang.later(0, null, _finish, id);
1628
+ },
1629
+
1630
+ /**
1631
+ * Abort a transaction
1632
+ * @method abort
1633
+ * @param {string|object} either the tId or the object returned from
1634
+ * script() or css()
1635
+ */
1636
+ abort: function(o) {
1637
+ var id = (lang.isString(o)) ? o : o.tId;
1638
+ var q = queues[id];
1639
+ if (q) {
1640
+ q.aborted = true;
1641
+ }
1642
+ },
1643
+
1644
+ /**
1645
+ * Fetches and inserts one or more script nodes into the head
1646
+ * of the current document or the document in a specified window.
1647
+ *
1648
+ * @method script
1649
+ * @static
1650
+ * @param url {string|string[]} the url or urls to the script(s)
1651
+ * @param opts {object} Options:
1652
+ * <dl>
1653
+ * <dt>onSuccess</dt>
1654
+ * <dd>
1655
+ * callback to execute when the script(s) are finished loading
1656
+ * The callback receives an object back with the following
1657
+ * data:
1658
+ * <dl>
1659
+ * <dt>win</dt>
1660
+ * <dd>the window the script(s) were inserted into</dd>
1661
+ * <dt>data</dt>
1662
+ * <dd>the data object passed in when the request was made</dd>
1663
+ * <dt>nodes</dt>
1664
+ * <dd>An array containing references to the nodes that were
1665
+ * inserted</dd>
1666
+ * <dt>purge</dt>
1667
+ * <dd>A function that, when executed, will remove the nodes
1668
+ * that were inserted</dd>
1669
+ * <dt>
1670
+ * </dl>
1671
+ * </dd>
1672
+ * <dt>onFailure</dt>
1673
+ * <dd>
1674
+ * callback to execute when the script load operation fails
1675
+ * The callback receives an object back with the following
1676
+ * data:
1677
+ * <dl>
1678
+ * <dt>win</dt>
1679
+ * <dd>the window the script(s) were inserted into</dd>
1680
+ * <dt>data</dt>
1681
+ * <dd>the data object passed in when the request was made</dd>
1682
+ * <dt>nodes</dt>
1683
+ * <dd>An array containing references to the nodes that were
1684
+ * inserted successfully</dd>
1685
+ * <dt>purge</dt>
1686
+ * <dd>A function that, when executed, will remove any nodes
1687
+ * that were inserted</dd>
1688
+ * <dt>
1689
+ * </dl>
1690
+ * </dd>
1691
+ * <dt>onTimeout</dt>
1692
+ * <dd>
1693
+ * callback to execute when a timeout occurs.
1694
+ * The callback receives an object back with the following
1695
+ * data:
1696
+ * <dl>
1697
+ * <dt>win</dt>
1698
+ * <dd>the window the script(s) were inserted into</dd>
1699
+ * <dt>data</dt>
1700
+ * <dd>the data object passed in when the request was made</dd>
1701
+ * <dt>nodes</dt>
1702
+ * <dd>An array containing references to the nodes that were
1703
+ * inserted</dd>
1704
+ * <dt>purge</dt>
1705
+ * <dd>A function that, when executed, will remove the nodes
1706
+ * that were inserted</dd>
1707
+ * <dt>
1708
+ * </dl>
1709
+ * </dd>
1710
+ * <dt>scope</dt>
1711
+ * <dd>the execution context for the callbacks</dd>
1712
+ * <dt>win</dt>
1713
+ * <dd>a window other than the one the utility occupies</dd>
1714
+ * <dt>autopurge</dt>
1715
+ * <dd>
1716
+ * setting to true will let the utilities cleanup routine purge
1717
+ * the script once loaded
1718
+ * </dd>
1719
+ * <dt>data</dt>
1720
+ * <dd>
1721
+ * data that is supplied to the callback when the script(s) are
1722
+ * loaded.
1723
+ * </dd>
1724
+ * <dt>varName</dt>
1725
+ * <dd>
1726
+ * variable that should be available when a script is finished
1727
+ * loading. Used to help Safari 2.x and below with script load
1728
+ * detection. The type of this property should match what was
1729
+ * passed into the url parameter: if loading a single url, a
1730
+ * string can be supplied. If loading multiple scripts, you
1731
+ * must supply an array that contains the variable name for
1732
+ * each script.
1733
+ * </dd>
1734
+ * <dt>insertBefore</dt>
1735
+ * <dd>node or node id that will become the new node's nextSibling</dd>
1736
+ * </dl>
1737
+ * <dt>charset</dt>
1738
+ * <dd>Node charset, deprecated, use 'attributes'</dd>
1739
+ * <dt>attributes</dt>
1740
+ * <dd>A hash of attributes to apply to dynamic nodes.</dd>
1741
+ * <dt>timeout</dt>
1742
+ * <dd>Number of milliseconds to wait before aborting and firing the timeout event</dd>
1743
+ * <pre>
1744
+ * // assumes yahoo, dom, and event are already on the page
1745
+ * &nbsp;&nbsp;YAHOO.util.Get.script(
1746
+ * &nbsp;&nbsp;["http://yui.yahooapis.com/2.7.0/build/dragdrop/dragdrop-min.js",
1747
+ * &nbsp;&nbsp;&nbsp;"http://yui.yahooapis.com/2.7.0/build/animation/animation-min.js"], &#123;
1748
+ * &nbsp;&nbsp;&nbsp;&nbsp;onSuccess: function(o) &#123;
1749
+ * &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;new YAHOO.util.DDProxy("dd1"); // also new o.reference("dd1"); would work
1750
+ * &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;this.log("won't cause error because YAHOO is the scope");
1751
+ * &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;this.log(o.nodes.length === 2) // true
1752
+ * &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;// o.purge(); // optionally remove the script nodes immediately
1753
+ * &nbsp;&nbsp;&nbsp;&nbsp;&#125;,
1754
+ * &nbsp;&nbsp;&nbsp;&nbsp;onFailure: function(o) &#123;
1755
+ * &nbsp;&nbsp;&nbsp;&nbsp;&#125;,
1756
+ * &nbsp;&nbsp;&nbsp;&nbsp;data: "foo",
1757
+ * &nbsp;&nbsp;&nbsp;&nbsp;timeout: 10000, // 10 second timeout
1758
+ * &nbsp;&nbsp;&nbsp;&nbsp;scope: YAHOO,
1759
+ * &nbsp;&nbsp;&nbsp;&nbsp;// win: otherframe // target another window/frame
1760
+ * &nbsp;&nbsp;&nbsp;&nbsp;autopurge: true // allow the utility to choose when to remove the nodes
1761
+ * &nbsp;&nbsp;&#125;);
1762
+ * </pre>
1763
+ * @return {tId: string} an object containing info about the transaction
1764
+ */
1765
+ script: function(url, opts) { return _queue("script", url, opts); },
1766
+
1767
+ /**
1768
+ * Fetches and inserts one or more css link nodes into the
1769
+ * head of the current document or the document in a specified
1770
+ * window.
1771
+ * @method css
1772
+ * @static
1773
+ * @param url {string} the url or urls to the css file(s)
1774
+ * @param opts Options:
1775
+ * <dl>
1776
+ * <dt>onSuccess</dt>
1777
+ * <dd>
1778
+ * callback to execute when the css file(s) are finished loading
1779
+ * The callback receives an object back with the following
1780
+ * data:
1781
+ * <dl>win</dl>
1782
+ * <dd>the window the link nodes(s) were inserted into</dd>
1783
+ * <dt>data</dt>
1784
+ * <dd>the data object passed in when the request was made</dd>
1785
+ * <dt>nodes</dt>
1786
+ * <dd>An array containing references to the nodes that were
1787
+ * inserted</dd>
1788
+ * <dt>purge</dt>
1789
+ * <dd>A function that, when executed, will remove the nodes
1790
+ * that were inserted</dd>
1791
+ * <dt>
1792
+ * </dl>
1793
+ * </dd>
1794
+ * <dt>scope</dt>
1795
+ * <dd>the execution context for the callbacks</dd>
1796
+ * <dt>win</dt>
1797
+ * <dd>a window other than the one the utility occupies</dd>
1798
+ * <dt>data</dt>
1799
+ * <dd>
1800
+ * data that is supplied to the callbacks when the nodes(s) are
1801
+ * loaded.
1802
+ * </dd>
1803
+ * <dt>insertBefore</dt>
1804
+ * <dd>node or node id that will become the new node's nextSibling</dd>
1805
+ * <dt>charset</dt>
1806
+ * <dd>Node charset, deprecated, use 'attributes'</dd>
1807
+ * <dt>attributes</dt>
1808
+ * <dd>A hash of attributes to apply to dynamic nodes.</dd>
1809
+ * </dl>
1810
+ * <pre>
1811
+ * YAHOO.util.Get.css("http://yui.yahooapis.com/2.7.0/build/menu/assets/skins/sam/menu.css");
1812
+ * </pre>
1813
+ * <pre>
1814
+ * YAHOO.util.Get.css(["http://yui.yahooapis.com/2.7.0/build/menu/assets/skins/sam/menu.css",
1815
+ * </pre>
1816
+ * @return {tId: string} an object containing info about the transaction
1817
+ */
1818
+ css: function(url, opts) {
1819
+ return _queue("css", url, opts);
1820
+ }
1821
+ };
1822
+ }();
1823
+
1824
+ YAHOO.register("get", YAHOO.util.Get, {version: "2.8.1", build: "19"});
1825
+ /**
1826
+ * Provides dynamic loading for the YUI library. It includes the dependency
1827
+ * info for the library, and will automatically pull in dependencies for
1828
+ * the modules requested. It supports rollup files (such as utilities.js
1829
+ * and yahoo-dom-event.js), and will automatically use these when
1830
+ * appropriate in order to minimize the number of http connections
1831
+ * required to load all of the dependencies.
1832
+ *
1833
+ * @module yuiloader
1834
+ * @namespace YAHOO.util
1835
+ */
1836
+
1837
+ /**
1838
+ * YUILoader provides dynamic loading for YUI.
1839
+ * @class YAHOO.util.YUILoader
1840
+ * @todo
1841
+ * version management, automatic sandboxing
1842
+ */
1843
+ (function() {
1844
+
1845
+ var Y=YAHOO, util=Y.util, lang=Y.lang, env=Y.env,
1846
+ PROV = "_provides", SUPER = "_supersedes",
1847
+ REQ = "expanded", AFTER = "_after";
1848
+
1849
+ var YUI = {
1850
+
1851
+ dupsAllowed: {'yahoo': true, 'get': true},
1852
+
1853
+ /*
1854
+ * The library metadata for the current release The is the default
1855
+ * value for YAHOO.util.YUILoader.moduleInfo
1856
+ * @property YUIInfo
1857
+ * @static
1858
+ */
1859
+ info: {
1860
+
1861
+ // 'root': '2.5.2/build/',
1862
+ // 'base': 'http://yui.yahooapis.com/2.5.2/build/',
1863
+
1864
+ 'root': '2.8.1/build/',
1865
+ 'base': 'http://yui.yahooapis.com/2.8.1/build/',
1866
+
1867
+ 'comboBase': 'http://yui.yahooapis.com/combo?',
1868
+
1869
+ 'skin': {
1870
+ 'defaultSkin': 'sam',
1871
+ 'base': 'assets/skins/',
1872
+ 'path': 'skin.css',
1873
+ 'after': ['reset', 'fonts', 'grids', 'base'],
1874
+ 'rollup': 3
1875
+ },
1876
+
1877
+ dupsAllowed: ['yahoo', 'get'],
1878
+
1879
+ 'moduleInfo': {
1880
+
1881
+ 'animation': {
1882
+ 'type': 'js',
1883
+ 'path': 'animation/animation-min.js',
1884
+ 'requires': ['dom', 'event']
1885
+ },
1886
+
1887
+ 'autocomplete': {
1888
+ 'type': 'js',
1889
+ 'path': 'autocomplete/autocomplete-min.js',
1890
+ 'requires': ['dom', 'event', 'datasource'],
1891
+ 'optional': ['connection', 'animation'],
1892
+ 'skinnable': true
1893
+ },
1894
+
1895
+ 'base': {
1896
+ 'type': 'css',
1897
+ 'path': 'base/base-min.css',
1898
+ 'after': ['reset', 'fonts', 'grids']
1899
+ },
1900
+
1901
+ 'button': {
1902
+ 'type': 'js',
1903
+ 'path': 'button/button-min.js',
1904
+ 'requires': ['element'],
1905
+ 'optional': ['menu'],
1906
+ 'skinnable': true
1907
+ },
1908
+
1909
+ 'calendar': {
1910
+ 'type': 'js',
1911
+ 'path': 'calendar/calendar-min.js',
1912
+ 'requires': ['event', 'dom'],
1913
+ supersedes: ['datemeth'],
1914
+ 'skinnable': true
1915
+ },
1916
+
1917
+ 'carousel': {
1918
+ 'type': 'js',
1919
+ 'path': 'carousel/carousel-min.js',
1920
+ 'requires': ['element'],
1921
+ 'optional': ['animation'],
1922
+ 'skinnable': true
1923
+ },
1924
+
1925
+ 'charts': {
1926
+ 'type': 'js',
1927
+ 'path': 'charts/charts-min.js',
1928
+ 'requires': ['element', 'json', 'datasource', 'swf']
1929
+ },
1930
+
1931
+ 'colorpicker': {
1932
+ 'type': 'js',
1933
+ 'path': 'colorpicker/colorpicker-min.js',
1934
+ 'requires': ['slider', 'element'],
1935
+ 'optional': ['animation'],
1936
+ 'skinnable': true
1937
+ },
1938
+
1939
+ 'connection': {
1940
+ 'type': 'js',
1941
+ 'path': 'connection/connection-min.js',
1942
+ 'requires': ['event'],
1943
+ 'supersedes': ['connectioncore']
1944
+ },
1945
+
1946
+ 'connectioncore': {
1947
+ 'type': 'js',
1948
+ 'path': 'connection/connection_core-min.js',
1949
+ 'requires': ['event'],
1950
+ 'pkg': 'connection'
1951
+ },
1952
+
1953
+ 'container': {
1954
+ 'type': 'js',
1955
+ 'path': 'container/container-min.js',
1956
+ 'requires': ['dom', 'event'],
1957
+ // button is also optional, but this creates a circular
1958
+ // dependency when loadOptional is specified. button
1959
+ // optionally includes menu, menu requires container.
1960
+ 'optional': ['dragdrop', 'animation', 'connection'],
1961
+ 'supersedes': ['containercore'],
1962
+ 'skinnable': true
1963
+ },
1964
+
1965
+ 'containercore': {
1966
+ 'type': 'js',
1967
+ 'path': 'container/container_core-min.js',
1968
+ 'requires': ['dom', 'event'],
1969
+ 'pkg': 'container'
1970
+ },
1971
+
1972
+ 'cookie': {
1973
+ 'type': 'js',
1974
+ 'path': 'cookie/cookie-min.js',
1975
+ 'requires': ['yahoo']
1976
+ },
1977
+
1978
+ 'datasource': {
1979
+ 'type': 'js',
1980
+ 'path': 'datasource/datasource-min.js',
1981
+ 'requires': ['event'],
1982
+ 'optional': ['connection']
1983
+ },
1984
+
1985
+ 'datatable': {
1986
+ 'type': 'js',
1987
+ 'path': 'datatable/datatable-min.js',
1988
+ 'requires': ['element', 'datasource'],
1989
+ 'optional': ['calendar', 'dragdrop', 'paginator'],
1990
+ 'skinnable': true
1991
+ },
1992
+
1993
+ datemath: {
1994
+ 'type': 'js',
1995
+ 'path': 'datemath/datemath-min.js',
1996
+ 'requires': ['yahoo']
1997
+ },
1998
+
1999
+ 'dom': {
2000
+ 'type': 'js',
2001
+ 'path': 'dom/dom-min.js',
2002
+ 'requires': ['yahoo']
2003
+ },
2004
+
2005
+ 'dragdrop': {
2006
+ 'type': 'js',
2007
+ 'path': 'dragdrop/dragdrop-min.js',
2008
+ 'requires': ['dom', 'event']
2009
+ },
2010
+
2011
+ 'editor': {
2012
+ 'type': 'js',
2013
+ 'path': 'editor/editor-min.js',
2014
+ 'requires': ['menu', 'element', 'button'],
2015
+ 'optional': ['animation', 'dragdrop'],
2016
+ 'supersedes': ['simpleeditor'],
2017
+ 'skinnable': true
2018
+ },
2019
+
2020
+ 'element': {
2021
+ 'type': 'js',
2022
+ 'path': 'element/element-min.js',
2023
+ 'requires': ['dom', 'event'],
2024
+ 'optional': ['event-mouseenter', 'event-delegate']
2025
+ },
2026
+
2027
+ 'element-delegate': {
2028
+ 'type': 'js',
2029
+ 'path': 'element-delegate/element-delegate-min.js',
2030
+ 'requires': ['element']
2031
+ },
2032
+
2033
+ 'event': {
2034
+ 'type': 'js',
2035
+ 'path': 'event/event-min.js',
2036
+ 'requires': ['yahoo']
2037
+ },
2038
+
2039
+ 'event-simulate': {
2040
+ 'type': 'js',
2041
+ 'path': 'event-simulate/event-simulate-min.js',
2042
+ 'requires': ['event']
2043
+ },
2044
+
2045
+ 'event-delegate': {
2046
+ 'type': 'js',
2047
+ 'path': 'event-delegate/event-delegate-min.js',
2048
+ 'requires': ['event'],
2049
+ 'optional': ['selector']
2050
+ },
2051
+
2052
+ 'event-mouseenter': {
2053
+ 'type': 'js',
2054
+ 'path': 'event-mouseenter/event-mouseenter-min.js',
2055
+ 'requires': ['dom', 'event']
2056
+ },
2057
+
2058
+ 'fonts': {
2059
+ 'type': 'css',
2060
+ 'path': 'fonts/fonts-min.css'
2061
+ },
2062
+
2063
+ 'get': {
2064
+ 'type': 'js',
2065
+ 'path': 'get/get-min.js',
2066
+ 'requires': ['yahoo']
2067
+ },
2068
+
2069
+ 'grids': {
2070
+ 'type': 'css',
2071
+ 'path': 'grids/grids-min.css',
2072
+ 'requires': ['fonts'],
2073
+ 'optional': ['reset']
2074
+ },
2075
+
2076
+ 'history': {
2077
+ 'type': 'js',
2078
+ 'path': 'history/history-min.js',
2079
+ 'requires': ['event']
2080
+ },
2081
+
2082
+ 'imagecropper': {
2083
+ 'type': 'js',
2084
+ 'path': 'imagecropper/imagecropper-min.js',
2085
+ 'requires': ['dragdrop', 'element', 'resize'],
2086
+ 'skinnable': true
2087
+ },
2088
+
2089
+ 'imageloader': {
2090
+ 'type': 'js',
2091
+ 'path': 'imageloader/imageloader-min.js',
2092
+ 'requires': ['event', 'dom']
2093
+ },
2094
+
2095
+ 'json': {
2096
+ 'type': 'js',
2097
+ 'path': 'json/json-min.js',
2098
+ 'requires': ['yahoo']
2099
+ },
2100
+
2101
+ 'layout': {
2102
+ 'type': 'js',
2103
+ 'path': 'layout/layout-min.js',
2104
+ 'requires': ['element'],
2105
+ 'optional': ['animation', 'dragdrop', 'resize', 'selector'],
2106
+ 'skinnable': true
2107
+ },
2108
+
2109
+ 'logger': {
2110
+ 'type': 'js',
2111
+ 'path': 'logger/logger-min.js',
2112
+ 'requires': ['event', 'dom'],
2113
+ 'optional': ['dragdrop'],
2114
+ 'skinnable': true
2115
+ },
2116
+
2117
+ 'menu': {
2118
+ 'type': 'js',
2119
+ 'path': 'menu/menu-min.js',
2120
+ 'requires': ['containercore'],
2121
+ 'skinnable': true
2122
+ },
2123
+
2124
+ 'paginator': {
2125
+ 'type': 'js',
2126
+ 'path': 'paginator/paginator-min.js',
2127
+ 'requires': ['element'],
2128
+ 'skinnable': true
2129
+ },
2130
+
2131
+ 'profiler': {
2132
+ 'type': 'js',
2133
+ 'path': 'profiler/profiler-min.js',
2134
+ 'requires': ['yahoo']
2135
+ },
2136
+
2137
+
2138
+ 'profilerviewer': {
2139
+ 'type': 'js',
2140
+ 'path': 'profilerviewer/profilerviewer-min.js',
2141
+ 'requires': ['profiler', 'yuiloader', 'element'],
2142
+ 'skinnable': true
2143
+ },
2144
+
2145
+ 'progressbar': {
2146
+ 'type': 'js',
2147
+ 'path': 'progressbar/progressbar-min.js',
2148
+ 'requires': ['element'],
2149
+ 'optional': ['animation'],
2150
+ 'skinnable': true
2151
+ },
2152
+
2153
+ 'reset': {
2154
+ 'type': 'css',
2155
+ 'path': 'reset/reset-min.css'
2156
+ },
2157
+
2158
+ 'reset-fonts-grids': {
2159
+ 'type': 'css',
2160
+ 'path': 'reset-fonts-grids/reset-fonts-grids.css',
2161
+ 'supersedes': ['reset', 'fonts', 'grids', 'reset-fonts'],
2162
+ 'rollup': 4
2163
+ },
2164
+
2165
+ 'reset-fonts': {
2166
+ 'type': 'css',
2167
+ 'path': 'reset-fonts/reset-fonts.css',
2168
+ 'supersedes': ['reset', 'fonts'],
2169
+ 'rollup': 2
2170
+ },
2171
+
2172
+ 'resize': {
2173
+ 'type': 'js',
2174
+ 'path': 'resize/resize-min.js',
2175
+ 'requires': ['dragdrop', 'element'],
2176
+ 'optional': ['animation'],
2177
+ 'skinnable': true
2178
+ },
2179
+
2180
+ 'selector': {
2181
+ 'type': 'js',
2182
+ 'path': 'selector/selector-min.js',
2183
+ 'requires': ['yahoo', 'dom']
2184
+ },
2185
+
2186
+ 'simpleeditor': {
2187
+ 'type': 'js',
2188
+ 'path': 'editor/simpleeditor-min.js',
2189
+ 'requires': ['element'],
2190
+ 'optional': ['containercore', 'menu', 'button', 'animation', 'dragdrop'],
2191
+ 'skinnable': true,
2192
+ 'pkg': 'editor'
2193
+ },
2194
+
2195
+ 'slider': {
2196
+ 'type': 'js',
2197
+ 'path': 'slider/slider-min.js',
2198
+ 'requires': ['dragdrop'],
2199
+ 'optional': ['animation'],
2200
+ 'skinnable': true
2201
+ },
2202
+
2203
+ 'storage': {
2204
+ 'type': 'js',
2205
+ 'path': 'storage/storage-min.js',
2206
+ 'requires': ['yahoo', 'event', 'cookie'],
2207
+ 'optional': ['swfstore']
2208
+ },
2209
+
2210
+ 'stylesheet': {
2211
+ 'type': 'js',
2212
+ 'path': 'stylesheet/stylesheet-min.js',
2213
+ 'requires': ['yahoo']
2214
+ },
2215
+
2216
+ 'swf': {
2217
+ 'type': 'js',
2218
+ 'path': 'swf/swf-min.js',
2219
+ 'requires': ['element'],
2220
+ 'supersedes': ['swfdetect']
2221
+ },
2222
+
2223
+ 'swfdetect': {
2224
+ 'type': 'js',
2225
+ 'path': 'swfdetect/swfdetect-min.js',
2226
+ 'requires': ['yahoo']
2227
+ },
2228
+
2229
+ 'swfstore': {
2230
+ 'type': 'js',
2231
+ 'path': 'swfstore/swfstore-min.js',
2232
+ 'requires': ['element', 'cookie', 'swf']
2233
+ },
2234
+
2235
+ 'tabview': {
2236
+ 'type': 'js',
2237
+ 'path': 'tabview/tabview-min.js',
2238
+ 'requires': ['element'],
2239
+ 'optional': ['connection'],
2240
+ 'skinnable': true
2241
+ },
2242
+
2243
+ 'treeview': {
2244
+ 'type': 'js',
2245
+ 'path': 'treeview/treeview-min.js',
2246
+ 'requires': ['event', 'dom'],
2247
+ 'optional': ['json', 'animation', 'calendar'],
2248
+ 'skinnable': true
2249
+ },
2250
+
2251
+ 'uploader': {
2252
+ 'type': 'js',
2253
+ 'path': 'uploader/uploader-min.js',
2254
+ 'requires': ['element']
2255
+ },
2256
+
2257
+ 'utilities': {
2258
+ 'type': 'js',
2259
+ 'path': 'utilities/utilities.js',
2260
+ 'supersedes': ['yahoo', 'event', 'dragdrop', 'animation', 'dom', 'connection', 'element', 'yahoo-dom-event', 'get', 'yuiloader', 'yuiloader-dom-event'],
2261
+ 'rollup': 8
2262
+ },
2263
+
2264
+ 'yahoo': {
2265
+ 'type': 'js',
2266
+ 'path': 'yahoo/yahoo-min.js'
2267
+ },
2268
+
2269
+ 'yahoo-dom-event': {
2270
+ 'type': 'js',
2271
+ 'path': 'yahoo-dom-event/yahoo-dom-event.js',
2272
+ 'supersedes': ['yahoo', 'event', 'dom'],
2273
+ 'rollup': 3
2274
+ },
2275
+
2276
+ 'yuiloader': {
2277
+ 'type': 'js',
2278
+ 'path': 'yuiloader/yuiloader-min.js',
2279
+ 'supersedes': ['yahoo', 'get']
2280
+ },
2281
+
2282
+ 'yuiloader-dom-event': {
2283
+ 'type': 'js',
2284
+ 'path': 'yuiloader-dom-event/yuiloader-dom-event.js',
2285
+ 'supersedes': ['yahoo', 'dom', 'event', 'get', 'yuiloader', 'yahoo-dom-event'],
2286
+ 'rollup': 5
2287
+ },
2288
+
2289
+ 'yuitest': {
2290
+ 'type': 'js',
2291
+ 'path': 'yuitest/yuitest-min.js',
2292
+ 'requires': ['logger'],
2293
+ 'optional': ['event-simulate'],
2294
+ 'skinnable': true
2295
+ }
2296
+ }
2297
+ }
2298
+ ,
2299
+
2300
+ ObjectUtil: {
2301
+ appendArray: function(o, a) {
2302
+ if (a) {
2303
+ for (var i=0; i<a.length; i=i+1) {
2304
+ o[a[i]] = true;
2305
+ }
2306
+ }
2307
+ },
2308
+
2309
+ keys: function(o, ordered) {
2310
+ var a=[], i;
2311
+ for (i in o) {
2312
+ if (lang.hasOwnProperty(o, i)) {
2313
+ a.push(i);
2314
+ }
2315
+ }
2316
+
2317
+ return a;
2318
+ }
2319
+ },
2320
+
2321
+ ArrayUtil: {
2322
+
2323
+ appendArray: function(a1, a2) {
2324
+ Array.prototype.push.apply(a1, a2);
2325
+ /*
2326
+ for (var i=0; i<a2.length; i=i+1) {
2327
+ a1.push(a2[i]);
2328
+ }
2329
+ */
2330
+ },
2331
+
2332
+ indexOf: function(a, val) {
2333
+ for (var i=0; i<a.length; i=i+1) {
2334
+ if (a[i] === val) {
2335
+ return i;
2336
+ }
2337
+ }
2338
+
2339
+ return -1;
2340
+ },
2341
+
2342
+ toObject: function(a) {
2343
+ var o = {};
2344
+ for (var i=0; i<a.length; i=i+1) {
2345
+ o[a[i]] = true;
2346
+ }
2347
+
2348
+ return o;
2349
+ },
2350
+
2351
+ /*
2352
+ * Returns a unique array. Does not maintain order, which is fine
2353
+ * for this application, and performs better than it would if it
2354
+ * did.
2355
+ */
2356
+ uniq: function(a) {
2357
+ return YUI.ObjectUtil.keys(YUI.ArrayUtil.toObject(a));
2358
+ }
2359
+ }
2360
+ };
2361
+
2362
+ YAHOO.util.YUILoader = function(o) {
2363
+
2364
+ /**
2365
+ * Internal callback to handle multiple internal insert() calls
2366
+ * so that css is inserted prior to js
2367
+ * @property _internalCallback
2368
+ * @private
2369
+ */
2370
+ this._internalCallback = null;
2371
+
2372
+ /**
2373
+ * Use the YAHOO environment listener to detect script load. This
2374
+ * is only switched on for Safari 2.x and below.
2375
+ * @property _useYahooListener
2376
+ * @private
2377
+ */
2378
+ this._useYahooListener = false;
2379
+
2380
+ /**
2381
+ * Callback that will be executed when the loader is finished
2382
+ * with an insert
2383
+ * @method onSuccess
2384
+ * @type function
2385
+ */
2386
+ this.onSuccess = null;
2387
+
2388
+ /**
2389
+ * Callback that will be executed if there is a failure
2390
+ * @method onFailure
2391
+ * @type function
2392
+ */
2393
+ this.onFailure = Y.log;
2394
+
2395
+ /**
2396
+ * Callback that will be executed each time a new module is loaded
2397
+ * @method onProgress
2398
+ * @type function
2399
+ */
2400
+ this.onProgress = null;
2401
+
2402
+ /**
2403
+ * Callback that will be executed if a timeout occurs
2404
+ * @method onTimeout
2405
+ * @type function
2406
+ */
2407
+ this.onTimeout = null;
2408
+
2409
+ /**
2410
+ * The execution scope for all callbacks
2411
+ * @property scope
2412
+ * @default this
2413
+ */
2414
+ this.scope = this;
2415
+
2416
+ /**
2417
+ * Data that is passed to all callbacks
2418
+ * @property data
2419
+ */
2420
+ this.data = null;
2421
+
2422
+ /**
2423
+ * Node reference or id where new nodes should be inserted before
2424
+ * @property insertBefore
2425
+ * @type string|HTMLElement
2426
+ */
2427
+ this.insertBefore = null;
2428
+
2429
+ /**
2430
+ * The charset attribute for inserted nodes
2431
+ * @property charset
2432
+ * @type string
2433
+ * @default utf-8
2434
+ */
2435
+ this.charset = null;
2436
+
2437
+ /**
2438
+ * The name of the variable in a sandbox or script node
2439
+ * (for external script support in Safari 2.x and earlier)
2440
+ * to reference when the load is complete. If this variable
2441
+ * is not available in the specified scripts, the operation will
2442
+ * fail.
2443
+ * @property varName
2444
+ * @type string
2445
+ */
2446
+ this.varName = null;
2447
+
2448
+ /**
2449
+ * The base directory.
2450
+ * @property base
2451
+ * @type string
2452
+ * @default http://yui.yahooapis.com/[YUI VERSION]/build/
2453
+ */
2454
+ this.base = YUI.info.base;
2455
+
2456
+ /**
2457
+ * Base path for the combo service
2458
+ * @property comboBase
2459
+ * @type string
2460
+ * @default http://yui.yahooapis.com/combo?
2461
+ */
2462
+ this.comboBase = YUI.info.comboBase;
2463
+
2464
+ /**
2465
+ * If configured, YUI will use the the combo handler on the
2466
+ * Yahoo! CDN to pontentially reduce the number of http requests
2467
+ * required.
2468
+ * @property combine
2469
+ * @type boolean
2470
+ * @default false
2471
+ */
2472
+ // this.combine = (o && !('base' in o));
2473
+ this.combine = false;
2474
+
2475
+
2476
+ /**
2477
+ * Root path to prepend to module path for the combo
2478
+ * service
2479
+ * @property root
2480
+ * @type string
2481
+ * @default [YUI VERSION]/build/
2482
+ */
2483
+ this.root = YUI.info.root;
2484
+
2485
+ /**
2486
+ * Timeout value in milliseconds. If set, this value will be used by
2487
+ * the get utility. the timeout event will fire if
2488
+ * a timeout occurs.
2489
+ * @property timeout
2490
+ * @type int
2491
+ */
2492
+ this.timeout = 0;
2493
+
2494
+ /**
2495
+ * A list of modules that should not be loaded, even if
2496
+ * they turn up in the dependency tree
2497
+ * @property ignore
2498
+ * @type string[]
2499
+ */
2500
+ this.ignore = null;
2501
+
2502
+ /**
2503
+ * A list of modules that should always be loaded, even
2504
+ * if they have already been inserted into the page.
2505
+ * @property force
2506
+ * @type string[]
2507
+ */
2508
+ this.force = null;
2509
+
2510
+ /**
2511
+ * Should we allow rollups
2512
+ * @property allowRollup
2513
+ * @type boolean
2514
+ * @default true
2515
+ */
2516
+ this.allowRollup = true;
2517
+
2518
+ /**
2519
+ * A filter to apply to result urls. This filter will modify the default
2520
+ * path for all modules. The default path for the YUI library is the
2521
+ * minified version of the files (e.g., event-min.js). The filter property
2522
+ * can be a predefined filter or a custom filter. The valid predefined
2523
+ * filters are:
2524
+ * <dl>
2525
+ * <dt>DEBUG</dt>
2526
+ * <dd>Selects the debug versions of the library (e.g., event-debug.js).
2527
+ * This option will automatically include the logger widget</dd>
2528
+ * <dt>RAW</dt>
2529
+ * <dd>Selects the non-minified version of the library (e.g., event.js).
2530
+ * </dl>
2531
+ * You can also define a custom filter, which must be an object literal
2532
+ * containing a search expression and a replace string:
2533
+ * <pre>
2534
+ * myFilter: &#123;
2535
+ * 'searchExp': "-min\\.js",
2536
+ * 'replaceStr': "-debug.js"
2537
+ * &#125;
2538
+ * </pre>
2539
+ * @property filter
2540
+ * @type string|{searchExp: string, replaceStr: string}
2541
+ */
2542
+ this.filter = null;
2543
+
2544
+ /**
2545
+ * The list of requested modules
2546
+ * @property required
2547
+ * @type {string: boolean}
2548
+ */
2549
+ this.required = {};
2550
+
2551
+ /**
2552
+ * The library metadata
2553
+ * @property moduleInfo
2554
+ */
2555
+ this.moduleInfo = lang.merge(YUI.info.moduleInfo);
2556
+
2557
+ /**
2558
+ * List of rollup files found in the library metadata
2559
+ * @property rollups
2560
+ */
2561
+ this.rollups = null;
2562
+
2563
+ /**
2564
+ * Whether or not to load optional dependencies for
2565
+ * the requested modules
2566
+ * @property loadOptional
2567
+ * @type boolean
2568
+ * @default false
2569
+ */
2570
+ this.loadOptional = false;
2571
+
2572
+ /**
2573
+ * All of the derived dependencies in sorted order, which
2574
+ * will be populated when either calculate() or insert()
2575
+ * is called
2576
+ * @property sorted
2577
+ * @type string[]
2578
+ */
2579
+ this.sorted = [];
2580
+
2581
+ /**
2582
+ * Set when beginning to compute the dependency tree.
2583
+ * Composed of what YAHOO reports to be loaded combined
2584
+ * with what has been loaded by the tool
2585
+ * @propery loaded
2586
+ * @type {string: boolean}
2587
+ */
2588
+ this.loaded = {};
2589
+
2590
+ /**
2591
+ * Flag to indicate the dependency tree needs to be recomputed
2592
+ * if insert is called again.
2593
+ * @property dirty
2594
+ * @type boolean
2595
+ * @default true
2596
+ */
2597
+ this.dirty = true;
2598
+
2599
+ /**
2600
+ * List of modules inserted by the utility
2601
+ * @property inserted
2602
+ * @type {string: boolean}
2603
+ */
2604
+ this.inserted = {};
2605
+
2606
+ /**
2607
+ * Provides the information used to skin the skinnable components.
2608
+ * The following skin definition would result in 'skin1' and 'skin2'
2609
+ * being loaded for calendar (if calendar was requested), and
2610
+ * 'sam' for all other skinnable components:
2611
+ *
2612
+ * <code>
2613
+ * skin: {
2614
+ *
2615
+ * // The default skin, which is automatically applied if not
2616
+ * // overriden by a component-specific skin definition.
2617
+ * // Change this in to apply a different skin globally
2618
+ * defaultSkin: 'sam',
2619
+ *
2620
+ * // This is combined with the loader base property to get
2621
+ * // the default root directory for a skin. ex:
2622
+ * // http://yui.yahooapis.com/2.3.0/build/assets/skins/sam/
2623
+ * base: 'assets/skins/',
2624
+ *
2625
+ * // The name of the rollup css file for the skin
2626
+ * path: 'skin.css',
2627
+ *
2628
+ * // The number of skinnable components requested that are
2629
+ * // required before using the rollup file rather than the
2630
+ * // individual component css files
2631
+ * rollup: 3,
2632
+ *
2633
+ * // Any component-specific overrides can be specified here,
2634
+ * // making it possible to load different skins for different
2635
+ * // components. It is possible to load more than one skin
2636
+ * // for a given component as well.
2637
+ * overrides: {
2638
+ * calendar: ['skin1', 'skin2']
2639
+ * }
2640
+ * }
2641
+ * </code>
2642
+ * @property skin
2643
+ */
2644
+
2645
+ var self = this;
2646
+
2647
+ env.listeners.push(function(m) {
2648
+ if (self._useYahooListener) {
2649
+ //Y.log("YAHOO listener: " + m.name);
2650
+ self.loadNext(m.name);
2651
+ }
2652
+ });
2653
+
2654
+ this.skin = lang.merge(YUI.info.skin);
2655
+
2656
+ this._config(o);
2657
+
2658
+ };
2659
+
2660
+ Y.util.YUILoader.prototype = {
2661
+
2662
+ FILTERS: {
2663
+ RAW: {
2664
+ 'searchExp': "-min\\.js",
2665
+ 'replaceStr': ".js"
2666
+ },
2667
+ DEBUG: {
2668
+ 'searchExp': "-min\\.js",
2669
+ 'replaceStr': "-debug.js"
2670
+ }
2671
+ },
2672
+
2673
+ SKIN_PREFIX: "skin-",
2674
+
2675
+ _config: function(o) {
2676
+
2677
+ // apply config values
2678
+ if (o) {
2679
+ for (var i in o) {
2680
+ if (lang.hasOwnProperty(o, i)) {
2681
+ if (i == "require") {
2682
+ this.require(o[i]);
2683
+ } else {
2684
+ this[i] = o[i];
2685
+ }
2686
+ }
2687
+ }
2688
+ }
2689
+
2690
+ // fix filter
2691
+ var f = this.filter;
2692
+
2693
+ if (lang.isString(f)) {
2694
+ f = f.toUpperCase();
2695
+
2696
+ // the logger must be available in order to use the debug
2697
+ // versions of the library
2698
+ if (f === "DEBUG") {
2699
+ this.require("logger");
2700
+ }
2701
+
2702
+ // hack to handle a a bug where LogWriter is being instantiated
2703
+ // at load time, and the loader has no way to sort above it
2704
+ // at the moment.
2705
+ if (!Y.widget.LogWriter) {
2706
+ Y.widget.LogWriter = function() {
2707
+ return Y;
2708
+ };
2709
+ }
2710
+
2711
+ this.filter = this.FILTERS[f];
2712
+ }
2713
+
2714
+ },
2715
+
2716
+ /** Add a new module to the component metadata.
2717
+ * <dl>
2718
+ * <dt>name:</dt> <dd>required, the component name</dd>
2719
+ * <dt>type:</dt> <dd>required, the component type (js or css)</dd>
2720
+ * <dt>path:</dt> <dd>required, the path to the script from "base"</dd>
2721
+ * <dt>requires:</dt> <dd>array of modules required by this component</dd>
2722
+ * <dt>optional:</dt> <dd>array of optional modules for this component</dd>
2723
+ * <dt>supersedes:</dt> <dd>array of the modules this component replaces</dd>
2724
+ * <dt>after:</dt> <dd>array of modules the components which, if present, should be sorted above this one</dd>
2725
+ * <dt>rollup:</dt> <dd>the number of superseded modules required for automatic rollup</dd>
2726
+ * <dt>fullpath:</dt> <dd>If fullpath is specified, this is used instead of the configured base + path</dd>
2727
+ * <dt>skinnable:</dt> <dd>flag to determine if skin assets should automatically be pulled in</dd>
2728
+ * </dl>
2729
+ * @method addModule
2730
+ * @param o An object containing the module data
2731
+ * @return {boolean} true if the module was added, false if
2732
+ * the object passed in did not provide all required attributes
2733
+ */
2734
+ addModule: function(o) {
2735
+
2736
+ if (!o || !o.name || !o.type || (!o.path && !o.fullpath)) {
2737
+ return false;
2738
+ }
2739
+
2740
+ o.ext = ('ext' in o) ? o.ext : true;
2741
+ o.requires = o.requires || [];
2742
+
2743
+ this.moduleInfo[o.name] = o;
2744
+ this.dirty = true;
2745
+
2746
+ return true;
2747
+ },
2748
+
2749
+ /**
2750
+ * Add a requirement for one or more module
2751
+ * @method require
2752
+ * @param what {string[] | string*} the modules to load
2753
+ */
2754
+ require: function(what) {
2755
+ var a = (typeof what === "string") ? arguments : what;
2756
+ this.dirty = true;
2757
+ YUI.ObjectUtil.appendArray(this.required, a);
2758
+ },
2759
+
2760
+ /**
2761
+ * Adds the skin def to the module info
2762
+ * @method _addSkin
2763
+ * @param skin {string} the name of the skin
2764
+ * @param mod {string} the name of the module
2765
+ * @return {string} the module name for the skin
2766
+ * @private
2767
+ */
2768
+ _addSkin: function(skin, mod) {
2769
+
2770
+ // Add a module definition for the skin rollup css
2771
+ var name = this.formatSkin(skin), info = this.moduleInfo,
2772
+ sinf = this.skin, ext = info[mod] && info[mod].ext;
2773
+
2774
+ // Y.log('ext? ' + mod + ": " + ext);
2775
+ if (!info[name]) {
2776
+ // Y.log('adding skin ' + name);
2777
+ this.addModule({
2778
+ 'name': name,
2779
+ 'type': 'css',
2780
+ 'path': sinf.base + skin + '/' + sinf.path,
2781
+ //'supersedes': '*',
2782
+ 'after': sinf.after,
2783
+ 'rollup': sinf.rollup,
2784
+ 'ext': ext
2785
+ });
2786
+ }
2787
+
2788
+ // Add a module definition for the module-specific skin css
2789
+ if (mod) {
2790
+ name = this.formatSkin(skin, mod);
2791
+ if (!info[name]) {
2792
+ var mdef = info[mod], pkg = mdef.pkg || mod;
2793
+ // Y.log('adding skin ' + name);
2794
+ this.addModule({
2795
+ 'name': name,
2796
+ 'type': 'css',
2797
+ 'after': sinf.after,
2798
+ 'path': pkg + '/' + sinf.base + skin + '/' + mod + '.css',
2799
+ 'ext': ext
2800
+ });
2801
+ }
2802
+ }
2803
+
2804
+ return name;
2805
+ },
2806
+
2807
+ /**
2808
+ * Returns an object containing properties for all modules required
2809
+ * in order to load the requested module
2810
+ * @method getRequires
2811
+ * @param mod The module definition from moduleInfo
2812
+ */
2813
+ getRequires: function(mod) {
2814
+ if (!mod) {
2815
+ return [];
2816
+ }
2817
+
2818
+ if (!this.dirty && mod.expanded) {
2819
+ return mod.expanded;
2820
+ }
2821
+
2822
+ mod.requires=mod.requires || [];
2823
+ var i, d=[], r=mod.requires, o=mod.optional, info=this.moduleInfo, m;
2824
+ for (i=0; i<r.length; i=i+1) {
2825
+ d.push(r[i]);
2826
+ m = info[r[i]];
2827
+ YUI.ArrayUtil.appendArray(d, this.getRequires(m));
2828
+
2829
+ // add existing skins for skinnable modules as well. The only
2830
+ // way to do this is go through the list of required items (this
2831
+ // assumes that _skin is called before getRequires is called on
2832
+ // the module.
2833
+ // if (m.skinnable) {
2834
+ // var req=this.required, l=req.length;
2835
+ // for (var j=0; j<l; j=j+1) {
2836
+ // // YAHOO.log('checking ' + r[j]);
2837
+ // if (req[j].indexOf(r[j]) > -1) {
2838
+ // // YAHOO.log('adding ' + r[j]);
2839
+ // d.push(req[j]);
2840
+ // }
2841
+ // }
2842
+ // }
2843
+ }
2844
+
2845
+ if (o && this.loadOptional) {
2846
+ for (i=0; i<o.length; i=i+1) {
2847
+ d.push(o[i]);
2848
+ YUI.ArrayUtil.appendArray(d, this.getRequires(info[o[i]]));
2849
+ }
2850
+ }
2851
+
2852
+ mod.expanded = YUI.ArrayUtil.uniq(d);
2853
+
2854
+ return mod.expanded;
2855
+ },
2856
+
2857
+
2858
+ /**
2859
+ * Returns an object literal of the modules the supplied module satisfies
2860
+ * @method getProvides
2861
+ * @param name{string} The name of the module
2862
+ * @param notMe {string} don't add this module name, only include superseded modules
2863
+ * @return what this module provides
2864
+ */
2865
+ getProvides: function(name, notMe) {
2866
+ var addMe = !(notMe), ckey = (addMe) ? PROV : SUPER,
2867
+ m = this.moduleInfo[name], o = {};
2868
+
2869
+ if (!m) {
2870
+ return o;
2871
+ }
2872
+
2873
+ if (m[ckey]) {
2874
+ // Y.log('cached: ' + name + ' ' + ckey + ' ' + lang.dump(this.moduleInfo[name][ckey], 0));
2875
+ return m[ckey];
2876
+ }
2877
+
2878
+ var s = m.supersedes, done={}, me = this;
2879
+
2880
+ // use worker to break cycles
2881
+ var add = function(mm) {
2882
+ if (!done[mm]) {
2883
+ // Y.log(name + ' provides worker trying: ' + mm);
2884
+ done[mm] = true;
2885
+ // we always want the return value normal behavior
2886
+ // (provides) for superseded modules.
2887
+ lang.augmentObject(o, me.getProvides(mm));
2888
+ }
2889
+
2890
+ // else {
2891
+ // Y.log(name + ' provides worker skipping done: ' + mm);
2892
+ // }
2893
+ };
2894
+
2895
+ // calculate superseded modules
2896
+ if (s) {
2897
+ for (var i=0; i<s.length; i=i+1) {
2898
+ add(s[i]);
2899
+ }
2900
+ }
2901
+
2902
+ // supersedes cache
2903
+ m[SUPER] = o;
2904
+ // provides cache
2905
+ m[PROV] = lang.merge(o);
2906
+ m[PROV][name] = true;
2907
+
2908
+ // Y.log(name + " supersedes " + lang.dump(m[SUPER], 0));
2909
+ // Y.log(name + " provides " + lang.dump(m[PROV], 0));
2910
+
2911
+ return m[ckey];
2912
+ },
2913
+
2914
+
2915
+ /**
2916
+ * Calculates the dependency tree, the result is stored in the sorted
2917
+ * property
2918
+ * @method calculate
2919
+ * @param o optional options object
2920
+ */
2921
+ calculate: function(o) {
2922
+ if (o || this.dirty) {
2923
+ this._config(o);
2924
+ this._setup();
2925
+ this._explode();
2926
+ // this._skin(); // deprecated
2927
+ if (this.allowRollup) {
2928
+ this._rollup();
2929
+ }
2930
+ this._reduce();
2931
+ this._sort();
2932
+
2933
+ // Y.log("after calculate: " + lang.dump(this.required));
2934
+
2935
+ this.dirty = false;
2936
+ }
2937
+ },
2938
+
2939
+ /**
2940
+ * Investigates the current YUI configuration on the page. By default,
2941
+ * modules already detected will not be loaded again unless a force
2942
+ * option is encountered. Called by calculate()
2943
+ * @method _setup
2944
+ * @private
2945
+ */
2946
+ _setup: function() {
2947
+
2948
+ var info = this.moduleInfo, name, i, j;
2949
+
2950
+ // Create skin modules
2951
+ for (name in info) {
2952
+
2953
+ if (lang.hasOwnProperty(info, name)) {
2954
+ var m = info[name];
2955
+ if (m && m.skinnable) {
2956
+ // Y.log("skinning: " + name);
2957
+ var o=this.skin.overrides, smod;
2958
+ if (o && o[name]) {
2959
+ for (i=0; i<o[name].length; i=i+1) {
2960
+ smod = this._addSkin(o[name][i], name);
2961
+ }
2962
+ } else {
2963
+ smod = this._addSkin(this.skin.defaultSkin, name);
2964
+ }
2965
+
2966
+ m.requires.push(smod);
2967
+ }
2968
+ }
2969
+
2970
+ }
2971
+
2972
+ var l = lang.merge(this.inserted); // shallow clone
2973
+
2974
+ if (!this._sandbox) {
2975
+ l = lang.merge(l, env.modules);
2976
+ }
2977
+
2978
+ // Y.log("Already loaded stuff: " + lang.dump(l, 0));
2979
+
2980
+ // add the ignore list to the list of loaded packages
2981
+ if (this.ignore) {
2982
+ YUI.ObjectUtil.appendArray(l, this.ignore);
2983
+ }
2984
+
2985
+ // remove modules on the force list from the loaded list
2986
+ if (this.force) {
2987
+ for (i=0; i<this.force.length; i=i+1) {
2988
+ if (this.force[i] in l) {
2989
+ delete l[this.force[i]];
2990
+ }
2991
+ }
2992
+ }
2993
+
2994
+ // expand the list to include superseded modules
2995
+ for (j in l) {
2996
+ // Y.log("expanding: " + j);
2997
+ if (lang.hasOwnProperty(l, j)) {
2998
+ lang.augmentObject(l, this.getProvides(j));
2999
+ }
3000
+ }
3001
+
3002
+ // Y.log("loaded expanded: " + lang.dump(l, 0));
3003
+
3004
+ this.loaded = l;
3005
+
3006
+ },
3007
+
3008
+
3009
+ /**
3010
+ * Inspects the required modules list looking for additional
3011
+ * dependencies. Expands the required list to include all
3012
+ * required modules. Called by calculate()
3013
+ * @method _explode
3014
+ * @private
3015
+ */
3016
+ _explode: function() {
3017
+
3018
+ var r=this.required, i, mod;
3019
+
3020
+ for (i in r) {
3021
+ if (lang.hasOwnProperty(r, i)) {
3022
+ mod = this.moduleInfo[i];
3023
+ if (mod) {
3024
+
3025
+ var req = this.getRequires(mod);
3026
+
3027
+ if (req) {
3028
+ YUI.ObjectUtil.appendArray(r, req);
3029
+ }
3030
+ }
3031
+ }
3032
+ }
3033
+ },
3034
+
3035
+ /**
3036
+ * Sets up the requirements for the skin assets if any of the
3037
+ * requested modules are skinnable
3038
+ * @method _skin
3039
+ * @private
3040
+ * @deprecated skin modules are generated for all skinnable
3041
+ * components during _setup(), and the components
3042
+ * are configured to require the skin.
3043
+ */
3044
+ _skin: function() {
3045
+
3046
+ },
3047
+
3048
+ /**
3049
+ * Returns the skin module name for the specified skin name. If a
3050
+ * module name is supplied, the returned skin module name is
3051
+ * specific to the module passed in.
3052
+ * @method formatSkin
3053
+ * @param skin {string} the name of the skin
3054
+ * @param mod {string} optional: the name of a module to skin
3055
+ * @return {string} the full skin module name
3056
+ */
3057
+ formatSkin: function(skin, mod) {
3058
+ var s = this.SKIN_PREFIX + skin;
3059
+ if (mod) {
3060
+ s = s + "-" + mod;
3061
+ }
3062
+
3063
+ return s;
3064
+ },
3065
+
3066
+ /**
3067
+ * Reverses <code>formatSkin</code>, providing the skin name and
3068
+ * module name if the string matches the pattern for skins.
3069
+ * @method parseSkin
3070
+ * @param mod {string} the module name to parse
3071
+ * @return {skin: string, module: string} the parsed skin name
3072
+ * and module name, or null if the supplied string does not match
3073
+ * the skin pattern
3074
+ */
3075
+ parseSkin: function(mod) {
3076
+
3077
+ if (mod.indexOf(this.SKIN_PREFIX) === 0) {
3078
+ var a = mod.split("-");
3079
+ return {skin: a[1], module: a[2]};
3080
+ }
3081
+
3082
+ return null;
3083
+ },
3084
+
3085
+ /**
3086
+ * Look for rollup packages to determine if all of the modules a
3087
+ * rollup supersedes are required. If so, include the rollup to
3088
+ * help reduce the total number of connections required. Called
3089
+ * by calculate()
3090
+ * @method _rollup
3091
+ * @private
3092
+ */
3093
+ _rollup: function() {
3094
+ var i, j, m, s, rollups={}, r=this.required, roll,
3095
+ info = this.moduleInfo;
3096
+
3097
+ // find and cache rollup modules
3098
+ if (this.dirty || !this.rollups) {
3099
+ for (i in info) {
3100
+ if (lang.hasOwnProperty(info, i)) {
3101
+ m = info[i];
3102
+ //if (m && m.rollup && m.supersedes) {
3103
+ if (m && m.rollup) {
3104
+ rollups[i] = m;
3105
+ }
3106
+ }
3107
+ }
3108
+
3109
+ this.rollups = rollups;
3110
+ }
3111
+
3112
+ // make as many passes as needed to pick up rollup rollups
3113
+ for (;;) {
3114
+ var rolled = false;
3115
+
3116
+ // go through the rollup candidates
3117
+ for (i in rollups) {
3118
+
3119
+ // there can be only one
3120
+ if (!r[i] && !this.loaded[i]) {
3121
+ m =info[i]; s = m.supersedes; roll=false;
3122
+
3123
+ if (!m.rollup) {
3124
+ continue;
3125
+ }
3126
+
3127
+ var skin = (m.ext) ? false : this.parseSkin(i), c = 0;
3128
+
3129
+ // Y.log('skin? ' + i + ": " + skin);
3130
+ if (skin) {
3131
+ for (j in r) {
3132
+ if (lang.hasOwnProperty(r, j)) {
3133
+ if (i !== j && this.parseSkin(j)) {
3134
+ c++;
3135
+ roll = (c >= m.rollup);
3136
+ if (roll) {
3137
+ // Y.log("skin rollup " + lang.dump(r));
3138
+ break;
3139
+ }
3140
+ }
3141
+ }
3142
+ }
3143
+
3144
+ } else {
3145
+
3146
+ // check the threshold
3147
+ for (j=0;j<s.length;j=j+1) {
3148
+
3149
+ // if the superseded module is loaded, we can't load the rollup
3150
+ if (this.loaded[s[j]] && (!YUI.dupsAllowed[s[j]])) {
3151
+ roll = false;
3152
+ break;
3153
+ // increment the counter if this module is required. if we are
3154
+ // beyond the rollup threshold, we will use the rollup module
3155
+ } else if (r[s[j]]) {
3156
+ c++;
3157
+ roll = (c >= m.rollup);
3158
+ if (roll) {
3159
+ // Y.log("over thresh " + c + ", " + lang.dump(r));
3160
+ break;
3161
+ }
3162
+ }
3163
+ }
3164
+ }
3165
+
3166
+ if (roll) {
3167
+ // Y.log("rollup: " + i + ", " + lang.dump(this, 1));
3168
+ // add the rollup
3169
+ r[i] = true;
3170
+ rolled = true;
3171
+
3172
+ // expand the rollup's dependencies
3173
+ this.getRequires(m);
3174
+ }
3175
+ }
3176
+ }
3177
+
3178
+ // if we made it here w/o rolling up something, we are done
3179
+ if (!rolled) {
3180
+ break;
3181
+ }
3182
+ }
3183
+ },
3184
+
3185
+ /**
3186
+ * Remove superceded modules and loaded modules. Called by
3187
+ * calculate() after we have the mega list of all dependencies
3188
+ * @method _reduce
3189
+ * @private
3190
+ */
3191
+ _reduce: function() {
3192
+
3193
+ var i, j, s, m, r=this.required;
3194
+ for (i in r) {
3195
+
3196
+ // remove if already loaded
3197
+ if (i in this.loaded) {
3198
+ delete r[i];
3199
+
3200
+ // remove anything this module supersedes
3201
+ } else {
3202
+
3203
+ var skinDef = this.parseSkin(i);
3204
+
3205
+ if (skinDef) {
3206
+ //YAHOO.log("skin found in reduce: " + skinDef.skin + ", " + skinDef.module);
3207
+ // the skin rollup will not have a module name
3208
+ if (!skinDef.module) {
3209
+ var skin_pre = this.SKIN_PREFIX + skinDef.skin;
3210
+ //YAHOO.log("skin_pre: " + skin_pre);
3211
+ for (j in r) {
3212
+
3213
+ if (lang.hasOwnProperty(r, j)) {
3214
+ m = this.moduleInfo[j];
3215
+ var ext = m && m.ext;
3216
+ if (!ext && j !== i && j.indexOf(skin_pre) > -1) {
3217
+ // Y.log ("removing component skin: " + j);
3218
+ delete r[j];
3219
+ }
3220
+ }
3221
+ }
3222
+ }
3223
+ } else {
3224
+
3225
+ m = this.moduleInfo[i];
3226
+ s = m && m.supersedes;
3227
+ if (s) {
3228
+ for (j=0; j<s.length; j=j+1) {
3229
+ if (s[j] in r) {
3230
+ delete r[s[j]];
3231
+ }
3232
+ }
3233
+ }
3234
+ }
3235
+ }
3236
+ }
3237
+ },
3238
+
3239
+ _onFailure: function(msg) {
3240
+ YAHOO.log('Failure', 'info', 'loader');
3241
+
3242
+ var f = this.onFailure;
3243
+ if (f) {
3244
+ f.call(this.scope, {
3245
+ msg: 'failure: ' + msg,
3246
+ data: this.data,
3247
+ success: false
3248
+ });
3249
+ }
3250
+ },
3251
+
3252
+ _onTimeout: function() {
3253
+ YAHOO.log('Timeout', 'info', 'loader');
3254
+ var f = this.onTimeout;
3255
+ if (f) {
3256
+ f.call(this.scope, {
3257
+ msg: 'timeout',
3258
+ data: this.data,
3259
+ success: false
3260
+ });
3261
+ }
3262
+ },
3263
+
3264
+ /**
3265
+ * Sorts the dependency tree. The last step of calculate()
3266
+ * @method _sort
3267
+ * @private
3268
+ */
3269
+ _sort: function() {
3270
+ // create an indexed list
3271
+ var s=[], info=this.moduleInfo, loaded=this.loaded,
3272
+ checkOptional=!this.loadOptional, me = this;
3273
+
3274
+ // returns true if b is not loaded, and is required
3275
+ // directly or by means of modules it supersedes.
3276
+ var requires = function(aa, bb) {
3277
+
3278
+ var mm=info[aa];
3279
+
3280
+ if (loaded[bb] || !mm) {
3281
+ return false;
3282
+ }
3283
+
3284
+ var ii,
3285
+ rr = mm.expanded,
3286
+ after = mm.after,
3287
+ other = info[bb],
3288
+ optional = mm.optional;
3289
+
3290
+
3291
+ // check if this module requires the other directly
3292
+ if (rr && YUI.ArrayUtil.indexOf(rr, bb) > -1) {
3293
+ return true;
3294
+ }
3295
+
3296
+ // check if this module should be sorted after the other
3297
+ if (after && YUI.ArrayUtil.indexOf(after, bb) > -1) {
3298
+ return true;
3299
+ }
3300
+
3301
+ // if loadOptional is not specified, optional dependencies still
3302
+ // must be sorted correctly when present.
3303
+ if (checkOptional && optional && YUI.ArrayUtil.indexOf(optional, bb) > -1) {
3304
+ return true;
3305
+ }
3306
+
3307
+ // check if this module requires one the other supersedes
3308
+ var ss=info[bb] && info[bb].supersedes;
3309
+ if (ss) {
3310
+ for (ii=0; ii<ss.length; ii=ii+1) {
3311
+ if (requires(aa, ss[ii])) {
3312
+ return true;
3313
+ }
3314
+ }
3315
+ }
3316
+
3317
+ // var ss=me.getProvides(bb, true);
3318
+ // if (ss) {
3319
+ // for (ii in ss) {
3320
+ // if (requires(aa, ii)) {
3321
+ // return true;
3322
+ // }
3323
+ // }
3324
+ // }
3325
+
3326
+ // external css files should be sorted below yui css
3327
+ if (mm.ext && mm.type == 'css' && !other.ext && other.type == 'css') {
3328
+ return true;
3329
+ }
3330
+
3331
+ return false;
3332
+ };
3333
+
3334
+ // get the required items out of the obj into an array so we
3335
+ // can sort
3336
+ for (var i in this.required) {
3337
+ if (lang.hasOwnProperty(this.required, i)) {
3338
+ s.push(i);
3339
+ }
3340
+ }
3341
+
3342
+ // pointer to the first unsorted item
3343
+ var p=0;
3344
+
3345
+ // keep going until we make a pass without moving anything
3346
+ for (;;) {
3347
+
3348
+ var l=s.length, a, b, j, k, moved=false;
3349
+
3350
+ // start the loop after items that are already sorted
3351
+ for (j=p; j<l; j=j+1) {
3352
+
3353
+ // check the next module on the list to see if its
3354
+ // dependencies have been met
3355
+ a = s[j];
3356
+
3357
+ // check everything below current item and move if we
3358
+ // find a requirement for the current item
3359
+ for (k=j+1; k<l; k=k+1) {
3360
+ if (requires(a, s[k])) {
3361
+
3362
+ // extract the dependency so we can move it up
3363
+ b = s.splice(k, 1);
3364
+
3365
+ // insert the dependency above the item that
3366
+ // requires it
3367
+ s.splice(j, 0, b[0]);
3368
+
3369
+ moved = true;
3370
+ break;
3371
+ }
3372
+ }
3373
+
3374
+ // jump out of loop if we moved something
3375
+ if (moved) {
3376
+ break;
3377
+ // this item is sorted, move our pointer and keep going
3378
+ } else {
3379
+ p = p + 1;
3380
+ }
3381
+ }
3382
+
3383
+ // when we make it here and moved is false, we are
3384
+ // finished sorting
3385
+ if (!moved) {
3386
+ break;
3387
+ }
3388
+
3389
+ }
3390
+
3391
+ this.sorted = s;
3392
+ },
3393
+
3394
+ toString: function() {
3395
+ var o = {
3396
+ type: "YUILoader",
3397
+ base: this.base,
3398
+ filter: this.filter,
3399
+ required: this.required,
3400
+ loaded: this.loaded,
3401
+ inserted: this.inserted
3402
+ };
3403
+
3404
+ lang.dump(o, 1);
3405
+ },
3406
+
3407
+ _combine: function() {
3408
+
3409
+ this._combining = [];
3410
+
3411
+ var self = this,
3412
+ s=this.sorted,
3413
+ len = s.length,
3414
+ js = this.comboBase,
3415
+ css = this.comboBase,
3416
+ target,
3417
+ startLen = js.length,
3418
+ i, m, type = this.loadType;
3419
+
3420
+ YAHOO.log('type ' + type);
3421
+
3422
+ for (i=0; i<len; i=i+1) {
3423
+
3424
+ m = this.moduleInfo[s[i]];
3425
+
3426
+ if (m && !m.ext && (!type || type === m.type)) {
3427
+
3428
+ target = this.root + m.path;
3429
+
3430
+ // if (i < len-1) {
3431
+ target += '&';
3432
+ // }
3433
+
3434
+ if (m.type == 'js') {
3435
+ js += target;
3436
+ } else {
3437
+ css += target;
3438
+ }
3439
+
3440
+ // YAHOO.log(target);
3441
+ this._combining.push(s[i]);
3442
+ }
3443
+ }
3444
+
3445
+ if (this._combining.length) {
3446
+
3447
+ YAHOO.log('Attempting to combine: ' + this._combining, "info", "loader");
3448
+
3449
+ var callback=function(o) {
3450
+ // YAHOO.log('Combo complete: ' + o.data, "info", "loader");
3451
+ // this._combineComplete = true;
3452
+
3453
+ var c=this._combining, len=c.length, i, m;
3454
+ for (i=0; i<len; i=i+1) {
3455
+ this.inserted[c[i]] = true;
3456
+ }
3457
+
3458
+ this.loadNext(o.data);
3459
+ },
3460
+
3461
+ loadScript = function() {
3462
+ // YAHOO.log('combining js: ' + js);
3463
+ if (js.length > startLen) {
3464
+ YAHOO.util.Get.script(self._filter(js), {
3465
+ data: self._loading,
3466
+ onSuccess: callback,
3467
+ onFailure: self._onFailure,
3468
+ onTimeout: self._onTimeout,
3469
+ insertBefore: self.insertBefore,
3470
+ charset: self.charset,
3471
+ timeout: self.timeout,
3472
+ scope: self
3473
+ });
3474
+ }
3475
+ };
3476
+
3477
+ // load the css first
3478
+ // YAHOO.log('combining css: ' + css);
3479
+ if (css.length > startLen) {
3480
+ YAHOO.util.Get.css(this._filter(css), {
3481
+ data: this._loading,
3482
+ onSuccess: loadScript,
3483
+ onFailure: this._onFailure,
3484
+ onTimeout: this._onTimeout,
3485
+ insertBefore: this.insertBefore,
3486
+ charset: this.charset,
3487
+ timeout: this.timeout,
3488
+ scope: self
3489
+ });
3490
+ } else {
3491
+ loadScript();
3492
+ }
3493
+
3494
+ return;
3495
+
3496
+ } else {
3497
+ // this._combineComplete = true;
3498
+ this.loadNext(this._loading);
3499
+ }
3500
+ },
3501
+
3502
+ /**
3503
+ * inserts the requested modules and their dependencies.
3504
+ * <code>type</code> can be "js" or "css". Both script and
3505
+ * css are inserted if type is not provided.
3506
+ * @method insert
3507
+ * @param o optional options object
3508
+ * @param type {string} the type of dependency to insert
3509
+ */
3510
+ insert: function(o, type) {
3511
+ // if (o) {
3512
+ // Y.log("insert: " + lang.dump(o, 1) + ", " + type);
3513
+ // } else {
3514
+ // Y.log("insert: " + this.toString() + ", " + type);
3515
+ // }
3516
+
3517
+ // build the dependency list
3518
+ this.calculate(o);
3519
+
3520
+
3521
+ // set a flag to indicate the load has started
3522
+ this._loading = true;
3523
+
3524
+ // flag to indicate we are done with the combo service
3525
+ // and any additional files will need to be loaded
3526
+ // individually
3527
+ // this._combineComplete = false;
3528
+
3529
+ // keep the loadType (js, css or undefined) cached
3530
+ this.loadType = type;
3531
+
3532
+ if (this.combine) {
3533
+ return this._combine();
3534
+ }
3535
+
3536
+ if (!type) {
3537
+ // Y.log("trying to load css first");
3538
+ var self = this;
3539
+ this._internalCallback = function() {
3540
+ self._internalCallback = null;
3541
+ self.insert(null, "js");
3542
+ };
3543
+ this.insert(null, "css");
3544
+ return;
3545
+ }
3546
+
3547
+
3548
+ // start the load
3549
+ this.loadNext();
3550
+
3551
+ },
3552
+
3553
+ /**
3554
+ * Interns the script for the requested modules. The callback is
3555
+ * provided a reference to the sandboxed YAHOO object. This only
3556
+ * applies to the script: css can not be sandboxed; css will be
3557
+ * loaded into the page normally if specified.
3558
+ * @method sandbox
3559
+ * @param callback {Function} the callback to exectued when the load is
3560
+ * complete.
3561
+ */
3562
+ sandbox: function(o, type) {
3563
+ // if (o) {
3564
+ // YAHOO.log("sandbox: " + lang.dump(o, 1) + ", " + type);
3565
+ // } else {
3566
+ // YAHOO.log("sandbox: " + this.toString() + ", " + type);
3567
+ // }
3568
+
3569
+ this._config(o);
3570
+
3571
+ if (!this.onSuccess) {
3572
+ throw new Error("You must supply an onSuccess handler for your sandbox");
3573
+ }
3574
+
3575
+ this._sandbox = true;
3576
+
3577
+ var self = this;
3578
+
3579
+ // take care of any css first (this can't be sandboxed)
3580
+ if (!type || type !== "js") {
3581
+ this._internalCallback = function() {
3582
+ self._internalCallback = null;
3583
+ self.sandbox(null, "js");
3584
+ };
3585
+ this.insert(null, "css");
3586
+ return;
3587
+ }
3588
+
3589
+ // get the connection manager if not on the page
3590
+ if (!util.Connect) {
3591
+ // get a new loader instance to load connection.
3592
+ var ld = new YAHOO.util.YUILoader();
3593
+ ld.insert({
3594
+ base: this.base,
3595
+ filter: this.filter,
3596
+ require: "connection",
3597
+ insertBefore: this.insertBefore,
3598
+ charset: this.charset,
3599
+ onSuccess: function() {
3600
+ this.sandbox(null, "js");
3601
+ },
3602
+ scope: this
3603
+ }, "js");
3604
+ return;
3605
+ }
3606
+
3607
+ this._scriptText = [];
3608
+ this._loadCount = 0;
3609
+ this._stopCount = this.sorted.length;
3610
+ this._xhr = [];
3611
+
3612
+ this.calculate();
3613
+
3614
+ var s=this.sorted, l=s.length, i, m, url;
3615
+
3616
+ for (i=0; i<l; i=i+1) {
3617
+ m = this.moduleInfo[s[i]];
3618
+
3619
+ // undefined modules cause a failure
3620
+ if (!m) {
3621
+ this._onFailure("undefined module " + m);
3622
+ for (var j=0;j<this._xhr.length;j=j+1) {
3623
+ this._xhr[j].abort();
3624
+ }
3625
+ return;
3626
+ }
3627
+
3628
+ // css files should be done
3629
+ if (m.type !== "js") {
3630
+ this._loadCount++;
3631
+ continue;
3632
+ }
3633
+
3634
+ url = m.fullpath;
3635
+ url = (url) ? this._filter(url) : this._url(m.path);
3636
+
3637
+ // YAHOO.log("xhr request: " + url + ", " + i);
3638
+
3639
+ var xhrData = {
3640
+
3641
+ success: function(o) {
3642
+
3643
+ var idx=o.argument[0], name=o.argument[2];
3644
+
3645
+ // store the response in the position it was requested
3646
+ this._scriptText[idx] = o.responseText;
3647
+
3648
+ // YAHOO.log("received: " + o.responseText.substr(0, 100) + ", " + idx);
3649
+
3650
+ if (this.onProgress) {
3651
+ this.onProgress.call(this.scope, {
3652
+ name: name,
3653
+ scriptText: o.responseText,
3654
+ xhrResponse: o,
3655
+ data: this.data
3656
+ });
3657
+ }
3658
+
3659
+ // only generate the sandbox once everything is loaded
3660
+ this._loadCount++;
3661
+
3662
+ if (this._loadCount >= this._stopCount) {
3663
+
3664
+ // the variable to find
3665
+ var v = this.varName || "YAHOO";
3666
+
3667
+ // wrap the contents of the requested modules in an anonymous function
3668
+ var t = "(function() {\n";
3669
+
3670
+ // return the locally scoped reference.
3671
+ var b = "\nreturn " + v + ";\n})();";
3672
+
3673
+ var ref = eval(t + this._scriptText.join("\n") + b);
3674
+
3675
+ this._pushEvents(ref);
3676
+
3677
+ if (ref) {
3678
+ this.onSuccess.call(this.scope, {
3679
+ reference: ref,
3680
+ data: this.data
3681
+ });
3682
+ } else {
3683
+ this._onFailure.call(this.varName + " reference failure");
3684
+ }
3685
+ }
3686
+ },
3687
+
3688
+ failure: function(o) {
3689
+ this.onFailure.call(this.scope, {
3690
+ msg: "XHR failure",
3691
+ xhrResponse: o,
3692
+ data: this.data
3693
+ });
3694
+ },
3695
+
3696
+ scope: this,
3697
+
3698
+ // module index, module name, sandbox name
3699
+ argument: [i, url, s[i]]
3700
+
3701
+ };
3702
+
3703
+ this._xhr.push(util.Connect.asyncRequest('GET', url, xhrData));
3704
+ }
3705
+ },
3706
+
3707
+ /**
3708
+ * Executed every time a module is loaded, and if we are in a load
3709
+ * cycle, we attempt to load the next script. Public so that it
3710
+ * is possible to call this if using a method other than
3711
+ * YAHOO.register to determine when scripts are fully loaded
3712
+ * @method loadNext
3713
+ * @param mname {string} optional the name of the module that has
3714
+ * been loaded (which is usually why it is time to load the next
3715
+ * one)
3716
+ */
3717
+ loadNext: function(mname) {
3718
+
3719
+ // It is possible that this function is executed due to something
3720
+ // else one the page loading a YUI module. Only react when we
3721
+ // are actively loading something
3722
+ if (!this._loading) {
3723
+ return;
3724
+ }
3725
+
3726
+
3727
+ if (mname) {
3728
+
3729
+ // if the module that was just loaded isn't what we were expecting,
3730
+ // continue to wait
3731
+ if (mname !== this._loading) {
3732
+ return;
3733
+ }
3734
+
3735
+ // YAHOO.log("loadNext executing, just loaded " + mname);
3736
+
3737
+ // The global handler that is called when each module is loaded
3738
+ // will pass that module name to this function. Storing this
3739
+ // data to avoid loading the same module multiple times
3740
+ this.inserted[mname] = true;
3741
+
3742
+ if (this.onProgress) {
3743
+ this.onProgress.call(this.scope, {
3744
+ name: mname,
3745
+ data: this.data
3746
+ });
3747
+ }
3748
+ //var o = this.getProvides(mname);
3749
+ //this.inserted = lang.merge(this.inserted, o);
3750
+ }
3751
+
3752
+ var s=this.sorted, len=s.length, i, m;
3753
+
3754
+ for (i=0; i<len; i=i+1) {
3755
+
3756
+ // This.inserted keeps track of what the loader has loaded
3757
+ if (s[i] in this.inserted) {
3758
+ // YAHOO.log(s[i] + " alread loaded ");
3759
+ continue;
3760
+ }
3761
+
3762
+ // Because rollups will cause multiple load notifications
3763
+ // from YAHOO, loadNext may be called multiple times for
3764
+ // the same module when loading a rollup. We can safely
3765
+ // skip the subsequent requests
3766
+ if (s[i] === this._loading) {
3767
+ // YAHOO.log("still loading " + s[i] + ", waiting");
3768
+ return;
3769
+ }
3770
+
3771
+ // log("inserting " + s[i]);
3772
+ m = this.moduleInfo[s[i]];
3773
+
3774
+ if (!m) {
3775
+ this.onFailure.call(this.scope, {
3776
+ msg: "undefined module " + m,
3777
+ data: this.data
3778
+ });
3779
+ return;
3780
+ }
3781
+
3782
+ // The load type is stored to offer the possibility to load
3783
+ // the css separately from the script.
3784
+ if (!this.loadType || this.loadType === m.type) {
3785
+ this._loading = s[i];
3786
+ //YAHOO.log("attempting to load " + s[i] + ", " + this.base);
3787
+
3788
+ var fn=(m.type === "css") ? util.Get.css : util.Get.script,
3789
+ url = m.fullpath,
3790
+ self=this,
3791
+ c=function(o) {
3792
+ self.loadNext(o.data);
3793
+ };
3794
+
3795
+ url = (url) ? this._filter(url) : this._url(m.path);
3796
+
3797
+ // safari 2.x or lower, script, and part of YUI
3798
+ if (env.ua.webkit && env.ua.webkit < 420 && m.type === "js" &&
3799
+ !m.varName) {
3800
+ //YUI.info.moduleInfo[s[i]]) {
3801
+ //YAHOO.log("using YAHOO env " + s[i] + ", " + m.varName);
3802
+ c = null;
3803
+ this._useYahooListener = true;
3804
+ }
3805
+
3806
+ fn(url, {
3807
+ data: s[i],
3808
+ onSuccess: c,
3809
+ onFailure: this._onFailure,
3810
+ onTimeout: this._onTimeout,
3811
+ insertBefore: this.insertBefore,
3812
+ charset: this.charset,
3813
+ timeout: this.timeout,
3814
+ varName: m.varName,
3815
+ scope: self
3816
+ });
3817
+
3818
+ return;
3819
+ }
3820
+ }
3821
+
3822
+ // we are finished
3823
+ this._loading = null;
3824
+
3825
+ // internal callback for loading css first
3826
+ if (this._internalCallback) {
3827
+ var f = this._internalCallback;
3828
+ this._internalCallback = null;
3829
+ f.call(this);
3830
+ } else if (this.onSuccess) {
3831
+ this._pushEvents();
3832
+ this.onSuccess.call(this.scope, {
3833
+ data: this.data
3834
+ });
3835
+ }
3836
+
3837
+ },
3838
+
3839
+ /**
3840
+ * In IE, the onAvailable/onDOMReady events need help when Event is
3841
+ * loaded dynamically
3842
+ * @method _pushEvents
3843
+ * @param {Function} optional function reference
3844
+ * @private
3845
+ */
3846
+ _pushEvents: function(ref) {
3847
+ var r = ref || YAHOO;
3848
+ if (r.util && r.util.Event) {
3849
+ r.util.Event._load();
3850
+ }
3851
+ },
3852
+
3853
+ /**
3854
+ * Applies filter
3855
+ * method _filter
3856
+ * @return {string} the filtered string
3857
+ * @private
3858
+ */
3859
+ _filter: function(str) {
3860
+ var f = this.filter;
3861
+ return (f) ? str.replace(new RegExp(f.searchExp, 'g'), f.replaceStr) : str;
3862
+ },
3863
+
3864
+ /**
3865
+ * Generates the full url for a module
3866
+ * method _url
3867
+ * @param path {string} the path fragment
3868
+ * @return {string} the full url
3869
+ * @private
3870
+ */
3871
+ _url: function(path) {
3872
+ return this._filter((this.base || "") + path);
3873
+ }
3874
+
3875
+ };
3876
+
3877
+ })();
3878
+
3879
+ YAHOO.register("yuiloader", YAHOO.util.YUILoader, {version: "2.8.1", build: "19"});