lpmp 1.0.0

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 (636) hide show
  1. data/LICENSE +3 -0
  2. data/README +3 -0
  3. data/Rakefile +45 -0
  4. data/bin/lpmp +107 -0
  5. data/config/help.yaml +1 -0
  6. data/config/hosts.yaml +2 -0
  7. data/config/log.yaml +1 -0
  8. data/config/memcache.yaml +5 -0
  9. data/erb/index.erb +62 -0
  10. data/lib/bg_pull/caichen.rb +199 -0
  11. data/lib/bg_pull/lpmp.rb +45 -0
  12. data/lib/exception.rb +8 -0
  13. data/lib/lpmp.rb +53 -0
  14. data/lib/pull/lpmp.rb +355 -0
  15. data/lib/remote_lmp.rb +129 -0
  16. data/lib/utils.rb +14 -0
  17. data/lib/xq_push/caichen.rb +174 -0
  18. data/lib/xq_push/lpmp.rb +96 -0
  19. data/log/lpmp1st.log +1 -0
  20. data/public/css/ext-portal.css +40 -0
  21. data/public/css/lpmp.css +6 -0
  22. data/public/designer/caichen.epj +1 -0
  23. data/public/designer/hostmonitor.epj +1 -0
  24. data/public/ext-3.0.0/INCLUDE_ORDER.txt +35 -0
  25. data/public/ext-3.0.0/adapter/ext/ext-base-debug.js +3589 -0
  26. data/public/ext-3.0.0/adapter/ext/ext-base.js +7 -0
  27. data/public/ext-3.0.0/adapter/jquery/ext-jquery-adapter-debug.js +2292 -0
  28. data/public/ext-3.0.0/adapter/jquery/ext-jquery-adapter.js +7 -0
  29. data/public/ext-3.0.0/adapter/prototype/ext-prototype-adapter-debug.js +2346 -0
  30. data/public/ext-3.0.0/adapter/prototype/ext-prototype-adapter.js +7 -0
  31. data/public/ext-3.0.0/adapter/yui/ext-yui-adapter-debug.js +2136 -0
  32. data/public/ext-3.0.0/adapter/yui/ext-yui-adapter.js +7 -0
  33. data/public/ext-3.0.0/ext-all-debug.js +65610 -0
  34. data/public/ext-3.0.0/ext-all.js +11 -0
  35. data/public/ext-3.0.0/license.txt +42 -0
  36. data/public/ext-3.0.0/pkgs/cmp-foundation-debug.js +11287 -0
  37. data/public/ext-3.0.0/pkgs/cmp-foundation.js +7 -0
  38. data/public/ext-3.0.0/pkgs/data-foundation-debug.js +3853 -0
  39. data/public/ext-3.0.0/pkgs/data-foundation.js +7 -0
  40. data/public/ext-3.0.0/pkgs/data-grouping-debug.js +139 -0
  41. data/public/ext-3.0.0/pkgs/data-grouping.js +7 -0
  42. data/public/ext-3.0.0/pkgs/data-json-debug.js +582 -0
  43. data/public/ext-3.0.0/pkgs/data-json.js +7 -0
  44. data/public/ext-3.0.0/pkgs/data-list-views-debug.js +1278 -0
  45. data/public/ext-3.0.0/pkgs/data-list-views.js +7 -0
  46. data/public/ext-3.0.0/pkgs/data-xml-debug.js +234 -0
  47. data/public/ext-3.0.0/pkgs/data-xml.js +7 -0
  48. data/public/ext-3.0.0/pkgs/direct-debug.js +1121 -0
  49. data/public/ext-3.0.0/pkgs/direct.js +7 -0
  50. data/public/ext-3.0.0/pkgs/ext-dd-debug.js +4567 -0
  51. data/public/ext-3.0.0/pkgs/ext-dd.js +7 -0
  52. data/public/ext-3.0.0/pkgs/ext-foundation-debug.js +13417 -0
  53. data/public/ext-3.0.0/pkgs/ext-foundation.js +7 -0
  54. data/public/ext-3.0.0/pkgs/pkg-buttons-debug.js +1060 -0
  55. data/public/ext-3.0.0/pkgs/pkg-buttons.js +7 -0
  56. data/public/ext-3.0.0/pkgs/pkg-charts-debug.js +1621 -0
  57. data/public/ext-3.0.0/pkgs/pkg-charts.js +10 -0
  58. data/public/ext-3.0.0/pkgs/pkg-forms-debug.js +7661 -0
  59. data/public/ext-3.0.0/pkgs/pkg-forms.js +7 -0
  60. data/public/ext-3.0.0/pkgs/pkg-grid-editor-debug.js +560 -0
  61. data/public/ext-3.0.0/pkgs/pkg-grid-editor.js +7 -0
  62. data/public/ext-3.0.0/pkgs/pkg-grid-foundation-debug.js +4765 -0
  63. data/public/ext-3.0.0/pkgs/pkg-grid-foundation.js +7 -0
  64. data/public/ext-3.0.0/pkgs/pkg-grid-grouping-debug.js +517 -0
  65. data/public/ext-3.0.0/pkgs/pkg-grid-grouping.js +7 -0
  66. data/public/ext-3.0.0/pkgs/pkg-grid-property-debug.js +370 -0
  67. data/public/ext-3.0.0/pkgs/pkg-grid-property.js +7 -0
  68. data/public/ext-3.0.0/pkgs/pkg-history-debug.js +203 -0
  69. data/public/ext-3.0.0/pkgs/pkg-history.js +7 -0
  70. data/public/ext-3.0.0/pkgs/pkg-menu-debug.js +1628 -0
  71. data/public/ext-3.0.0/pkgs/pkg-menu.js +7 -0
  72. data/public/ext-3.0.0/pkgs/pkg-tabs-debug.js +1100 -0
  73. data/public/ext-3.0.0/pkgs/pkg-tabs.js +7 -0
  74. data/public/ext-3.0.0/pkgs/pkg-tips-debug.js +994 -0
  75. data/public/ext-3.0.0/pkgs/pkg-tips.js +7 -0
  76. data/public/ext-3.0.0/pkgs/pkg-toolbars-debug.js +1374 -0
  77. data/public/ext-3.0.0/pkgs/pkg-toolbars.js +7 -0
  78. data/public/ext-3.0.0/pkgs/pkg-tree-debug.js +4522 -0
  79. data/public/ext-3.0.0/pkgs/pkg-tree.js +7 -0
  80. data/public/ext-3.0.0/pkgs/resizable-debug.js +760 -0
  81. data/public/ext-3.0.0/pkgs/resizable.js +7 -0
  82. data/public/ext-3.0.0/pkgs/state-debug.js +274 -0
  83. data/public/ext-3.0.0/pkgs/state.js +7 -0
  84. data/public/ext-3.0.0/pkgs/window-debug.js +1888 -0
  85. data/public/ext-3.0.0/pkgs/window.js +7 -0
  86. data/public/ext-3.0.0/resources/charts.swf +0 -0
  87. data/public/ext-3.0.0/resources/css/README.txt +3 -0
  88. data/public/ext-3.0.0/resources/css/ext-all-notheme.css +5345 -0
  89. data/public/ext-3.0.0/resources/css/ext-all.css +6990 -0
  90. data/public/ext-3.0.0/resources/css/reset-min.css +7 -0
  91. data/public/ext-3.0.0/resources/css/structure/borders.css +54 -0
  92. data/public/ext-3.0.0/resources/css/structure/box.css +80 -0
  93. data/public/ext-3.0.0/resources/css/structure/button.css +440 -0
  94. data/public/ext-3.0.0/resources/css/structure/combo.css +45 -0
  95. data/public/ext-3.0.0/resources/css/structure/core.css +326 -0
  96. data/public/ext-3.0.0/resources/css/structure/date-picker.css +265 -0
  97. data/public/ext-3.0.0/resources/css/structure/dd.css +61 -0
  98. data/public/ext-3.0.0/resources/css/structure/debug.css +26 -0
  99. data/public/ext-3.0.0/resources/css/structure/dialog.css +62 -0
  100. data/public/ext-3.0.0/resources/css/structure/editor.css +92 -0
  101. data/public/ext-3.0.0/resources/css/structure/form.css +562 -0
  102. data/public/ext-3.0.0/resources/css/structure/grid.css +552 -0
  103. data/public/ext-3.0.0/resources/css/structure/layout.css +296 -0
  104. data/public/ext-3.0.0/resources/css/structure/list-view.css +85 -0
  105. data/public/ext-3.0.0/resources/css/structure/menu.css +205 -0
  106. data/public/ext-3.0.0/resources/css/structure/panel-reset.css +130 -0
  107. data/public/ext-3.0.0/resources/css/structure/panel.css +468 -0
  108. data/public/ext-3.0.0/resources/css/structure/progress.css +42 -0
  109. data/public/ext-3.0.0/resources/css/structure/qtips.css +153 -0
  110. data/public/ext-3.0.0/resources/css/structure/reset.css +7 -0
  111. data/public/ext-3.0.0/resources/css/structure/resizable.css +149 -0
  112. data/public/ext-3.0.0/resources/css/structure/slider.css +103 -0
  113. data/public/ext-3.0.0/resources/css/structure/tabs.css +372 -0
  114. data/public/ext-3.0.0/resources/css/structure/toolbar.css +259 -0
  115. data/public/ext-3.0.0/resources/css/structure/tree.css +203 -0
  116. data/public/ext-3.0.0/resources/css/structure/window.css +222 -0
  117. data/public/ext-3.0.0/resources/css/visual/borders.css +25 -0
  118. data/public/ext-3.0.0/resources/css/visual/box.css +74 -0
  119. data/public/ext-3.0.0/resources/css/visual/button.css +94 -0
  120. data/public/ext-3.0.0/resources/css/visual/combo.css +43 -0
  121. data/public/ext-3.0.0/resources/css/visual/core.css +76 -0
  122. data/public/ext-3.0.0/resources/css/visual/date-picker.css +143 -0
  123. data/public/ext-3.0.0/resources/css/visual/dd.css +29 -0
  124. data/public/ext-3.0.0/resources/css/visual/debug.css +24 -0
  125. data/public/ext-3.0.0/resources/css/visual/dialog.css +34 -0
  126. data/public/ext-3.0.0/resources/css/visual/editor.css +13 -0
  127. data/public/ext-3.0.0/resources/css/visual/form.css +117 -0
  128. data/public/ext-3.0.0/resources/css/visual/grid.css +272 -0
  129. data/public/ext-3.0.0/resources/css/visual/layout.css +53 -0
  130. data/public/ext-3.0.0/resources/css/visual/list-view.css +37 -0
  131. data/public/ext-3.0.0/resources/css/visual/menu.css +82 -0
  132. data/public/ext-3.0.0/resources/css/visual/panel.css +87 -0
  133. data/public/ext-3.0.0/resources/css/visual/progress.css +32 -0
  134. data/public/ext-3.0.0/resources/css/visual/qtips.css +44 -0
  135. data/public/ext-3.0.0/resources/css/visual/resizable.css +43 -0
  136. data/public/ext-3.0.0/resources/css/visual/slider.css +21 -0
  137. data/public/ext-3.0.0/resources/css/visual/tabs.css +119 -0
  138. data/public/ext-3.0.0/resources/css/visual/toolbar.css +103 -0
  139. data/public/ext-3.0.0/resources/css/visual/tree.css +157 -0
  140. data/public/ext-3.0.0/resources/css/visual/window.css +86 -0
  141. data/public/ext-3.0.0/resources/css/xtheme-blue.css +1652 -0
  142. data/public/ext-3.0.0/resources/expressinstall.swf +0 -0
  143. data/public/ext-3.0.0/resources/images/default/box/corners-blue.gif +0 -0
  144. data/public/ext-3.0.0/resources/images/default/box/corners.gif +0 -0
  145. data/public/ext-3.0.0/resources/images/default/box/l-blue.gif +0 -0
  146. data/public/ext-3.0.0/resources/images/default/box/l.gif +0 -0
  147. data/public/ext-3.0.0/resources/images/default/box/r-blue.gif +0 -0
  148. data/public/ext-3.0.0/resources/images/default/box/r.gif +0 -0
  149. data/public/ext-3.0.0/resources/images/default/box/tb-blue.gif +0 -0
  150. data/public/ext-3.0.0/resources/images/default/box/tb.gif +0 -0
  151. data/public/ext-3.0.0/resources/images/default/button/arrow.gif +0 -0
  152. data/public/ext-3.0.0/resources/images/default/button/btn.gif +0 -0
  153. data/public/ext-3.0.0/resources/images/default/button/group-cs.gif +0 -0
  154. data/public/ext-3.0.0/resources/images/default/button/group-lr.gif +0 -0
  155. data/public/ext-3.0.0/resources/images/default/button/group-tb.gif +0 -0
  156. data/public/ext-3.0.0/resources/images/default/button/s-arrow-b-noline.gif +0 -0
  157. data/public/ext-3.0.0/resources/images/default/button/s-arrow-b.gif +0 -0
  158. data/public/ext-3.0.0/resources/images/default/button/s-arrow-bo.gif +0 -0
  159. data/public/ext-3.0.0/resources/images/default/button/s-arrow-noline.gif +0 -0
  160. data/public/ext-3.0.0/resources/images/default/button/s-arrow-o.gif +0 -0
  161. data/public/ext-3.0.0/resources/images/default/button/s-arrow.gif +0 -0
  162. data/public/ext-3.0.0/resources/images/default/dd/drop-add.gif +0 -0
  163. data/public/ext-3.0.0/resources/images/default/dd/drop-no.gif +0 -0
  164. data/public/ext-3.0.0/resources/images/default/dd/drop-yes.gif +0 -0
  165. data/public/ext-3.0.0/resources/images/default/editor/tb-sprite.gif +0 -0
  166. data/public/ext-3.0.0/resources/images/default/form/checkbox.gif +0 -0
  167. data/public/ext-3.0.0/resources/images/default/form/clear-trigger.gif +0 -0
  168. data/public/ext-3.0.0/resources/images/default/form/clear-trigger.psd +0 -0
  169. data/public/ext-3.0.0/resources/images/default/form/date-trigger.gif +0 -0
  170. data/public/ext-3.0.0/resources/images/default/form/date-trigger.psd +0 -0
  171. data/public/ext-3.0.0/resources/images/default/form/error-tip-corners.gif +0 -0
  172. data/public/ext-3.0.0/resources/images/default/form/exclamation.gif +0 -0
  173. data/public/ext-3.0.0/resources/images/default/form/radio.gif +0 -0
  174. data/public/ext-3.0.0/resources/images/default/form/search-trigger.gif +0 -0
  175. data/public/ext-3.0.0/resources/images/default/form/search-trigger.psd +0 -0
  176. data/public/ext-3.0.0/resources/images/default/form/text-bg.gif +0 -0
  177. data/public/ext-3.0.0/resources/images/default/form/trigger-tpl.gif +0 -0
  178. data/public/ext-3.0.0/resources/images/default/form/trigger.gif +0 -0
  179. data/public/ext-3.0.0/resources/images/default/form/trigger.psd +0 -0
  180. data/public/ext-3.0.0/resources/images/default/gradient-bg.gif +0 -0
  181. data/public/ext-3.0.0/resources/images/default/grid/arrow-left-white.gif +0 -0
  182. data/public/ext-3.0.0/resources/images/default/grid/arrow-right-white.gif +0 -0
  183. data/public/ext-3.0.0/resources/images/default/grid/col-move-bottom.gif +0 -0
  184. data/public/ext-3.0.0/resources/images/default/grid/col-move-top.gif +0 -0
  185. data/public/ext-3.0.0/resources/images/default/grid/columns.gif +0 -0
  186. data/public/ext-3.0.0/resources/images/default/grid/dirty.gif +0 -0
  187. data/public/ext-3.0.0/resources/images/default/grid/done.gif +0 -0
  188. data/public/ext-3.0.0/resources/images/default/grid/drop-no.gif +0 -0
  189. data/public/ext-3.0.0/resources/images/default/grid/drop-yes.gif +0 -0
  190. data/public/ext-3.0.0/resources/images/default/grid/footer-bg.gif +0 -0
  191. data/public/ext-3.0.0/resources/images/default/grid/grid-blue-hd.gif +0 -0
  192. data/public/ext-3.0.0/resources/images/default/grid/grid-blue-split.gif +0 -0
  193. data/public/ext-3.0.0/resources/images/default/grid/grid-hrow.gif +0 -0
  194. data/public/ext-3.0.0/resources/images/default/grid/grid-loading.gif +0 -0
  195. data/public/ext-3.0.0/resources/images/default/grid/grid-split.gif +0 -0
  196. data/public/ext-3.0.0/resources/images/default/grid/grid-vista-hd.gif +0 -0
  197. data/public/ext-3.0.0/resources/images/default/grid/grid3-hd-btn.gif +0 -0
  198. data/public/ext-3.0.0/resources/images/default/grid/grid3-hrow-over.gif +0 -0
  199. data/public/ext-3.0.0/resources/images/default/grid/grid3-hrow.gif +0 -0
  200. data/public/ext-3.0.0/resources/images/default/grid/grid3-special-col-bg.gif +0 -0
  201. data/public/ext-3.0.0/resources/images/default/grid/grid3-special-col-sel-bg.gif +0 -0
  202. data/public/ext-3.0.0/resources/images/default/grid/group-by.gif +0 -0
  203. data/public/ext-3.0.0/resources/images/default/grid/group-collapse.gif +0 -0
  204. data/public/ext-3.0.0/resources/images/default/grid/group-expand-sprite.gif +0 -0
  205. data/public/ext-3.0.0/resources/images/default/grid/group-expand.gif +0 -0
  206. data/public/ext-3.0.0/resources/images/default/grid/hd-pop.gif +0 -0
  207. data/public/ext-3.0.0/resources/images/default/grid/hmenu-asc.gif +0 -0
  208. data/public/ext-3.0.0/resources/images/default/grid/hmenu-desc.gif +0 -0
  209. data/public/ext-3.0.0/resources/images/default/grid/hmenu-lock.gif +0 -0
  210. data/public/ext-3.0.0/resources/images/default/grid/hmenu-lock.png +0 -0
  211. data/public/ext-3.0.0/resources/images/default/grid/hmenu-unlock.gif +0 -0
  212. data/public/ext-3.0.0/resources/images/default/grid/hmenu-unlock.png +0 -0
  213. data/public/ext-3.0.0/resources/images/default/grid/invalid_line.gif +0 -0
  214. data/public/ext-3.0.0/resources/images/default/grid/loading.gif +0 -0
  215. data/public/ext-3.0.0/resources/images/default/grid/mso-hd.gif +0 -0
  216. data/public/ext-3.0.0/resources/images/default/grid/nowait.gif +0 -0
  217. data/public/ext-3.0.0/resources/images/default/grid/page-first-disabled.gif +0 -0
  218. data/public/ext-3.0.0/resources/images/default/grid/page-first.gif +0 -0
  219. data/public/ext-3.0.0/resources/images/default/grid/page-last-disabled.gif +0 -0
  220. data/public/ext-3.0.0/resources/images/default/grid/page-last.gif +0 -0
  221. data/public/ext-3.0.0/resources/images/default/grid/page-next-disabled.gif +0 -0
  222. data/public/ext-3.0.0/resources/images/default/grid/page-next.gif +0 -0
  223. data/public/ext-3.0.0/resources/images/default/grid/page-prev-disabled.gif +0 -0
  224. data/public/ext-3.0.0/resources/images/default/grid/page-prev.gif +0 -0
  225. data/public/ext-3.0.0/resources/images/default/grid/pick-button.gif +0 -0
  226. data/public/ext-3.0.0/resources/images/default/grid/refresh.gif +0 -0
  227. data/public/ext-3.0.0/resources/images/default/grid/row-check-sprite.gif +0 -0
  228. data/public/ext-3.0.0/resources/images/default/grid/row-expand-sprite.gif +0 -0
  229. data/public/ext-3.0.0/resources/images/default/grid/row-over.gif +0 -0
  230. data/public/ext-3.0.0/resources/images/default/grid/row-sel.gif +0 -0
  231. data/public/ext-3.0.0/resources/images/default/grid/sort-hd.gif +0 -0
  232. data/public/ext-3.0.0/resources/images/default/grid/sort_asc.gif +0 -0
  233. data/public/ext-3.0.0/resources/images/default/grid/sort_desc.gif +0 -0
  234. data/public/ext-3.0.0/resources/images/default/grid/wait.gif +0 -0
  235. data/public/ext-3.0.0/resources/images/default/layout/collapse.gif +0 -0
  236. data/public/ext-3.0.0/resources/images/default/layout/expand.gif +0 -0
  237. data/public/ext-3.0.0/resources/images/default/layout/gradient-bg.gif +0 -0
  238. data/public/ext-3.0.0/resources/images/default/layout/mini-bottom.gif +0 -0
  239. data/public/ext-3.0.0/resources/images/default/layout/mini-left.gif +0 -0
  240. data/public/ext-3.0.0/resources/images/default/layout/mini-right.gif +0 -0
  241. data/public/ext-3.0.0/resources/images/default/layout/mini-top.gif +0 -0
  242. data/public/ext-3.0.0/resources/images/default/layout/ns-collapse.gif +0 -0
  243. data/public/ext-3.0.0/resources/images/default/layout/ns-expand.gif +0 -0
  244. data/public/ext-3.0.0/resources/images/default/layout/panel-close.gif +0 -0
  245. data/public/ext-3.0.0/resources/images/default/layout/panel-title-bg.gif +0 -0
  246. data/public/ext-3.0.0/resources/images/default/layout/panel-title-light-bg.gif +0 -0
  247. data/public/ext-3.0.0/resources/images/default/layout/stick.gif +0 -0
  248. data/public/ext-3.0.0/resources/images/default/layout/stuck.gif +0 -0
  249. data/public/ext-3.0.0/resources/images/default/layout/tab-close-on.gif +0 -0
  250. data/public/ext-3.0.0/resources/images/default/layout/tab-close.gif +0 -0
  251. data/public/ext-3.0.0/resources/images/default/menu/checked.gif +0 -0
  252. data/public/ext-3.0.0/resources/images/default/menu/group-checked.gif +0 -0
  253. data/public/ext-3.0.0/resources/images/default/menu/item-over.gif +0 -0
  254. data/public/ext-3.0.0/resources/images/default/menu/menu-parent.gif +0 -0
  255. data/public/ext-3.0.0/resources/images/default/menu/menu.gif +0 -0
  256. data/public/ext-3.0.0/resources/images/default/menu/unchecked.gif +0 -0
  257. data/public/ext-3.0.0/resources/images/default/panel/corners-sprite.gif +0 -0
  258. data/public/ext-3.0.0/resources/images/default/panel/left-right.gif +0 -0
  259. data/public/ext-3.0.0/resources/images/default/panel/light-hd.gif +0 -0
  260. data/public/ext-3.0.0/resources/images/default/panel/tool-sprite-tpl.gif +0 -0
  261. data/public/ext-3.0.0/resources/images/default/panel/tool-sprites.gif +0 -0
  262. data/public/ext-3.0.0/resources/images/default/panel/tools-sprites-trans.gif +0 -0
  263. data/public/ext-3.0.0/resources/images/default/panel/top-bottom.gif +0 -0
  264. data/public/ext-3.0.0/resources/images/default/panel/top-bottom.png +0 -0
  265. data/public/ext-3.0.0/resources/images/default/panel/white-corners-sprite.gif +0 -0
  266. data/public/ext-3.0.0/resources/images/default/panel/white-left-right.gif +0 -0
  267. data/public/ext-3.0.0/resources/images/default/panel/white-top-bottom.gif +0 -0
  268. data/public/ext-3.0.0/resources/images/default/progress/progress-bg.gif +0 -0
  269. data/public/ext-3.0.0/resources/images/default/qtip/bg.gif +0 -0
  270. data/public/ext-3.0.0/resources/images/default/qtip/close.gif +0 -0
  271. data/public/ext-3.0.0/resources/images/default/qtip/tip-anchor-sprite.gif +0 -0
  272. data/public/ext-3.0.0/resources/images/default/qtip/tip-sprite.gif +0 -0
  273. data/public/ext-3.0.0/resources/images/default/s.gif +0 -0
  274. data/public/ext-3.0.0/resources/images/default/shadow-c.png +0 -0
  275. data/public/ext-3.0.0/resources/images/default/shadow-lr.png +0 -0
  276. data/public/ext-3.0.0/resources/images/default/shadow.png +0 -0
  277. data/public/ext-3.0.0/resources/images/default/shared/blue-loading.gif +0 -0
  278. data/public/ext-3.0.0/resources/images/default/shared/calendar.gif +0 -0
  279. data/public/ext-3.0.0/resources/images/default/shared/glass-bg.gif +0 -0
  280. data/public/ext-3.0.0/resources/images/default/shared/hd-sprite.gif +0 -0
  281. data/public/ext-3.0.0/resources/images/default/shared/large-loading.gif +0 -0
  282. data/public/ext-3.0.0/resources/images/default/shared/left-btn.gif +0 -0
  283. data/public/ext-3.0.0/resources/images/default/shared/loading-balls.gif +0 -0
  284. data/public/ext-3.0.0/resources/images/default/shared/right-btn.gif +0 -0
  285. data/public/ext-3.0.0/resources/images/default/shared/warning.gif +0 -0
  286. data/public/ext-3.0.0/resources/images/default/sizer/e-handle-dark.gif +0 -0
  287. data/public/ext-3.0.0/resources/images/default/sizer/e-handle.gif +0 -0
  288. data/public/ext-3.0.0/resources/images/default/sizer/ne-handle-dark.gif +0 -0
  289. data/public/ext-3.0.0/resources/images/default/sizer/ne-handle.gif +0 -0
  290. data/public/ext-3.0.0/resources/images/default/sizer/nw-handle-dark.gif +0 -0
  291. data/public/ext-3.0.0/resources/images/default/sizer/nw-handle.gif +0 -0
  292. data/public/ext-3.0.0/resources/images/default/sizer/s-handle-dark.gif +0 -0
  293. data/public/ext-3.0.0/resources/images/default/sizer/s-handle.gif +0 -0
  294. data/public/ext-3.0.0/resources/images/default/sizer/se-handle-dark.gif +0 -0
  295. data/public/ext-3.0.0/resources/images/default/sizer/se-handle.gif +0 -0
  296. data/public/ext-3.0.0/resources/images/default/sizer/square.gif +0 -0
  297. data/public/ext-3.0.0/resources/images/default/sizer/sw-handle-dark.gif +0 -0
  298. data/public/ext-3.0.0/resources/images/default/sizer/sw-handle.gif +0 -0
  299. data/public/ext-3.0.0/resources/images/default/slider/slider-bg.png +0 -0
  300. data/public/ext-3.0.0/resources/images/default/slider/slider-thumb.png +0 -0
  301. data/public/ext-3.0.0/resources/images/default/slider/slider-v-bg.png +0 -0
  302. data/public/ext-3.0.0/resources/images/default/slider/slider-v-thumb.png +0 -0
  303. data/public/ext-3.0.0/resources/images/default/tabs/scroll-left.gif +0 -0
  304. data/public/ext-3.0.0/resources/images/default/tabs/scroll-right.gif +0 -0
  305. data/public/ext-3.0.0/resources/images/default/tabs/scroller-bg.gif +0 -0
  306. data/public/ext-3.0.0/resources/images/default/tabs/tab-btm-inactive-left-bg.gif +0 -0
  307. data/public/ext-3.0.0/resources/images/default/tabs/tab-btm-inactive-right-bg.gif +0 -0
  308. data/public/ext-3.0.0/resources/images/default/tabs/tab-btm-left-bg.gif +0 -0
  309. data/public/ext-3.0.0/resources/images/default/tabs/tab-btm-right-bg.gif +0 -0
  310. data/public/ext-3.0.0/resources/images/default/tabs/tab-close.gif +0 -0
  311. data/public/ext-3.0.0/resources/images/default/tabs/tab-strip-bg.gif +0 -0
  312. data/public/ext-3.0.0/resources/images/default/tabs/tab-strip-bg.png +0 -0
  313. data/public/ext-3.0.0/resources/images/default/tabs/tab-strip-btm-bg.gif +0 -0
  314. data/public/ext-3.0.0/resources/images/default/tabs/tabs-sprite.gif +0 -0
  315. data/public/ext-3.0.0/resources/images/default/toolbar/bg.gif +0 -0
  316. data/public/ext-3.0.0/resources/images/default/toolbar/btn-arrow-light.gif +0 -0
  317. data/public/ext-3.0.0/resources/images/default/toolbar/btn-arrow.gif +0 -0
  318. data/public/ext-3.0.0/resources/images/default/toolbar/btn-over-bg.gif +0 -0
  319. data/public/ext-3.0.0/resources/images/default/toolbar/gray-bg.gif +0 -0
  320. data/public/ext-3.0.0/resources/images/default/toolbar/more.gif +0 -0
  321. data/public/ext-3.0.0/resources/images/default/toolbar/tb-bg.gif +0 -0
  322. data/public/ext-3.0.0/resources/images/default/toolbar/tb-btn-sprite.gif +0 -0
  323. data/public/ext-3.0.0/resources/images/default/toolbar/tb-xl-btn-sprite.gif +0 -0
  324. data/public/ext-3.0.0/resources/images/default/toolbar/tb-xl-sep.gif +0 -0
  325. data/public/ext-3.0.0/resources/images/default/tree/arrows.gif +0 -0
  326. data/public/ext-3.0.0/resources/images/default/tree/drop-add.gif +0 -0
  327. data/public/ext-3.0.0/resources/images/default/tree/drop-between.gif +0 -0
  328. data/public/ext-3.0.0/resources/images/default/tree/drop-no.gif +0 -0
  329. data/public/ext-3.0.0/resources/images/default/tree/drop-over.gif +0 -0
  330. data/public/ext-3.0.0/resources/images/default/tree/drop-under.gif +0 -0
  331. data/public/ext-3.0.0/resources/images/default/tree/drop-yes.gif +0 -0
  332. data/public/ext-3.0.0/resources/images/default/tree/elbow-end-minus-nl.gif +0 -0
  333. data/public/ext-3.0.0/resources/images/default/tree/elbow-end-minus.gif +0 -0
  334. data/public/ext-3.0.0/resources/images/default/tree/elbow-end-plus-nl.gif +0 -0
  335. data/public/ext-3.0.0/resources/images/default/tree/elbow-end-plus.gif +0 -0
  336. data/public/ext-3.0.0/resources/images/default/tree/elbow-end.gif +0 -0
  337. data/public/ext-3.0.0/resources/images/default/tree/elbow-line.gif +0 -0
  338. data/public/ext-3.0.0/resources/images/default/tree/elbow-minus-nl.gif +0 -0
  339. data/public/ext-3.0.0/resources/images/default/tree/elbow-minus.gif +0 -0
  340. data/public/ext-3.0.0/resources/images/default/tree/elbow-plus-nl.gif +0 -0
  341. data/public/ext-3.0.0/resources/images/default/tree/elbow-plus.gif +0 -0
  342. data/public/ext-3.0.0/resources/images/default/tree/elbow.gif +0 -0
  343. data/public/ext-3.0.0/resources/images/default/tree/folder-open.gif +0 -0
  344. data/public/ext-3.0.0/resources/images/default/tree/folder.gif +0 -0
  345. data/public/ext-3.0.0/resources/images/default/tree/leaf.gif +0 -0
  346. data/public/ext-3.0.0/resources/images/default/tree/loading.gif +0 -0
  347. data/public/ext-3.0.0/resources/images/default/tree/s.gif +0 -0
  348. data/public/ext-3.0.0/resources/images/default/window/icon-error.gif +0 -0
  349. data/public/ext-3.0.0/resources/images/default/window/icon-info.gif +0 -0
  350. data/public/ext-3.0.0/resources/images/default/window/icon-question.gif +0 -0
  351. data/public/ext-3.0.0/resources/images/default/window/icon-warning.gif +0 -0
  352. data/public/ext-3.0.0/resources/images/default/window/left-corners.png +0 -0
  353. data/public/ext-3.0.0/resources/images/default/window/left-corners.psd +0 -0
  354. data/public/ext-3.0.0/resources/images/default/window/left-right.png +0 -0
  355. data/public/ext-3.0.0/resources/images/default/window/left-right.psd +0 -0
  356. data/public/ext-3.0.0/resources/images/default/window/right-corners.png +0 -0
  357. data/public/ext-3.0.0/resources/images/default/window/right-corners.psd +0 -0
  358. data/public/ext-3.0.0/resources/images/default/window/top-bottom.png +0 -0
  359. data/public/ext-3.0.0/resources/images/default/window/top-bottom.psd +0 -0
  360. data/public/ext-3.0.0/resources/images/icon/chart.gif +0 -0
  361. data/public/ext-3.0.0/src/adapter/core/ext-base-ajax.js +371 -0
  362. data/public/ext-3.0.0/src/adapter/core/ext-base-anim-extra.js +301 -0
  363. data/public/ext-3.0.0/src/adapter/core/ext-base-anim.js +477 -0
  364. data/public/ext-3.0.0/src/adapter/core/ext-base-begin.js +18 -0
  365. data/public/ext-3.0.0/src/adapter/core/ext-base-dom.js +157 -0
  366. data/public/ext-3.0.0/src/adapter/core/ext-base-end.js +21 -0
  367. data/public/ext-3.0.0/src/adapter/core/ext-base-event.js +453 -0
  368. data/public/ext-3.0.0/src/adapter/core/ext-base-point.js +17 -0
  369. data/public/ext-3.0.0/src/adapter/core/ext-base-region.js +81 -0
  370. data/public/ext-3.0.0/src/adapter/ext-base-dom-more.js +9 -0
  371. data/public/ext-3.0.0/src/adapter/jquery-bridge.js +546 -0
  372. data/public/ext-3.0.0/src/adapter/prototype-bridge.js +600 -0
  373. data/public/ext-3.0.0/src/adapter/yui-bridge.js +390 -0
  374. data/public/ext-3.0.0/src/core/CompositeElement.js +136 -0
  375. data/public/ext-3.0.0/src/core/CompositeElementLite-more.js +102 -0
  376. data/public/ext-3.0.0/src/core/DomHelper-more.js +179 -0
  377. data/public/ext-3.0.0/src/core/Element-more.js +192 -0
  378. data/public/ext-3.0.0/src/core/Element.alignment.js +370 -0
  379. data/public/ext-3.0.0/src/core/Element.dd.js +46 -0
  380. data/public/ext-3.0.0/src/core/Element.fx-more.js +152 -0
  381. data/public/ext-3.0.0/src/core/Element.insertion-more.js +52 -0
  382. data/public/ext-3.0.0/src/core/Element.keys.js +48 -0
  383. data/public/ext-3.0.0/src/core/Element.legacy.js +42 -0
  384. data/public/ext-3.0.0/src/core/Element.position-more.js +165 -0
  385. data/public/ext-3.0.0/src/core/Element.scroll-more.js +110 -0
  386. data/public/ext-3.0.0/src/core/Element.style-more.js +318 -0
  387. data/public/ext-3.0.0/src/core/Error.js +81 -0
  388. data/public/ext-3.0.0/src/core/EventManager-more.js +334 -0
  389. data/public/ext-3.0.0/src/core/Ext-more.js +669 -0
  390. data/public/ext-3.0.0/src/core/Template-more.js +115 -0
  391. data/public/ext-3.0.0/src/core/core/CompositeElementLite.js +197 -0
  392. data/public/ext-3.0.0/src/core/core/DomHelper.js +378 -0
  393. data/public/ext-3.0.0/src/core/core/DomQuery.js +826 -0
  394. data/public/ext-3.0.0/src/core/core/Element.fx.js +324 -0
  395. data/public/ext-3.0.0/src/core/core/Element.insertion.js +147 -0
  396. data/public/ext-3.0.0/src/core/core/Element.js +945 -0
  397. data/public/ext-3.0.0/src/core/core/Element.position.js +303 -0
  398. data/public/ext-3.0.0/src/core/core/Element.scroll.js +58 -0
  399. data/public/ext-3.0.0/src/core/core/Element.style.js +439 -0
  400. data/public/ext-3.0.0/src/core/core/Element.traversal.js +176 -0
  401. data/public/ext-3.0.0/src/core/core/EventManager.js +623 -0
  402. data/public/ext-3.0.0/src/core/core/Ext.js +922 -0
  403. data/public/ext-3.0.0/src/core/core/Fx.js +1115 -0
  404. data/public/ext-3.0.0/src/core/core/Template.js +185 -0
  405. data/public/ext-3.0.0/src/data/Api.js +210 -0
  406. data/public/ext-3.0.0/src/data/ArrayReader.js +102 -0
  407. data/public/ext-3.0.0/src/data/ArrayStore.js +70 -0
  408. data/public/ext-3.0.0/src/data/DataField.js +249 -0
  409. data/public/ext-3.0.0/src/data/DataProxy.js +427 -0
  410. data/public/ext-3.0.0/src/data/DataReader.js +160 -0
  411. data/public/ext-3.0.0/src/data/DataWriter.js +201 -0
  412. data/public/ext-3.0.0/src/data/DirectProxy.js +141 -0
  413. data/public/ext-3.0.0/src/data/DirectStore.js +52 -0
  414. data/public/ext-3.0.0/src/data/GroupingStore.js +139 -0
  415. data/public/ext-3.0.0/src/data/HttpProxy.js +276 -0
  416. data/public/ext-3.0.0/src/data/JsonReader.js +311 -0
  417. data/public/ext-3.0.0/src/data/JsonStore.js +49 -0
  418. data/public/ext-3.0.0/src/data/JsonWriter.js +77 -0
  419. data/public/ext-3.0.0/src/data/MemoryProxy.js +69 -0
  420. data/public/ext-3.0.0/src/data/Record.js +400 -0
  421. data/public/ext-3.0.0/src/data/ScriptTagProxy.js +279 -0
  422. data/public/ext-3.0.0/src/data/SortTypes.js +91 -0
  423. data/public/ext-3.0.0/src/data/Store.js +1492 -0
  424. data/public/ext-3.0.0/src/data/StoreMgr.js +72 -0
  425. data/public/ext-3.0.0/src/data/Tree.js +785 -0
  426. data/public/ext-3.0.0/src/data/XmlReader.js +128 -0
  427. data/public/ext-3.0.0/src/data/XmlStore.js +75 -0
  428. data/public/ext-3.0.0/src/data/XmlWriter.js +45 -0
  429. data/public/ext-3.0.0/src/data/core/Connection.js +575 -0
  430. data/public/ext-3.0.0/src/dd/DDCore.js +2992 -0
  431. data/public/ext-3.0.0/src/dd/DragSource.js +365 -0
  432. data/public/ext-3.0.0/src/dd/DragTracker.js +217 -0
  433. data/public/ext-3.0.0/src/dd/DragZone.js +133 -0
  434. data/public/ext-3.0.0/src/dd/DropTarget.js +115 -0
  435. data/public/ext-3.0.0/src/dd/DropZone.js +262 -0
  436. data/public/ext-3.0.0/src/dd/Registry.js +127 -0
  437. data/public/ext-3.0.0/src/dd/ScrollManager.js +201 -0
  438. data/public/ext-3.0.0/src/dd/StatusProxy.js +171 -0
  439. data/public/ext-3.0.0/src/debug.js +906 -0
  440. data/public/ext-3.0.0/src/direct/Direct.js +235 -0
  441. data/public/ext-3.0.0/src/direct/Event.js +34 -0
  442. data/public/ext-3.0.0/src/direct/JsonProvider.js +45 -0
  443. data/public/ext-3.0.0/src/direct/PollingProvider.js +151 -0
  444. data/public/ext-3.0.0/src/direct/Provider.js +110 -0
  445. data/public/ext-3.0.0/src/direct/RemotingProvider.js +373 -0
  446. data/public/ext-3.0.0/src/direct/Transaction.js +32 -0
  447. data/public/ext-3.0.0/src/locale/ext-lang-af.js +184 -0
  448. data/public/ext-3.0.0/src/locale/ext-lang-bg.js +278 -0
  449. data/public/ext-3.0.0/src/locale/ext-lang-ca.js +315 -0
  450. data/public/ext-3.0.0/src/locale/ext-lang-cs.js +293 -0
  451. data/public/ext-3.0.0/src/locale/ext-lang-da.js +296 -0
  452. data/public/ext-3.0.0/src/locale/ext-lang-de.js +326 -0
  453. data/public/ext-3.0.0/src/locale/ext-lang-el_GR.js +309 -0
  454. data/public/ext-3.0.0/src/locale/ext-lang-en.js +335 -0
  455. data/public/ext-3.0.0/src/locale/ext-lang-en_GB.js +315 -0
  456. data/public/ext-3.0.0/src/locale/ext-lang-es.js +318 -0
  457. data/public/ext-3.0.0/src/locale/ext-lang-fa.js +272 -0
  458. data/public/ext-3.0.0/src/locale/ext-lang-fi.js +302 -0
  459. data/public/ext-3.0.0/src/locale/ext-lang-fr.js +335 -0
  460. data/public/ext-3.0.0/src/locale/ext-lang-fr_CA.js +218 -0
  461. data/public/ext-3.0.0/src/locale/ext-lang-gr.js +175 -0
  462. data/public/ext-3.0.0/src/locale/ext-lang-he.js +292 -0
  463. data/public/ext-3.0.0/src/locale/ext-lang-hr.js +295 -0
  464. data/public/ext-3.0.0/src/locale/ext-lang-hu.js +296 -0
  465. data/public/ext-3.0.0/src/locale/ext-lang-id.js +302 -0
  466. data/public/ext-3.0.0/src/locale/ext-lang-it.js +295 -0
  467. data/public/ext-3.0.0/src/locale/ext-lang-ja.js +318 -0
  468. data/public/ext-3.0.0/src/locale/ext-lang-ko.js +267 -0
  469. data/public/ext-3.0.0/src/locale/ext-lang-lt.js +333 -0
  470. data/public/ext-3.0.0/src/locale/ext-lang-lv.js +176 -0
  471. data/public/ext-3.0.0/src/locale/ext-lang-mk.js +176 -0
  472. data/public/ext-3.0.0/src/locale/ext-lang-nl.js +323 -0
  473. data/public/ext-3.0.0/src/locale/ext-lang-no_NB.js +294 -0
  474. data/public/ext-3.0.0/src/locale/ext-lang-no_NN.js +294 -0
  475. data/public/ext-3.0.0/src/locale/ext-lang-pl.js +304 -0
  476. data/public/ext-3.0.0/src/locale/ext-lang-pt.js +260 -0
  477. data/public/ext-3.0.0/src/locale/ext-lang-pt_BR.js +302 -0
  478. data/public/ext-3.0.0/src/locale/ext-lang-pt_PT.js +298 -0
  479. data/public/ext-3.0.0/src/locale/ext-lang-ro.js +295 -0
  480. data/public/ext-3.0.0/src/locale/ext-lang-ru.js +319 -0
  481. data/public/ext-3.0.0/src/locale/ext-lang-sk.js +182 -0
  482. data/public/ext-3.0.0/src/locale/ext-lang-sl.js +176 -0
  483. data/public/ext-3.0.0/src/locale/ext-lang-sr.js +179 -0
  484. data/public/ext-3.0.0/src/locale/ext-lang-sr_RS.js +178 -0
  485. data/public/ext-3.0.0/src/locale/ext-lang-sv_SE.js +178 -0
  486. data/public/ext-3.0.0/src/locale/ext-lang-th.js +294 -0
  487. data/public/ext-3.0.0/src/locale/ext-lang-tr.js +306 -0
  488. data/public/ext-3.0.0/src/locale/ext-lang-ukr.js +258 -0
  489. data/public/ext-3.0.0/src/locale/ext-lang-vn.js +181 -0
  490. data/public/ext-3.0.0/src/locale/ext-lang-zh_CN.js +174 -0
  491. data/public/ext-3.0.0/src/locale/ext-lang-zh_TW.js +178 -0
  492. data/public/ext-3.0.0/src/state/CookieProvider.js +91 -0
  493. data/public/ext-3.0.0/src/state/Provider.js +127 -0
  494. data/public/ext-3.0.0/src/state/StateManager.js +69 -0
  495. data/public/ext-3.0.0/src/util/CSS.js +161 -0
  496. data/public/ext-3.0.0/src/util/ClickRepeater.js +200 -0
  497. data/public/ext-3.0.0/src/util/Cookies.js +96 -0
  498. data/public/ext-3.0.0/src/util/Date.js +1317 -0
  499. data/public/ext-3.0.0/src/util/Format.js +356 -0
  500. data/public/ext-3.0.0/src/util/History.js +203 -0
  501. data/public/ext-3.0.0/src/util/KeyMap.js +242 -0
  502. data/public/ext-3.0.0/src/util/KeyNav.js +161 -0
  503. data/public/ext-3.0.0/src/util/MixedCollection.js +576 -0
  504. data/public/ext-3.0.0/src/util/Observable-more.js +178 -0
  505. data/public/ext-3.0.0/src/util/TextMetrics.js +131 -0
  506. data/public/ext-3.0.0/src/util/UpdateManager.js +536 -0
  507. data/public/ext-3.0.0/src/util/XTemplate.js +379 -0
  508. data/public/ext-3.0.0/src/util/core/DelayedTask.js +68 -0
  509. data/public/ext-3.0.0/src/util/core/JSON.js +174 -0
  510. data/public/ext-3.0.0/src/util/core/Observable.js +483 -0
  511. data/public/ext-3.0.0/src/util/core/TaskMgr.js +174 -0
  512. data/public/ext-3.0.0/src/widgets/Action.js +252 -0
  513. data/public/ext-3.0.0/src/widgets/BoxComponent.js +519 -0
  514. data/public/ext-3.0.0/src/widgets/Button.js +762 -0
  515. data/public/ext-3.0.0/src/widgets/ButtonGroup.js +103 -0
  516. data/public/ext-3.0.0/src/widgets/ColorPalette.js +148 -0
  517. data/public/ext-3.0.0/src/widgets/Component.js +1540 -0
  518. data/public/ext-3.0.0/src/widgets/ComponentMgr.js +159 -0
  519. data/public/ext-3.0.0/src/widgets/Container.js +894 -0
  520. data/public/ext-3.0.0/src/widgets/CycleButton.js +188 -0
  521. data/public/ext-3.0.0/src/widgets/DataView.js +749 -0
  522. data/public/ext-3.0.0/src/widgets/DatePicker.js +771 -0
  523. data/public/ext-3.0.0/src/widgets/Editor.js +385 -0
  524. data/public/ext-3.0.0/src/widgets/Layer.js +466 -0
  525. data/public/ext-3.0.0/src/widgets/LoadMask.js +123 -0
  526. data/public/ext-3.0.0/src/widgets/MessageBox.js +626 -0
  527. data/public/ext-3.0.0/src/widgets/PagingToolbar.js +502 -0
  528. data/public/ext-3.0.0/src/widgets/Panel.js +1772 -0
  529. data/public/ext-3.0.0/src/widgets/PanelDD.js +154 -0
  530. data/public/ext-3.0.0/src/widgets/ProgressBar.js +289 -0
  531. data/public/ext-3.0.0/src/widgets/Resizable.js +760 -0
  532. data/public/ext-3.0.0/src/widgets/Shadow.js +192 -0
  533. data/public/ext-3.0.0/src/widgets/Slider.js +426 -0
  534. data/public/ext-3.0.0/src/widgets/SplitBar.js +436 -0
  535. data/public/ext-3.0.0/src/widgets/SplitButton.js +124 -0
  536. data/public/ext-3.0.0/src/widgets/TabPanel.js +1100 -0
  537. data/public/ext-3.0.0/src/widgets/Toolbar.js +781 -0
  538. data/public/ext-3.0.0/src/widgets/Viewport.js +124 -0
  539. data/public/ext-3.0.0/src/widgets/Window.js +941 -0
  540. data/public/ext-3.0.0/src/widgets/WindowManager.js +187 -0
  541. data/public/ext-3.0.0/src/widgets/chart/Chart.js +721 -0
  542. data/public/ext-3.0.0/src/widgets/chart/EventProxy.js +20 -0
  543. data/public/ext-3.0.0/src/widgets/chart/FlashComponent.js +117 -0
  544. data/public/ext-3.0.0/src/widgets/chart/swfobject.js +783 -0
  545. data/public/ext-3.0.0/src/widgets/form/Action.js +626 -0
  546. data/public/ext-3.0.0/src/widgets/form/BasicForm.js +735 -0
  547. data/public/ext-3.0.0/src/widgets/form/Checkbox.js +177 -0
  548. data/public/ext-3.0.0/src/widgets/form/CheckboxGroup.js +419 -0
  549. data/public/ext-3.0.0/src/widgets/form/Combo.js +1232 -0
  550. data/public/ext-3.0.0/src/widgets/form/DateField.js +389 -0
  551. data/public/ext-3.0.0/src/widgets/form/DisplayField.js +98 -0
  552. data/public/ext-3.0.0/src/widgets/form/Field.js +640 -0
  553. data/public/ext-3.0.0/src/widgets/form/FieldSet.js +305 -0
  554. data/public/ext-3.0.0/src/widgets/form/Form.js +335 -0
  555. data/public/ext-3.0.0/src/widgets/form/Hidden.js +39 -0
  556. data/public/ext-3.0.0/src/widgets/form/HtmlEditor.js +1179 -0
  557. data/public/ext-3.0.0/src/widgets/form/Label.js +64 -0
  558. data/public/ext-3.0.0/src/widgets/form/NumberField.js +139 -0
  559. data/public/ext-3.0.0/src/widgets/form/Radio.js +81 -0
  560. data/public/ext-3.0.0/src/widgets/form/RadioGroup.js +116 -0
  561. data/public/ext-3.0.0/src/widgets/form/TextArea.js +117 -0
  562. data/public/ext-3.0.0/src/widgets/form/TextField.js +491 -0
  563. data/public/ext-3.0.0/src/widgets/form/TimeField.js +146 -0
  564. data/public/ext-3.0.0/src/widgets/form/TriggerField.js +328 -0
  565. data/public/ext-3.0.0/src/widgets/form/VTypes.js +135 -0
  566. data/public/ext-3.0.0/src/widgets/grid/AbstractSelectionModel.js +57 -0
  567. data/public/ext-3.0.0/src/widgets/grid/CellSelectionModel.js +262 -0
  568. data/public/ext-3.0.0/src/widgets/grid/CheckboxSelectionModel.js +103 -0
  569. data/public/ext-3.0.0/src/widgets/grid/Column.js +406 -0
  570. data/public/ext-3.0.0/src/widgets/grid/ColumnDD.js +199 -0
  571. data/public/ext-3.0.0/src/widgets/grid/ColumnModel.js +592 -0
  572. data/public/ext-3.0.0/src/widgets/grid/ColumnSplitDD.js +62 -0
  573. data/public/ext-3.0.0/src/widgets/grid/EditorGrid.js +291 -0
  574. data/public/ext-3.0.0/src/widgets/grid/GridDD.js +95 -0
  575. data/public/ext-3.0.0/src/widgets/grid/GridEditor.js +21 -0
  576. data/public/ext-3.0.0/src/widgets/grid/GridPanel.js +952 -0
  577. data/public/ext-3.0.0/src/widgets/grid/GridView.js +1776 -0
  578. data/public/ext-3.0.0/src/widgets/grid/GroupingView.js +517 -0
  579. data/public/ext-3.0.0/src/widgets/grid/PropertyGrid.js +370 -0
  580. data/public/ext-3.0.0/src/widgets/grid/RowNumberer.js +61 -0
  581. data/public/ext-3.0.0/src/widgets/grid/RowSelectionModel.js +530 -0
  582. data/public/ext-3.0.0/src/widgets/layout/AbsoluteLayout.js +82 -0
  583. data/public/ext-3.0.0/src/widgets/layout/AccordionLayout.js +177 -0
  584. data/public/ext-3.0.0/src/widgets/layout/AnchorLayout.js +200 -0
  585. data/public/ext-3.0.0/src/widgets/layout/BorderLayout.js +1108 -0
  586. data/public/ext-3.0.0/src/widgets/layout/BoxLayout.js +417 -0
  587. data/public/ext-3.0.0/src/widgets/layout/CardLayout.js +127 -0
  588. data/public/ext-3.0.0/src/widgets/layout/ColumnLayout.js +130 -0
  589. data/public/ext-3.0.0/src/widgets/layout/ContainerLayout.js +215 -0
  590. data/public/ext-3.0.0/src/widgets/layout/FitLayout.js +48 -0
  591. data/public/ext-3.0.0/src/widgets/layout/FormLayout.js +266 -0
  592. data/public/ext-3.0.0/src/widgets/layout/TableLayout.js +194 -0
  593. data/public/ext-3.0.0/src/widgets/list/ColumnResizer.js +123 -0
  594. data/public/ext-3.0.0/src/widgets/list/ListView.js +357 -0
  595. data/public/ext-3.0.0/src/widgets/list/Sorter.js +70 -0
  596. data/public/ext-3.0.0/src/widgets/menu/BaseItem.js +160 -0
  597. data/public/ext-3.0.0/src/widgets/menu/CheckItem.js +114 -0
  598. data/public/ext-3.0.0/src/widgets/menu/ColorMenu.js +72 -0
  599. data/public/ext-3.0.0/src/widgets/menu/DateMenu.js +90 -0
  600. data/public/ext-3.0.0/src/widgets/menu/Item.js +211 -0
  601. data/public/ext-3.0.0/src/widgets/menu/Menu.js +733 -0
  602. data/public/ext-3.0.0/src/widgets/menu/MenuMgr.js +211 -0
  603. data/public/ext-3.0.0/src/widgets/menu/Separator.js +46 -0
  604. data/public/ext-3.0.0/src/widgets/menu/TextItem.js +46 -0
  605. data/public/ext-3.0.0/src/widgets/tips/QuickTip.js +207 -0
  606. data/public/ext-3.0.0/src/widgets/tips/QuickTips.js +159 -0
  607. data/public/ext-3.0.0/src/widgets/tips/Tip.js +157 -0
  608. data/public/ext-3.0.0/src/widgets/tips/ToolTip.js +492 -0
  609. data/public/ext-3.0.0/src/widgets/tree/AsyncTreeNode.js +114 -0
  610. data/public/ext-3.0.0/src/widgets/tree/TreeDragZone.js +82 -0
  611. data/public/ext-3.0.0/src/widgets/tree/TreeDropZone.js +321 -0
  612. data/public/ext-3.0.0/src/widgets/tree/TreeEditor.js +160 -0
  613. data/public/ext-3.0.0/src/widgets/tree/TreeEventModel.js +169 -0
  614. data/public/ext-3.0.0/src/widgets/tree/TreeFilter.js +114 -0
  615. data/public/ext-3.0.0/src/widgets/tree/TreeLoader.js +342 -0
  616. data/public/ext-3.0.0/src/widgets/tree/TreeNode.js +546 -0
  617. data/public/ext-3.0.0/src/widgets/tree/TreeNodeUI.js +633 -0
  618. data/public/ext-3.0.0/src/widgets/tree/TreePanel.js +918 -0
  619. data/public/ext-3.0.0/src/widgets/tree/TreeSelectionModel.js +315 -0
  620. data/public/ext-3.0.0/src/widgets/tree/TreeSorter.js +106 -0
  621. data/public/js/ext-portal.js +235 -0
  622. data/public/js/global.js +7 -0
  623. data/public/js/outerframe.js +47 -0
  624. data/public/js/portal.js +713 -0
  625. data/public/js/test_chart.js +152 -0
  626. data/test/config.rb +62 -0
  627. data/test/config/hosts.yaml +5 -0
  628. data/test/config/log.yaml +1 -0
  629. data/test/config/memcache.yaml +5 -0
  630. data/test/exception.rb +39 -0
  631. data/test/method_missing.rb +14 -0
  632. data/test/module.rb +39 -0
  633. data/test/remote_lmp.rb +126 -0
  634. data/test/sinatra.rb +29 -0
  635. data/test/sinatra_base.rb +16 -0
  636. metadata +690 -0
