lpmp 1.0.0
Sign up to get free protection for your applications and to get access to all the features.
- data/LICENSE +3 -0
- data/README +3 -0
- data/Rakefile +45 -0
- data/bin/lpmp +107 -0
- data/config/help.yaml +1 -0
- data/config/hosts.yaml +2 -0
- data/config/log.yaml +1 -0
- data/config/memcache.yaml +5 -0
- data/erb/index.erb +62 -0
- data/lib/bg_pull/caichen.rb +199 -0
- data/lib/bg_pull/lpmp.rb +45 -0
- data/lib/exception.rb +8 -0
- data/lib/lpmp.rb +53 -0
- data/lib/pull/lpmp.rb +355 -0
- data/lib/remote_lmp.rb +129 -0
- data/lib/utils.rb +14 -0
- data/lib/xq_push/caichen.rb +174 -0
- data/lib/xq_push/lpmp.rb +96 -0
- data/log/lpmp1st.log +1 -0
- data/public/css/ext-portal.css +40 -0
- data/public/css/lpmp.css +6 -0
- data/public/designer/caichen.epj +1 -0
- data/public/designer/hostmonitor.epj +1 -0
- data/public/ext-3.0.0/INCLUDE_ORDER.txt +35 -0
- data/public/ext-3.0.0/adapter/ext/ext-base-debug.js +3589 -0
- data/public/ext-3.0.0/adapter/ext/ext-base.js +7 -0
- data/public/ext-3.0.0/adapter/jquery/ext-jquery-adapter-debug.js +2292 -0
- data/public/ext-3.0.0/adapter/jquery/ext-jquery-adapter.js +7 -0
- data/public/ext-3.0.0/adapter/prototype/ext-prototype-adapter-debug.js +2346 -0
- data/public/ext-3.0.0/adapter/prototype/ext-prototype-adapter.js +7 -0
- data/public/ext-3.0.0/adapter/yui/ext-yui-adapter-debug.js +2136 -0
- data/public/ext-3.0.0/adapter/yui/ext-yui-adapter.js +7 -0
- data/public/ext-3.0.0/ext-all-debug.js +65610 -0
- data/public/ext-3.0.0/ext-all.js +11 -0
- data/public/ext-3.0.0/license.txt +42 -0
- data/public/ext-3.0.0/pkgs/cmp-foundation-debug.js +11287 -0
- data/public/ext-3.0.0/pkgs/cmp-foundation.js +7 -0
- data/public/ext-3.0.0/pkgs/data-foundation-debug.js +3853 -0
- data/public/ext-3.0.0/pkgs/data-foundation.js +7 -0
- data/public/ext-3.0.0/pkgs/data-grouping-debug.js +139 -0
- data/public/ext-3.0.0/pkgs/data-grouping.js +7 -0
- data/public/ext-3.0.0/pkgs/data-json-debug.js +582 -0
- data/public/ext-3.0.0/pkgs/data-json.js +7 -0
- data/public/ext-3.0.0/pkgs/data-list-views-debug.js +1278 -0
- data/public/ext-3.0.0/pkgs/data-list-views.js +7 -0
- data/public/ext-3.0.0/pkgs/data-xml-debug.js +234 -0
- data/public/ext-3.0.0/pkgs/data-xml.js +7 -0
- data/public/ext-3.0.0/pkgs/direct-debug.js +1121 -0
- data/public/ext-3.0.0/pkgs/direct.js +7 -0
- data/public/ext-3.0.0/pkgs/ext-dd-debug.js +4567 -0
- data/public/ext-3.0.0/pkgs/ext-dd.js +7 -0
- data/public/ext-3.0.0/pkgs/ext-foundation-debug.js +13417 -0
- data/public/ext-3.0.0/pkgs/ext-foundation.js +7 -0
- data/public/ext-3.0.0/pkgs/pkg-buttons-debug.js +1060 -0
- data/public/ext-3.0.0/pkgs/pkg-buttons.js +7 -0
- data/public/ext-3.0.0/pkgs/pkg-charts-debug.js +1621 -0
- data/public/ext-3.0.0/pkgs/pkg-charts.js +10 -0
- data/public/ext-3.0.0/pkgs/pkg-forms-debug.js +7661 -0
- data/public/ext-3.0.0/pkgs/pkg-forms.js +7 -0
- data/public/ext-3.0.0/pkgs/pkg-grid-editor-debug.js +560 -0
- data/public/ext-3.0.0/pkgs/pkg-grid-editor.js +7 -0
- data/public/ext-3.0.0/pkgs/pkg-grid-foundation-debug.js +4765 -0
- data/public/ext-3.0.0/pkgs/pkg-grid-foundation.js +7 -0
- data/public/ext-3.0.0/pkgs/pkg-grid-grouping-debug.js +517 -0
- data/public/ext-3.0.0/pkgs/pkg-grid-grouping.js +7 -0
- data/public/ext-3.0.0/pkgs/pkg-grid-property-debug.js +370 -0
- data/public/ext-3.0.0/pkgs/pkg-grid-property.js +7 -0
- data/public/ext-3.0.0/pkgs/pkg-history-debug.js +203 -0
- data/public/ext-3.0.0/pkgs/pkg-history.js +7 -0
- data/public/ext-3.0.0/pkgs/pkg-menu-debug.js +1628 -0
- data/public/ext-3.0.0/pkgs/pkg-menu.js +7 -0
- data/public/ext-3.0.0/pkgs/pkg-tabs-debug.js +1100 -0
- data/public/ext-3.0.0/pkgs/pkg-tabs.js +7 -0
- data/public/ext-3.0.0/pkgs/pkg-tips-debug.js +994 -0
- data/public/ext-3.0.0/pkgs/pkg-tips.js +7 -0
- data/public/ext-3.0.0/pkgs/pkg-toolbars-debug.js +1374 -0
- data/public/ext-3.0.0/pkgs/pkg-toolbars.js +7 -0
- data/public/ext-3.0.0/pkgs/pkg-tree-debug.js +4522 -0
- data/public/ext-3.0.0/pkgs/pkg-tree.js +7 -0
- data/public/ext-3.0.0/pkgs/resizable-debug.js +760 -0
- data/public/ext-3.0.0/pkgs/resizable.js +7 -0
- data/public/ext-3.0.0/pkgs/state-debug.js +274 -0
- data/public/ext-3.0.0/pkgs/state.js +7 -0
- data/public/ext-3.0.0/pkgs/window-debug.js +1888 -0
- data/public/ext-3.0.0/pkgs/window.js +7 -0
- data/public/ext-3.0.0/resources/charts.swf +0 -0
- data/public/ext-3.0.0/resources/css/README.txt +3 -0
- data/public/ext-3.0.0/resources/css/ext-all-notheme.css +5345 -0
- data/public/ext-3.0.0/resources/css/ext-all.css +6990 -0
- data/public/ext-3.0.0/resources/css/reset-min.css +7 -0
- data/public/ext-3.0.0/resources/css/structure/borders.css +54 -0
- data/public/ext-3.0.0/resources/css/structure/box.css +80 -0
- data/public/ext-3.0.0/resources/css/structure/button.css +440 -0
- data/public/ext-3.0.0/resources/css/structure/combo.css +45 -0
- data/public/ext-3.0.0/resources/css/structure/core.css +326 -0
- data/public/ext-3.0.0/resources/css/structure/date-picker.css +265 -0
- data/public/ext-3.0.0/resources/css/structure/dd.css +61 -0
- data/public/ext-3.0.0/resources/css/structure/debug.css +26 -0
- data/public/ext-3.0.0/resources/css/structure/dialog.css +62 -0
- data/public/ext-3.0.0/resources/css/structure/editor.css +92 -0
- data/public/ext-3.0.0/resources/css/structure/form.css +562 -0
- data/public/ext-3.0.0/resources/css/structure/grid.css +552 -0
- data/public/ext-3.0.0/resources/css/structure/layout.css +296 -0
- data/public/ext-3.0.0/resources/css/structure/list-view.css +85 -0
- data/public/ext-3.0.0/resources/css/structure/menu.css +205 -0
- data/public/ext-3.0.0/resources/css/structure/panel-reset.css +130 -0
- data/public/ext-3.0.0/resources/css/structure/panel.css +468 -0
- data/public/ext-3.0.0/resources/css/structure/progress.css +42 -0
- data/public/ext-3.0.0/resources/css/structure/qtips.css +153 -0
- data/public/ext-3.0.0/resources/css/structure/reset.css +7 -0
- data/public/ext-3.0.0/resources/css/structure/resizable.css +149 -0
- data/public/ext-3.0.0/resources/css/structure/slider.css +103 -0
- data/public/ext-3.0.0/resources/css/structure/tabs.css +372 -0
- data/public/ext-3.0.0/resources/css/structure/toolbar.css +259 -0
- data/public/ext-3.0.0/resources/css/structure/tree.css +203 -0
- data/public/ext-3.0.0/resources/css/structure/window.css +222 -0
- data/public/ext-3.0.0/resources/css/visual/borders.css +25 -0
- data/public/ext-3.0.0/resources/css/visual/box.css +74 -0
- data/public/ext-3.0.0/resources/css/visual/button.css +94 -0
- data/public/ext-3.0.0/resources/css/visual/combo.css +43 -0
- data/public/ext-3.0.0/resources/css/visual/core.css +76 -0
- data/public/ext-3.0.0/resources/css/visual/date-picker.css +143 -0
- data/public/ext-3.0.0/resources/css/visual/dd.css +29 -0
- data/public/ext-3.0.0/resources/css/visual/debug.css +24 -0
- data/public/ext-3.0.0/resources/css/visual/dialog.css +34 -0
- data/public/ext-3.0.0/resources/css/visual/editor.css +13 -0
- data/public/ext-3.0.0/resources/css/visual/form.css +117 -0
- data/public/ext-3.0.0/resources/css/visual/grid.css +272 -0
- data/public/ext-3.0.0/resources/css/visual/layout.css +53 -0
- data/public/ext-3.0.0/resources/css/visual/list-view.css +37 -0
- data/public/ext-3.0.0/resources/css/visual/menu.css +82 -0
- data/public/ext-3.0.0/resources/css/visual/panel.css +87 -0
- data/public/ext-3.0.0/resources/css/visual/progress.css +32 -0
- data/public/ext-3.0.0/resources/css/visual/qtips.css +44 -0
- data/public/ext-3.0.0/resources/css/visual/resizable.css +43 -0
- data/public/ext-3.0.0/resources/css/visual/slider.css +21 -0
- data/public/ext-3.0.0/resources/css/visual/tabs.css +119 -0
- data/public/ext-3.0.0/resources/css/visual/toolbar.css +103 -0
- data/public/ext-3.0.0/resources/css/visual/tree.css +157 -0
- data/public/ext-3.0.0/resources/css/visual/window.css +86 -0
- data/public/ext-3.0.0/resources/css/xtheme-blue.css +1652 -0
- data/public/ext-3.0.0/resources/expressinstall.swf +0 -0
- data/public/ext-3.0.0/resources/images/default/box/corners-blue.gif +0 -0
- data/public/ext-3.0.0/resources/images/default/box/corners.gif +0 -0
- data/public/ext-3.0.0/resources/images/default/box/l-blue.gif +0 -0
- data/public/ext-3.0.0/resources/images/default/box/l.gif +0 -0
- data/public/ext-3.0.0/resources/images/default/box/r-blue.gif +0 -0
- data/public/ext-3.0.0/resources/images/default/box/r.gif +0 -0
- data/public/ext-3.0.0/resources/images/default/box/tb-blue.gif +0 -0
- data/public/ext-3.0.0/resources/images/default/box/tb.gif +0 -0
- data/public/ext-3.0.0/resources/images/default/button/arrow.gif +0 -0
- data/public/ext-3.0.0/resources/images/default/button/btn.gif +0 -0
- data/public/ext-3.0.0/resources/images/default/button/group-cs.gif +0 -0
- data/public/ext-3.0.0/resources/images/default/button/group-lr.gif +0 -0
- data/public/ext-3.0.0/resources/images/default/button/group-tb.gif +0 -0
- data/public/ext-3.0.0/resources/images/default/button/s-arrow-b-noline.gif +0 -0
- data/public/ext-3.0.0/resources/images/default/button/s-arrow-b.gif +0 -0
- data/public/ext-3.0.0/resources/images/default/button/s-arrow-bo.gif +0 -0
- data/public/ext-3.0.0/resources/images/default/button/s-arrow-noline.gif +0 -0
- data/public/ext-3.0.0/resources/images/default/button/s-arrow-o.gif +0 -0
- data/public/ext-3.0.0/resources/images/default/button/s-arrow.gif +0 -0
- data/public/ext-3.0.0/resources/images/default/dd/drop-add.gif +0 -0
- data/public/ext-3.0.0/resources/images/default/dd/drop-no.gif +0 -0
- data/public/ext-3.0.0/resources/images/default/dd/drop-yes.gif +0 -0
- data/public/ext-3.0.0/resources/images/default/editor/tb-sprite.gif +0 -0
- data/public/ext-3.0.0/resources/images/default/form/checkbox.gif +0 -0
- data/public/ext-3.0.0/resources/images/default/form/clear-trigger.gif +0 -0
- data/public/ext-3.0.0/resources/images/default/form/clear-trigger.psd +0 -0
- data/public/ext-3.0.0/resources/images/default/form/date-trigger.gif +0 -0
- data/public/ext-3.0.0/resources/images/default/form/date-trigger.psd +0 -0
- data/public/ext-3.0.0/resources/images/default/form/error-tip-corners.gif +0 -0
- data/public/ext-3.0.0/resources/images/default/form/exclamation.gif +0 -0
- data/public/ext-3.0.0/resources/images/default/form/radio.gif +0 -0
- data/public/ext-3.0.0/resources/images/default/form/search-trigger.gif +0 -0
- data/public/ext-3.0.0/resources/images/default/form/search-trigger.psd +0 -0
- data/public/ext-3.0.0/resources/images/default/form/text-bg.gif +0 -0
- data/public/ext-3.0.0/resources/images/default/form/trigger-tpl.gif +0 -0
- data/public/ext-3.0.0/resources/images/default/form/trigger.gif +0 -0
- data/public/ext-3.0.0/resources/images/default/form/trigger.psd +0 -0
- data/public/ext-3.0.0/resources/images/default/gradient-bg.gif +0 -0
- data/public/ext-3.0.0/resources/images/default/grid/arrow-left-white.gif +0 -0
- data/public/ext-3.0.0/resources/images/default/grid/arrow-right-white.gif +0 -0
- data/public/ext-3.0.0/resources/images/default/grid/col-move-bottom.gif +0 -0
- data/public/ext-3.0.0/resources/images/default/grid/col-move-top.gif +0 -0
- data/public/ext-3.0.0/resources/images/default/grid/columns.gif +0 -0
- data/public/ext-3.0.0/resources/images/default/grid/dirty.gif +0 -0
- data/public/ext-3.0.0/resources/images/default/grid/done.gif +0 -0
- data/public/ext-3.0.0/resources/images/default/grid/drop-no.gif +0 -0
- data/public/ext-3.0.0/resources/images/default/grid/drop-yes.gif +0 -0
- data/public/ext-3.0.0/resources/images/default/grid/footer-bg.gif +0 -0
- data/public/ext-3.0.0/resources/images/default/grid/grid-blue-hd.gif +0 -0
- data/public/ext-3.0.0/resources/images/default/grid/grid-blue-split.gif +0 -0
- data/public/ext-3.0.0/resources/images/default/grid/grid-hrow.gif +0 -0
- data/public/ext-3.0.0/resources/images/default/grid/grid-loading.gif +0 -0
- data/public/ext-3.0.0/resources/images/default/grid/grid-split.gif +0 -0
- data/public/ext-3.0.0/resources/images/default/grid/grid-vista-hd.gif +0 -0
- data/public/ext-3.0.0/resources/images/default/grid/grid3-hd-btn.gif +0 -0
- data/public/ext-3.0.0/resources/images/default/grid/grid3-hrow-over.gif +0 -0
- data/public/ext-3.0.0/resources/images/default/grid/grid3-hrow.gif +0 -0
- data/public/ext-3.0.0/resources/images/default/grid/grid3-special-col-bg.gif +0 -0
- data/public/ext-3.0.0/resources/images/default/grid/grid3-special-col-sel-bg.gif +0 -0
- data/public/ext-3.0.0/resources/images/default/grid/group-by.gif +0 -0
- data/public/ext-3.0.0/resources/images/default/grid/group-collapse.gif +0 -0
- data/public/ext-3.0.0/resources/images/default/grid/group-expand-sprite.gif +0 -0
- data/public/ext-3.0.0/resources/images/default/grid/group-expand.gif +0 -0
- data/public/ext-3.0.0/resources/images/default/grid/hd-pop.gif +0 -0
- data/public/ext-3.0.0/resources/images/default/grid/hmenu-asc.gif +0 -0
- data/public/ext-3.0.0/resources/images/default/grid/hmenu-desc.gif +0 -0
- data/public/ext-3.0.0/resources/images/default/grid/hmenu-lock.gif +0 -0
- data/public/ext-3.0.0/resources/images/default/grid/hmenu-lock.png +0 -0
- data/public/ext-3.0.0/resources/images/default/grid/hmenu-unlock.gif +0 -0
- data/public/ext-3.0.0/resources/images/default/grid/hmenu-unlock.png +0 -0
- data/public/ext-3.0.0/resources/images/default/grid/invalid_line.gif +0 -0
- data/public/ext-3.0.0/resources/images/default/grid/loading.gif +0 -0
- data/public/ext-3.0.0/resources/images/default/grid/mso-hd.gif +0 -0
- data/public/ext-3.0.0/resources/images/default/grid/nowait.gif +0 -0
- data/public/ext-3.0.0/resources/images/default/grid/page-first-disabled.gif +0 -0
- data/public/ext-3.0.0/resources/images/default/grid/page-first.gif +0 -0
- data/public/ext-3.0.0/resources/images/default/grid/page-last-disabled.gif +0 -0
- data/public/ext-3.0.0/resources/images/default/grid/page-last.gif +0 -0
- data/public/ext-3.0.0/resources/images/default/grid/page-next-disabled.gif +0 -0
- data/public/ext-3.0.0/resources/images/default/grid/page-next.gif +0 -0
- data/public/ext-3.0.0/resources/images/default/grid/page-prev-disabled.gif +0 -0
- data/public/ext-3.0.0/resources/images/default/grid/page-prev.gif +0 -0
- data/public/ext-3.0.0/resources/images/default/grid/pick-button.gif +0 -0
- data/public/ext-3.0.0/resources/images/default/grid/refresh.gif +0 -0
- data/public/ext-3.0.0/resources/images/default/grid/row-check-sprite.gif +0 -0
- data/public/ext-3.0.0/resources/images/default/grid/row-expand-sprite.gif +0 -0
- data/public/ext-3.0.0/resources/images/default/grid/row-over.gif +0 -0
- data/public/ext-3.0.0/resources/images/default/grid/row-sel.gif +0 -0
- data/public/ext-3.0.0/resources/images/default/grid/sort-hd.gif +0 -0
- data/public/ext-3.0.0/resources/images/default/grid/sort_asc.gif +0 -0
- data/public/ext-3.0.0/resources/images/default/grid/sort_desc.gif +0 -0
- data/public/ext-3.0.0/resources/images/default/grid/wait.gif +0 -0
- data/public/ext-3.0.0/resources/images/default/layout/collapse.gif +0 -0
- data/public/ext-3.0.0/resources/images/default/layout/expand.gif +0 -0
- data/public/ext-3.0.0/resources/images/default/layout/gradient-bg.gif +0 -0
- data/public/ext-3.0.0/resources/images/default/layout/mini-bottom.gif +0 -0
- data/public/ext-3.0.0/resources/images/default/layout/mini-left.gif +0 -0
- data/public/ext-3.0.0/resources/images/default/layout/mini-right.gif +0 -0
- data/public/ext-3.0.0/resources/images/default/layout/mini-top.gif +0 -0
- data/public/ext-3.0.0/resources/images/default/layout/ns-collapse.gif +0 -0
- data/public/ext-3.0.0/resources/images/default/layout/ns-expand.gif +0 -0
- data/public/ext-3.0.0/resources/images/default/layout/panel-close.gif +0 -0
- data/public/ext-3.0.0/resources/images/default/layout/panel-title-bg.gif +0 -0
- data/public/ext-3.0.0/resources/images/default/layout/panel-title-light-bg.gif +0 -0
- data/public/ext-3.0.0/resources/images/default/layout/stick.gif +0 -0
- data/public/ext-3.0.0/resources/images/default/layout/stuck.gif +0 -0
- data/public/ext-3.0.0/resources/images/default/layout/tab-close-on.gif +0 -0
- data/public/ext-3.0.0/resources/images/default/layout/tab-close.gif +0 -0
- data/public/ext-3.0.0/resources/images/default/menu/checked.gif +0 -0
- data/public/ext-3.0.0/resources/images/default/menu/group-checked.gif +0 -0
- data/public/ext-3.0.0/resources/images/default/menu/item-over.gif +0 -0
- data/public/ext-3.0.0/resources/images/default/menu/menu-parent.gif +0 -0
- data/public/ext-3.0.0/resources/images/default/menu/menu.gif +0 -0
- data/public/ext-3.0.0/resources/images/default/menu/unchecked.gif +0 -0
- data/public/ext-3.0.0/resources/images/default/panel/corners-sprite.gif +0 -0
- data/public/ext-3.0.0/resources/images/default/panel/left-right.gif +0 -0
- data/public/ext-3.0.0/resources/images/default/panel/light-hd.gif +0 -0
- data/public/ext-3.0.0/resources/images/default/panel/tool-sprite-tpl.gif +0 -0
- data/public/ext-3.0.0/resources/images/default/panel/tool-sprites.gif +0 -0
- data/public/ext-3.0.0/resources/images/default/panel/tools-sprites-trans.gif +0 -0
- data/public/ext-3.0.0/resources/images/default/panel/top-bottom.gif +0 -0
- data/public/ext-3.0.0/resources/images/default/panel/top-bottom.png +0 -0
- data/public/ext-3.0.0/resources/images/default/panel/white-corners-sprite.gif +0 -0
- data/public/ext-3.0.0/resources/images/default/panel/white-left-right.gif +0 -0
- data/public/ext-3.0.0/resources/images/default/panel/white-top-bottom.gif +0 -0
- data/public/ext-3.0.0/resources/images/default/progress/progress-bg.gif +0 -0
- data/public/ext-3.0.0/resources/images/default/qtip/bg.gif +0 -0
- data/public/ext-3.0.0/resources/images/default/qtip/close.gif +0 -0
- data/public/ext-3.0.0/resources/images/default/qtip/tip-anchor-sprite.gif +0 -0
- data/public/ext-3.0.0/resources/images/default/qtip/tip-sprite.gif +0 -0
- data/public/ext-3.0.0/resources/images/default/s.gif +0 -0
- data/public/ext-3.0.0/resources/images/default/shadow-c.png +0 -0
- data/public/ext-3.0.0/resources/images/default/shadow-lr.png +0 -0
- data/public/ext-3.0.0/resources/images/default/shadow.png +0 -0
- data/public/ext-3.0.0/resources/images/default/shared/blue-loading.gif +0 -0
- data/public/ext-3.0.0/resources/images/default/shared/calendar.gif +0 -0
- data/public/ext-3.0.0/resources/images/default/shared/glass-bg.gif +0 -0
- data/public/ext-3.0.0/resources/images/default/shared/hd-sprite.gif +0 -0
- data/public/ext-3.0.0/resources/images/default/shared/large-loading.gif +0 -0
- data/public/ext-3.0.0/resources/images/default/shared/left-btn.gif +0 -0
- data/public/ext-3.0.0/resources/images/default/shared/loading-balls.gif +0 -0
- data/public/ext-3.0.0/resources/images/default/shared/right-btn.gif +0 -0
- data/public/ext-3.0.0/resources/images/default/shared/warning.gif +0 -0
- data/public/ext-3.0.0/resources/images/default/sizer/e-handle-dark.gif +0 -0
- data/public/ext-3.0.0/resources/images/default/sizer/e-handle.gif +0 -0
- data/public/ext-3.0.0/resources/images/default/sizer/ne-handle-dark.gif +0 -0
- data/public/ext-3.0.0/resources/images/default/sizer/ne-handle.gif +0 -0
- data/public/ext-3.0.0/resources/images/default/sizer/nw-handle-dark.gif +0 -0
- data/public/ext-3.0.0/resources/images/default/sizer/nw-handle.gif +0 -0
- data/public/ext-3.0.0/resources/images/default/sizer/s-handle-dark.gif +0 -0
- data/public/ext-3.0.0/resources/images/default/sizer/s-handle.gif +0 -0
- data/public/ext-3.0.0/resources/images/default/sizer/se-handle-dark.gif +0 -0
- data/public/ext-3.0.0/resources/images/default/sizer/se-handle.gif +0 -0
- data/public/ext-3.0.0/resources/images/default/sizer/square.gif +0 -0
- data/public/ext-3.0.0/resources/images/default/sizer/sw-handle-dark.gif +0 -0
- data/public/ext-3.0.0/resources/images/default/sizer/sw-handle.gif +0 -0
- data/public/ext-3.0.0/resources/images/default/slider/slider-bg.png +0 -0
- data/public/ext-3.0.0/resources/images/default/slider/slider-thumb.png +0 -0
- data/public/ext-3.0.0/resources/images/default/slider/slider-v-bg.png +0 -0
- data/public/ext-3.0.0/resources/images/default/slider/slider-v-thumb.png +0 -0
- data/public/ext-3.0.0/resources/images/default/tabs/scroll-left.gif +0 -0
- data/public/ext-3.0.0/resources/images/default/tabs/scroll-right.gif +0 -0
- data/public/ext-3.0.0/resources/images/default/tabs/scroller-bg.gif +0 -0
- data/public/ext-3.0.0/resources/images/default/tabs/tab-btm-inactive-left-bg.gif +0 -0
- data/public/ext-3.0.0/resources/images/default/tabs/tab-btm-inactive-right-bg.gif +0 -0
- data/public/ext-3.0.0/resources/images/default/tabs/tab-btm-left-bg.gif +0 -0
- data/public/ext-3.0.0/resources/images/default/tabs/tab-btm-right-bg.gif +0 -0
- data/public/ext-3.0.0/resources/images/default/tabs/tab-close.gif +0 -0
- data/public/ext-3.0.0/resources/images/default/tabs/tab-strip-bg.gif +0 -0
- data/public/ext-3.0.0/resources/images/default/tabs/tab-strip-bg.png +0 -0
- data/public/ext-3.0.0/resources/images/default/tabs/tab-strip-btm-bg.gif +0 -0
- data/public/ext-3.0.0/resources/images/default/tabs/tabs-sprite.gif +0 -0
- data/public/ext-3.0.0/resources/images/default/toolbar/bg.gif +0 -0
- data/public/ext-3.0.0/resources/images/default/toolbar/btn-arrow-light.gif +0 -0
- data/public/ext-3.0.0/resources/images/default/toolbar/btn-arrow.gif +0 -0
- data/public/ext-3.0.0/resources/images/default/toolbar/btn-over-bg.gif +0 -0
- data/public/ext-3.0.0/resources/images/default/toolbar/gray-bg.gif +0 -0
- data/public/ext-3.0.0/resources/images/default/toolbar/more.gif +0 -0
- data/public/ext-3.0.0/resources/images/default/toolbar/tb-bg.gif +0 -0
- data/public/ext-3.0.0/resources/images/default/toolbar/tb-btn-sprite.gif +0 -0
- data/public/ext-3.0.0/resources/images/default/toolbar/tb-xl-btn-sprite.gif +0 -0
- data/public/ext-3.0.0/resources/images/default/toolbar/tb-xl-sep.gif +0 -0
- data/public/ext-3.0.0/resources/images/default/tree/arrows.gif +0 -0
- data/public/ext-3.0.0/resources/images/default/tree/drop-add.gif +0 -0
- data/public/ext-3.0.0/resources/images/default/tree/drop-between.gif +0 -0
- data/public/ext-3.0.0/resources/images/default/tree/drop-no.gif +0 -0
- data/public/ext-3.0.0/resources/images/default/tree/drop-over.gif +0 -0
- data/public/ext-3.0.0/resources/images/default/tree/drop-under.gif +0 -0
- data/public/ext-3.0.0/resources/images/default/tree/drop-yes.gif +0 -0
- data/public/ext-3.0.0/resources/images/default/tree/elbow-end-minus-nl.gif +0 -0
- data/public/ext-3.0.0/resources/images/default/tree/elbow-end-minus.gif +0 -0
- data/public/ext-3.0.0/resources/images/default/tree/elbow-end-plus-nl.gif +0 -0
- data/public/ext-3.0.0/resources/images/default/tree/elbow-end-plus.gif +0 -0
- data/public/ext-3.0.0/resources/images/default/tree/elbow-end.gif +0 -0
- data/public/ext-3.0.0/resources/images/default/tree/elbow-line.gif +0 -0
- data/public/ext-3.0.0/resources/images/default/tree/elbow-minus-nl.gif +0 -0
- data/public/ext-3.0.0/resources/images/default/tree/elbow-minus.gif +0 -0
- data/public/ext-3.0.0/resources/images/default/tree/elbow-plus-nl.gif +0 -0
- data/public/ext-3.0.0/resources/images/default/tree/elbow-plus.gif +0 -0
- data/public/ext-3.0.0/resources/images/default/tree/elbow.gif +0 -0
- data/public/ext-3.0.0/resources/images/default/tree/folder-open.gif +0 -0
- data/public/ext-3.0.0/resources/images/default/tree/folder.gif +0 -0
- data/public/ext-3.0.0/resources/images/default/tree/leaf.gif +0 -0
- data/public/ext-3.0.0/resources/images/default/tree/loading.gif +0 -0
- data/public/ext-3.0.0/resources/images/default/tree/s.gif +0 -0
- data/public/ext-3.0.0/resources/images/default/window/icon-error.gif +0 -0
- data/public/ext-3.0.0/resources/images/default/window/icon-info.gif +0 -0
- data/public/ext-3.0.0/resources/images/default/window/icon-question.gif +0 -0
- data/public/ext-3.0.0/resources/images/default/window/icon-warning.gif +0 -0
- data/public/ext-3.0.0/resources/images/default/window/left-corners.png +0 -0
- data/public/ext-3.0.0/resources/images/default/window/left-corners.psd +0 -0
- data/public/ext-3.0.0/resources/images/default/window/left-right.png +0 -0
- data/public/ext-3.0.0/resources/images/default/window/left-right.psd +0 -0
- data/public/ext-3.0.0/resources/images/default/window/right-corners.png +0 -0
- data/public/ext-3.0.0/resources/images/default/window/right-corners.psd +0 -0
- data/public/ext-3.0.0/resources/images/default/window/top-bottom.png +0 -0
- data/public/ext-3.0.0/resources/images/default/window/top-bottom.psd +0 -0
- data/public/ext-3.0.0/resources/images/icon/chart.gif +0 -0
- data/public/ext-3.0.0/src/adapter/core/ext-base-ajax.js +371 -0
- data/public/ext-3.0.0/src/adapter/core/ext-base-anim-extra.js +301 -0
- data/public/ext-3.0.0/src/adapter/core/ext-base-anim.js +477 -0
- data/public/ext-3.0.0/src/adapter/core/ext-base-begin.js +18 -0
- data/public/ext-3.0.0/src/adapter/core/ext-base-dom.js +157 -0
- data/public/ext-3.0.0/src/adapter/core/ext-base-end.js +21 -0
- data/public/ext-3.0.0/src/adapter/core/ext-base-event.js +453 -0
- data/public/ext-3.0.0/src/adapter/core/ext-base-point.js +17 -0
- data/public/ext-3.0.0/src/adapter/core/ext-base-region.js +81 -0
- data/public/ext-3.0.0/src/adapter/ext-base-dom-more.js +9 -0
- data/public/ext-3.0.0/src/adapter/jquery-bridge.js +546 -0
- data/public/ext-3.0.0/src/adapter/prototype-bridge.js +600 -0
- data/public/ext-3.0.0/src/adapter/yui-bridge.js +390 -0
- data/public/ext-3.0.0/src/core/CompositeElement.js +136 -0
- data/public/ext-3.0.0/src/core/CompositeElementLite-more.js +102 -0
- data/public/ext-3.0.0/src/core/DomHelper-more.js +179 -0
- data/public/ext-3.0.0/src/core/Element-more.js +192 -0
- data/public/ext-3.0.0/src/core/Element.alignment.js +370 -0
- data/public/ext-3.0.0/src/core/Element.dd.js +46 -0
- data/public/ext-3.0.0/src/core/Element.fx-more.js +152 -0
- data/public/ext-3.0.0/src/core/Element.insertion-more.js +52 -0
- data/public/ext-3.0.0/src/core/Element.keys.js +48 -0
- data/public/ext-3.0.0/src/core/Element.legacy.js +42 -0
- data/public/ext-3.0.0/src/core/Element.position-more.js +165 -0
- data/public/ext-3.0.0/src/core/Element.scroll-more.js +110 -0
- data/public/ext-3.0.0/src/core/Element.style-more.js +318 -0
- data/public/ext-3.0.0/src/core/Error.js +81 -0
- data/public/ext-3.0.0/src/core/EventManager-more.js +334 -0
- data/public/ext-3.0.0/src/core/Ext-more.js +669 -0
- data/public/ext-3.0.0/src/core/Template-more.js +115 -0
- data/public/ext-3.0.0/src/core/core/CompositeElementLite.js +197 -0
- data/public/ext-3.0.0/src/core/core/DomHelper.js +378 -0
- data/public/ext-3.0.0/src/core/core/DomQuery.js +826 -0
- data/public/ext-3.0.0/src/core/core/Element.fx.js +324 -0
- data/public/ext-3.0.0/src/core/core/Element.insertion.js +147 -0
- data/public/ext-3.0.0/src/core/core/Element.js +945 -0
- data/public/ext-3.0.0/src/core/core/Element.position.js +303 -0
- data/public/ext-3.0.0/src/core/core/Element.scroll.js +58 -0
- data/public/ext-3.0.0/src/core/core/Element.style.js +439 -0
- data/public/ext-3.0.0/src/core/core/Element.traversal.js +176 -0
- data/public/ext-3.0.0/src/core/core/EventManager.js +623 -0
- data/public/ext-3.0.0/src/core/core/Ext.js +922 -0
- data/public/ext-3.0.0/src/core/core/Fx.js +1115 -0
- data/public/ext-3.0.0/src/core/core/Template.js +185 -0
- data/public/ext-3.0.0/src/data/Api.js +210 -0
- data/public/ext-3.0.0/src/data/ArrayReader.js +102 -0
- data/public/ext-3.0.0/src/data/ArrayStore.js +70 -0
- data/public/ext-3.0.0/src/data/DataField.js +249 -0
- data/public/ext-3.0.0/src/data/DataProxy.js +427 -0
- data/public/ext-3.0.0/src/data/DataReader.js +160 -0
- data/public/ext-3.0.0/src/data/DataWriter.js +201 -0
- data/public/ext-3.0.0/src/data/DirectProxy.js +141 -0
- data/public/ext-3.0.0/src/data/DirectStore.js +52 -0
- data/public/ext-3.0.0/src/data/GroupingStore.js +139 -0
- data/public/ext-3.0.0/src/data/HttpProxy.js +276 -0
- data/public/ext-3.0.0/src/data/JsonReader.js +311 -0
- data/public/ext-3.0.0/src/data/JsonStore.js +49 -0
- data/public/ext-3.0.0/src/data/JsonWriter.js +77 -0
- data/public/ext-3.0.0/src/data/MemoryProxy.js +69 -0
- data/public/ext-3.0.0/src/data/Record.js +400 -0
- data/public/ext-3.0.0/src/data/ScriptTagProxy.js +279 -0
- data/public/ext-3.0.0/src/data/SortTypes.js +91 -0
- data/public/ext-3.0.0/src/data/Store.js +1492 -0
- data/public/ext-3.0.0/src/data/StoreMgr.js +72 -0
- data/public/ext-3.0.0/src/data/Tree.js +785 -0
- data/public/ext-3.0.0/src/data/XmlReader.js +128 -0
- data/public/ext-3.0.0/src/data/XmlStore.js +75 -0
- data/public/ext-3.0.0/src/data/XmlWriter.js +45 -0
- data/public/ext-3.0.0/src/data/core/Connection.js +575 -0
- data/public/ext-3.0.0/src/dd/DDCore.js +2992 -0
- data/public/ext-3.0.0/src/dd/DragSource.js +365 -0
- data/public/ext-3.0.0/src/dd/DragTracker.js +217 -0
- data/public/ext-3.0.0/src/dd/DragZone.js +133 -0
- data/public/ext-3.0.0/src/dd/DropTarget.js +115 -0
- data/public/ext-3.0.0/src/dd/DropZone.js +262 -0
- data/public/ext-3.0.0/src/dd/Registry.js +127 -0
- data/public/ext-3.0.0/src/dd/ScrollManager.js +201 -0
- data/public/ext-3.0.0/src/dd/StatusProxy.js +171 -0
- data/public/ext-3.0.0/src/debug.js +906 -0
- data/public/ext-3.0.0/src/direct/Direct.js +235 -0
- data/public/ext-3.0.0/src/direct/Event.js +34 -0
- data/public/ext-3.0.0/src/direct/JsonProvider.js +45 -0
- data/public/ext-3.0.0/src/direct/PollingProvider.js +151 -0
- data/public/ext-3.0.0/src/direct/Provider.js +110 -0
- data/public/ext-3.0.0/src/direct/RemotingProvider.js +373 -0
- data/public/ext-3.0.0/src/direct/Transaction.js +32 -0
- data/public/ext-3.0.0/src/locale/ext-lang-af.js +184 -0
- data/public/ext-3.0.0/src/locale/ext-lang-bg.js +278 -0
- data/public/ext-3.0.0/src/locale/ext-lang-ca.js +315 -0
- data/public/ext-3.0.0/src/locale/ext-lang-cs.js +293 -0
- data/public/ext-3.0.0/src/locale/ext-lang-da.js +296 -0
- data/public/ext-3.0.0/src/locale/ext-lang-de.js +326 -0
- data/public/ext-3.0.0/src/locale/ext-lang-el_GR.js +309 -0
- data/public/ext-3.0.0/src/locale/ext-lang-en.js +335 -0
- data/public/ext-3.0.0/src/locale/ext-lang-en_GB.js +315 -0
- data/public/ext-3.0.0/src/locale/ext-lang-es.js +318 -0
- data/public/ext-3.0.0/src/locale/ext-lang-fa.js +272 -0
- data/public/ext-3.0.0/src/locale/ext-lang-fi.js +302 -0
- data/public/ext-3.0.0/src/locale/ext-lang-fr.js +335 -0
- data/public/ext-3.0.0/src/locale/ext-lang-fr_CA.js +218 -0
- data/public/ext-3.0.0/src/locale/ext-lang-gr.js +175 -0
- data/public/ext-3.0.0/src/locale/ext-lang-he.js +292 -0
- data/public/ext-3.0.0/src/locale/ext-lang-hr.js +295 -0
- data/public/ext-3.0.0/src/locale/ext-lang-hu.js +296 -0
- data/public/ext-3.0.0/src/locale/ext-lang-id.js +302 -0
- data/public/ext-3.0.0/src/locale/ext-lang-it.js +295 -0
- data/public/ext-3.0.0/src/locale/ext-lang-ja.js +318 -0
- data/public/ext-3.0.0/src/locale/ext-lang-ko.js +267 -0
- data/public/ext-3.0.0/src/locale/ext-lang-lt.js +333 -0
- data/public/ext-3.0.0/src/locale/ext-lang-lv.js +176 -0
- data/public/ext-3.0.0/src/locale/ext-lang-mk.js +176 -0
- data/public/ext-3.0.0/src/locale/ext-lang-nl.js +323 -0
- data/public/ext-3.0.0/src/locale/ext-lang-no_NB.js +294 -0
- data/public/ext-3.0.0/src/locale/ext-lang-no_NN.js +294 -0
- data/public/ext-3.0.0/src/locale/ext-lang-pl.js +304 -0
- data/public/ext-3.0.0/src/locale/ext-lang-pt.js +260 -0
- data/public/ext-3.0.0/src/locale/ext-lang-pt_BR.js +302 -0
- data/public/ext-3.0.0/src/locale/ext-lang-pt_PT.js +298 -0
- data/public/ext-3.0.0/src/locale/ext-lang-ro.js +295 -0
- data/public/ext-3.0.0/src/locale/ext-lang-ru.js +319 -0
- data/public/ext-3.0.0/src/locale/ext-lang-sk.js +182 -0
- data/public/ext-3.0.0/src/locale/ext-lang-sl.js +176 -0
- data/public/ext-3.0.0/src/locale/ext-lang-sr.js +179 -0
- data/public/ext-3.0.0/src/locale/ext-lang-sr_RS.js +178 -0
- data/public/ext-3.0.0/src/locale/ext-lang-sv_SE.js +178 -0
- data/public/ext-3.0.0/src/locale/ext-lang-th.js +294 -0
- data/public/ext-3.0.0/src/locale/ext-lang-tr.js +306 -0
- data/public/ext-3.0.0/src/locale/ext-lang-ukr.js +258 -0
- data/public/ext-3.0.0/src/locale/ext-lang-vn.js +181 -0
- data/public/ext-3.0.0/src/locale/ext-lang-zh_CN.js +174 -0
- data/public/ext-3.0.0/src/locale/ext-lang-zh_TW.js +178 -0
- data/public/ext-3.0.0/src/state/CookieProvider.js +91 -0
- data/public/ext-3.0.0/src/state/Provider.js +127 -0
- data/public/ext-3.0.0/src/state/StateManager.js +69 -0
- data/public/ext-3.0.0/src/util/CSS.js +161 -0
- data/public/ext-3.0.0/src/util/ClickRepeater.js +200 -0
- data/public/ext-3.0.0/src/util/Cookies.js +96 -0
- data/public/ext-3.0.0/src/util/Date.js +1317 -0
- data/public/ext-3.0.0/src/util/Format.js +356 -0
- data/public/ext-3.0.0/src/util/History.js +203 -0
- data/public/ext-3.0.0/src/util/KeyMap.js +242 -0
- data/public/ext-3.0.0/src/util/KeyNav.js +161 -0
- data/public/ext-3.0.0/src/util/MixedCollection.js +576 -0
- data/public/ext-3.0.0/src/util/Observable-more.js +178 -0
- data/public/ext-3.0.0/src/util/TextMetrics.js +131 -0
- data/public/ext-3.0.0/src/util/UpdateManager.js +536 -0
- data/public/ext-3.0.0/src/util/XTemplate.js +379 -0
- data/public/ext-3.0.0/src/util/core/DelayedTask.js +68 -0
- data/public/ext-3.0.0/src/util/core/JSON.js +174 -0
- data/public/ext-3.0.0/src/util/core/Observable.js +483 -0
- data/public/ext-3.0.0/src/util/core/TaskMgr.js +174 -0
- data/public/ext-3.0.0/src/widgets/Action.js +252 -0
- data/public/ext-3.0.0/src/widgets/BoxComponent.js +519 -0
- data/public/ext-3.0.0/src/widgets/Button.js +762 -0
- data/public/ext-3.0.0/src/widgets/ButtonGroup.js +103 -0
- data/public/ext-3.0.0/src/widgets/ColorPalette.js +148 -0
- data/public/ext-3.0.0/src/widgets/Component.js +1540 -0
- data/public/ext-3.0.0/src/widgets/ComponentMgr.js +159 -0
- data/public/ext-3.0.0/src/widgets/Container.js +894 -0
- data/public/ext-3.0.0/src/widgets/CycleButton.js +188 -0
- data/public/ext-3.0.0/src/widgets/DataView.js +749 -0
- data/public/ext-3.0.0/src/widgets/DatePicker.js +771 -0
- data/public/ext-3.0.0/src/widgets/Editor.js +385 -0
- data/public/ext-3.0.0/src/widgets/Layer.js +466 -0
- data/public/ext-3.0.0/src/widgets/LoadMask.js +123 -0
- data/public/ext-3.0.0/src/widgets/MessageBox.js +626 -0
- data/public/ext-3.0.0/src/widgets/PagingToolbar.js +502 -0
- data/public/ext-3.0.0/src/widgets/Panel.js +1772 -0
- data/public/ext-3.0.0/src/widgets/PanelDD.js +154 -0
- data/public/ext-3.0.0/src/widgets/ProgressBar.js +289 -0
- data/public/ext-3.0.0/src/widgets/Resizable.js +760 -0
- data/public/ext-3.0.0/src/widgets/Shadow.js +192 -0
- data/public/ext-3.0.0/src/widgets/Slider.js +426 -0
- data/public/ext-3.0.0/src/widgets/SplitBar.js +436 -0
- data/public/ext-3.0.0/src/widgets/SplitButton.js +124 -0
- data/public/ext-3.0.0/src/widgets/TabPanel.js +1100 -0
- data/public/ext-3.0.0/src/widgets/Toolbar.js +781 -0
- data/public/ext-3.0.0/src/widgets/Viewport.js +124 -0
- data/public/ext-3.0.0/src/widgets/Window.js +941 -0
- data/public/ext-3.0.0/src/widgets/WindowManager.js +187 -0
- data/public/ext-3.0.0/src/widgets/chart/Chart.js +721 -0
- data/public/ext-3.0.0/src/widgets/chart/EventProxy.js +20 -0
- data/public/ext-3.0.0/src/widgets/chart/FlashComponent.js +117 -0
- data/public/ext-3.0.0/src/widgets/chart/swfobject.js +783 -0
- data/public/ext-3.0.0/src/widgets/form/Action.js +626 -0
- data/public/ext-3.0.0/src/widgets/form/BasicForm.js +735 -0
- data/public/ext-3.0.0/src/widgets/form/Checkbox.js +177 -0
- data/public/ext-3.0.0/src/widgets/form/CheckboxGroup.js +419 -0
- data/public/ext-3.0.0/src/widgets/form/Combo.js +1232 -0
- data/public/ext-3.0.0/src/widgets/form/DateField.js +389 -0
- data/public/ext-3.0.0/src/widgets/form/DisplayField.js +98 -0
- data/public/ext-3.0.0/src/widgets/form/Field.js +640 -0
- data/public/ext-3.0.0/src/widgets/form/FieldSet.js +305 -0
- data/public/ext-3.0.0/src/widgets/form/Form.js +335 -0
- data/public/ext-3.0.0/src/widgets/form/Hidden.js +39 -0
- data/public/ext-3.0.0/src/widgets/form/HtmlEditor.js +1179 -0
- data/public/ext-3.0.0/src/widgets/form/Label.js +64 -0
- data/public/ext-3.0.0/src/widgets/form/NumberField.js +139 -0
- data/public/ext-3.0.0/src/widgets/form/Radio.js +81 -0
- data/public/ext-3.0.0/src/widgets/form/RadioGroup.js +116 -0
- data/public/ext-3.0.0/src/widgets/form/TextArea.js +117 -0
- data/public/ext-3.0.0/src/widgets/form/TextField.js +491 -0
- data/public/ext-3.0.0/src/widgets/form/TimeField.js +146 -0
- data/public/ext-3.0.0/src/widgets/form/TriggerField.js +328 -0
- data/public/ext-3.0.0/src/widgets/form/VTypes.js +135 -0
- data/public/ext-3.0.0/src/widgets/grid/AbstractSelectionModel.js +57 -0
- data/public/ext-3.0.0/src/widgets/grid/CellSelectionModel.js +262 -0
- data/public/ext-3.0.0/src/widgets/grid/CheckboxSelectionModel.js +103 -0
- data/public/ext-3.0.0/src/widgets/grid/Column.js +406 -0
- data/public/ext-3.0.0/src/widgets/grid/ColumnDD.js +199 -0
- data/public/ext-3.0.0/src/widgets/grid/ColumnModel.js +592 -0
- data/public/ext-3.0.0/src/widgets/grid/ColumnSplitDD.js +62 -0
- data/public/ext-3.0.0/src/widgets/grid/EditorGrid.js +291 -0
- data/public/ext-3.0.0/src/widgets/grid/GridDD.js +95 -0
- data/public/ext-3.0.0/src/widgets/grid/GridEditor.js +21 -0
- data/public/ext-3.0.0/src/widgets/grid/GridPanel.js +952 -0
- data/public/ext-3.0.0/src/widgets/grid/GridView.js +1776 -0
- data/public/ext-3.0.0/src/widgets/grid/GroupingView.js +517 -0
- data/public/ext-3.0.0/src/widgets/grid/PropertyGrid.js +370 -0
- data/public/ext-3.0.0/src/widgets/grid/RowNumberer.js +61 -0
- data/public/ext-3.0.0/src/widgets/grid/RowSelectionModel.js +530 -0
- data/public/ext-3.0.0/src/widgets/layout/AbsoluteLayout.js +82 -0
- data/public/ext-3.0.0/src/widgets/layout/AccordionLayout.js +177 -0
- data/public/ext-3.0.0/src/widgets/layout/AnchorLayout.js +200 -0
- data/public/ext-3.0.0/src/widgets/layout/BorderLayout.js +1108 -0
- data/public/ext-3.0.0/src/widgets/layout/BoxLayout.js +417 -0
- data/public/ext-3.0.0/src/widgets/layout/CardLayout.js +127 -0
- data/public/ext-3.0.0/src/widgets/layout/ColumnLayout.js +130 -0
- data/public/ext-3.0.0/src/widgets/layout/ContainerLayout.js +215 -0
- data/public/ext-3.0.0/src/widgets/layout/FitLayout.js +48 -0
- data/public/ext-3.0.0/src/widgets/layout/FormLayout.js +266 -0
- data/public/ext-3.0.0/src/widgets/layout/TableLayout.js +194 -0
- data/public/ext-3.0.0/src/widgets/list/ColumnResizer.js +123 -0
- data/public/ext-3.0.0/src/widgets/list/ListView.js +357 -0
- data/public/ext-3.0.0/src/widgets/list/Sorter.js +70 -0
- data/public/ext-3.0.0/src/widgets/menu/BaseItem.js +160 -0
- data/public/ext-3.0.0/src/widgets/menu/CheckItem.js +114 -0
- data/public/ext-3.0.0/src/widgets/menu/ColorMenu.js +72 -0
- data/public/ext-3.0.0/src/widgets/menu/DateMenu.js +90 -0
- data/public/ext-3.0.0/src/widgets/menu/Item.js +211 -0
- data/public/ext-3.0.0/src/widgets/menu/Menu.js +733 -0
- data/public/ext-3.0.0/src/widgets/menu/MenuMgr.js +211 -0
- data/public/ext-3.0.0/src/widgets/menu/Separator.js +46 -0
- data/public/ext-3.0.0/src/widgets/menu/TextItem.js +46 -0
- data/public/ext-3.0.0/src/widgets/tips/QuickTip.js +207 -0
- data/public/ext-3.0.0/src/widgets/tips/QuickTips.js +159 -0
- data/public/ext-3.0.0/src/widgets/tips/Tip.js +157 -0
- data/public/ext-3.0.0/src/widgets/tips/ToolTip.js +492 -0
- data/public/ext-3.0.0/src/widgets/tree/AsyncTreeNode.js +114 -0
- data/public/ext-3.0.0/src/widgets/tree/TreeDragZone.js +82 -0
- data/public/ext-3.0.0/src/widgets/tree/TreeDropZone.js +321 -0
- data/public/ext-3.0.0/src/widgets/tree/TreeEditor.js +160 -0
- data/public/ext-3.0.0/src/widgets/tree/TreeEventModel.js +169 -0
- data/public/ext-3.0.0/src/widgets/tree/TreeFilter.js +114 -0
- data/public/ext-3.0.0/src/widgets/tree/TreeLoader.js +342 -0
- data/public/ext-3.0.0/src/widgets/tree/TreeNode.js +546 -0
- data/public/ext-3.0.0/src/widgets/tree/TreeNodeUI.js +633 -0
- data/public/ext-3.0.0/src/widgets/tree/TreePanel.js +918 -0
- data/public/ext-3.0.0/src/widgets/tree/TreeSelectionModel.js +315 -0
- data/public/ext-3.0.0/src/widgets/tree/TreeSorter.js +106 -0
- data/public/js/ext-portal.js +235 -0
- data/public/js/global.js +7 -0
- data/public/js/outerframe.js +47 -0
- data/public/js/portal.js +713 -0
- data/public/js/test_chart.js +152 -0
- data/test/config.rb +62 -0
- data/test/config/hosts.yaml +5 -0
- data/test/config/log.yaml +1 -0
- data/test/config/memcache.yaml +5 -0
- data/test/exception.rb +39 -0
- data/test/method_missing.rb +14 -0
- data/test/module.rb +39 -0
- data/test/remote_lmp.rb +126 -0
- data/test/sinatra.rb +29 -0
- data/test/sinatra_base.rb +16 -0
- 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.DomHelper=function(){var s=null,j=/^(?:br|frame|hr|img|input|link|meta|range|spacer|wbr|area|param|col)$/i,l=/^table|tbody|tr|td$/i,p,m="afterbegin",n="afterend",c="beforebegin",o="beforeend",a="<table>",h="</table>",b=a+"<tbody>",i="</tbody>"+h,k=b+"<tr>",r="</tr>"+i;function g(w,y,x,z,v,t){var u=p.insertHtml(z,Ext.getDom(w),q(y));return x?Ext.get(u,true):u}function q(y){var v="",u,x,w,t,z;if(typeof y=="string"){v=y}else{if(Ext.isArray(y)){Ext.each(y,function(A){v+=q(A)})}else{v+="<"+(y.tag=y.tag||"div");Ext.iterate(y,function(A,B){if(!/tag|children|cn|html$/i.test(A)){if(Ext.isObject(B)){v+=" "+A+"='";Ext.iterate(B,function(D,C){v+=D+":"+C+";"});v+="'"}else{v+=" "+({cls:"class",htmlFor:"for"}[A]||A)+"='"+B+"'"}}});if(j.test(y.tag)){v+="/>"}else{v+=">";if((z=y.children||y.cn)){v+=q(z)}else{if(y.html){v+=y.html}}v+="</"+y.tag+">"}}}return v}function e(y,w,v,x){s.innerHTML=[w,v,x].join("");var t=-1,u=s;while(++t<y){u=u.firstChild}return u}function d(t,u,w,v){var x,y;s=s||document.createElement("div");if(t=="td"&&(u==m||u==o)||!/td|tr|tbody/i.test(t)&&(u==c||u==n)){return}y=u==c?w:u==n?w.nextSibling:u==m?w.firstChild:null;if(u==c||u==n){w=w.parentNode}if(t=="td"||(t=="tr"&&(u==o||u==m))){x=e(4,k,v,r)}else{if((t=="tbody"&&(u==o||u==m))||(t=="tr"&&(u==c||u==n))){x=e(3,b,v,i)}else{x=e(2,a,v,h)}}w.insertBefore(x,y);return x}p={markup:function(t){return q(t)},insertHtml:function(y,t,z){var x={},v,B,A,C,w,u;y=y.toLowerCase();x[c]=["BeforeBegin","previousSibling"];x[n]=["AfterEnd","nextSibling"];if(t.insertAdjacentHTML){if(l.test(t.tagName)&&(u=d(t.tagName.toLowerCase(),y,t,z))){return u}x[m]=["AfterBegin","firstChild"];x[o]=["BeforeEnd","lastChild"];if((v=x[y])){t.insertAdjacentHTML(v[0],z);return t[v[1]]}}else{A=t.ownerDocument.createRange();B="setStart"+(/end/i.test(y)?"After":"Before");if(x[y]){A[B](t);C=A.createContextualFragment(z);t.parentNode.insertBefore(C,y==c?t:t.nextSibling);return t[(y==c?"previous":"next")+"Sibling"]}else{w=(y==m?"first":"last")+"Child";if(t.firstChild){A[B](t[w]);C=A.createContextualFragment(z);if(y==m){t.insertBefore(C,t.firstChild)}else{t.appendChild(C)}}else{t.innerHTML=z}return t[w]}}throw'Illegal insertion point -> "'+y+'"'},insertBefore:function(t,v,u){return g(t,v,u,c)},insertAfter:function(t,v,u){return g(t,v,u,n,"nextSibling")},insertFirst:function(t,v,u){return g(t,v,u,m,"firstChild")},append:function(t,v,u){return g(t,v,u,o,"",true)},overwrite:function(t,v,u){t=Ext.getDom(t);t.innerHTML=q(v);return u?Ext.get(t.firstChild):t.firstChild},createHtml:q};return p}();Ext.apply(Ext.DomHelper,function(){var d,a="afterbegin",g="afterend",h="beforebegin",c="beforeend";function e(l,n,m,p,k,i){l=Ext.getDom(l);var j;if(d.useDom){j=b(n,null);if(i){l.appendChild(j)}else{(k=="firstChild"?l:l.parentNode).insertBefore(j,l[k]||l)}}else{j=Ext.DomHelper.insertHtml(p,l,Ext.DomHelper.createHtml(n))}return m?Ext.get(j,true):j}function b(p,j){var l,m=document,k,i,n,q;if(Ext.isArray(p)){l=m.createDocumentFragment();Ext.each(p,function(o){b(o,l)})}else{if(Ext.isString(p)){l=m.createTextNode(p)}else{l=m.createElement(p.tag||"div");k=!!l.setAttribute;Ext.iterate(p,function(o,r){if(!/tag|children|cn|html|style/.test(o)){if(o=="cls"){l.className=r}else{if(k){l.setAttribute(o,r)}else{l[o]=r}}}});d.applyStyles(l,p.style);if((q=p.children||p.cn)){b(q,l)}else{if(p.html){l.innerHTML=p.html}}}}if(j){j.appendChild(l)}return l}d={createTemplate:function(j){var i=Ext.DomHelper.createHtml(j);return new Ext.Template(i)},useDom:false,applyStyles:function(m,n){if(n){var k=0,j,l;m=Ext.fly(m);if(Ext.isFunction(n)){n=n.call()}if(Ext.isString(n)){n=n.trim().split(/\s*(?::|;)\s*/);for(j=n.length;k<j;){m.setStyle(n[k++],n[k++])}}else{if(Ext.isObject(n)){m.setStyle(n)}}}},insertBefore:function(i,k,j){return e(i,k,j,h)},insertAfter:function(i,k,j){return e(i,k,j,g,"nextSibling")},insertFirst:function(i,k,j){return e(i,k,j,a,"firstChild")},append:function(i,k,j){return e(i,k,j,c,"",true)},createDom:b};return d}());Ext.Template=function(d){var e=this,b=arguments,c=[];if(Ext.isArray(d)){d=d.join("")}else{if(b.length>1){Ext.each(b,function(a){if(Ext.isObject(a)){Ext.apply(e,a)}else{c.push(a)}});d=c.join("")}}e.html=d;if(e.compiled){e.compile()}};Ext.Template.prototype={applyTemplate:function(a){var b=this;return b.compiled?b.compiled(a):b.html.replace(b.re,function(c,d){return a[d]!==undefined?a[d]:""})},set:function(a,c){var b=this;b.html=a;b.compiled=null;return c?b.compile():b},re:/\{([\w-]+)\}/g,compile:function(){var me=this,sep=Ext.isGecko?"+":",";function fn(m,name){name="values['"+name+"']";return"'"+sep+"("+name+" == undefined ? '' : "+name+")"+sep+"'"}eval("this.compiled = function(values){ return "+(Ext.isGecko?"'":"['")+me.html.replace(/\\/g,"\\\\").replace(/(\r\n|\n)/g,"\\n").replace(/'/g,"\\'").replace(this.re,fn)+(Ext.isGecko?"';};":"'].join('');};"));return me},insertFirst:function(b,a,c){return this.doInsert("afterBegin",b,a,c)},insertBefore:function(b,a,c){return this.doInsert("beforeBegin",b,a,c)},insertAfter:function(b,a,c){return this.doInsert("afterEnd",b,a,c)},append:function(b,a,c){return this.doInsert("beforeEnd",b,a,c)},doInsert:function(c,e,b,a){e=Ext.getDom(e);var d=Ext.DomHelper.insertHtml(c,e,this.applyTemplate(b));return a?Ext.get(d,true):d},overwrite:function(b,a,c){b=Ext.getDom(b);b.innerHTML=this.applyTemplate(a);return c?Ext.get(b.firstChild,true):b.firstChild}};Ext.Template.prototype.apply=Ext.Template.prototype.applyTemplate;Ext.Template.from=function(b,a){b=Ext.getDom(b);return new Ext.Template(b.value||b.innerHTML,a||"")};Ext.apply(Ext.Template.prototype,{applyTemplate:function(b){var g=this,a=g.disableFormats!==true,e=Ext.util.Format,c=g;if(g.compiled){return g.compiled(b)}function d(j,l,p,k){if(p&&a){if(p.substr(0,5)=="this."){return c.call(p.substr(5),b[l],b)}else{if(k){var o=/^\s*['"](.*)["']\s*$/;k=k.split(",");for(var n=0,h=k.length;n<h;n++){k[n]=k[n].replace(o,"$1")}k=[b[l]].concat(k)}else{k=[b[l]]}return e[p].apply(e,k)}}else{return b[l]!==undefined?b[l]:""}}return g.html.replace(g.re,d)},disableFormats:false,re:/\{([\w-]+)(?:\:([\w\.]*)(?:\((.*?)?\))?)?\}/g,compile:function(){var me=this,fm=Ext.util.Format,useF=me.disableFormats!==true,sep=Ext.isGecko?"+":",",body;function fn(m,name,format,args){if(format&&useF){args=args?","+args:"";if(format.substr(0,5)!="this."){format="fm."+format+"("}else{format='this.call("'+format.substr(5)+'", ';args=", values"}}else{args="";format="(values['"+name+"'] == undefined ? '' : "}return"'"+sep+format+"values['"+name+"']"+args+")"+sep+"'"}if(Ext.isGecko){body="this.compiled = function(values){ return '"+me.html.replace(/\\/g,"\\\\").replace(/(\r\n|\n)/g,"\\n").replace(/'/g,"\\'").replace(this.re,fn)+"';};"}else{body=["this.compiled = function(values){ return ['"];body.push(me.html.replace(/\\/g,"\\\\").replace(/(\r\n|\n)/g,"\\n").replace(/'/g,"\\'").replace(this.re,fn));body.push("'].join('');};");body=body.join("")}eval(body);return me},call:function(c,b,a){return this[c](b,a)}});Ext.Template.prototype.apply=Ext.Template.prototype.applyTemplate;Ext.DomQuery=function(){var cache={},simpleCache={},valueCache={},nonSpace=/\S/,trimRe=/^\s+|\s+$/g,tplRe=/\{(\d+)\}/g,modeRe=/^(\s?[\/>+~]\s?|\s|$)/,tagTokenRe=/^(#)?([\w-\*]+)/,nthRe=/(\d*)n\+?(\d*)/,nthRe2=/\D/,isIE=window.ActiveXObject?true:false,isOpera=Ext.isOpera,key=30803;eval("var batch = 30803;");function child(p,index){var i=0,n=p.firstChild;while(n){if(n.nodeType==1){if(++i==index){return n}}n=n.nextSibling}return null}function next(n){while((n=n.nextSibling)&&n.nodeType!=1){}return n}function prev(n){while((n=n.previousSibling)&&n.nodeType!=1){}return n}function children(d){var n=d.firstChild,ni=-1,nx;while(n){nx=n.nextSibling;if(n.nodeType==3&&!nonSpace.test(n.nodeValue)){d.removeChild(n)}else{n.nodeIndex=++ni}n=nx}return this}function byClassName(c,a,v){if(!v){return c}var r=[],ri=-1,cn;for(var i=0,ci;ci=c[i];i++){if((" "+ci.className+" ").indexOf(v)!=-1){r[++ri]=ci}}return r}function attrValue(n,attr){if(!n.tagName&&typeof n.length!="undefined"){n=n[0]}if(!n){return null}if(attr=="for"){return n.htmlFor}if(attr=="class"||attr=="className"){return n.className}return n.getAttribute(attr)||n[attr]}function getNodes(ns,mode,tagName){var result=[],ri=-1,cs;if(!ns){return result}tagName=tagName||"*";if(typeof ns.getElementsByTagName!="undefined"){ns=[ns]}if(!mode){for(var i=0,ni;ni=ns[i];i++){cs=ni.getElementsByTagName(tagName);for(var j=0,ci;ci=cs[j];j++){result[++ri]=ci}}}else{if(mode=="/"||mode==">"){var utag=tagName.toUpperCase();for(var i=0,ni,cn;ni=ns[i];i++){cn=isOpera?ni.childNodes:(ni.children||ni.childNodes);for(var j=0,cj;cj=cn[j];j++){if(cj.nodeName==utag||cj.nodeName==tagName||tagName=="*"){result[++ri]=cj}}}}else{if(mode=="+"){var utag=tagName.toUpperCase();for(var i=0,n;n=ns[i];i++){while((n=n.nextSibling)&&n.nodeType!=1){}if(n&&(n.nodeName==utag||n.nodeName==tagName||tagName=="*")){result[++ri]=n}}}else{if(mode=="~"){var utag=tagName.toUpperCase();for(var i=0,n;n=ns[i];i++){while((n=n.nextSibling)){if(n.nodeName==utag||n.nodeName==tagName||tagName=="*"){result[++ri]=n}}}}}}}return result}function concat(a,b){if(b.slice){return a.concat(b)}for(var i=0,l=b.length;i<l;i++){a[a.length]=b[i]}return a}function byTag(cs,tagName){if(cs.tagName||cs==document){cs=[cs]}if(!tagName){return cs}var r=[],ri=-1;tagName=tagName.toLowerCase();for(var i=0,ci;ci=cs[i];i++){if(ci.nodeType==1&&ci.tagName.toLowerCase()==tagName){r[++ri]=ci}}return r}function byId(cs,attr,id){if(cs.tagName||cs==document){cs=[cs]}if(!id){return cs}var r=[],ri=-1;for(var i=0,ci;ci=cs[i];i++){if(ci&&ci.id==id){r[++ri]=ci;return r}}return r}function byAttribute(cs,attr,value,op,custom){var r=[],ri=-1,st=custom=="{",f=Ext.DomQuery.operators[op];for(var i=0,ci;ci=cs[i];i++){if(ci.nodeType!=1){continue}var a;if(st){a=Ext.DomQuery.getStyle(ci,attr)}else{if(attr=="class"||attr=="className"){a=ci.className}else{if(attr=="for"){a=ci.htmlFor}else{if(attr=="href"){a=ci.getAttribute("href",2)}else{a=ci.getAttribute(attr)}}}}if((f&&f(a,value))||(!f&&a)){r[++ri]=ci}}return r}function byPseudo(cs,name,value){return Ext.DomQuery.pseudos[name](cs,value)}function nodupIEXml(cs){var d=++key,r;cs[0].setAttribute("_nodup",d);r=[cs[0]];for(var i=1,len=cs.length;i<len;i++){var c=cs[i];if(!c.getAttribute("_nodup")!=d){c.setAttribute("_nodup",d);r[r.length]=c}}for(var i=0,len=cs.length;i<len;i++){cs[i].removeAttribute("_nodup")}return r}function nodup(cs){if(!cs){return[]}var len=cs.length,c,i,r=cs,cj,ri=-1;if(!len||typeof cs.nodeType!="undefined"||len==1){return cs}if(isIE&&typeof cs[0].selectSingleNode!="undefined"){return nodupIEXml(cs)}var d=++key;cs[0]._nodup=d;for(i=1;c=cs[i];i++){if(c._nodup!=d){c._nodup=d}else{r=[];for(var j=0;j<i;j++){r[++ri]=cs[j]}for(j=i+1;cj=cs[j];j++){if(cj._nodup!=d){cj._nodup=d;r[++ri]=cj}}return r}}return r}function quickDiffIEXml(c1,c2){var d=++key,r=[];for(var i=0,len=c1.length;i<len;i++){c1[i].setAttribute("_qdiff",d)}for(var i=0,len=c2.length;i<len;i++){if(c2[i].getAttribute("_qdiff")!=d){r[r.length]=c2[i]}}for(var i=0,len=c1.length;i<len;i++){c1[i].removeAttribute("_qdiff")}return r}function quickDiff(c1,c2){var len1=c1.length,d=++key,r=[];if(!len1){return c2}if(isIE&&c1[0].selectSingleNode){return quickDiffIEXml(c1,c2)}for(var i=0;i<len1;i++){c1[i]._qdiff=d}for(var i=0,len=c2.length;i<len;i++){if(c2[i]._qdiff!=d){r[r.length]=c2[i]}}return r}function quickId(ns,mode,root,id){if(ns==root){var d=root.ownerDocument||root;return d.getElementById(id)}ns=getNodes(ns,mode,"*");return byId(ns,null,id)}return{getStyle:function(el,name){return Ext.fly(el).getStyle(name)},compile:function(path,type){type=type||"select";var fn=["var f = function(root){\n var mode; ++batch; var n = root || document;\n"],q=path,mode,lq,tk=Ext.DomQuery.matchers,tklen=tk.length,mm,lmode=q.match(modeRe);if(lmode&&lmode[1]){fn[fn.length]='mode="'+lmode[1].replace(trimRe,"")+'";';q=q.replace(lmode[1],"")}while(path.substr(0,1)=="/"){path=path.substr(1)}while(q&&lq!=q){lq=q;var tm=q.match(tagTokenRe);if(type=="select"){if(tm){if(tm[1]=="#"){fn[fn.length]='n = quickId(n, mode, root, "'+tm[2]+'");'}else{fn[fn.length]='n = getNodes(n, mode, "'+tm[2]+'");'}q=q.replace(tm[0],"")}else{if(q.substr(0,1)!="@"){fn[fn.length]='n = getNodes(n, mode, "*");'}}}else{if(tm){if(tm[1]=="#"){fn[fn.length]='n = byId(n, null, "'+tm[2]+'");'}else{fn[fn.length]='n = byTag(n, "'+tm[2]+'");'}q=q.replace(tm[0],"")}}while(!(mm=q.match(modeRe))){var matched=false;for(var j=0;j<tklen;j++){var t=tk[j];var m=q.match(t.re);if(m){fn[fn.length]=t.select.replace(tplRe,function(x,i){return m[i]});q=q.replace(m[0],"");matched=true;break}}if(!matched){throw'Error parsing selector, parsing failed at "'+q+'"'}}if(mm[1]){fn[fn.length]='mode="'+mm[1].replace(trimRe,"")+'";';q=q.replace(mm[1],"")}}fn[fn.length]="return nodup(n);\n}";eval(fn.join(""));return f},select:function(path,root,type){if(!root||root==document){root=document}if(typeof root=="string"){root=document.getElementById(root)}var paths=path.split(","),results=[];for(var i=0,len=paths.length;i<len;i++){var p=paths[i].replace(trimRe,"");if(!cache[p]){cache[p]=Ext.DomQuery.compile(p);if(!cache[p]){throw p+" is not a valid selector"}}var result=cache[p](root);if(result&&result!=document){results=results.concat(result)}}if(paths.length>1){return nodup(results)}return results},selectNode:function(path,root){return Ext.DomQuery.select(path,root)[0]},selectValue:function(path,root,defaultValue){path=path.replace(trimRe,"");if(!valueCache[path]){valueCache[path]=Ext.DomQuery.compile(path,"select")}var n=valueCache[path](root),v;n=n[0]?n[0]:n;v=(n&&n.firstChild?n.firstChild.nodeValue:null);return((v===null||v===undefined||v==="")?defaultValue:v)},selectNumber:function(path,root,defaultValue){var v=Ext.DomQuery.selectValue(path,root,defaultValue||0);return parseFloat(v)},is:function(el,ss){if(typeof el=="string"){el=document.getElementById(el)}var isArray=Ext.isArray(el),result=Ext.DomQuery.filter(isArray?el:[el],ss);return isArray?(result.length==el.length):(result.length>0)},filter:function(els,ss,nonMatches){ss=ss.replace(trimRe,"");if(!simpleCache[ss]){simpleCache[ss]=Ext.DomQuery.compile(ss,"simple")}var result=simpleCache[ss](els);return nonMatches?quickDiff(result,els):result},matchers:[{re:/^\.([\w-]+)/,select:'n = byClassName(n, null, " {1} ");'},{re:/^\:([\w-]+)(?:\(((?:[^\s>\/]*|.*?))\))?/,select:'n = byPseudo(n, "{1}", "{2}");'},{re:/^(?:([\[\{])(?:@)?([\w-]+)\s?(?:(=|.=)\s?['"]?(.*?)["']?)?[\]\}])/,select:'n = byAttribute(n, "{2}", "{4}", "{3}", "{1}");'},{re:/^#([\w-]+)/,select:'n = byId(n, null, "{1}");'},{re:/^@([\w-]+)/,select:'return {firstChild:{nodeValue:attrValue(n, "{1}")}};'}],operators:{"=":function(a,v){return a==v},"!=":function(a,v){return a!=v},"^=":function(a,v){return a&&a.substr(0,v.length)==v},"$=":function(a,v){return a&&a.substr(a.length-v.length)==v},"*=":function(a,v){return a&&a.indexOf(v)!==-1},"%=":function(a,v){return(a%v)==0},"|=":function(a,v){return a&&(a==v||a.substr(0,v.length+1)==v+"-")},"~=":function(a,v){return a&&(" "+a+" ").indexOf(" "+v+" ")!=-1}},pseudos:{"first-child":function(c){var r=[],ri=-1,n;for(var i=0,ci;ci=n=c[i];i++){while((n=n.previousSibling)&&n.nodeType!=1){}if(!n){r[++ri]=ci}}return r},"last-child":function(c){var r=[],ri=-1,n;for(var i=0,ci;ci=n=c[i];i++){while((n=n.nextSibling)&&n.nodeType!=1){}if(!n){r[++ri]=ci}}return r},"nth-child":function(c,a){var r=[],ri=-1,m=nthRe.exec(a=="even"&&"2n"||a=="odd"&&"2n+1"||!nthRe2.test(a)&&"n+"+a||a),f=(m[1]||1)-0,l=m[2]-0;for(var i=0,n;n=c[i];i++){var pn=n.parentNode;if(batch!=pn._batch){var j=0;for(var cn=pn.firstChild;cn;cn=cn.nextSibling){if(cn.nodeType==1){cn.nodeIndex=++j}}pn._batch=batch}if(f==1){if(l==0||n.nodeIndex==l){r[++ri]=n}}else{if((n.nodeIndex+l)%f==0){r[++ri]=n}}}return r},"only-child":function(c){var r=[],ri=-1;for(var i=0,ci;ci=c[i];i++){if(!prev(ci)&&!next(ci)){r[++ri]=ci}}return r},empty:function(c){var r=[],ri=-1;for(var i=0,ci;ci=c[i];i++){var cns=ci.childNodes,j=0,cn,empty=true;while(cn=cns[j]){++j;if(cn.nodeType==1||cn.nodeType==3){empty=false;break}}if(empty){r[++ri]=ci}}return r},contains:function(c,v){var r=[],ri=-1;for(var i=0,ci;ci=c[i];i++){if((ci.textContent||ci.innerText||"").indexOf(v)!=-1){r[++ri]=ci}}return r},nodeValue:function(c,v){var r=[],ri=-1;for(var i=0,ci;ci=c[i];i++){if(ci.firstChild&&ci.firstChild.nodeValue==v){r[++ri]=ci}}return r},checked:function(c){var r=[],ri=-1;for(var i=0,ci;ci=c[i];i++){if(ci.checked==true){r[++ri]=ci}}return r},not:function(c,ss){return Ext.DomQuery.filter(c,ss,true)},any:function(c,selectors){var ss=selectors.split("|"),r=[],ri=-1,s;for(var i=0,ci;ci=c[i];i++){for(var j=0;s=ss[j];j++){if(Ext.DomQuery.is(ci,s)){r[++ri]=ci;break}}}return r},odd:function(c){return this["nth-child"](c,"odd")},even:function(c){return this["nth-child"](c,"even")},nth:function(c,a){return c[a-1]||[]},first:function(c){return c[0]||[]},last:function(c){return c[c.length-1]||[]},has:function(c,ss){var s=Ext.DomQuery.select,r=[],ri=-1;for(var i=0,ci;ci=c[i];i++){if(s(ss,ci).length>0){r[++ri]=ci}}return r},next:function(c,ss){var is=Ext.DomQuery.is,r=[],ri=-1;for(var i=0,ci;ci=c[i];i++){var n=next(ci);if(n&&is(n,ss)){r[++ri]=ci}}return r},prev:function(c,ss){var is=Ext.DomQuery.is,r=[],ri=-1;for(var i=0,ci;ci=c[i];i++){var n=prev(ci);if(n&&is(n,ss)){r[++ri]=ci}}return r}}}}();Ext.query=Ext.DomQuery.select;(function(){var i=Ext.util,l=Ext.toArray,k=Ext.each,a=Ext.isObject,h=true,j=false;i.Observable=function(){var m=this,n=m.events;if(m.listeners){m.on(m.listeners);delete m.listeners}m.events=n||{}};i.Observable.prototype=function(){var n=/^(?:scope|delay|buffer|single)$/,m=function(o){return o.toLowerCase()};return{fireEvent:function(){var o=l(arguments),r=m(o[0]),s=this,p=h,u=s.events[r],t,v;if(s.eventsSuspended===h){if(t=s.suspendedEventsQueue){t.push(o)}}else{if(a(u)&&u.bubble){if(u.fire.apply(u,o.slice(1))===j){return j}v=s.getBubbleTarget&&s.getBubbleTarget();if(v&&v.enableBubble){v.enableBubble(r);return v.fireEvent.apply(v,o)}}else{if(a(u)){o.shift();p=u.fire.apply(u,o)}}}return p},addListener:function(r,u,w,q){var t=this,s,x,v,p;if(a(r)){q=r;for(s in q){x=q[s];if(!n.test(s)){t.addListener(s,x.fn||x,x.scope||q.scope,x.fn?x:q)}}}else{r=m(r);p=t.events[r]||h;if(typeof p=="boolean"){t.events[r]=p=new i.Event(t,r)}p.addListener(u,w,a(q)?q:{})}},removeListener:function(o,q,p){var r=this.events[m(o)];if(a(r)){r.removeListener(q,p)}},purgeListeners:function(){var q=this.events,o,p;for(p in q){o=q[p];if(a(o)){o.clearListeners()}}},addEvents:function(q){var p=this;p.events=p.events||{};if(typeof q=="string"){k(arguments,function(o){p.events[o]=p.events[o]||h})}else{Ext.applyIf(p.events,q)}},hasListener:function(o){var p=this.events[o];return a(p)&&p.listeners.length>0},suspendEvents:function(o){this.eventsSuspended=h;if(o){this.suspendedEventsQueue=[]}},resumeEvents:function(){var o=this;o.eventsSuspended=!delete o.suspendedEventQueue;k(o.suspendedEventsQueue,function(p){o.fireEvent.apply(o,p)})}}}();var e=i.Observable.prototype;e.on=e.addListener;e.un=e.removeListener;i.Observable.releaseCapture=function(m){m.fireEvent=e.fireEvent};function g(n,p,m){return function(){if(p.target==arguments[0]){n.apply(m,l(arguments))}}}function c(p,q,n){var m=new i.DelayedTask();return function(){m.delay(q.buffer,p,n,l(arguments))}}function d(o,p,n,m){return function(){p.removeListener(n,m);return o.apply(m,arguments)}}function b(n,p,m){return function(){var o=l(arguments);(function(){n.apply(m,o)}).defer(p.delay||10)}}i.Event=function(n,m){this.name=m;this.obj=n;this.listeners=[]};i.Event.prototype={addListener:function(p,o,n){var q=this,m;o=o||q.obj;if(!q.isListening(p,o)){m=q.createListener(p,o,n);if(q.firing){q.listeners=q.listeners.slice(0)}q.listeners.push(m)}},createListener:function(q,p,r){r=r||{},p=p||this.obj;var m={fn:q,scope:p,options:r},n=q;if(r.target){n=g(n,r,p)}if(r.delay){n=b(n,r,p)}if(r.single){n=d(n,this,q,p)}if(r.buffer){n=c(n,r,p)}m.fireFn=n;return m},findListener:function(p,o){var n,m=-1;k(this.listeners,function(q,r){n=q.scope;if(q.fn==p&&(n==o||n==this.obj)){m=r;return j}},this);return m},isListening:function(n,m){return this.findListener(n,m)!=-1},removeListener:function(p,o){var n,q=this,m=j;if((n=q.findListener(p,o))!=-1){if(q.firing){q.listeners=q.listeners.slice(0)}q.listeners.splice(n,1);m=h}return m},clearListeners:function(){this.listeners=[]},fire:function(){var o=this,n=l(arguments),m=h;k(o.listeners,function(p){o.firing=h;if(p.fireFn.apply(p.scope||o.obj||window,n)===j){return m=o.firing=j}});o.firing=j;return m}}})();Ext.apply(Ext.util.Observable.prototype,function(){function a(j){var i=(this.methodEvents=this.methodEvents||{})[j],d,c,g,h=this;if(!i){this.methodEvents[j]=i={};i.originalFn=this[j];i.methodName=j;i.before=[];i.after=[];var b=function(l,k,e){if(!Ext.isEmpty(c=l.apply(k||h,e))){if(Ext.isObject(c)){d=!Ext.isEmpty(c.returnValue)?c.returnValue:c;g=!!c.cancel}else{if(c===false){g=true}else{d=c}}}};this[j]=function(){var e=Ext.toArray(arguments);d=c=undefined;g=false;Ext.each(i.before,function(k){b(k.fn,k.scope,e);if(g){return d}});if(!Ext.isEmpty(c=i.originalFn.apply(h,e))){d=c}Ext.each(i.after,function(k){b(k.fn,k.scope,e);if(g){return d}});return d}}return i}return{beforeMethod:function(d,c,b){a.call(this,d).before.push({fn:c,scope:b})},afterMethod:function(d,c,b){a.call(this,d).after.push({fn:c,scope:b})},removeMethodListener:function(h,c,b){var g=a.call(this,h),d=false;Ext.each(g.before,function(j,k,e){if(j.fn==c&&j.scope==b){e.splice(k,1);d=true;return false}});if(!d){Ext.each(g.after,function(j,k,e){if(j.fn==c&&j.scope==b){e.splice(k,1);return false}})}},relayEvents:function(e,b){var d=this;function c(g){return function(){return d.fireEvent.apply(d,[g].concat(Ext.toArray(arguments)))}}Ext.each(b,function(g){d.events[g]=d.events[g]||true;e.on(g,c(g),d)})},enableBubble:function(b){var c=this;b=Ext.isArray(b)?b:Ext.toArray(arguments);Ext.each(b,function(d){d=d.toLowerCase();var e=c.events[d]||true;if(typeof e=="boolean"){e=new Ext.util.Event(c,d);c.events[d]=e}e.bubble=true})}}}());Ext.util.Observable.capture=function(c,b,a){c.fireEvent=c.fireEvent.createInterceptor(b,a)};Ext.util.Observable.observeClass=function(a){Ext.apply(a,new Ext.util.Observable());a.prototype.fireEvent=function(){return(a.fireEvent.apply(a,arguments)!==false)&&(Ext.util.Observable.prototype.fireEvent.apply(this,arguments)!==false)}};Ext.EventManager=function(){var t,m,j=false,l=Ext.lib.Event,n=Ext.lib.Dom,b=document,u=window,g="ie-deferred-loader",o="DOMContentLoaded",e={},h=/^(?:scope|delay|buffer|single|stopEvent|preventDefault|stopPropagation|normalized|args|delegate)$/;function k(A,w,z,y,x){var C=Ext.id(A),B=e[C]=e[C]||{};(B[w]=B[w]||[]).push([z,y,x]);l.on(A,w,y);if(w=="mousewheel"&&A.addEventListener){var v=["DOMMouseScroll",y,false];A.addEventListener.apply(A,v);l.on(window,"unload",function(){A.removeEventListener.apply(A,v)})}if(w=="mousedown"&&A==document){Ext.EventManager.stoppedMouseDownEvent.addListener(y)}}function c(){if(!j){Ext.isReady=j=true;if(m){clearInterval(m)}if(Ext.isGecko||Ext.isOpera){b.removeEventListener(o,c,false)}if(Ext.isIE){var v=b.getElementById(g);if(v){v.onreadystatechange=null;v.parentNode.removeChild(v)}}if(t){t.fire();t.clearListeners()}}}function a(){var v="complete";t=new Ext.util.Event();if(Ext.isGecko||Ext.isOpera){b.addEventListener(o,c,false)}else{if(Ext.isIE){b.write("<script id="+g+' defer="defer" src="//:"><\/script>');b.getElementById(g).onreadystatechange=function(){if(this.readyState==v){c()}}}else{if(Ext.isWebKit){m=setInterval(function(){if(b.readyState==v){c()}},10)}}}l.on(u,"load",c)}function r(v,w){return function(){var x=Ext.toArray(arguments);if(w.target==Ext.EventObject.setEvent(x[0]).target){v.apply(this,x)}}}function s(w,x){var v=new Ext.util.DelayedTask(w);return function(y){v.delay(x.buffer,w,null,[new Ext.EventObjectImpl(y)])}}function p(z,y,v,x,w){return function(A){Ext.EventManager.removeListener(y,v,x,w);z(A)}}function d(v,w){return function(x){x=new Ext.EventObjectImpl(x);setTimeout(function(){v(x)},w.delay||10)}}function i(x,w,v,B,A){var C=!Ext.isObject(v)?{}:v,z=Ext.getDom(x);B=B||C.fn;A=A||C.scope;if(!z){throw'Error listening for "'+w+'". Element "'+x+"\" doesn't exist."}function y(E){if(!Ext){return}E=Ext.EventObject.setEvent(E);var D;if(C.delegate){if(!(D=E.getTarget(C.delegate,z))){return}}else{D=E.target}if(C.stopEvent){E.stopEvent()}if(C.preventDefault){E.preventDefault()}if(C.stopPropagation){E.stopPropagation()}if(C.normalized){E=E.browserEvent}B.call(A||z,E,D,C)}if(C.target){y=r(y,C)}if(C.delay){y=d(y,C)}if(C.single){y=p(y,z,w,B,A)}if(C.buffer){y=s(y,C)}k(z,w,B,y,A);return y}var q={addListener:function(x,v,z,y,w){if(Ext.isObject(v)){var C=v,A,B;for(A in C){B=C[A];if(!h.test(A)){if(Ext.isFunction(B)){i(x,A,C,B,C.scope)}else{i(x,A,B)}}}}else{i(x,v,w,z,y)}},removeListener:function(w,v,A,z){var y=Ext.getDom(w),B=Ext.id(y),x;Ext.each((e[B]||{})[v],function(D,E,C){if(Ext.isArray(D)&&D[0]==A&&(!z||D[2]==z)){l.un(y,v,x=D[1]);C.splice(E,1);return false}});if(v=="mousewheel"&&y.addEventListener&&x){y.removeEventListener("DOMMouseScroll",x,false)}if(v=="mousedown"&&y==b&&x){Ext.EventManager.stoppedMouseDownEvent.removeListener(x)}},removeAll:function(w){var y=Ext.id(w=Ext.getDom(w)),x=e[y],v;for(v in x){if(x.hasOwnProperty(v)){Ext.each(x[v],function(z){l.un(w,v,z.wrap)})}}e[y]=null},onDocumentReady:function(x,w,v){if(j){t.addListener(x,w,v);t.fire();t.clearListeners()}else{if(!t){a()}v=v||{};v.delay=v.delay||1;t.addListener(x,w,v)}},elHash:e};q.on=q.addListener;q.un=q.removeListener;q.stoppedMouseDownEvent=new Ext.util.Event();return q}();Ext.onReady=Ext.EventManager.onDocumentReady;(function(){var a=function(){var c=document.body||document.getElementsByTagName("body")[0];if(!c){return false}var b=[" ",Ext.isIE?"ext-ie "+(Ext.isIE6?"ext-ie6":(Ext.isIE7?"ext-ie7":"ext-ie8")):Ext.isGecko?"ext-gecko "+(Ext.isGecko2?"ext-gecko2":"ext-gecko3"):Ext.isOpera?"ext-opera":Ext.isWebKit?"ext-webkit":""];if(Ext.isSafari){b.push("ext-safari "+(Ext.isSafari2?"ext-safari2":(Ext.isSafari3?"ext-safari3":"ext-safari4")))}else{if(Ext.isChrome){b.push("ext-chrome")}}if(Ext.isMac){b.push("ext-mac")}if(Ext.isLinux){b.push("ext-linux")}if(Ext.isStrict||Ext.isBorderBox){var d=c.parentNode;if(d){d.className+=Ext.isStrict?" ext-strict":" ext-border-box"}}c.className+=b.join(" ");return true};if(!a()){Ext.onReady(a)}})();Ext.EventObject=function(){var b=Ext.lib.Event,a={3:13,63234:37,63235:39,63232:38,63233:40,63276:33,63277:34,63272:46,63273:36,63275:35},c=Ext.isIE?{1:0,4:1,2:2}:(Ext.isWebKit?{1:0,2:1,3:2}:{0:0,1:1,2:2});Ext.EventObjectImpl=function(d){if(d){this.setEvent(d.browserEvent||d)}};Ext.EventObjectImpl.prototype={setEvent:function(g){var d=this;if(g==d||(g&&g.browserEvent)){return g}d.browserEvent=g;if(g){d.button=g.button?c[g.button]:(g.which?g.which-1:-1);if(g.type=="click"&&d.button==-1){d.button=0}d.type=g.type;d.shiftKey=g.shiftKey;d.ctrlKey=g.ctrlKey||g.metaKey||false;d.altKey=g.altKey;d.keyCode=g.keyCode;d.charCode=g.charCode;d.target=b.getTarget(g);d.xy=b.getXY(g)}else{d.button=-1;d.shiftKey=false;d.ctrlKey=false;d.altKey=false;d.keyCode=0;d.charCode=0;d.target=null;d.xy=[0,0]}return d},stopEvent:function(){var d=this;if(d.browserEvent){if(d.browserEvent.type=="mousedown"){Ext.EventManager.stoppedMouseDownEvent.fire(d)}b.stopEvent(d.browserEvent)}},preventDefault:function(){if(this.browserEvent){b.preventDefault(this.browserEvent)}},stopPropagation:function(){var d=this;if(d.browserEvent){if(d.browserEvent.type=="mousedown"){Ext.EventManager.stoppedMouseDownEvent.fire(d)}b.stopPropagation(d.browserEvent)}},getCharCode:function(){return this.charCode||this.keyCode},getKey:function(){return this.normalizeKey(this.keyCode||this.charCode)},normalizeKey:function(d){return Ext.isSafari?(a[d]||d):d},getPageX:function(){return this.xy[0]},getPageY:function(){return this.xy[1]},getXY:function(){return this.xy},getTarget:function(e,g,d){return e?Ext.fly(this.target).findParent(e,g,d):(d?Ext.get(this.target):this.target)},getRelatedTarget:function(){return this.browserEvent?b.getRelatedTarget(this.browserEvent):null},getWheelDelta:function(){var d=this.browserEvent;var g=0;if(d.wheelDelta){g=d.wheelDelta/120}else{if(d.detail){g=-d.detail/3}}return g},within:function(g,h,d){if(g){var e=this[h?"getRelatedTarget":"getTarget"]();return e&&((d?(e==Ext.getDom(g)):false)||Ext.fly(g).contains(e))}return false}};return new Ext.EventObjectImpl()}();Ext.apply(Ext.EventManager,function(){var c,j,e,b,a=Ext.lib.Dom,k=Ext.lib.Event,i=/^(?:scope|delay|buffer|single|stopEvent|preventDefault|stopPropagation|normalized|args|delegate)$/,h=0,g=0,d=Ext.isSafari?Ext.num(navigator.userAgent.toLowerCase().match(/version\/(\d+\.\d)/)[1]||2)>=3.1:!((Ext.isGecko&&!Ext.isWindows)||Ext.isOpera);return{doResizeEvent:function(){var m=a.getViewHeight(),l=a.getViewWidth();if(g!=m||h!=l){c.fire(h=l,g=m)}},onWindowResize:function(n,m,l){if(!c){c=new Ext.util.Event();j=new Ext.util.DelayedTask(this.doResizeEvent);k.on(window,"resize",this.fireWindowResize,this)}c.addListener(n,m,l)},fireWindowResize:function(){if(c){if((Ext.isIE||Ext.isAir)&&j){j.delay(50)}else{c.fire(a.getViewWidth(),a.getViewHeight())}}},onTextResize:function(o,n,l){if(!e){e=new Ext.util.Event();var m=new Ext.Element(document.createElement("div"));m.dom.className="x-text-resize";m.dom.innerHTML="X";m.appendTo(document.body);b=m.dom.offsetHeight;setInterval(function(){if(m.dom.offsetHeight!=b){e.fire(b,b=m.dom.offsetHeight)}},this.textResizeInterval)}e.addListener(o,n,l)},removeResizeListener:function(m,l){if(c){c.removeListener(m,l)}},fireResize:function(){if(c){c.fire(a.getViewWidth(),a.getViewHeight())}},textResizeInterval:50,ieDeferSrc:false,useKeydown:d}}());Ext.EventManager.on=Ext.EventManager.addListener;Ext.apply(Ext.EventObjectImpl.prototype,{BACKSPACE:8,TAB:9,NUM_CENTER:12,ENTER:13,RETURN:13,SHIFT:16,CTRL:17,CONTROL:17,ALT:18,PAUSE:19,CAPS_LOCK:20,ESC:27,SPACE:32,PAGE_UP:33,PAGEUP:33,PAGE_DOWN:34,PAGEDOWN:34,END:35,HOME:36,LEFT:37,UP:38,RIGHT:39,DOWN:40,PRINT_SCREEN:44,INSERT:45,DELETE:46,ZERO:48,ONE:49,TWO:50,THREE:51,FOUR:52,FIVE:53,SIX:54,SEVEN:55,EIGHT:56,NINE:57,A:65,B:66,C:67,D:68,E:69,F:70,G:71,H:72,I:73,J:74,K:75,L:76,M:77,N:78,O:79,P:80,Q:81,R:82,S:83,T:84,U:85,V:86,W:87,X:88,Y:89,Z:90,CONTEXT_MENU:93,NUM_ZERO:96,NUM_ONE:97,NUM_TWO:98,NUM_THREE:99,NUM_FOUR:100,NUM_FIVE:101,NUM_SIX:102,NUM_SEVEN:103,NUM_EIGHT:104,NUM_NINE:105,NUM_MULTIPLY:106,NUM_PLUS:107,NUM_MINUS:109,NUM_PERIOD:110,NUM_DIVISION:111,F1:112,F2:113,F3:114,F4:115,F5:116,F6:117,F7:118,F8:119,F9:120,F10:121,F11:122,F12:123,isNavKeyPress:function(){var b=this,a=this.normalizeKey(b.keyCode);return(a>=33&&a<=40)||a==b.RETURN||a==b.TAB||a==b.ESC},isSpecialKey:function(){var a=this.normalizeKey(this.keyCode);return(this.type=="keypress"&&this.ctrlKey)||this.isNavKeyPress()||(a==this.BACKSPACE)||(a>=16&&a<=20)||(a>=44&&a<=45)},getPoint:function(){return new Ext.lib.Point(this.xy[0],this.xy[1])},hasModifier:function(){return((this.ctrlKey||this.altKey)||this.shiftKey)}});(function(){var i=document;Ext.Element=function(n,o){var p=typeof n=="string"?i.getElementById(n):n,q;if(!p){return null}q=p.id;if(!o&&q&&Ext.Element.cache[q]){return Ext.Element.cache[q]}this.dom=p;this.id=q||Ext.id(p)};var a=Ext.lib.Dom,e=Ext.DomHelper,l=Ext.lib.Event,d=Ext.lib.Anim,g=Ext.Element;g.prototype={set:function(s,p){var q=this.dom,n,r;for(n in s){r=s[n];if(n!="style"&&!Ext.isFunction(r)){if(n=="cls"){q.className=r}else{if(s.hasOwnProperty(n)){if(p||!!q.setAttribute){q.setAttribute(n,r)}else{q[n]=r}}}}}if(s.style){Ext.DomHelper.applyStyles(q,s.style)}return this},defaultUnit:"px",is:function(n){return Ext.DomQuery.is(this.dom,n)},focus:function(q,p){var n=this,p=p||n.dom;try{if(Number(q)){n.focus.defer(q,null,[null,p])}else{p.focus()}}catch(o){}return n},blur:function(){try{this.dom.blur()}catch(n){}return this},getValue:function(n){var o=this.dom.value;return n?parseInt(o,10):o},addListener:function(n,q,p,o){Ext.EventManager.on(this.dom,n,q,p||this,o);return this},removeListener:function(n,p,o){Ext.EventManager.removeListener(this.dom,n,p,o||this);return this},removeAllListeners:function(){Ext.EventManager.removeAll(this.dom);return this},addUnits:function(n){if(n===""||n=="auto"||n===undefined){n=n||""}else{if(!isNaN(n)||!j.test(n)){n=n+(this.defaultUnit||"px")}}return n},load:function(o,p,n){Ext.Ajax.request(Ext.apply({params:p,url:o.url||o,callback:n,el:this.dom,indicatorText:o.indicatorText||""},Ext.isObject(o)?o:{}));return this},isBorderBox:function(){return h[(this.dom.tagName||"").toLowerCase()]||Ext.isBorderBox},remove:function(){var n=this,o=n.dom;n.removeAllListeners();delete g.cache[o.id];delete g.dataCache[o.id];Ext.removeNode(o)},hover:function(o,n,q,p){var r=this;r.on("mouseenter",o,q||r.dom,p);r.on("mouseleave",n,q||r.dom,p);return r},contains:function(n){return !n?false:Ext.lib.Dom.isAncestor(this.dom,n.dom?n.dom:n)},getAttributeNS:function(o,n){return this.getAttribute(n,o)},getAttribute:Ext.isIE?function(n,p){var q=this.dom,o=typeof q[p+":"+n];if(["undefined","unknown"].indexOf(o)==-1){return q[p+":"+n]}return q[n]}:function(n,o){var p=this.dom;return p.getAttributeNS(o,n)||p.getAttribute(o+":"+n)||p.getAttribute(n)||p[n]},update:function(n){this.dom.innerHTML=n;return this}};var m=g.prototype;g.addMethods=function(n){Ext.apply(m,n)};m.on=m.addListener;m.un=m.removeListener;m.autoBoxAdjust=true;var j=/\d+(px|em|%|en|ex|pt|in|cm|mm|pc)$/i,c;g.cache={};g.dataCache={};g.get=function(o){var n,r,q;if(!o){return null}if(typeof o=="string"){if(!(r=i.getElementById(o))){return null}if(n=g.cache[o]){n.dom=r}else{n=g.cache[o]=new g(r)}return n}else{if(o.tagName){if(!(q=o.id)){q=Ext.id(o)}if(n=g.cache[q]){n.dom=o}else{n=g.cache[q]=new g(o)}return n}else{if(o instanceof g){if(o!=c){o.dom=i.getElementById(o.id)||o.dom;g.cache[o.id]=o}return o}else{if(o.isComposite){return o}else{if(Ext.isArray(o)){return g.select(o)}else{if(o==i){if(!c){var p=function(){};p.prototype=g.prototype;c=new p();c.dom=i}return c}}}}}}return null};g.data=function(o,n,p){var q=g.dataCache[o.id];if(!q){q=g.dataCache[o.id]={}}if(arguments.length==2){return q[n]}else{q[n]=p}};function k(){if(!Ext.enableGarbageCollector){clearInterval(g.collectorThread)}else{var n,o,p;for(n in g.cache){o=g.cache[n];p=o.dom;if(!p||!p.parentNode||(!p.offsetParent&&!i.getElementById(n))){delete g.cache[n];if(p&&Ext.enableListenerCollection){Ext.EventManager.removeAll(p)}}}}}g.collectorThreadId=setInterval(k,30000);var b=function(){};b.prototype=g.prototype;g.Flyweight=function(n){this.dom=n};g.Flyweight.prototype=new b();g.Flyweight.prototype.isFlyweight=true;g._flyweights={};g.fly=function(p,n){var o=null;n=n||"_global";if(p=Ext.getDom(p)){(g._flyweights[n]=g._flyweights[n]||new g.Flyweight()).dom=p;o=g._flyweights[n]}return o};Ext.get=g.get;Ext.fly=g.fly;var h=Ext.isStrict?{select:1}:{input:1,select:1,textarea:1};if(Ext.isIE||Ext.isGecko){h.button=1}Ext.EventManager.on(window,"unload",function(){delete g.cache;delete g.dataCache;delete g._flyweights})})();Ext.Element.addMethods({swallowEvent:function(a,b){var d=this;function c(g){g.stopPropagation();if(b){g.preventDefault()}}if(Ext.isArray(a)){Ext.each(a,function(g){d.on(g,c)});return d}d.on(a,c);return d},relayEvent:function(a,b){this.on(a,function(c){b.fireEvent(a,c)})},clean:function(b){var d=this,e=d.dom,g=e.firstChild,c=-1;if(Ext.Element.data(e,"isCleaned")&&b!==true){return d}while(g){var a=g.nextSibling;if(g.nodeType==3&&!/\S/.test(g.nodeValue)){e.removeChild(g)}else{g.nodeIndex=++c}g=a}Ext.Element.data(e,"isCleaned",true);return d},load:function(){var a=this.getUpdater();a.update.apply(a,arguments);return this},getUpdater:function(){return this.updateManager||(this.updateManager=new Ext.Updater(this))},update:function(html,loadScripts,callback){html=html||"";if(loadScripts!==true){this.dom.innerHTML=html;if(Ext.isFunction(callback)){callback()}return this}var id=Ext.id(),dom=this.dom;html+='<span id="'+id+'"></span>';Ext.lib.Event.onAvailable(id,function(){var DOC=document,hd=DOC.getElementsByTagName("head")[0],re=/(?:<script([^>]*)?>)((\n|\r|.)*?)(?:<\/script>)/ig,srcRe=/\ssrc=([\'\"])(.*?)\1/i,typeRe=/\stype=([\'\"])(.*?)\1/i,match,attrs,srcMatch,typeMatch,el,s;while((match=re.exec(html))){attrs=match[1];srcMatch=attrs?attrs.match(srcRe):false;if(srcMatch&&srcMatch[2]){s=DOC.createElement("script");s.src=srcMatch[2];typeMatch=attrs.match(typeRe);if(typeMatch&&typeMatch[2]){s.type=typeMatch[2]}hd.appendChild(s)}else{if(match[2]&&match[2].length>0){if(window.execScript){window.execScript(match[2])}else{window.eval(match[2])}}}}el=DOC.getElementById(id);if(el){Ext.removeNode(el)}if(Ext.isFunction(callback)){callback()}});dom.innerHTML=html.replace(/(?:<script.*?>)((\n|\r|.)*?)(?:<\/script>)/ig,"");return this},createProxy:function(a,e,d){a=Ext.isObject(a)?a:{tag:"div",cls:a};var c=this,b=e?Ext.DomHelper.append(e,a,true):Ext.DomHelper.insertBefore(c.dom,a,true);if(d&&c.setBox&&c.getBox){b.setBox(c.getBox())}return b}});Ext.Element.prototype.getUpdateManager=Ext.Element.prototype.getUpdater;Ext.Element.uncache=function(e){for(var d=0,c=arguments,b=c.length;d<b;d++){if(c[d]){delete Ext.Element.cache[c[d].id||c[d]]}}};Ext.Element.addMethods({getAnchorXY:function(e,l,q){e=(e||"tl").toLowerCase();q=q||{};var k=this,b=k.dom==document.body||k.dom==document,n=q.width||b?Ext.lib.Dom.getViewWidth():k.getWidth(),i=q.height||b?Ext.lib.Dom.getViewHeight():k.getHeight(),p,a=Math.round,c=k.getXY(),m=k.getScroll(),j=b?m.left:!l?c[0]:0,g=b?m.top:!l?c[1]:0,d={c:[a(n*0.5),a(i*0.5)],t:[a(n*0.5),0],l:[0,a(i*0.5)],r:[n,a(i*0.5)],b:[a(n*0.5),i],tl:[0,0],bl:[0,i],br:[n,i],tr:[n,0]};p=d[e];return[p[0]+j,p[1]+g]},anchorTo:function(b,g,c,a,i,j){var h=this,e=h.dom;function d(){Ext.fly(e).alignTo(b,g,c,a);Ext.callback(j,Ext.fly(e))}Ext.EventManager.onWindowResize(d,h);if(!Ext.isEmpty(i)){Ext.EventManager.on(window,"scroll",d,h,{buffer:!isNaN(i)?i:50})}d.call(h);return h},getAlignToXY:function(g,A,B){g=Ext.get(g);if(!g||!g.dom){throw"Element.alignToXY with an element that doesn't exist"}B=B||[0,0];A=(A=="?"?"tl-bl?":(!/-/.test(A)&&A!==""?"tl-"+A:A||"tl-bl")).toLowerCase();var K=this,H=K.dom,M,L,n,l,s,F,v,t=Ext.lib.Dom.getViewWidth()-10,G=Ext.lib.Dom.getViewHeight()-10,b,i,j,k,u,z,N=document,J=N.documentElement,q=N.body,E=(J.scrollLeft||q.scrollLeft||0)+5,D=(J.scrollTop||q.scrollTop||0)+5,I=false,e="",a="",C=A.match(/^([a-z]+)-([a-z]+)(\?)?$/);if(!C){throw"Element.alignTo with an invalid alignment "+A}e=C[1];a=C[2];I=!!C[3];M=K.getAnchorXY(e,true);L=g.getAnchorXY(a,false);n=L[0]-M[0]+B[0];l=L[1]-M[1]+B[1];if(I){s=K.getWidth();F=K.getHeight();v=g.getRegion();b=e.charAt(0);i=e.charAt(e.length-1);j=a.charAt(0);k=a.charAt(a.length-1);u=((b=="t"&&j=="b")||(b=="b"&&j=="t"));z=((i=="r"&&k=="l")||(i=="l"&&k=="r"));if(n+s>t+E){n=z?v.left-s:t+E-s}if(n<E){n=z?v.right:E}if(l+F>G+D){l=u?v.top-F:G+D-F}if(l<D){l=u?v.bottom:D}}return[n,l]},alignTo:function(c,a,e,b){var d=this;return d.setXY(d.getAlignToXY(c,a,e),d.preanim&&!!b?d.preanim(arguments,3):false)},adjustForConstraints:function(c,a,b){return this.getConstrainToXY(a||document,false,b,c)||c},getConstrainToXY:function(b,a,c,e){var d={top:0,left:0,bottom:0,right:0};return function(i,z,k,m){i=Ext.get(i);k=k?Ext.applyIf(k,d):d;var v,C,u=0,t=0;if(i.dom==document.body||i.dom==document){v=Ext.lib.Dom.getViewWidth();C=Ext.lib.Dom.getViewHeight()}else{v=i.dom.clientWidth;C=i.dom.clientHeight;if(!z){var r=i.getXY();u=r[0];t=r[1]}}var q=i.getScroll();u+=k.left+q.left;t+=k.top+q.top;v-=k.right;C-=k.bottom;var A=u+v;var g=t+C;var j=m||(!z?this.getXY():[this.getLeft(true),this.getTop(true)]);var o=j[0],n=j[1];var p=this.dom.offsetWidth,B=this.dom.offsetHeight;var l=false;if((o+p)>A){o=A-p;l=true}if((n+B)>g){n=g-B;l=true}if(o<u){o=u;l=true}if(n<t){n=t;l=true}return l?[o,n]:false}}(),getCenterXY:function(){return this.getAlignToXY(document,"c-c")},center:function(a){return this.alignTo(a||document,"c-c")}});Ext.Element.addMethods(function(){var d="parentNode",b="nextSibling",c="previousSibling",e=Ext.DomQuery,a=Ext.get;return{findParent:function(m,l,h){var j=this.dom,g=document.body,k=0,i;if(Ext.isGecko&&Object.prototype.toString.call(j)=="[object XULElement]"){return null}l=l||50;if(isNaN(l)){i=Ext.getDom(l);l=Number.MAX_VALUE}while(j&&j.nodeType==1&&k<l&&j!=g&&j!=i){if(e.is(j,m)){return h?a(j):j}k++;j=j.parentNode}return null},findParentNode:function(j,i,g){var h=Ext.fly(this.dom.parentNode,"_internal");return h?h.findParent(j,i,g):null},up:function(h,g){return this.findParentNode(h,g,true)},select:function(g,h){return Ext.Element.select(g,h,this.dom)},query:function(g,h){return e.select(g,this.dom)},child:function(g,h){var i=e.selectNode(g,this.dom);return h?i:a(i)},down:function(g,h){var i=e.selectNode(" > "+g,this.dom);return h?i:a(i)},parent:function(g,h){return this.matchNode(d,d,g,h)},next:function(g,h){return this.matchNode(b,b,g,h)},prev:function(g,h){return this.matchNode(c,c,g,h)},first:function(g,h){return this.matchNode(b,"firstChild",g,h)},last:function(g,h){return this.matchNode(c,"lastChild",g,h)},matchNode:function(h,k,g,i){var j=this.dom[k];while(j){if(j.nodeType==1&&(!g||e.is(j,g))){return !i?a(j):j}j=j[h]}return null}}}());Ext.Element.addMethods(function(){var d=Ext.getDom,a=Ext.get,c=Ext.DomHelper,b=function(e){return(e.nodeType||e.dom||typeof e=="string")};return{appendChild:function(e){return a(e).appendTo(this)},appendTo:function(e){d(e).appendChild(this.dom);return this},insertBefore:function(e){(e=d(e)).parentNode.insertBefore(this.dom,e);return this},insertAfter:function(e){(e=d(e)).parentNode.insertBefore(this.dom,e.nextSibling);return this},insertFirst:function(g,e){g=g||{};if(b(g)){g=d(g);this.dom.insertBefore(g,this.dom.firstChild);return !e?a(g):g}else{return this.createChild(g,this.dom.firstChild,e)}},replace:function(e){e=a(e);this.insertBefore(e);e.remove();return this},replaceWith:function(g){var h=this,e=Ext.Element;if(b(g)){g=d(g);h.dom.parentNode.insertBefore(g,h.dom)}else{g=c.insertBefore(h.dom,g)}delete e.cache[h.id];Ext.removeNode(h.dom);h.id=Ext.id(h.dom=g);return e.cache[h.id]=h},createChild:function(g,e,h){g=g||{tag:"div"};return e?c.insertBefore(e,g,h!==true):c[!this.dom.firstChild?"overwrite":"append"](this.dom,g,h!==true)},wrap:function(e,g){var h=c.insertBefore(this.dom,e||{tag:"div"},!g);h.dom?h.dom.appendChild(this.dom):h.appendChild(this.dom);return h},insertHtml:function(g,h,e){var i=c.insertHtml(g,this.dom,h);return e?Ext.get(i):i}}}());Ext.apply(Ext.Element.prototype,function(){var c=Ext.getDom,a=Ext.get,b=Ext.DomHelper;return{insertSibling:function(h,e,g){var i=this,d;if(Ext.isArray(h)){Ext.each(h,function(j){d=i.insertSibling(j,e,g)});return d}e=(e||"before").toLowerCase();h=h||{};if(h.nodeType||h.dom){d=i.dom.parentNode.insertBefore(c(h),e=="before"?i.dom:i.dom.nextSibling);if(!g){d=a(d)}}else{if(e=="after"&&!i.dom.nextSibling){d=b.append(i.dom.parentNode,h,!g)}else{d=b[e=="after"?"insertAfter":"insertBefore"](i.dom,h,!g)}}return d}}}());Ext.Element.addMethods(function(){var h={},y=/(-[a-z])/gi,b={},t=document.defaultView,v=Ext.isIE?"styleFloat":"cssFloat",D=/alpha\(opacity=(.*)\)/i,l=/^\s+|\s+$/g,B=Ext.Element,d="padding",c="margin",z="border",u="-left",r="-right",x="-top",o="-bottom",j="-width",s=Math,A="hidden",e="isClipped",k="overflow",n="overflow-x",m="overflow-y",C="originalClip",i={l:z+u+j,r:z+r+j,t:z+x+j,b:z+o+j},g={l:d+u,r:d+r,t:d+x,b:d+o},a={l:c+u,r:c+r,t:c+x,b:c+o},E=Ext.Element.data;function q(F,G){return G.charAt(1).toUpperCase()}function p(G,F){var H=0;Ext.each(G.match(/\w/g),function(I){if(I=parseInt(this.getStyle(F[I]),10)){H+=s.abs(I)}},this);return H}function w(F){return h[F]||(h[F]=F=="float"?v:F.replace(y,q))}return{adjustWidth:function(F){var G=this;var H=(typeof F=="number");if(H&&G.autoBoxAdjust&&!G.isBorderBox()){F-=(G.getBorderWidth("lr")+G.getPadding("lr"))}return(H&&F<0)?0:F},adjustHeight:function(F){var G=this;var H=(typeof F=="number");if(H&&G.autoBoxAdjust&&!G.isBorderBox()){F-=(G.getBorderWidth("tb")+G.getPadding("tb"))}return(H&&F<0)?0:F},addClass:function(F){var G=this;Ext.each(F,function(H){G.dom.className+=(!G.hasClass(H)&&H?" "+H:"")});return G},radioClass:function(F){Ext.each(this.dom.parentNode.childNodes,function(G){if(G.nodeType==1){Ext.fly(G,"_internal").removeClass(F)}});return this.addClass(F)},removeClass:function(F){var G=this;if(G.dom.className){Ext.each(F,function(H){G.dom.className=G.dom.className.replace(b[H]=b[H]||new RegExp("(?:^|\\s+)"+H+"(?:\\s+|$)","g")," ")})}return G},toggleClass:function(F){return this.hasClass(F)?this.removeClass(F):this.addClass(F)},hasClass:function(F){return F&&(" "+this.dom.className+" ").indexOf(" "+F+" ")!=-1},replaceClass:function(G,F){return this.removeClass(G).addClass(F)},isStyle:function(F,G){return this.getStyle(F)==G},getStyle:function(){return t&&t.getComputedStyle?function(I){var H=this.dom,F,G;if(H==document){return null}I=w(I);return(F=H.style[I])?F:(G=t.getComputedStyle(H,""))?G[I]:null}:function(J){var H=this.dom,F,G;if(H==document){return null}if(J=="opacity"){if(H.style.filter.match){if(F=H.style.filter.match(D)){var I=parseFloat(F[1]);if(!isNaN(I)){return I?I/100:0}}}return 1}J=w(J);return H.style[J]||((G=H.currentStyle)?G[J]:null)}}(),getColor:function(F,G,K){var I=this.getStyle(F),H=K||"#",J;if(!I||/transparent|inherit/.test(I)){return G}if(/^r/.test(I)){Ext.each(I.slice(4,I.length-1).split(","),function(L){J=parseInt(L,10);H+=(J<16?"0":"")+J.toString(16)})}else{I=I.replace("#","");H+=I.length==3?I.replace(/^(\w)(\w)(\w)$/,"$1$1$2$2$3$3"):I}return(H.length>5?H.toLowerCase():G)},setStyle:function(J,I){var G,H,F;if(!Ext.isObject(J)){G={};G[J]=I;J=G}for(H in J){I=J[H];H=="opacity"?this.setOpacity(I):this.dom.style[w(H)]=I}return this},setOpacity:function(G,F){var J=this,H=J.dom.style;if(!F||!J.anim){if(Ext.isIE){var I=G<1?"alpha(opacity="+G*100+")":"",K=H.filter.replace(D,"").replace(l,"");H.zoom=1;H.filter=K+(K.length>0?" ":"")+I}else{H.opacity=G}}else{J.anim({opacity:{to:G}},J.preanim(arguments,1),null,0.35,"easeIn")}return J},clearOpacity:function(){var F=this.dom.style;if(Ext.isIE){if(!Ext.isEmpty(F.filter)){F.filter=F.filter.replace(D,"").replace(l,"")}}else{F.opacity=F["-moz-opacity"]=F["-khtml-opacity"]=""}return this},getHeight:function(H){var G=this,I=G.dom,F=s.max(I.offsetHeight,I.clientHeight)||0;F=!H?F:F-G.getBorderWidth("tb")-G.getPadding("tb");return F<0?0:F},getWidth:function(G){var H=this,I=H.dom,F=s.max(I.offsetWidth,I.clientWidth)||0;F=!G?F:F-H.getBorderWidth("lr")-H.getPadding("lr");return F<0?0:F},setWidth:function(G,F){var H=this;G=H.adjustWidth(G);!F||!H.anim?H.dom.style.width=H.addUnits(G):H.anim({width:{to:G}},H.preanim(arguments,1));return H},setHeight:function(F,G){var H=this;F=H.adjustHeight(F);!G||!H.anim?H.dom.style.height=H.addUnits(F):H.anim({height:{to:F}},H.preanim(arguments,1));return H},getBorderWidth:function(F){return p.call(this,F,i)},getPadding:function(F){return p.call(this,F,g)},clip:function(){var F=this,G=F.dom;if(!E(G,e)){E(G,e,true);E(G,C,{o:F.getStyle(k),x:F.getStyle(n),y:F.getStyle(m)});F.setStyle(k,A);F.setStyle(n,A);F.setStyle(m,A)}return F},unclip:function(){var F=this,H=F.dom;if(E(H,e)){E(H,e,false);var G=E(H,C);if(G.o){F.setStyle(k,G.o)}if(G.x){F.setStyle(n,G.x)}if(G.y){F.setStyle(m,G.y)}}return F},addStyles:p,margins:a}}());Ext.Element.boxMarkup='<div class="{0}-tl"><div class="{0}-tr"><div class="{0}-tc"></div></div></div><div class="{0}-ml"><div class="{0}-mr"><div class="{0}-mc"></div></div></div><div class="{0}-bl"><div class="{0}-br"><div class="{0}-bc"></div></div></div>';Ext.Element.addMethods(function(){var a="_internal";return{applyStyles:function(b){Ext.DomHelper.applyStyles(this.dom,b);return this},getStyles:function(){var b={};Ext.each(arguments,function(c){b[c]=this.getStyle(c)},this);return b},getStyleSize:function(){var g=this,b,e,i=this.dom,c=i.style;if(c.width&&c.width!="auto"){b=parseInt(c.width,10);if(g.isBorderBox()){b-=g.getFrameWidth("lr")}}if(c.height&&c.height!="auto"){e=parseInt(c.height,10);if(g.isBorderBox()){e-=g.getFrameWidth("tb")}}return{width:b||g.getWidth(true),height:e||g.getHeight(true)}},setOverflow:function(b){var c=this.dom;if(b=="auto"&&Ext.isMac&&Ext.isGecko2){c.style.overflow="hidden";(function(){c.style.overflow="auto"}).defer(1)}else{c.style.overflow=b}},boxWrap:function(b){b=b||"x-box";var c=Ext.get(this.insertHtml("beforeBegin","<div class='"+b+"'>"+String.format(Ext.Element.boxMarkup,b)+"</div>"));Ext.DomQuery.selectNode("."+b+"-mc",c.dom).appendChild(this.dom);return c},setSize:function(d,b,c){var e=this;if(Ext.isObject(d)){b=d.height;d=d.width}d=e.adjustWidth(d);b=e.adjustHeight(b);if(!c||!e.anim){e.dom.style.width=e.addUnits(d);e.dom.style.height=e.addUnits(b)}else{e.anim({width:{to:d},height:{to:b}},e.preanim(arguments,2))}return e},getComputedHeight:function(){var c=this,b=Math.max(c.dom.offsetHeight,c.dom.clientHeight);if(!b){b=parseInt(c.getStyle("height"),10)||0;if(!c.isBorderBox()){b+=c.getFrameWidth("tb")}}return b},getComputedWidth:function(){var b=Math.max(this.dom.offsetWidth,this.dom.clientWidth);if(!b){b=parseInt(this.getStyle("width"),10)||0;if(!this.isBorderBox()){b+=this.getFrameWidth("lr")}}return b},getFrameWidth:function(c,b){return b&&this.isBorderBox()?0:(this.getPadding(c)+this.getBorderWidth(c))},addClassOnOver:function(b){this.hover(function(){Ext.fly(this,a).addClass(b)},function(){Ext.fly(this,a).removeClass(b)});return this},addClassOnFocus:function(b){this.on("focus",function(){Ext.fly(this,a).addClass(b)},this.dom);this.on("blur",function(){Ext.fly(this,a).removeClass(b)},this.dom);return this},addClassOnClick:function(b){var c=this.dom;this.on("mousedown",function(){Ext.fly(c,a).addClass(b);var g=Ext.getDoc(),e=function(){Ext.fly(c,a).removeClass(b);g.removeListener("mouseup",e)};g.on("mouseup",e)});return this},getViewSize:function(){var e=document,g=this.dom,c=Ext.lib.Dom,b=(g==e||g==e.body);return{width:(b?c.getViewWidth():g.clientWidth),height:(b?c.getViewHeight():g.clientHeight)}},getSize:function(b){return{width:this.getWidth(b),height:this.getHeight(b)}},repaint:function(){var b=this.dom;this.addClass("x-repaint");setTimeout(function(){Ext.fly(b).removeClass("x-repaint")},1);return this},unselectable:function(){this.dom.unselectable="on";return this.swallowEvent("selectstart",true).applyStyles("-moz-user-select:none;-khtml-user-select:none;").addClass("x-unselectable")},getMargins:function(c){var d=this,b,e={t:"top",l:"left",r:"right",b:"bottom"},g={};if(!c){for(b in d.margins){g[e[b]]=parseInt(d.getStyle(d.margins[b]),10)||0}return g}else{return d.addStyles.call(d,c,d.margins)}}}}());(function(){var a=Ext.lib.Dom,b="left",g="right",d="top",i="bottom",h="position",c="static",e="relative",j="auto",k="z-index";function l(n,m,o){return this.preanim&&!!m?this.preanim(n,o):false}Ext.Element.addMethods({getX:function(){return a.getX(this.dom)},getY:function(){return a.getY(this.dom)},getXY:function(){return a.getXY(this.dom)},getOffsetsTo:function(m){var p=this.getXY(),n=Ext.fly(m,"_internal").getXY();return[p[0]-n[0],p[1]-n[1]]},setX:function(m,n){return this.setXY([m,this.getY()],l.call(this,arguments,n,1))},setY:function(n,m){return this.setXY([this.getX(),n],l.call(this,arguments,m,1))},setLeft:function(m){this.setStyle(b,this.addUnits(m));return this},setTop:function(m){this.setStyle(d,this.addUnits(m));return this},setRight:function(m){this.setStyle(g,this.addUnits(m));return this},setBottom:function(m){this.setStyle(i,this.addUnits(m));return this},setXY:function(o,m){var n=this;if(!m||!n.anim){a.setXY(n.dom,o)}else{n.anim({points:{to:o}},n.preanim(arguments,1),"motion")}return n},setLocation:function(m,o,n){return this.setXY([m,o],l.call(this,arguments,n,2))},moveTo:function(m,o,n){return this.setXY([m,o],l.call(this,arguments,n,2))},getLeft:function(m){return !m?this.getX():parseInt(this.getStyle(b),10)||0},getRight:function(m){var n=this;return !m?n.getX()+n.getWidth():(n.getLeft(true)+n.getWidth())||0},getTop:function(m){return !m?this.getY():parseInt(this.getStyle(d),10)||0},getBottom:function(m){var n=this;return !m?n.getY()+n.getHeight():(n.getTop(true)+n.getHeight())||0},position:function(q,p,m,o){var n=this;if(!q&&n.isStyle(h,c)){n.setStyle(h,e)}else{if(q){n.setStyle(h,q)}}if(p){n.setStyle(k,p)}if(m||o){n.setXY([m||false,o||false])}},clearPositioning:function(m){m=m||"";this.setStyle({left:m,right:m,top:m,bottom:m,"z-index":"",position:c});return this},getPositioning:function(){var m=this.getStyle(b);var n=this.getStyle(d);return{position:this.getStyle(h),left:m,right:m?"":this.getStyle(g),top:n,bottom:n?"":this.getStyle(i),"z-index":this.getStyle(k)}},setPositioning:function(m){var o=this,n=o.dom.style;o.setStyle(m);if(m.right==j){n.right=""}if(m.bottom==j){n.bottom=""}return o},translatePoints:function(m,u){u=isNaN(m[1])?u:m[1];m=isNaN(m[0])?m:m[0];var q=this,r=q.isStyle(h,e),s=q.getXY(),n=parseInt(q.getStyle(b),10),p=parseInt(q.getStyle(d),10);n=!isNaN(n)?n:(r?0:q.dom.offsetLeft);p=!isNaN(p)?p:(r?0:q.dom.offsetTop);return{left:(m-s[0]+n),top:(u-s[1]+p)}},animTest:l})})();Ext.Element.addMethods({setBox:function(e,g,b){var d=this,a=e.width,c=e.height;if((g&&!d.autoBoxAdjust)&&!d.isBorderBox()){a-=(d.getBorderWidth("lr")+d.getPadding("lr"));c-=(d.getBorderWidth("tb")+d.getPadding("tb"))}d.setBounds(e.x,e.y,a,c,d.animTest.call(d,arguments,b,2));return d},getBox:function(j,p){var m=this,v,e,o,d=m.getBorderWidth,q=m.getPadding,g,a,u,n;if(!p){v=m.getXY()}else{e=parseInt(m.getStyle("left"),10)||0;o=parseInt(m.getStyle("top"),10)||0;v=[e,o]}var c=m.dom,s=c.offsetWidth,i=c.offsetHeight,k;if(!j){k={x:v[0],y:v[1],0:v[0],1:v[1],width:s,height:i}}else{g=d.call(m,"l")+q.call(m,"l");a=d.call(m,"r")+q.call(m,"r");u=d.call(m,"t")+q.call(m,"t");n=d.call(m,"b")+q.call(m,"b");k={x:v[0]+g,y:v[1]+u,0:v[0]+g,1:v[1]+u,width:s-(g+a),height:i-(u+n)}}k.right=k.x+k.width;k.bottom=k.y+k.height;return k},move:function(j,b,c){var g=this,m=g.getXY(),k=m[0],i=m[1],d=[k-b,i],l=[k+b,i],h=[k,i-b],a=[k,i+b],e={l:d,left:d,r:l,right:l,t:h,top:h,up:h,b:a,bottom:a,down:a};j=j.toLowerCase();g.moveTo(e[j][0],e[j][1],g.animTest.call(g,arguments,c,2))},setLeftTop:function(d,c){var b=this,a=b.dom.style;a.left=b.addUnits(d);a.top=b.addUnits(c);return b},getRegion:function(){return Ext.lib.Dom.getRegion(this.dom)},setBounds:function(b,g,d,a,c){var e=this;if(!c||!e.anim){e.setSize(d,a);e.setLocation(b,g)}else{e.anim({points:{to:[b,g]},width:{to:e.adjustWidth(d)},height:{to:e.adjustHeight(a)}},e.preanim(arguments,4),"motion")}return e},setRegion:function(b,a){return this.setBounds(b.left,b.top,b.right-b.left,b.bottom-b.top,this.animTest.call(this,arguments,a,1))}});Ext.Element.addMethods({isScrollable:function(){var a=this.dom;return a.scrollHeight>a.clientHeight||a.scrollWidth>a.clientWidth},scrollTo:function(a,b){this.dom["scroll"+(/top/i.test(a)?"Top":"Left")]=b;return this},getScroll:function(){var i=this.dom,h=document,a=h.body,c=h.documentElement,b,g,e;if(i==h||i==a){if(Ext.isIE&&Ext.isStrict){b=c.scrollLeft;g=c.scrollTop}else{b=window.pageXOffset;g=window.pageYOffset}e={left:b||(a?a.scrollLeft:0),top:g||(a?a.scrollTop:0)}}else{e={left:i.scrollLeft,top:i.scrollTop}}return e}});Ext.Element.addMethods({scrollTo:function(c,e,b){var a=/top/i,h="scroll"+(a.test(c)?"Top":"Left"),d=this,g=d.dom;if(!b||!d.anim){g[h]=e}else{d.anim({scroll:{to:a.test(h)?[g[h],e]:[e,g[h]]}},d.preanim(arguments,2),"scroll")}return d},scrollIntoView:function(e,i){var p=Ext.getDom(e)||Ext.getBody().dom,h=this.dom,g=this.getOffsetsTo(p),k=g[0]+p.scrollLeft,u=g[1]+p.scrollTop,q=u+h.offsetHeight,d=k+h.offsetWidth,a=p.clientHeight,m=parseInt(p.scrollTop,10),s=parseInt(p.scrollLeft,10),j=m+a,n=s+p.clientWidth;if(h.offsetHeight>a||u<m){p.scrollTop=u}else{if(q>j){p.scrollTop=q-a}}p.scrollTop=p.scrollTop;if(i!==false){if(h.offsetWidth>p.clientWidth||k<s){p.scrollLeft=k}else{if(d>n){p.scrollLeft=d-p.clientWidth}}p.scrollLeft=p.scrollLeft}return this},scrollChildIntoView:function(b,a){Ext.fly(b,"_scrollChildIntoView").scrollIntoView(this,a)},scroll:function(m,b,d){if(!this.isScrollable()){return}var e=this.dom,g=e.scrollLeft,p=e.scrollTop,n=e.scrollWidth,k=e.scrollHeight,i=e.clientWidth,a=e.clientHeight,c=false,o,j={l:Math.min(g+b,n-i),r:o=Math.max(g-b,0),t:Math.max(p-b,0),b:Math.min(p+b,k-a)};j.d=j.b;j.u=j.t;m=m.substr(0,1);if((o=j[m])>-1){c=true;this.scrollTo(m=="l"||m=="r"?"left":"top",o,this.preanim(arguments,2))}return c}});Ext.Element.VISIBILITY=1;Ext.Element.DISPLAY=2;Ext.Element.addMethods(function(){var h="visibility",d="display",b="hidden",j="none",a="originalDisplay",c="visibilityMode",e=Ext.Element.DISPLAY,g=Ext.Element.data,i=function(m){var l=g(m,a);if(l===undefined){g(m,a,l="")}return l},k=function(n){var l=g(n,c);if(l===undefined){g(n,c,l=1)}return l};return{originalDisplay:"",visibilityMode:1,setVisibilityMode:function(l){g(this.dom,c,l);return this},animate:function(m,o,n,p,l){this.anim(m,{duration:o,callback:n,easing:p},l);return this},anim:function(o,p,m,r,n,l){m=m||"run";p=p||{};var q=this,s=Ext.lib.Anim[m](q.dom,o,(p.duration||r)||0.35,(p.easing||n)||"easeOut",function(){if(l){l.call(q)}if(p.callback){p.callback.call(p.scope||q,q,p)}},q);p.anim=s;return s},preanim:function(l,m){return !l[m]?false:(Ext.isObject(l[m])?l[m]:{duration:l[m+1],callback:l[m+2],easing:l[m+3]})},isVisible:function(){return !this.isStyle(h,b)&&!this.isStyle(d,j)},setVisible:function(p,m){var n=this,o=n.dom,l=k(this.dom)==e;if(!m||!n.anim){if(l){n.setDisplayed(p)}else{n.fixDisplay();o.style.visibility=p?"visible":b}}else{if(p){n.setOpacity(0.01);n.setVisible(true)}n.anim({opacity:{to:(p?1:0)}},n.preanim(arguments,1),null,0.35,"easeIn",function(){if(!p){o.style[l?d:h]=(l)?j:b;Ext.fly(o).setOpacity(1)}})}return n},toggle:function(l){var m=this;m.setVisible(!m.isVisible(),m.preanim(arguments,0));return m},setDisplayed:function(l){if(typeof l=="boolean"){l=l?i(this.dom):j}this.setStyle(d,l);return this},fixDisplay:function(){var l=this;if(l.isStyle(d,j)){l.setStyle(h,b);l.setStyle(d,i(this.dom));if(l.isStyle(d,j)){l.setStyle(d,"block")}}},hide:function(l){this.setVisible(false,this.preanim(arguments,0));return this},show:function(l){this.setVisible(true,this.preanim(arguments,0));return this}}}());Ext.Element.addMethods(function(){var d="visibility",b="display",a="hidden",h="none",c="x-masked",g="x-masked-relative",e=Ext.Element.data;return{isVisible:function(i){var j=!this.isStyle(d,a)&&!this.isStyle(b,h),k=this.dom.parentNode;if(i!==true||!j){return j}while(k&&!/body/i.test(k.tagName)){if(!Ext.fly(k,"_isVisible").isVisible()){return false}k=k.parentNode}return true},isDisplayed:function(){return !this.isStyle(b,h)},enableDisplayMode:function(i){this.setVisibilityMode(Ext.Element.DISPLAY);if(!Ext.isEmpty(i)){e(this.dom,"originalDisplay",i)}return this},mask:function(j,n){var p=this,l=p.dom,o=Ext.DomHelper,m="ext-el-mask-msg",i,q;if(p.getStyle("position")=="static"){p.addClass(g)}if((i=e(l,"maskMsg"))){i.remove()}if((i=e(l,"mask"))){i.remove()}q=o.append(l,{cls:"ext-el-mask"},true);e(l,"mask",q);p.addClass(c);q.setDisplayed(true);if(typeof j=="string"){var k=o.append(l,{cls:m,cn:{tag:"div"}},true);e(l,"maskMsg",k);k.dom.className=n?m+" "+n:m;k.dom.firstChild.innerHTML=j;k.setDisplayed(true);k.center(p)}if(Ext.isIE&&!(Ext.isIE7&&Ext.isStrict)&&p.getStyle("height")=="auto"){q.setSize(undefined,p.getHeight())}return q},unmask:function(){var k=this,l=k.dom,i=e(l,"mask"),j=e(l,"maskMsg");if(i){if(j){j.remove();e(l,"maskMsg",undefined)}i.remove();e(l,"mask",undefined)}k.removeClass([c,g])},isMasked:function(){var i=e(this.dom,"mask");return i&&i.isVisible()},createShim:function(){var i=document.createElement("iframe"),j;i.frameBorder="0";i.className="ext-shim";if(Ext.isIE&&Ext.isSecure){i.src=Ext.SSL_SECURE_URL}j=Ext.get(this.dom.parentNode.insertBefore(i,this.dom));j.autoBoxAdjust=false;return j}}}());Ext.Element.addMethods({addKeyListener:function(b,d,c){var a;if(!Ext.isObject(b)||Ext.isArray(b)){a={key:b,fn:d,scope:c}}else{a={key:b.key,shift:b.shift,ctrl:b.ctrl,alt:b.alt,fn:d,scope:c}}return new Ext.KeyMap(this,a)},addKeyMap:function(a){return new Ext.KeyMap(this,a)}});(function(){var y=null,A=undefined,k=true,t=false,j="setX",h="setY",a="setXY",n="left",l="bottom",s="top",m="right",q="height",g="width",i="points",w="hidden",z="absolute",u="visible",e="motion",o="position",r="easeOut",d=new Ext.Element.Flyweight(),v={},x=function(B){return B||{}},p=function(B){d.dom=B;d.id=Ext.id(B);return d},c=function(B){if(!v[B]){v[B]=[]}return v[B]},b=function(C,B){v[C]=B};Ext.enableFx=k;Ext.Fx={switchStatements:function(C,D,B){return D.apply(this,B[C])},slideIn:function(H,E){E=x(E);var J=this,G=J.dom,M=G.style,O,B,L,D,C,M,I,N,K,F;H=H||"t";J.queueFx(E,function(){O=p(G).getXY();p(G).fixDisplay();B=p(G).getFxRestore();L={x:O[0],y:O[1],0:O[0],1:O[1],width:G.offsetWidth,height:G.offsetHeight};L.right=L.x+L.width;L.bottom=L.y+L.height;p(G).setWidth(L.width).setHeight(L.height);D=p(G).fxWrap(B.pos,E,w);M.visibility=u;M.position=z;function P(){p(G).fxUnwrap(D,B.pos,E);M.width=B.width;M.height=B.height;p(G).afterFx(E)}N={to:[L.x,L.y]};K={to:L.width};F={to:L.height};function Q(U,R,V,S,X,Z,ac,ab,aa,W,T){var Y={};p(U).setWidth(V).setHeight(S);if(p(U)[X]){p(U)[X](Z)}R[ac]=R[ab]="0";if(aa){Y.width=aa}if(W){Y.height=W}if(T){Y.points=T}return Y}I=p(G).switchStatements(H.toLowerCase(),Q,{t:[D,M,L.width,0,y,y,n,l,y,F,y],l:[D,M,0,L.height,y,y,m,s,K,y,y],r:[D,M,L.width,L.height,j,L.right,n,s,y,y,N],b:[D,M,L.width,L.height,h,L.bottom,n,s,y,F,N],tl:[D,M,0,0,y,y,m,l,K,F,N],bl:[D,M,0,0,h,L.y+L.height,m,s,K,F,N],br:[D,M,0,0,a,[L.right,L.bottom],n,s,K,F,N],tr:[D,M,0,0,j,L.x+L.width,n,l,K,F,N]});M.visibility=u;p(D).show();arguments.callee.anim=p(D).fxanim(I,E,e,0.5,r,P)});return J},slideOut:function(F,D){D=x(D);var H=this,E=H.dom,K=E.style,L=H.getXY(),C,B,I,J,G={to:0};F=F||"t";H.queueFx(D,function(){B=p(E).getFxRestore();I={x:L[0],y:L[1],0:L[0],1:L[1],width:E.offsetWidth,height:E.offsetHeight};I.right=I.x+I.width;I.bottom=I.y+I.height;p(E).setWidth(I.width).setHeight(I.height);C=p(E).fxWrap(B.pos,D,u);K.visibility=u;K.position=z;p(C).setWidth(I.width).setHeight(I.height);function M(){D.useDisplay?p(E).setDisplayed(t):p(E).hide();p(E).fxUnwrap(C,B.pos,D);K.width=B.width;K.height=B.height;p(E).afterFx(D)}function N(O,W,U,X,S,V,R,T,Q){var P={};O[W]=O[U]="0";P[X]=S;if(V){P[V]=R}if(T){P[T]=Q}return P}J=p(E).switchStatements(F.toLowerCase(),N,{t:[K,n,l,q,G],l:[K,m,s,g,G],r:[K,n,s,g,G,i,{to:[I.right,I.y]}],b:[K,n,s,q,G,i,{to:[I.x,I.bottom]}],tl:[K,m,l,g,G,q,G],bl:[K,m,s,g,G,q,G,i,{to:[I.x,I.bottom]}],br:[K,n,s,g,G,q,G,i,{to:[I.x+I.width,I.bottom]}],tr:[K,n,l,g,G,q,G,i,{to:[I.right,I.y]}]});arguments.callee.anim=p(C).fxanim(J,D,e,0.5,r,M)});return H},puff:function(H){H=x(H);var F=this,G=F.dom,C=G.style,D,B,E;F.queueFx(H,function(){D=p(G).getWidth();B=p(G).getHeight();p(G).clearOpacity();p(G).show();E=p(G).getFxRestore();function I(){H.useDisplay?p(G).setDisplayed(t):p(G).hide();p(G).clearOpacity();p(G).setPositioning(E.pos);C.width=E.width;C.height=E.height;C.fontSize="";p(G).afterFx(H)}arguments.callee.anim=p(G).fxanim({width:{to:p(G).adjustWidth(D*2)},height:{to:p(G).adjustHeight(B*2)},points:{by:[-D*0.5,-B*0.5]},opacity:{to:0},fontSize:{to:200,unit:"%"}},H,e,0.5,r,I)});return F},switchOff:function(F){F=x(F);var D=this,E=D.dom,B=E.style,C;D.queueFx(F,function(){p(E).clearOpacity();p(E).clip();C=p(E).getFxRestore();function G(){F.useDisplay?p(E).setDisplayed(t):p(E).hide();p(E).clearOpacity();p(E).setPositioning(C.pos);B.width=C.width;B.height=C.height;p(E).afterFx(F)}p(E).fxanim({opacity:{to:0.3}},y,y,0.1,y,function(){p(E).clearOpacity();(function(){p(E).fxanim({height:{to:1},points:{by:[0,p(E).getHeight()*0.5]}},F,e,0.3,"easeIn",G)}).defer(100)})});return D},highlight:function(D,H){H=x(H);var F=this,G=F.dom,B=H.attr||"backgroundColor",C={},E;F.queueFx(H,function(){p(G).clearOpacity();p(G).show();function I(){G.style[B]=E;p(G).afterFx(H)}E=G.style[B];C[B]={from:D||"ffff9c",to:H.endColor||p(G).getColor(B)||"ffffff"};arguments.callee.anim=p(G).fxanim(C,H,"color",1,"easeIn",I)});return F},frame:function(B,E,H){H=x(H);var D=this,G=D.dom,C,F;D.queueFx(H,function(){B=B||"#C3DAF9";if(B.length==6){B="#"+B}E=E||1;p(G).show();var L=p(G).getXY(),J={x:L[0],y:L[1],0:L[0],1:L[1],width:G.offsetWidth,height:G.offsetHeight},I=function(){C=p(document.body||document.documentElement).createChild({style:{visbility:w,position:z,"z-index":35000,border:"0px solid "+B}});return C.queueFx({},K)};arguments.callee.anim={isAnimated:true,stop:function(){E=0;C.stopFx()}};function K(){var M=Ext.isBorderBox?2:1;F=C.anim({top:{from:J.y,to:J.y-20},left:{from:J.x,to:J.x-20},borderWidth:{from:0,to:10},opacity:{from:1,to:0},height:{from:J.height,to:J.height+20*M},width:{from:J.width,to:J.width+20*M}},{duration:H.duration||1,callback:function(){C.remove();--E>0?I():p(G).afterFx(H)}});arguments.callee.anim={isAnimated:true,stop:function(){F.stop()}}}I()});return D},pause:function(D){var C=this.dom,B;this.queueFx({},function(){B=setTimeout(function(){p(C).afterFx({})},D*1000);arguments.callee.anim={isAnimated:true,stop:function(){clearTimeout(B);p(C).afterFx({})}}});return this},fadeIn:function(D){D=x(D);var B=this,C=B.dom,E=D.endOpacity||1;B.queueFx(D,function(){p(C).setOpacity(0);p(C).fixDisplay();C.style.visibility=u;arguments.callee.anim=p(C).fxanim({opacity:{to:E}},D,y,0.5,r,function(){if(E==1){p(C).clearOpacity()}p(C).afterFx(D)})});return B},fadeOut:function(E){E=x(E);var C=this,D=C.dom,B=D.style,F=E.endOpacity||0;C.queueFx(E,function(){arguments.callee.anim=p(D).fxanim({opacity:{to:F}},E,y,0.5,r,function(){if(F==0){Ext.Element.data(D,"visibilityMode")==Ext.Element.DISPLAY||E.useDisplay?B.display="none":B.visibility=w;p(D).clearOpacity()}p(D).afterFx(E)})});return C},scale:function(B,C,D){this.shift(Ext.apply({},D,{width:B,height:C}));return this},shift:function(D){D=x(D);var C=this.dom,B={};this.queueFx(D,function(){for(var E in D){if(D[E]!=A){B[E]={to:D[E]}}}B.width?B.width.to=p(C).adjustWidth(D.width):B;B.height?B.height.to=p(C).adjustWidth(D.height):B;if(B.x||B.y||B.xy){B.points=B.xy||{to:[B.x?B.x.to:p(C).getX(),B.y?B.y.to:p(C).getY()]}}arguments.callee.anim=p(C).fxanim(B,D,e,0.35,r,function(){p(C).afterFx(D)})});return this},ghost:function(E,C){C=x(C);var G=this,D=G.dom,J=D.style,H={opacity:{to:0},points:{}},K=H.points,B,I,F;E=E||"b";G.queueFx(C,function(){B=p(D).getFxRestore();I=p(D).getWidth();F=p(D).getHeight();function L(){C.useDisplay?p(D).setDisplayed(t):p(D).hide();p(D).clearOpacity();p(D).setPositioning(B.pos);J.width=B.width;J.height=B.height;p(D).afterFx(C)}K.by=p(D).switchStatements(E.toLowerCase(),function(N,M){return[N,M]},{t:[0,-F],l:[-I,0],r:[I,0],b:[0,F],tl:[-I,-F],bl:[-I,F],br:[I,F],tr:[I,-F]});arguments.callee.anim=p(D).fxanim(H,C,e,0.5,r,L)});return G},syncFx:function(){var B=this;B.fxDefaults=Ext.apply(B.fxDefaults||{},{block:t,concurrent:k,stopFx:t});return B},sequenceFx:function(){var B=this;B.fxDefaults=Ext.apply(B.fxDefaults||{},{block:t,concurrent:t,stopFx:t});return B},nextFx:function(){var B=c(this.dom.id)[0];if(B){B.call(this)}},hasActiveFx:function(){return c(this.dom.id)[0]},stopFx:function(B){var C=this,E=C.dom.id;if(C.hasActiveFx()){var D=c(E)[0];if(D&&D.anim){if(D.anim.isAnimated){b(E,[D]);D.anim.stop(B!==undefined?B:k)}else{b(E,[])}}}return C},beforeFx:function(B){if(this.hasActiveFx()&&!B.concurrent){if(B.stopFx){this.stopFx();return k}return t}return k},hasFxBlock:function(){var B=c(this.dom.id);return B&&B[0]&&B[0].block},queueFx:function(E,B){var C=this;if(!C.hasFxBlock()){Ext.applyIf(E,C.fxDefaults);if(!E.concurrent){var D=C.beforeFx(E);B.block=E.block;c(C.dom.id).push(B);if(D){C.nextFx()}}else{B.call(C)}}return C},fxWrap:function(H,F,D){var E=this.dom,C,B;if(!F.wrap||!(C=Ext.getDom(F.wrap))){if(F.fixPosition){B=p(E).getXY()}var G=document.createElement("div");G.style.visibility=D;C=E.parentNode.insertBefore(G,E);p(C).setPositioning(H);if(p(C).isStyle(o,"static")){p(C).position("relative")}p(E).clearPositioning("auto");p(C).clip();C.appendChild(E);if(B){p(C).setXY(B)}}return C},fxUnwrap:function(B,E,D){var C=this.dom;p(C).clearPositioning();p(C).setPositioning(E);if(!D.wrap){B.parentNode.insertBefore(C,B);p(B).remove()}},getFxRestore:function(){var B=this.dom.style;return{pos:this.getPositioning(),width:B.width,height:B.height}},afterFx:function(C){var B=this.dom,E=B.id,D=!C.concurrent;if(C.afterStyle){p(B).setStyle(C.afterStyle)}if(C.afterCls){p(B).addClass(C.afterCls)}if(C.remove==k){p(B).remove()}if(D){c(E).shift()}if(C.callback){C.callback.call(C.scope,p(B))}if(D){p(B).nextFx()}},fxanim:function(E,F,C,G,D,B){C=C||"run";F=F||{};var H=Ext.lib.Anim[C](this.dom,E,(F.duration||G)||0.35,(F.easing||D)||r,B,this);F.anim=H;return H}};Ext.Fx.resize=Ext.Fx.scale;Ext.Element.addMethods(Ext.Fx)})();Ext.CompositeElementLite=function(b,a){this.elements=[];this.add(b,a);this.el=new Ext.Element.Flyweight()};Ext.CompositeElementLite.prototype={isComposite:true,getCount:function(){return this.elements.length},add:function(b){if(b){if(Ext.isArray(b)){this.elements=this.elements.concat(b)}else{var a=this.elements;Ext.each(b,function(c){a.push(c)})}}return this},invoke:function(d,a){var b=this.elements,c=this.el;Ext.each(b,function(g){c.dom=g;Ext.Element.prototype[d].apply(c,a)});return this},item:function(a){var b=this;if(!b.elements[a]){return null}b.el.dom=b.elements[a];return b.el},addListener:function(a,d,c,b){Ext.each(this.elements,function(g){Ext.EventManager.on(g,a,d,c||g,b)});return this},each:function(c,b){var d=this,a=d.el;Ext.each(d.elements,function(h,g){a.dom=h;return c.call(b||a,a,d,g)});return d},indexOf:function(a){return this.elements.indexOf(Ext.getDom(a))},replaceElement:function(e,c,a){var b=!isNaN(e)?e:this.indexOf(e),g;if(b>-1){c=Ext.getDom(c);if(a){g=this.elements[b];g.parentNode.insertBefore(c,g);Ext.removeNode(g)}this.elements.splice(b,1,c)}return this},clear:function(){this.elements=[]}};Ext.CompositeElementLite.prototype.on=Ext.CompositeElementLite.prototype.addListener;(function(){var c,b=Ext.Element.prototype,a=Ext.CompositeElementLite.prototype;for(c in b){if(Ext.isFunction(b[c])){(function(d){a[d]=a[d]||function(){return this.invoke(d,arguments)}}).call(a,c)}}})();if(Ext.DomQuery){Ext.Element.selectorFunction=Ext.DomQuery.select}Ext.Element.select=function(a,d,b){var c;if(typeof a=="string"){c=Ext.Element.selectorFunction(a,b)}else{if(a.length!==undefined){c=a}else{throw"Invalid selector"}}return new Ext.CompositeElementLite(c)};Ext.select=Ext.Element.select;Ext.apply(Ext.CompositeElementLite.prototype,{addElements:function(c,a){if(!c){return this}if(typeof c=="string"){c=Ext.Element.selectorFunction(c,a)}var b=this.elements;Ext.each(c,function(d){b.push(Ext.get(d))});return this},fill:function(a){this.elements=[];this.add(a);return this},first:function(){return this.item(0)},last:function(){return this.item(this.getCount()-1)},contains:function(a){return this.indexOf(a)!=-1},filter:function(a){var b=[];this.each(function(c){if(c.is(a)){b[b.length]=c.dom}});this.fill(b);return this},removeElement:function(d,e){var c=this,a=this.elements,b;Ext.each(d,function(g){if((b=(a[g]||a[g=c.indexOf(g)]))){if(e){if(b.dom){b.remove()}else{Ext.removeNode(b)}}a.splice(g,1)}});return this}});Ext.CompositeElement=function(b,a){this.elements=[];this.add(b,a)};Ext.extend(Ext.CompositeElement,Ext.CompositeElementLite,{invoke:function(b,a){Ext.each(this.elements,function(c){Ext.Element.prototype[b].apply(c,a)});return this},add:function(c,a){if(!c){return this}if(typeof c=="string"){c=Ext.Element.selectorFunction(c,a)}var b=this.elements;Ext.each(c,function(d){b.push(Ext.get(d))});return this},item:function(a){return this.elements[a]||null},indexOf:function(a){return this.elements.indexOf(Ext.get(a))},filter:function(a){var c=this,b=[];Ext.each(c.elements,function(d){if(d.is(a)){b.push(Ext.get(d))}});c.elements=b;return c},each:function(b,a){Ext.each(this.elements,function(d,c){return b.call(a||d,d,this,c)},this);return this}});Ext.Element.select=function(a,d,b){var c;if(typeof a=="string"){c=Ext.Element.selectorFunction(a,b)}else{if(a.length!==undefined){c=a}else{throw"Invalid selector"}}return(d===true)?new Ext.CompositeElement(c):new Ext.CompositeElementLite(c)};Ext.select=Ext.Element.select;(function(){var c="beforerequest",l="requestcomplete",k="requestexception",e=undefined,i="load",h="POST",j="GET",g=window;Ext.data.Connection=function(m){Ext.apply(this,m);this.addEvents(c,l,k);Ext.data.Connection.superclass.constructor.call(this)};function b(m){this.transId=false;var n=m.argument.options;m.argument=n?n.argument:null;this.fireEvent(l,this,m,n);if(n.success){n.success.call(n.scope,m,n)}if(n.callback){n.callback.call(n.scope,n,true,m)}}function d(m,o){this.transId=false;var n=m.argument.options;m.argument=n?n.argument:null;this.fireEvent(k,this,m,n,o);if(n.failure){n.failure.call(n.scope,m,n)}if(n.callback){n.callback.call(n.scope,n,false,m)}}function a(t,m,n){var p=Ext.id(),z=document,u=z.createElement("iframe"),q=Ext.getDom(t.form),y=[],x,s="multipart/form-data",r={target:q.target,method:q.method,encoding:q.encoding,enctype:q.enctype,action:q.action};Ext.apply(u,{id:p,name:p,className:"x-hidden",src:Ext.SSL_SECURE_URL});z.body.appendChild(u);if(Ext.isIE){document.frames[p].name=p}Ext.apply(q,{target:p,method:h,enctype:s,encoding:s,action:n||r.action});m=Ext.urlDecode(m,false);for(var w in m){if(m.hasOwnProperty(w)){x=z.createElement("input");x.type="hidden";x.value=m[x.name=w];q.appendChild(x);y.push(x)}}function v(){var B=this,A={responseText:"",responseXML:null,argument:t.argument},E,D;try{E=u.contentWindow.document||u.contentDocument||g.frames[p].document;if(E){if(E.body){if(/textarea/i.test((D=E.body.firstChild||{}).tagName)){A.responseText=D.value}else{A.responseText=E.body.innerHTML}}A.responseXML=E.XMLDocument||E}}catch(C){}Ext.EventManager.removeListener(u,i,v,B);B.fireEvent(l,B,A,t);function o(H,G,F){if(Ext.isFunction(H)){H.apply(G,F)}}o(t.success,t.scope,[A,t]);o(t.callback,t.scope,[t,true,A]);if(!B.debugUploads){setTimeout(function(){Ext.removeNode(u)},100)}}Ext.EventManager.on(u,i,v,this);q.submit();Ext.apply(q,r);Ext.each(y,function(o){Ext.removeNode(o)})}Ext.extend(Ext.data.Connection,Ext.util.Observable,{timeout:30000,autoAbort:false,disableCaching:true,disableCachingParam:"_dc",request:function(s){var v=this;if(v.fireEvent(c,v,s)){if(s.el){if(!Ext.isEmpty(s.indicatorText)){v.indicatorText='<div class="loading-indicator">'+s.indicatorText+"</div>"}if(v.indicatorText){Ext.getDom(s.el).innerHTML=v.indicatorText}s.success=(Ext.isFunction(s.success)?s.success:function(){}).createInterceptor(function(o){Ext.getDom(s.el).innerHTML=o.responseText})}var q=s.params,n=s.url||v.url,m,t={success:b,failure:d,scope:v,argument:{options:s},timeout:s.timeout||v.timeout},r,w;if(Ext.isFunction(q)){q=q.call(s.scope||g,s)}q=Ext.urlEncode(v.extraParams,Ext.isObject(q)?Ext.urlEncode(q):q);if(Ext.isFunction(n)){n=n.call(s.scope||g,s)}if((r=Ext.getDom(s.form))){n=n||r.action;if(s.isUpload||/multipart\/form-data/i.test(r.getAttribute("enctype"))){return a.call(v,s,q,n)}w=Ext.lib.Ajax.serializeForm(r);q=q?(q+"&"+w):w}m=s.method||v.method||((q||s.xmlData||s.jsonData)?h:j);if(m===j&&(v.disableCaching&&s.disableCaching!==false)||s.disableCaching===true){var u=s.disableCachingParam||v.disableCachingParam;n=Ext.urlAppend(n,u+"="+(new Date().getTime()))}s.headers=Ext.apply(s.headers||{},v.defaultHeaders||{});if(s.autoAbort===true||v.autoAbort){v.abort()}if((m==j||s.xmlData||s.jsonData)&&q){n=Ext.urlAppend(n,q);q=""}return(v.transId=Ext.lib.Ajax.request(m,n,t,q,s))}else{return s.callback?s.callback.apply(s.scope,[s,e,e]):null}},isLoading:function(m){return m?Ext.lib.Ajax.isCallInProgress(m):!!this.transId},abort:function(m){if(m||this.isLoading()){Ext.lib.Ajax.abort(m||this.transId)}}})})();Ext.Ajax=new Ext.data.Connection({autoAbort:false,serializeForm:function(a){return Ext.lib.Ajax.serializeForm(a)}});Ext.UpdateManager=Ext.Updater=Ext.extend(Ext.util.Observable,function(){var b="beforeupdate",d="update",c="failure";function a(h){var i=this;i.transaction=null;if(h.argument.form&&h.argument.reset){try{h.argument.form.reset()}catch(j){}}if(i.loadScripts){i.renderer.render(i.el,h,i,g.createDelegate(i,[h]))}else{i.renderer.render(i.el,h,i);g.call(i,h)}}function g(h,i,j){this.fireEvent(i||d,this.el,h);if(Ext.isFunction(h.argument.callback)){h.argument.callback.call(h.argument.scope,this.el,Ext.isEmpty(j)?true:false,h,h.argument.options)}}function e(h){g.call(this,h,c,!!(this.transaction=null))}return{constructor:function(i,h){var j=this;i=Ext.get(i);if(!h&&i.updateManager){return i.updateManager}j.el=i;j.defaultUrl=null;j.addEvents(b,d,c);Ext.apply(j,Ext.Updater.defaults);j.transaction=null;j.refreshDelegate=j.refresh.createDelegate(j);j.updateDelegate=j.update.createDelegate(j);j.formUpdateDelegate=(j.formUpdate||function(){}).createDelegate(j);j.renderer=j.renderer||j.getDefaultRenderer();Ext.Updater.superclass.constructor.call(j)},setRenderer:function(h){this.renderer=h},getRenderer:function(){return this.renderer},getDefaultRenderer:function(){return new Ext.Updater.BasicRenderer()},setDefaultUrl:function(h){this.defaultUrl=h},getEl:function(){return this.el},update:function(i,n,p,l){var k=this,h,j;if(k.fireEvent(b,k.el,i,n)!==false){if(Ext.isObject(i)){h=i;i=h.url;n=n||h.params;p=p||h.callback;l=l||h.discardUrl;j=h.scope;if(!Ext.isEmpty(h.nocache)){k.disableCaching=h.nocache}if(!Ext.isEmpty(h.text)){k.indicatorText='<div class="loading-indicator">'+h.text+"</div>"}if(!Ext.isEmpty(h.scripts)){k.loadScripts=h.scripts}if(!Ext.isEmpty(h.timeout)){k.timeout=h.timeout}}k.showLoading();if(!l){k.defaultUrl=i}if(Ext.isFunction(i)){i=i.call(k)}var m=Ext.apply({},{url:i,params:(Ext.isFunction(n)&&j)?n.createDelegate(j):n,success:a,failure:e,scope:k,callback:undefined,timeout:(k.timeout*1000),disableCaching:k.disableCaching,argument:{options:h,url:i,form:null,callback:p,scope:j||window,params:n}},h);k.transaction=Ext.Ajax.request(m)}},formUpdate:function(k,h,j,l){var i=this;if(i.fireEvent(b,i.el,k,h)!==false){if(Ext.isFunction(h)){h=h.call(i)}k=Ext.getDom(k);i.transaction=Ext.Ajax.request({form:k,url:h,success:a,failure:e,scope:i,timeout:(i.timeout*1000),argument:{url:h,form:k,callback:l,reset:j}});i.showLoading.defer(1,i)}},startAutoRefresh:function(i,j,l,m,h){var k=this;if(h){k.update(j||k.defaultUrl,l,m,true)}if(k.autoRefreshProcId){clearInterval(k.autoRefreshProcId)}k.autoRefreshProcId=setInterval(k.update.createDelegate(k,[j||k.defaultUrl,l,m,true]),i*1000)},stopAutoRefresh:function(){if(this.autoRefreshProcId){clearInterval(this.autoRefreshProcId);delete this.autoRefreshProcId}},isAutoRefreshing:function(){return !!this.autoRefreshProcId},showLoading:function(){if(this.showLoadIndicator){this.el.dom.innerHTML=this.indicatorText}},abort:function(){if(this.transaction){Ext.Ajax.abort(this.transaction)}},isUpdating:function(){return this.transaction?Ext.Ajax.isLoading(this.transaction):false},refresh:function(h){if(this.defaultUrl){this.update(this.defaultUrl,null,h,true)}}}}());Ext.Updater.defaults={timeout:30,disableCaching:false,showLoadIndicator:true,indicatorText:'<div class="loading-indicator">Loading...</div>',loadScripts:false,sslBlankUrl:(Ext.SSL_SECURE_URL||"javascript:false")};Ext.Updater.updateElement=function(d,c,e,b){var a=Ext.get(d).getUpdater();Ext.apply(a,b);a.update(c,e,b?b.callback:null)};Ext.Updater.BasicRenderer=function(){};Ext.Updater.BasicRenderer.prototype={render:function(c,a,b,d){c.update(a.responseText,b.loadScripts,d)}};(function(){Date.useStrict=false;function b(d){var c=Array.prototype.slice.call(arguments,1);return d.replace(/\{(\d+)\}/g,function(e,g){return c[g]})}Date.formatCodeToRegex=function(d,c){var e=Date.parseCodes[d];if(e){e=typeof e=="function"?e():e;Date.parseCodes[d]=e}return e?Ext.applyIf({c:e.c?b(e.c,c||"{0}"):e.c},e):{g:0,c:null,s:Ext.escapeRe(d)}};var a=Date.formatCodeToRegex;Ext.apply(Date,{parseFunctions:{"M$":function(d,c){var e=new RegExp("\\/Date\\(([-+])?(\\d+)(?:[+-]\\d{4})?\\)\\/");var g=(d||"").match(e);return g?new Date(((g[1]||"")+g[2])*1):null}},parseRegexes:[],formatFunctions:{"M$":function(){return"\\/Date("+this.getTime()+")\\/"}},y2kYear:50,MILLI:"ms",SECOND:"s",MINUTE:"mi",HOUR:"h",DAY:"d",MONTH:"mo",YEAR:"y",defaults:{},dayNames:["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"],monthNames:["January","February","March","April","May","June","July","August","September","October","November","December"],monthNumbers:{Jan:0,Feb:1,Mar:2,Apr:3,May:4,Jun:5,Jul:6,Aug:7,Sep:8,Oct:9,Nov:10,Dec:11},getShortMonthName:function(c){return Date.monthNames[c].substring(0,3)},getShortDayName:function(c){return Date.dayNames[c].substring(0,3)},getMonthNumber:function(c){return Date.monthNumbers[c.substring(0,1).toUpperCase()+c.substring(1,3).toLowerCase()]},formatCodes:{d:"String.leftPad(this.getDate(), 2, '0')",D:"Date.getShortDayName(this.getDay())",j:"this.getDate()",l:"Date.dayNames[this.getDay()]",N:"(this.getDay() ? this.getDay() : 7)",S:"this.getSuffix()",w:"this.getDay()",z:"this.getDayOfYear()",W:"String.leftPad(this.getWeekOfYear(), 2, '0')",F:"Date.monthNames[this.getMonth()]",m:"String.leftPad(this.getMonth() + 1, 2, '0')",M:"Date.getShortMonthName(this.getMonth())",n:"(this.getMonth() + 1)",t:"this.getDaysInMonth()",L:"(this.isLeapYear() ? 1 : 0)",o:"(this.getFullYear() + (this.getWeekOfYear() == 1 && this.getMonth() > 0 ? +1 : (this.getWeekOfYear() >= 52 && this.getMonth() < 11 ? -1 : 0)))",Y:"this.getFullYear()",y:"('' + this.getFullYear()).substring(2, 4)",a:"(this.getHours() < 12 ? 'am' : 'pm')",A:"(this.getHours() < 12 ? 'AM' : 'PM')",g:"((this.getHours() % 12) ? this.getHours() % 12 : 12)",G:"this.getHours()",h:"String.leftPad((this.getHours() % 12) ? this.getHours() % 12 : 12, 2, '0')",H:"String.leftPad(this.getHours(), 2, '0')",i:"String.leftPad(this.getMinutes(), 2, '0')",s:"String.leftPad(this.getSeconds(), 2, '0')",u:"String.leftPad(this.getMilliseconds(), 3, '0')",O:"this.getGMTOffset()",P:"this.getGMTOffset(true)",T:"this.getTimezone()",Z:"(this.getTimezoneOffset() * -60)",c:function(){for(var k="Y-m-dTH:i:sP",h=[],g=0,d=k.length;g<d;++g){var j=k.charAt(g);h.push(j=="T"?"'T'":Date.getFormatCode(j))}return h.join(" + ")},U:"Math.round(this.getTime() / 1000)"},isValid:function(o,c,n,k,g,j,e){k=k||0;g=g||0;j=j||0;e=e||0;var l=new Date(o,c-1,n,k,g,j,e);return o==l.getFullYear()&&c==l.getMonth()+1&&n==l.getDate()&&k==l.getHours()&&g==l.getMinutes()&&j==l.getSeconds()&&e==l.getMilliseconds()},parseDate:function(d,g,c){var e=Date.parseFunctions;if(e[g]==null){Date.createParser(g)}return e[g](d,Ext.isDefined(c)?c:Date.useStrict)},getFormatCode:function(d){var c=Date.formatCodes[d];if(c){c=typeof c=="function"?c():c;Date.formatCodes[d]=c}return c||("'"+String.escape(d)+"'")},createFormat:function(h){var g=[],c=false,e="";for(var d=0;d<h.length;++d){e=h.charAt(d);if(!c&&e=="\\"){c=true}else{if(c){c=false;g.push("'"+String.escape(e)+"'")}else{g.push(Date.getFormatCode(e))}}}Date.formatFunctions[h]=new Function("return "+g.join("+"))},createParser:function(){var c=["var dt, y, m, d, h, i, s, ms, o, z, zz, u, v,","def = Date.defaults,","results = String(input).match(Date.parseRegexes[{0}]);","if(results){","{1}","if(u != null){","v = new Date(u * 1000);","}else{","dt = (new Date()).clearTime();","y = y >= 0? y : Ext.num(def.y, dt.getFullYear());","m = m >= 0? m : Ext.num(def.m - 1, dt.getMonth());","d = d >= 0? d : Ext.num(def.d, dt.getDate());","h = h || Ext.num(def.h, dt.getHours());","i = i || Ext.num(def.i, dt.getMinutes());","s = s || Ext.num(def.s, dt.getSeconds());","ms = ms || Ext.num(def.ms, dt.getMilliseconds());","if(z >= 0 && y >= 0){","v = new Date(y, 0, 1, h, i, s, ms);","v = !strict? v : (strict === true && (z <= 364 || (v.isLeapYear() && z <= 365))? v.add(Date.DAY, z) : null);","}else if(strict === true && !Date.isValid(y, m + 1, d, h, i, s, ms)){","v = null;","}else{","v = new Date(y, m, d, h, i, s, ms);","}","}","}","if(v){","if(zz != null){","v = v.add(Date.SECOND, -v.getTimezoneOffset() * 60 - zz);","}else if(o){","v = v.add(Date.MINUTE, -v.getTimezoneOffset() + (sn == '+'? -1 : 1) * (hr * 60 + mn));","}","}","return v;"].join("\n");return function(m){var e=Date.parseRegexes.length,n=1,g=[],l=[],k=false,d="";for(var j=0;j<m.length;++j){d=m.charAt(j);if(!k&&d=="\\"){k=true}else{if(k){k=false;l.push(String.escape(d))}else{var h=a(d,n);n+=h.g;l.push(h.s);if(h.g&&h.c){g.push(h.c)}}}}Date.parseRegexes[e]=new RegExp("^"+l.join("")+"$","i");Date.parseFunctions[m]=new Function("input","strict",b(c,e,g.join("")))}}(),parseCodes:{d:{g:1,c:"d = parseInt(results[{0}], 10);\n",s:"(\\d{2})"},j:{g:1,c:"d = parseInt(results[{0}], 10);\n",s:"(\\d{1,2})"},D:function(){for(var c=[],d=0;d<7;c.push(Date.getShortDayName(d)),++d){}return{g:0,c:null,s:"(?:"+c.join("|")+")"}},l:function(){return{g:0,c:null,s:"(?:"+Date.dayNames.join("|")+")"}},N:{g:0,c:null,s:"[1-7]"},S:{g:0,c:null,s:"(?:st|nd|rd|th)"},w:{g:0,c:null,s:"[0-6]"},z:{g:1,c:"z = parseInt(results[{0}], 10);\n",s:"(\\d{1,3})"},W:{g:0,c:null,s:"(?:\\d{2})"},F:function(){return{g:1,c:"m = parseInt(Date.getMonthNumber(results[{0}]), 10);\n",s:"("+Date.monthNames.join("|")+")"}},M:function(){for(var c=[],d=0;d<12;c.push(Date.getShortMonthName(d)),++d){}return Ext.applyIf({s:"("+c.join("|")+")"},a("F"))},m:{g:1,c:"m = parseInt(results[{0}], 10) - 1;\n",s:"(\\d{2})"},n:{g:1,c:"m = parseInt(results[{0}], 10) - 1;\n",s:"(\\d{1,2})"},t:{g:0,c:null,s:"(?:\\d{2})"},L:{g:0,c:null,s:"(?:1|0)"},o:function(){return a("Y")},Y:{g:1,c:"y = parseInt(results[{0}], 10);\n",s:"(\\d{4})"},y:{g:1,c:"var ty = parseInt(results[{0}], 10);\ny = ty > Date.y2kYear ? 1900 + ty : 2000 + ty;\n",s:"(\\d{1,2})"},a:{g:1,c:"if (results[{0}] == 'am') {\nif (h == 12) { h = 0; }\n} else { if (h < 12) { h += 12; }}",s:"(am|pm)"},A:{g:1,c:"if (results[{0}] == 'AM') {\nif (h == 12) { h = 0; }\n} else { if (h < 12) { h += 12; }}",s:"(AM|PM)"},g:function(){return a("G")},G:{g:1,c:"h = parseInt(results[{0}], 10);\n",s:"(\\d{1,2})"},h:function(){return a("H")},H:{g:1,c:"h = parseInt(results[{0}], 10);\n",s:"(\\d{2})"},i:{g:1,c:"i = parseInt(results[{0}], 10);\n",s:"(\\d{2})"},s:{g:1,c:"s = parseInt(results[{0}], 10);\n",s:"(\\d{2})"},u:{g:1,c:"ms = results[{0}]; ms = parseInt(ms, 10)/Math.pow(10, ms.length - 3);\n",s:"(\\d+)"},O:{g:1,c:["o = results[{0}];","var sn = o.substring(0,1),","hr = o.substring(1,3)*1 + Math.floor(o.substring(3,5) / 60),","mn = o.substring(3,5) % 60;","o = ((-12 <= (hr*60 + mn)/60) && ((hr*60 + mn)/60 <= 14))? (sn + String.leftPad(hr, 2, '0') + String.leftPad(mn, 2, '0')) : null;\n"].join("\n"),s:"([+-]\\d{4})"},P:{g:1,c:["o = results[{0}];","var sn = o.substring(0,1),","hr = o.substring(1,3)*1 + Math.floor(o.substring(4,6) / 60),","mn = o.substring(4,6) % 60;","o = ((-12 <= (hr*60 + mn)/60) && ((hr*60 + mn)/60 <= 14))? (sn + String.leftPad(hr, 2, '0') + String.leftPad(mn, 2, '0')) : null;\n"].join("\n"),s:"([+-]\\d{2}:\\d{2})"},T:{g:0,c:null,s:"[A-Z]{1,4}"},Z:{g:1,c:"zz = results[{0}] * 1;\nzz = (-43200 <= zz && zz <= 50400)? zz : null;\n",s:"([+-]?\\d{1,5})"},c:function(){var e=[],c=[a("Y",1),a("m",2),a("d",3),a("h",4),a("i",5),a("s",6),{c:"ms = results[7] || '0'; ms = parseInt(ms, 10)/Math.pow(10, ms.length - 3);\n"},{c:["if(results[8]) {","if(results[8] == 'Z'){","zz = 0;","}else if (results[8].indexOf(':') > -1){",a("P",8).c,"}else{",a("O",8).c,"}","}"].join("\n")}];for(var g=0,d=c.length;g<d;++g){e.push(c[g].c)}return{g:1,c:e.join(""),s:[c[0].s,"(?:","-",c[1].s,"(?:","-",c[2].s,"(?:","(?:T| )?",c[3].s,":",c[4].s,"(?::",c[5].s,")?","(?:(?:\\.|,)(\\d+))?","(Z|(?:[-+]\\d{2}(?::)?\\d{2}))?",")?",")?",")?"].join("")}},U:{g:1,c:"u = parseInt(results[{0}], 10);\n",s:"(-?\\d+)"}}})}());Ext.apply(Date.prototype,{dateFormat:function(a){if(Date.formatFunctions[a]==null){Date.createFormat(a)}return Date.formatFunctions[a].call(this)},getTimezone:function(){return this.toString().replace(/^.* (?:\((.*)\)|([A-Z]{1,4})(?:[\-+][0-9]{4})?(?: -?\d+)?)$/,"$1$2").replace(/[^A-Z]/g,"")},getGMTOffset:function(a){return(this.getTimezoneOffset()>0?"-":"+")+String.leftPad(Math.floor(Math.abs(this.getTimezoneOffset())/60),2,"0")+(a?":":"")+String.leftPad(Math.abs(this.getTimezoneOffset()%60),2,"0")},getDayOfYear:function(){var c=0,b=0,e=this.clone(),a=this.getMonth();for(c=0,e.setMonth(0);c<a;e.setMonth(++c)){b+=e.getDaysInMonth()}return b+this.getDate()-1},getWeekOfYear:function(){var a=86400000,b=7*a;return function(){var d=Date.UTC(this.getFullYear(),this.getMonth(),this.getDate()+3)/a,c=Math.floor(d/7),e=new Date(c*b).getUTCFullYear();return c-Math.floor(Date.UTC(e,0,7)/b)+1}}(),isLeapYear:function(){var a=this.getFullYear();return !!((a&3)==0&&(a%100||(a%400==0&&a)))},getFirstDayOfMonth:function(){var a=(this.getDay()-(this.getDate()-1))%7;return(a<0)?(a+7):a},getLastDayOfMonth:function(){return this.getLastDateOfMonth().getDay()},getFirstDateOfMonth:function(){return new Date(this.getFullYear(),this.getMonth(),1)},getLastDateOfMonth:function(){return new Date(this.getFullYear(),this.getMonth(),this.getDaysInMonth())},getDaysInMonth:function(){var a=[31,28,31,30,31,30,31,31,30,31,30,31];return function(){var b=this.getMonth();return b==1&&this.isLeapYear()?29:a[b]}}(),getSuffix:function(){switch(this.getDate()){case 1:case 21:case 31:return"st";case 2:case 22:return"nd";case 3:case 23:return"rd";default:return"th"}},clone:function(){return new Date(this.getTime())},isDST:function(){return new Date(this.getFullYear(),0,1).getTimezoneOffset()!=this.getTimezoneOffset()},clearTime:function(g){if(g){return this.clone().clearTime()}var b=this.getDate();this.setHours(0);this.setMinutes(0);this.setSeconds(0);this.setMilliseconds(0);if(this.getDate()!=b){for(var a=1,e=this.add(Date.HOUR,a);e.getDate()!=b;a++,e=this.add(Date.HOUR,a)){}this.setDate(b);this.setHours(e.getHours())}return this},add:function(b,c){var e=this.clone();if(!b||c===0){return e}switch(b.toLowerCase()){case Date.MILLI:e.setMilliseconds(this.getMilliseconds()+c);break;case Date.SECOND:e.setSeconds(this.getSeconds()+c);break;case Date.MINUTE:e.setMinutes(this.getMinutes()+c);break;case Date.HOUR:e.setHours(this.getHours()+c);break;case Date.DAY:e.setDate(this.getDate()+c);break;case Date.MONTH:var a=this.getDate();if(a>28){a=Math.min(a,this.getFirstDateOfMonth().add("mo",c).getLastDateOfMonth().getDate())}e.setDate(a);e.setMonth(this.getMonth()+c);break;case Date.YEAR:e.setFullYear(this.getFullYear()+c);break}return e},between:function(c,a){var b=this.getTime();return c.getTime()<=b&&b<=a.getTime()}});Date.prototype.format=Date.prototype.dateFormat;if(Ext.isSafari&&(navigator.userAgent.match(/WebKit\/(\d+)/)[1]||NaN)<420){Ext.apply(Date.prototype,{_xMonth:Date.prototype.setMonth,_xDate:Date.prototype.setDate,setMonth:function(a){if(a<=-1){var d=Math.ceil(-a),c=Math.ceil(d/12),b=(d%12)?12-d%12:0;this.setFullYear(this.getFullYear()-c);return this._xMonth(b)}else{return this._xMonth(a)}},setDate:function(a){return this.setTime(this.getTime()-(this.getDate()-a)*86400000)}})}Ext.util.DelayedTask=function(d,c,a){var e=this,g,b=function(){clearInterval(g);g=null;d.apply(c,a||[])};e.delay=function(i,k,j,h){e.cancel();d=k||d;c=j||c;a=h||a;g=setInterval(b,i)};e.cancel=function(){if(g){clearInterval(g);g=null}}};Ext.util.MixedCollection=function(b,a){this.items=[];this.map={};this.keys=[];this.length=0;this.addEvents("clear","add","replace","remove","sort");this.allowFunctions=b===true;if(a){this.getKey=a}Ext.util.MixedCollection.superclass.constructor.call(this)};Ext.extend(Ext.util.MixedCollection,Ext.util.Observable,{allowFunctions:false,add:function(b,c){if(arguments.length==1){c=arguments[0];b=this.getKey(c)}if(typeof b!="undefined"&&b!==null){var a=this.map[b];if(typeof a!="undefined"){return this.replace(b,c)}this.map[b]=c}this.length++;this.items.push(c);this.keys.push(b);this.fireEvent("add",this.length-1,c,b);return c},getKey:function(a){return a.id},replace:function(c,d){if(arguments.length==1){d=arguments[0];c=this.getKey(d)}var a=this.map[c];if(typeof c=="undefined"||c===null||typeof a=="undefined"){return this.add(c,d)}var b=this.indexOfKey(c);this.items[b]=d;this.map[c]=d;this.fireEvent("replace",c,a,d);return d},addAll:function(e){if(arguments.length>1||Ext.isArray(e)){var b=arguments.length>1?arguments:e;for(var d=0,a=b.length;d<a;d++){this.add(b[d])}}else{for(var c in e){if(this.allowFunctions||typeof e[c]!="function"){this.add(c,e[c])}}}},each:function(e,d){var b=[].concat(this.items);for(var c=0,a=b.length;c<a;c++){if(e.call(d||b[c],b[c],c,a)===false){break}}},eachKey:function(d,c){for(var b=0,a=this.keys.length;b<a;b++){d.call(c||window,this.keys[b],this.items[b],b,a)}},find:function(d,c){for(var b=0,a=this.items.length;b<a;b++){if(d.call(c||window,this.items[b],this.keys[b])){return this.items[b]}}return null},insert:function(a,b,c){if(arguments.length==2){c=arguments[1];b=this.getKey(c)}if(this.containsKey(b)){this.suspendEvents();this.removeKey(b);this.resumeEvents()}if(a>=this.length){return this.add(b,c)}this.length++;this.items.splice(a,0,c);if(typeof b!="undefined"&&b!==null){this.map[b]=c}this.keys.splice(a,0,b);this.fireEvent("add",a,c,b);return c},remove:function(a){return this.removeAt(this.indexOf(a))},removeAt:function(a){if(a<this.length&&a>=0){this.length--;var c=this.items[a];this.items.splice(a,1);var b=this.keys[a];if(typeof b!="undefined"){delete this.map[b]}this.keys.splice(a,1);this.fireEvent("remove",c,b);return c}return false},removeKey:function(a){return this.removeAt(this.indexOfKey(a))},getCount:function(){return this.length},indexOf:function(a){return this.items.indexOf(a)},indexOfKey:function(a){return this.keys.indexOf(a)},item:function(b){var a=this.map[b],c=a!==undefined?a:(typeof b=="number")?this.items[b]:undefined;return !Ext.isFunction(c)||this.allowFunctions?c:null},itemAt:function(a){return this.items[a]},key:function(a){return this.map[a]},contains:function(a){return this.indexOf(a)!=-1},containsKey:function(a){return typeof this.map[a]!="undefined"},clear:function(){this.length=0;this.items=[];this.keys=[];this.map={};this.fireEvent("clear")},first:function(){return this.items[0]},last:function(){return this.items[this.length-1]},_sort:function(m,a,l){var e,g,d=String(a).toUpperCase()=="DESC"?-1:1,j=[],b=this.keys,h=this.items;l=l||function(i,c){return i-c};for(e=0,g=h.length;e<g;e++){j[j.length]={key:b[e],value:h[e],index:e}}j.sort(function(i,c){var k=l(i[m],c[m])*d;if(k===0){k=(i.index<c.index?-1:1)}return k});for(e=0,g=j.length;e<g;e++){h[e]=j[e].value;b[e]=j[e].key}this.fireEvent("sort",this)},sort:function(a,b){this._sort("value",a,b)},keySort:function(a,b){this._sort("key",a,b||function(d,c){var g=String(d).toUpperCase(),e=String(c).toUpperCase();return g>e?1:(g<e?-1:0)})},getRange:function(e,a){var b=this.items;if(b.length<1){return[]}e=e||0;a=Math.min(typeof a=="undefined"?this.length-1:a,this.length-1);var c,d=[];if(e<=a){for(c=e;c<=a;c++){d[d.length]=b[c]}}else{for(c=e;c>=a;c--){d[d.length]=b[c]}}return d},filter:function(c,b,d,a){if(Ext.isEmpty(b,false)){return this.clone()}b=this.createValueMatcher(b,d,a);return this.filterBy(function(e){return e&&b.test(e[c])})},filterBy:function(g,e){var h=new Ext.util.MixedCollection();h.getKey=this.getKey;var b=this.keys,d=this.items;for(var c=0,a=d.length;c<a;c++){if(g.call(e||this,d[c],b[c])){h.add(b[c],d[c])}}return h},findIndex:function(c,b,e,d,a){if(Ext.isEmpty(b,false)){return -1}b=this.createValueMatcher(b,d,a);return this.findIndexBy(function(g){return g&&b.test(g[c])},null,e)},findIndexBy:function(g,e,h){var b=this.keys,d=this.items;for(var c=(h||0),a=d.length;c<a;c++){if(g.call(e||this,d[c],b[c])){return c}}return -1},createValueMatcher:function(b,c,a){if(!b.exec){b=String(b);b=new RegExp((c===true?"":"^")+Ext.escapeRe(b),a?"":"i")}return b},clone:function(){var e=new Ext.util.MixedCollection();var b=this.keys,d=this.items;for(var c=0,a=d.length;c<a;c++){e.add(b[c],d[c])}e.getKey=this.getKey;return e}});Ext.util.MixedCollection.prototype.get=Ext.util.MixedCollection.prototype.item;Ext.util.JSON=new (function(){var useHasOwn=!!{}.hasOwnProperty,isNative=function(){var useNative=null;return function(){if(useNative===null){useNative=Ext.USE_NATIVE_JSON&&window.JSON&&JSON.toString()=="[object JSON]"}return useNative}}(),pad=function(n){return n<10?"0"+n:n},doDecode=function(json){return eval("("+json+")")},doEncode=function(o){if(typeof o=="undefined"||o===null){return"null"}else{if(Ext.isArray(o)){return encodeArray(o)}else{if(Object.prototype.toString.apply(o)==="[object Date]"){return Ext.util.JSON.encodeDate(o)}else{if(typeof o=="string"){return encodeString(o)}else{if(typeof o=="number"){return isFinite(o)?String(o):"null"}else{if(typeof o=="boolean"){return String(o)}else{var a=["{"],b,i,v;for(i in o){if(!useHasOwn||o.hasOwnProperty(i)){v=o[i];switch(typeof v){case"undefined":case"function":case"unknown":break;default:if(b){a.push(",")}a.push(doEncode(i),":",v===null?"null":doEncode(v));b=true}}}a.push("}");return a.join("")}}}}}}},m={"\b":"\\b","\t":"\\t","\n":"\\n","\f":"\\f","\r":"\\r",'"':'\\"',"\\":"\\\\"},encodeString=function(s){if(/["\\\x00-\x1f]/.test(s)){return'"'+s.replace(/([\x00-\x1f\\"])/g,function(a,b){var c=m[b];if(c){return c}c=b.charCodeAt();return"\\u00"+Math.floor(c/16).toString(16)+(c%16).toString(16)})+'"'}return'"'+s+'"'},encodeArray=function(o){var a=["["],b,i,l=o.length,v;for(i=0;i<l;i+=1){v=o[i];switch(typeof v){case"undefined":case"function":case"unknown":break;default:if(b){a.push(",")}a.push(v===null?"null":Ext.util.JSON.encode(v));b=true}}a.push("]");return a.join("")};this.encodeDate=function(o){return'"'+o.getFullYear()+"-"+pad(o.getMonth()+1)+"-"+pad(o.getDate())+"T"+pad(o.getHours())+":"+pad(o.getMinutes())+":"+pad(o.getSeconds())+'"'};this.encode=function(){var ec;return function(o){if(!ec){ec=isNative()?JSON.stringify:doEncode}return ec(o)}}();this.decode=function(){var dc;return function(json){if(!dc){dc=isNative()?JSON.parse:doDecode}return dc(json)}}()})();Ext.encode=Ext.util.JSON.encode;Ext.decode=Ext.util.JSON.decode;Ext.util.Format=function(){var trimRe=/^\s+|\s+$/g;return{ellipsis:function(value,len,word){if(value&&value.length>len){if(word){var vs=value.substr(0,len-2);var index=Math.max(vs.lastIndexOf(" "),vs.lastIndexOf("."),vs.lastIndexOf("!"),vs.lastIndexOf("?"));if(index==-1||index<(len-15)){return value.substr(0,len-3)+"..."}else{return vs.substr(0,index)+"..."}}else{return value.substr(0,len-3)+"..."}}return value},undef:function(value){return value!==undefined?value:""},defaultValue:function(value,defaultValue){return value!==undefined&&value!==""?value:defaultValue},htmlEncode:function(value){return !value?value:String(value).replace(/&/g,"&").replace(/>/g,">").replace(/</g,"<").replace(/"/g,""")},htmlDecode:function(value){return !value?value:String(value).replace(/>/g,">").replace(/</g,"<").replace(/"/g,'"').replace(/&/g,"&")},trim:function(value){return String(value).replace(trimRe,"")},substr:function(value,start,length){return String(value).substr(start,length)},lowercase:function(value){return String(value).toLowerCase()},uppercase:function(value){return String(value).toUpperCase()},capitalize:function(value){return !value?value:value.charAt(0).toUpperCase()+value.substr(1).toLowerCase()},call:function(value,fn){if(arguments.length>2){var args=Array.prototype.slice.call(arguments,2);args.unshift(value);return eval(fn).apply(window,args)}else{return eval(fn).call(window,value)}},usMoney:function(v){v=(Math.round((v-0)*100))/100;v=(v==Math.floor(v))?v+".00":((v*10==Math.floor(v*10))?v+"0":v);v=String(v);var ps=v.split(".");var whole=ps[0];var sub=ps[1]?"."+ps[1]:".00";var r=/(\d+)(\d{3})/;while(r.test(whole)){whole=whole.replace(r,"$1,$2")}v=whole+sub;if(v.charAt(0)=="-"){return"-$"+v.substr(1)}return"$"+v},date:function(v,format){if(!v){return""}if(!Ext.isDate(v)){v=new Date(Date.parse(v))}return v.dateFormat(format||"m/d/Y")},dateRenderer:function(format){return function(v){return Ext.util.Format.date(v,format)}},stripTagsRE:/<\/?[^>]+>/gi,stripTags:function(v){return !v?v:String(v).replace(this.stripTagsRE,"")},stripScriptsRe:/(?:<script.*?>)((\n|\r|.)*?)(?:<\/script>)/ig,stripScripts:function(v){return !v?v:String(v).replace(this.stripScriptsRe,"")},fileSize:function(size){if(size<1024){return size+" bytes"}else{if(size<1048576){return(Math.round(((size*10)/1024))/10)+" KB"}else{return(Math.round(((size*10)/1048576))/10)+" MB"}}},math:function(){var fns={};return function(v,a){if(!fns[a]){fns[a]=new Function("v","return v "+a+";")}return fns[a](v)}}(),round:function(value,precision){var result=Number(value);if(typeof precision=="number"){precision=Math.pow(10,precision);result=Math.round(value*precision)/precision}return result},number:function(v,format){if(!format){return v}v=Ext.num(v,NaN);if(isNaN(v)){return""}var comma=",",dec=".",i18n=false,neg=v<0;v=Math.abs(v);if(format.substr(format.length-2)=="/i"){format=format.substr(0,format.length-2);i18n=true;comma=".";dec=","}var hasComma=format.indexOf(comma)!=-1,psplit=(i18n?format.replace(/[^\d\,]/g,""):format.replace(/[^\d\.]/g,"")).split(dec);if(1<psplit.length){v=v.toFixed(psplit[1].length)}else{if(2<psplit.length){throw ("NumberFormatException: invalid format, formats should have no more than 1 period: "+format)}else{v=v.toFixed(0)}}var fnum=v.toString();if(hasComma){psplit=fnum.split(".");var cnum=psplit[0],parr=[],j=cnum.length,m=Math.floor(j/3),n=cnum.length%3||3;for(var i=0;i<j;i+=n){if(i!=0){n=3}parr[parr.length]=cnum.substr(i,n);m-=1}fnum=parr.join(comma);if(psplit[1]){fnum+=dec+psplit[1]}}return(neg?"-":"")+format.replace(/[\d,?\.?]+/,fnum)},numberRenderer:function(format){return function(v){return Ext.util.Format.number(v,format)}},plural:function(v,s,p){return v+" "+(v==1?s:(p?p:s+"s"))},nl2br:function(v){return v===undefined||v===null?"":v.replace(/\n/g,"<br/>")}}}();Ext.XTemplate=function(){Ext.XTemplate.superclass.constructor.apply(this,arguments);var w=this,i=w.html,p=/<tpl\b[^>]*>((?:(?=([^<]+))\2|<(?!tpl\b[^>]*>))*?)<\/tpl>/,d=/^<tpl\b[^>]*?for="(.*?)"/,t=/^<tpl\b[^>]*?if="(.*?)"/,v=/^<tpl\b[^>]*?exec="(.*?)"/,q,o=0,j=[],n="values",u="parent",k="xindex",l="xcount",e="return ",c="with(values){ ";i=["<tpl>",i,"</tpl>"].join("");while((q=i.match(p))){var b=q[0].match(d),a=q[0].match(t),y=q[0].match(v),g=null,h=null,r=null,x=b&&b[1]?b[1]:"";if(a){g=a&&a[1]?a[1]:null;if(g){h=new Function(n,u,k,l,c+e+(Ext.util.Format.htmlDecode(g))+"; }")}}if(y){g=y&&y[1]?y[1]:null;if(g){r=new Function(n,u,k,l,c+(Ext.util.Format.htmlDecode(g))+"; }")}}if(x){switch(x){case".":x=new Function(n,u,c+e+n+"; }");break;case"..":x=new Function(n,u,c+e+u+"; }");break;default:x=new Function(n,u,c+e+x+"; }")}}j.push({id:o,target:x,exec:r,test:h,body:q[1]||""});i=i.replace(q[0],"{xtpl"+o+"}");++o}Ext.each(j,function(m){w.compileTpl(m)});w.master=j[j.length-1];w.tpls=j};Ext.extend(Ext.XTemplate,Ext.Template,{re:/\{([\w-\.\#]+)(?:\:([\w\.]*)(?:\((.*?)?\))?)?(\s?[\+\-\*\\]\s?[\d\.\+\-\*\\\(\)]+)?\}/g,codeRe:/\{\[((?:\\\]|.|\n)*?)\]\}/g,applySubTemplate:function(a,i,h,d,c){var g=this,e,k=g.tpls[a],j,b=[];if((k.test&&!k.test.call(g,i,h,d,c))||(k.exec&&k.exec.call(g,i,h,d,c))){return""}j=k.target?k.target.call(g,i,h):i;e=j.length;h=k.target?i:h;if(k.target&&Ext.isArray(j)){Ext.each(j,function(l,m){b[b.length]=k.compiled.call(g,l,h,m+1,e)});return b.join("")}return k.compiled.call(g,j,h,d,c)},compileTpl:function(tpl){var fm=Ext.util.Format,useF=this.disableFormats!==true,sep=Ext.isGecko?"+":",",body;function fn(m,name,format,args,math){if(name.substr(0,4)=="xtpl"){return"'"+sep+"this.applySubTemplate("+name.substr(4)+", values, parent, xindex, xcount)"+sep+"'"}var v;if(name==="."){v="values"}else{if(name==="#"){v="xindex"}else{if(name.indexOf(".")!=-1){v=name}else{v="values['"+name+"']"}}}if(math){v="("+v+math+")"}if(format&&useF){args=args?","+args:"";if(format.substr(0,5)!="this."){format="fm."+format+"("}else{format='this.call("'+format.substr(5)+'", ';args=", values"}}else{args="";format="("+v+" === undefined ? '' : "}return"'"+sep+format+v+args+")"+sep+"'"}function codeFn(m,code){return"'"+sep+"("+code+")"+sep+"'"}if(Ext.isGecko){body="tpl.compiled = function(values, parent, xindex, xcount){ return '"+tpl.body.replace(/(\r\n|\n)/g,"\\n").replace(/'/g,"\\'").replace(this.re,fn).replace(this.codeRe,codeFn)+"';};"}else{body=["tpl.compiled = function(values, parent, xindex, xcount){ return ['"];body.push(tpl.body.replace(/(\r\n|\n)/g,"\\n").replace(/'/g,"\\'").replace(this.re,fn).replace(this.codeRe,codeFn));body.push("'].join('');};");body=body.join("")}eval(body);return this},applyTemplate:function(a){return this.master.compiled.call(this,a,{},1,1)},compile:function(){return this}});Ext.XTemplate.prototype.apply=Ext.XTemplate.prototype.applyTemplate;Ext.XTemplate.from=function(a){a=Ext.getDom(a);return new Ext.XTemplate(a.value||a.innerHTML)};Ext.util.CSS=function(){var d=null;var c=document;var b=/(-[a-z])/gi;var a=function(e,g){return g.charAt(1).toUpperCase()};return{createStyleSheet:function(i,l){var h;var g=c.getElementsByTagName("head")[0];var k=c.createElement("style");k.setAttribute("type","text/css");if(l){k.setAttribute("id",l)}if(Ext.isIE){g.appendChild(k);h=k.styleSheet;h.cssText=i}else{try{k.appendChild(c.createTextNode(i))}catch(j){k.cssText=i}g.appendChild(k);h=k.styleSheet?k.styleSheet:(k.sheet||c.styleSheets[c.styleSheets.length-1])}this.cacheStyleSheet(h);return h},removeStyleSheet:function(g){var e=c.getElementById(g);if(e){e.parentNode.removeChild(e)}},swapStyleSheet:function(h,e){this.removeStyleSheet(h);var g=c.createElement("link");g.setAttribute("rel","stylesheet");g.setAttribute("type","text/css");g.setAttribute("id",h);g.setAttribute("href",e);c.getElementsByTagName("head")[0].appendChild(g)},refreshCache:function(){return this.getRules(true)},cacheStyleSheet:function(h){if(!d){d={}}try{var k=h.cssRules||h.rules;for(var g=k.length-1;g>=0;--g){d[k[g].selectorText]=k[g]}}catch(i){}},getRules:function(h){if(d===null||h){d={};var k=c.styleSheets;for(var j=0,g=k.length;j<g;j++){try{this.cacheStyleSheet(k[j])}catch(l){}}}return d},getRule:function(e,h){var g=this.getRules(h);if(!Ext.isArray(e)){return g[e]}for(var j=0;j<e.length;j++){if(g[e[j]]){return g[e[j]]}}return null},updateRule:function(e,j,h){if(!Ext.isArray(e)){var k=this.getRule(e);if(k){k.style[j.replace(b,a)]=h;return true}}else{for(var g=0;g<e.length;g++){if(this.updateRule(e[g],j,h)){return true}}}return false}}}();Ext.util.ClickRepeater=function(b,a){this.el=Ext.get(b);this.el.unselectable();Ext.apply(this,a);this.addEvents("mousedown","click","mouseup");if(!this.disabled){this.disabled=true;this.enable()}if(this.handler){this.on("click",this.handler,this.scope||this)}Ext.util.ClickRepeater.superclass.constructor.call(this)};Ext.extend(Ext.util.ClickRepeater,Ext.util.Observable,{interval:20,delay:250,preventDefault:true,stopDefault:false,timer:0,enable:function(){if(this.disabled){this.el.on("mousedown",this.handleMouseDown,this);if(this.preventDefault||this.stopDefault){this.el.on("click",this.eventOptions,this)}}this.disabled=false},disable:function(a){if(a||!this.disabled){clearTimeout(this.timer);if(this.pressClass){this.el.removeClass(this.pressClass)}Ext.getDoc().un("mouseup",this.handleMouseUp,this);this.el.removeAllListeners()}this.disabled=true},setDisabled:function(a){this[a?"disable":"enable"]()},eventOptions:function(a){if(this.preventDefault){a.preventDefault()}if(this.stopDefault){a.stopEvent()}},destroy:function(){this.disable(true);Ext.destroy(this.el);this.purgeListeners()},handleMouseDown:function(){clearTimeout(this.timer);this.el.blur();if(this.pressClass){this.el.addClass(this.pressClass)}this.mousedownTime=new Date();Ext.getDoc().on("mouseup",this.handleMouseUp,this);this.el.on("mouseout",this.handleMouseOut,this);this.fireEvent("mousedown",this);this.fireEvent("click",this);if(this.accelerate){this.delay=400}this.timer=this.click.defer(this.delay||this.interval,this)},click:function(){this.fireEvent("click",this);this.timer=this.click.defer(this.accelerate?this.easeOutExpo(this.mousedownTime.getElapsed(),400,-390,12000):this.interval,this)},easeOutExpo:function(e,a,h,g){return(e==g)?a+h:h*(-Math.pow(2,-10*e/g)+1)+a},handleMouseOut:function(){clearTimeout(this.timer);if(this.pressClass){this.el.removeClass(this.pressClass)}this.el.on("mouseover",this.handleMouseReturn,this)},handleMouseReturn:function(){this.el.un("mouseover",this.handleMouseReturn,this);if(this.pressClass){this.el.addClass(this.pressClass)}this.click()},handleMouseUp:function(){clearTimeout(this.timer);this.el.un("mouseover",this.handleMouseReturn,this);this.el.un("mouseout",this.handleMouseOut,this);Ext.getDoc().un("mouseup",this.handleMouseUp,this);this.el.removeClass(this.pressClass);this.fireEvent("mouseup",this)}});Ext.KeyNav=function(b,a){this.el=Ext.get(b);Ext.apply(this,a);if(!this.disabled){this.disabled=true;this.enable()}};Ext.KeyNav.prototype={disabled:false,defaultEventAction:"stopEvent",forceKeyDown:false,prepareEvent:function(c){var a=c.getKey();var b=this.keyToHandler[a];if(Ext.isSafari2&&b&&a>=37&&a<=40){c.stopEvent()}},relay:function(c){var a=c.getKey();var b=this.keyToHandler[a];if(b&&this[b]){if(this.doRelay(c,this[b],b)!==true){c[this.defaultEventAction]()}}},doRelay:function(c,b,a){return b.call(this.scope||this,c)},enter:false,left:false,right:false,up:false,down:false,tab:false,esc:false,pageUp:false,pageDown:false,del:false,home:false,end:false,keyToHandler:{37:"left",39:"right",38:"up",40:"down",33:"pageUp",34:"pageDown",46:"del",36:"home",35:"end",13:"enter",27:"esc",9:"tab"},enable:function(){if(this.disabled){if(this.isKeydown()){this.el.on("keydown",this.relay,this)}else{this.el.on("keydown",this.prepareEvent,this);this.el.on("keypress",this.relay,this)}this.disabled=false}},disable:function(){if(!this.disabled){if(this.isKeydown()){this.el.un("keydown",this.relay,this)}else{this.el.un("keydown",this.prepareEvent,this);this.el.un("keypress",this.relay,this)}this.disabled=true}},setDisabled:function(a){this[a?"disable":"enable"]()},isKeydown:function(){return this.forceKeyDown||Ext.EventManager.useKeydown}};Ext.KeyMap=function(c,b,a){this.el=Ext.get(c);this.eventName=a||"keydown";this.bindings=[];if(b){this.addBinding(b)}this.enable()};Ext.KeyMap.prototype={stopEvent:false,addBinding:function(b){if(Ext.isArray(b)){Ext.each(b,function(j){this.addBinding(j)},this);return}var k=b.key,g=b.fn||b.handler,l=b.scope;if(b.stopEvent){this.stopEvent=b.stopEvent}if(typeof k=="string"){var h=[];var e=k.toUpperCase();for(var c=0,d=e.length;c<d;c++){h.push(e.charCodeAt(c))}k=h}var a=Ext.isArray(k);var i=function(o){if(this.checkModifiers(b,o)){var m=o.getKey();if(a){for(var n=0,j=k.length;n<j;n++){if(k[n]==m){if(this.stopEvent){o.stopEvent()}g.call(l||window,m,o);return}}}else{if(m==k){if(this.stopEvent){o.stopEvent()}g.call(l||window,m,o)}}}};this.bindings.push(i)},checkModifiers:function(b,h){var j,d,g=["shift","ctrl","alt"];for(var c=0,a=g.length;c<a;++c){d=g[c];j=b[d];if(!(j===undefined||(j===h[d+"Key"]))){return false}}return true},on:function(b,d,c){var h,a,e,g;if(typeof b=="object"&&!Ext.isArray(b)){h=b.key;a=b.shift;e=b.ctrl;g=b.alt}else{h=b}this.addBinding({key:h,shift:a,ctrl:e,alt:g,fn:d,scope:c})},handleKeyDown:function(g){if(this.enabled){var c=this.bindings;for(var d=0,a=c.length;d<a;d++){c[d].call(this,g)}}},isEnabled:function(){return this.enabled},enable:function(){if(!this.enabled){this.el.on(this.eventName,this.handleKeyDown,this);this.enabled=true}},disable:function(){if(this.enabled){this.el.removeListener(this.eventName,this.handleKeyDown,this);this.enabled=false}},setDisabled:function(a){this[a?"disable":"enable"]()}};Ext.util.TextMetrics=function(){var a;return{measure:function(b,c,d){if(!a){a=Ext.util.TextMetrics.Instance(b,d)}a.bind(b);a.setFixedWidth(d||"auto");return a.getSize(c)},createInstance:function(b,c){return Ext.util.TextMetrics.Instance(b,c)}}}();Ext.util.TextMetrics.Instance=function(b,d){var c=new Ext.Element(document.createElement("div"));document.body.appendChild(c.dom);c.position("absolute");c.setLeftTop(-1000,-1000);c.hide();if(d){c.setWidth(d)}var a={getSize:function(g){c.update(g);var e=c.getSize();c.update("");return e},bind:function(e){c.setStyle(Ext.fly(e).getStyles("font-size","font-style","font-weight","font-family","line-height","text-transform","letter-spacing"))},setFixedWidth:function(e){c.setWidth(e)},getWidth:function(e){c.dom.style.width="auto";return this.getSize(e).width},getHeight:function(e){return this.getSize(e).height}};a.bind(b);return a};Ext.Element.addMethods({getTextWidth:function(c,b,a){return(Ext.util.TextMetrics.measure(this.dom,Ext.value(c,this.dom.innerHTML,true)).width).constrain(b||0,a||1000000)}});Ext.util.Cookies={set:function(c,e){var a=arguments;var i=arguments.length;var b=(i>2)?a[2]:null;var h=(i>3)?a[3]:"/";var d=(i>4)?a[4]:null;var g=(i>5)?a[5]:false;document.cookie=c+"="+escape(e)+((b===null)?"":("; expires="+b.toGMTString()))+((h===null)?"":("; path="+h))+((d===null)?"":("; domain="+d))+((g===true)?"; secure":"")},get:function(d){var b=d+"=";var g=b.length;var a=document.cookie.length;var e=0;var c=0;while(e<a){c=e+g;if(document.cookie.substring(e,c)==b){return Ext.util.Cookies.getCookieVal(c)}e=document.cookie.indexOf(" ",e)+1;if(e===0){break}}return null},clear:function(a){if(Ext.util.Cookies.get(a)){document.cookie=a+"=; expires=Thu, 01-Jan-70 00:00:01 GMT"}},getCookieVal:function(b){var a=document.cookie.indexOf(";",b);if(a==-1){a=document.cookie.length}return unescape(document.cookie.substring(b,a))}};Ext.handleError=function(a){throw a};Ext.Error=function(a){this.message=(this.lang[a])?this.lang[a]:a};Ext.Error.prototype=new Error();Ext.apply(Ext.Error.prototype,{lang:{},name:"Ext.Error",getName:function(){return this.name},getMessage:function(){return this.message},toJson:function(){return Ext.encode(this)}});
|
@@ -0,0 +1,1060 @@
|
|
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.Button
|
9
|
+
* @extends Ext.BoxComponent
|
10
|
+
* Simple Button class
|
11
|
+
* @cfg {String} text The button text to be used as innerHTML (html tags are accepted)
|
12
|
+
* @cfg {String} icon The path to an image to display in the button (the image will be set as the background-image
|
13
|
+
* CSS property of the button by default, so if you want a mixed icon/text button, set cls:'x-btn-text-icon')
|
14
|
+
* @cfg {Function} handler A function called when the button is clicked (can be used instead of click event).
|
15
|
+
* The handler is passed the following parameters:<div class="mdetail-params"><ul>
|
16
|
+
* <li><code>b</code> : Button<div class="sub-desc">This Button.</div></li>
|
17
|
+
* <li><code>e</code> : EventObject<div class="sub-desc">The click event.</div></li>
|
18
|
+
* </ul></div>
|
19
|
+
* @cfg {Object} scope The scope (<tt><b>this</b></tt> reference) in which the handler is executed. Defaults to this Button.
|
20
|
+
* @cfg {Number} minWidth The minimum width for this button (used to give a set of buttons a common width).
|
21
|
+
* See also {@link Ext.Panel}.<tt>{@link Ext.Panel#minButtonWidth minButtonWidth}</tt>.
|
22
|
+
* @cfg {String/Object} tooltip The tooltip for the button - can be a string to be used as innerHTML (html tags are accepted) or QuickTips config object
|
23
|
+
* @cfg {Boolean} hidden True to start hidden (defaults to false)
|
24
|
+
* @cfg {Boolean} disabled True to start disabled (defaults to false)
|
25
|
+
* @cfg {Boolean} pressed True to start pressed (only if enableToggle = true)
|
26
|
+
* @cfg {String} toggleGroup The group this toggle button is a member of (only 1 per group can be pressed)
|
27
|
+
* @cfg {Boolean/Object} repeat True to repeat fire the click event while the mouse is down. This can also be
|
28
|
+
* a {@link Ext.util.ClickRepeater ClickRepeater} config object (defaults to false).
|
29
|
+
* @constructor
|
30
|
+
* Create a new button
|
31
|
+
* @param {Object} config The config object
|
32
|
+
* @xtype button
|
33
|
+
*/
|
34
|
+
Ext.Button = Ext.extend(Ext.BoxComponent, {
|
35
|
+
/**
|
36
|
+
* Read-only. True if this button is hidden
|
37
|
+
* @type Boolean
|
38
|
+
*/
|
39
|
+
hidden : false,
|
40
|
+
/**
|
41
|
+
* Read-only. True if this button is disabled
|
42
|
+
* @type Boolean
|
43
|
+
*/
|
44
|
+
disabled : false,
|
45
|
+
/**
|
46
|
+
* Read-only. True if this button is pressed (only if enableToggle = true)
|
47
|
+
* @type Boolean
|
48
|
+
*/
|
49
|
+
pressed : false,
|
50
|
+
/**
|
51
|
+
* The Button's owner {@link Ext.Panel} (defaults to undefined, and is set automatically when
|
52
|
+
* the Button is added to a container). Read-only.
|
53
|
+
* @type Ext.Panel
|
54
|
+
* @property ownerCt
|
55
|
+
*/
|
56
|
+
|
57
|
+
/**
|
58
|
+
* @cfg {Number} tabIndex Set a DOM tabIndex for this button (defaults to undefined)
|
59
|
+
*/
|
60
|
+
|
61
|
+
/**
|
62
|
+
* @cfg {Boolean} allowDepress
|
63
|
+
* False to not allow a pressed Button to be depressed (defaults to undefined). Only valid when {@link #enableToggle} is true.
|
64
|
+
*/
|
65
|
+
|
66
|
+
/**
|
67
|
+
* @cfg {Boolean} enableToggle
|
68
|
+
* True to enable pressed/not pressed toggling (defaults to false)
|
69
|
+
*/
|
70
|
+
enableToggle: false,
|
71
|
+
/**
|
72
|
+
* @cfg {Function} toggleHandler
|
73
|
+
* Function called when a Button with {@link #enableToggle} set to true is clicked. Two arguments are passed:<ul class="mdetail-params">
|
74
|
+
* <li><b>button</b> : Ext.Button<div class="sub-desc">this Button object</div></li>
|
75
|
+
* <li><b>state</b> : Boolean<div class="sub-desc">The next state if the Button, true means pressed.</div></li>
|
76
|
+
* </ul>
|
77
|
+
*/
|
78
|
+
/**
|
79
|
+
* @cfg {Mixed} menu
|
80
|
+
* Standard menu attribute consisting of a reference to a menu object, a menu id or a menu config blob (defaults to undefined).
|
81
|
+
*/
|
82
|
+
/**
|
83
|
+
* @cfg {String} menuAlign
|
84
|
+
* The position to align the menu to (see {@link Ext.Element#alignTo} for more details, defaults to 'tl-bl?').
|
85
|
+
*/
|
86
|
+
menuAlign : 'tl-bl?',
|
87
|
+
|
88
|
+
/**
|
89
|
+
* @cfg {String} overflowText If used in a {@link Ext.Toolbar Toolbar}, the
|
90
|
+
* text to be used if this item is shown in the overflow menu. See also
|
91
|
+
* {@link Ext.Toolbar.Item}.<code>{@link Ext.Toolbar.Item#overflowText overflowText}</code>.
|
92
|
+
*/
|
93
|
+
/**
|
94
|
+
* @cfg {String} iconCls
|
95
|
+
* A css class which sets a background image to be used as the icon for this button
|
96
|
+
*/
|
97
|
+
/**
|
98
|
+
* @cfg {String} type
|
99
|
+
* submit, reset or button - defaults to 'button'
|
100
|
+
*/
|
101
|
+
type : 'button',
|
102
|
+
|
103
|
+
// private
|
104
|
+
menuClassTarget: 'tr:nth(2)',
|
105
|
+
|
106
|
+
/**
|
107
|
+
* @cfg {String} clickEvent
|
108
|
+
* The type of event to map to the button's event handler (defaults to 'click')
|
109
|
+
*/
|
110
|
+
clickEvent : 'click',
|
111
|
+
|
112
|
+
/**
|
113
|
+
* @cfg {Boolean} handleMouseEvents
|
114
|
+
* False to disable visual cues on mouseover, mouseout and mousedown (defaults to true)
|
115
|
+
*/
|
116
|
+
handleMouseEvents : true,
|
117
|
+
|
118
|
+
/**
|
119
|
+
* @cfg {String} tooltipType
|
120
|
+
* The type of tooltip to use. Either 'qtip' (default) for QuickTips or 'title' for title attribute.
|
121
|
+
*/
|
122
|
+
tooltipType : 'qtip',
|
123
|
+
|
124
|
+
/**
|
125
|
+
* @cfg {String} buttonSelector
|
126
|
+
* <p>(Optional) A {@link Ext.DomQuery DomQuery} selector which is used to extract the active, clickable element from the
|
127
|
+
* DOM structure created.</p>
|
128
|
+
* <p>When a custom {@link #template} is used, you must ensure that this selector results in the selection of
|
129
|
+
* a focussable element.</p>
|
130
|
+
* <p>Defaults to <b><tt>"button:first-child"</tt></b>.</p>
|
131
|
+
*/
|
132
|
+
buttonSelector : 'button:first-child',
|
133
|
+
|
134
|
+
/**
|
135
|
+
* @cfg {String} scale
|
136
|
+
* <p>(Optional) The size of the Button. Three values are allowed:</p>
|
137
|
+
* <ul class="mdetail-params">
|
138
|
+
* <li>'small'<div class="sub-desc">Results in the button element being 16px high.</div></li>
|
139
|
+
* <li>'medium'<div class="sub-desc">Results in the button element being 24px high.</div></li>
|
140
|
+
* <li>'large'<div class="sub-desc">Results in the button element being 32px high.</div></li>
|
141
|
+
* </ul>
|
142
|
+
* <p>Defaults to <b><tt>'small'</tt></b>.</p>
|
143
|
+
*/
|
144
|
+
scale: 'small',
|
145
|
+
|
146
|
+
/**
|
147
|
+
* @cfg {String} iconAlign
|
148
|
+
* <p>(Optional) The side of the Button box to render the icon. Four values are allowed:</p>
|
149
|
+
* <ul class="mdetail-params">
|
150
|
+
* <li>'top'<div class="sub-desc"></div></li>
|
151
|
+
* <li>'right'<div class="sub-desc"></div></li>
|
152
|
+
* <li>'bottom'<div class="sub-desc"></div></li>
|
153
|
+
* <li>'left'<div class="sub-desc"></div></li>
|
154
|
+
* </ul>
|
155
|
+
* <p>Defaults to <b><tt>'left'</tt></b>.</p>
|
156
|
+
*/
|
157
|
+
iconAlign : 'left',
|
158
|
+
|
159
|
+
/**
|
160
|
+
* @cfg {String} arrowAlign
|
161
|
+
* <p>(Optional) The side of the Button box to render the arrow if the button has an associated {@link #menu}.
|
162
|
+
* Two values are allowed:</p>
|
163
|
+
* <ul class="mdetail-params">
|
164
|
+
* <li>'right'<div class="sub-desc"></div></li>
|
165
|
+
* <li>'bottom'<div class="sub-desc"></div></li>
|
166
|
+
* </ul>
|
167
|
+
* <p>Defaults to <b><tt>'right'</tt></b>.</p>
|
168
|
+
*/
|
169
|
+
arrowAlign : 'right',
|
170
|
+
|
171
|
+
/**
|
172
|
+
* @cfg {Ext.Template} template (Optional)
|
173
|
+
* <p>A {@link Ext.Template Template} used to create the Button's DOM structure.</p>
|
174
|
+
* Instances, or subclasses which need a different DOM structure may provide a different
|
175
|
+
* template layout in conjunction with an implementation of {@link #getTemplateArgs}.
|
176
|
+
* @type Ext.Template
|
177
|
+
* @property template
|
178
|
+
*/
|
179
|
+
/**
|
180
|
+
* @cfg {String} cls
|
181
|
+
* A CSS class string to apply to the button's main element.
|
182
|
+
*/
|
183
|
+
/**
|
184
|
+
* @property menu
|
185
|
+
* @type Menu
|
186
|
+
* The {@link Ext.menu.Menu Menu} object associated with this Button when configured with the {@link #menu} config option.
|
187
|
+
*/
|
188
|
+
|
189
|
+
initComponent : function(){
|
190
|
+
Ext.Button.superclass.initComponent.call(this);
|
191
|
+
|
192
|
+
this.addEvents(
|
193
|
+
/**
|
194
|
+
* @event click
|
195
|
+
* Fires when this button is clicked
|
196
|
+
* @param {Button} this
|
197
|
+
* @param {EventObject} e The click event
|
198
|
+
*/
|
199
|
+
'click',
|
200
|
+
/**
|
201
|
+
* @event toggle
|
202
|
+
* Fires when the 'pressed' state of this button changes (only if enableToggle = true)
|
203
|
+
* @param {Button} this
|
204
|
+
* @param {Boolean} pressed
|
205
|
+
*/
|
206
|
+
'toggle',
|
207
|
+
/**
|
208
|
+
* @event mouseover
|
209
|
+
* Fires when the mouse hovers over the button
|
210
|
+
* @param {Button} this
|
211
|
+
* @param {Event} e The event object
|
212
|
+
*/
|
213
|
+
'mouseover',
|
214
|
+
/**
|
215
|
+
* @event mouseout
|
216
|
+
* Fires when the mouse exits the button
|
217
|
+
* @param {Button} this
|
218
|
+
* @param {Event} e The event object
|
219
|
+
*/
|
220
|
+
'mouseout',
|
221
|
+
/**
|
222
|
+
* @event menushow
|
223
|
+
* If this button has a menu, this event fires when it is shown
|
224
|
+
* @param {Button} this
|
225
|
+
* @param {Menu} menu
|
226
|
+
*/
|
227
|
+
'menushow',
|
228
|
+
/**
|
229
|
+
* @event menuhide
|
230
|
+
* If this button has a menu, this event fires when it is hidden
|
231
|
+
* @param {Button} this
|
232
|
+
* @param {Menu} menu
|
233
|
+
*/
|
234
|
+
'menuhide',
|
235
|
+
/**
|
236
|
+
* @event menutriggerover
|
237
|
+
* If this button has a menu, this event fires when the mouse enters the menu triggering element
|
238
|
+
* @param {Button} this
|
239
|
+
* @param {Menu} menu
|
240
|
+
* @param {EventObject} e
|
241
|
+
*/
|
242
|
+
'menutriggerover',
|
243
|
+
/**
|
244
|
+
* @event menutriggerout
|
245
|
+
* If this button has a menu, this event fires when the mouse leaves the menu triggering element
|
246
|
+
* @param {Button} this
|
247
|
+
* @param {Menu} menu
|
248
|
+
* @param {EventObject} e
|
249
|
+
*/
|
250
|
+
'menutriggerout'
|
251
|
+
);
|
252
|
+
if(this.menu){
|
253
|
+
this.menu = Ext.menu.MenuMgr.get(this.menu);
|
254
|
+
}
|
255
|
+
if(Ext.isString(this.toggleGroup)){
|
256
|
+
this.enableToggle = true;
|
257
|
+
}
|
258
|
+
},
|
259
|
+
|
260
|
+
/**
|
261
|
+
* <p>This method returns an object which provides substitution parameters for the {@link #template Template} used
|
262
|
+
* to create this Button's DOM structure.</p>
|
263
|
+
* <p>Instances or subclasses which use a different Template to create a different DOM structure may need to provide their
|
264
|
+
* own implementation of this method.</p>
|
265
|
+
* <p>The default implementation which provides data for the default {@link #template} returns an Array containing the
|
266
|
+
* following items:</p><div class="mdetail-params"><ul>
|
267
|
+
* <li>The Button's {@link #text}</li>
|
268
|
+
* <li>The <button>'s {@link #type}</li>
|
269
|
+
* <li>The {@link iconCls} applied to the <button> {@link #btnEl element}</li>
|
270
|
+
* <li>The {@link #cls} applied to the Button's main {@link #getEl Element}</li>
|
271
|
+
* <li>A CSS class name controlling the Button's {@link #scale} and {@link #iconAlign icon alignment}</li>
|
272
|
+
* <li>A CSS class name which applies an arrow to the Button if configured with a {@link #menu}</li>
|
273
|
+
* </ul></div>
|
274
|
+
* @return {Object} Substitution data for a Template.
|
275
|
+
*/
|
276
|
+
getTemplateArgs : function(){
|
277
|
+
var cls = (this.cls || '');
|
278
|
+
cls += (this.iconCls || this.icon) ? (this.text ? ' x-btn-text-icon' : ' x-btn-icon') : ' x-btn-noicon';
|
279
|
+
if(this.pressed){
|
280
|
+
cls += ' x-btn-pressed';
|
281
|
+
}
|
282
|
+
return [this.text || ' ', this.type, this.iconCls || '', cls, 'x-btn-' + this.scale + ' x-btn-icon-' + this.scale + '-' + this.iconAlign, this.getMenuClass()];
|
283
|
+
},
|
284
|
+
|
285
|
+
// protected
|
286
|
+
getMenuClass : function(){
|
287
|
+
return this.menu ? (this.arrowAlign != 'bottom' ? 'x-btn-arrow' : 'x-btn-arrow-bottom') : '';
|
288
|
+
},
|
289
|
+
|
290
|
+
// private
|
291
|
+
onRender : function(ct, position){
|
292
|
+
if(!this.template){
|
293
|
+
if(!Ext.Button.buttonTemplate){
|
294
|
+
// hideous table template
|
295
|
+
Ext.Button.buttonTemplate = new Ext.Template(
|
296
|
+
'<table cellspacing="0" class="x-btn {3}"><tbody class="{4}">',
|
297
|
+
'<tr><td class="x-btn-tl"><i> </i></td><td class="x-btn-tc"></td><td class="x-btn-tr"><i> </i></td></tr>',
|
298
|
+
'<tr><td class="x-btn-ml"><i> </i></td><td class="x-btn-mc"><em class="{5}" unselectable="on"><button class="x-btn-text {2}" type="{1}">{0}</button></em></td><td class="x-btn-mr"><i> </i></td></tr>',
|
299
|
+
'<tr><td class="x-btn-bl"><i> </i></td><td class="x-btn-bc"></td><td class="x-btn-br"><i> </i></td></tr>',
|
300
|
+
"</tbody></table>");
|
301
|
+
Ext.Button.buttonTemplate.compile();
|
302
|
+
}
|
303
|
+
this.template = Ext.Button.buttonTemplate;
|
304
|
+
}
|
305
|
+
|
306
|
+
var btn, targs = this.getTemplateArgs();
|
307
|
+
|
308
|
+
if(position){
|
309
|
+
btn = this.template.insertBefore(position, targs, true);
|
310
|
+
}else{
|
311
|
+
btn = this.template.append(ct, targs, true);
|
312
|
+
}
|
313
|
+
/**
|
314
|
+
* An {@link Ext.Element Element} encapsulating the Button's clickable element. By default,
|
315
|
+
* this references a <tt><button></tt> element. Read only.
|
316
|
+
* @type Ext.Element
|
317
|
+
* @property btnEl
|
318
|
+
*/
|
319
|
+
this.btnEl = btn.child(this.buttonSelector);
|
320
|
+
this.mon(this.btnEl, {
|
321
|
+
scope: this,
|
322
|
+
focus: this.onFocus,
|
323
|
+
blur: this.onBlur
|
324
|
+
});
|
325
|
+
|
326
|
+
this.initButtonEl(btn, this.btnEl);
|
327
|
+
|
328
|
+
Ext.ButtonToggleMgr.register(this);
|
329
|
+
},
|
330
|
+
|
331
|
+
// private
|
332
|
+
initButtonEl : function(btn, btnEl){
|
333
|
+
this.el = btn;
|
334
|
+
|
335
|
+
if(this.id){
|
336
|
+
this.el.dom.id = this.el.id = this.id;
|
337
|
+
}
|
338
|
+
if(this.icon){
|
339
|
+
btnEl.setStyle('background-image', 'url(' +this.icon +')');
|
340
|
+
}
|
341
|
+
if(this.tabIndex !== undefined){
|
342
|
+
btnEl.dom.tabIndex = this.tabIndex;
|
343
|
+
}
|
344
|
+
if(this.tooltip){
|
345
|
+
this.setTooltip(this.tooltip, true);
|
346
|
+
}
|
347
|
+
|
348
|
+
if(this.handleMouseEvents){
|
349
|
+
this.mon(btn, {
|
350
|
+
scope: this,
|
351
|
+
mouseover: this.onMouseOver,
|
352
|
+
mousedown: this.onMouseDown
|
353
|
+
});
|
354
|
+
|
355
|
+
// new functionality for monitoring on the document level
|
356
|
+
//this.mon(btn, 'mouseout', this.onMouseOut, this);
|
357
|
+
}
|
358
|
+
|
359
|
+
if(this.menu){
|
360
|
+
this.mon(this.menu, {
|
361
|
+
scope: this,
|
362
|
+
show: this.onMenuShow,
|
363
|
+
hide: this.onMenuHide
|
364
|
+
});
|
365
|
+
}
|
366
|
+
|
367
|
+
if(this.repeat){
|
368
|
+
var repeater = new Ext.util.ClickRepeater(btn, Ext.isObject(this.repeat) ? this.repeat : {});
|
369
|
+
this.mon(repeater, 'click', this.onClick, this);
|
370
|
+
}
|
371
|
+
|
372
|
+
this.mon(btn, this.clickEvent, this.onClick, this);
|
373
|
+
},
|
374
|
+
|
375
|
+
// private
|
376
|
+
afterRender : function(){
|
377
|
+
Ext.Button.superclass.afterRender.call(this);
|
378
|
+
this.doAutoWidth();
|
379
|
+
},
|
380
|
+
|
381
|
+
/**
|
382
|
+
* Sets the CSS class that provides a background image to use as the button's icon. This method also changes
|
383
|
+
* the value of the {@link iconCls} config internally.
|
384
|
+
* @param {String} cls The CSS class providing the icon image
|
385
|
+
* @return {Ext.Button} this
|
386
|
+
*/
|
387
|
+
setIconClass : function(cls){
|
388
|
+
if(this.el){
|
389
|
+
this.btnEl.replaceClass(this.iconCls, cls);
|
390
|
+
}
|
391
|
+
this.iconCls = cls;
|
392
|
+
return this;
|
393
|
+
},
|
394
|
+
|
395
|
+
/**
|
396
|
+
* Sets the tooltip for this Button.
|
397
|
+
* @param {String/Object} tooltip. This may be:<div class="mdesc-details"><ul>
|
398
|
+
* <li><b>String</b> : A string to be used as innerHTML (html tags are accepted) to show in a tooltip</li>
|
399
|
+
* <li><b>Object</b> : A configuration object for {@link Ext.QuickTips#register}.</li>
|
400
|
+
* </ul></div>
|
401
|
+
* @return {Ext.Button} this
|
402
|
+
*/
|
403
|
+
setTooltip : function(tooltip, /* private */ initial){
|
404
|
+
if(this.rendered){
|
405
|
+
if(!initial){
|
406
|
+
this.clearTip();
|
407
|
+
}
|
408
|
+
if(Ext.isObject(tooltip)){
|
409
|
+
Ext.QuickTips.register(Ext.apply({
|
410
|
+
target: this.btnEl.id
|
411
|
+
}, tooltip));
|
412
|
+
this.tooltip = tooltip;
|
413
|
+
}else{
|
414
|
+
this.btnEl.dom[this.tooltipType] = tooltip;
|
415
|
+
}
|
416
|
+
}else{
|
417
|
+
this.tooltip = tooltip;
|
418
|
+
}
|
419
|
+
return this;
|
420
|
+
},
|
421
|
+
|
422
|
+
// private
|
423
|
+
clearTip: function(){
|
424
|
+
if(Ext.isObject(this.tooltip)){
|
425
|
+
Ext.QuickTips.unregister(this.btnEl);
|
426
|
+
}
|
427
|
+
},
|
428
|
+
|
429
|
+
// private
|
430
|
+
beforeDestroy: function(){
|
431
|
+
if(this.rendered){
|
432
|
+
this.clearTip();
|
433
|
+
}
|
434
|
+
Ext.destroy(this.menu, this.repeater);
|
435
|
+
},
|
436
|
+
|
437
|
+
// private
|
438
|
+
onDestroy : function(){
|
439
|
+
var doc = Ext.getDoc();
|
440
|
+
doc.un('mouseover', this.monitorMouseOver, this);
|
441
|
+
doc.un('mouseup', this.onMouseUp, this);
|
442
|
+
if(this.rendered){
|
443
|
+
Ext.ButtonToggleMgr.unregister(this);
|
444
|
+
}
|
445
|
+
},
|
446
|
+
|
447
|
+
// private
|
448
|
+
doAutoWidth : function(){
|
449
|
+
if(this.el && this.text && this.width === undefined){
|
450
|
+
this.el.setWidth('auto');
|
451
|
+
if(Ext.isIE7 && Ext.isStrict){
|
452
|
+
var ib = this.btnEl;
|
453
|
+
if(ib && ib.getWidth() > 20){
|
454
|
+
ib.clip();
|
455
|
+
ib.setWidth(Ext.util.TextMetrics.measure(ib, this.text).width+ib.getFrameWidth('lr'));
|
456
|
+
}
|
457
|
+
}
|
458
|
+
if(this.minWidth){
|
459
|
+
if(this.el.getWidth() < this.minWidth){
|
460
|
+
this.el.setWidth(this.minWidth);
|
461
|
+
}
|
462
|
+
}
|
463
|
+
}
|
464
|
+
},
|
465
|
+
|
466
|
+
/**
|
467
|
+
* Assigns this Button's click handler
|
468
|
+
* @param {Function} handler The function to call when the button is clicked
|
469
|
+
* @param {Object} scope (optional) Scope for the function passed in
|
470
|
+
* @return {Ext.Button} this
|
471
|
+
*/
|
472
|
+
setHandler : function(handler, scope){
|
473
|
+
this.handler = handler;
|
474
|
+
this.scope = scope;
|
475
|
+
return this;
|
476
|
+
},
|
477
|
+
|
478
|
+
/**
|
479
|
+
* Sets this Button's text
|
480
|
+
* @param {String} text The button text
|
481
|
+
* @return {Ext.Button} this
|
482
|
+
*/
|
483
|
+
setText : function(text){
|
484
|
+
this.text = text;
|
485
|
+
if(this.el){
|
486
|
+
this.el.child('td.x-btn-mc ' + this.buttonSelector).update(text);
|
487
|
+
}
|
488
|
+
this.doAutoWidth();
|
489
|
+
return this;
|
490
|
+
},
|
491
|
+
|
492
|
+
/**
|
493
|
+
* Gets the text for this Button
|
494
|
+
* @return {String} The button text
|
495
|
+
*/
|
496
|
+
getText : function(){
|
497
|
+
return this.text;
|
498
|
+
},
|
499
|
+
|
500
|
+
/**
|
501
|
+
* If a state it passed, it becomes the pressed state otherwise the current state is toggled.
|
502
|
+
* @param {Boolean} state (optional) Force a particular state
|
503
|
+
* @param {Boolean} supressEvent (optional) True to stop events being fired when calling this method.
|
504
|
+
* @return {Ext.Button} this
|
505
|
+
*/
|
506
|
+
toggle : function(state, suppressEvent){
|
507
|
+
state = state === undefined ? !this.pressed : !!state;
|
508
|
+
if(state != this.pressed){
|
509
|
+
this.el[state ? 'addClass' : 'removeClass']('x-btn-pressed');
|
510
|
+
this.pressed = state;
|
511
|
+
if(!suppressEvent){
|
512
|
+
this.fireEvent('toggle', this, state);
|
513
|
+
if(this.toggleHandler){
|
514
|
+
this.toggleHandler.call(this.scope || this, this, state);
|
515
|
+
}
|
516
|
+
}
|
517
|
+
}
|
518
|
+
return this;
|
519
|
+
},
|
520
|
+
|
521
|
+
/**
|
522
|
+
* Focus the button
|
523
|
+
*/
|
524
|
+
focus : function(){
|
525
|
+
this.btnEl.focus();
|
526
|
+
},
|
527
|
+
|
528
|
+
// private
|
529
|
+
onDisable : function(){
|
530
|
+
this.onDisableChange(true);
|
531
|
+
},
|
532
|
+
|
533
|
+
// private
|
534
|
+
onEnable : function(){
|
535
|
+
this.onDisableChange(false);
|
536
|
+
},
|
537
|
+
|
538
|
+
onDisableChange : function(disabled){
|
539
|
+
if(this.el){
|
540
|
+
if(!Ext.isIE6 || !this.text){
|
541
|
+
this.el[disabled ? 'addClass' : 'removeClass'](this.disabledClass);
|
542
|
+
}
|
543
|
+
this.el.dom.disabled = disabled;
|
544
|
+
}
|
545
|
+
this.disabled = disabled;
|
546
|
+
},
|
547
|
+
|
548
|
+
/**
|
549
|
+
* Show this button's menu (if it has one)
|
550
|
+
*/
|
551
|
+
showMenu : function(){
|
552
|
+
if(this.rendered && this.menu){
|
553
|
+
if(this.tooltip){
|
554
|
+
Ext.QuickTips.getQuickTip().cancelShow(this.btnEl);
|
555
|
+
}
|
556
|
+
this.menu.show(this.el, this.menuAlign);
|
557
|
+
}
|
558
|
+
return this;
|
559
|
+
},
|
560
|
+
|
561
|
+
/**
|
562
|
+
* Hide this button's menu (if it has one)
|
563
|
+
*/
|
564
|
+
hideMenu : function(){
|
565
|
+
if(this.menu){
|
566
|
+
this.menu.hide();
|
567
|
+
}
|
568
|
+
return this;
|
569
|
+
},
|
570
|
+
|
571
|
+
/**
|
572
|
+
* Returns true if the button has a menu and it is visible
|
573
|
+
* @return {Boolean}
|
574
|
+
*/
|
575
|
+
hasVisibleMenu : function(){
|
576
|
+
return this.menu && this.menu.isVisible();
|
577
|
+
},
|
578
|
+
|
579
|
+
// private
|
580
|
+
onClick : function(e){
|
581
|
+
if(e){
|
582
|
+
e.preventDefault();
|
583
|
+
}
|
584
|
+
if(e.button !== 0){
|
585
|
+
return;
|
586
|
+
}
|
587
|
+
if(!this.disabled){
|
588
|
+
if(this.enableToggle && (this.allowDepress !== false || !this.pressed)){
|
589
|
+
this.toggle();
|
590
|
+
}
|
591
|
+
if(this.menu && !this.menu.isVisible() && !this.ignoreNextClick){
|
592
|
+
this.showMenu();
|
593
|
+
}
|
594
|
+
this.fireEvent('click', this, e);
|
595
|
+
if(this.handler){
|
596
|
+
//this.el.removeClass('x-btn-over');
|
597
|
+
this.handler.call(this.scope || this, this, e);
|
598
|
+
}
|
599
|
+
}
|
600
|
+
},
|
601
|
+
|
602
|
+
// private
|
603
|
+
isMenuTriggerOver : function(e, internal){
|
604
|
+
return this.menu && !internal;
|
605
|
+
},
|
606
|
+
|
607
|
+
// private
|
608
|
+
isMenuTriggerOut : function(e, internal){
|
609
|
+
return this.menu && !internal;
|
610
|
+
},
|
611
|
+
|
612
|
+
// private
|
613
|
+
onMouseOver : function(e){
|
614
|
+
if(!this.disabled){
|
615
|
+
var internal = e.within(this.el, true);
|
616
|
+
if(!internal){
|
617
|
+
this.el.addClass('x-btn-over');
|
618
|
+
if(!this.monitoringMouseOver){
|
619
|
+
Ext.getDoc().on('mouseover', this.monitorMouseOver, this);
|
620
|
+
this.monitoringMouseOver = true;
|
621
|
+
}
|
622
|
+
this.fireEvent('mouseover', this, e);
|
623
|
+
}
|
624
|
+
if(this.isMenuTriggerOver(e, internal)){
|
625
|
+
this.fireEvent('menutriggerover', this, this.menu, e);
|
626
|
+
}
|
627
|
+
}
|
628
|
+
},
|
629
|
+
|
630
|
+
// private
|
631
|
+
monitorMouseOver : function(e){
|
632
|
+
if(e.target != this.el.dom && !e.within(this.el)){
|
633
|
+
if(this.monitoringMouseOver){
|
634
|
+
Ext.getDoc().un('mouseover', this.monitorMouseOver, this);
|
635
|
+
this.monitoringMouseOver = false;
|
636
|
+
}
|
637
|
+
this.onMouseOut(e);
|
638
|
+
}
|
639
|
+
},
|
640
|
+
|
641
|
+
// private
|
642
|
+
onMouseOut : function(e){
|
643
|
+
var internal = e.within(this.el) && e.target != this.el.dom;
|
644
|
+
this.el.removeClass('x-btn-over');
|
645
|
+
this.fireEvent('mouseout', this, e);
|
646
|
+
if(this.isMenuTriggerOut(e, internal)){
|
647
|
+
this.fireEvent('menutriggerout', this, this.menu, e);
|
648
|
+
}
|
649
|
+
},
|
650
|
+
// private
|
651
|
+
onFocus : function(e){
|
652
|
+
if(!this.disabled){
|
653
|
+
this.el.addClass('x-btn-focus');
|
654
|
+
}
|
655
|
+
},
|
656
|
+
// private
|
657
|
+
onBlur : function(e){
|
658
|
+
this.el.removeClass('x-btn-focus');
|
659
|
+
},
|
660
|
+
|
661
|
+
// private
|
662
|
+
getClickEl : function(e, isUp){
|
663
|
+
return this.el;
|
664
|
+
},
|
665
|
+
|
666
|
+
// private
|
667
|
+
onMouseDown : function(e){
|
668
|
+
if(!this.disabled && e.button === 0){
|
669
|
+
this.getClickEl(e).addClass('x-btn-click');
|
670
|
+
Ext.getDoc().on('mouseup', this.onMouseUp, this);
|
671
|
+
}
|
672
|
+
},
|
673
|
+
// private
|
674
|
+
onMouseUp : function(e){
|
675
|
+
if(e.button === 0){
|
676
|
+
this.getClickEl(e, true).removeClass('x-btn-click');
|
677
|
+
Ext.getDoc().un('mouseup', this.onMouseUp, this);
|
678
|
+
}
|
679
|
+
},
|
680
|
+
// private
|
681
|
+
onMenuShow : function(e){
|
682
|
+
this.ignoreNextClick = 0;
|
683
|
+
this.el.addClass('x-btn-menu-active');
|
684
|
+
this.fireEvent('menushow', this, this.menu);
|
685
|
+
},
|
686
|
+
// private
|
687
|
+
onMenuHide : function(e){
|
688
|
+
this.el.removeClass('x-btn-menu-active');
|
689
|
+
this.ignoreNextClick = this.restoreClick.defer(250, this);
|
690
|
+
this.fireEvent('menuhide', this, this.menu);
|
691
|
+
},
|
692
|
+
|
693
|
+
// private
|
694
|
+
restoreClick : function(){
|
695
|
+
this.ignoreNextClick = 0;
|
696
|
+
}
|
697
|
+
|
698
|
+
|
699
|
+
|
700
|
+
/**
|
701
|
+
* @cfg {String} autoEl @hide
|
702
|
+
*/
|
703
|
+
});
|
704
|
+
Ext.reg('button', Ext.Button);
|
705
|
+
|
706
|
+
// Private utility class used by Button
|
707
|
+
Ext.ButtonToggleMgr = function(){
|
708
|
+
var groups = {};
|
709
|
+
|
710
|
+
function toggleGroup(btn, state){
|
711
|
+
if(state){
|
712
|
+
var g = groups[btn.toggleGroup];
|
713
|
+
for(var i = 0, l = g.length; i < l; i++){
|
714
|
+
if(g[i] != btn){
|
715
|
+
g[i].toggle(false);
|
716
|
+
}
|
717
|
+
}
|
718
|
+
}
|
719
|
+
}
|
720
|
+
|
721
|
+
return {
|
722
|
+
register : function(btn){
|
723
|
+
if(!btn.toggleGroup){
|
724
|
+
return;
|
725
|
+
}
|
726
|
+
var g = groups[btn.toggleGroup];
|
727
|
+
if(!g){
|
728
|
+
g = groups[btn.toggleGroup] = [];
|
729
|
+
}
|
730
|
+
g.push(btn);
|
731
|
+
btn.on('toggle', toggleGroup);
|
732
|
+
},
|
733
|
+
|
734
|
+
unregister : function(btn){
|
735
|
+
if(!btn.toggleGroup){
|
736
|
+
return;
|
737
|
+
}
|
738
|
+
var g = groups[btn.toggleGroup];
|
739
|
+
if(g){
|
740
|
+
g.remove(btn);
|
741
|
+
btn.un('toggle', toggleGroup);
|
742
|
+
}
|
743
|
+
},
|
744
|
+
|
745
|
+
/**
|
746
|
+
* Gets the pressed button in the passed group or null
|
747
|
+
* @param {String} group
|
748
|
+
* @return Button
|
749
|
+
*/
|
750
|
+
getPressed : function(group){
|
751
|
+
var g = groups[group];
|
752
|
+
if(g){
|
753
|
+
for(var i = 0, len = g.length; i < len; i++){
|
754
|
+
if(g[i].pressed === true){
|
755
|
+
return g[i];
|
756
|
+
}
|
757
|
+
}
|
758
|
+
}
|
759
|
+
return null;
|
760
|
+
}
|
761
|
+
};
|
762
|
+
}();/**
|
763
|
+
* @class Ext.SplitButton
|
764
|
+
* @extends Ext.Button
|
765
|
+
* A split button that provides a built-in dropdown arrow that can fire an event separately from the default
|
766
|
+
* click event of the button. Typically this would be used to display a dropdown menu that provides additional
|
767
|
+
* options to the primary button action, but any custom handler can provide the arrowclick implementation. Example usage:
|
768
|
+
* <pre><code>
|
769
|
+
// display a dropdown menu:
|
770
|
+
new Ext.SplitButton({
|
771
|
+
renderTo: 'button-ct', // the container id
|
772
|
+
text: 'Options',
|
773
|
+
handler: optionsHandler, // handle a click on the button itself
|
774
|
+
menu: new Ext.menu.Menu({
|
775
|
+
items: [
|
776
|
+
// these items will render as dropdown menu items when the arrow is clicked:
|
777
|
+
{text: 'Item 1', handler: item1Handler},
|
778
|
+
{text: 'Item 2', handler: item2Handler}
|
779
|
+
]
|
780
|
+
})
|
781
|
+
});
|
782
|
+
|
783
|
+
// Instead of showing a menu, you provide any type of custom
|
784
|
+
// functionality you want when the dropdown arrow is clicked:
|
785
|
+
new Ext.SplitButton({
|
786
|
+
renderTo: 'button-ct',
|
787
|
+
text: 'Options',
|
788
|
+
handler: optionsHandler,
|
789
|
+
arrowHandler: myCustomHandler
|
790
|
+
});
|
791
|
+
</code></pre>
|
792
|
+
* @cfg {Function} arrowHandler A function called when the arrow button is clicked (can be used instead of click event)
|
793
|
+
* @cfg {String} arrowTooltip The title attribute of the arrow
|
794
|
+
* @constructor
|
795
|
+
* Create a new menu button
|
796
|
+
* @param {Object} config The config object
|
797
|
+
* @xtype splitbutton
|
798
|
+
*/
|
799
|
+
Ext.SplitButton = Ext.extend(Ext.Button, {
|
800
|
+
// private
|
801
|
+
arrowSelector : 'em',
|
802
|
+
split: true,
|
803
|
+
|
804
|
+
// private
|
805
|
+
initComponent : function(){
|
806
|
+
Ext.SplitButton.superclass.initComponent.call(this);
|
807
|
+
/**
|
808
|
+
* @event arrowclick
|
809
|
+
* Fires when this button's arrow is clicked
|
810
|
+
* @param {MenuButton} this
|
811
|
+
* @param {EventObject} e The click event
|
812
|
+
*/
|
813
|
+
this.addEvents("arrowclick");
|
814
|
+
},
|
815
|
+
|
816
|
+
// private
|
817
|
+
onRender : function(){
|
818
|
+
Ext.SplitButton.superclass.onRender.apply(this, arguments);
|
819
|
+
if(this.arrowTooltip){
|
820
|
+
this.el.child(this.arrowSelector).dom[this.tooltipType] = this.arrowTooltip;
|
821
|
+
}
|
822
|
+
},
|
823
|
+
|
824
|
+
/**
|
825
|
+
* Sets this button's arrow click handler.
|
826
|
+
* @param {Function} handler The function to call when the arrow is clicked
|
827
|
+
* @param {Object} scope (optional) Scope for the function passed above
|
828
|
+
*/
|
829
|
+
setArrowHandler : function(handler, scope){
|
830
|
+
this.arrowHandler = handler;
|
831
|
+
this.scope = scope;
|
832
|
+
},
|
833
|
+
|
834
|
+
getMenuClass : function(){
|
835
|
+
return 'x-btn-split' + (this.arrowAlign == 'bottom' ? '-bottom' : '');
|
836
|
+
},
|
837
|
+
|
838
|
+
isClickOnArrow : function(e){
|
839
|
+
return this.arrowAlign != 'bottom' ?
|
840
|
+
e.getPageX() > this.el.child(this.buttonSelector).getRegion().right :
|
841
|
+
e.getPageY() > this.el.child(this.buttonSelector).getRegion().bottom;
|
842
|
+
},
|
843
|
+
|
844
|
+
// private
|
845
|
+
onClick : function(e, t){
|
846
|
+
e.preventDefault();
|
847
|
+
if(!this.disabled){
|
848
|
+
if(this.isClickOnArrow(e)){
|
849
|
+
if(this.menu && !this.menu.isVisible() && !this.ignoreNextClick){
|
850
|
+
this.showMenu();
|
851
|
+
}
|
852
|
+
this.fireEvent("arrowclick", this, e);
|
853
|
+
if(this.arrowHandler){
|
854
|
+
this.arrowHandler.call(this.scope || this, this, e);
|
855
|
+
}
|
856
|
+
}else{
|
857
|
+
if(this.enableToggle){
|
858
|
+
this.toggle();
|
859
|
+
}
|
860
|
+
this.fireEvent("click", this, e);
|
861
|
+
if(this.handler){
|
862
|
+
this.handler.call(this.scope || this, this, e);
|
863
|
+
}
|
864
|
+
}
|
865
|
+
}
|
866
|
+
},
|
867
|
+
|
868
|
+
// private
|
869
|
+
isMenuTriggerOver : function(e){
|
870
|
+
return this.menu && e.target.tagName == 'em';
|
871
|
+
},
|
872
|
+
|
873
|
+
// private
|
874
|
+
isMenuTriggerOut : function(e, internal){
|
875
|
+
return this.menu && e.target.tagName != 'em';
|
876
|
+
}
|
877
|
+
});
|
878
|
+
|
879
|
+
Ext.reg('splitbutton', Ext.SplitButton);/**
|
880
|
+
* @class Ext.CycleButton
|
881
|
+
* @extends Ext.SplitButton
|
882
|
+
* A specialized SplitButton that contains a menu of {@link Ext.menu.CheckItem} elements. The button automatically
|
883
|
+
* cycles through each menu item on click, raising the button's {@link #change} event (or calling the button's
|
884
|
+
* {@link #changeHandler} function, if supplied) for the active menu item. Clicking on the arrow section of the
|
885
|
+
* button displays the dropdown menu just like a normal SplitButton. Example usage:
|
886
|
+
* <pre><code>
|
887
|
+
var btn = new Ext.CycleButton({
|
888
|
+
showText: true,
|
889
|
+
prependText: 'View as ',
|
890
|
+
items: [{
|
891
|
+
text:'text only',
|
892
|
+
iconCls:'view-text',
|
893
|
+
checked:true
|
894
|
+
},{
|
895
|
+
text:'HTML',
|
896
|
+
iconCls:'view-html'
|
897
|
+
}],
|
898
|
+
changeHandler:function(btn, item){
|
899
|
+
Ext.Msg.alert('Change View', item.text);
|
900
|
+
}
|
901
|
+
});
|
902
|
+
</code></pre>
|
903
|
+
* @constructor
|
904
|
+
* Create a new split button
|
905
|
+
* @param {Object} config The config object
|
906
|
+
* @xtype cycle
|
907
|
+
*/
|
908
|
+
Ext.CycleButton = Ext.extend(Ext.SplitButton, {
|
909
|
+
/**
|
910
|
+
* @cfg {Array} items An array of {@link Ext.menu.CheckItem} <b>config</b> objects to be used when creating the
|
911
|
+
* button's menu items (e.g., {text:'Foo', iconCls:'foo-icon'})
|
912
|
+
*/
|
913
|
+
/**
|
914
|
+
* @cfg {Boolean} showText True to display the active item's text as the button text (defaults to false)
|
915
|
+
*/
|
916
|
+
/**
|
917
|
+
* @cfg {String} prependText A static string to prepend before the active item's text when displayed as the
|
918
|
+
* button's text (only applies when showText = true, defaults to '')
|
919
|
+
*/
|
920
|
+
/**
|
921
|
+
* @cfg {Function} changeHandler A callback function that will be invoked each time the active menu
|
922
|
+
* item in the button's menu has changed. If this callback is not supplied, the SplitButton will instead
|
923
|
+
* fire the {@link #change} event on active item change. The changeHandler function will be called with the
|
924
|
+
* following argument list: (SplitButton this, Ext.menu.CheckItem item)
|
925
|
+
*/
|
926
|
+
/**
|
927
|
+
* @cfg {String} forceIcon A css class which sets an image to be used as the static icon for this button. This
|
928
|
+
* icon will always be displayed regardless of which item is selected in the dropdown list. This overrides the
|
929
|
+
* default behavior of changing the button's icon to match the selected item's icon on change.
|
930
|
+
*/
|
931
|
+
/**
|
932
|
+
* @property menu
|
933
|
+
* @type Menu
|
934
|
+
* The {@link Ext.menu.Menu Menu} object used to display the {@link Ext.menu.CheckItem CheckItems} representing the available choices.
|
935
|
+
*/
|
936
|
+
|
937
|
+
// private
|
938
|
+
getItemText : function(item){
|
939
|
+
if(item && this.showText === true){
|
940
|
+
var text = '';
|
941
|
+
if(this.prependText){
|
942
|
+
text += this.prependText;
|
943
|
+
}
|
944
|
+
text += item.text;
|
945
|
+
return text;
|
946
|
+
}
|
947
|
+
return undefined;
|
948
|
+
},
|
949
|
+
|
950
|
+
/**
|
951
|
+
* Sets the button's active menu item.
|
952
|
+
* @param {Ext.menu.CheckItem} item The item to activate
|
953
|
+
* @param {Boolean} suppressEvent True to prevent the button's change event from firing (defaults to false)
|
954
|
+
*/
|
955
|
+
setActiveItem : function(item, suppressEvent){
|
956
|
+
if(typeof item != 'object'){
|
957
|
+
item = this.menu.items.get(item);
|
958
|
+
}
|
959
|
+
if(item){
|
960
|
+
if(!this.rendered){
|
961
|
+
this.text = this.getItemText(item);
|
962
|
+
this.iconCls = item.iconCls;
|
963
|
+
}else{
|
964
|
+
var t = this.getItemText(item);
|
965
|
+
if(t){
|
966
|
+
this.setText(t);
|
967
|
+
}
|
968
|
+
this.setIconClass(item.iconCls);
|
969
|
+
}
|
970
|
+
this.activeItem = item;
|
971
|
+
if(!item.checked){
|
972
|
+
item.setChecked(true, true);
|
973
|
+
}
|
974
|
+
if(this.forceIcon){
|
975
|
+
this.setIconClass(this.forceIcon);
|
976
|
+
}
|
977
|
+
if(!suppressEvent){
|
978
|
+
this.fireEvent('change', this, item);
|
979
|
+
}
|
980
|
+
}
|
981
|
+
},
|
982
|
+
|
983
|
+
/**
|
984
|
+
* Gets the currently active menu item.
|
985
|
+
* @return {Ext.menu.CheckItem} The active item
|
986
|
+
*/
|
987
|
+
getActiveItem : function(){
|
988
|
+
return this.activeItem;
|
989
|
+
},
|
990
|
+
|
991
|
+
// private
|
992
|
+
initComponent : function(){
|
993
|
+
this.addEvents(
|
994
|
+
/**
|
995
|
+
* @event change
|
996
|
+
* Fires after the button's active menu item has changed. Note that if a {@link #changeHandler} function
|
997
|
+
* is set on this CycleButton, it will be called instead on active item change and this change event will
|
998
|
+
* not be fired.
|
999
|
+
* @param {Ext.CycleButton} this
|
1000
|
+
* @param {Ext.menu.CheckItem} item The menu item that was selected
|
1001
|
+
*/
|
1002
|
+
"change"
|
1003
|
+
);
|
1004
|
+
|
1005
|
+
if(this.changeHandler){
|
1006
|
+
this.on('change', this.changeHandler, this.scope||this);
|
1007
|
+
delete this.changeHandler;
|
1008
|
+
}
|
1009
|
+
|
1010
|
+
this.itemCount = this.items.length;
|
1011
|
+
|
1012
|
+
this.menu = {cls:'x-cycle-menu', items:[]};
|
1013
|
+
var checked;
|
1014
|
+
for(var i = 0, len = this.itemCount; i < len; i++){
|
1015
|
+
var item = this.items[i];
|
1016
|
+
item.group = item.group || this.id;
|
1017
|
+
item.itemIndex = i;
|
1018
|
+
item.checkHandler = this.checkHandler;
|
1019
|
+
item.scope = this;
|
1020
|
+
item.checked = item.checked || false;
|
1021
|
+
this.menu.items.push(item);
|
1022
|
+
if(item.checked){
|
1023
|
+
checked = item;
|
1024
|
+
}
|
1025
|
+
}
|
1026
|
+
this.setActiveItem(checked, true);
|
1027
|
+
Ext.CycleButton.superclass.initComponent.call(this);
|
1028
|
+
|
1029
|
+
this.on('click', this.toggleSelected, this);
|
1030
|
+
},
|
1031
|
+
|
1032
|
+
// private
|
1033
|
+
checkHandler : function(item, pressed){
|
1034
|
+
if(pressed){
|
1035
|
+
this.setActiveItem(item);
|
1036
|
+
}
|
1037
|
+
},
|
1038
|
+
|
1039
|
+
/**
|
1040
|
+
* This is normally called internally on button click, but can be called externally to advance the button's
|
1041
|
+
* active item programmatically to the next one in the menu. If the current item is the last one in the menu
|
1042
|
+
* the active item will be set to the first item in the menu.
|
1043
|
+
*/
|
1044
|
+
toggleSelected : function(){
|
1045
|
+
this.menu.render();
|
1046
|
+
|
1047
|
+
var nextIdx, checkItem;
|
1048
|
+
for (var i = 1; i < this.itemCount; i++) {
|
1049
|
+
nextIdx = (this.activeItem.itemIndex + i) % this.itemCount;
|
1050
|
+
// check the potential item
|
1051
|
+
checkItem = this.menu.items.itemAt(nextIdx);
|
1052
|
+
// if its not disabled then check it.
|
1053
|
+
if (!checkItem.disabled) {
|
1054
|
+
checkItem.setChecked(true);
|
1055
|
+
break;
|
1056
|
+
}
|
1057
|
+
}
|
1058
|
+
}
|
1059
|
+
});
|
1060
|
+
Ext.reg('cycle', Ext.CycleButton);
|