@@ -0,0 +1,7 @@
1
+ /*
2
+ * Ext JS Library 3.0.0
3
+ * Copyright(c) 2006-2009 Ext JS, LLC
4
+ * licensing@extjs.com
5
+ * http://www.extjs.com/license
6
+ */
7
+ Ext.TabPanel=Ext.extend(Ext.Panel,{monitorResize:true,deferredRender:true,tabWidth:120,minTabWidth:30,resizeTabs:false,enableTabScroll:false,scrollIncrement:0,scrollRepeatInterval:400,scrollDuration:0.35,animScroll:true,tabPosition:"top",baseCls:"x-tab-panel",autoTabs:false,autoTabSelector:"div.x-tab",activeTab:null,tabMargin:2,plain:false,wheelIncrement:20,idDelimiter:"__",itemCls:"x-tab-item",elements:"body",headerAsText:false,frame:false,hideBorders:true,initComponent:function(){this.frame=false;Ext.TabPanel.superclass.initComponent.call(this);this.addEvents("beforetabchange","tabchange","contextmenu");this.setLayout(new Ext.layout.CardLayout(Ext.apply({layoutOnCardChange:this.layoutOnTabChange,deferredRender:this.deferredRender},this.layoutConfig)));if(this.tabPosition=="top"){this.elements+=",header";this.stripTarget="header"}else{this.elements+=",footer";this.stripTarget="footer"}if(!this.stack){this.stack=Ext.TabPanel.AccessStack()}this.initItems()},onRender:function(c,a){Ext.TabPanel.superclass.onRender.call(this,c,a);if(this.plain){var f=this.tabPosition=="top"?"header":"footer";this[f].addClass("x-tab-panel-"+f+"-plain")}var b=this[this.stripTarget];this.stripWrap=b.createChild({cls:"x-tab-strip-wrap",cn:{tag:"ul",cls:"x-tab-strip x-tab-strip-"+this.tabPosition}});var e=(this.tabPosition=="bottom"?this.stripWrap:null);this.stripSpacer=b.createChild({cls:"x-tab-strip-spacer"},e);this.strip=new Ext.Element(this.stripWrap.dom.firstChild);this.edge=this.strip.createChild({tag:"li",cls:"x-tab-edge"});this.strip.createChild({cls:"x-clear"});this.body.addClass("x-tab-panel-body-"+this.tabPosition);if(!this.itemTpl){var d=new Ext.Template('<li class="{cls}" id="{id}"><a class="x-tab-strip-close" onclick="return false;"></a>','<a class="x-tab-right" href="#" onclick="return false;"><em class="x-tab-left">','<span class="x-tab-strip-inner"><span class="x-tab-strip-text {iconCls}">{text}</span></span>',"</em></a></li>");d.disableFormats=true;d.compile();Ext.TabPanel.prototype.itemTpl=d}this.items.each(this.initTab,this)},afterRender:function(){Ext.TabPanel.superclass.afterRender.call(this);if(this.autoTabs){this.readTabs(false)}if(this.activeTab!==undefined){var a=Ext.isObject(this.activeTab)?this.activeTab:this.items.get(this.activeTab);delete this.activeTab;this.setActiveTab(a)}},initEvents:function(){Ext.TabPanel.superclass.initEvents.call(this);this.on("add",this.onAdd,this,{target:this});this.on("remove",this.onRemove,this,{target:this});this.mon(this.strip,"mousedown",this.onStripMouseDown,this);this.mon(this.strip,"contextmenu",this.onStripContextMenu,this);if(this.enableTabScroll){this.mon(this.strip,"mousewheel",this.onWheel,this)}},findTargets:function(c){var b=null;var a=c.getTarget("li",this.strip);if(a){b=this.getComponent(a.id.split(this.idDelimiter)[1]);if(b.disabled){return{close:null,item:null,el:null}}}return{close:c.getTarget(".x-tab-strip-close",this.strip),item:b,el:a}},onStripMouseDown:function(b){if(b.button!==0){return}b.preventDefault();var a=this.findTargets(b);if(a.close){if(a.item.fireEvent("beforeclose",a.item)!==false){a.item.fireEvent("close",a.item);this.remove(a.item)}return}if(a.item&&a.item!=this.activeTab){this.setActiveTab(a.item)}},onStripContextMenu:function(b){b.preventDefault();var a=this.findTargets(b);if(a.item){this.fireEvent("contextmenu",this,a.item,b)}},readTabs:function(d){if(d===true){this.items.each(function(g){this.remove(g)},this)}var c=this.el.query(this.autoTabSelector);for(var b=0,a=c.length;b<a;b++){var e=c[b];var f=e.getAttribute("title");e.removeAttribute("title");this.add({title:f,contentEl:e})}},initTab:function(c,a){var d=this.strip.dom.childNodes[a];var e=this.getTemplateArgs(c);var b=d?this.itemTpl.insertBefore(d,e):this.itemTpl.append(this.strip,e);Ext.fly(b).addClassOnOver("x-tab-strip-over");if(c.tabTip){Ext.fly(b).child("span.x-tab-strip-text",true).qtip=c.tabTip}c.tabEl=b;c.on("disable",this.onItemDisabled,this);c.on("enable",this.onItemEnabled,this);c.on("titlechange",this.onItemTitleChanged,this);c.on("iconchange",this.onItemIconChanged,this);c.on("beforeshow",this.onBeforeShowItem,this)},getTemplateArgs:function(b){var a=b.closable?"x-tab-strip-closable":"";if(b.disabled){a+=" x-item-disabled"}if(b.iconCls){a+=" x-tab-with-icon"}if(b.tabCls){a+=" "+b.tabCls}return{id:this.id+this.idDelimiter+b.getItemId(),text:b.title,cls:a,iconCls:b.iconCls||""}},onAdd:function(c,b,a){this.initTab(b,a);if(this.items.getCount()==1){this.syncSize()}this.delegateUpdates()},onBeforeAdd:function(b){var a=b.events?(this.items.containsKey(b.getItemId())?b:null):this.items.get(b);if(a){this.setActiveTab(b);return false}Ext.TabPanel.superclass.onBeforeAdd.apply(this,arguments);var c=b.elements;b.elements=c?c.replace(",header",""):c;b.border=(b.border===true)},onRemove:function(c,b){Ext.destroy(Ext.get(this.getTabEl(b)));this.stack.remove(b);b.un("disable",this.onItemDisabled,this);b.un("enable",this.onItemEnabled,this);b.un("titlechange",this.onItemTitleChanged,this);b.un("iconchange",this.onItemIconChanged,this);b.un("beforeshow",this.onBeforeShowItem,this);if(b==this.activeTab){var a=this.stack.next();if(a){this.setActiveTab(a)}else{if(this.items.getCount()>0){this.setActiveTab(0)}else{this.activeTab=null}}}this.delegateUpdates()},onBeforeShowItem:function(a){if(a!=this.activeTab){this.setActiveTab(a);return false}},onItemDisabled:function(b){var a=this.getTabEl(b);if(a){Ext.fly(a).addClass("x-item-disabled")}this.stack.remove(b)},onItemEnabled:function(b){var a=this.getTabEl(b);if(a){Ext.fly(a).removeClass("x-item-disabled")}},onItemTitleChanged:function(b){var a=this.getTabEl(b);if(a){Ext.fly(a).child("span.x-tab-strip-text",true).innerHTML=b.title}},onItemIconChanged:function(d,a,c){var b=this.getTabEl(d);if(b){Ext.fly(b).child("span.x-tab-strip-text").replaceClass(c,a)}},getTabEl:function(a){return document.getElementById(this.id+this.idDelimiter+this.getComponent(a).getItemId())},onResize:function(){Ext.TabPanel.superclass.onResize.apply(this,arguments);this.delegateUpdates()},beginUpdate:function(){this.suspendUpdates=true},endUpdate:function(){this.suspendUpdates=false;this.delegateUpdates()},hideTabStripItem:function(b){b=this.getComponent(b);var a=this.getTabEl(b);if(a){a.style.display="none";this.delegateUpdates()}this.stack.remove(b)},unhideTabStripItem:function(b){b=this.getComponent(b);var a=this.getTabEl(b);if(a){a.style.display="";this.delegateUpdates()}},delegateUpdates:function(){if(this.suspendUpdates){return}if(this.resizeTabs&&this.rendered){this.autoSizeTabs()}if(this.enableTabScroll&&this.rendered){this.autoScrollTabs()}},autoSizeTabs:function(){var g=this.items.length;var b=this.tabPosition!="bottom"?"header":"footer";var c=this[b].dom.offsetWidth;var a=this[b].dom.clientWidth;if(!this.resizeTabs||g<1||!a){return}var j=Math.max(Math.min(Math.floor((a-4)/g)-this.tabMargin,this.tabWidth),this.minTabWidth);this.lastTabWidth=j;var l=this.strip.query("li:not([className^=x-tab-edge])");for(var e=0,h=l.length;e<h;e++){var k=l[e];var m=Ext.fly(k).child(".x-tab-strip-inner",true);var f=k.offsetWidth;var d=m.offsetWidth;m.style.width=(j-(f-d))+"px"}},adjustBodyWidth:function(a){if(this.header){this.header.setWidth(a)}if(this.footer){this.footer.setWidth(a)}return a},setActiveTab:function(c){c=this.getComponent(c);if(!c||this.fireEvent("beforetabchange",this,c,this.activeTab)===false){return}if(!this.rendered){this.activeTab=c;return}if(this.activeTab!=c){if(this.activeTab){var a=this.getTabEl(this.activeTab);if(a){Ext.fly(a).removeClass("x-tab-strip-active")}this.activeTab.fireEvent("deactivate",this.activeTab)}var b=this.getTabEl(c);Ext.fly(b).addClass("x-tab-strip-active");this.activeTab=c;this.stack.add(c);this.layout.setActiveItem(c);if(this.scrolling){this.scrollToTab(c,this.animScroll)}c.fireEvent("activate",c);this.fireEvent("tabchange",this,c)}},getActiveTab:function(){return this.activeTab||null},getItem:function(a){return this.getComponent(a)},autoScrollTabs:function(){this.pos=this.tabPosition=="bottom"?this.footer:this.header;var g=this.items.length;var d=this.pos.dom.offsetWidth;var c=this.pos.dom.clientWidth;var f=this.stripWrap;var e=f.dom;var b=e.offsetWidth;var h=this.getScrollPos();var a=this.edge.getOffsetsTo(this.stripWrap)[0]+h;if(!this.enableTabScroll||g<1||b<20){return}if(a<=c){e.scrollLeft=0;f.setWidth(c);if(this.scrolling){this.scrolling=false;this.pos.removeClass("x-tab-scrolling");this.scrollLeft.hide();this.scrollRight.hide();if(Ext.isAir||Ext.isWebKit){e.style.marginLeft="";e.style.marginRight=""}}}else{if(!this.scrolling){this.pos.addClass("x-tab-scrolling");if(Ext.isAir||Ext.isWebKit){e.style.marginLeft="18px";e.style.marginRight="18px"}}c-=f.getMargins("lr");f.setWidth(c>20?c:20);if(!this.scrolling){if(!this.scrollLeft){this.createScrollers()}else{this.scrollLeft.show();this.scrollRight.show()}}this.scrolling=true;if(h>(a-c)){e.scrollLeft=a-c}else{this.scrollToTab(this.activeTab,false)}this.updateScrollButtons()}},createScrollers:function(){this.pos.addClass("x-tab-scrolling-"+this.tabPosition);var c=this.stripWrap.dom.offsetHeight;var a=this.pos.insertFirst({cls:"x-tab-scroller-left"});a.setHeight(c);a.addClassOnOver("x-tab-scroller-left-over");this.leftRepeater=new Ext.util.ClickRepeater(a,{interval:this.scrollRepeatInterval,handler:this.onScrollLeft,scope:this});this.scrollLeft=a;var b=this.pos.insertFirst({cls:"x-tab-scroller-right"});b.setHeight(c);b.addClassOnOver("x-tab-scroller-right-over");this.rightRepeater=new Ext.util.ClickRepeater(b,{interval:this.scrollRepeatInterval,handler:this.onScrollRight,scope:this});this.scrollRight=b},getScrollWidth:function(){return this.edge.getOffsetsTo(this.stripWrap)[0]+this.getScrollPos()},getScrollPos:function(){return parseInt(this.stripWrap.dom.scrollLeft,10)||0},getScrollArea:function(){return parseInt(this.stripWrap.dom.clientWidth,10)||0},getScrollAnim:function(){return{duration:this.scrollDuration,callback:this.updateScrollButtons,scope:this}},getScrollIncrement:function(){return this.scrollIncrement||(this.resizeTabs?this.lastTabWidth+2:100)},scrollToTab:function(e,a){if(!e){return}var c=this.getTabEl(e);var g=this.getScrollPos(),d=this.getScrollArea();var f=Ext.fly(c).getOffsetsTo(this.stripWrap)[0]+g;var b=f+c.offsetWidth;if(f<g){this.scrollTo(f,a)}else{if(b>(g+d)){this.scrollTo(b-d,a)}}},scrollTo:function(b,a){this.stripWrap.scrollTo("left",b,a?this.getScrollAnim():false);if(!a){this.updateScrollButtons()}},onWheel:function(f){var g=f.getWheelDelta()*this.wheelIncrement*-1;f.stopEvent();var h=this.getScrollPos();var c=h+g;var a=this.getScrollWidth()-this.getScrollArea();var b=Math.max(0,Math.min(a,c));if(b!=h){this.scrollTo(b,false)}},onScrollRight:function(){var a=this.getScrollWidth()-this.getScrollArea();var c=this.getScrollPos();var b=Math.min(a,c+this.getScrollIncrement());if(b!=c){this.scrollTo(b,this.animScroll)}},onScrollLeft:function(){var b=this.getScrollPos();var a=Math.max(0,b-this.getScrollIncrement());if(a!=b){this.scrollTo(a,this.animScroll)}},updateScrollButtons:function(){var a=this.getScrollPos();this.scrollLeft[a===0?"addClass":"removeClass"]("x-tab-scroller-left-disabled");this.scrollRight[a>=(this.getScrollWidth()-this.getScrollArea())?"addClass":"removeClass"]("x-tab-scroller-right-disabled")},beforeDestroy:function(){if(this.items){this.items.each(function(a){if(a&&a.tabEl){Ext.get(a.tabEl).removeAllListeners();a.tabEl=null}},this)}if(this.strip){this.strip.removeAllListeners()}Ext.TabPanel.superclass.beforeDestroy.apply(this)}});Ext.reg("tabpanel",Ext.TabPanel);Ext.TabPanel.prototype.activate=Ext.TabPanel.prototype.setActiveTab;Ext.TabPanel.AccessStack=function(){var a=[];return{add:function(b){a.push(b);if(a.length>10){a.shift()}},remove:function(e){var d=[];for(var c=0,b=a.length;c<b;c++){if(a[c]!=e){d.push(a[c])}}a=d},next:function(){return a.pop()}}};
@@ -0,0 +1,994 @@
1
+ /*!
2
+ * Ext JS Library 3.0.0
3
+ * Copyright(c) 2006-2009 Ext JS, LLC
4
+ * licensing@extjs.com
5
+ * http://www.extjs.com/license
6
+ */
7
+ /**
8
+ * @class Ext.Tip
9
+ * @extends Ext.Panel
10
+ * This is the base class for {@link Ext.QuickTip} and {@link Ext.Tooltip} that provides the basic layout and
11
+ * positioning that all tip-based classes require. This class can be used directly for simple, statically-positioned
12
+ * tips that are displayed programmatically, or it can be extended to provide custom tip implementations.
13
+ * @constructor
14
+ * Create a new Tip
15
+ * @param {Object} config The configuration options
16
+ */
17
+ Ext.Tip = Ext.extend(Ext.Panel, {
18
+ /**
19
+ * @cfg {Boolean} closable True to render a close tool button into the tooltip header (defaults to false).
20
+ */
21
+ /**
22
+ * @cfg {Number} width
23
+ * Width in pixels of the tip (defaults to auto). Width will be ignored if it exceeds the bounds of
24
+ * {@link #minWidth} or {@link #maxWidth}. The maximum supported value is 500.
25
+ */
26
+ /**
27
+ * @cfg {Number} minWidth The minimum width of the tip in pixels (defaults to 40).
28
+ */
29
+ minWidth : 40,
30
+ /**
31
+ * @cfg {Number} maxWidth The maximum width of the tip in pixels (defaults to 300). The maximum supported value is 500.
32
+ */
33
+ maxWidth : 300,
34
+ /**
35
+ * @cfg {Boolean/String} shadow True or "sides" for the default effect, "frame" for 4-way shadow, and "drop"
36
+ * for bottom-right shadow (defaults to "sides").
37
+ */
38
+ shadow : "sides",
39
+ /**
40
+ * @cfg {String} defaultAlign <b>Experimental</b>. The default {@link Ext.Element#alignTo} anchor position value
41
+ * for this tip relative to its element of origin (defaults to "tl-bl?").
42
+ */
43
+ defaultAlign : "tl-bl?",
44
+ autoRender: true,
45
+ quickShowInterval : 250,
46
+
47
+ // private panel overrides
48
+ frame:true,
49
+ hidden:true,
50
+ baseCls: 'x-tip',
51
+ floating:{shadow:true,shim:true,useDisplay:true,constrain:false},
52
+ autoHeight:true,
53
+
54
+ closeAction: 'hide',
55
+
56
+ // private
57
+ initComponent : function(){
58
+ Ext.Tip.superclass.initComponent.call(this);
59
+ if(this.closable && !this.title){
60
+ this.elements += ',header';
61
+ }
62
+ },
63
+
64
+ // private
65
+ afterRender : function(){
66
+ Ext.Tip.superclass.afterRender.call(this);
67
+ if(this.closable){
68
+ this.addTool({
69
+ id: 'close',
70
+ handler: this[this.closeAction],
71
+ scope: this
72
+ });
73
+ }
74
+ },
75
+
76
+ /**
77
+ * Shows this tip at the specified XY position. Example usage:
78
+ * <pre><code>
79
+ // Show the tip at x:50 and y:100
80
+ tip.showAt([50,100]);
81
+ </code></pre>
82
+ * @param {Array} xy An array containing the x and y coordinates
83
+ */
84
+ showAt : function(xy){
85
+ Ext.Tip.superclass.show.call(this);
86
+ if(this.measureWidth !== false && (!this.initialConfig || typeof this.initialConfig.width != 'number')){
87
+ this.doAutoWidth();
88
+ }
89
+ if(this.constrainPosition){
90
+ xy = this.el.adjustForConstraints(xy);
91
+ }
92
+ this.setPagePosition(xy[0], xy[1]);
93
+ },
94
+
95
+ // protected
96
+ doAutoWidth : function(){
97
+ var bw = this.body.getTextWidth();
98
+ if(this.title){
99
+ bw = Math.max(bw, this.header.child('span').getTextWidth(this.title));
100
+ }
101
+ bw += this.getFrameWidth() + (this.closable ? 20 : 0) + this.body.getPadding("lr");
102
+ this.setWidth(bw.constrain(this.minWidth, this.maxWidth));
103
+
104
+ // IE7 repaint bug on initial show
105
+ if(Ext.isIE7 && !this.repainted){
106
+ this.el.repaint();
107
+ this.repainted = true;
108
+ }
109
+ },
110
+
111
+ /**
112
+ * <b>Experimental</b>. Shows this tip at a position relative to another element using a standard {@link Ext.Element#alignTo}
113
+ * anchor position value. Example usage:
114
+ * <pre><code>
115
+ // Show the tip at the default position ('tl-br?')
116
+ tip.showBy('my-el');
117
+
118
+ // Show the tip's top-left corner anchored to the element's top-right corner
119
+ tip.showBy('my-el', 'tl-tr');
120
+ </code></pre>
121
+ * @param {Mixed} el An HTMLElement, Ext.Element or string id of the target element to align to
122
+ * @param {String} position (optional) A valid {@link Ext.Element#alignTo} anchor position (defaults to 'tl-br?' or
123
+ * {@link #defaultAlign} if specified).
124
+ */
125
+ showBy : function(el, pos){
126
+ if(!this.rendered){
127
+ this.render(Ext.getBody());
128
+ }
129
+ this.showAt(this.el.getAlignToXY(el, pos || this.defaultAlign));
130
+ },
131
+
132
+ initDraggable : function(){
133
+ this.dd = new Ext.Tip.DD(this, typeof this.draggable == 'boolean' ? null : this.draggable);
134
+ this.header.addClass('x-tip-draggable');
135
+ }
136
+ });
137
+
138
+ // private - custom Tip DD implementation
139
+ Ext.Tip.DD = function(tip, config){
140
+ Ext.apply(this, config);
141
+ this.tip = tip;
142
+ Ext.Tip.DD.superclass.constructor.call(this, tip.el.id, 'WindowDD-'+tip.id);
143
+ this.setHandleElId(tip.header.id);
144
+ this.scroll = false;
145
+ };
146
+
147
+ Ext.extend(Ext.Tip.DD, Ext.dd.DD, {
148
+ moveOnly:true,
149
+ scroll:false,
150
+ headerOffsets:[100, 25],
151
+ startDrag : function(){
152
+ this.tip.el.disableShadow();
153
+ },
154
+ endDrag : function(e){
155
+ this.tip.el.enableShadow(true);
156
+ }
157
+ });/**
158
+ * @class Ext.ToolTip
159
+ * @extends Ext.Tip
160
+ * A standard tooltip implementation for providing additional information when hovering over a target element.
161
+ * @constructor
162
+ * Create a new Tooltip
163
+ * @param {Object} config The configuration options
164
+ */
165
+ Ext.ToolTip = Ext.extend(Ext.Tip, {
166
+ /**
167
+ * When a Tooltip is configured with the {@link #delegate} option to cause selected child elements of the {@link #target}
168
+ * Element to each trigger a seperate show event, this property is set to the DOM element which triggered the show.
169
+ * @type DOMElement
170
+ * @property triggerElement
171
+ */
172
+ /**
173
+ * @cfg {Mixed} target The target HTMLElement, Ext.Element or id to monitor for mouseover events to trigger
174
+ * showing this ToolTip.
175
+ */
176
+ /**
177
+ * @cfg {Boolean} autoHide True to automatically hide the tooltip after the mouse exits the target element
178
+ * or after the {@link #dismissDelay} has expired if set (defaults to true). If {@link closable} = true a close
179
+ * tool button will be rendered into the tooltip header.
180
+ */
181
+ /**
182
+ * @cfg {Number} showDelay Delay in milliseconds before the tooltip displays after the mouse enters the
183
+ * target element (defaults to 500)
184
+ */
185
+ showDelay: 500,
186
+ /**
187
+ * @cfg {Number} hideDelay Delay in milliseconds after the mouse exits the target element but before the
188
+ * tooltip actually hides (defaults to 200). Set to 0 for the tooltip to hide immediately.
189
+ */
190
+ hideDelay: 200,
191
+ /**
192
+ * @cfg {Number} dismissDelay Delay in milliseconds before the tooltip automatically hides (defaults to 5000).
193
+ * To disable automatic hiding, set dismissDelay = 0.
194
+ */
195
+ dismissDelay: 5000,
196
+ /**
197
+ * @cfg {Array} mouseOffset An XY offset from the mouse position where the tooltip should be shown (defaults to [15,18]).
198
+ */
199
+ /**
200
+ * @cfg {Boolean} trackMouse True to have the tooltip follow the mouse as it moves over the target element (defaults to false).
201
+ */
202
+ trackMouse : false,
203
+ /**
204
+ * @cfg {Boolean} anchorToTarget True to anchor the tooltip to the target element, false to
205
+ * anchor it relative to the mouse coordinates (defaults to true). When anchorToTarget is
206
+ * true, use {@link #defaultAlign} to control tooltip alignment to the target element. When
207
+ * anchorToTarget is false, use {@link #anchorPosition} instead to control alignment.
208
+ */
209
+ anchorToTarget: true,
210
+ /**
211
+ * @cfg {Number} anchorOffset A numeric pixel value used to offset the default position of the
212
+ * anchor arrow (defaults to 0). When the anchor position is on the top or bottom of the tooltip,
213
+ * anchorOffset will be used as a horizontal offset. Likewise, when the anchor position is on the
214
+ * left or right side, anchorOffset will be used as a vertical offset.
215
+ */
216
+ anchorOffset: 0,
217
+ /**
218
+ * @cfg {String} delegate <p>Optional. A {@link Ext.DomQuery DomQuery} selector which allows selection of individual elements
219
+ * within the {@link #target} element to trigger showing and hiding the ToolTip as the mouse moves within the target.</p>
220
+ * <p>When specified, the child element of the target which caused a show event is placed into the {@link #triggerElement} property
221
+ * before the ToolTip is shown.</p>
222
+ * <p>This may be useful when a Component has regular, repeating elements in it, each of which need a Tooltip which contains
223
+ * information specific to that element. For example:</p><pre><code>
224
+ var myGrid = new Ext.grid.gridPanel(gridConfig);
225
+ myGrid.on('render', function(grid) {
226
+ var store = grid.getStore(); // Capture the Store.
227
+ var view = grid.getView(); // Capture the GridView.
228
+ myGrid.tip = new Ext.ToolTip({
229
+ target: view.mainBody, // The overall target element.
230
+ delegate: '.x-grid3-row', // Each grid row causes its own seperate show and hide.
231
+ trackMouse: true, // Moving within the row should not hide the tip.
232
+ renderTo: document.body, // Render immediately so that tip.body can be referenced prior to the first show.
233
+ listeners: { // Change content dynamically depending on which element triggered the show.
234
+ beforeshow: function updateTipBody(tip) {
235
+ var rowIndex = view.findRowIndex(tip.triggerElement);
236
+ tip.body.dom.innerHTML = "Over Record ID " + store.getAt(rowIndex).id;
237
+ }
238
+ }
239
+ });
240
+ });</code></pre>
241
+ */
242
+
243
+ // private
244
+ targetCounter: 0,
245
+
246
+ constrainPosition: false,
247
+
248
+ // private
249
+ initComponent: function(){
250
+ Ext.ToolTip.superclass.initComponent.call(this);
251
+ this.lastActive = new Date();
252
+ this.initTarget(this.target);
253
+ this.origAnchor = this.anchor;
254
+ },
255
+
256
+ // private
257
+ onRender : function(ct, position){
258
+ Ext.ToolTip.superclass.onRender.call(this, ct, position);
259
+ this.anchorCls = 'x-tip-anchor-' + this.getAnchorPosition();
260
+ this.anchorEl = this.el.createChild({
261
+ cls: 'x-tip-anchor ' + this.anchorCls
262
+ });
263
+ },
264
+
265
+ // private
266
+ afterRender : function(){
267
+ Ext.ToolTip.superclass.afterRender.call(this);
268
+ this.anchorEl.setStyle('z-index', this.el.getZIndex() + 1);
269
+ },
270
+
271
+ /**
272
+ * Binds this ToolTip to the specified element. The tooltip will be displayed when the mouse moves over the element.
273
+ * @param {Mixed} t The Element, HtmlElement, or ID of an element to bind to
274
+ */
275
+ initTarget : function(target){
276
+ var t;
277
+ if((t = Ext.get(target))){
278
+ if(this.target){
279
+ this.target = Ext.get(this.target);
280
+ this.target.un('mouseover', this.onTargetOver, this);
281
+ this.target.un('mouseout', this.onTargetOut, this);
282
+ this.target.un('mousemove', this.onMouseMove, this);
283
+ }
284
+ this.mon(t, {
285
+ mouseover: this.onTargetOver,
286
+ mouseout: this.onTargetOut,
287
+ mousemove: this.onMouseMove,
288
+ scope: this
289
+ });
290
+ this.target = t;
291
+ }
292
+ if(this.anchor){
293
+ this.anchorTarget = this.target;
294
+ }
295
+ },
296
+
297
+ // private
298
+ onMouseMove : function(e){
299
+ var t = this.delegate ? e.getTarget(this.delegate) : this.triggerElement = true;
300
+ if (t) {
301
+ this.targetXY = e.getXY();
302
+ if (t === this.triggerElement) {
303
+ if(!this.hidden && this.trackMouse){
304
+ this.setPagePosition(this.getTargetXY());
305
+ }
306
+ } else {
307
+ this.hide();
308
+ this.lastActive = new Date(0);
309
+ this.onTargetOver(e);
310
+ }
311
+ } else if (!this.closable && this.isVisible()) {
312
+ this.hide();
313
+ }
314
+ },
315
+
316
+ // private
317
+ getTargetXY : function(){
318
+ if(this.anchor){
319
+ this.targetCounter++;
320
+ var offsets = this.getOffsets();
321
+ var xy = (this.anchorToTarget && !this.trackMouse) ?
322
+ this.el.getAlignToXY(this.anchorTarget, this.getAnchorAlign()) :
323
+ this.targetXY;
324
+
325
+ var dw = Ext.lib.Dom.getViewWidth()-5;
326
+ var dh = Ext.lib.Dom.getViewHeight()-5;
327
+ var scrollX = (document.documentElement.scrollLeft || document.body.scrollLeft || 0)+5;
328
+ var scrollY = (document.documentElement.scrollTop || document.body.scrollTop || 0)+5;
329
+
330
+ var axy = [xy[0] + offsets[0], xy[1] + offsets[1]];
331
+ var sz = this.getSize();
332
+ this.anchorEl.removeClass(this.anchorCls);
333
+
334
+ if(this.targetCounter < 2){
335
+ if(axy[0] < scrollX){
336
+ if(this.anchorToTarget){
337
+ this.defaultAlign = 'l-r';
338
+ if(this.mouseOffset){this.mouseOffset[0] *= -1;}
339
+ }
340
+ this.anchor = 'left';
341
+ return this.getTargetXY();
342
+ }
343
+ if(axy[0]+sz.width > dw){
344
+ if(this.anchorToTarget){
345
+ this.defaultAlign = 'r-l';
346
+ if(this.mouseOffset){this.mouseOffset[0] *= -1;}
347
+ }
348
+ this.anchor = 'right';
349
+ return this.getTargetXY();
350
+ }
351
+ if(axy[1] < scrollY){
352
+ if(this.anchorToTarget){
353
+ this.defaultAlign = 't-b';
354
+ if(this.mouseOffset){this.mouseOffset[1] *= -1;}
355
+ }
356
+ this.anchor = 'top';
357
+ return this.getTargetXY();
358
+ }
359
+ if(axy[1]+sz.height > dh){
360
+ if(this.anchorToTarget){
361
+ this.defaultAlign = 'b-t';
362
+ if(this.mouseOffset){this.mouseOffset[1] *= -1;}
363
+ }
364
+ this.anchor = 'bottom';
365
+ return this.getTargetXY();
366
+ }
367
+ }
368
+
369
+ this.anchorCls = 'x-tip-anchor-'+this.getAnchorPosition();
370
+ this.anchorEl.addClass(this.anchorCls);
371
+ this.targetCounter = 0;
372
+ return axy;
373
+ }else{
374
+ var mouseOffset = this.getMouseOffset();
375
+ return [this.targetXY[0]+mouseOffset[0], this.targetXY[1]+mouseOffset[1]];
376
+ }
377
+ },
378
+
379
+ getMouseOffset : function(){
380
+ var offset = this.anchor ? [0,0] : [15,18];
381
+ if(this.mouseOffset){
382
+ offset[0] += this.mouseOffset[0];
383
+ offset[1] += this.mouseOffset[1];
384
+ }
385
+ return offset;
386
+ },
387
+
388
+ // private
389
+ getAnchorPosition : function(){
390
+ if(this.anchor){
391
+ this.tipAnchor = this.anchor.charAt(0);
392
+ }else{
393
+ var m = this.defaultAlign.match(/^([a-z]+)-([a-z]+)(\?)?$/);
394
+ if(!m){
395
+ throw "AnchorTip.defaultAlign is invalid";
396
+ }
397
+ this.tipAnchor = m[1].charAt(0);
398
+ }
399
+
400
+ switch(this.tipAnchor){
401
+ case 't': return 'top';
402
+ case 'b': return 'bottom';
403
+ case 'r': return 'right';
404
+ }
405
+ return 'left';
406
+ },
407
+
408
+ // private
409
+ getAnchorAlign : function(){
410
+ switch(this.anchor){
411
+ case 'top' : return 'tl-bl';
412
+ case 'left' : return 'tl-tr';
413
+ case 'right': return 'tr-tl';
414
+ default : return 'bl-tl';
415
+ }
416
+ },
417
+
418
+ // private
419
+ getOffsets: function(){
420
+ var offsets, ap = this.getAnchorPosition().charAt(0);
421
+ if(this.anchorToTarget && !this.trackMouse){
422
+ switch(ap){
423
+ case 't':
424
+ offsets = [0, 9];
425
+ break;
426
+ case 'b':
427
+ offsets = [0, -13];
428
+ break;
429
+ case 'r':
430
+ offsets = [-13, 0];
431
+ break;
432
+ default:
433
+ offsets = [9, 0];
434
+ break;
435
+ }
436
+ }else{
437
+ switch(ap){
438
+ case 't':
439
+ offsets = [-15-this.anchorOffset, 30];
440
+ break;
441
+ case 'b':
442
+ offsets = [-19-this.anchorOffset, -13-this.el.dom.offsetHeight];
443
+ break;
444
+ case 'r':
445
+ offsets = [-15-this.el.dom.offsetWidth, -13-this.anchorOffset];
446
+ break;
447
+ default:
448
+ offsets = [25, -13-this.anchorOffset];
449
+ break;
450
+ }
451
+ }
452
+ var mouseOffset = this.getMouseOffset();
453
+ offsets[0] += mouseOffset[0];
454
+ offsets[1] += mouseOffset[1];
455
+
456
+ return offsets;
457
+ },
458
+
459
+ // private
460
+ onTargetOver : function(e){
461
+ if(this.disabled || e.within(this.target.dom, true)){
462
+ return;
463
+ }
464
+ var t = e.getTarget(this.delegate);
465
+ if (t) {
466
+ this.triggerElement = t;
467
+ this.clearTimer('hide');
468
+ this.targetXY = e.getXY();
469
+ this.delayShow();
470
+ }
471
+ },
472
+
473
+ // private
474
+ delayShow : function(){
475
+ if(this.hidden && !this.showTimer){
476
+ if(this.lastActive.getElapsed() < this.quickShowInterval){
477
+ this.show();
478
+ }else{
479
+ this.showTimer = this.show.defer(this.showDelay, this);
480
+ }
481
+ }else if(!this.hidden && this.autoHide !== false){
482
+ this.show();
483
+ }
484
+ },
485
+
486
+ // private
487
+ onTargetOut : function(e){
488
+ if(this.disabled || e.within(this.target.dom, true)){
489
+ return;
490
+ }
491
+ this.clearTimer('show');
492
+ if(this.autoHide !== false){
493
+ this.delayHide();
494
+ }
495
+ },
496
+
497
+ // private
498
+ delayHide : function(){
499
+ if(!this.hidden && !this.hideTimer){
500
+ this.hideTimer = this.hide.defer(this.hideDelay, this);
501
+ }
502
+ },
503
+
504
+ /**
505
+ * Hides this tooltip if visible.
506
+ */
507
+ hide: function(){
508
+ this.clearTimer('dismiss');
509
+ this.lastActive = new Date();
510
+ if(this.anchorEl){
511
+ this.anchorEl.hide();
512
+ }
513
+ Ext.ToolTip.superclass.hide.call(this);
514
+ delete this.triggerElement;
515
+ },
516
+
517
+ /**
518
+ * Shows this tooltip at the current event target XY position.
519
+ */
520
+ show : function(){
521
+ if(this.anchor){
522
+ // pre-show it off screen so that the el will have dimensions
523
+ // for positioning calcs when getting xy next
524
+ this.showAt([-1000,-1000]);
525
+ this.origConstrainPosition = this.constrainPosition;
526
+ this.constrainPosition = false;
527
+ this.anchor = this.origAnchor;
528
+ }
529
+ this.showAt(this.getTargetXY());
530
+
531
+ if(this.anchor){
532
+ this.syncAnchor();
533
+ this.anchorEl.show();
534
+ this.constrainPosition = this.origConstrainPosition;
535
+ }else{
536
+ this.anchorEl.hide();
537
+ }
538
+ },
539
+
540
+ // inherit docs
541
+ showAt : function(xy){
542
+ this.lastActive = new Date();
543
+ this.clearTimers();
544
+ Ext.ToolTip.superclass.showAt.call(this, xy);
545
+ if(this.dismissDelay && this.autoHide !== false){
546
+ this.dismissTimer = this.hide.defer(this.dismissDelay, this);
547
+ }
548
+ },
549
+
550
+ // private
551
+ syncAnchor : function(){
552
+ var anchorPos, targetPos, offset;
553
+ switch(this.tipAnchor.charAt(0)){
554
+ case 't':
555
+ anchorPos = 'b';
556
+ targetPos = 'tl';
557
+ offset = [20+this.anchorOffset, 2];
558
+ break;
559
+ case 'r':
560
+ anchorPos = 'l';
561
+ targetPos = 'tr';
562
+ offset = [-2, 11+this.anchorOffset];
563
+ break;
564
+ case 'b':
565
+ anchorPos = 't';
566
+ targetPos = 'bl';
567
+ offset = [20+this.anchorOffset, -2];
568
+ break;
569
+ default:
570
+ anchorPos = 'r';
571
+ targetPos = 'tl';
572
+ offset = [2, 11+this.anchorOffset];
573
+ break;
574
+ }
575
+ this.anchorEl.alignTo(this.el, anchorPos+'-'+targetPos, offset);
576
+ },
577
+
578
+ // private
579
+ setPagePosition : function(x, y){
580
+ Ext.ToolTip.superclass.setPagePosition.call(this, x, y);
581
+ if(this.anchor){
582
+ this.syncAnchor();
583
+ }
584
+ },
585
+
586
+ // private
587
+ clearTimer : function(name){
588
+ name = name + 'Timer';
589
+ clearTimeout(this[name]);
590
+ delete this[name];
591
+ },
592
+
593
+ // private
594
+ clearTimers : function(){
595
+ this.clearTimer('show');
596
+ this.clearTimer('dismiss');
597
+ this.clearTimer('hide');
598
+ },
599
+
600
+ // private
601
+ onShow : function(){
602
+ Ext.ToolTip.superclass.onShow.call(this);
603
+ Ext.getDoc().on('mousedown', this.onDocMouseDown, this);
604
+ },
605
+
606
+ // private
607
+ onHide : function(){
608
+ Ext.ToolTip.superclass.onHide.call(this);
609
+ Ext.getDoc().un('mousedown', this.onDocMouseDown, this);
610
+ },
611
+
612
+ // private
613
+ onDocMouseDown : function(e){
614
+ if(this.autoHide !== true && !this.closable && !e.within(this.el.dom)){
615
+ this.disable();
616
+ this.enable.defer(100, this);
617
+ }
618
+ },
619
+
620
+ // private
621
+ onDisable : function(){
622
+ this.clearTimers();
623
+ this.hide();
624
+ },
625
+
626
+ // private
627
+ adjustPosition : function(x, y){
628
+ if(this.contstrainPosition){
629
+ var ay = this.targetXY[1], h = this.getSize().height;
630
+ if(y <= ay && (y+h) >= ay){
631
+ y = ay-h-5;
632
+ }
633
+ }
634
+ return {x : x, y: y};
635
+ },
636
+
637
+ // private
638
+ onDestroy : function(){
639
+ Ext.getDoc().un('mousedown', this.onDocMouseDown, this);
640
+ Ext.ToolTip.superclass.onDestroy.call(this);
641
+ }
642
+ });/**
643
+ * @class Ext.QuickTip
644
+ * @extends Ext.ToolTip
645
+ * A specialized tooltip class for tooltips that can be specified in markup and automatically managed by the global
646
+ * {@link Ext.QuickTips} instance. See the QuickTips class header for additional usage details and examples.
647
+ * @constructor
648
+ * Create a new Tip
649
+ * @param {Object} config The configuration options
650
+ */
651
+ Ext.QuickTip = Ext.extend(Ext.ToolTip, {
652
+ /**
653
+ * @cfg {Mixed} target The target HTMLElement, Ext.Element or id to associate with this quicktip (defaults to the document).
654
+ */
655
+ /**
656
+ * @cfg {Boolean} interceptTitles True to automatically use the element's DOM title value if available (defaults to false).
657
+ */
658
+ interceptTitles : false,
659
+
660
+ // private
661
+ tagConfig : {
662
+ namespace : "ext",
663
+ attribute : "qtip",
664
+ width : "qwidth",
665
+ target : "target",
666
+ title : "qtitle",
667
+ hide : "hide",
668
+ cls : "qclass",
669
+ align : "qalign",
670
+ anchor : "anchor"
671
+ },
672
+
673
+ // private
674
+ initComponent : function(){
675
+ this.target = this.target || Ext.getDoc();
676
+ this.targets = this.targets || {};
677
+ Ext.QuickTip.superclass.initComponent.call(this);
678
+ },
679
+
680
+ /**
681
+ * Configures a new quick tip instance and assigns it to a target element. The following config values are
682
+ * supported (for example usage, see the {@link Ext.QuickTips} class header):
683
+ * <div class="mdetail-params"><ul>
684
+ * <li>autoHide</li>
685
+ * <li>cls</li>
686
+ * <li>dismissDelay (overrides the singleton value)</li>
687
+ * <li>target (required)</li>
688
+ * <li>text (required)</li>
689
+ * <li>title</li>
690
+ * <li>width</li></ul></div>
691
+ * @param {Object} config The config object
692
+ */
693
+ register : function(config){
694
+ var cs = Ext.isArray(config) ? config : arguments;
695
+ for(var i = 0, len = cs.length; i < len; i++){
696
+ var c = cs[i];
697
+ var target = c.target;
698
+ if(target){
699
+ if(Ext.isArray(target)){
700
+ for(var j = 0, jlen = target.length; j < jlen; j++){
701
+ this.targets[Ext.id(target[j])] = c;
702
+ }
703
+ } else{
704
+ this.targets[Ext.id(target)] = c;
705
+ }
706
+ }
707
+ }
708
+ },
709
+
710
+ /**
711
+ * Removes this quick tip from its element and destroys it.
712
+ * @param {String/HTMLElement/Element} el The element from which the quick tip is to be removed.
713
+ */
714
+ unregister : function(el){
715
+ delete this.targets[Ext.id(el)];
716
+ },
717
+
718
+ /**
719
+ * Hides a visible tip or cancels an impending show for a particular element.
720
+ * @param {String/HTMLElement/Element} el The element that is the target of the tip.
721
+ */
722
+ cancelShow: function(el){
723
+ var at = this.activeTarget;
724
+ el = Ext.get(el).dom;
725
+ if(this.isVisible()){
726
+ if(at && at.el == el){
727
+ this.hide();
728
+ }
729
+ }else if(at && at.el == el){
730
+ this.clearTimer('show');
731
+ }
732
+ },
733
+
734
+ // private
735
+ onTargetOver : function(e){
736
+ if(this.disabled){
737
+ return;
738
+ }
739
+ this.targetXY = e.getXY();
740
+ var t = e.getTarget();
741
+ if(!t || t.nodeType !== 1 || t == document || t == document.body){
742
+ return;
743
+ }
744
+ if(this.activeTarget && t == this.activeTarget.el){
745
+ this.clearTimer('hide');
746
+ this.show();
747
+ return;
748
+ }
749
+ if(t && this.targets[t.id]){
750
+ this.activeTarget = this.targets[t.id];
751
+ this.activeTarget.el = t;
752
+ this.anchor = this.activeTarget.anchor;
753
+ if(this.anchor){
754
+ this.anchorTarget = t;
755
+ }
756
+ this.delayShow();
757
+ return;
758
+ }
759
+
760
+ var ttp, et = Ext.fly(t), cfg = this.tagConfig;
761
+ var ns = cfg.namespace;
762
+ if(this.interceptTitles && t.title){
763
+ ttp = t.title;
764
+ t.qtip = ttp;
765
+ t.removeAttribute("title");
766
+ e.preventDefault();
767
+ } else{
768
+ ttp = t.qtip || et.getAttribute(cfg.attribute, ns);
769
+ }
770
+ if(ttp){
771
+ var autoHide = et.getAttribute(cfg.hide, ns);
772
+ this.activeTarget = {
773
+ el: t,
774
+ text: ttp,
775
+ width: et.getAttribute(cfg.width, ns),
776
+ autoHide: autoHide != "user" && autoHide !== 'false',
777
+ title: et.getAttribute(cfg.title, ns),
778
+ cls: et.getAttribute(cfg.cls, ns),
779
+ align: et.getAttribute(cfg.align, ns)
780
+
781
+ };
782
+ this.anchor = et.getAttribute(cfg.anchor, ns);
783
+ if(this.anchor){
784
+ this.anchorTarget = t;
785
+ }
786
+ this.delayShow();
787
+ }
788
+ },
789
+
790
+ // private
791
+ onTargetOut : function(e){
792
+ this.clearTimer('show');
793
+ if(this.autoHide !== false){
794
+ this.delayHide();
795
+ }
796
+ },
797
+
798
+ // inherit docs
799
+ showAt : function(xy){
800
+ var t = this.activeTarget;
801
+ if(t){
802
+ if(!this.rendered){
803
+ this.render(Ext.getBody());
804
+ this.activeTarget = t;
805
+ }
806
+ if(t.width){
807
+ this.setWidth(t.width);
808
+ this.body.setWidth(this.adjustBodyWidth(t.width - this.getFrameWidth()));
809
+ this.measureWidth = false;
810
+ } else{
811
+ this.measureWidth = true;
812
+ }
813
+ this.setTitle(t.title || '');
814
+ this.body.update(t.text);
815
+ this.autoHide = t.autoHide;
816
+ this.dismissDelay = t.dismissDelay || this.dismissDelay;
817
+ if(this.lastCls){
818
+ this.el.removeClass(this.lastCls);
819
+ delete this.lastCls;
820
+ }
821
+ if(t.cls){
822
+ this.el.addClass(t.cls);
823
+ this.lastCls = t.cls;
824
+ }
825
+ if(this.anchor){
826
+ this.constrainPosition = false;
827
+ }else if(t.align){ // TODO: this doesn't seem to work consistently
828
+ xy = this.el.getAlignToXY(t.el, t.align);
829
+ this.constrainPosition = false;
830
+ }else{
831
+ this.constrainPosition = true;
832
+ }
833
+ }
834
+ Ext.QuickTip.superclass.showAt.call(this, xy);
835
+ },
836
+
837
+ // inherit docs
838
+ hide: function(){
839
+ delete this.activeTarget;
840
+ Ext.QuickTip.superclass.hide.call(this);
841
+ }
842
+ });/**
843
+ * @class Ext.QuickTips
844
+ * <p>Provides attractive and customizable tooltips for any element. The QuickTips
845
+ * singleton is used to configure and manage tooltips globally for multiple elements
846
+ * in a generic manner. To create individual tooltips with maximum customizability,
847
+ * you should consider either {@link Ext.Tip} or {@link Ext.ToolTip}.</p>
848
+ * <p>Quicktips can be configured via tag attributes directly in markup, or by
849
+ * registering quick tips programmatically via the {@link #register} method.</p>
850
+ * <p>The singleton's instance of {@link Ext.QuickTip} is available via
851
+ * {@link #getQuickTip}, and supports all the methods, and all the all the
852
+ * configuration properties of Ext.QuickTip. These settings will apply to all
853
+ * tooltips shown by the singleton.</p>
854
+ * <p>Below is the summary of the configuration properties which can be used.
855
+ * For detailed descriptions see {@link #getQuickTip}</p>
856
+ * <p><b>QuickTips singleton configs (all are optional)</b></p>
857
+ * <div class="mdetail-params"><ul><li>dismissDelay</li>
858
+ * <li>hideDelay</li>
859
+ * <li>maxWidth</li>
860
+ * <li>minWidth</li>
861
+ * <li>showDelay</li>
862
+ * <li>trackMouse</li></ul></div>
863
+ * <p><b>Target element configs (optional unless otherwise noted)</b></p>
864
+ * <div class="mdetail-params"><ul><li>autoHide</li>
865
+ * <li>cls</li>
866
+ * <li>dismissDelay (overrides singleton value)</li>
867
+ * <li>target (required)</li>
868
+ * <li>text (required)</li>
869
+ * <li>title</li>
870
+ * <li>width</li></ul></div>
871
+ * <p>Here is an example showing how some of these config options could be used:</p>
872
+ * <pre><code>
873
+ // Init the singleton. Any tag-based quick tips will start working.
874
+ Ext.QuickTips.init();
875
+
876
+ // Apply a set of config properties to the singleton
877
+ Ext.apply(Ext.QuickTips.getQuickTip(), {
878
+ maxWidth: 200,
879
+ minWidth: 100,
880
+ showDelay: 50,
881
+ trackMouse: true
882
+ });
883
+
884
+ // Manually register a quick tip for a specific element
885
+ Ext.QuickTips.register({
886
+ target: 'my-div',
887
+ title: 'My Tooltip',
888
+ text: 'This tooltip was added in code',
889
+ width: 100,
890
+ dismissDelay: 20
891
+ });
892
+ </code></pre>
893
+ * <p>To register a quick tip in markup, you simply add one or more of the valid QuickTip attributes prefixed with
894
+ * the <b>ext:</b> namespace. The HTML element itself is automatically set as the quick tip target. Here is the summary
895
+ * of supported attributes (optional unless otherwise noted):</p>
896
+ * <ul><li><b>hide</b>: Specifying "user" is equivalent to setting autoHide = false. Any other value will be the
897
+ * same as autoHide = true.</li>
898
+ * <li><b>qclass</b>: A CSS class to be applied to the quick tip (equivalent to the 'cls' target element config).</li>
899
+ * <li><b>qtip (required)</b>: The quick tip text (equivalent to the 'text' target element config).</li>
900
+ * <li><b>qtitle</b>: The quick tip title (equivalent to the 'title' target element config).</li>
901
+ * <li><b>qwidth</b>: The quick tip width (equivalent to the 'width' target element config).</li></ul>
902
+ * <p>Here is an example of configuring an HTML element to display a tooltip from markup:</p>
903
+ * <pre><code>
904
+ // Add a quick tip to an HTML button
905
+ &lt;input type="button" value="OK" ext:qtitle="OK Button" ext:qwidth="100"
906
+ ext:qtip="This is a quick tip from markup!">&lt;/input>
907
+ </code></pre>
908
+ * @singleton
909
+ */
910
+ Ext.QuickTips = function(){
911
+ var tip, locks = [];
912
+ return {
913
+ /**
914
+ * Initialize the global QuickTips instance and prepare any quick tips.
915
+ * @param {Boolean} autoRender True to render the QuickTips container immediately to preload images. (Defaults to true)
916
+ */
917
+ init : function(autoRender){
918
+ if(!tip){
919
+ if(!Ext.isReady){
920
+ Ext.onReady(function(){
921
+ Ext.QuickTips.init(autoRender);
922
+ });
923
+ return;
924
+ }
925
+ tip = new Ext.QuickTip({elements:'header,body'});
926
+ if(autoRender !== false){
927
+ tip.render(Ext.getBody());
928
+ }
929
+ }
930
+ },
931
+
932
+ /**
933
+ * Enable quick tips globally.
934
+ */
935
+ enable : function(){
936
+ if(tip){
937
+ locks.pop();
938
+ if(locks.length < 1){
939
+ tip.enable();
940
+ }
941
+ }
942
+ },
943
+
944
+ /**
945
+ * Disable quick tips globally.
946
+ */
947
+ disable : function(){
948
+ if(tip){
949
+ tip.disable();
950
+ }
951
+ locks.push(1);
952
+ },
953
+
954
+ /**
955
+ * Returns true if quick tips are enabled, else false.
956
+ * @return {Boolean}
957
+ */
958
+ isEnabled : function(){
959
+ return tip !== undefined && !tip.disabled;
960
+ },
961
+
962
+ /**
963
+ * Gets the global QuickTips instance.
964
+ */
965
+ getQuickTip : function(){
966
+ return tip;
967
+ },
968
+
969
+ /**
970
+ * Configures a new quick tip instance and assigns it to a target element. See
971
+ * {@link Ext.QuickTip#register} for details.
972
+ * @param {Object} config The config object
973
+ */
974
+ register : function(){
975
+ tip.register.apply(tip, arguments);
976
+ },
977
+
978
+ /**
979
+ * Removes any registered quick tip from the target element and destroys it.
980
+ * @param {String/HTMLElement/Element} el The element from which the quick tip is to be removed.
981
+ */
982
+ unregister : function(){
983
+ tip.unregister.apply(tip, arguments);
984
+ },
985
+
986
+ /**
987
+ * Alias of {@link #register}.
988
+ * @param {Object} config The config object
989
+ */
990
+ tips :function(){
991
+ tip.register.apply(tip, arguments);
992
+ }
993
+ }
994
+ }();